diff options
author | Martin Kiewitz | 2010-06-30 11:05:29 +0000 |
---|---|---|
committer | Martin Kiewitz | 2010-06-30 11:05:29 +0000 |
commit | cf5c60ed4f0628496ad97db3c274b7f0325e2440 (patch) | |
tree | b6892ce21691c445fe7589b1abbe5804255b5ff0 /engines/sci/engine/kernel.cpp | |
parent | dcba035912fb876f1db8da998405a659b9c87d04 (diff) | |
download | scummvm-rg350-cf5c60ed4f0628496ad97db3c274b7f0325e2440.tar.gz scummvm-rg350-cf5c60ed4f0628496ad97db3c274b7f0325e2440.tar.bz2 scummvm-rg350-cf5c60ed4f0628496ad97db3c274b7f0325e2440.zip |
SCI: changing signature of kUnLoad, adding workaround for sq1 ulence flats bug
svn-id: r50527
Diffstat (limited to 'engines/sci/engine/kernel.cpp')
-rw-r--r-- | engines/sci/engine/kernel.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp index 2eeefe83d9..29b6a9bf9e 100644 --- a/engines/sci/engine/kernel.cpp +++ b/engines/sci/engine/kernel.cpp @@ -207,6 +207,12 @@ static const char *s_defaultKernelNames[] = { // .* -> any parameters afterwards (or none) // gameID, scriptNr,lvl, object-name, method-name, call,index,replace +static const SciWorkaroundEntry kUnLoad_workarounds[] = { + { GID_SQ1, 998, 0, "View", "delete", -1, 0, { 1, 0 } }, // exiting ulence flats bar - slotGuyBody::dispose calls view::delete resulting in parameter 1 to be a reference + SCI_WORKAROUNDENTRY_TERMINATOR +}; + +// gameID, scriptNr,lvl, object-name, method-name, call,index,replace static const SciWorkaroundEntry kDisposeScript_workarounds[] = { { GID_QFG1, 64, 0, "rm64", "dispose", -1, 0, { 1, 0 } }, // parameter 0 is an object when leaving graveyard SCI_WORKAROUNDENTRY_TERMINATOR @@ -246,11 +252,9 @@ struct SciKernelMapEntry { // name, version/platform, signature, sub-signatures, workarounds static SciKernelMapEntry s_kernelMap[] = { { MAP_CALL(Load), SIG_EVERYWHERE, "iii*", NULL, NULL }, - { MAP_CALL(UnLoad), SIG_EVERYWHERE, "i.*", NULL, NULL }, - // ^^ FIXME - Work around SQ1 bug, when exiting the Ulence flats bar + { MAP_CALL(UnLoad), SIG_EVERYWHERE, "ii*", NULL, kUnLoad_workarounds }, { MAP_CALL(ScriptID), SIG_EVERYWHERE, "Ioi*", NULL, NULL }, { MAP_CALL(DisposeScript), SIG_EVERYWHERE, "ii*", NULL, kDisposeScript_workarounds }, - // ^^ FIXME - Work around QfG1 bug { MAP_CALL(Clone), SIG_EVERYWHERE, "o", NULL, NULL }, { MAP_CALL(DisposeClone), SIG_EVERYWHERE, "o", NULL, NULL }, { MAP_CALL(IsObject), SIG_EVERYWHERE, ".", NULL, NULL }, |