- SekRunM68k(m68k_cycles); \
- if (!(Pico32x.emu_flags & (P32XF_MSH2POLL|P32XF_MSH2VPOLL))) \
- sh2_execute(&msh2, CYCLES_M68K2SH2(m68k_cycles)); \
- if (!(Pico32x.emu_flags & (P32XF_SSH2POLL|P32XF_SSH2VPOLL))) \
- sh2_execute(&ssh2, CYCLES_M68K2SH2(m68k_cycles))
+{ \
+ int slice; \
+ SekCycleAim += m68k_cycles; \
+ while (SekCycleCnt < SekCycleAim) { \
+ slice = SekCycleCnt; \
+ run_m68k(SekCycleAim - SekCycleCnt); \
+ slice = SekCycleCnt - slice; /* real count from 68k */ \
+ if (SekCycleCnt < SekCycleAim) \
+ elprintf(EL_32X, "slice %d", slice); \
+ if (!(Pico32x.emu_flags & (P32XF_SSH2POLL|P32XF_SSH2VPOLL))) \
+ sh2_execute(&ssh2, CYCLES_M68K2SH2(slice)); \
+ if (!(Pico32x.emu_flags & (P32XF_MSH2POLL|P32XF_MSH2VPOLL))) \
+ sh2_execute(&msh2, CYCLES_M68K2SH2(slice)); \
+ } \
+}