}
if (PicoOpt&3)
CHECKED_WRITE(CHUNK_PSG, 28*4, sn76496_regs);
- if (PicoOpt&1)
+ if (PicoOpt&1) {
+ ym2612_pack_state();
CHECKED_WRITE(CHUNK_FM, 0x200+4, ym2612_regs);
+ }
if (PicoAHW & PAHW_MCD)
{
PICO_INTERNAL int PicoCdLoadState(void *file)
{
- unsigned char buff[0x60];
+ unsigned char buff[0x60], buff_m68k[0x60], buff_s68k[0x60];
int ver, len;
void *ym2612_regs = YM2612GetRegs();
switch (buff[0])
{
case CHUNK_M68K:
- CHECKED_READ_BUFF(buff);
- PicoAreaUnpackCpu(buff, 0);
+ CHECKED_READ_BUFF(buff_m68k);
break;
case CHUNK_Z80:
// cd stuff
case CHUNK_S68K:
- CHECKED_READ_BUFF(buff);
- PicoAreaUnpackCpu(buff, 1);
+ CHECKED_READ_BUFF(buff_s68k);
break;
case CHUNK_PRG_RAM: CHECKED_READ_BUFF(Pico_mcd->prg_ram); break;
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);
}
+ PicoAreaUnpackCpu(buff_m68k, 0);
return 0;
}