aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2010-07-22 09:36:04 +0000
committerMax Horn2010-07-22 09:36:04 +0000
commit66115d697e78c3ff3d9e253c49174e46f50bd62d (patch)
treef6bd79ee8498ae431d78476828d5079edbf7eaf0
parent87e4823c752ce617668a0ad87f810ef274b67ef6 (diff)
downloadscummvm-rg350-66115d697e78c3ff3d9e253c49174e46f50bd62d.tar.gz
scummvm-rg350-66115d697e78c3ff3d9e253c49174e46f50bd62d.tar.bz2
scummvm-rg350-66115d697e78c3ff3d9e253c49174e46f50bd62d.zip
SCI: Remove '#define FAKE', make SCI_WORKAROUNDENTRY_TERMINATOR 'private'
svn-id: r51133
-rw-r--r--engines/sci/engine/workarounds.cpp90
-rw-r--r--engines/sci/engine/workarounds.h12
2 files changed, 51 insertions, 51 deletions
diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp
index dce9dbd844..df9ab979f4 100644
--- a/engines/sci/engine/workarounds.cpp
+++ b/engines/sci/engine/workarounds.cpp
@@ -25,6 +25,8 @@
#include "sci/engine/workarounds.h"
+#define SCI_WORKAROUNDENTRY_TERMINATOR { (SciGameId)0, -1, -1, 0, NULL, NULL, -1, 0, { WORKAROUND_NONE, 0 } }
+
namespace Sci {
// gameID, room,script,lvl, object-name, method-name, call,index, workaround
@@ -39,53 +41,51 @@ const SciWorkaroundEntry opcodeDptoaWorkarounds[] = {
SCI_WORKAROUNDENTRY_TERMINATOR
};
-#define FAKE WORKAROUND_FAKE
-
// gameID, room,script,lvl, object-name, method-name, call,index, workaround
const SciWorkaroundEntry uninitializedReadWorkarounds[] = {
- { GID_CNICK_KQ, 200, 0, 1, "Character", "<noname 446>", -1, 504, { FAKE, 0 } }, // checkers, like in hoyle 3
- { GID_CNICK_KQ, 200, 0, 1, "Character", "<noname 446>", -1, 505, { FAKE, 0 } }, // checkers, like in hoyle 3
- { GID_CNICK_KQ, -1, 700, 0, "gcWindow", "<noname 183>", -1, -1, { FAKE, 0 } }, // when entering control menu, like in hoyle 3
- { GID_CNICK_LONGBOW, 0, 0, 0, "RH Budget", "<noname 110>", -1, 1, { FAKE, 0 } }, // when starting the game
- { GID_FREDDYPHARKAS, -1, 24, 0, "gcWin", "open", -1, 5, { FAKE, 0xf } }, // is used as priority for game menu
- { GID_FREDDYPHARKAS, -1, 31, 0, "quitWin", "open", -1, 5, { FAKE, 0xf } }, // is used as priority for game menu
- { GID_GK1, -1, 64950, 1, "Feature", "handleEvent", -1, 0, { FAKE, 0 } }, // sometimes when walk-clicking
- { GID_GK2, 34, 11, 0, "", "export 10", -1, 3, { FAKE, 0 } }, // called when the game starts
- { GID_HOYLE1, 4, 104, 0, "GinRummyCardList", "calcRuns", -1, 4, { FAKE, 0 } }, // Gin Rummy / right when the game starts
- { GID_HOYLE1, 5, 204, 0, "tableau", "checkRuns", -1, 2, { FAKE, 0 } }, // Cribbage / during the game
- { GID_HOYLE3, 200, 0, 1, "Character", "say", -1, 504, { FAKE, 0 } }, // when starting checkers, first time a character says something
- { GID_HOYLE3, 200, 0, 1, "Character", "say", -1, 505, { FAKE, 0 } }, // when starting checkers, first time a character says something
- { GID_HOYLE3, -1, 700, 0, "gcWindow", "open", -1, -1, { FAKE, 0 } }, // when entering control menu
- { GID_ISLANDBRAIN, 140, 140, 0, "piece", "init", -1, 3, { FAKE, 1 } }, // first puzzle right at the start, some initialization variable. bnt is done on it, and it should be non-0
- { GID_ISLANDBRAIN, 200, 268, 0, "anElement", "select", -1, 0, { FAKE, 0 } }, // elements puzzle, gets used before super TextIcon
- { GID_JONES, 1, 232, 0, "weekendText", "draw", 0x3d3, 0, { FAKE, 0 } }, // jones/cd only - gets called during the game
- { GID_JONES, 764, 255, 0, "", "export 0", -1, 13, { FAKE, 0 } }, // jones/ega&vga only - called when the game starts
- { GID_JONES, 764, 255, 0, "", "export 0", -1, 14, { FAKE, 0 } }, // jones/ega&vga only - called when the game starts
- { GID_KQ5, 90, 0, 0, "", "export 29", -1, 3, { FAKE, 0 } }, // called when playing harp for the harpies, is used for kDoAudio
- { GID_KQ5, 25, 25, 0, "rm025", "doit", -1, 0, { FAKE, 0 } }, // inside witch forest, when going to the room where the walking rock is
- { GID_KQ6, 30, 30, 0, "rats", "changeState", -1, 0, { FAKE, 0 } }, // rats in the catacombs
- { GID_KQ6, 500, 500, 0, "rm500", "init", -1, 0, { FAKE, 0 } }, // going to island of the beast
- { GID_KQ6, 520, 520, 0, "rm520", "init", -1, 0, { FAKE, 0 } }, // going to boiling water trap on beast isle
- { GID_KQ6, -1, 903, 0, "controlWin", "open", -1, 4, { FAKE, 0 } }, // when opening the controls window (save, load etc)
- { GID_LAURABOW2, -1, 24, 0, "gcWin", "open", -1, 5, { FAKE, 0xf } }, // is used as priority for game menu
- { GID_LSL1, 250, 250, 0, "increase", "handleEvent", -1, 2, { FAKE, 0 } }, // casino, playing game, increasing bet
- { GID_LSL1, 720, 720, 0, "rm720", "init", -1, 0, { FAKE, 0 } }, // age check room
- { GID_LSL3, 340, 340, 0, "ComicScript", "changeState", -1, 200, { FAKE, 0 } }, // right after entering the 3 ethnic groups inside comedy club
- { GID_LSL3, 340, 340, 0, "ComicScript", "changeState", -1, 201, { FAKE, 0 } }, // see above
- { GID_LSL3, 340, 340, 0, "ComicScript", "changeState", -1, 202, { FAKE, 0 } }, // see above
- { GID_LSL3, 340, 340, 0, "ComicScript", "changeState", -1, 203, { FAKE, 0 } }, // see above
- { GID_LSL3, -1, 997, 0, "TheMenuBar", "handleEvent", -1, 1, { FAKE, 0xf } }, // when setting volume the first time, this temp is used to set volume on entry (normally it would have been initialized to 's')
- { GID_LSL6, -1, 85, 0, "washcloth", "doVerb", -1, 0, { FAKE, 0 } }, // washcloth in inventory
- { GID_LSL6, -1, 928, -1, "Narrator", "startText", -1, 0, { FAKE, 0 } }, // used by various objects that are even translated in foreign versions, that's why we use the base-class
- { GID_LSL6HIRES, 0, 85, 0, "LL6Inv", "init", -1, 0, { FAKE, 0 } }, // on startup
- { GID_LSL6HIRES, -1, 64950, 1, "Feature", "handleEvent", -1, 0, { FAKE, 0 } }, // at least when entering swimming pool area
- { GID_QFG2, -1, 71, 0, "theInvSheet", "doit", -1, 1, { FAKE, 0 } }, // accessing the inventory
- { GID_SQ1, -1, 703, 0, "", "export 1", -1, 0, { FAKE, 0 } }, // sub that's called from several objects while on sarien battle cruiser
- { GID_SQ1, -1, 703, 0, "firePulsar", "changeState", 0x18a, 0, { FAKE, 0 } }, // export 1, but called locally (when shooting at aliens)
- { GID_SQ4, -1, 928, 0, "Narrator", "startText", -1, 1000, { FAKE, 1 } }, // sq4cd: method returns this to the caller
- { GID_SQ6, 100, 0, 0, "SQ6", "init", -1, 2, { FAKE, 0 } }, // called when the game starts
- { GID_SQ6, 100, 64950, 0, "View", "handleEvent", -1, 0, { FAKE, 0 } }, // called when pressing "Start game" in the main menu
- { GID_SQ6, -1, 64964, 0, "DPath", "init", -1, 1, { FAKE, 0 } }, // during the game
+ { GID_CNICK_KQ, 200, 0, 1, "Character", "<noname 446>", -1, 504, { WORKAROUND_FAKE, 0 } }, // checkers, like in hoyle 3
+ { GID_CNICK_KQ, 200, 0, 1, "Character", "<noname 446>", -1, 505, { WORKAROUND_FAKE, 0 } }, // checkers, like in hoyle 3
+ { GID_CNICK_KQ, -1, 700, 0, "gcWindow", "<noname 183>", -1, -1, { WORKAROUND_FAKE, 0 } }, // when entering control menu, like in hoyle 3
+ { GID_CNICK_LONGBOW, 0, 0, 0, "RH Budget", "<noname 110>", -1, 1, { WORKAROUND_FAKE, 0 } }, // when starting the game
+ { GID_FREDDYPHARKAS, -1, 24, 0, "gcWin", "open", -1, 5, { WORKAROUND_FAKE, 0xf } }, // is used as priority for game menu
+ { GID_FREDDYPHARKAS, -1, 31, 0, "quitWin", "open", -1, 5, { WORKAROUND_FAKE, 0xf } }, // is used as priority for game menu
+ { GID_GK1, -1, 64950, 1, "Feature", "handleEvent", -1, 0, { WORKAROUND_FAKE, 0 } }, // sometimes when walk-clicking
+ { GID_GK2, 34, 11, 0, "", "export 10", -1, 3, { WORKAROUND_FAKE, 0 } }, // called when the game starts
+ { GID_HOYLE1, 4, 104, 0, "GinRummyCardList", "calcRuns", -1, 4, { WORKAROUND_FAKE, 0 } }, // Gin Rummy / right when the game starts
+ { GID_HOYLE1, 5, 204, 0, "tableau", "checkRuns", -1, 2, { WORKAROUND_FAKE, 0 } }, // Cribbage / during the game
+ { GID_HOYLE3, 200, 0, 1, "Character", "say", -1, 504, { WORKAROUND_FAKE, 0 } }, // when starting checkers, first time a character says something
+ { GID_HOYLE3, 200, 0, 1, "Character", "say", -1, 505, { WORKAROUND_FAKE, 0 } }, // when starting checkers, first time a character says something
+ { GID_HOYLE3, -1, 700, 0, "gcWindow", "open", -1, -1, { WORKAROUND_FAKE, 0 } }, // when entering control menu
+ { GID_ISLANDBRAIN, 140, 140, 0, "piece", "init", -1, 3, { WORKAROUND_FAKE, 1 } }, // first puzzle right at the start, some initialization variable. bnt is done on it, and it should be non-0
+ { GID_ISLANDBRAIN, 200, 268, 0, "anElement", "select", -1, 0, { WORKAROUND_FAKE, 0 } }, // elements puzzle, gets used before super TextIcon
+ { GID_JONES, 1, 232, 0, "weekendText", "draw", 0x3d3, 0, { WORKAROUND_FAKE, 0 } }, // jones/cd only - gets called during the game
+ { GID_JONES, 764, 255, 0, "", "export 0", -1, 13, { WORKAROUND_FAKE, 0 } }, // jones/ega&vga only - called when the game starts
+ { GID_JONES, 764, 255, 0, "", "export 0", -1, 14, { WORKAROUND_FAKE, 0 } }, // jones/ega&vga only - called when the game starts
+ { GID_KQ5, 90, 0, 0, "", "export 29", -1, 3, { WORKAROUND_FAKE, 0 } }, // called when playing harp for the harpies, is used for kDoAudio
+ { GID_KQ5, 25, 25, 0, "rm025", "doit", -1, 0, { WORKAROUND_FAKE, 0 } }, // inside witch forest, when going to the room where the walking rock is
+ { GID_KQ6, 30, 30, 0, "rats", "changeState", -1, 0, { WORKAROUND_FAKE, 0 } }, // rats in the catacombs
+ { GID_KQ6, 500, 500, 0, "rm500", "init", -1, 0, { WORKAROUND_FAKE, 0 } }, // going to island of the beast
+ { GID_KQ6, 520, 520, 0, "rm520", "init", -1, 0, { WORKAROUND_FAKE, 0 } }, // going to boiling water trap on beast isle
+ { GID_KQ6, -1, 903, 0, "controlWin", "open", -1, 4, { WORKAROUND_FAKE, 0 } }, // when opening the controls window (save, load etc)
+ { GID_LAURABOW2, -1, 24, 0, "gcWin", "open", -1, 5, { WORKAROUND_FAKE, 0xf } }, // is used as priority for game menu
+ { GID_LSL1, 250, 250, 0, "increase", "handleEvent", -1, 2, { WORKAROUND_FAKE, 0 } }, // casino, playing game, increasing bet
+ { GID_LSL1, 720, 720, 0, "rm720", "init", -1, 0, { WORKAROUND_FAKE, 0 } }, // age check room
+ { GID_LSL3, 340, 340, 0, "ComicScript", "changeState", -1, 200, { WORKAROUND_FAKE, 0 } }, // right after entering the 3 ethnic groups inside comedy club
+ { GID_LSL3, 340, 340, 0, "ComicScript", "changeState", -1, 201, { WORKAROUND_FAKE, 0 } }, // see above
+ { GID_LSL3, 340, 340, 0, "ComicScript", "changeState", -1, 202, { WORKAROUND_FAKE, 0 } }, // see above
+ { GID_LSL3, 340, 340, 0, "ComicScript", "changeState", -1, 203, { WORKAROUND_FAKE, 0 } }, // see above
+ { GID_LSL3, -1, 997, 0, "TheMenuBar", "handleEvent", -1, 1, { WORKAROUND_FAKE, 0xf } }, // when setting volume the first time, this temp is used to set volume on entry (normally it would have been initialized to 's')
+ { GID_LSL6, -1, 85, 0, "washcloth", "doVerb", -1, 0, { WORKAROUND_FAKE, 0 } }, // washcloth in inventory
+ { GID_LSL6, -1, 928, -1, "Narrator", "startText", -1, 0, { WORKAROUND_FAKE, 0 } }, // used by various objects that are even translated in foreign versions, that's why we use the base-class
+ { GID_LSL6HIRES, 0, 85, 0, "LL6Inv", "init", -1, 0, { WORKAROUND_FAKE, 0 } }, // on startup
+ { GID_LSL6HIRES, -1, 64950, 1, "Feature", "handleEvent", -1, 0, { WORKAROUND_FAKE, 0 } }, // at least when entering swimming pool area
+ { GID_QFG2, -1, 71, 0, "theInvSheet", "doit", -1, 1, { WORKAROUND_FAKE, 0 } }, // accessing the inventory
+ { GID_SQ1, -1, 703, 0, "", "export 1", -1, 0, { WORKAROUND_FAKE, 0 } }, // sub that's called from several objects while on sarien battle cruiser
+ { GID_SQ1, -1, 703, 0, "firePulsar", "changeState", 0x18a, 0, { WORKAROUND_FAKE, 0 } }, // export 1, but called locally (when shooting at aliens)
+ { GID_SQ4, -1, 928, 0, "Narrator", "startText", -1, 1000, { WORKAROUND_FAKE, 1 } }, // sq4cd: method returns this to the caller
+ { GID_SQ6, 100, 0, 0, "SQ6", "init", -1, 2, { WORKAROUND_FAKE, 0 } }, // called when the game starts
+ { GID_SQ6, 100, 64950, 0, "View", "handleEvent", -1, 0, { WORKAROUND_FAKE, 0 } }, // called when pressing "Start game" in the main menu
+ { GID_SQ6, -1, 64964, 0, "DPath", "init", -1, 1, { WORKAROUND_FAKE, 0 } }, // during the game
SCI_WORKAROUNDENTRY_TERMINATOR
};
diff --git a/engines/sci/engine/workarounds.h b/engines/sci/engine/workarounds.h
index d44ccf66b2..93ffc30e2b 100644
--- a/engines/sci/engine/workarounds.h
+++ b/engines/sci/engine/workarounds.h
@@ -43,6 +43,12 @@ struct SciWorkaroundSolution {
uint16 value;
};
+/**
+ * A structure describing a 'workaround' for a SCI script bug.
+ *
+ * Arrays of SciWorkaroundEntry instances are terminated by
+ * a fake entry in which "objectName" is NULL.
+ */
struct SciWorkaroundEntry {
SciGameId gameId;
int roomNr;
@@ -55,10 +61,6 @@ struct SciWorkaroundEntry {
SciWorkaroundSolution newValue;
};
-#define SCI_WORKAROUNDENTRY_TERMINATOR { (SciGameId)0, -1, -1, 0, NULL, NULL, -1, 0, { WORKAROUND_NONE, 0 } }
-#define FAKE WORKAROUND_FAKE
-
-// gameID, room,script,lvl, object-name, method-name, call,index, workaround
extern const SciWorkaroundEntry opcodeDivWorkarounds[];
extern const SciWorkaroundEntry opcodeDptoaWorkarounds[];
extern const SciWorkaroundEntry uninitializedReadWorkarounds[];
@@ -73,8 +75,6 @@ extern const SciWorkaroundEntry kSetPort_workarounds[];
extern const SciWorkaroundEntry kUnLoad_workarounds[];
extern const SciWorkaroundEntry kStrCpy_workarounds[];
-#undef FAKE
-
} // End of namespace Sci
#endif // SCI_ENGINE_WORKAROUNDS_H