aboutsummaryrefslogtreecommitdiff
path: root/engines/agi
diff options
context:
space:
mode:
authorFilippos Karapetis2007-05-06 14:36:02 +0000
committerFilippos Karapetis2007-05-06 14:36:02 +0000
commitd4d04a150dfefdcce5fe35bbd8af4ef44d57aa3d (patch)
tree225686d80aaf97c1a38d2aa6a57e7c70abb98fea /engines/agi
parentdc1e1a3f11dd70bb43ce0912c75e284124e764ff (diff)
downloadscummvm-rg350-d4d04a150dfefdcce5fe35bbd8af4ef44d57aa3d.tar.gz
scummvm-rg350-d4d04a150dfefdcce5fe35bbd8af4ef44d57aa3d.tar.bz2
scummvm-rg350-d4d04a150dfefdcce5fe35bbd8af4ef44d57aa3d.zip
Added a game ID field for all Sierra AGI games. Removed many types which are now obsolete from the game features field
svn-id: r26764
Diffstat (limited to 'engines/agi')
-rw-r--r--engines/agi/agi.h27
-rw-r--r--engines/agi/detection.cpp146
-rw-r--r--engines/agi/keyboard.cpp6
-rw-r--r--engines/agi/op_cmd.cpp2
-rw-r--r--engines/agi/sprite.cpp2
-rw-r--r--engines/agi/view.cpp2
6 files changed, 147 insertions, 38 deletions
diff --git a/engines/agi/agi.h b/engines/agi/agi.h
index 6db5494fcc..a1f979a28b 100644
--- a/engines/agi/agi.h
+++ b/engines/agi/agi.h
@@ -109,11 +109,27 @@ enum AgiGameFeatures {
GF_AGI256_2 = (1 << 3),
GF_AGIPAL = (1 << 4),
GF_MACGOLDRUSH = (1 << 5),
- GF_FANMADE = (1 << 6),
- GF_ESC_MENU = (1 << 7),
- GF_MANHUNTER = (1 << 8),
- GF_SQ1 = (1 << 9),
- GF_KQ4 = (1 << 10)
+ GF_FANMADE = (1 << 6)
+};
+
+enum AgiGameID {
+ GID_AGIDEMO,
+ GID_BC,
+ GID_DDP,
+ GID_GOLDRUSH,
+ GID_KQ1,
+ GID_KQ2,
+ GID_KQ3,
+ GID_KQ4,
+ GID_LSL1,
+ GID_MH1,
+ GID_MH2,
+ GID_MIXEDUP,
+ GID_PQ1,
+ GID_SQ1,
+ GID_SQ2,
+ GID_XMASCARD,
+ GID_FANMADE // TODO: Should this be extended to include all fanmade games?
};
struct AGIGameDescription;
@@ -511,6 +527,7 @@ public:
}
const AGIGameDescription *_gameDescription;
+ uint32 getGameID() const;
uint32 getFeatures() const;
uint16 getVersion() const;
Common::Platform getPlatform() const;
diff --git a/engines/agi/detection.cpp b/engines/agi/detection.cpp
index d88af458d4..752a5f510b 100644
--- a/engines/agi/detection.cpp
+++ b/engines/agi/detection.cpp
@@ -35,11 +35,16 @@ namespace Agi {
struct AGIGameDescription {
Common::ADGameDescription desc;
+ int gameID;
int gameType;
uint32 features;
uint16 version;
};
+uint32 AgiEngine::getGameID() const {
+ return _gameDescription->gameID;
+}
+
uint32 AgiEngine::getFeatures() const {
return _gameDescription->features;
}
@@ -95,6 +100,7 @@ namespace Agi {
Common::kPlatformPC, \
Common::ADGF_NO_FLAGS \
}, \
+ GID_FANMADE, \
GType_V2, \
features, \
ver, \
@@ -122,6 +128,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_AGIDEMO,
GType_V2,
0,
0x2440,
@@ -138,6 +145,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformApple2GS,
Common::ADGF_NO_FLAGS
},
+ GID_AGIDEMO,
GType_V2,
0,
0x2917,
@@ -154,6 +162,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_AGIDEMO,
GType_V2,
0,
0x2917,
@@ -170,6 +179,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_AGIDEMO,
GType_V2,
0,
0x2917,
@@ -186,6 +196,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_AGIDEMO,
GType_V2,
0,
0x2917,
@@ -202,6 +213,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_AGIDEMO,
GType_V3,
0,
0x3149,
@@ -218,6 +230,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAmiga,
Common::ADGF_NO_FLAGS
},
+ GID_BC,
GType_V2,
0,
0x2440,
@@ -234,6 +247,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformApple2GS,
Common::ADGF_NO_FLAGS
},
+ GID_BC,
GType_V3,
0,
0x3149,
@@ -250,6 +264,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_BC,
GType_V2,
0,
0x2440,
@@ -266,6 +281,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_BC,
GType_V3,
0,
0x3149,
@@ -284,6 +300,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAmiga,
Common::ADGF_NO_FLAGS
},
+ GID_DDP,
GType_V2,
0,
0x2272,
@@ -300,6 +317,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_DDP,
GType_V2,
0,
0x2272,
@@ -316,6 +334,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_DDP,
GType_V2,
0,
0x2272,
@@ -332,6 +351,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAmiga,
Common::ADGF_NO_FLAGS
},
+ GID_GOLDRUSH,
GType_V3,
0,
0x3149,
@@ -348,6 +368,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformApple2GS,
Common::ADGF_NO_FLAGS
},
+ GID_GOLDRUSH,
GType_V3,
0,
0x3149,
@@ -364,6 +385,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAtariST,
Common::ADGF_NO_FLAGS
},
+ GID_GOLDRUSH,
GType_V3,
0,
0x3149,
@@ -380,6 +402,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_GOLDRUSH,
GType_V3,
0,
0x3149,
@@ -396,6 +419,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_GOLDRUSH,
GType_V3,
0,
0x3149,
@@ -416,6 +440,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformMacintosh,
Common::ADGF_NO_FLAGS
},
+ GID_GOLDRUSH,
GType_V3,
GF_MACGOLDRUSH,
0x3149,
@@ -432,6 +457,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAmiga,
Common::ADGF_NO_FLAGS
},
+ GID_KQ1,
GType_V2,
0,
0x2440,
@@ -448,6 +474,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAtariST,
Common::ADGF_NO_FLAGS
},
+ GID_KQ1,
GType_V2,
0,
0x2272,
@@ -464,6 +491,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformApple2GS,
Common::ADGF_NO_FLAGS
},
+ GID_KQ1,
GType_V2,
0,
0x2272,
@@ -480,6 +508,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformMacintosh,
Common::ADGF_NO_FLAGS
},
+ GID_KQ1,
GType_V2,
0,
0x2440,
@@ -496,6 +525,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_KQ1,
GType_V2,
0,
0x2917,
@@ -512,8 +542,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformApple2GS,
Common::ADGF_NO_FLAGS
},
+ GID_KQ2,
GType_V2,
- GF_ESC_MENU,
+ 0,
0x2917,
},
@@ -528,8 +559,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAmiga,
Common::ADGF_NO_FLAGS
},
+ GID_KQ2,
GType_V2,
- GF_ESC_MENU,
+ 0,
0x2440,
},
@@ -544,8 +576,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformMacintosh,
Common::ADGF_NO_FLAGS
},
+ GID_KQ2,
GType_V2,
- GF_ESC_MENU,
+ 0,
0x2440,
},
@@ -560,8 +593,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_KQ2,
GType_V2,
- GF_ESC_MENU,
+ 0,
0x2440, // XXX: any major differences from 2.411 to 2.440?
},
@@ -576,8 +610,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_KQ2,
GType_V2,
- GF_ESC_MENU,
+ 0,
0x2917,
},
@@ -592,6 +627,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAmiga,
Common::ADGF_NO_FLAGS
},
+ GID_KQ3,
GType_V2,
0,
0x2440,
@@ -608,6 +644,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAtariST,
Common::ADGF_NO_FLAGS
},
+ GID_KQ3,
GType_V2,
0,
0x2272,
@@ -624,6 +661,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformMacintosh,
Common::ADGF_NO_FLAGS
},
+ GID_KQ3,
GType_V2,
0,
0x2440,
@@ -640,6 +678,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformApple2GS,
Common::ADGF_NO_FLAGS
},
+ GID_KQ3,
GType_V2,
0,
0x2917,
@@ -656,6 +695,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAmiga,
Common::ADGF_NO_FLAGS
},
+ GID_KQ3,
GType_V3,
0,
0x3086,
@@ -672,6 +712,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_KQ3,
GType_V2,
0,
0x2272,
@@ -688,6 +729,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_KQ3,
GType_V2,
0,
0x2440,
@@ -704,6 +746,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_KQ3,
GType_V2,
0,
0x2440,
@@ -720,6 +763,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_KQ3,
GType_V2,
0,
0x2936,
@@ -736,8 +780,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_KQ4,
GType_V3,
- GF_KQ4,
+ 0,
0x3086,
},
@@ -752,8 +797,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformApple2GS,
Common::ADGF_NO_FLAGS
},
+ GID_KQ4,
GType_V3,
- GF_KQ4,
+ 0,
0x3086,
},
@@ -768,8 +814,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_KQ4,
GType_V3,
- GF_KQ4,
+ 0,
0x3086,
},
@@ -784,8 +831,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_KQ4,
GType_V3,
- GF_KQ4,
+ 0,
0x3086,
},
@@ -800,8 +848,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_KQ4,
GType_V3,
- GF_KQ4,
+ 0,
0x3149,
},
@@ -816,6 +865,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_LSL1,
GType_V2,
0,
0x2440,
@@ -832,6 +882,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAtariST,
Common::ADGF_NO_FLAGS
},
+ GID_LSL1,
GType_V2,
0,
0x2440,
@@ -848,6 +899,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAmiga,
Common::ADGF_NO_FLAGS
},
+ GID_LSL1,
GType_V2,
0,
0x2440,
@@ -864,6 +916,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformApple2GS,
Common::ADGF_NO_FLAGS
},
+ GID_LSL1,
GType_V2,
0,
0x2440,
@@ -880,6 +933,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformMacintosh,
Common::ADGF_NO_FLAGS
},
+ GID_LSL1,
GType_V2,
0,
0x2440,
@@ -896,8 +950,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAtariST,
Common::ADGF_NO_FLAGS
},
+ GID_MH1,
GType_V3,
- GF_MANHUNTER,
+ 0,
0x3149,
},
@@ -912,8 +967,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformApple2GS,
Common::ADGF_NO_FLAGS
},
+ GID_MH1,
GType_V3,
- GF_MANHUNTER,
+ 0,
0x3149,
},
@@ -928,8 +984,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAmiga,
Common::ADGF_NO_FLAGS
},
+ GID_MH1,
GType_V3,
- GF_MANHUNTER,
+ 0,
0x3149,
},
@@ -945,8 +1002,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_MH1,
GType_V3,
- GF_MANHUNTER,
+ 0,
0x3149,
},
@@ -961,8 +1019,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_MH1,
GType_V3,
- GF_MANHUNTER,
+ 0,
0x3149,
},
@@ -977,8 +1036,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAtariST,
Common::ADGF_NO_FLAGS
},
+ GID_MH1,
GType_V3,
- GF_MANHUNTER,
+ 0,
0x3149,
},
@@ -993,8 +1053,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAmiga,
Common::ADGF_NO_FLAGS
},
+ GID_MH2,
GType_V3,
- GF_MANHUNTER,
+ 0,
0x3086,
},
@@ -1009,8 +1070,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_MH2,
GType_V3,
- GF_MANHUNTER,
+ 0,
0x3149,
},
@@ -1025,8 +1087,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_MH2,
GType_V3,
- GF_MANHUNTER,
+ 0,
0x3149,
},
@@ -1041,6 +1104,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAmiga,
Common::ADGF_NO_FLAGS
},
+ GID_MIXEDUP,
GType_V3,
0,
0x3086,
@@ -1057,6 +1121,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformApple2GS,
Common::ADGF_NO_FLAGS
},
+ GID_MIXEDUP,
GType_V2,
0,
0x2917,
@@ -1073,6 +1138,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_MIXEDUP,
GType_V2,
0,
0x2917,
@@ -1090,6 +1156,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_MIXEDUP,
GType_V2,
0,
0x2917,
@@ -1107,6 +1174,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_PQ1,
GType_V2,
0,
0x2917,
@@ -1123,6 +1191,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformMacintosh,
Common::ADGF_NO_FLAGS
},
+ GID_PQ1,
GType_V2,
0,
0x2440,
@@ -1139,6 +1208,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformApple2GS,
Common::ADGF_NO_FLAGS
},
+ GID_PQ1,
GType_V2,
0,
0x2917,
@@ -1155,6 +1225,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAmiga,
Common::ADGF_NO_FLAGS
},
+ GID_PQ1,
GType_V3,
0,
0x3149,
@@ -1171,6 +1242,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformApple2GS,
Common::ADGF_NO_FLAGS
},
+ GID_PQ1,
GType_V2,
0,
0x2917,
@@ -1187,6 +1259,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_PQ1,
GType_V2,
0,
0x2917,
@@ -1203,6 +1276,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformMacintosh,
Common::ADGF_NO_FLAGS
},
+ GID_PQ1,
GType_V2,
0,
0x2440,
@@ -1219,6 +1293,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_PQ1,
GType_V2,
0,
0x2917,
@@ -1235,8 +1310,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAtariST,
Common::ADGF_NO_FLAGS
},
+ GID_SQ1,
GType_V2,
- GF_SQ1,
+ 0,
0x2440,
},
@@ -1251,8 +1327,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_SQ1,
GType_V2,
- GF_SQ1,
+ 0,
0x2272,
},
@@ -1267,8 +1344,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAmiga,
Common::ADGF_NO_FLAGS
},
+ GID_SQ1,
GType_V2,
- GF_SQ1,
+ 0,
0x2440,
},
@@ -1283,8 +1361,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformMacintosh,
Common::ADGF_NO_FLAGS
},
+ GID_SQ1,
GType_V2,
- GF_SQ1,
+ 0,
0x2440,
},
@@ -1299,8 +1378,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformApple2GS,
Common::ADGF_NO_FLAGS
},
+ GID_SQ1,
GType_V2,
- GF_SQ1,
+ 0,
0x2917,
},
@@ -1315,8 +1395,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_SQ1,
GType_V2,
- GF_SQ1,
+ 0,
0x2089,
},
@@ -1331,8 +1412,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_SQ1,
GType_V2,
- GF_SQ1,
+ 0,
0x2272,
},
@@ -1347,8 +1429,9 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_SQ1,
GType_V2,
- GF_SQ1,
+ 0,
0x2440,
},
@@ -1364,6 +1447,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_SQ2,
GType_V2,
0,
0x2936,
@@ -1380,6 +1464,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformApple2GS,
Common::ADGF_NO_FLAGS
},
+ GID_SQ2,
GType_V2,
0,
0x2936,
@@ -1400,6 +1485,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformAmiga,
Common::ADGF_NO_FLAGS
},
+ GID_SQ2,
GType_V2,
0,
0x2936,
@@ -1416,6 +1502,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformMacintosh,
Common::ADGF_NO_FLAGS
},
+ GID_SQ2,
GType_V2,
0,
0x2936,
@@ -1433,6 +1520,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_SQ2,
GType_V2,
0,
0x2917,
@@ -1449,6 +1537,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_SQ2,
GType_V2,
0,
0x2917,
@@ -1465,6 +1554,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_SQ2,
GType_V2,
0,
0x2917,
@@ -1481,6 +1571,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_SQ2,
GType_V2,
0,
0x2936,
@@ -1497,6 +1588,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::kPlatformPC,
Common::ADGF_NO_FLAGS
},
+ GID_XMASCARD,
GType_V2,
0,
0x2272,
diff --git a/engines/agi/keyboard.cpp b/engines/agi/keyboard.cpp
index 20c81847db..5cfcf1dba5 100644
--- a/engines/agi/keyboard.cpp
+++ b/engines/agi/keyboard.cpp
@@ -103,11 +103,11 @@ int AgiEngine::handleController(int key) {
VtEntry *v = &_game.viewTable[0];
int i;
- /* AGI 3.149 games need KEY_ESCAPE to use menus */
- if (key == 0 || (key == KEY_ESCAPE && (getFeatures() & GF_ESC_MENU || getFeatures() & GF_KQ4)) )
+ /* AGI 3.149 games and The Black Cauldron need KEY_ESCAPE to use menus */
+ if (key == 0 || (key == KEY_ESCAPE && agiGetRelease() != 0x3149 && getGameID() != GID_BC) )
return false;
- if ((getFeatures() & GF_MANHUNTER) && (key == KEY_ENTER) &&
+ if ((getGameID() == GID_MH1 || getGameID() == GID_MH2) && (key == KEY_ENTER) &&
(_game.inputMode == INPUT_NONE))
key = 0x20; // Set Enter key to Space in Manhunter when there's no text input
diff --git a/engines/agi/op_cmd.cpp b/engines/agi/op_cmd.cpp
index 32bcc37344..9f196ffdfb 100644
--- a/engines/agi/op_cmd.cpp
+++ b/engines/agi/op_cmd.cpp
@@ -252,7 +252,7 @@ cmd(set_priority) {
// and then releases the fixed priority set on ego after ego is seated
// Therefore, this workaround only affects that specific part of this scene
// Ego is set to object 19 by script 54
- if (g_agi->getFeatures() & GF_KQ4 && vt.currentView == 152) {
+ if (g_agi->getGameID() == GID_KQ4 && vt.currentView == 152) {
game.viewTable[19].flags |= FIXED_PRIORITY;
game.viewTable[19].priority = 7;
}
diff --git a/engines/agi/sprite.cpp b/engines/agi/sprite.cpp
index e4cb6ed175..8392969def 100644
--- a/engines/agi/sprite.cpp
+++ b/engines/agi/sprite.cpp
@@ -622,7 +622,7 @@ void SpritesMgr::addToPic(int view, int loop, int cel, int x, int y, int pri, in
y3 = (y2 / 12) * 12;
// SQ1 needs +1 (see bug #810331)
- if (_vm->getFeatures() & GF_SQ1)
+ if (_vm->getGameID() == GID_SQ1)
y3++;
// don't let box extend below y.
diff --git a/engines/agi/view.cpp b/engines/agi/view.cpp
index d87d115cbd..6dfed13142 100644
--- a/engines/agi/view.cpp
+++ b/engines/agi/view.cpp
@@ -50,7 +50,7 @@ void AgiEngine::lSetCel(VtEntry *v, int n) {
// in the KQ4 introduction
// It seems there's either a bug with KQ4's logic script 120 (the intro script)
// or flag 64 is not set correctly, which causes the erroneous behavior from the actors
- if (getFeatures() & GF_KQ4 && !(v->flags & UPDATE) && (v->currentView == 172))
+ if (getGameID() == GID_KQ4 && !(v->flags & UPDATE) && (v->currentView == 172))
return;
currentVc = &currentVl->cel[n];