diff --git a/CHANGES b/CHANGES index ea70ad6dc..461be0d06 100644 --- a/CHANGES +++ b/CHANGES @@ -3,6 +3,7 @@ Emulation fixes: - ARM: Fix ALU reading PC after shifting - ARM: Fix STR storing PC after address calculation - GBA Memory: Misaligned SRAM writes are ignored + - GBA Serialize: Fix serializing DMA transfer register Other fixes: - Qt: Only dynamically reset video scale if a game is running - Qt: Fix race condition with proxied video events diff --git a/src/gba/io.c b/src/gba/io.c index 2b74dd99b..01333ba37 100644 --- a/src/gba/io.c +++ b/src/gba/io.c @@ -950,7 +950,7 @@ void GBAIOSerialize(struct GBA* gba, struct GBASerializedState* state) { STORE_32(gba->memory.dma[i].when, 0, &state->dma[i].when); } - state->dmaTransferRegister = gba->memory.dmaTransferRegister; + STORE_32(gba->memory.dmaTransferRegister, 0, &state->dmaTransferRegister); GBAHardwareSerialize(&gba->memory.hw, state); } @@ -993,7 +993,9 @@ void GBAIODeserialize(struct GBA* gba, const struct GBASerializedState* state) { } } GBAAudioWriteSOUNDCNT_X(&gba->audio, gba->memory.io[REG_SOUNDCNT_X >> 1]); - gba->memory.dmaTransferRegister = state->dmaTransferRegister; + + LOAD_32(gba->memory.dmaTransferRegister, 0, &state->dmaTransferRegister); + GBADMAUpdate(gba); GBAHardwareDeserialize(&gba->memory.hw, state); }