- uint32_t version;
- version = state_fio->FgetUint32_BE();
- if(this_device_id != state_fio->FgetInt32_BE()) return false;
- this->out_debug_log(_T("Load State: MAINMEM: id=%d ver=%d\n"), this_device_id, version);
- if(version >= 1) {
- // V1
- ioaccess_wait = state_fio->FgetBool();
- waitfactor = state_fio->FgetInt32_BE();
- waitcount = state_fio->FgetInt32_BE();
-
- 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();
- diag_load_bootrom_bubble = state_fio->FgetBool();
- diag_load_bootrom_bubble_128k = state_fio->FgetBool();
- diag_load_bootrom_sfd8 = state_fio->FgetBool();
- diag_load_bootrom_2hd = 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(_FM77_VARIANTS) || defined(_FM8)
- for(int i = 0; i < 8; i++) state_fio->Fread(fm7_bootroms[i], sizeof(0x200), 1);
-#elif defined(_FM7) || defined(_FMNEW7)
- for(int i = 0; i < 4; i++) state_fio->Fread(fm7_bootroms[i], sizeof(0x200), 1);
-#endif
-#if defined(_FM8)
- diag_load_sm11_14 = state_fio->FgetBool();
- diag_load_sm11_15 = state_fio->FgetBool();
-#elif defined(_FM77_VARIANTS)
- diag_load_wb11_12 = state_fio->FgetBool();
-#elif defined(_FM7) || defined(_FMNEW7)
- diag_load_tl11_11 = state_fio->FgetBool();
-# if defined(_FMNEW7)
- diag_load_tl11_12 = state_fio->FgetBool();
-# endif
-#elif defined(_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(fm77av_hidden_bootmmr, sizeof(fm77av_hidden_bootmmr), 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(_FM77AV40EX) || defined(_FM77AV40SX)
- diag_load_extrarom = state_fio->FgetBool();
- state_fio->Fread(fm7_mainmem_extrarom, sizeof(fm7_mainmem_extrarom), 1);
-# endif
-# if defined(CAPABLE_DICTROM)
- 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(_FM77AV40EX) || defined(_FM77AV40SX) || \
- defined(_FM77_VARIANTS)
- int pages;
- extram_pages = state_fio->FgetInt32_BE();
- pages = extram_pages;
-# if defined(_FM77_VARIANTS)
- if(pages > 3) pages = 3;
-# else
- if(pages > 12) pages = 12;
-# endif
- if(fm7_mainmem_extram != NULL) {
- free(fm7_mainmem_extram);
- fm7_mainmem_extram = NULL;
- }
- if(pages > 0) {
- fm7_mainmem_extram = (uint8_t *)malloc(pages * 0x10000);
- state_fio->Fread(fm7_mainmem_extram, pages * 0x10000, 1);
- }