-// (c) Copyright 2007 notaz, All rights reserved.
-
+/*
+ * PicoDrive
+ * (C) notaz, 2007
+ *
+ * This work is licensed under the terms of MAME license.
+ * See COPYING file in the top-level directory.
+ */
#include "../pico_int.h"
#include "../sound/ym2612.h"
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)
return 0;
}
-static __inline void SekRunM68k(int cyc)
-{
- int cyc_do;
- SekCycleAim+=cyc;
- if ((cyc_do=SekCycleAim-SekCycleCnt) <= 0) return;
-#if defined(EMU_CORE_DEBUG)
- SekCycleCnt+=CM_compareRun(cyc_do, 0);
-#elif defined(EMU_C68K)
- PicoCpuCM68k.cycles=cyc_do;
- CycloneRun(&PicoCpuCM68k);
- SekCycleCnt+=cyc_do-PicoCpuCM68k.cycles;
-#elif defined(EMU_M68K)
- m68k_set_context(&PicoCpuMM68k);
- SekCycleCnt+=m68k_execute(cyc_do);
-#elif defined(EMU_F68K)
- g_m68kcontext=&PicoCpuFM68k;
- SekCycleCnt+=fm68k_emulate(cyc_do, 0, 0);
-#endif
-}
-
static __inline void SekRunS68k(int cyc)
{
int cyc_do;
#elif defined(EMU_M68K)
m68k_set_context(&PicoCpuMS68k);
SekCycleCntS68k+=m68k_execute(cyc_do);
+ m68k_set_context(&PicoCpuMM68k);
#elif defined(EMU_F68K)
g_m68kcontext=&PicoCpuFS68k;
SekCycleCntS68k+=fm68k_emulate(cyc_do, 0, 0);
+ g_m68kcontext=&PicoCpuFM68k;
#endif
}
#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"