diff --git a/CHANGES b/CHANGES index f6a8b59d2..5a89fc609 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,7 @@ 0.3.2: (Future) Bugfixes: - Qt: Use safer isLoaded check in GameController + - GBA: Fix idle skip state being retained between games Misc: - GBA Audio: Implement missing flags on SOUNDCNT_X register diff --git a/src/gba/gba.c b/src/gba/gba.c index eda945161..364f8cae3 100644 --- a/src/gba/gba.c +++ b/src/gba/gba.c @@ -88,10 +88,6 @@ static void GBAInit(struct ARMCore* cpu, struct ARMComponent* component) { gba->idleOptimization = IDLE_LOOP_REMOVE; gba->idleLoop = IDLE_LOOP_NONE; - gba->lastJump = 0; - gba->haltPending = false; - gba->idleDetectionStep = 0; - gba->idleDetectionFailures = 0; gba->realisticTiming = true; gba->hardCrash = true; @@ -115,6 +111,7 @@ void GBAUnloadROM(struct GBA* gba) { } GBASavedataDeinit(&gba->memory.savedata); + gba->idleLoop = IDLE_LOOP_NONE; } void GBADestroy(struct GBA* gba) { @@ -169,6 +166,11 @@ void GBAReset(struct ARMCore* cpu) { gba->timersEnabled = 0; memset(gba->timers, 0, sizeof(gba->timers)); + + gba->lastJump = 0; + gba->haltPending = false; + gba->idleDetectionStep = 0; + gba->idleDetectionFailures = 0; } void GBASkipBIOS(struct ARMCore* cpu) {