From c4ed80ca35b15d126766e58085730cc167b7680a Mon Sep 17 00:00:00 2001 From: Sjoerd van der Berg Date: Fri, 13 Jan 2017 17:38:46 +0000 Subject: [PATCH] Fix 16bit sample reading from gus memory Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4004 --- src/hardware/gus.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/hardware/gus.cpp b/src/hardware/gus.cpp index c60f4bb9..6fd325d0 100644 --- a/src/hardware/gus.cpp +++ b/src/hardware/gus.cpp @@ -179,9 +179,10 @@ public: } INLINE Bit32s GetSample16() const { + Bit32u useAddr = WaveAddr >> WAVE_FRACT; // Formula used to convert addresses for use with 16-bit samples - Bit32u holdAddr = WaveAddr & 0xc0000L; - Bit32u useAddr = WaveAddr & 0x1ffffL; + Bit32u holdAddr = useAddr & 0xc0000L; + useAddr = useAddr & 0x1ffffL; useAddr = useAddr << 1; useAddr = (holdAddr | useAddr); if (WaveAdd >= (1 << WAVE_FRACT)) {