X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pico%2Fcd%2Fmcd.c;h=82ae1bc663e5634a1d3c1f6a90b9c20f02f83a87;hb=ba6e8bfd4b707aab042e47bc3e2a14f70be01075;hp=539d157e0ebffa1a35d91ead576c22a383c43145;hpb=89dbbf2b2fe885c9f443178c1f1350567e92160b;p=picodrive.git diff --git a/pico/cd/mcd.c b/pico/cd/mcd.c index 539d157..82ae1bc 100644 --- a/pico/cd/mcd.c +++ b/pico/cd/mcd.c @@ -252,15 +252,18 @@ int pcd_sync_s68k(unsigned int m68k_target, int m68k_poll_sync) #undef now } +#define pcd_run_cpus_normal pcd_run_cpus +//#define pcd_run_cpus_lockstep pcd_run_cpus + static void SekSyncM68k(void); -static void pcd_run_cpus(int m68k_cycles) +static inline void pcd_run_cpus_normal(int m68k_cycles) { SekCycleAim += m68k_cycles; if (Pico_mcd->m.m68k_poll_cnt >= 16 && !SekShouldInterrupt()) { int s68k_left = pcd_sync_s68k(SekCycleAim, 1); if (s68k_left <= 0) { - elprintf(EL_CDPOLL, "m68k poll [%02x] %d @%06x", + elprintf(EL_CDPOLL, "m68k poll [%02x] x%d @%06x", Pico_mcd->m.m68k_poll_a, Pico_mcd->m.m68k_poll_cnt, SekPc); SekCycleCnt = SekCycleAim; return; @@ -271,6 +274,16 @@ static void pcd_run_cpus(int m68k_cycles) SekSyncM68k(); } +static inline void pcd_run_cpus_lockstep(int m68k_cycles) +{ + unsigned int target = SekCycleAim + m68k_cycles; + do { + SekCycleAim += 8; + SekSyncM68k(); + pcd_sync_s68k(SekCycleAim, 0); + } while (CYCLES_GT(target, SekCycleAim)); +} + #define PICO_CD #define CPUS_RUN(m68k_cycles) \ pcd_run_cpus(m68k_cycles)