SekRunPS Cyclone integration
[picodrive.git] / Pico / PicoInt.h
index 76a3322..47ba2c9 100644 (file)
@@ -24,8 +24,13 @@ extern "C" {
 #ifdef EMU_C68K\r
 #include "../cpu/Cyclone/Cyclone.h"\r
 extern struct Cyclone PicoCpu, PicoCpuS68k;\r
-#define SekCyclesLeft PicoCpu.cycles // cycles left for this run\r
-#define SekSetCyclesLeft(c) PicoCpu.cycles=c\r
+#define SekCyclesLeftNoMCD PicoCpu.cycles // cycles left for this run\r
+#define SekCyclesLeft \\r
+       (((PicoMCD&1) && (PicoOpt & 0x2000)) ? (SekCycleAim-SekCycleCnt) : SekCyclesLeftNoMCD)\r
+#define SekSetCyclesLeftNoMCD(c) PicoCpu.cycles=c\r
+#define SekSetCyclesLeft(c) { \\r
+       if ((PicoMCD&1) && (PicoOpt & 0x2000)) SekCycleCnt=SekCycleAim-(c); else SekSetCyclesLeftNoMCD(c); \\r
+}\r
 #define SekPc (PicoCpu.pc-PicoCpu.membase)\r
 #define SekPcS68k (PicoCpuS68k.pc-PicoCpuS68k.membase)\r
 #endif\r
@@ -55,8 +60,13 @@ extern int m68k_ICount;
 extern m68ki_cpu_core PicoM68kCPU; // MD's CPU\r
 extern m68ki_cpu_core PicoS68kCPU; // Mega CD's CPU\r
 #ifndef SekCyclesLeft\r
-#define SekCyclesLeft m68k_cycles_remaining()\r
-#define SekSetCyclesLeft(c) SET_CYCLES(c)\r
+#define SekCyclesLeftNoMCD m68k_cycles_remaining()\r
+#define SekCyclesLeft \\r
+       (((PicoMCD&1) && (PicoOpt & 0x2000)) ? (SekCycleAim-SekCycleCnt) : SekCyclesLeftNoMCD)\r
+#define SekSetCyclesLeftNoMCD(c) SET_CYCLES(c)\r
+#define SekSetCyclesLeft(c) { \\r
+       if ((PicoMCD&1) && (PicoOpt & 0x2000)) SekCycleCnt=SekCycleAim-(c); else SET_CYCLES(c); \\r
+}\r
 #define SekPc m68k_get_reg(&PicoM68kCPU, M68K_REG_PC)\r
 #define SekPcS68k m68k_get_reg(&PicoS68kCPU, M68K_REG_PC)\r
 #endif\r