diff options
author | Travis Howell | 2005-04-09 07:25:41 +0000 |
---|---|---|
committer | Travis Howell | 2005-04-09 07:25:41 +0000 |
commit | 4f085516437369eccf22c96d84362f4d39c1448b (patch) | |
tree | 2c6c6495bb796d00b3505f16540587e10cac9e87 /scumm | |
parent | 73d1d63f1502a94eb27fc3186b8e012e342de87d (diff) | |
download | scummvm-rg350-4f085516437369eccf22c96d84362f4d39c1448b.tar.gz scummvm-rg350-4f085516437369eccf22c96d84362f4d39c1448b.tar.bz2 scummvm-rg350-4f085516437369eccf22c96d84362f4d39c1448b.zip |
Add comment to TODO
Check that string pointer exists, before reading data.
Don't attempt to play speech in soccer2004, since it uses compression.
svn-id: r17470
Diffstat (limited to 'scumm')
-rw-r--r-- | scumm/script_v72he.cpp | 6 | ||||
-rw-r--r-- | scumm/sound.cpp | 10 |
2 files changed, 12 insertions, 4 deletions
diff --git a/scumm/script_v72he.cpp b/scumm/script_v72he.cpp index c6feadd0c9..9b3b014080 100644 --- a/scumm/script_v72he.cpp +++ b/scumm/script_v72he.cpp @@ -572,8 +572,10 @@ void ScummEngine_v72he::decodeScriptString(byte *dst, bool scriptString) { break; case 's': src = getStringAddress(args[val--]); - while (*src != 0) - *dst++ = *src++; + if (src) { + while (*src != 0) + *dst++ = *src++; + } break; case 'x': dst += sprintf((char *)dst, "%x", args[val--]); diff --git a/scumm/sound.cpp b/scumm/sound.cpp index 2c945e2de8..60d183bf47 100644 --- a/scumm/sound.cpp +++ b/scumm/sound.cpp @@ -682,8 +682,14 @@ void Sound::startTalkSound(uint32 offset, uint32 b, int mode, SoundHandle *handl if (_vm->_features & GF_HUMONGOUS) { _sfxMode |= mode; - // Skip the TALK (8) and HSHD (24) chunks - _sfxFile->seek(offset + 32, SEEK_SET); + _sfxFile->seek(offset, SEEK_SET); + if (_sfxFile->readUint32LE() == TO_LE_32(MKID('WSOU'))) { + debug(1, "IMA ADPCM compression not supported"); + return; + } else { + // Skip the TALK (8) and HSHD (24) chunks + _sfxFile->seek(28, SEEK_CUR); + } if (_sfxFile->readUint32LE() == TO_LE_32(MKID('SBNG'))) { // Skip the SBNG, so we end up at the SDAT chunk |