aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/advancedDetector.cpp4
-rw-r--r--common/advancedDetector.h3
-rw-r--r--engines/agos/agos.h20
-rw-r--r--engines/agos/game.cpp1023
-rw-r--r--engines/agos/items.cpp4
-rw-r--r--engines/saga/game.cpp10
-rw-r--r--engines/saga/saga.h8
-rw-r--r--engines/saga/sagagame.cpp156
-rw-r--r--engines/saga/sagagame.h3
9 files changed, 721 insertions, 510 deletions
diff --git a/common/advancedDetector.cpp b/common/advancedDetector.cpp
index 4a939cce3c..3399f4d4ca 100644
--- a/common/advancedDetector.cpp
+++ b/common/advancedDetector.cpp
@@ -103,6 +103,7 @@ ADList AdvancedDetector::detectGame(const FSList *fslist, Language language, Pla
tstr = file->_key;
tstr.toLowercase();
+ debug(3, "+ %s", tstr.c_str());
if (!filesMD5.contains(tstr)) {
if (testFile.open(file->_key)) {
testFile.close();
@@ -112,6 +113,7 @@ ADList AdvancedDetector::detectGame(const FSList *fslist, Language language, Pla
sprintf(md5str + j*2, "%02x", (int)md5sum[j]);
}
filesMD5[tstr] = String(md5str);
+ debug(3, "> %s: %s", tstr.c_str(), md5str);
}
}
}
@@ -136,6 +138,8 @@ ADList AdvancedDetector::detectGame(const FSList *fslist, Language language, Pla
if (strcmp(fileDesc->md5, filesMD5[tstr].c_str()) && strcmp(fileDesc->md5, filesMD5[tstr2].c_str())) {
fileMissing = true;
break;
+ } else {
+ debug(3, "Matched file: %s", tstr.c_str());
}
}
if (!fileMissing) {
diff --git a/common/advancedDetector.h b/common/advancedDetector.h
index 055534e56d..c3396a9ddc 100644
--- a/common/advancedDetector.h
+++ b/common/advancedDetector.h
@@ -34,12 +34,9 @@ struct ADGameFileDescription {
struct ADGameDescription {
const char *name;
- int gameType;
- int gameId;
const char *extra;
int filesCount;
ADGameFileDescription *filesDescriptions;
- uint32 features;
Language language;
Platform platform;
};
diff --git a/engines/agos/agos.h b/engines/agos/agos.h
index b60aea1cea..76c1dd9c87 100644
--- a/engines/agos/agos.h
+++ b/engines/agos/agos.h
@@ -120,6 +120,14 @@ enum SIMONGameType {
GType_PP = 7
};
+struct AGOSGameDescription {
+ Common::ADGameDescription desc;
+
+ int gameType;
+ int gameId;
+ uint32 features;
+};
+
struct GameSpecificSettings;
class Debugger;
@@ -159,7 +167,7 @@ class AGOSEngine : public Engine {
void setupFeebleVideoOpcodes(VgaOpcodeProc *op);
public:
- Common::ADGameDescription *_gameDescription;
+ AGOSGameDescription *_gameDescription;
bool initGame(void);
void setupGame();
@@ -167,12 +175,12 @@ public:
int getGameId() const { return _gameDescription->gameId; }
int getGameType() const { return _gameDescription->gameType; }
uint32 getFeatures() const { return _gameDescription->features; }
- Common::Language getLanguage() const { return _gameDescription->language; }
- Common::Platform getPlatform() const { return _gameDescription->platform; }
+ Common::Language getLanguage() const { return _gameDescription->desc.language; }
+ Common::Platform getPlatform() const { return _gameDescription->desc.platform; }
const char *getFileName(int type) const {
- for (int i = 0; i < _gameDescription->filesCount; i++) {
- if (_gameDescription->filesDescriptions[i].fileType == type)
- return _gameDescription->filesDescriptions[i].fileName;
+ for (int i = 0; i < _gameDescription->desc.filesCount; i++) {
+ if (_gameDescription->desc.filesDescriptions[i].fileType == type)
+ return _gameDescription->desc.filesDescriptions[i].fileName;
}
error("getFileName: Invalid type %d", type);
}
diff --git a/engines/agos/game.cpp b/engines/agos/game.cpp
index 3f3d968bfb..9cd004a5b9 100644
--- a/engines/agos/game.cpp
+++ b/engines/agos/game.cpp
@@ -640,881 +640,1080 @@ static ADGameFileDescription SWAMPY_GameFiles[] = {
{ "Gswampy", GAME_BASEFILE, "3a6d4d7b2433e660f2483f9396cc87a2"},
};
-static ADGameDescription gameDescriptions[] = {
+static AGOSGameDescription gameDescriptions[] = {
// Elvira - English Floppy
{
- "elvira",
+ {
+ "elvira",
+ "Floppy",
+ ARRAYSIZE(ELVIRA1DOS_GameFiles),
+ ELVIRA1DOS_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformPC,
+ },
+
GType_ELVIRA,
GID_ELVIRA,
- "Floppy",
- ARRAYSIZE(ELVIRA1DOS_GameFiles),
- ELVIRA1DOS_GameFiles,
GF_OLD_BUNDLE,
- Common::EN_ANY,
- Common::kPlatformPC,
},
// Elvira - English Floppy Alternative?
{
- "elvira",
+ {
+ "elvira",
+ "Floppy",
+ ARRAYSIZE(ELVIRA1DOS2_GameFiles),
+ ELVIRA1DOS2_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformPC,
+ },
+
GType_ELVIRA,
GID_ELVIRA,
- "Floppy",
- ARRAYSIZE(ELVIRA1DOS2_GameFiles),
- ELVIRA1DOS2_GameFiles,
GF_OLD_BUNDLE,
- Common::EN_ANY,
- Common::kPlatformPC,
},
// Elvira 2 - English Floppy
{
- "elvira2",
+ {
+ "elvira2",
+ "Floppy",
+ ARRAYSIZE(ELVIRA2DOS_GameFiles),
+ ELVIRA2DOS_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformPC,
+ },
+
GType_ELVIRA2,
GID_ELVIRA2,
- "Floppy",
- ARRAYSIZE(ELVIRA2DOS_GameFiles),
- ELVIRA2DOS_GameFiles,
GF_OLD_BUNDLE,
- Common::EN_ANY,
- Common::kPlatformPC,
},
// Waxworks - English Floppy
{
- "waxworks",
+ {
+ "waxworks",
+ "Floppy",
+ ARRAYSIZE(WAXWORKSDOS_GameFiles),
+ WAXWORKSDOS_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformPC,
+ },
+
GType_WW,
GID_WAXWORKS,
- "Floppy",
- ARRAYSIZE(WAXWORKSDOS_GameFiles),
- WAXWORKSDOS_GameFiles,
GF_OLD_BUNDLE,
- Common::EN_ANY,
- Common::kPlatformPC,
},
// Simon the Sorcerer 1 - English Acorn CD Demo
{
- "simon1",
+ {
+ "simon1",
+ "CD Demo",
+ ARRAYSIZE(SIMON1ACORNDEMO_GameFiles),
+ SIMON1ACORNDEMO_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformAcorn,
+ },
+
GType_SIMON1,
GID_SIMON1ACORNDEMO,
- "CD Demo",
- ARRAYSIZE(SIMON1ACORNDEMO_GameFiles),
- SIMON1ACORNDEMO_GameFiles,
GF_TALKIE,
- Common::EN_ANY,
- Common::kPlatformAcorn,
},
// Simon the Sorcerer 1 - English Acorn CD
{
- "simon1",
+ {
+ "simon1",
+ "CD",
+ ARRAYSIZE(SIMON1ACORN_GameFiles),
+ SIMON1ACORN_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformAcorn,
+ },
+
GType_SIMON1,
GID_SIMON1ACORN,
- "CD",
- ARRAYSIZE(SIMON1ACORN_GameFiles),
- SIMON1ACORN_GameFiles,
GF_TALKIE,
- Common::EN_ANY,
- Common::kPlatformAcorn,
},
// Simon the Sorcerer 1 - English AGA Floppy
{
- "simon1",
+ {
+ "simon1",
+ "AGA Floppy",
+ ARRAYSIZE(SIMON1AMIGA_GameFiles),
+ SIMON1AMIGA_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformAmiga,
+ },
+
GType_SIMON1,
GID_SIMON1AMIGA,
- "AGA Floppy",
- ARRAYSIZE(SIMON1AMIGA_GameFiles),
- SIMON1AMIGA_GameFiles,
GF_CRUNCHED | GF_OLD_BUNDLE,
- Common::EN_ANY,
- Common::kPlatformAmiga,
},
// Simon the Sorcerer 1 - French AGA Floppy
{
- "simon1",
+ {
+ "simon1",
+ "AGA Floppy",
+ ARRAYSIZE(SIMON1AMIGA_FR_GameFiles),
+ SIMON1AMIGA_FR_GameFiles,
+ Common::FR_FRA,
+ Common::kPlatformAmiga,
+ },
+
GType_SIMON1,
GID_SIMON1AMIGA_FR,
- "AGA Floppy",
- ARRAYSIZE(SIMON1AMIGA_FR_GameFiles),
- SIMON1AMIGA_FR_GameFiles,
GF_CRUNCHED | GF_OLD_BUNDLE,
- Common::FR_FRA,
- Common::kPlatformAmiga,
},
// Simon the Sorcerer 1 - German AGA Floppy
{
- "simon1",
+ {
+ "simon1",
+ "AGA Floppy",
+ ARRAYSIZE(SIMON1AMIGA_DE_GameFiles),
+ SIMON1AMIGA_DE_GameFiles,
+ Common::DE_DEU,
+ Common::kPlatformAmiga,
+ },
+
GType_SIMON1,
GID_SIMON1AMIGA_DE,
- "AGA Floppy",
- ARRAYSIZE(SIMON1AMIGA_DE_GameFiles),
- SIMON1AMIGA_DE_GameFiles,
GF_CRUNCHED | GF_OLD_BUNDLE,
- Common::DE_DEU,
- Common::kPlatformAmiga,
},
// Simon the Sorcerer 1 - English Amiga ECS Demo
{
- "simon1",
+ {
+ "simon1",
+ "ECS Demo",
+ ARRAYSIZE(SIMON1AMIGADEMO_GameFiles),
+ SIMON1AMIGADEMO_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformAmiga,
+ },
+
GType_SIMON1,
GID_SIMON1AMIGADEMO,
- "ECS Demo",
- ARRAYSIZE(SIMON1AMIGADEMO_GameFiles),
- SIMON1AMIGADEMO_GameFiles,
GF_CRUNCHED | GF_OLD_BUNDLE,
- Common::EN_ANY,
- Common::kPlatformAmiga,
},
// Simon the Sorcerer 1 - English Amiga CD32
{
- "simon1",
+ {
+ "simon1",
+ "CD32",
+ ARRAYSIZE(SIMON1CD32_GameFiles),
+ SIMON1CD32_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformAmiga,
+ },
+
GType_SIMON1,
GID_SIMON1CD32,
- "CD32",
- ARRAYSIZE(SIMON1CD32_GameFiles),
- SIMON1CD32_GameFiles,
GF_TALKIE | GF_OLD_BUNDLE,
- Common::EN_ANY,
- Common::kPlatformAmiga,
},
// Simon the Sorcerer 1 - English Amiga CD32 alternative?
{
- "simon1",
+ {
+ "simon1",
+ "CD32",
+ ARRAYSIZE(SIMON1CD32_2_GameFiles),
+ SIMON1CD32_2_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformAmiga,
+ },
+
GType_SIMON1,
GID_SIMON1CD32_2,
- "CD32",
- ARRAYSIZE(SIMON1CD32_2_GameFiles),
- SIMON1CD32_2_GameFiles,
GF_TALKIE | GF_OLD_BUNDLE,
- Common::EN_ANY,
- Common::kPlatformAmiga,
},
// Simon the Sorcerer 1 - English DOS Floppy Demo
{
- "simon1",
+ {
+ "simon1",
+ "Floppy Demo",
+ ARRAYSIZE(SIMON1DEMO_GameFiles),
+ SIMON1DEMO_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformPC,
+ },
+
GType_SIMON1,
GID_SIMON1DEMO,
- "Floppy Demo",
- ARRAYSIZE(SIMON1DEMO_GameFiles),
- SIMON1DEMO_GameFiles,
GF_OLD_BUNDLE,
- Common::EN_ANY,
- Common::kPlatformPC,
},
// Simon the Sorcerer 1 - English DOS Floppy
{
- "simon1",
+ {
+ "simon1",
+ "Floppy",
+ ARRAYSIZE(SIMON1DOS_GameFiles),
+ SIMON1DOS_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformPC,
+ },
+
GType_SIMON1,
GID_SIMON1DOS,
- "Floppy",
- ARRAYSIZE(SIMON1DOS_GameFiles),
- SIMON1DOS_GameFiles,
GF_OLD_BUNDLE,
- Common::EN_ANY,
- Common::kPlatformPC,
},
// Simon the Sorcerer 1 - English DOS Floppy with Russian patch
{
- "simon1",
+ {
+ "simon1",
+ "Floppy",
+ ARRAYSIZE(SIMON1DOS_RU_GameFiles),
+ SIMON1DOS_RU_GameFiles,
+ Common::RU_RUS,
+ Common::kPlatformPC,
+ },
+
GType_SIMON1,
GID_SIMON1DOS_RU,
- "Floppy",
- ARRAYSIZE(SIMON1DOS_RU_GameFiles),
- SIMON1DOS_RU_GameFiles,
GF_OLD_BUNDLE,
- Common::RU_RUS,
- Common::kPlatformPC,
},
// Simon the Sorcerer 1 - English DOS Floppy (Infocom)
{
- "simon1",
+ {
+ "simon1",
+ "Floppy",
+ ARRAYSIZE(SIMON1DOS_INF_GameFiles),
+ SIMON1DOS_INF_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformPC,
+ },
+
GType_SIMON1,
GID_SIMON1DOS_INF,
- "Floppy",
- ARRAYSIZE(SIMON1DOS_INF_GameFiles),
- SIMON1DOS_INF_GameFiles,
GF_OLD_BUNDLE,
- Common::EN_ANY,
- Common::kPlatformPC,
},
// Simon the Sorcerer 1 - English DOS Floppy (Infocom) with Russian patch
{
- "simon1",
+ {
+ "simon1",
+ "Floppy",
+ ARRAYSIZE(SIMON1DOS_INF_RU_GameFiles),
+ SIMON1DOS_INF_RU_GameFiles,
+ Common::RU_RUS,
+ Common::kPlatformPC,
+ },
+
GType_SIMON1,
GID_SIMON1DOS_INF_RU,
- "Floppy",
- ARRAYSIZE(SIMON1DOS_INF_RU_GameFiles),
- SIMON1DOS_INF_RU_GameFiles,
GF_OLD_BUNDLE,
- Common::RU_RUS,
- Common::kPlatformPC,
},
// Simon the Sorcerer 1 - French DOS Floppy
{
- "simon1",
+ {
+ "simon1",
+ "Floppy",
+ ARRAYSIZE(SIMON1DOS_FR_GameFiles),
+ SIMON1DOS_FR_GameFiles,
+ Common::FR_FRA,
+ Common::kPlatformPC,
+ },
+
GType_SIMON1,
GID_SIMON1DOS_FR,
- "Floppy",
- ARRAYSIZE(SIMON1DOS_FR_GameFiles),
- SIMON1DOS_FR_GameFiles,
GF_OLD_BUNDLE,
- Common::FR_FRA,
- Common::kPlatformPC,
},
// Simon the Sorcerer 1 - German DOS Floppy
{
- "simon1",
+ {
+ "simon1",
+ "Floppy",
+ ARRAYSIZE(SIMON1DOS_DE_GameFiles),
+ SIMON1DOS_DE_GameFiles,
+ Common::DE_DEU,
+ Common::kPlatformPC,
+ },
+
GType_SIMON1,
GID_SIMON1DOS_DE,
- "Floppy",
- ARRAYSIZE(SIMON1DOS_DE_GameFiles),
- SIMON1DOS_DE_GameFiles,
GF_OLD_BUNDLE,
- Common::DE_DEU,
- Common::kPlatformPC,
},
// Simon the Sorcerer 1 - Italian DOS Floppy
{
- "simon1",
+ {
+ "simon1",
+ "Floppy",
+ ARRAYSIZE(SIMON1DOS_IT_GameFiles),
+ SIMON1DOS_IT_GameFiles,
+ Common::IT_ITA,
+ Common::kPlatformPC,
+ },
+
GType_SIMON1,
GID_SIMON1DOS_IT,
- "Floppy",
- ARRAYSIZE(SIMON1DOS_IT_GameFiles),
- SIMON1DOS_IT_GameFiles,
GF_OLD_BUNDLE,
- Common::IT_ITA,
- Common::kPlatformPC,
},
// Simon the Sorcerer 1 - Spanish DOS Floppy
{
- "simon1",
+ {
+ "simon1",
+ "Floppy",
+ ARRAYSIZE(SIMON1DOS_ES_GameFiles),
+ SIMON1DOS_ES_GameFiles,
+ Common::ES_ESP,
+ Common::kPlatformPC,
+ },
+
GType_SIMON1,
GID_SIMON1DOS_ES,
- "Floppy",
- ARRAYSIZE(SIMON1DOS_ES_GameFiles),
- SIMON1DOS_ES_GameFiles,
GF_OLD_BUNDLE,
- Common::ES_ESP,
- Common::kPlatformPC,
},
// Simon the Sorcerer 1 - English DOS CD
{
- "simon1",
+ {
+ "simon1",
+ "CD",
+ ARRAYSIZE(SIMON1TALKIE_GameFiles),
+ SIMON1TALKIE_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformPC,
+ },
+
GType_SIMON1,
GID_SIMON1TALKIE,
- "CD",
- ARRAYSIZE(SIMON1TALKIE_GameFiles),
- SIMON1TALKIE_GameFiles,
GF_TALKIE,
- Common::EN_ANY,
- Common::kPlatformPC,
},
// Simon the Sorcerer 1 - English DOS CD alternate?
{
- "simon1",
+ {
+ "simon1",
+ "CD",
+ ARRAYSIZE(SIMON1TALKIE2_GameFiles),
+ SIMON1TALKIE2_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformPC,
+ },
+
GType_SIMON1,
GID_SIMON1TALKIE2,
- "CD",
- ARRAYSIZE(SIMON1TALKIE2_GameFiles),
- SIMON1TALKIE2_GameFiles,
GF_TALKIE,
- Common::EN_ANY,
- Common::kPlatformPC,
},
// Simon the Sorcerer 1 - French DOS CD
{
- "simon1",
+ {
+ "simon1",
+ "CD",
+ ARRAYSIZE(SIMON1TALKIE_FR_GameFiles),
+ SIMON1TALKIE_FR_GameFiles,
+ Common::FR_FRA,
+ Common::kPlatformPC,
+ },
+
GType_SIMON1,
GID_SIMON1TALKIE_FR,
- "CD",
- ARRAYSIZE(SIMON1TALKIE_FR_GameFiles),
- SIMON1TALKIE_FR_GameFiles,
GF_TALKIE,
- Common::FR_FRA,
- Common::kPlatformPC,
},
// Simon the Sorcerer 1 - German DOS CD
{
- "simon1",
+ {
+ "simon1",
+ "CD",
+ ARRAYSIZE(SIMON1TALKIE_DE_GameFiles),
+ SIMON1TALKIE_DE_GameFiles,
+ Common::DE_DEU,
+ Common::kPlatformPC,
+ },
+
GType_SIMON1,
GID_SIMON1TALKIE_DE,
- "CD",
- ARRAYSIZE(SIMON1TALKIE_DE_GameFiles),
- SIMON1TALKIE_DE_GameFiles,
GF_TALKIE,
- Common::DE_DEU,
- Common::kPlatformPC,
},
// Simon the Sorcerer 1 - Hebrew DOS CD
{
- "simon1",
+ {
+ "simon1",
+ "CD",
+ ARRAYSIZE(SIMON1TALKIE_HB_GameFiles),
+ SIMON1TALKIE_HB_GameFiles,
+ Common::HB_ISR,
+ Common::kPlatformPC,
+ },
+
GType_SIMON1,
GID_SIMON1TALKIE_HB,
- "CD",
- ARRAYSIZE(SIMON1TALKIE_HB_GameFiles),
- SIMON1TALKIE_HB_GameFiles,
GF_TALKIE,
- Common::HB_ISR,
- Common::kPlatformPC,
},
// Simon the Sorcerer 1 - Italian DOS CD
{
- "simon1",
+ {
+ "simon1",
+ "CD",
+ ARRAYSIZE(SIMON1TALKIE_IT_GameFiles),
+ SIMON1TALKIE_IT_GameFiles,
+ Common::IT_ITA,
+ Common::kPlatformPC,
+ },
+
GType_SIMON1,
GID_SIMON1TALKIE_IT,
- "CD",
- ARRAYSIZE(SIMON1TALKIE_IT_GameFiles),
- SIMON1TALKIE_IT_GameFiles,
GF_TALKIE,
- Common::IT_ITA,
- Common::kPlatformPC,
},
// Simon the Sorcerer 1 - Italian DOS CD alternate
{
- "simon1",
+ {
+ "simon1",
+ "CD",
+ ARRAYSIZE(SIMON1TALKIE_IT2_GameFiles),
+ SIMON1TALKIE_IT2_GameFiles,
+ // FIXME: DOS version which uses WAV format
+ Common::IT_ITA,
+ Common::kPlatformWindows,
+ },
+
GType_SIMON1,
GID_SIMON1TALKIE_IT2,
- "CD",
- ARRAYSIZE(SIMON1TALKIE_IT2_GameFiles),
- SIMON1TALKIE_IT2_GameFiles,
GF_TALKIE,
- Common::IT_ITA,
- // FIXME: DOS version which uses WAV format
- Common::kPlatformWindows,
},
// Simon the Sorcerer 1 - Spanish DOS CD
{
- "simon1",
+ {
+ "simon1",
+ "CD",
+ ARRAYSIZE(SIMON1TALKIE_ES_GameFiles),
+ SIMON1TALKIE_ES_GameFiles,
+ Common::ES_ESP,
+ Common::kPlatformPC,
+ },
+
GType_SIMON1,
GID_SIMON1TALKIE_ES,
- "CD",
- ARRAYSIZE(SIMON1TALKIE_ES_GameFiles),
- SIMON1TALKIE_ES_GameFiles,
GF_TALKIE,
- Common::ES_ESP,
- Common::kPlatformPC,
},
// Simon the Sorcerer 1 - English Windows CD
{
- "simon1",
+ {
+ "simon1",
+ "CD",
+ ARRAYSIZE(SIMON1WIN_GameFiles),
+ SIMON1WIN_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ },
+
GType_SIMON1,
GID_SIMON1WIN,
- "CD",
- ARRAYSIZE(SIMON1WIN_GameFiles),
- SIMON1WIN_GameFiles,
GF_TALKIE,
- Common::EN_ANY,
- Common::kPlatformWindows,
},
// Simon the Sorcerer 1 - English Windows CD with Russian patch
{
- "simon1",
+ {
+ "simon1",
+ "CD",
+ ARRAYSIZE(SIMON1WIN_RU_GameFiles),
+ SIMON1WIN_RU_GameFiles,
+ Common::RU_RUS,
+ Common::kPlatformWindows,
+ },
+
GType_SIMON1,
GID_SIMON1WIN_RU,
- "CD",
- ARRAYSIZE(SIMON1WIN_RU_GameFiles),
- SIMON1WIN_RU_GameFiles,
GF_TALKIE,
- Common::RU_RUS,
- Common::kPlatformWindows,
},
// Simon the Sorcerer 1 - German Windows CD
{
- "simon1",
+ {
+ "simon1",
+ "CD",
+ ARRAYSIZE(SIMON1WIN_DE_GameFiles),
+ SIMON1WIN_DE_GameFiles,
+ Common::DE_DEU,
+ Common::kPlatformWindows,
+ },
+
GType_SIMON1,
GID_SIMON1WIN_DE,
- "CD",
- ARRAYSIZE(SIMON1WIN_DE_GameFiles),
- SIMON1WIN_DE_GameFiles,
GF_TALKIE,
- Common::DE_DEU,
- Common::kPlatformWindows,
},
// Simon the Sorcerer 2 - English DOS Floppy
{
- "simon2",
+ {
+ "simon2",
+ "Floppy",
+ ARRAYSIZE(SIMON2DOS_GameFiles),
+ SIMON2DOS_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformPC,
+ },
+
GType_SIMON2,
GID_SIMON2DOS,
- "Floppy",
- ARRAYSIZE(SIMON2DOS_GameFiles),
- SIMON2DOS_GameFiles,
0,
- Common::EN_ANY,
- Common::kPlatformPC,
},
// Simon the Sorcerer 2 - English DOS Floppy with Russian patch
{
- "simon2",
+ {
+ "simon2",
+ "Floppy",
+ ARRAYSIZE(SIMON2DOS_RU_GameFiles),
+ SIMON2DOS_RU_GameFiles,
+ Common::RU_RUS,
+ Common::kPlatformPC,
+ },
+
GType_SIMON2,
GID_SIMON2DOS_RU,
- "Floppy",
- ARRAYSIZE(SIMON2DOS_RU_GameFiles),
- SIMON2DOS_RU_GameFiles,
0,
- Common::RU_RUS,
- Common::kPlatformPC,
},
// Simon the Sorcerer 2 - English DOS Floppy alternate?
{
- "simon2",
+ {
+ "simon2",
+ "Floppy",
+ ARRAYSIZE(SIMON2DOS2_GameFiles),
+ SIMON2DOS2_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformPC,
+ },
+
GType_SIMON2,
GID_SIMON2DOS2,
- "Floppy",
- ARRAYSIZE(SIMON2DOS2_GameFiles),
- SIMON2DOS2_GameFiles,
0,
- Common::EN_ANY,
- Common::kPlatformPC,
},
// Simon the Sorcerer 2 - English DOS Floppy alternate? with Russian patch
{
- "simon2",
+ {
+ "simon2",
+ "Floppy",
+ ARRAYSIZE(SIMON2DOS2_RU_GameFiles),
+ SIMON2DOS2_RU_GameFiles,
+ Common::RU_RUS,
+ Common::kPlatformPC,
+ },
+
GType_SIMON2,
GID_SIMON2DOS2_RU,
- "Floppy",
- ARRAYSIZE(SIMON2DOS2_RU_GameFiles),
- SIMON2DOS2_RU_GameFiles,
0,
- Common::RU_RUS,
- Common::kPlatformPC,
},
// Simon the Sorcerer 2 - German DOS Floppy
{
- "simon2",
+ {
+ "simon2",
+ "Floppy",
+ ARRAYSIZE(SIMON2DOS_DE_GameFiles),
+ SIMON2DOS_DE_GameFiles,
+ Common::DE_DEU,
+ Common::kPlatformPC,
+ },
+
GType_SIMON2,
GID_SIMON2DOS_DE,
- "Floppy",
- ARRAYSIZE(SIMON2DOS_DE_GameFiles),
- SIMON2DOS_DE_GameFiles,
0,
- Common::DE_DEU,
- Common::kPlatformPC,
},
// Simon the Sorcerer 2 - Italian DOS Floppy
{
- "simon2",
+ {
+ "simon2",
+ "Floppy",
+ ARRAYSIZE(SIMON2DOS_IT_GameFiles),
+ SIMON2DOS_IT_GameFiles,
+ Common::IT_ITA,
+ Common::kPlatformPC,
+ },
+
GType_SIMON2,
GID_SIMON2DOS_IT,
- "Floppy",
- ARRAYSIZE(SIMON2DOS_IT_GameFiles),
- SIMON2DOS_IT_GameFiles,
0,
- Common::IT_ITA,
- Common::kPlatformPC,
},
// Simon the Sorcerer 2 - English DOS CD Demo
{
- "simon2",
+ {
+ "simon2",
+ "CD Demo",
+ ARRAYSIZE(SIMON2DEMO_GameFiles),
+ SIMON2DEMO_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformPC,
+ },
+
GType_SIMON2,
GID_SIMON2DEMO,
- "CD Demo",
- ARRAYSIZE(SIMON2DEMO_GameFiles),
- SIMON2DEMO_GameFiles,
GF_TALKIE,
- Common::EN_ANY,
- Common::kPlatformPC,
},
// Simon the Sorcerer 2 - English DOS CD
{
- "simon2",
+ {
+ "simon2",
+ "CD",
+ ARRAYSIZE(SIMON2TALKIE_GameFiles),
+ SIMON2TALKIE_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformPC,
+ },
+
GType_SIMON2,
GID_SIMON2TALKIE,
- "CD",
- ARRAYSIZE(SIMON2TALKIE_GameFiles),
- SIMON2TALKIE_GameFiles,
GF_TALKIE,
- Common::EN_ANY,
- Common::kPlatformPC,
},
-
// Simon the Sorcerer 2 - English DOS CD alternate?
{
- "simon2",
+ {
+ "simon2",
+ "CD",
+ ARRAYSIZE(SIMON2TALKIE2_GameFiles),
+ SIMON2TALKIE2_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformPC,
+ },
+
GType_SIMON2,
GID_SIMON2TALKIE2,
- "CD",
- ARRAYSIZE(SIMON2TALKIE2_GameFiles),
- SIMON2TALKIE2_GameFiles,
GF_TALKIE,
- Common::EN_ANY,
- Common::kPlatformPC,
},
// Simon the Sorcerer 2 - French DOS CD
{
- "simon2",
+ {
+ "simon2",
+ "CD",
+ ARRAYSIZE(SIMON2TALKIE_FR_GameFiles),
+ SIMON2TALKIE_FR_GameFiles,
+ Common::FR_FRA,
+ Common::kPlatformPC,
+ },
+
GType_SIMON2,
GID_SIMON2TALKIE_FR,
- "CD",
- ARRAYSIZE(SIMON2TALKIE_FR_GameFiles),
- SIMON2TALKIE_FR_GameFiles,
GF_TALKIE,
- Common::FR_FRA,
- Common::kPlatformPC,
},
// Simon the Sorcerer 2 - German DOS CD
{
- "simon2",
+ {
+ "simon2",
+ "CD",
+ ARRAYSIZE(SIMON2TALKIE_DE_GameFiles),
+ SIMON2TALKIE_DE_GameFiles,
+ Common::DE_DEU,
+ Common::kPlatformPC,
+ },
+
GType_SIMON2,
GID_SIMON2TALKIE_DE,
- "CD",
- ARRAYSIZE(SIMON2TALKIE_DE_GameFiles),
- SIMON2TALKIE_DE_GameFiles,
GF_TALKIE,
- Common::DE_DEU,
- Common::kPlatformPC,
},
// Simon the Sorcerer 2 - German DOS CD alternate?
{
- "simon2",
+ {
+ "simon2",
+ "CD",
+ ARRAYSIZE(SIMON2TALKIE_DE2_GameFiles),
+ SIMON2TALKIE_DE2_GameFiles,
+ Common::DE_DEU,
+ Common::kPlatformPC,
+ },
+
GType_SIMON2,
GID_SIMON2TALKIE_DE2,
- "CD",
- ARRAYSIZE(SIMON2TALKIE_DE2_GameFiles),
- SIMON2TALKIE_DE2_GameFiles,
GF_TALKIE,
- Common::DE_DEU,
- Common::kPlatformPC,
},
// Simon the Sorcerer 2 - Hebrew DOS CD
{
- "simon2",
+ {
+ "simon2",
+ "CD",
+ ARRAYSIZE(SIMON2TALKIE_HB_GameFiles),
+ SIMON2TALKIE_HB_GameFiles,
+ Common::HB_ISR,
+ Common::kPlatformPC,
+ },
+
GType_SIMON2,
GID_SIMON2TALKIE_HB,
- "CD",
- ARRAYSIZE(SIMON2TALKIE_HB_GameFiles),
- SIMON2TALKIE_HB_GameFiles,
GF_TALKIE,
- Common::HB_ISR,
- Common::kPlatformPC,
},
// Simon the Sorcerer 2 - Italian DOS CD
{
- "simon2",
+ {
+ "simon2",
+ "CD",
+ ARRAYSIZE(SIMON2TALKIE_IT_GameFiles),
+ SIMON2TALKIE_IT_GameFiles,
+ // FIXME: DOS version which uses WAV format
+ Common::IT_ITA,
+ Common::kPlatformWindows,
+ },
+
GType_SIMON2,
GID_SIMON2TALKIE_IT,
- "CD",
- ARRAYSIZE(SIMON2TALKIE_IT_GameFiles),
- SIMON2TALKIE_IT_GameFiles,
GF_TALKIE,
- Common::IT_ITA,
- // FIXME: DOS version which uses WAV format
- Common::kPlatformWindows,
},
// Simon the Sorcerer 2 - Spanish DOS CD
{
- "simon2",
+ {
+ "simon2",
+ "CD",
+ ARRAYSIZE(SIMON2TALKIE_ES_GameFiles),
+ SIMON2TALKIE_ES_GameFiles,
+ Common::ES_ESP,
+ Common::kPlatformPC,
+ },
+
GType_SIMON2,
GID_SIMON2TALKIE_ES,
- "CD",
- ARRAYSIZE(SIMON2TALKIE_ES_GameFiles),
- SIMON2TALKIE_ES_GameFiles,
GF_TALKIE,
- Common::ES_ESP,
- Common::kPlatformPC,
},
// Simon the Sorcerer 2 - English Windows CD
{
- "simon2",
+ {
+ "simon2",
+ "CD",
+ ARRAYSIZE(SIMON2WIN_GameFiles),
+ SIMON2WIN_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ },
+
GType_SIMON2,
GID_SIMON2WIN,
- "CD",
- ARRAYSIZE(SIMON2WIN_GameFiles),
- SIMON2WIN_GameFiles,
GF_TALKIE,
- Common::EN_ANY,
- Common::kPlatformWindows,
},
// Simon the Sorcerer 2 - German Windows CD
{
- "simon2",
+ {
+ "simon2",
+ "CD",
+ ARRAYSIZE(SIMON2WIN_DE_GameFiles),
+ SIMON2WIN_DE_GameFiles,
+ Common::DE_DEU,
+ Common::kPlatformWindows,
+ },
+
GType_SIMON2,
GID_SIMON2WIN_DE,
- "CD",
- ARRAYSIZE(SIMON2WIN_DE_GameFiles),
- SIMON2WIN_DE_GameFiles,
GF_TALKIE,
- Common::DE_DEU,
- Common::kPlatformWindows,
},
// Simon the Sorcerer 2 - German Windows CD 1.1
{
- "simon2",
+ {
+ "simon2",
+ "CD",
+ ARRAYSIZE(SIMON2WIN_DE2_GameFiles),
+ SIMON2WIN_DE2_GameFiles,
+ Common::DE_DEU,
+ Common::kPlatformWindows,
+ },
+
GType_SIMON2,
GID_SIMON2WIN_DE2,
- "CD",
- ARRAYSIZE(SIMON2WIN_DE2_GameFiles),
- SIMON2WIN_DE2_GameFiles,
GF_TALKIE,
- Common::DE_DEU,
- Common::kPlatformWindows,
},
// Simon the Sorcerer 2 - Polish Windows CD
{
- "simon2",
+ {
+ "simon2",
+ "CD",
+ ARRAYSIZE(SIMON2WIN_PL_GameFiles),
+ SIMON2WIN_PL_GameFiles,
+ Common::PL_POL,
+ Common::kPlatformWindows,
+ },
+
GType_SIMON2,
GID_SIMON2WIN_PL,
- "CD",
- ARRAYSIZE(SIMON2WIN_PL_GameFiles),
- SIMON2WIN_PL_GameFiles,
GF_TALKIE,
- Common::PL_POL,
- Common::kPlatformWindows,
},
// The Feeble Files - English Amiga CD
{
- "feeble",
+ {
+ "feeble",
+ "CD",
+ ARRAYSIZE(FEEBLEFILES_AMI_UK_GameFiles),
+ FEEBLEFILES_AMI_UK_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformAmiga,
+ },
+
GType_FF,
GID_FEEBLEFILES_AMI_UK,
- "CD",
- ARRAYSIZE(FEEBLEFILES_AMI_UK_GameFiles),
- FEEBLEFILES_AMI_UK_GameFiles,
GF_OLD_BUNDLE | GF_ZLIBCOMP | GF_TALKIE,
- Common::EN_ANY,
- Common::kPlatformAmiga,
},
// The Feeble Files - German Amiga CD
{
- "feeble",
+ {
+ "feeble",
+ "CD",
+ ARRAYSIZE(FEEBLEFILES_AMI_DE_GameFiles),
+ FEEBLEFILES_AMI_DE_GameFiles,
+ Common::DE_DEU,
+ Common::kPlatformAmiga,
+ },
+
GType_FF,
GID_FEEBLEFILES_AMI_DE,
- "CD",
- ARRAYSIZE(FEEBLEFILES_AMI_DE_GameFiles),
- FEEBLEFILES_AMI_DE_GameFiles,
GF_OLD_BUNDLE | GF_ZLIBCOMP | GF_TALKIE,
- Common::DE_DEU,
- Common::kPlatformAmiga,
},
// The Feeble Files - English Macintosh CD
{
- "feeble",
+ {
+ "feeble",
+ "CD",
+ ARRAYSIZE(FEEBLEFILES_MAC_UK_GameFiles),
+ FEEBLEFILES_MAC_UK_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformMacintosh,
+ },
+
GType_FF,
GID_FEEBLEFILES_MAC_UK,
- "CD",
- ARRAYSIZE(FEEBLEFILES_MAC_UK_GameFiles),
- FEEBLEFILES_MAC_UK_GameFiles,
GF_OLD_BUNDLE | GF_ZLIBCOMP | GF_TALKIE,
- Common::EN_ANY,
- Common::kPlatformMacintosh,
},
// The Feeble Files - French Macintosh CD
{
- "feeble",
+ {
+ "feeble",
+ "CD",
+ ARRAYSIZE(FEEBLEFILES_MAC_FR_GameFiles),
+ FEEBLEFILES_MAC_FR_GameFiles,
+ Common::FR_FRA,
+ Common::kPlatformMacintosh,
+ },
+
GType_FF,
GID_FEEBLEFILES_MAC_FR,
- "CD",
- ARRAYSIZE(FEEBLEFILES_MAC_FR_GameFiles),
- FEEBLEFILES_MAC_FR_GameFiles,
GF_OLD_BUNDLE | GF_ZLIBCOMP | GF_TALKIE,
- Common::FR_FRA,
- Common::kPlatformMacintosh,
},
// The Feeble Files - German Macintosh CD
{
- "feeble",
+ {
+ "feeble",
+ "CD",
+ ARRAYSIZE(FEEBLEFILES_MAC_DE_GameFiles),
+ FEEBLEFILES_MAC_DE_GameFiles,
+ Common::DE_DEU,
+ Common::kPlatformMacintosh,
+ },
+
GType_FF,
GID_FEEBLEFILES_MAC_DE,
- "CD",
- ARRAYSIZE(FEEBLEFILES_MAC_DE_GameFiles),
- FEEBLEFILES_MAC_DE_GameFiles,
GF_OLD_BUNDLE | GF_ZLIBCOMP | GF_TALKIE,
- Common::DE_DEU,
- Common::kPlatformMacintosh,
},
// The Feeble Files - Spanish Macintosh CD
{
- "feeble",
+ {
+ "feeble",
+ "CD",
+ ARRAYSIZE(FEEBLEFILES_MAC_ES_GameFiles),
+ FEEBLEFILES_MAC_ES_GameFiles,
+ Common::ES_ESP,
+ Common::kPlatformMacintosh,
+ },
+
GType_FF,
GID_FEEBLEFILES_MAC_ES,
- "CD",
- ARRAYSIZE(FEEBLEFILES_MAC_ES_GameFiles),
- FEEBLEFILES_MAC_ES_GameFiles,
GF_OLD_BUNDLE | GF_ZLIBCOMP | GF_TALKIE,
- Common::ES_ESP,
- Common::kPlatformMacintosh,
},
// The Feeble Files - English Windows 2CD
{
- "feeble",
+ {
+ "feeble",
+ "2CD",
+ ARRAYSIZE(FEEBLEFILES_2CD_GameFiles),
+ FEEBLEFILES_2CD_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ },
+
GType_FF,
GID_FEEBLEFILES_2CD,
- "2CD",
- ARRAYSIZE(FEEBLEFILES_2CD_GameFiles),
- FEEBLEFILES_2CD_GameFiles,
GF_OLD_BUNDLE | GF_TALKIE,
- Common::EN_ANY,
- Common::kPlatformWindows,
},
// The Feeble Files - English Windows 4CD
{
- "feeble",
+ {
+ "feeble",
+ "4CD",
+ ARRAYSIZE(FEEBLEFILES_4CD_GameFiles),
+ FEEBLEFILES_4CD_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ },
+
GType_FF,
GID_FEEBLEFILES_4CD,
- "4CD",
- ARRAYSIZE(FEEBLEFILES_4CD_GameFiles),
- FEEBLEFILES_4CD_GameFiles,
GF_OLD_BUNDLE | GF_TALKIE,
- Common::EN_ANY,
- Common::kPlatformWindows,
},
// The Feeble Files - French Windows 4CD
{
- "feeble",
+ {
+ "feeble",
+ "4CD",
+ ARRAYSIZE(FEEBLEFILES_FR_GameFiles),
+ FEEBLEFILES_FR_GameFiles,
+ Common::FR_FRA,
+ Common::kPlatformWindows,
+ },
+
GType_FF,
GID_FEEBLEFILES_FR,
- "4CD",
- ARRAYSIZE(FEEBLEFILES_FR_GameFiles),
- FEEBLEFILES_FR_GameFiles,
GF_OLD_BUNDLE | GF_TALKIE,
- Common::FR_FRA,
- Common::kPlatformWindows,
},
// The Feeble Files - German Windows 4CD
{
- "feeble",
+ {
+ "feeble",
+ "4CD",
+ ARRAYSIZE(FEEBLEFILES_DE_GameFiles),
+ FEEBLEFILES_DE_GameFiles,
+ Common::DE_DEU,
+ Common::kPlatformWindows,
+ },
+
GType_FF,
GID_FEEBLEFILES_DE,
- "4CD",
- ARRAYSIZE(FEEBLEFILES_DE_GameFiles),
- FEEBLEFILES_DE_GameFiles,
GF_OLD_BUNDLE | GF_TALKIE,
- Common::DE_DEU,
- Common::kPlatformWindows,
},
// The Feeble Files - Italian Windows 4CD
{
- "feeble",
+ {
+ "feeble",
+ "4CD",
+ ARRAYSIZE(FEEBLEFILES_IT_GameFiles),
+ FEEBLEFILES_IT_GameFiles,
+ Common::IT_ITA,
+ Common::kPlatformWindows,
+ },
+
GType_FF,
GID_FEEBLEFILES_IT,
- "4CD",
- ARRAYSIZE(FEEBLEFILES_IT_GameFiles),
- FEEBLEFILES_IT_GameFiles,
GF_OLD_BUNDLE | GF_TALKIE,
- Common::IT_ITA,
- Common::kPlatformWindows,
},
// The Feeble Files - Spanish Windows 4CD
{
- "feeble",
+ {
+ "feeble",
+ "4CD",
+ ARRAYSIZE(FEEBLEFILES_ES_GameFiles),
+ FEEBLEFILES_ES_GameFiles,
+ Common::ES_ESP,
+ Common::kPlatformWindows,
+ },
+
GType_FF,
GID_FEEBLEFILES_ES,
- "4CD",
- ARRAYSIZE(FEEBLEFILES_ES_GameFiles),
- FEEBLEFILES_ES_GameFiles,
GF_OLD_BUNDLE | GF_TALKIE,
- Common::ES_ESP,
- Common::kPlatformWindows,
},
// Simon the Sorcerer's Puzzle Pack - Demon in my Pocket
{
- "dimp",
+ {
+ "dimp",
+ "CD",
+ ARRAYSIZE(DIMP_GameFiles),
+ DIMP_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ },
+
GType_PP,
GID_DIMP,
- "CD",
- ARRAYSIZE(DIMP_GameFiles),
- DIMP_GameFiles,
GF_OLD_BUNDLE | GF_TALKIE,
- Common::EN_ANY,
- Common::kPlatformWindows,
},
// Simon the Sorcerer's Puzzle Pack - Jumble
{
- "jumble",
+ {
+ "jumble",
+ "CD",
+ ARRAYSIZE(JUMBLE_GameFiles),
+ JUMBLE_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ },
+
GType_PP,
GID_JUMBLE,
- "CD",
- ARRAYSIZE(JUMBLE_GameFiles),
- JUMBLE_GameFiles,
GF_OLD_BUNDLE | GF_TALKIE,
- Common::EN_ANY,
- Common::kPlatformWindows,
},
// Simon the Sorcerer's Puzzle Pack - NoPatience
{
- "puzzle",
+ {
+ "puzzle",
+ "CD",
+ ARRAYSIZE(PUZZLE_GameFiles),
+ PUZZLE_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ },
+
GType_PP,
GID_PUZZLE,
- "CD",
- ARRAYSIZE(PUZZLE_GameFiles),
- PUZZLE_GameFiles,
GF_OLD_BUNDLE | GF_TALKIE,
- Common::EN_ANY,
- Common::kPlatformWindows,
},
// Simon the Sorcerer's Puzzle Pack - Swampy Adventures
{
- "swampy",
+ {
+ "swampy",
+ "CD",
+ ARRAYSIZE(SWAMPY_GameFiles),
+ SWAMPY_GameFiles,
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ },
+
GType_PP,
GID_SWAMPY,
- "CD",
- ARRAYSIZE(SWAMPY_GameFiles),
- SWAMPY_GameFiles,
GF_OLD_BUNDLE | GF_TALKIE,
- Common::EN_ANY,
- Common::kPlatformWindows,
},
-
};
DetectedGame toDetectedGame(const ADGameDescription &g) {
@@ -1557,7 +1756,7 @@ bool AGOSEngine::initGame() {
// over again...
for (int i = 0; i < ARRAYSIZE(gameDescriptions); i++)
- descList.push_back(&gameDescriptions[i]);
+ descList.push_back((ADGameDescription *)&gameDescriptions[i]);
AdvDetector.registerGameDescriptions(descList);
AdvDetector.setFileMD5Bytes(FILE_MD5_BYTES);
@@ -1565,7 +1764,7 @@ bool AGOSEngine::initGame() {
matches = AdvDetector.detectGame(NULL, language, platform);
for (uint i = 0; i < matches.size(); i++) {
- if (toDetectedGame(gameDescriptions[matches[i]]).gameid == gameid) {
+ if (toDetectedGame(gameDescriptions[matches[i]].desc).gameid == gameid) {
gameNumber = matches[i];
break;
}
@@ -1577,7 +1776,7 @@ bool AGOSEngine::initGame() {
error("AGOSEngine::loadGame wrong gameNumber");
}
- debug(2, "Running %s", toDetectedGame(gameDescriptions[gameNumber]).description.c_str());
+ debug(2, "Running %s", toDetectedGame(gameDescriptions[gameNumber].desc).description.c_str());
_gameDescription = &gameDescriptions[gameNumber];
@@ -1591,7 +1790,7 @@ DetectedGameList GAME_detectGames(const FSList &fslist) {
Common::ADGameDescList descList;
for (int i = 0; i < ARRAYSIZE(gameDescriptions); i++)
- descList.push_back(&gameDescriptions[i]);
+ descList.push_back((ADGameDescription *)&gameDescriptions[i]);
AdvDetector.registerGameDescriptions(descList);
AdvDetector.setFileMD5Bytes(FILE_MD5_BYTES);
@@ -1599,7 +1798,7 @@ DetectedGameList GAME_detectGames(const FSList &fslist) {
matches = AdvDetector.detectGame(&fslist, Common::UNK_LANG, Common::kPlatformUnknown);
for (uint i = 0; i < matches.size(); i++)
- detectedGames.push_back(toDetectedGame(gameDescriptions[matches[i]]));
+ detectedGames.push_back(toDetectedGame(gameDescriptions[matches[i]].desc));
//delete &matches;
return detectedGames;
diff --git a/engines/agos/items.cpp b/engines/agos/items.cpp
index 29de3ffade..0db5b30457 100644
--- a/engines/agos/items.cpp
+++ b/engines/agos/items.cpp
@@ -2226,9 +2226,9 @@ void AGOSEngine::o3_checkCD() {
// 135: switch CD
uint disc = readVariable(97);
- if (!strcmp(_gameDescription->extra, "4CD")) {
+ if (!strcmp(_gameDescription->desc.extra, "4CD")) {
_sound->switchVoiceFile(gss, disc);
- } else if (!strcmp(_gameDescription->extra, "2CD")) {
+ } else if (!strcmp(_gameDescription->desc.extra, "2CD")) {
if (disc == 1 || disc == 2)
_sound->switchVoiceFile(gss, 1);
else if (disc == 3 || disc == 4)
diff --git a/engines/saga/game.cpp b/engines/saga/game.cpp
index ab42f730b9..3f3ba177bc 100644
--- a/engines/saga/game.cpp
+++ b/engines/saga/game.cpp
@@ -112,11 +112,11 @@ using Common::ADGameDescription;
#include "sagagame.cpp"
-DetectedGame toDetectedGame(const ADGameDescription &g) {
+DetectedGame toDetectedGame(const SAGAGameDescription &g) {
const char *title;
title = saga_games[g.gameType].description;
- DetectedGame dg(g.name, title, g.language, g.platform);
- dg.updateDesc(g.extra);
+ DetectedGame dg(g.desc.name, title, g.desc.language, g.desc.platform);
+ dg.updateDesc(g.desc.extra);
return dg;
}
@@ -162,7 +162,7 @@ bool SagaEngine::initGame() {
error("SagaEngine::loadGame wrong gameNumber");
}
- _gameTitle = toDetectedGame(gameDescriptions[gameNumber].desc).description;
+ _gameTitle = toDetectedGame(gameDescriptions[gameNumber]).description;
debug(2, "Running %s", _gameTitle.c_str());
_gameNumber = gameNumber;
@@ -192,7 +192,7 @@ DetectedGameList GAME_detectGames(const FSList &fslist) {
matches = AdvDetector.detectGame(&fslist, Common::UNK_LANG, Common::kPlatformUnknown);
for (uint i = 0; i < matches.size(); i++)
- detectedGames.push_back(toDetectedGame(gameDescriptions[matches[i]].desc));
+ detectedGames.push_back(toDetectedGame(gameDescriptions[matches[i]]));
//delete matches;
return detectedGames;
diff --git a/engines/saga/saga.h b/engines/saga/saga.h
index d0b3291b93..7b2f112505 100644
--- a/engines/saga/saga.h
+++ b/engines/saga/saga.h
@@ -374,7 +374,7 @@ public:
bool initGame(void);
public:
const SAGAGameDescription *getGameDescription() const { return _gameDescription; }
- const bool isBigEndian() const { return (_gameDescription->desc.features & GF_BIG_ENDIAN_DATA) != 0; }
+ const bool isBigEndian() const { return (_gameDescription->features & GF_BIG_ENDIAN_DATA) != 0; }
const bool isMacResources() const { return (getPlatform() == Common::kPlatformMacintosh); }
const GameResourceDescription *getResourceDescription() { return _gameDescription->resourceDescription; }
const GameSoundInfo *getVoiceInfo() const { return _gameDescription->voiceInfo; }
@@ -387,9 +387,9 @@ public:
}
int getFontsCount() const { return _gameDescription->fontsCount; }
- int getGameId() const { return _gameDescription->desc.gameId; }
- int getGameType() const { return _gameDescription->desc.gameType; }
- uint32 getFeatures() const { return _gameDescription->desc.features; }
+ int getGameId() const { return _gameDescription->gameId; }
+ int getGameType() const { return _gameDescription->gameType; }
+ uint32 getFeatures() const { return _gameDescription->features; }
Common::Language getLanguage() const { return _gameDescription->desc.language; }
Common::Platform getPlatform() const { return _gameDescription->desc.platform; }
int getGameNumber() const { return _gameNumber; }
diff --git a/engines/saga/sagagame.cpp b/engines/saga/sagagame.cpp
index 56e2b95207..06d85ff8ff 100644
--- a/engines/saga/sagagame.cpp
+++ b/engines/saga/sagagame.cpp
@@ -818,15 +818,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_DEMO_G, // Game id
"Demo", // Game title
ARRAYSIZE(ITE_DEMO_G_GameFiles), // Game datafiles
ITE_DEMO_G_GameFiles,
- 0, // features
Common::EN_ANY,
Common::kPlatformPC,
},
+ GType_ITE,
+ GID_ITE_DEMO_G, // Game id
+ 0, // features
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE, // Starting scene number
&ITEDemo_Resources,
@@ -843,15 +843,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_MACDEMO2,
"Demo",
ARRAYSIZE(ITE_MACDEMO2_GameFiles),
ITE_MACDEMO2_GameFiles,
- GF_BIG_ENDIAN_DATA | GF_WYRMKEEP | GF_CD_FX | GF_SCENE_SUBSTITUTES,
Common::EN_ANY,
Common::kPlatformMacintosh,
},
+ GType_ITE,
+ GID_ITE_MACDEMO2,
+ GF_BIG_ENDIAN_DATA | GF_WYRMKEEP | GF_CD_FX | GF_SCENE_SUBSTITUTES,
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE,
&ITE_Resources,
@@ -868,15 +868,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_MACDEMO1,
"early Demo",
ARRAYSIZE(ITE_MACDEMO1_GameFiles),
ITE_MACDEMO1_GameFiles,
- GF_BIG_ENDIAN_DATA | GF_WYRMKEEP | GF_CD_FX,
Common::EN_ANY,
Common::kPlatformMacintosh,
},
+ GType_ITE,
+ GID_ITE_MACDEMO1,
+ GF_BIG_ENDIAN_DATA | GF_WYRMKEEP | GF_CD_FX,
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE,
&ITE_Resources,
@@ -893,15 +893,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_MACCD_G,
"CD",
ARRAYSIZE(ITE_MACCD_G_GameFiles),
ITE_MACCD_G_GameFiles,
- GF_BIG_ENDIAN_DATA | GF_CD_FX,
Common::EN_ANY,
Common::kPlatformMacintosh,
},
+ GType_ITE,
+ GID_ITE_MACCD_G,
+ GF_BIG_ENDIAN_DATA | GF_CD_FX,
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE,
&ITE_Resources,
@@ -918,15 +918,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_MACCD,
"Wyrmkeep CD",
ARRAYSIZE(ITE_MACCD_GameFiles),
ITE_MACCD_GameFiles,
- GF_BIG_ENDIAN_DATA | GF_WYRMKEEP | GF_CD_FX,
Common::EN_ANY,
Common::kPlatformMacintosh,
},
+ GType_ITE,
+ GID_ITE_MACCD,
+ GF_BIG_ENDIAN_DATA | GF_WYRMKEEP | GF_CD_FX,
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE,
&ITE_Resources,
@@ -944,15 +944,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_LINDEMO,
"Demo",
ARRAYSIZE(ITE_LINDEMO_GameFiles),
ITE_LINDEMO_GameFiles,
- GF_WYRMKEEP | GF_CD_FX | GF_SCENE_SUBSTITUTES,
Common::EN_ANY,
Common::kPlatformLinux,
},
+ GType_ITE,
+ GID_ITE_LINDEMO,
+ GF_WYRMKEEP | GF_CD_FX | GF_SCENE_SUBSTITUTES,
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE,
&ITE_Resources,
@@ -969,15 +969,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_WINDEMO2,
"Demo",
ARRAYSIZE(ITE_WINDEMO2_GameFiles),
ITE_WINDEMO2_GameFiles,
- GF_WYRMKEEP | GF_CD_FX | GF_SCENE_SUBSTITUTES,
Common::EN_ANY,
Common::kPlatformWindows,
},
+ GType_ITE,
+ GID_ITE_WINDEMO2,
+ GF_WYRMKEEP | GF_CD_FX | GF_SCENE_SUBSTITUTES,
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE,
&ITE_Resources,
@@ -994,15 +994,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_WINDEMO1,
"early Demo",
ARRAYSIZE(ITE_WINDEMO1_GameFiles),
ITE_WINDEMO1_GameFiles,
- GF_WYRMKEEP | GF_CD_FX,
Common::EN_ANY,
Common::kPlatformWindows,
},
+ GType_ITE,
+ GID_ITE_WINDEMO1,
+ GF_WYRMKEEP | GF_CD_FX,
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE,
&ITE_Resources,
@@ -1019,15 +1019,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_MULTICD,
"Multi-OS CD Version",
ARRAYSIZE(ITE_MULTICD_GameFiles),
ITE_MULTICD_GameFiles,
- GF_WYRMKEEP | GF_CD_FX,
Common::EN_ANY,
Common::kPlatformUnknown,
},
+ GType_ITE,
+ GID_ITE_MULTICD,
+ GF_WYRMKEEP | GF_CD_FX,
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE,
&ITE_Resources,
@@ -1044,15 +1044,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_LINCD,
"CD Version",
ARRAYSIZE(ITE_LINCD_GameFiles),
ITE_LINCD_GameFiles,
- GF_WYRMKEEP | GF_CD_FX,
Common::EN_ANY,
Common::kPlatformLinux,
},
+ GType_ITE,
+ GID_ITE_LINCD,
+ GF_WYRMKEEP | GF_CD_FX,
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE,
&ITE_Resources,
@@ -1069,15 +1069,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_WINCD,
"CD Version",
ARRAYSIZE(ITE_WINCD_GameFiles),
ITE_WINCD_GameFiles,
- GF_WYRMKEEP | GF_CD_FX,
Common::EN_ANY,
Common::kPlatformWindows,
},
+ GType_ITE,
+ GID_ITE_WINCD,
+ GF_WYRMKEEP | GF_CD_FX,
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE,
&ITE_Resources,
@@ -1094,15 +1094,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_CD_G,
"CD Version",
ARRAYSIZE(ITE_CD_G_GameFiles),
ITE_CD_G_GameFiles,
- GF_CD_FX,
Common::EN_ANY,
Common::kPlatformPC,
},
+ GType_ITE,
+ GID_ITE_CD_G,
+ GF_CD_FX,
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE,
&ITE_Resources,
@@ -1119,15 +1119,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_CD_G2,
"CD Version",
ARRAYSIZE(ITE_CD_G2_GameFiles),
ITE_CD_G2_GameFiles,
- GF_CD_FX,
Common::EN_ANY,
Common::kPlatformPC,
},
+ GType_ITE,
+ GID_ITE_CD_G2,
+ GF_CD_FX,
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE,
&ITE_Resources,
@@ -1144,15 +1144,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_CD_DE,
"CD Version",
ARRAYSIZE(ITE_CD_DE_GameFiles),
ITE_CD_DE_GameFiles,
- GF_CD_FX,
Common::DE_DEU,
Common::kPlatformPC,
},
+ GType_ITE,
+ GID_ITE_CD_DE,
+ GF_CD_FX,
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE,
&ITE_Resources,
@@ -1169,15 +1169,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_CD_DE2,
"CD Version",
ARRAYSIZE(ITE_CD_DE2_GameFiles),
ITE_CD_DE2_GameFiles,
- GF_CD_FX,
Common::DE_DEU,
Common::kPlatformPC,
},
+ GType_ITE,
+ GID_ITE_CD_DE2,
+ GF_CD_FX,
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE,
&ITE_Resources,
@@ -1194,15 +1194,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_CD,
"CD Version",
ARRAYSIZE(ITE_CD_GameFiles),
ITE_CD_GameFiles,
- GF_CD_FX,
Common::EN_ANY,
Common::kPlatformPC,
},
+ GType_ITE,
+ GID_ITE_CD,
+ GF_CD_FX,
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE,
&ITE_Resources,
@@ -1219,15 +1219,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_DISK_DE,
"Floppy",
ARRAYSIZE(ITE_DISK_DE_GameFiles),
ITE_DISK_DE_GameFiles,
- 0,
Common::DE_DEU,
Common::kPlatformPC,
},
+ GType_ITE,
+ GID_ITE_DISK_DE,
+ 0,
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE,
&ITE_Resources,
@@ -1244,15 +1244,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_DISK_DE2,
"Floppy",
ARRAYSIZE(ITE_DISK_DE2_GameFiles),
ITE_DISK_DE2_GameFiles,
- 0,
Common::DE_DEU,
Common::kPlatformPC,
},
+ GType_ITE,
+ GID_ITE_DISK_DE2,
+ 0,
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE,
&ITE_Resources,
@@ -1269,15 +1269,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_DISK_G,
"Floppy",
ARRAYSIZE(ITE_DISK_G_GameFiles),
ITE_DISK_G_GameFiles,
- 0,
Common::EN_ANY,
Common::kPlatformPC,
},
+ GType_ITE,
+ GID_ITE_DISK_G,
+ 0,
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE,
&ITE_Resources,
@@ -1294,15 +1294,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ite",
- GType_ITE,
- GID_ITE_DISK_G2,
"Floppy",
ARRAYSIZE(ITE_DISK_G2_GameFiles),
ITE_DISK_G2_GameFiles,
- 0,
Common::EN_ANY,
Common::kPlatformPC,
},
+ GType_ITE,
+ GID_ITE_DISK_G2,
+ 0,
&ITE_DisplayInfo,
ITE_DEFAULT_SCENE,
&ITE_Resources,
@@ -1319,15 +1319,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ihnm",
- GType_IHNM,
- GID_IHNM_DEMO,
"Demo",
ARRAYSIZE(IHNM_DEMO_GameFiles),
IHNM_DEMO_GameFiles,
- 0,
Common::EN_ANY,
Common::kPlatformPC,
},
+ GType_IHNM,
+ GID_IHNM_DEMO,
+ 0,
&IHNM_DisplayInfo,
0,
&IHNM_Resources,
@@ -1344,15 +1344,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ihnm",
- GType_IHNM,
- GID_IHNM_CD,
"",
ARRAYSIZE(IHNM_CD_GameFiles),
IHNM_CD_GameFiles,
- 0,
Common::EN_ANY,
Common::kPlatformPC,
},
+ GType_IHNM,
+ GID_IHNM_CD,
+ 0,
&IHNM_DisplayInfo,
IHNM_DEFAULT_SCENE,
&IHNM_Resources,
@@ -1369,15 +1369,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ihnm",
- GType_IHNM,
- GID_IHNM_CD_DE,
"",
ARRAYSIZE(IHNM_CD_DE_GameFiles),
IHNM_CD_DE_GameFiles,
- 0,
Common::DE_DEU,
Common::kPlatformPC,
},
+ GType_IHNM,
+ GID_IHNM_CD_DE,
+ 0,
&IHNM_DisplayInfo,
IHNM_DEFAULT_SCENE,
&IHNM_Resources,
@@ -1394,15 +1394,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ihnm",
- GType_IHNM,
- GID_IHNM_CD_ES,
"",
ARRAYSIZE(IHNM_CD_ES_GameFiles),
IHNM_CD_ES_GameFiles,
- 0,
Common::ES_ESP,
Common::kPlatformPC,
},
+ GType_IHNM,
+ GID_IHNM_CD_ES,
+ 0,
&IHNM_DisplayInfo,
IHNM_DEFAULT_SCENE,
&IHNM_Resources,
@@ -1419,15 +1419,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ihnm",
- GType_IHNM,
- GID_IHNM_CD_RU,
"",
ARRAYSIZE(IHNM_CD_RU_GameFiles),
IHNM_CD_RU_GameFiles,
- 0,
Common::RU_RUS,
Common::kPlatformPC,
},
+ GType_IHNM,
+ GID_IHNM_CD_RU,
+ 0,
&IHNM_DisplayInfo,
IHNM_DEFAULT_SCENE,
&IHNM_Resources,
@@ -1444,15 +1444,15 @@ static SAGAGameDescription gameDescriptions[] = {
{
{
"ihnm",
- GType_IHNM,
- GID_IHNM_CD_FR,
"",
ARRAYSIZE(IHNM_CD_FR_GameFiles),
IHNM_CD_FR_GameFiles,
- 0,
Common::FR_FRA,
Common::kPlatformPC,
},
+ GType_IHNM,
+ GID_IHNM_CD_FR,
+ 0,
&IHNM_DisplayInfo,
IHNM_DEFAULT_SCENE,
&IHNM_Resources,
diff --git a/engines/saga/sagagame.h b/engines/saga/sagagame.h
index d954f7c2cf..a9a490c4da 100644
--- a/engines/saga/sagagame.h
+++ b/engines/saga/sagagame.h
@@ -329,6 +329,9 @@ struct GamePatchDescription {
struct SAGAGameDescription {
Common::ADGameDescription desc;
+ int gameType;
+ int gameId;
+ uint32 features;
GameDisplayInfo *gameDisplayInfo;
int startSceneNumber;
GameResourceDescription *resourceDescription;