diff --git a/pico/cd/mcd.c b/pico/cd/mcd.c index c0d9192d0..6c3548e38 100644 --- a/pico/cd/mcd.c +++ b/pico/cd/mcd.c @@ -79,6 +79,7 @@ PICO_INTERNAL void PicoPowerMCD(void) Pico_mcd->s68k_regs[3] = 1; // 2M word RAM mode, m68k access if (Pico.romsize == 0) // no HINT vector from gate array for MSU memset(Pico_mcd->bios + 0x70, 0xff, 4); + pcd_event_schedule_s68k(PCD_EVENT_CDC, 12500000/75); } void pcd_soft_reset(void) @@ -171,13 +172,13 @@ static void pcd_cdc_event(unsigned int now) Pico_mcd->s68k_regs[0x4b] = 0xf0; } - msd_update(); - if ((Pico_mcd->s68k_regs[0x33] & PCDS_IEN4) && (Pico_mcd->s68k_regs[0x37] & 4)) { elprintf(EL_INTS|EL_CD, "s68k: cdd irq 4"); pcd_irq_s68k(4, 1); } + msd_update(); + pcd_event_schedule(now, PCD_EVENT_CDC, 12500000/75); } diff --git a/pico/cd/megasd.c b/pico/cd/megasd.c index ec31acbd6..f0228a40c 100644 --- a/pico/cd/megasd.c +++ b/pico/cd/megasd.c @@ -48,6 +48,7 @@ static void cdd_play(s32 lba) cdd_play_audio(Pico_msd.index, Pico_msd.currentlba); Pico_msd.state |= MSD_ST_PLAY; + Pico_msd.state &= ~MSD_ST_PAUSE; } static void cdd_pause(void) diff --git a/pico/cd/memory.c b/pico/cd/memory.c index d00f5b91e..7b9452fd2 100644 --- a/pico/cd/memory.c +++ b/pico/cd/memory.c @@ -482,10 +482,6 @@ void s68k_reg_write8(u32 a, u32 d) u32 d_old = Pico_mcd->s68k_regs[0x37]; Pico_mcd->s68k_regs[0x37] = d & 7; if ((d ^ d_old) & 4) { - // ?? - if (d & 4) - pcd_event_schedule_s68k(PCD_EVENT_CDC, 12500000/75); - if ((d & 4) && (Pico_mcd->s68k_regs[0x33] & PCDS_IEN4)) { elprintf(EL_INTS, "cdd export irq 4"); pcd_irq_s68k(4, 1);