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);