From b4c7cd0484be154b2e47ece3bd5b0e0e6911d041 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Thu, 20 Aug 2009 20:41:12 +0000 Subject: Fix 16-bit SOL audio on little endian systems. Fixes the white noise in the Gabriel Knight demo. svn-id: r43569 --- engines/sci/sfx/core.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/engines/sci/sfx/core.cpp b/engines/sci/sfx/core.cpp index 95d79b3666..a1e2a0b0f8 100644 --- a/engines/sci/sfx/core.cpp +++ b/engines/sci/sfx/core.cpp @@ -1060,7 +1060,7 @@ static void deDPCM16(byte *soundBuf, Common::SeekableReadStream &audioStream, ui s += tableDPCM16[b]; s = CLIP(s, -32768, 32767); - *out++ = TO_BE_16(s); + *out++ = s; } } @@ -1105,8 +1105,13 @@ static byte* readSOLAudio(Common::SeekableReadStream *audioStream, uint32 &size, // Convert the SOL stream flags to our own format flags = 0; - if (audioFlags & kSolFlag16Bit) + if (audioFlags & kSolFlag16Bit) { flags |= Audio::Mixer::FLAG_16BITS; +#ifdef SCUMM_LITTLE_ENDIAN + flags |= Audio::Mixer::FLAG_LITTLE_ENDIAN; +#endif + } + if (!(audioFlags & kSolFlagIsSigned)) flags |= Audio::Mixer::FLAG_UNSIGNED; -- cgit v1.2.3