#include "memory.h"\r
\r
\r
-int SekCycleCnt=0; // cycles done in this frame\r
-int SekCycleAim=0; // cycle aim\r
-unsigned int SekCycleCntT=0;\r
+unsigned int SekCycleCnt;\r
+unsigned int SekCycleAim;\r
\r
\r
/* context */\r
#ifdef EMU_F68K\r
static void SekIntAckF68K(unsigned level)\r
{\r
- if (level == 4) { Pico.video.pending_ints = 0; elprintf(EL_INTS, "hack: @ %06x [%i]", SekPc, SekCycleCnt); }\r
- else if(level == 6) { Pico.video.pending_ints &= ~0x20; elprintf(EL_INTS, "vack: @ %06x [%i]", SekPc, SekCycleCnt); }\r
+ if (level == 4) {\r
+ Pico.video.pending_ints = 0;\r
+ elprintf(EL_INTS, "hack: @ %06x [%i]", SekPc, SekCyclesDone());\r
+ }\r
+ else if(level == 6) {\r
+ Pico.video.pending_ints &= ~0x20;\r
+ elprintf(EL_INTS, "vack: @ %06x [%i]", SekPc, SekCyclesDone());\r
+ }\r
PicoCpuFM68k.interrupts[0] = 0;\r
}\r
#endif\r
#elif defined(EMU_M68K)\r
SekCycleCnt+=m68k_execute(1);\r
#elif defined(EMU_F68K)\r
- SekCycleCnt+=fm68k_emulate(1, 0, 0);\r
+ SekCycleCnt+=fm68k_emulate(1, 0);\r
#endif\r
}\r
\r
#endif\r
\r
*(unsigned int *)(cpu+0x40) = pc;\r
- *(unsigned int *)(cpu+0x50) = SekCycleCntT;\r
+ *(unsigned int *)(cpu+0x50) =\r
+ is_sub ? SekCycleCntS68k : SekCycleCnt;\r
}\r
\r
PICO_INTERNAL void SekUnpackCpu(const unsigned char *cpu, int is_sub)\r
context->execinfo &= ~FM68K_HALTED;\r
if (cpu[0x4d]&1) context->execinfo |= FM68K_HALTED;\r
#endif\r
- SekCycleCntT = *(unsigned int *)(cpu+0x50);\r
+ if (is_sub)\r
+ SekCycleCntS68k = *(unsigned int *)(cpu+0x50);\r
+ else\r
+ SekCycleCnt = *(unsigned int *)(cpu+0x50);\r
}\r
\r
\r
CycloneInitIdle();\r
#endif\r
#ifdef EMU_F68K\r
- fm68k_emulate(0, 0, 1);\r
+ fm68k_emulate(0, 1);\r
#endif\r
}\r
\r
CycloneFinishIdle();\r
#endif\r
#ifdef EMU_F68K\r
- fm68k_emulate(0, 0, 2);\r
+ fm68k_emulate(0, 2);\r
#endif\r
while (idledet_count > 0)\r
{\r