bugfixes related to mmap usage for ROM
[picodrive.git] / pico / cd / area.c
index 757d8fb..645993b 100644 (file)
@@ -100,9 +100,10 @@ PICO_INTERNAL int PicoCdSaveState(void *file)
 {
        unsigned char buff[0x60];
        void *ym2612_regs = YM2612GetRegs();
+       int ver = 0x0133; // not really used..
 
        areaWrite("PicoSEXT", 1, 8, file);
-       areaWrite(&PicoVer, 1, 4, file);
+       areaWrite(&ver, 1, 4, file);
 
        memset(buff, 0, sizeof(buff));
        PicoAreaPackCpu(buff, 0);
@@ -114,17 +115,13 @@ PICO_INTERNAL int PicoCdSaveState(void *file)
        CHECKED_WRITE_BUFF(CHUNK_VSRAM, Pico.vsram);
        CHECKED_WRITE_BUFF(CHUNK_MISC,  Pico.m);
        CHECKED_WRITE_BUFF(CHUNK_VIDEO, Pico.video);
-       if (PicoOpt&7) {
-               memset(buff, 0, sizeof(buff));
-               z80_pack(buff);
-               CHECKED_WRITE_BUFF(CHUNK_Z80, buff);
-       }
-       if (PicoOpt&3)
-               CHECKED_WRITE(CHUNK_PSG, 28*4, sn76496_regs);
-       if (PicoOpt&1) {
-               ym2612_pack_state();
-               CHECKED_WRITE(CHUNK_FM, 0x200+4, ym2612_regs);
-       }
+
+       memset(buff, 0, sizeof(buff));
+       z80_pack(buff);
+       CHECKED_WRITE_BUFF(CHUNK_Z80, buff);
+       CHECKED_WRITE(CHUNK_PSG, 28*4, sn76496_regs);
+       ym2612_pack_state();
+       CHECKED_WRITE(CHUNK_FM, 0x200+4, ym2612_regs);
 
        if (PicoAHW & PAHW_MCD)
        {
@@ -272,18 +269,10 @@ PICO_INTERNAL int PicoCdLoadState(void *file)
 readend:
        if (PicoAHW & PAHW_MCD)
        {
-               /* after load events */
-               if (Pico_mcd->s68k_regs[3] & 4) // 1M mode?
-                       wram_2M_to_1M(Pico_mcd->word_ram2M);
-               PicoMemRemapCD(Pico_mcd->s68k_regs[3]);
-#ifdef _ASM_CD_MEMORY_C
-               if (Pico_mcd->s68k_regs[3] & 4)
-                       PicoMemResetCDdecode(Pico_mcd->s68k_regs[3]);
-#endif
+               PicoMemStateLoaded();
+
                if (!(Pico_mcd->s68k_regs[0x36] & 1) && (Pico_mcd->scd.Status_CDC & 1))
                        cdda_start_play();
-               // restore hint vector
-               *(unsigned short *)(Pico_mcd->bios + 0x72) = Pico_mcd->m.hint_vector;
 
                // must unpack after other CD stuff is loaded
                PicoAreaUnpackCpu(buff_s68k, 1);