diff options
-rw-r--r-- | scumm/sound.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/scumm/sound.cpp b/scumm/sound.cpp index f339aaf879..ae98ac74f7 100644 --- a/scumm/sound.cpp +++ b/scumm/sound.cpp @@ -645,12 +645,22 @@ void Sound::startTalkSound(uint32 offset, uint32 b, int mode, PlayingSoundHandle } if (_vm->_features & GF_HUMONGOUS) { + int extra = 0;; _sfxMode |= mode; - // SKIP TALK (8) HSHD (22) and SDAT (8) - _sfxFile->seek(offset + 40, SEEK_SET); + // SKIP TALK (8) HSHD (24) + _sfxFile->seek(offset + 32, SEEK_SET); + if (_vm->_heversion >= 80) { + // SKIP SBNG + _sfxFile->seek(+4, SEEK_CUR); + extra = _sfxFile->readUint32BE(); + _sfxFile->seek(+extra, SEEK_CUR); + extra += 8; + } + // SKIP SDAT (8) + _sfxFile->seek(+8, SEEK_CUR); - size = b - 40; + size = b - 40 - extra; sound = (byte *)malloc(size); _sfxFile->read(sound, size); _vm->_mixer->playRaw(handle, sound, size, 11000, SoundMixer::FLAG_UNSIGNED | SoundMixer::FLAG_AUTOFREE); |