From a441dafae55bcd02d74f16c35ff19db3f84c958c Mon Sep 17 00:00:00 2001 From: Travis Howell Date: Sun, 19 Mar 2006 04:55:34 +0000 Subject: Move the sound loop detection, so it is used by all HE70+ games svn-id: r21374 --- engines/scumm/he/sound_he.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'engines/scumm') diff --git a/engines/scumm/he/sound_he.cpp b/engines/scumm/he/sound_he.cpp index 5f162defb0..873e6ef77e 100644 --- a/engines/scumm/he/sound_he.cpp +++ b/engines/scumm/he/sound_he.cpp @@ -370,11 +370,11 @@ void Sound::playHESound(int soundID, int heOffset, int heChannel, int heFlags) { strcpy(buf, buf1); } if (musicFile.open(buf) == false) { - warning("playSound: Can't open music file %s", buf); + warning("playHESound: Can't open music file %s", buf); return; } if (!getHEMusicDetails(soundID, music_offs, size)) { - debug(0, "playSound: musicID %d not found", soundID); + debug(0, "playHESound: musicID %d not found", soundID); return; } @@ -402,11 +402,6 @@ void Sound::playHESound(int soundID, int heOffset, int heChannel, int heFlags) { return; } - // TODO: Extra sound flags - if (heFlags & 1) { - flags |= Audio::Mixer::FLAG_LOOP; - } - // Support for sound in later Backyard sports games if (READ_BE_UINT32(ptr) == MKID_BE('RIFF') || READ_BE_UINT32(ptr) == MKID_BE('WSOU')) { uint16 compType; @@ -420,7 +415,7 @@ void Sound::playHESound(int soundID, int heOffset, int heChannel, int heFlags) { Common::MemoryReadStream stream(ptr, size); if (!loadWAVFromStream(stream, size, rate, flags, &compType, &blockAlign)) { - error("playSound: Not a valid WAV file"); + error("playHESound: Not a valid WAV file (%d)", soundID); } if (compType == 17) { @@ -435,6 +430,12 @@ void Sound::playHESound(int soundID, int heOffset, int heChannel, int heFlags) { sound = (char *)malloc(size); memcpy(sound, ptr + stream.pos(), size); } + + // TODO: Extra sound flags + if (heFlags & 1) { + flags |= Audio::Mixer::FLAG_LOOP; + } + _vm->_mixer->stopHandle(_heSoundChannels[heChannel]); _vm->_mixer->playRaw(&_heSoundChannels[heChannel], sound, size, rate, flags, soundID, 255, 0, 0,0, type); } @@ -466,7 +467,6 @@ void Sound::playHESound(int soundID, int heOffset, int heChannel, int heFlags) { size = READ_BE_UINT32(ptr + 4) - 8; if (heOffset < 0 || heOffset > size) { // Occurs when making fireworks in puttmoon - debug(0, "playSound: Invalid sound offset (offset %d, size %d) in sound %d", heOffset, size, soundID); heOffset = 0; } size -= heOffset; @@ -477,6 +477,11 @@ void Sound::playHESound(int soundID, int heOffset, int heChannel, int heFlags) { _overrideFreq = 0; } + // TODO: Extra sound flags + if (heFlags & 1) { + flags |= Audio::Mixer::FLAG_LOOP; + } + _vm->_mixer->stopHandle(_heSoundChannels[heChannel]); _vm->_mixer->playRaw(&_heSoundChannels[heChannel], ptr + heOffset + 8, size, rate, flags, soundID, 255, 0, 0,0, type); -- cgit v1.2.3