SCI: Fix bug #3605269 - "SCI: KQ5 Windows CD - Game Hangs Before Final Battle"
This is caused because songs 1840, 1843 and 1849 are all missing their special SCI signaling channel (channel 15), so the game scripts wait indefinitely for signals which are never set
This commit is contained in:
parent
f81ce4d228
commit
2e93ee2b83
1 changed files with 12 additions and 0 deletions
|
@ -177,6 +177,18 @@ void SoundCommandParser::processPlaySound(reg_t obj) {
|
||||||
writeSelectorValue(_segMan, obj, SELECTOR(state), kSoundPlaying);
|
writeSelectorValue(_segMan, obj, SELECTOR(state), kSoundPlaying);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WORKAROUND: Songs 1840, 1843 and 1849 in the Windows version of KQ5CD
|
||||||
|
// are all missing their channel 15 (all played during its ending
|
||||||
|
// sequences, when fighting with Mordack). This makes the game scripts
|
||||||
|
// wait indefinitely for the missing signals in these songs. In the
|
||||||
|
// original interpreter, this bug manifests as an "Out of heap" error. We
|
||||||
|
// signal the game scripts to stop waiting forever by setting the song's
|
||||||
|
// dataInc selector to something other than 0. This causes Mordack's
|
||||||
|
// appearing animation to occur a bit earlier than expected, but at least
|
||||||
|
// the game doesn't freeze at that point. Fixes bug #3605269.
|
||||||
|
if (g_sci->getGameId() == GID_KQ5 && (resourceId == 1840 || resourceId == 1843 || resourceId == 1849))
|
||||||
|
writeSelectorValue(_segMan, obj, SELECTOR(dataInc), 1);
|
||||||
|
|
||||||
musicSlot->loop = readSelectorValue(_segMan, obj, SELECTOR(loop));
|
musicSlot->loop = readSelectorValue(_segMan, obj, SELECTOR(loop));
|
||||||
musicSlot->priority = readSelectorValue(_segMan, obj, SELECTOR(priority));
|
musicSlot->priority = readSelectorValue(_segMan, obj, SELECTOR(priority));
|
||||||
// Reset hold when starting a new song. kDoSoundSetHold is always called after
|
// Reset hold when starting a new song. kDoSoundSetHold is always called after
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue