mirror of
https://github.com/libretro/scummvm.git
synced 2025-03-05 17:57:14 +00:00
If we're not going to detect music "engine" at run-time, then we do need
separate entries for the original Windows CD and the first Wyrmkeep version. The latter has the "patch" files, which include the standalone MIDI files. However, since the data files are otherwise indistinguishable, we also need to be able to detect multiple versions and let the user to the disambiguation. I've added that functionality in the simplest way I could think of, in case we want to revert it later. svn-id: r18565
This commit is contained in:
parent
a818b83858
commit
0009b36293
@ -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;
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user