diff --git a/CHANGES b/CHANGES index 275277ffb..e55c80ac6 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,7 @@ Emulation fixes: - GBA SIO: Add missing NORMAL8 implementation bits (fixes mgba.io/i/2172) - GBA SIO: Fix missing interrupt on an unattached NORMAL transfer - GBA Memory: Fix prefetch mask when swapping modes within a region + - GBA Serialize: Fix loading audio enable bit late (fixes mgba.io/i/2230) - GBA Video: Revert scanline latching changes (fixes mgba.io/i/2153, mgba.io/i/2149) Other fixes: - 3DS: Fix disabling "wide" mode on 2DS (fixes mgba.io/i/2167) diff --git a/src/gba/io.c b/src/gba/io.c index 9dc66b94d..066be5054 100644 --- a/src/gba/io.c +++ b/src/gba/io.c @@ -973,6 +973,8 @@ void GBAIOSerialize(struct GBA* gba, struct GBASerializedState* state) { } void GBAIODeserialize(struct GBA* gba, const struct GBASerializedState* state) { + GBAAudioWriteSOUNDCNT_X(&gba->audio, state->io[REG_SOUNDCNT_X >> 1]); + int i; for (i = 0; i < REG_MAX; i += 2) { if (_isWSpecialRegister[i >> 1]) { @@ -1003,7 +1005,6 @@ void GBAIODeserialize(struct GBA* gba, const struct GBASerializedState* state) { LOAD_32(gba->memory.dma[i].nextCount, 0, &state->dma[i].nextCount); LOAD_32(gba->memory.dma[i].when, 0, &state->dma[i].when); } - GBAAudioWriteSOUNDCNT_X(&gba->audio, gba->memory.io[REG_SOUNDCNT_X >> 1]); gba->sio.siocnt = gba->memory.io[REG_SIOCNT >> 1]; GBASIOWriteRCNT(&gba->sio, gba->memory.io[REG_RCNT >> 1]);