From 59b48aaadec8c682a9319222043d36288d26e16f Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Wed, 19 Aug 2020 15:50:32 -0700 Subject: [PATCH] GBA Audio: Fix volume/mute in XQ audio (fixes #1864) --- CHANGES | 1 + src/gba/extra/audio-mixer.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/CHANGES b/CHANGES index e1bf60861..95c2639b9 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,7 @@ Emulation fixes: - GB Audio: Fix deserializing audio channels 2 and 3 - GBA Audio: Fix deserializing SOUNDCNT_L - GBA Audio: Fix stereo in XQ audio + - GBA Audio: Fix volume/mute in XQ audio (fixes mgba.io/i/1864) - GBA Hardware: Fix GB Player detection on big endian platforms - GBA Video: Invalidate map cache when modifying BGCNT (fixes mgba.io/i/1846) Other fixes: diff --git a/src/gba/extra/audio-mixer.c b/src/gba/extra/audio-mixer.c index db1448b86..fe9ed6901 100644 --- a/src/gba/extra/audio-mixer.c +++ b/src/gba/extra/audio-mixer.c @@ -289,6 +289,8 @@ void _mp2kStep(struct GBAAudioMixer* mixer) { CircleBufferRead16(&mixer->activeTracks[track].buffer, &value); sample.right += value; } + sample.left = (sample.left * mixer->p->masterVolume) >> 8; + sample.right = (sample.right * mixer->p->masterVolume) >> 8; if (mixer->p->externalMixing) { blip_add_delta(mixer->p->psg.left, mixer->p->clock + i * interval, sample.left - mixer->last.left); blip_add_delta(mixer->p->psg.right, mixer->p->clock + i * interval, sample.right - mixer->last.right);