mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 23:37:46 -04:00
bugfix for 68k core on save load
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@529 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
parent
2b1f0e2519
commit
374498bcab
2 changed files with 8 additions and 6 deletions
|
@ -192,7 +192,7 @@ static int g_read_offs = 0;
|
||||||
|
|
||||||
PICO_INTERNAL int PicoCdLoadState(void *file)
|
PICO_INTERNAL int PicoCdLoadState(void *file)
|
||||||
{
|
{
|
||||||
unsigned char buff[0x60];
|
unsigned char buff[0x60], buff_m68k[0x60], buff_s68k[0x60];
|
||||||
int ver, len;
|
int ver, len;
|
||||||
void *ym2612_regs = YM2612GetRegs();
|
void *ym2612_regs = YM2612GetRegs();
|
||||||
|
|
||||||
|
@ -213,8 +213,7 @@ PICO_INTERNAL int PicoCdLoadState(void *file)
|
||||||
switch (buff[0])
|
switch (buff[0])
|
||||||
{
|
{
|
||||||
case CHUNK_M68K:
|
case CHUNK_M68K:
|
||||||
CHECKED_READ_BUFF(buff);
|
CHECKED_READ_BUFF(buff_m68k);
|
||||||
PicoAreaUnpackCpu(buff, 0);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CHUNK_Z80:
|
case CHUNK_Z80:
|
||||||
|
@ -237,8 +236,7 @@ PICO_INTERNAL int PicoCdLoadState(void *file)
|
||||||
|
|
||||||
// cd stuff
|
// cd stuff
|
||||||
case CHUNK_S68K:
|
case CHUNK_S68K:
|
||||||
CHECKED_READ_BUFF(buff);
|
CHECKED_READ_BUFF(buff_s68k);
|
||||||
PicoAreaUnpackCpu(buff, 1);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CHUNK_PRG_RAM: CHECKED_READ_BUFF(Pico_mcd->prg_ram); break;
|
case CHUNK_PRG_RAM: CHECKED_READ_BUFF(Pico_mcd->prg_ram); break;
|
||||||
|
@ -285,7 +283,11 @@ PICO_INTERNAL int PicoCdLoadState(void *file)
|
||||||
cdda_start_play();
|
cdda_start_play();
|
||||||
// restore hint vector
|
// restore hint vector
|
||||||
*(unsigned short *)(Pico_mcd->bios + 0x72) = Pico_mcd->m.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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -289,7 +289,7 @@ void s68k_reg_write8(u32 a, u32 d)
|
||||||
return; // only m68k can change WP
|
return; // only m68k can change WP
|
||||||
case 3: {
|
case 3: {
|
||||||
int dold = Pico_mcd->s68k_regs[3];
|
int dold = Pico_mcd->s68k_regs[3];
|
||||||
//printf("s68k_regs w3: %02x @%06x\n", (u8)d, SekPcS68k);
|
//elprintf(EL_STATUS, "s68k_regs w3: %02x s@%06x", (u8)d, SekPcS68k);
|
||||||
d &= 0x1d;
|
d &= 0x1d;
|
||||||
d |= dold&0xc2;
|
d |= dold&0xc2;
|
||||||
if (d&4) {
|
if (d&4) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue