diff --git a/CHANGES b/CHANGES index 0fed364fe..5b4a414a9 100644 --- a/CHANGES +++ b/CHANGES @@ -26,6 +26,7 @@ Emulation fixes: - GBA Video: Fix wrapped sprite mosaic clamping (fixes mgba.io/i/1432) - GBA Memory: Fix STM to VRAM (fixes mgba.io/i/1430) - GB Audio: Only reset channel 3 sample in DMG mode + - GB Audio: Sample inactive channels (fixes mgba.io/i/1455, mgba.io/i/1456) Other fixes: - Qt: Fix some Qt display driver race conditions - Core: Improved lockstep driver reliability (Le Hoang Quyen) diff --git a/src/gb/audio.c b/src/gb/audio.c index 01e66802b..633739c00 100644 --- a/src/gb/audio.c +++ b/src/gb/audio.c @@ -598,7 +598,7 @@ void GBAudioSamplePSG(struct GBAudio* audio, int16_t* left, int16_t* right) { int sampleLeft = dcOffset; int sampleRight = dcOffset; - if (audio->playingCh1 && !audio->forceDisableCh[0]) { + if (!audio->forceDisableCh[0]) { if (audio->ch1Left) { sampleLeft += audio->ch1.sample; } @@ -608,7 +608,7 @@ void GBAudioSamplePSG(struct GBAudio* audio, int16_t* left, int16_t* right) { } } - if (audio->playingCh2 && !audio->forceDisableCh[1]) { + if (!audio->forceDisableCh[1]) { if (audio->ch2Left) { sampleLeft += audio->ch2.sample; } @@ -618,7 +618,7 @@ void GBAudioSamplePSG(struct GBAudio* audio, int16_t* left, int16_t* right) { } } - if (audio->playingCh3 && !audio->forceDisableCh[2]) { + if (!audio->forceDisableCh[2]) { if (audio->ch3Left) { sampleLeft += audio->ch3.sample; } @@ -628,7 +628,7 @@ void GBAudioSamplePSG(struct GBAudio* audio, int16_t* left, int16_t* right) { } } - if (audio->playingCh4 && !audio->forceDisableCh[3]) { + if (!audio->forceDisableCh[3]) { int8_t sample = _coalesceNoiseChannel(&audio->ch4); if (audio->ch4Left) { sampleLeft += sample;