OSDN Git Service

[VM][WIP] Pre-process to apply new state framework.Still not buildable.
[csp-qt/common_source_project-fm7.git] / source / src / vm / mz2500 / crtc.cpp
index bcf265f..ab0cb61 100644 (file)
@@ -1728,28 +1728,28 @@ void CRTC::decl_state()
        DECL_STATE_ENTRY_BOOL(pal_select);
        DECL_STATE_ENTRY_BOOL(screen_mask);
        DECL_STATE_ENTRY_2D_ARRAY(priority16, 16, 9);
-       // ToDo: scrntype_t
-       DECL_STATE_ENTRY_SCRNTYPE_T_1D_ARRAY(palette16, sizeof(palette16) / sizeof(scrntype_t));
-       DECL_STATE_ENTRY_SCRNTYPE_T_1D_ARRAY(palette4096, sizeof(palette4096) / sizeof(scrntype_t));
+
+       DECL_STATE_ENTRY_SCRNTYPE_T_1D_ARRAY(palette16, 16 + 8);
+       DECL_STATE_ENTRY_SCRNTYPE_T_1D_ARRAY(palette4096, 16);
        DECL_STATE_ENTRY_1D_ARRAY(palette4096r, sizeof(palette4096r));
        DECL_STATE_ENTRY_1D_ARRAY(palette4096g, sizeof(palette4096g));
        DECL_STATE_ENTRY_1D_ARRAY(palette4096b, sizeof(palette4096b));
-       DECL_STATE_ENTRY_SCRNTYPE_T_1D_ARRAY(palette16txt, sizeof(palette16txt) / sizeof(scrntype_t));
-       DECL_STATE_ENTRY_SCRNTYPE_T_1D_ARRAY(palette4096txt, sizeof(palette4096txt) / sizeof(scrntype_t));
+       DECL_STATE_ENTRY_SCRNTYPE_T_1D_ARRAY(palette16txt, 9);
+       DECL_STATE_ENTRY_SCRNTYPE_T_1D_ARRAY(palette4096txt, 9);
        DECL_STATE_ENTRY_SCRNTYPE_T_2D_ARRAY(palette16pri, 16, 9);
        DECL_STATE_ENTRY_SCRNTYPE_T_2D_ARRAY(palette4096pri, 16, 9);
        DECL_STATE_ENTRY_UINT8(prev16);
        DECL_STATE_ENTRY_BOOL(update16);
        DECL_STATE_ENTRY_2D_ARRAY(priority256, 256, 16+64);
-       DECL_STATE_ENTRY_SCRNTYPE_T_1D_ARRAY(palette256, sizeof(palette256) / sizeof(scrntype_t));
-       DECL_STATE_ENTRY_SCRNTYPE_T_1D_ARRAY(palette256txt, sizeof(palette256txt) / sizeof(scrntype_t));
+       DECL_STATE_ENTRY_SCRNTYPE_T_1D_ARRAY(palette256, 256 + 16 + 64);
+       DECL_STATE_ENTRY_SCRNTYPE_T_1D_ARRAY(palette256txt, 16 + 64);
        DECL_STATE_ENTRY_SCRNTYPE_T_2D_ARRAY(palette256pri, 256, 16+64);
        DECL_STATE_ENTRY_SCRNTYPE_T(prev256);
        DECL_STATE_ENTRY_BOOL(update256);
        DECL_STATE_ENTRY_2D_ARRAY(map_addr, 400, 80);
        DECL_STATE_ENTRY_2D_ARRAY(map_hdsc, 400, 80);
        DECL_STATE_ENTRY_3D_ARRAY(text_matrix, 256, 8, 8);
-       DECL_STATE_ENTRY_3D_ARRAY(text_matrixw, 256, 8, 8);
+       DECL_STATE_ENTRY_3D_ARRAY(text_matrixw, 256, 8, 16);
        DECL_STATE_ENTRY_UINT8(trans_color);
        DECL_STATE_ENTRY_BOOL(map_init);
        DECL_STATE_ENTRY_BOOL(trans_init);
@@ -1892,3 +1892,67 @@ bool CRTC::load_state(FILEIO* state_fio)
        return true;
 }
 
+bool CRTC::process_state(FILEIO* state_fio, bool loading)
+{
+       if(!state_fio->StateCheckUint32(STATE_VERSION)) {
+               return false;
+       }
+       if(!state_fio->StateCheckInt32(this_device_id)) {
+               return false;
+       }
+       state_fio->StateBool(scan_line);
+       state_fio->StateBool(scan_tmp);
+       state_fio->StateBool(monitor_200line);
+       state_fio->StateBool(monitor_digital);
+       state_fio->StateBool(monitor_tmp);
+       state_fio->StateUint8(textreg_num);
+       state_fio->StateBuffer(textreg, sizeof(textreg), 1);
+       state_fio->StateUint8(cgreg_num);
+       state_fio->StateBuffer(cgreg, sizeof(cgreg), 1);
+       state_fio->StateUint8(scrn_size);
+       state_fio->StateUint8(cg_mask);
+       state_fio->StateUint8(cg_mask256);
+       state_fio->StateBool(cg_mask256_init);
+       state_fio->StateBool(font_size);
+       state_fio->StateBool(column_size);
+       state_fio->StateBuffer(latch, sizeof(latch), 1);
+       state_fio->StateUint16(GDEVS);
+       state_fio->StateUint16(GDEVE);
+       state_fio->StateUint8(GDEHS);
+       state_fio->StateUint8(GDEHE);
+       state_fio->StateInt32(GDEHSC);
+       state_fio->StateInt32(GDEHEC);
+       state_fio->StateBool(hblank);
+       state_fio->StateBool(vblank);
+       state_fio->StateBool(blink);
+       state_fio->StateUint8(clear_flag);
+       state_fio->StateBuffer(palette_reg, sizeof(palette_reg), 1);
+       state_fio->StateBool(pal_select);
+       state_fio->StateBool(screen_mask);
+       state_fio->StateBuffer(priority16, sizeof(priority16), 1);
+       state_fio->StateBuffer(palette16, sizeof(palette16), 1);
+       state_fio->StateBuffer(palette4096, sizeof(palette4096), 1);
+       state_fio->StateBuffer(palette4096r, sizeof(palette4096r), 1);
+       state_fio->StateBuffer(palette4096g, sizeof(palette4096g), 1);
+       state_fio->StateBuffer(palette4096b, sizeof(palette4096b), 1);
+       state_fio->StateBuffer(palette16txt, sizeof(palette16txt), 1);
+       state_fio->StateBuffer(palette4096txt, sizeof(palette4096txt), 1);
+       state_fio->StateBuffer(palette16pri, sizeof(palette16pri), 1);
+       state_fio->StateBuffer(palette4096pri, sizeof(palette4096pri), 1);
+       state_fio->StateUint8(prev16);
+       state_fio->StateBool(update16);
+       state_fio->StateBuffer(priority256, sizeof(priority256), 1);
+       state_fio->StateBuffer(palette256, sizeof(palette256), 1);
+       state_fio->StateBuffer(palette256txt, sizeof(palette256txt), 1);
+       state_fio->StateBuffer(palette256pri, sizeof(palette256pri), 1);
+       state_fio->StateUint32((uint32_t)prev256);
+       state_fio->StateBool(update256);
+       state_fio->StateBuffer(map_addr, sizeof(map_addr), 1);
+       state_fio->StateBuffer(map_hdsc, sizeof(map_hdsc), 1);
+       state_fio->StateBuffer(text_matrix, sizeof(text_matrix), 1);
+       state_fio->StateBuffer(text_matrixw, sizeof(text_matrixw), 1);
+       state_fio->StateUint8(trans_color);
+       state_fio->StateBool(map_init);
+       state_fio->StateBool(trans_init);
+       return true;
+}