- int pages;
- int addr;
- bool stat = false;
- uint32 version;
- version = state_fio->FgetUint32();
- if(this_device_id != state_fio->FgetInt32()) return false;
- if(version >= 1) {
- // V1
- ioaccess_wait = state_fio->FgetBool();
- waitfactor = state_fio->FgetInt32();
- waitcount = state_fio->FgetInt32();
-
- sub_halted = state_fio->FgetBool();
-
- diag_load_basicrom = state_fio->FgetBool();
- diag_load_bootrom_bas = state_fio->FgetBool();
- diag_load_bootrom_dos = state_fio->FgetBool();
- diag_load_bootrom_mmr = state_fio->FgetBool();
-
- state_fio->Fread(fm7_mainmem_omote, sizeof(fm7_mainmem_omote), 1);
- state_fio->Fread(fm7_mainmem_ura, sizeof(fm7_mainmem_ura), 1);
- state_fio->Fread(fm7_mainmem_basicrom, sizeof(fm7_mainmem_basicrom), 1);
- state_fio->Fread(fm7_mainmem_bioswork, sizeof(fm7_mainmem_bioswork), 1);
- state_fio->Fread(fm7_mainmem_bootrom_vector, sizeof(fm7_mainmem_bootrom_vector), 1);
- state_fio->Fread(fm7_mainmem_reset_vector, sizeof(fm7_mainmem_reset_vector), 1);
-
- state_fio->Fread(fm7_mainmem_null, sizeof(fm7_mainmem_null), 1);
-#if defined(_FM77AV_VARIANTS) || defined(_FM77_VARIANTS)
- state_fio->Fread(fm7_bootram, sizeof(fm7_bootram), 1);
-#endif
-#if !defined(_FM77AV_VARIANTS)
- for(addr = 0; addr < 4; addr++) state_fio->Fread(fm7_bootroms[addr], sizeof(0x200), 1);
-#endif
-#ifdef _FM77AV_VARIANTS
- dictrom_connected = state_fio->FgetBool();
- use_page2_extram = state_fio->FgetBool();
-
- diag_load_initrom = state_fio->FgetBool();
- diag_load_dictrom = state_fio->FgetBool();
- diag_load_learndata = state_fio->FgetBool();
- state_fio->Fread(fm7_mainmem_initrom, sizeof(fm7_mainmem_initrom), 1);
- state_fio->Fread(fm7_mainmem_mmrbank_0, sizeof(fm7_mainmem_mmrbank_0), 1);
- state_fio->Fread(fm7_mainmem_mmrbank_2, sizeof(fm7_mainmem_mmrbank_2), 1);
-
-# if defined(CAPABLE_DICTROM)
- diag_load_extrarom = state_fio->FgetBool();
- state_fio->Fread(fm7_mainmem_extrarom, sizeof(fm7_mainmem_extrarom), 1);
- state_fio->Fread(fm7_mainmem_dictrom, sizeof(fm7_mainmem_dictrom), 1);
- state_fio->Fread(fm7_mainmem_learndata, sizeof(fm7_mainmem_learndata), 1);
-# endif
-#endif
-
-#ifdef HAS_MMR
- extram_connected = state_fio->FgetBool();
-# if defined(_FM77AV40) || defined(_FM77AV40SX) || defined(_FM77AV40EX) || defined(_FM77AV20) || defined(_FM77_VARIANTS)
- extram_pages = state_fio->FgetInt32();
- pages = extram_pages;
-# if defined(_FM77_VARIANTS)
- if(pages > 3) pages = 3;
-# else
- if(pages > 12) pages = 12;
-# endif
- if(pages > 0) state_fio->Fread(fm7_mainmem_extram, pages * 0x10000, 1);