aboutsummaryrefslogtreecommitdiff
path: root/engines/sci
diff options
context:
space:
mode:
authorFilippos Karapetis2010-11-18 22:46:29 +0000
committerFilippos Karapetis2010-11-18 22:46:29 +0000
commit34272e2529faf823097280706f699e966290870c (patch)
treece70f8f978995ecd336aa4033c79b994923f18c6 /engines/sci
parent4609f1113796fc5ae8f3b9177d1568b414a71971 (diff)
downloadscummvm-rg350-34272e2529faf823097280706f699e966290870c.tar.gz
scummvm-rg350-34272e2529faf823097280706f699e966290870c.tar.bz2
scummvm-rg350-34272e2529faf823097280706f699e966290870c.zip
SCI: Added a stub for a new subop in kString, and disabled trackOriginAndFindWorkaround() for SCI3 games for now
svn-id: r54352
Diffstat (limited to 'engines/sci')
-rw-r--r--engines/sci/engine/kstring.cpp3
-rw-r--r--engines/sci/engine/workarounds.cpp9
2 files changed, 12 insertions, 0 deletions
diff --git a/engines/sci/engine/kstring.cpp b/engines/sci/engine/kstring.cpp
index 5ea3178ae5..276f121edf 100644
--- a/engines/sci/engine/kstring.cpp
+++ b/engines/sci/engine/kstring.cpp
@@ -780,6 +780,9 @@ reg_t kString(EngineState *s, int argc, reg_t *argv) {
Common::String string = s->_segMan->getString(argv[1]);
return make_reg(0, (uint16)atoi(string.c_str()));
}
+ case 14: // Unknown (SCI3)
+ warning("Unknown kString subop %d", argv[0].toUint16());
+ return NULL_REG;
default:
error("Unknown kString subop %d", argv[0].toUint16());
}
diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp
index ace9f6d9ac..bed057979e 100644
--- a/engines/sci/engine/workarounds.cpp
+++ b/engines/sci/engine/workarounds.cpp
@@ -437,6 +437,15 @@ const SciWorkaroundEntry kUnLoad_workarounds[] = {
};
SciWorkaroundSolution trackOriginAndFindWorkaround(int index, const SciWorkaroundEntry *workaroundList, SciTrackOriginReply *trackOrigin) {
+ // HACK for SCI3: Temporarily ignore this
+ if (getSciVersion() == SCI_VERSION_3) {
+ warning("SCI3 HACK: trackOriginAndFindWorkaround() called, ignoring");
+ SciWorkaroundSolution sci3IgnoreForNow;
+ sci3IgnoreForNow.type = WORKAROUND_FAKE;
+ sci3IgnoreForNow.value = 0;
+ return sci3IgnoreForNow;
+ }
+
EngineState *state = g_sci->getEngineState();
ExecStack *lastCall = state->xs;
Script *local_script = state->_segMan->getScriptIfLoaded(lastCall->local_segment);