diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/kyra/script_hof.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/engines/kyra/script_hof.cpp b/engines/kyra/script_hof.cpp index a811952801..c1917bc1d3 100644 --- a/engines/kyra/script_hof.cpp +++ b/engines/kyra/script_hof.cpp @@ -727,6 +727,20 @@ int KyraEngine_HoF::o2_showItemString(EMCState *script) { int KyraEngine_HoF::o2_isAnySoundPlaying(EMCState *script) { debugC(3, kDebugLevelScriptFuncs, "KyraEngine_HoF::o2_isAnySoundPlaying(%p) ()", (const void *)script); + + // WORKAROUND + // + // The input script function in the skull scene does busy wait + // for the sound effect, which is played after completing the + // song, to finish. To avoid too much CPU use, we add some slight + // delay here. + // + // Also the Ninteno DS backend seems only to update the sound, when + // either OSystem::updateScreen or OSystem::delayMillis is called. + // So we have to call delay here, since otherwise the game would hang. + if (_currentScene == 16 && _currentChapter == 1) + delay(_tickLength); + return _sound->voiceIsPlaying() ? 1 : 0; } |