mcd, add poll detection for gfx busy

This commit is contained in:
kub 2024-04-27 09:53:33 +02:00
parent e61dbac103
commit 4985bad0fb
2 changed files with 7 additions and 3 deletions

View file

@ -409,6 +409,8 @@ void gfx_start(uint32 base)
/* start graphics operation */
Pico_mcd->s68k_regs[0x58] = 0x80;
Pico_mcd->m.state_flags &= ~PCD_ST_S68K_POLL;
Pico_mcd->m.s68k_poll_cnt = 0;
gfx_schedule();
}
@ -451,6 +453,8 @@ void gfx_update(unsigned int cycles)
Pico_mcd->s68k_regs[0x64] =
Pico_mcd->s68k_regs[0x65] = 0;
Pico_mcd->m.state_flags &= ~PCD_ST_S68K_POLL;
Pico_mcd->m.s68k_poll_cnt = 0;
if (Pico_mcd->s68k_regs[0x33] & PCDS_IEN1) {
elprintf(EL_INTS|EL_CD, "s68k: gfx_cd irq 1");
pcd_irq_s68k(1, 1);

View file

@ -366,8 +366,8 @@ u32 s68k_reg_read16(u32 a)
d = (Pico_mcd->s68k_regs[a]<<8) | Pico_mcd->s68k_regs[a+1];
if (a >= 0x0e && a < 0x30)
return s68k_poll_detect(a, d);
if ((a >= 0x0e && a < 0x30) || a == 0x58)
d = s68k_poll_detect(a, d);
end:
return d;
@ -995,7 +995,7 @@ static u32 PicoReadS68k8_pr(u32 a)
a &= 0x1ff;
if (a >= 0x0e && a < 0x30) {
d = Pico_mcd->s68k_regs[a];
s68k_poll_detect(a & ~1, d);
d = s68k_poll_detect(a & ~1, d);
goto regs_done;
}
d = s68k_reg_read16(a & ~1);