diff --git a/src/core/cpu_core.cpp b/src/core/cpu_core.cpp index 66d468af2..ffc2ea3fa 100644 --- a/src/core/cpu_core.cpp +++ b/src/core/cpu_core.cpp @@ -2306,11 +2306,12 @@ ALWAYS_INLINE_RELEASE void CPU::MemoryBreakpointCheck(VirtualMemoryAddress addre template [[noreturn]] void CPU::ExecuteImpl() { - for (;;) - { + if (g_state.pending_ticks >= g_state.downcount) TimingEvents::RunEvents(); - while (g_state.pending_ticks < g_state.downcount) + for (;;) + { + do { if constexpr (debug) { @@ -2350,7 +2351,7 @@ template { if (g_state.m_regs.v1 != g_state.m_regs.v0) printf("Got %08X Expected? %08X\n", g_state.m_regs.v1, g_state.m_regs.v0); - } + } #endif // execute the instruction we previously fetched @@ -2369,7 +2370,9 @@ template ExitExecution(); } } - } + } while (g_state.pending_ticks < g_state.downcount); + + TimingEvents::RunEvents(); } }