aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Haisch2008-05-12 09:49:10 +0000
committerBenjamin Haisch2008-05-12 09:49:10 +0000
commit9e39e7d7a2c62e175240a5a55017ee9c206d2cf0 (patch)
treea1c37bfc339fe06e3399d90805d21bf16e2a3951
parent27b9887a30a035829a03f40800c5460e004c9d17 (diff)
downloadscummvm-rg350-9e39e7d7a2c62e175240a5a55017ee9c206d2cf0.tar.gz
scummvm-rg350-9e39e7d7a2c62e175240a5a55017ee9c206d2cf0.tar.bz2
scummvm-rg350-9e39e7d7a2c62e175240a5a55017ee9c206d2cf0.zip
- Fixed timers, LGOP2 intro should now play correctly
- Some cleanup in LGOP2 opcodes svn-id: r32051
-rw-r--r--engines/made/made.cpp16
-rw-r--r--engines/made/scriptfuncs_lgop2.cpp9
2 files changed, 17 insertions, 8 deletions
diff --git a/engines/made/made.cpp b/engines/made/made.cpp
index 0cf73d5dd0..ccb4ad5e8d 100644
--- a/engines/made/made.cpp
+++ b/engines/made/made.cpp
@@ -134,21 +134,26 @@ int MadeEngine::init() {
}
int16 MadeEngine::getTimer(int16 timerNum) {
- return (_system->getMillis() - _timers[timerNum]) / 60;
+ if (timerNum > 0 && timerNum <= ARRAYSIZE(_timers) && _timers[timerNum - 1] != -1)
+ return (_system->getMillis() - _timers[timerNum - 1]) / 60;
+ else
+ return 32000;
}
void MadeEngine::setTimer(int16 timerNum, int16 value) {
- _timers[timerNum] = value * 60;
+ if (timerNum > 0 && timerNum <= ARRAYSIZE(_timers))
+ _timers[timerNum - 1] = value * 60;
}
void MadeEngine::resetTimer(int16 timerNum) {
- _timers[timerNum] = _system->getMillis();
+ if (timerNum > 0 && timerNum <= ARRAYSIZE(_timers))
+ _timers[timerNum - 1] = _system->getMillis();
}
int16 MadeEngine::allocTimer() {
for (int i = 0; i < ARRAYSIZE(_timers); i++) {
if (_timers[i] == -1) {
- resetTimer(i);
+ _timers[i] = _system->getMillis();
return i + 1;
}
}
@@ -156,7 +161,8 @@ int16 MadeEngine::allocTimer() {
}
void MadeEngine::freeTimer(int16 timerNum) {
- _timers[timerNum] = -1;
+ if (timerNum > 0 && timerNum <= ARRAYSIZE(_timers))
+ _timers[timerNum - 1] = -1;
}
Common::String MadeEngine::getSavegameFilename(int16 saveNum) {
diff --git a/engines/made/scriptfuncs_lgop2.cpp b/engines/made/scriptfuncs_lgop2.cpp
index 70f265a17d..ef3c2dffc4 100644
--- a/engines/made/scriptfuncs_lgop2.cpp
+++ b/engines/made/scriptfuncs_lgop2.cpp
@@ -129,6 +129,7 @@ int16 ScriptFunctionsLgop2::o1_CLS(int16 argc, int16 *argv) {
}
int16 ScriptFunctionsLgop2::o1_SHOWPAGE(int16 argc, int16 *argv) {
+ _vm->_mixer->stopHandle(_audioStreamHandle);
_vm->_screen->show();
return 0;
}
@@ -322,7 +323,8 @@ int16 ScriptFunctionsLgop2::o1_FREEANIM(int16 argc, int16 *argv) {
}
int16 ScriptFunctionsLgop2::o1_DRAWSPRITE(int16 argc, int16 *argv) {
- return _vm->_screen->drawSprite(argv[2], argv[1], argv[0]);
+ _vm->_screen->drawSprite(argv[2], argv[1], argv[0]);
+ return 0;
}
int16 ScriptFunctionsLgop2::o1_ERASESPRITES(int16 argc, int16 *argv) {
@@ -350,8 +352,7 @@ int16 ScriptFunctionsLgop2::o1_RESETTIMER(int16 argc, int16 *argv) {
}
int16 ScriptFunctionsLgop2::o1_ALLOCTIMER(int16 argc, int16 *argv) {
- int16 timerNum = _vm->allocTimer();
- return timerNum;
+ return _vm->allocTimer();
}
int16 ScriptFunctionsLgop2::o1_FREETIMER(int16 argc, int16 *argv) {
@@ -439,6 +440,8 @@ int16 ScriptFunctionsLgop2::o1_RESTEXT(int16 argc, int16 *argv) {
int16 ScriptFunctionsLgop2::o1_ADDMASK(int16 argc, int16 *argv) {
warning("Unimplemented opcode: o1_ADDMASK");
+ //PictureResource *flex = _vm->_res->getPicture(flexIndex);
+ //Graphics::Surface *sourceSurface = flex->getPicture();
return 0;
}