From b8ff131996de0538bc6b5c6cb86c050d7ac803bd Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Tue, 5 Mar 2024 23:41:38 +0600 Subject: [PATCH] More changes --- src/sound/snd_sb_dsp.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/sound/snd_sb_dsp.c b/src/sound/snd_sb_dsp.c index a6069226d..44d9d0950 100644 --- a/src/sound/snd_sb_dsp.c +++ b/src/sound/snd_sb_dsp.c @@ -710,10 +710,6 @@ static void sb_ess_write_reg(sb_dsp_t *dsp, uint8_t reg, uint8_t data) else dsp->sb_freq = 397700UL / (128ul - data); - if (dsp->sb_16_enable || dsp->sb_8_enable) { - sb_stop_dma_ess(dsp); - sb_start_dma_ess(dsp); - } break; } case 0xA2: /* Filter divider (effectively, a hardware lowpass filter under S/W control) */ @@ -742,8 +738,15 @@ static void sb_ess_write_reg(sb_dsp_t *dsp, uint8_t reg, uint8_t data) ESSreg(reg) = data; if (chg & 0x3) { if (dsp->sb_16_enable || dsp->sb_8_enable) { - sb_stop_dma_ess(dsp); - sb_start_dma_ess(dsp); + uint8_t real_format = 0x00; + real_format |= !!(ESSreg(0xB7) & 0x20) ? 0x10 : 0; + real_format |= !!(ESSreg(0xB7) & 0x8) ? 0x20 : 0; + + if (dsp->sb_16_enable) + dsp->sb_16_format = real_format; + + if (dsp->sb_8_enable) + dsp->sb_8_format = real_format; } } break;