(((PicoAHW&1) && (PicoOpt & POPT_EN_MCD_PSYNC)) ? (SekCycleAim-SekCycleCnt) : SekCyclesLeftNoMCD)\r
#define SekCyclesLeftS68k \\r
((PicoOpt & POPT_EN_MCD_PSYNC) ? (SekCycleAimS68k-SekCycleCntS68k) : PicoCpuCS68k.cycles)\r
-#define SekSetCyclesLeftNoMCD(c) PicoCpuCM68k.cycles=c\r
-#define SekSetCyclesLeft(c) { \\r
- if ((PicoAHW&1) && (PicoOpt & POPT_EN_MCD_PSYNC)) SekCycleCnt=SekCycleAim-(c); else SekSetCyclesLeftNoMCD(c); \\r
-}\r
+#define SekEndTimeslice(after) PicoCpuCM68k.cycles=after\r
+#define SekEndTimesliceS68k(after) PicoCpuCS68k.cycles=after\r
#define SekPc (PicoCpuCM68k.pc-PicoCpuCM68k.membase)\r
#define SekPcS68k (PicoCpuCS68k.pc-PicoCpuCS68k.membase)\r
#define SekSetStop(x) { PicoCpuCM68k.state_flags&=~1; if (x) { PicoCpuCM68k.state_flags|=1; PicoCpuCM68k.cycles=0; } }\r
(((PicoAHW&1) && (PicoOpt & POPT_EN_MCD_PSYNC)) ? (SekCycleAim-SekCycleCnt) : SekCyclesLeftNoMCD)\r
#define SekCyclesLeftS68k \\r
((PicoOpt & POPT_EN_MCD_PSYNC) ? (SekCycleAimS68k-SekCycleCntS68k) : PicoCpuFS68k.io_cycle_counter)\r
-#define SekSetCyclesLeftNoMCD(c) PicoCpuFM68k.io_cycle_counter=c\r
-#define SekSetCyclesLeft(c) { \\r
- if ((PicoAHW&1) && (PicoOpt & POPT_EN_MCD_PSYNC)) SekCycleCnt=SekCycleAim-(c); else SekSetCyclesLeftNoMCD(c); \\r
-}\r
+#define SekEndTimeslice(after) PicoCpuFM68k.io_cycle_counter=after\r
+#define SekEndTimesliceS68k(after) PicoCpuFS68k.io_cycle_counter=after\r
#define SekPc fm68k_get_pc(&PicoCpuFM68k)\r
#define SekPcS68k fm68k_get_pc(&PicoCpuFS68k)\r
#define SekSetStop(x) { \\r
(((PicoAHW&1) && (PicoOpt & POPT_EN_MCD_PSYNC)) ? (SekCycleAim-SekCycleCnt) : SekCyclesLeftNoMCD)\r
#define SekCyclesLeftS68k \\r
((PicoOpt & POPT_EN_MCD_PSYNC) ? (SekCycleAimS68k-SekCycleCntS68k) : PicoCpuMS68k.cyc_remaining_cycles)\r
-#define SekSetCyclesLeftNoMCD(c) SET_CYCLES(c)\r
-#define SekSetCyclesLeft(c) { \\r
- if ((PicoAHW&1) && (PicoOpt & POPT_EN_MCD_PSYNC)) SekCycleCnt=SekCycleAim-(c); else SET_CYCLES(c); \\r
-}\r
+#define SekEndTimeslice(after) SET_CYCLES(after)\r
+#define SekEndTimesliceS68k(after) PicoCpuMS68k.cyc_remaining_cycles=after\r
#define SekPc m68k_get_reg(&PicoCpuMM68k, M68K_REG_PC)\r
#define SekPcS68k m68k_get_reg(&PicoCpuMS68k, M68K_REG_PC)\r
#define SekSetStop(x) { \\r
}\r
\r
#endif\r
-#endif\r
+#endif // EMU_M68K\r
\r
extern int SekCycleCnt; // cycles done in this frame\r
extern int SekCycleAim; // cycle aim\r
#define SekCyclesDoneT() (SekCycleCntT+SekCyclesDone()) // total nuber of cycles done for this rom\r
\r
#define SekEndRun(after) { \\r
- SekCycleCnt -= SekCyclesLeft - after; \\r
- if(SekCycleCnt < 0) SekCycleCnt = 0; \\r
- SekSetCyclesLeft(after); \\r
+ SekCycleCnt -= SekCyclesLeft - (after); \\r
+ if (SekCycleCnt < 0) SekCycleCnt = 0; \\r
+ SekEndTimeslice(after); \\r
+}\r
+\r
+#define SekEndRunS68k(after) { \\r
+ SekCycleCntS68k -= SekCyclesLeftS68k - (after); \\r
+ if (SekCycleCntS68k < 0) SekCycleCntS68k = 0; \\r
+ SekEndTimesliceS68k(after); \\r
}\r
\r
extern int SekCycleCntS68k;\r
\r
#ifdef EMU_CORE_DEBUG\r
extern int dbg_irq_level;\r
-#undef SekSetCyclesLeftNoMCD\r
-#undef SekSetCyclesLeft\r
+#undef SekEndTimeslice\r
#undef SekCyclesBurn\r
#undef SekEndRun\r
#undef SekInterrupt\r
-#define SekSetCyclesLeftNoMCD(c)\r
-#define SekSetCyclesLeft(c)\r
+#define SekEndTimeslice(c)\r
#define SekCyclesBurn(c) c\r
#define SekEndRun(c)\r
#define SekInterrupt(irq) dbg_irq_level=irq\r
unsigned short hint_vector;\r
unsigned char busreq;\r
unsigned char s68k_pend_ints;\r
- unsigned int state_flags; // 04: emu state: reset_pending, dmna_pending\r
+ unsigned int state_flags; // 04: emu state: reset_pending\r
unsigned int counter75hz;\r
unsigned int pad0;\r
int timer_int3; // 10\r