diff --git a/CHANGES b/CHANGES index 75ee3a599..0a7d47a7a 100644 --- a/CHANGES +++ b/CHANGES @@ -24,6 +24,7 @@ Bugfixes: - ARM7: Fix setting spsr privilege bits when spsr is empty - GBA BIOS: Fix ArcTan2 accuracy and boundary conditions - SDL: Fix sporadic crash when deinitializing audio + - GBA Audio: Reset audio FIFO DMA if an invalid destination is set Misc: - GBA: Slightly optimize GBAProcessEvents - Qt: Add preset for DualShock 4 diff --git a/src/gba/audio.c b/src/gba/audio.c index ecadba3aa..e697365f7 100644 --- a/src/gba/audio.c +++ b/src/gba/audio.c @@ -314,6 +314,12 @@ void GBAAudioScheduleFifoDma(struct GBAAudio* audio, int number, struct GBADMA* audio->chB.dmaSource = number; break; default: + if (audio->chA.dmaSource == number) { + audio->chA.dmaSource = -1; + } + if (audio->chB.dmaSource == number) { + audio->chB.dmaSource = -1; + } GBALog(audio->p, GBA_LOG_GAME_ERROR, "Invalid FIFO destination: 0x%08X", info->dest); return; }