aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine
diff options
context:
space:
mode:
authorMartin Kiewitz2010-07-22 14:43:19 +0000
committerMartin Kiewitz2010-07-22 14:43:19 +0000
commit6c41ca440509d2f965c71d8fcd0502b4d042d0a6 (patch)
treeed53a1f7602ebbe0067c50021bf661e7ded50006 /engines/sci/engine
parentc1ad4a1110e7f5a9b9e8e88015052cf51abda1a3 (diff)
downloadscummvm-rg350-6c41ca440509d2f965c71d8fcd0502b4d042d0a6.tar.gz
scummvm-rg350-6c41ca440509d2f965c71d8fcd0502b4d042d0a6.tar.bz2
scummvm-rg350-6c41ca440509d2f965c71d8fcd0502b4d042d0a6.zip
SCI: Adding workaround for sq4 room 411
kGraph(RestoreBox) is called with an additional parameter svn-id: r51145
Diffstat (limited to 'engines/sci/engine')
-rw-r--r--engines/sci/engine/kernel_tables.h2
-rw-r--r--engines/sci/engine/workarounds.cpp6
-rw-r--r--engines/sci/engine/workarounds.h1
3 files changed, 8 insertions, 1 deletions
diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h
index e4cb90b238..a73a7ef9cd 100644
--- a/engines/sci/engine/kernel_tables.h
+++ b/engines/sci/engine/kernel_tables.h
@@ -186,7 +186,7 @@ static const SciKernelMapSubEntry kGraph_subops[] = {
{ SIG_SCIALL, 11, MAP_CALL(GraphFillBoxAny), "iiiiii(i)(i)", kGraphFillBoxAny_workarounds },
{ SIG_SCI11, 12, MAP_CALL(GraphUpdateBox), "iiii(i)(r0)", NULL }, // kq6 hires
{ SIG_SCIALL, 12, MAP_CALL(GraphUpdateBox), "iiii(i)", NULL },
- { SIG_SCIALL, 13, MAP_CALL(GraphRedrawBox), "iiii", NULL },
+ { SIG_SCIALL, 13, MAP_CALL(GraphRedrawBox), "iiii", kGraphRedrawBox_workarounds },
{ SIG_SCIALL, 14, MAP_CALL(GraphAdjustPriority), "ii", NULL },
{ SIG_SCI11, 15, MAP_CALL(GraphSaveUpscaledHiresBox), "iiii", NULL }, // kq6 hires
SCI_SUBOPENTRY_TERMINATOR
diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp
index f2b499fc7a..fcad97f7b9 100644
--- a/engines/sci/engine/workarounds.cpp
+++ b/engines/sci/engine/workarounds.cpp
@@ -140,6 +140,12 @@ const SciWorkaroundEntry kGraphFillBoxAny_workarounds[] = {
};
// gameID, room,script,lvl, object-name, method-name, call,index, workaround
+const SciWorkaroundEntry kGraphRedrawBox_workarounds[] = {
+ { GID_SQ4, 411, 411, 0, "swimAndShoot", "changeState", -1, 0, { WORKAROUND_STILLCALL, 0 } }, // skateOrama when "swimming" in the air - accidental additional parameter specified
+ SCI_WORKAROUNDENTRY_TERMINATOR
+};
+
+// gameID, room,script,lvl, object-name, method-name, call,index, workaround
const SciWorkaroundEntry kSetPort_workarounds[] = {
{ GID_LSL6, 740, 740, 0, "rm740", "drawPic", -1, 0, { WORKAROUND_IGNORE, 0 } }, // ending scene, is called with additional 3 (!) parameters
SCI_WORKAROUNDENTRY_TERMINATOR
diff --git a/engines/sci/engine/workarounds.h b/engines/sci/engine/workarounds.h
index 93ffc30e2b..f480fc5f05 100644
--- a/engines/sci/engine/workarounds.h
+++ b/engines/sci/engine/workarounds.h
@@ -71,6 +71,7 @@ extern const SciWorkaroundEntry kGraphDrawLine_workarounds[];
extern const SciWorkaroundEntry kGraphRestoreBox_workarounds[];
extern const SciWorkaroundEntry kGraphFillBoxForeground_workarounds[];
extern const SciWorkaroundEntry kGraphFillBoxAny_workarounds[];
+extern const SciWorkaroundEntry kGraphRedrawBox_workarounds[];
extern const SciWorkaroundEntry kSetPort_workarounds[];
extern const SciWorkaroundEntry kUnLoad_workarounds[];
extern const SciWorkaroundEntry kStrCpy_workarounds[];