#define PAGE_TYPE_DIC 3
#define PAGE_TYPE_MODIFY 4
-#define SET_BANK(s, e, w, r) { \
+namespace MZ2500 {
+
+#define SET_BANK(s, e, w, r) { \
int sb = (s) >> 11, eb = (e) >> 11; \
for(int i = sb; i <= eb; i++) { \
if((w) == wdmy) { \
#define STATE_VERSION 1
-#include "../../statesub.h"
-
-void MEMORY::decl_state()
-{
- enter_decl_state(STATE_VERSION);
-
- DECL_STATE_ENTRY_1D_ARRAY(ram, sizeof(ram));
- DECL_STATE_ENTRY_1D_ARRAY(vram, sizeof(vram));
- DECL_STATE_ENTRY_1D_ARRAY(tvram, sizeof(tvram));
- DECL_STATE_ENTRY_1D_ARRAY(pcg, sizeof(pcg));
- DECL_STATE_ENTRY_UINT8(bank);
- DECL_STATE_ENTRY_1D_ARRAY(page, sizeof(page));
- DECL_STATE_ENTRY_UINT8(dic_bank);
- DECL_STATE_ENTRY_UINT8(kanji_bank);
- DECL_STATE_ENTRY_BOOL(blank);
- DECL_STATE_ENTRY_BOOL(hblank);
- DECL_STATE_ENTRY_BOOL(vblank);
- DECL_STATE_ENTRY_BOOL(busreq);
-
- leave_decl_state();
-}
-
-void MEMORY::save_state(FILEIO* state_fio)
-{
- if(state_entry != NULL) {
- state_entry->save_state(state_fio);
- }
-// state_fio->FputUint32(STATE_VERSION);
-// state_fio->FputInt32(this_device_id);
-
-// state_fio->Fwrite(ram, sizeof(ram), 1);
-// state_fio->Fwrite(vram, sizeof(vram), 1);
-// state_fio->Fwrite(tvram, sizeof(tvram), 1);
-// state_fio->Fwrite(pcg, sizeof(pcg), 1);
-// state_fio->FputUint8(bank);
-// state_fio->Fwrite(page, sizeof(page), 1);
-// state_fio->FputUint8(dic_bank);
-// state_fio->FputUint8(kanji_bank);
-// state_fio->FputBool(blank);
-// state_fio->FputBool(hblank);
-// state_fio->FputBool(vblank);
-// state_fio->FputBool(busreq);
-}
-bool MEMORY::load_state(FILEIO* state_fio)
+bool MEMORY::process_state(FILEIO* state_fio, bool loading)
{
- bool mb = false;
- if(state_entry != NULL) {
- mb = state_entry->load_state(state_fio);
+ if(!state_fio->StateCheckUint32(STATE_VERSION)) {
+ return false;
}
- if(!mb) {
+ if(!state_fio->StateCheckInt32(this_device_id)) {
return false;
}
-// if(state_fio->FgetUint32() != STATE_VERSION) {
-// return false;
-// }
-// if(state_fio->FgetInt32() != this_device_id) {
-// return false;
-// }
-// state_fio->Fread(ram, sizeof(ram), 1);
-// state_fio->Fread(vram, sizeof(vram), 1);
-// state_fio->Fread(tvram, sizeof(tvram), 1);
-// state_fio->Fread(pcg, sizeof(pcg), 1);
-// bank = state_fio->FgetUint8();
-// state_fio->Fread(page, sizeof(page), 1);
-// dic_bank = state_fio->FgetUint8();
-// kanji_bank = state_fio->FgetUint8();
-// blank = state_fio->FgetBool();
-// hblank = state_fio->FgetBool();
-// vblank = state_fio->FgetBool();
-// busreq = state_fio->FgetBool();
+ state_fio->StateBuffer(ram, sizeof(ram), 1);
+ state_fio->StateBuffer(vram, sizeof(vram), 1);
+ state_fio->StateBuffer(tvram, sizeof(tvram), 1);
+ state_fio->StateBuffer(pcg, sizeof(pcg), 1);
+ state_fio->StateUint8(bank);
+ state_fio->StateBuffer(page, sizeof(page), 1);
+ state_fio->StateUint8(dic_bank);
+ state_fio->StateUint8(kanji_bank);
+ state_fio->StateBool(blank);
+ state_fio->StateBool(hblank);
+ state_fio->StateBool(vblank);
+ state_fio->StateBool(busreq);
// post process
- uint8_t bank_tmp = bank;
- bank = 0;
- for(int i = 0; i < 8; i++) {
- set_map(page[i]);
+ if(loading) {
+ uint8_t bank_tmp = bank;
+ bank = 0;
+ for(int i = 0; i < 8; i++) {
+ set_map(page[i]);
+ }
+ bank = bank_tmp;
}
- bank = bank_tmp;
return true;
}
+}