diff --git a/scumm/sound.cpp b/scumm/sound.cpp index 91f929909fd..d40ff40c426 100644 --- a/scumm/sound.cpp +++ b/scumm/sound.cpp @@ -350,6 +350,8 @@ void Sound::playSound(int soundID) { int waveSize = READ_LE_UINT32(ptr + 0x0C); int loopStart = READ_LE_UINT32(ptr + 0x10); int loopEnd = READ_LE_UINT32(ptr + 0x14); + if (loopEnd < waveSize && loopEnd > 0) + waveSize = loopEnd; // it's not exactly * 10, maybe it's not even linear, but * 10 sounds ok. rate = READ_LE_UINT32(ptr + 0x18) * 10;