X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pico%2Fcd%2Fpico.c;h=383949c382cf569d841a20979d7e0e7a866daf0a;hb=f6c49d38cbb965c502ca2af66d76e92f95acda7c;hp=8c0bf25418031a84312ac6fa699172d81b9057c6;hpb=af37bca858874b5cbd5ab126eaba1fad6ff7ab72;p=picodrive.git diff --git a/pico/cd/pico.c b/pico/cd/pico.c index 8c0bf25..383949c 100644 --- a/pico/cd/pico.c +++ b/pico/cd/pico.c @@ -30,7 +30,6 @@ PICO_INTERNAL void PicoPowerMCD(void) memset(Pico_mcd->pcm_ram, 0, sizeof(Pico_mcd->pcm_ram)); memset(Pico_mcd->bram, 0, sizeof(Pico_mcd->bram)); memcpy(Pico_mcd->bram + sizeof(Pico_mcd->bram) - fmt_size, formatted_bram, fmt_size); - PicoMemRemapCD(1); } PICO_INTERNAL int PicoResetMCD(void) @@ -67,6 +66,9 @@ PICO_INTERNAL int PicoResetMCD(void) static __inline void SekRunM68k(int cyc) { int cyc_do; + + pprof_start(m68k); + SekCycleAim+=cyc; if ((cyc_do=SekCycleAim-SekCycleCnt) <= 0) return; #if defined(EMU_CORE_DEBUG) @@ -82,6 +84,7 @@ static __inline void SekRunM68k(int cyc) g_m68kcontext=&PicoCpuFM68k; SekCycleCnt+=fm68k_emulate(cyc_do, 0, 0); #endif + pprof_end(m68k); } static __inline void SekRunS68k(int cyc) @@ -212,6 +215,16 @@ static __inline void update_chips(void) #define PICO_CD +#define CPUS_RUN(m68k_cycles,s68k_cycles) \ +{ \ + if ((PicoOpt&POPT_EN_MCD_PSYNC) && (Pico_mcd->m.busreq&3) == 1) { \ + SekRunPS(m68k_cycles, s68k_cycles); /* "better/perfect sync" */ \ + } else { \ + SekRunM68k(m68k_cycles); \ + if ((Pico_mcd->m.busreq&3) == 1) /* no busreq/no reset */ \ + SekRunS68k(s68k_cycles); \ + } \ +} #include "../pico_cmn.c"