diff --git a/CHANGES b/CHANGES index 8d4c23b5d..a2eda78fd 100644 --- a/CHANGES +++ b/CHANGES @@ -29,6 +29,7 @@ Bugfixes: - DS Memory: Fix crash when overflowing misaligned WRAM jump Misc: - ARM: Add F-block instruction decoding + - DS Audio: Defer mixer updates until needed - DS GX: Clean up and unify texture mapping - DS Core: Add symbol loading - DS Video: Simplify VRAM mapping diff --git a/src/ds/audio.c b/src/ds/audio.c index f1bf967f9..7f81ae51e 100644 --- a/src/ds/audio.c +++ b/src/ds/audio.c @@ -276,7 +276,6 @@ static void _updateChannel(struct mTiming* timing, void* user, uint32_t cyclesLa } ch->sample = (0xFFFF * ch->high) - 0x8000; } - _updateMixer(ch->p); if (ch->format == 3 && ch->index < 14) { int32_t period = ch->period; if (ch->high) { @@ -323,6 +322,7 @@ static int _applyBias(struct DSAudio* audio, int sample) { static void _sample(struct mTiming* timing, void* user, uint32_t cyclesLate) { struct DSAudio* audio = user; + _updateMixer(audio); int16_t sampleLeft = _applyBias(audio, audio->sampleLeft); int16_t sampleRight = _applyBias(audio, audio->sampleRight);