diff --git a/CHANGES b/CHANGES index 848281e0f..0b2bfc2ca 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,7 @@ Emulation fixes: - GB MBC: Fix MBC2 bit selection - GB Video: Always initialize palette - GBA BIOS: Fix reloading video registers after reset (fixes mgba.io/i/1808) + - GBA Savedata: Fix potential corruption when loading a 1Mbit flash save - GBA Video: Fix invalid read in mode 4 mosaic - GBA Video: Fix color of disabled screen - SM83: Fix flags on little endian PowerPC diff --git a/src/gba/savedata.c b/src/gba/savedata.c index 954d5b218..39a805725 100644 --- a/src/gba/savedata.c +++ b/src/gba/savedata.c @@ -599,7 +599,6 @@ void GBASavedataDeserialize(struct GBASavedata* savedata, const struct GBASerial void _flashSwitchBank(struct GBASavedata* savedata, int bank) { mLOG(GBA_SAVE, DEBUG, "Performing flash bank switch to bank %i", bank); - savedata->currentBank = &savedata->data[bank << 16]; if (bank > 0 && savedata->type == SAVEDATA_FLASH512) { mLOG(GBA_SAVE, INFO, "Updating flash chip from 512kb to 1Mb"); savedata->type = SAVEDATA_FLASH1M; @@ -614,6 +613,7 @@ void _flashSwitchBank(struct GBASavedata* savedata, int bank) { } } } + savedata->currentBank = &savedata->data[bank << 16]; } void _flashErase(struct GBASavedata* savedata) {