From a34fb64f09691ed631867f72f313b1d7dcae3bde Mon Sep 17 00:00:00 2001 From: Travis Howell Date: Wed, 3 Jun 2009 00:55:36 +0000 Subject: Correct sound timer and disable sound offsets, in later HE games. svn-id: r41132 --- engines/scumm/he/sound_he.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'engines/scumm/he') diff --git a/engines/scumm/he/sound_he.cpp b/engines/scumm/he/sound_he.cpp index 10c0b0153e..c5a8988edb 100644 --- a/engines/scumm/he/sound_he.cpp +++ b/engines/scumm/he/sound_he.cpp @@ -619,6 +619,9 @@ void SoundHE::playHESound(int soundID, int heOffset, int heChannel, int heFlags) assert(heOffset >= 0 && heOffset < size); + // FIXME: Disabled sound offsets, due to asserts been triggered + heOffset = 0; + _vm->setHETimer(heChannel + 4); _heChannel[heChannel].sound = soundID; _heChannel[heChannel].priority = priority; @@ -638,14 +641,14 @@ void SoundHE::playHESound(int soundID, int heOffset, int heChannel, int heFlags) if (compType == 17) { Audio::AudioStream *voxStream = Audio::makeADPCMStream(&stream, false, size, Audio::kADPCMMSIma, rate, (flags & Audio::Mixer::FLAG_STEREO) ? 2 : 1, blockAlign); - if (_heChannel[heChannel].timer) - _heChannel[heChannel].timer = size * 1000 / rate; - sound = (char *)malloc(size * 4); size = voxStream->readBuffer((int16*)sound, size * 2); size *= 2; // 16bits. delete voxStream; + if (_heChannel[heChannel].timer) + _heChannel[heChannel].timer = size * 1000 / rate; + flags |= Audio::Mixer::FLAG_AUTOFREE; _mixer->playRaw(type, &_heSoundChannels[heChannel], sound + heOffset, size - heOffset, rate, flags, soundID); } else { -- cgit v1.2.3