aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schickel2006-01-11 13:28:38 +0000
committerJohannes Schickel2006-01-11 13:28:38 +0000
commite179f3f6ed35864517cf4cb5e99e6b8002bf1d5d (patch)
tree4d704f8c9d7b141885c06e9e736884b6ebcea352
parent67d1cc0cf957d22cb5c6f8b2bf8de4ac02e25f67 (diff)
downloadscummvm-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.cpp8
-rw-r--r--kyra/script_v1.cpp15
-rw-r--r--kyra/staticres.cpp1
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