Files
Henrik Rydgård 097788aaea Core: Handle CORE_REENTER_DISPATCH in Core_NextFrame
"Core_NextFrame called with wrong core state N/A" is CORE_REENTER_DISPATCH -
the one CoreState missing from CoreStateToString, so it printed as N/A.

Core_ReenterDispatcher() sets that state to bounce out of the dispatcher and
back in, so pending jit cache invalidations get applied, and normally nothing
can observe it: both run loops have coreState == CORE_RUNNING_CPU in their loop
condition, so they bail at once and Core_RunLoopUntil resets it.

CoreTiming::ProcessEvents() is the exception. It drains every due event in one
loop without returning to the dispatcher in between, so if one callback
invalidates the icache and EnterVBlank is behind it in the same batch,
__DisplayFlip reaches Core_NextFrame while we're still in REENTER_DISPATCH.
The likeliest source is hleCheat: for the JitInvalidationHack games it
invalidates on every tick, at a 2ms interval against a 16.7ms vblank.

Before, that meant Core_NextFrame refused, so the flip was skipped entirely -
a dropped frame plus an alarming error log. Treat it like CORE_RUNNING_CPU
instead: CORE_NEXTFRAME bounces out of the dispatcher just as well, and
MIPSState::RunLoopUntil() calls ProcessPendingInvalidates() on every entry
regardless of state, so nothing is lost.

Also add the missing case to CoreStateToString.
2026-09-02 16:45:30 -06:00
..
2026-08-28 22:36:59 +02:00
2026-08-11 20:12:10 +02:00
…
2026-08-31 01:19:06 +02:00
2026-08-31 01:19:06 +02:00
…
2026-08-31 01:19:06 +02:00
…
…
2026-07-29 16:27:33 +02:00
2026-08-11 15:43:48 +02:00
…
2026-07-27 18:37:28 +02:00
2026-08-31 01:19:06 +02:00
2026-08-15 18:31:20 +02:00