From 6b7682105bad8a32c240c3b19fe52dde5080f20f Mon Sep 17 00:00:00 2001 From: SarahW Date: Wed, 18 Oct 2017 20:03:56 +0100 Subject: [PATCH] Corrected read of SB Pro mixer registers on SB16. Fixes sound in One Must Fall, Jazz Jackrabbit and probably other games. --- src/sound_sb.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/sound_sb.c b/src/sound_sb.c index 945ed5f..3cee369 100644 --- a/src/sound_sb.c +++ b/src/sound_sb.c @@ -768,8 +768,22 @@ uint8_t sb_ct1745_mixer_read(uint16_t addr, void *p) } switch (mixer->index) { - case 0x00: case 0x04: case 0x0A: case 0x22: case 0x26: case 0x28: case 0x2E: + case 0x00: return mixer->regs[mixer->index]; + + /*SB Pro compatibility*/ + case 0x04: + return ((mixer->regs[0x33] >> 4) & 0x0f) | (mixer->regs[0x32] & 0xf0); + case 0x0a: + return (mixer->regs[0x2a] - 10) / 3; + case 0x22: + return ((mixer->regs[0x31] >> 4) & 0x0f) | (mixer->regs[0x30] & 0xf0); + case 0x26: + return ((mixer->regs[0x35] >> 4) & 0x0f) | (mixer->regs[0x34] & 0xf0); + case 0x28: + return ((mixer->regs[0x37] >> 4) & 0x0f) | (mixer->regs[0x36] & 0xf0); + case 0x2e: + return ((mixer->regs[0x39] >> 4) & 0x0f) | (mixer->regs[0x38] & 0xf0); case 0x48: // Undocumented. The Creative Windows Mixer calls this after calling 3C (input selector). even when writing.