From ef59a0da1238f4676d1ac1a813c66517392d02ea Mon Sep 17 00:00:00 2001 From: Stenzek Date: Mon, 19 Aug 2024 22:03:07 +1000 Subject: [PATCH] CPU: Fix assertion tripping in debug builds --- src/core/cpu_core.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) 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(); } }