GB Audio: Fix channel 1 restarting if sweep applies after stop (fixes #2965)

This commit is contained in:
Vicki Pfau 2023-06-29 01:23:58 -07:00
parent 491879da95
commit c5a7b1a9b7
2 changed files with 4 additions and 1 deletions

View File

@ -8,6 +8,7 @@ Features:
Emulation fixes:
- ARM: Remove obsolete force-alignment in `bx pc` (fixes mgba.io/i/2964)
- GB Audio: Fix channels 1/2 staying muted if restarted after long silence
- GB Audio: Fix channel 1 restarting if sweep applies after stop (fixes mgba.io/i/2965)
- GB I/O: Read back proper SVBK value after writing 0 (fixes mgba.io/i/2921)
- GB Serialize: Add missing Pocket Cam state to savestates
- GB SIO: Disabling SIO should cancel pending transfers (fixes mgba.io/i/2537)

View File

@ -651,7 +651,9 @@ void GBAudioUpdateFrame(struct GBAudio* audio) {
if (audio->ch1.sweep.enable) {
--audio->ch1.sweep.step;
if (audio->ch1.sweep.step == 0) {
audio->playingCh1 = _updateSweep(&audio->ch1, false);
if (!_updateSweep(&audio->ch1, false)) {
audio->playingCh1 = false;
}
*audio->nr52 &= ~0x0001;
*audio->nr52 |= audio->playingCh1;
}