aboutsummaryrefslogtreecommitdiff
path: root/engines/sci
diff options
context:
space:
mode:
authorMatthew Hoops2009-08-21 03:31:34 +0000
committerMatthew Hoops2009-08-21 03:31:34 +0000
commitcba2897cc8f7b70d27fc75ca8b8d55cde4738e4a (patch)
treea6af2e6ce3b0cdb3254f79ff16e94a070b39ce2c /engines/sci
parenta7ab084ecfec7897775cba06feb477bcf689cb42 (diff)
downloadscummvm-rg350-cba2897cc8f7b70d27fc75ca8b8d55cde4738e4a.tar.gz
scummvm-rg350-cba2897cc8f7b70d27fc75ca8b8d55cde4738e4a.tar.bz2
scummvm-rg350-cba2897cc8f7b70d27fc75ca8b8d55cde4738e4a.zip
Truly fix endianness in the SOL decoder. Raw sounds are always in little endian order and now compressed are outputted to little endian too (and therefore the little endian mixer flag is always set).
svn-id: r43576
Diffstat (limited to 'engines/sci')
-rw-r--r--engines/sci/sfx/core.cpp12
1 files changed, 4 insertions, 8 deletions
diff --git a/engines/sci/sfx/core.cpp b/engines/sci/sfx/core.cpp
index a1e2a0b0f8..c8cf773eae 100644
--- a/engines/sci/sfx/core.cpp
+++ b/engines/sci/sfx/core.cpp
@@ -1070,7 +1070,7 @@ static void deDPCM8Nibble(byte *soundBuf, int32 &s, byte b) {
else
s += tableDPCM8[b & 7];
s = CLIP<int32>(s, 0, 255);
- *soundBuf = s;
+ *soundBuf = TO_LE_16(s);
}
static void deDPCM8(byte *soundBuf, Common::SeekableReadStream &audioStream, uint32 n) {
@@ -1105,13 +1105,9 @@ static byte* readSOLAudio(Common::SeekableReadStream *audioStream, uint32 &size,
// Convert the SOL stream flags to our own format
flags = 0;
- if (audioFlags & kSolFlag16Bit) {
- flags |= Audio::Mixer::FLAG_16BITS;
-#ifdef SCUMM_LITTLE_ENDIAN
- flags |= Audio::Mixer::FLAG_LITTLE_ENDIAN;
-#endif
- }
-
+ if (audioFlags & kSolFlag16Bit)
+ flags |= Audio::Mixer::FLAG_16BITS | Audio::Mixer::FLAG_LITTLE_ENDIAN;
+
if (!(audioFlags & kSolFlagIsSigned))
flags |= Audio::Mixer::FLAG_UNSIGNED;