From 69aa7ac3aed1b77f214ece118eefbaa25a2545f4 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Thu, 4 Jan 2018 21:34:07 -0800 Subject: [PATCH] GBA: Timing cleanup --- src/gba/gba.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/gba/gba.c b/src/gba/gba.c index f19c2588c..f295c483c 100644 --- a/src/gba/gba.c +++ b/src/gba/gba.c @@ -243,24 +243,17 @@ static void GBAProcessEvents(struct ARMCore* cpu) { int32_t nextEvent = cpu->nextEvent; while (cpu->cycles >= nextEvent) { - int32_t cycles = cpu->cycles; - - cpu->cycles = 0; cpu->nextEvent = INT_MAX; - -#ifndef NDEBUG - if (cycles < 0) { - mLOG(GBA, FATAL, "Negative cycles passed: %i", cycles); - } -#endif - nextEvent = cycles; + nextEvent = 0; do { + int32_t cycles = cpu->cycles; + cpu->cycles = 0; #ifndef NDEBUG - if (cpu->cycles) { - mLOG(GBA, FATAL, "Cycles passed inexplicably: %i", cpu->cycles); + if (cycles < 0) { + mLOG(GBA, FATAL, "Negative cycles passed: %i", cycles); } #endif - nextEvent = mTimingTick(&gba->timing, nextEvent); + nextEvent = mTimingTick(&gba->timing, nextEvent + cycles); } while (gba->cpuBlocked); cpu->nextEvent = nextEvent;