aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/kernel.h
diff options
context:
space:
mode:
authorMartin Kiewitz2010-06-30 09:47:04 +0000
committerMartin Kiewitz2010-06-30 09:47:04 +0000
commit7595e7c1bec5e56e9ddaabea4b6af43423e8e002 (patch)
treeeadfae6df959f0fcd3a4ff076a51e1f266a77d4a /engines/sci/engine/kernel.h
parentc7f6a5b286bad600c987922396b7328079890342 (diff)
downloadscummvm-rg350-7595e7c1bec5e56e9ddaabea4b6af43423e8e002.tar.gz
scummvm-rg350-7595e7c1bec5e56e9ddaabea4b6af43423e8e002.tar.bz2
scummvm-rg350-7595e7c1bec5e56e9ddaabea4b6af43423e8e002.zip
SCI: implementing workarounds for kernel calls, removing original code workaround for kDisposeScript / qfg1 room 64 and adding it to workaround table
svn-id: r50520
Diffstat (limited to 'engines/sci/engine/kernel.h')
-rw-r--r--engines/sci/engine/kernel.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/engines/sci/engine/kernel.h b/engines/sci/engine/kernel.h
index 6f7b0d569d..b7cd9058e5 100644
--- a/engines/sci/engine/kernel.h
+++ b/engines/sci/engine/kernel.h
@@ -115,11 +115,25 @@ enum {
/* Generic description: */
typedef reg_t KernelFunc(EngineState *s, int argc, reg_t *argv);
+struct SciWorkaroundEntry {
+ SciGameId gameId;
+ int scriptNr;
+ int16 inheritanceLevel;
+ const char *objectName;
+ const char *methodName;
+ int localCallOffset;
+ int index;
+ reg_t newValue;
+};
+
+#define SCI_WORKAROUNDENTRY_TERMINATOR { (SciGameId)0, -1, 0, NULL, NULL, -1, 0, { 0, 0 } }
+
struct KernelFuncWithSignature {
KernelFunc *func; /**< The actual function */
- char *signature; /**< KernelFunc signature */
Common::String origName; /**< Original name, in case we couldn't map it */
bool isDummy;
+ char *signature;
+ const SciWorkaroundEntry *workarounds;
};
enum AutoDetectedFeatures {