aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--saga/game.cpp42
-rw-r--r--saga/saga.h1
2 files changed, 35 insertions, 8 deletions
diff --git a/saga/game.cpp b/saga/game.cpp
index d3481b182a..59b53f6840 100644
--- a/saga/game.cpp
+++ b/saga/game.cpp
@@ -39,7 +39,7 @@
namespace Saga {
-static int detectGame(const FSList &fslist, bool mode = false);
+static int detectGame(const FSList &fslist, bool mode = false, int start = -1);
// ITE section
static PanelButton ITE_MainPanelButtons[] = {
@@ -557,6 +557,11 @@ static GameMD5 gameMD5[] = {
{ GID_ITE_DEMO_G, "c58e67c506af4ffa03fd0aac2079deb0", "voices.rsc", false },
{ GID_ITE_DEMO_G, "0b9a70eb4e120b6f00579b46c8cae29e", "ite.dmo", false },
+ { GID_ITE_WINCD, "8f4315a9bb10ec839253108a032c8b54", "ite.rsc", false },
+ { GID_ITE_WINCD, "a891405405edefc69c9d6c420c868b84", "scripts.rsc", false },
+ { GID_ITE_WINCD, "e2ccb61c325d6d1ead3be0e731fe29fe", "sounds.rsc", false },
+ { GID_ITE_WINCD, "41bb6b95d792dde5196bdb78740895a6", "voices.rsc", false },
+
{ GID_ITE_MACCD, "4f7fa11c5175980ed593392838523060", "ite.rsc", false },
{ GID_ITE_MACCD, "adf1f46c1d0589083996a7060c798ad0", "scripts.rsc", false },
{ GID_ITE_MACCD, "1a91cd60169f367ecb6c6e058d899b2f", "music.rsc", false },
@@ -815,6 +820,25 @@ static GameDescription gameDescriptions[] = {
GF_WYRMKEEP | GF_CD_FX
},
+ // Inherit the earth - Wyrmkeep Windows CD version
+ {
+ "ite",
+ GType_ITE,
+ GID_ITE_WINCD,
+ "Inherit the Earth (Win32 CD Version)",
+ &ITE_DisplayInfo,
+ ITE_DEFAULT_SCENE,
+ &ITE_Resources,
+ ARRAYSIZE(ITECD_GameFiles),
+ ITECD_GameFiles,
+ ARRAYSIZE(ITECD_GameFonts),
+ ITECD_GameFonts,
+ &ITECD_GameSound,
+ ARRAYSIZE(ITEWinPatch1_Files),
+ ITEWinPatch1_Files,
+ GF_WYRMKEEP | GF_CD_FX
+ },
+
// Inherit the earth - DOS CD version
{
"ite",
@@ -978,8 +1002,6 @@ bool SagaEngine::initGame(void) {
return false;
}
-
-
if (gameNumber >= gameCount) {
error("SagaEngine::loadGame wrong gameNumber");
}
@@ -990,7 +1012,6 @@ bool SagaEngine::initGame(void) {
_displayClip.right = _gameDisplayInfo.logicalWidth;
_displayClip.bottom = _gameDisplayInfo.logicalHeight;
-
if (!_resource->createContexts()) {
return false;
}
@@ -1001,13 +1022,19 @@ DetectedGameList GAME_ProbeGame(const FSList &fslist) {
DetectedGameList detectedGames;
int game_n;
- if ((game_n = detectGame(fslist, true)) != -1)
+ game_n = -1;
+
+ while (1) {
+ game_n = detectGame(fslist, true, game_n);
+ if (game_n == -1)
+ break;
detectedGames.push_back(gameDescriptions[game_n].toGameSettings());
+ }
return detectedGames;
}
-int detectGame(const FSList &fslist, bool mode) {
+int detectGame(const FSList &fslist, bool mode, int start) {
int game_count = ARRAYSIZE(gameDescriptions);
int game_n = -1;
typedef Common::Map<Common::String, Common::String> StringMap;
@@ -1073,7 +1100,7 @@ int detectGame(const FSList &fslist, bool mode) {
}
}
- for (game_n = 0; game_n < game_count; game_n++) {
+ for (game_n = start + 1; game_n < game_count; game_n++) {
file_count = gameDescriptions[game_n].filesCount;
file_missing = false;
@@ -1121,7 +1148,6 @@ int detectGame(const FSList &fslist, bool mode) {
for (StringMap::const_iterator file = filesMD5.begin(); file != filesMD5.end(); ++file)
printf("%s: %s\n", file->_key.c_str(), file->_value.c_str());
-
}
return -1;
diff --git a/saga/saga.h b/saga/saga.h
index bc512eeb37..9a586ebf77 100644
--- a/saga/saga.h
+++ b/saga/saga.h
@@ -256,6 +256,7 @@ enum GameIds {
// Wyrmkeep
GID_ITE_CD, // data for Win rerelease is same as in old DOS
+ GID_ITE_WINCD, // but it has a bunch of patch files
GID_ITE_MACCD,
GID_ITE_LINCD,
GID_ITE_MULTICD, // Wyrmkeep combined Windows/Mac/Linux version