aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine
diff options
context:
space:
mode:
authorMartin Kiewitz2010-07-26 15:40:12 +0000
committerMartin Kiewitz2010-07-26 15:40:12 +0000
commitfaf0d5c2e31bb015ec9c6c8a5a68d761ad39e549 (patch)
treec308b4c3034f172e3e97461451fc548c07b96c1f /engines/sci/engine
parent31828d093c2974f600e201d3b1915565eaa1e9bf (diff)
downloadscummvm-rg350-faf0d5c2e31bb015ec9c6c8a5a68d761ad39e549.tar.gz
scummvm-rg350-faf0d5c2e31bb015ec9c6c8a5a68d761ad39e549.tar.bz2
scummvm-rg350-faf0d5c2e31bb015ec9c6c8a5a68d761ad39e549.zip
SCI: adding workaround for island of dr. brain
room 290 elevator puzzle, solves bug #3034485 svn-id: r51319
Diffstat (limited to 'engines/sci/engine')
-rw-r--r--engines/sci/engine/kgraphics.cpp2
-rw-r--r--engines/sci/engine/workarounds.cpp2
2 files changed, 3 insertions, 1 deletions
diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp
index dae2197533..e991070ee7 100644
--- a/engines/sci/engine/kgraphics.cpp
+++ b/engines/sci/engine/kgraphics.cpp
@@ -260,7 +260,7 @@ reg_t kGraphDrawLine(EngineState *s, int argc, reg_t *argv) {
reg_t kGraphSaveBox(EngineState *s, int argc, reg_t *argv) {
Common::Rect rect = getGraphRect(argv);
- uint16 screenMask = (argc > 4) ? argv[4].toUint16() : 0;
+ uint16 screenMask = argv[4].toUint16() & GFX_SCREEN_MASK_ALL;
return g_sci->_gfxPaint16->kernelGraphSaveBox(rect, screenMask);
}
diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp
index 8bf6e4813c..ce706d17e5 100644
--- a/engines/sci/engine/workarounds.cpp
+++ b/engines/sci/engine/workarounds.cpp
@@ -149,6 +149,8 @@ const SciWorkaroundEntry kGraphDrawLine_workarounds[] = {
// gameID, room,script,lvl, object-name, method-name, call,index, workaround
const SciWorkaroundEntry kGraphSaveBox_workarounds[] = {
{ GID_CASTLEBRAIN, 420, 427, 0, "alienIcon", "select", -1, 0, { WORKAROUND_STILLCALL, 0 } }, // when selecting a card during the alien card game, gets called with 1 extra parameter
+ { GID_ISLANDBRAIN, 290, 291, 0, "downElevator", "changeState",0x201f, 0, { WORKAROUND_STILLCALL, 0 } }, // when testing in the elevator puzzle, gets called with 1 argument less - 15 is on stack
+ { GID_ISLANDBRAIN, 290, 291, 0, "correctElevator", "changeState",0x201f, 0, { WORKAROUND_STILLCALL, 0 } }, // see above
SCI_WORKAROUNDENTRY_TERMINATOR
};