From d98b1472ca6b9f753116bb365bb471ec29938d0b Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Thu, 17 Sep 2009 16:01:21 +0000 Subject: Add workaround in "o2_isAnySoundPlaying", which will hopefully make Kyra2 work on the Nintendo DS. svn-id: r44163 --- engines/kyra/script_hof.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'engines/kyra') 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; } -- cgit v1.2.3