aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/vm.cpp
diff options
context:
space:
mode:
authorMartin Kiewitz2010-07-10 19:58:25 +0000
committerMartin Kiewitz2010-07-10 19:58:25 +0000
commit5c2489f1533067dcfe303496055e63e8c8d7c189 (patch)
tree943fbb3aa9627b6b39d8657b3fbd5044d5ab3a5e /engines/sci/engine/vm.cpp
parent8b112704b2e840c6b0f789d527c6bc79fcc9c7e9 (diff)
downloadscummvm-rg350-5c2489f1533067dcfe303496055e63e8c8d7c189.tar.gz
scummvm-rg350-5c2489f1533067dcfe303496055e63e8c8d7c189.tar.bz2
scummvm-rg350-5c2489f1533067dcfe303496055e63e8c8d7c189.zip
SCI: removing hoyle workaround from kAbs & signature and adding it into workaround table
svn-id: r50790
Diffstat (limited to 'engines/sci/engine/vm.cpp')
-rw-r--r--engines/sci/engine/vm.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp
index cbfaf5575f..4755db3922 100644
--- a/engines/sci/engine/vm.cpp
+++ b/engines/sci/engine/vm.cpp
@@ -796,6 +796,8 @@ static void callKernelFunc(EngineState *s, int kernelCallNr, int argc) {
error("[VM] k%s[%x]: signature mismatch via method %s::%s (script %d, localCall %x)", kernelCall.name, kernelCallNr, originReply.objectName.c_str(), originReply.methodName.c_str(), originReply.scriptNr, originReply.localCallOffset);
}
// FIXME: implement some real workaround type logic - ignore call, still do call etc.
+ if (workaround.segment == 2)
+ s->r_acc = make_reg(0, workaround.offset);
if (workaround.segment)
return;
}
@@ -838,6 +840,8 @@ static void callKernelFunc(EngineState *s, int kernelCallNr, int argc) {
error("[VM] k%s: signature mismatch via method %s::%s (script %d, localCall %x)", kernelSubCall.name, originReply.objectName.c_str(), originReply.methodName.c_str(), originReply.scriptNr, originReply.localCallOffset);
}
// FIXME: implement some real workaround type logic - ignore call, still do call etc.
+ if (workaround.segment == 2)
+ s->r_acc = make_reg(0, workaround.offset);
if (workaround.segment)
return;
}