diff options
author | Johannes Schickel | 2006-01-11 13:28:38 +0000 |
---|---|---|
committer | Johannes Schickel | 2006-01-11 13:28:38 +0000 |
commit | e179f3f6ed35864517cf4cb5e99e6b8002bf1d5d (patch) | |
tree | 4d704f8c9d7b141885c06e9e736884b6ebcea352 | |
parent | 67d1cc0cf957d22cb5c6f8b2bf8de4ac02e25f67 (diff) | |
download | scummvm-rg350-e179f3f6ed35864517cf4cb5e99e6b8002bf1d5d.tar.gz scummvm-rg350-e179f3f6ed35864517cf4cb5e99e6b8002bf1d5d.tar.bz2 scummvm-rg350-e179f3f6ed35864517cf4cb5e99e6b8002bf1d5d.zip |
Fixed for bug report # 1401360.
Also added some delay calls while waiting in some script functions.
svn-id: r19982
-rw-r--r-- | kyra/screen.cpp | 8 | ||||
-rw-r--r-- | kyra/script_v1.cpp | 15 | ||||
-rw-r--r-- | kyra/staticres.cpp | 1 |
3 files changed, 16 insertions, 8 deletions
diff --git a/kyra/screen.cpp b/kyra/screen.cpp index f4071c880b..c9d6a08687 100644 --- a/kyra/screen.cpp +++ b/kyra/screen.cpp @@ -155,7 +155,7 @@ void Screen::fadeSpecialPalette(int palIndex, int startIndex, int size, int fade uint8 tempPal[768]; memcpy(tempPal, _currentPalette, 768); memcpy(&tempPal[startIndex*3], _vm->palTable1()[palIndex], size*3); - fadePalette(tempPal, fadeTime*9); + fadePalette(tempPal, fadeTime*18); memcpy(&_currentPalette[startIndex*3], &tempPal[startIndex*3], size*3); setScreenPalette(_currentPalette); _system->updateScreen(); @@ -172,11 +172,11 @@ void Screen::fadePalette(const uint8 *palData, int delay) { maxDiff = diff; } } - delay <<= 8; + int16 delayInc = delay << 8; if (maxDiff != 0) { - delay /= maxDiff; + delayInc /= maxDiff; } - int delayInc = delay; + delay = delayInc; for (diff = 1; diff <= maxDiff; ++diff) { if (delayInc >= 512) { break; diff --git a/kyra/script_v1.cpp b/kyra/script_v1.cpp index fc019fce39..206af7a3a5 100644 --- a/kyra/script_v1.cpp +++ b/kyra/script_v1.cpp @@ -250,6 +250,7 @@ int KyraEngine::cmd_runSceneAnimUntilDone(ScriptState *script) { while (_sprites->_anims[stackPos(0)].play) { _sprites->updateSceneAnims(); _animator->updateAllObjectShapes(); + delay(10); } _animator->restoreAllObjectBackgrounds(); _screen->showMouse(); @@ -463,7 +464,8 @@ int KyraEngine::cmd_runWSAFromBeginningToEnd(ScriptState *script) { } else { _screen->updateScreen(); } - delay(10); + if (continueTime - _system->getMillis() >= 10) + delay(10); } } @@ -489,7 +491,8 @@ int KyraEngine::cmd_displayWSAFrame(ScriptState *script) { while (_system->getMillis() < continueTime) { _sprites->updateSceneAnims(); _animator->updateAllObjectShapes(); - delay(10); + if (continueTime - _system->getMillis() >= 10) + delay(10); } _screen->showMouse(); return 0; @@ -529,7 +532,8 @@ int KyraEngine::cmd_runWSAFrames(ScriptState *script) { while (_system->getMillis() < nextRun) { _sprites->updateSceneAnims(); _animator->updateAllObjectShapes(); - delay(10); + if (nextRun - _system->getMillis() >= 10) + delay(10); } } _screen->showMouse(); @@ -716,7 +720,8 @@ int KyraEngine::cmd_displayWSAFrameOnHidPage(ScriptState *script) { while (_system->getMillis() < continueTime) { _sprites->updateSceneAnims(); _animator->updateAllObjectShapes(); - delay(10); + if (continueTime - _system->getMillis() >= 10) + delay(10); } _screen->showMouse(); @@ -1254,6 +1259,8 @@ int KyraEngine::cmd_makeAmuletAppear(ScriptState *script) { while (_system->getMillis() < nextTime) { _sprites->updateSceneAnims(); _animator->updateAllObjectShapes(); + if (nextTime - _system->getMillis() >= 10) + delay(10); } } _screen->showMouse(); diff --git a/kyra/staticres.cpp b/kyra/staticres.cpp index acfc6be4f1..b3d6d33d43 100644 --- a/kyra/staticres.cpp +++ b/kyra/staticres.cpp @@ -667,6 +667,7 @@ KyraEngine::OpcodeProc KyraEngine::_opcodeTable[] = { Opcode(cmd_fillRect), Opcode(cmd_dummy), Opcode(cmd_dummy), + Opcode(cmd_dummy), Opcode(cmd_dummy) }; #undef Opcode |