mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 15:27:46 -04:00
mcd, fix timing for irq while polling detected
This commit is contained in:
parent
7e77080f45
commit
eb36d9c7e6
5 changed files with 24 additions and 13 deletions
|
@ -177,7 +177,7 @@ static void pcd_cdc_event(unsigned int now)
|
|||
|
||||
if (Pico_mcd->s68k_regs[0x33] & PCDS_IEN4) {
|
||||
elprintf(EL_INTS|EL_CD, "s68k: cdd irq 4");
|
||||
SekInterruptS68k(4);
|
||||
pcd_irq_s68k(4, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -188,7 +188,7 @@ static void pcd_int3_timer_event(unsigned int now)
|
|||
{
|
||||
if (Pico_mcd->s68k_regs[0x33] & PCDS_IEN3) {
|
||||
elprintf(EL_INTS|EL_CD, "s68k: timer irq 3");
|
||||
SekInterruptS68k(3);
|
||||
pcd_irq_s68k(3, 1);
|
||||
}
|
||||
|
||||
if (Pico_mcd->s68k_regs[0x31] != 0)
|
||||
|
@ -280,6 +280,16 @@ static void pcd_run_events(unsigned int until)
|
|||
oldest, event_time_next);
|
||||
}
|
||||
|
||||
void pcd_irq_s68k(int irq, int state)
|
||||
{
|
||||
if (state) {
|
||||
SekInterruptS68k(irq);
|
||||
SekSetStopS68k(0);
|
||||
Pico_mcd->m.s68k_poll_a = 0;
|
||||
} else
|
||||
SekInterruptClearS68k(irq);
|
||||
}
|
||||
|
||||
int pcd_sync_s68k(unsigned int m68k_target, int m68k_poll_sync)
|
||||
{
|
||||
#define now SekCycleCntS68k
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue