diff --git a/CHANGES b/CHANGES index 9a703e0ab..9f92c1e4f 100644 --- a/CHANGES +++ b/CHANGES @@ -7,6 +7,7 @@ Bugfixes: - Util: Fix PowerPC PNG read/write pixel order - Qt: Use safer isLoaded check in GameController - GBA Memory: Fix DMAs from BIOS while not in BIOS + - GBA: Fix idle skip state being retained between games Misc: - Qt: Window size command line options are now supported - Qt: Increase usability of key mapper diff --git a/src/gba/gba.c b/src/gba/gba.c index c356769f6..9d803dda3 100644 --- a/src/gba/gba.c +++ b/src/gba/gba.c @@ -98,10 +98,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; @@ -127,6 +123,7 @@ void GBAUnloadROM(struct GBA* gba) { } GBASavedataDeinit(&gba->memory.savedata); + gba->idleLoop = IDLE_LOOP_NONE; } void GBADestroy(struct GBA* gba) { @@ -182,6 +179,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 GBA* gba) {