all repos — mgba @ 24a90e317ff7b97eaa2ab361ffa61ba3337b9748

mGBA Game Boy Advance Emulator

GBA DMA: Fix invalid audio DMA parameters
Vicki Pfau vi@endrift.com
Sat, 15 Feb 2020 13:43:50 -0800
commit

24a90e317ff7b97eaa2ab361ffa61ba3337b9748

parent

a3f42ff63d145446fb99b94505ee26cec3485555

2 files changed, 3 insertions(+), 2 deletions(-)

jump to
M CHANGESCHANGES

@@ -3,6 +3,7 @@ Emulation fixes:

- GB Serialize: Fix timing bug loading channel 4 timing - GBA: Fix multiboot entry point while skipping BIOS - GBA BIOS: Fix undefined instruction HLE behavior + - GBA DMA: Fix invalid audio DMA parameters - GBA Memory: Misaligned SRAM writes are ignored - GBA Serialize: Fix serializing DMA transfer register - GBA Serialize: Fix audio DMA timing deserialization
M src/gba/audio.csrc/gba/audio.c

@@ -104,6 +104,8 @@ mCoreSyncConsumeAudio(audio->p->sync);

} void GBAAudioScheduleFifoDma(struct GBAAudio* audio, int number, struct GBADMA* info) { + info->reg = GBADMARegisterSetDestControl(info->reg, GBA_DMA_FIXED); + info->reg = GBADMARegisterSetWidth(info->reg, 1); switch (info->dest) { case BASE_IO | REG_FIFO_A_LO: audio->chA.dmaSource = number;

@@ -129,8 +131,6 @@ } else {

audio->externalMixing = false; } } - info->reg = GBADMARegisterSetDestControl(info->reg, GBA_DMA_FIXED); - info->reg = GBADMARegisterSetWidth(info->reg, 1); } void GBAAudioWriteSOUND1CNT_LO(struct GBAAudio* audio, uint16_t value) {