From 3f819b90852bc7f64faeff0f3d7585d55285a0f5 Mon Sep 17 00:00:00 2001 From: Travis Howell Date: Thu, 7 Jun 2007 09:37:22 +0000 Subject: Add details for French and German Amiga versions of Elvira 1. Remove restart state from Elvira 1 detection, due to two byte difference in the restart state on each disk of Amiga versions. svn-id: r27164 --- engines/agos/agos.h | 1 + engines/agos/detection_tables.h | 74 ++++++++++++++++++++++++++++++----------- engines/agos/script_e1.cpp | 4 +-- engines/agos/script_e2.cpp | 13 +++++++- engines/agos/script_ww.cpp | 2 +- 5 files changed, 70 insertions(+), 24 deletions(-) diff --git a/engines/agos/agos.h b/engines/agos/agos.h index 32c399ff8e..5d4a300285 100644 --- a/engines/agos/agos.h +++ b/engines/agos/agos.h @@ -1313,6 +1313,7 @@ public: void oe2_moveDirn(); void oe2_doClass(); void oe2_pObj(); + void oe2_loadGame(); void oe2_drawItem(); void oe2_doTable(); void oe2_pauseGame(); diff --git a/engines/agos/detection_tables.h b/engines/agos/detection_tables.h index 9008445485..379b666939 100644 --- a/engines/agos/detection_tables.h +++ b/engines/agos/detection_tables.h @@ -56,7 +56,6 @@ static const AGOSGameDescription gameDescriptions[] = { { { "gameamiga", GAME_BASEFILE, "7bdaff4a118d8035047cf9b1393b3fa0", -1}, { "icon.dat", GAME_ICONFILE, "2db931e84f1ca01f0816dddfae3f49e1", -1}, - { "start", GAME_RESTFILE, "c111be88c7f6d40e3f9b128939c1236d", -1}, { NULL, 0, NULL, 0} }, Common::EN_ANY, @@ -69,6 +68,46 @@ static const AGOSGameDescription gameDescriptions[] = { GF_OLD_BUNDLE | GF_CRUNCHED | GF_PLANAR }, + // Elvira 1 - French Amiga Floppy + { + { + "elvira1", + "Floppy", + { + { "gameamiga", GAME_BASEFILE, "ab1a0798f74e71cc58a06e7e0db6f8a7", -1}, + { "icon.dat", GAME_ICONFILE, "2db931e84f1ca01f0816dddfae3f49e1", -1}, + { NULL, 0, NULL, 0} + }, + Common::FR_FRA, + Common::kPlatformAmiga, + Common::ADGF_NO_FLAGS + }, + + GType_ELVIRA1, + GID_ELVIRA1, + GF_OLD_BUNDLE | GF_CRUNCHED | GF_PLANAR + }, + + // Elvira 1 - German Amiga Floppy + { + { + "elvira1", + "Floppy", + { + { "gameamiga", GAME_BASEFILE, "bde0334344c7b3a278ccc9a300f3085c", -1}, + { "icon.dat", GAME_ICONFILE, "2db931e84f1ca01f0816dddfae3f49e1", -1}, + { NULL, 0, NULL, 0} + }, + Common::DE_DEU, + Common::kPlatformAmiga, + Common::ADGF_NO_FLAGS + }, + + GType_ELVIRA1, + GID_ELVIRA1, + GF_OLD_BUNDLE | GF_CRUNCHED | GF_PLANAR + }, + // Elvira 1 - English Atari ST Floppy Demo { { @@ -100,7 +139,6 @@ static const AGOSGameDescription gameDescriptions[] = { { { "gamest", GAME_BASEFILE, "8942859018fcfb2dbed13e83d974d1ab", -1}, { "icon.dat", GAME_ICONFILE, "2db931e84f1ca01f0816dddfae3f49e1", -1}, - { "start", GAME_RESTFILE, "cd711028e209c47b81d04141fff2587b", -1}, { "tbllist", GAME_TBLFILE, "5b6ff494bf7e24213758598ef4ac0a8b", -1}, { NULL, 0, NULL, 0} }, @@ -123,7 +161,6 @@ static const AGOSGameDescription gameDescriptions[] = { { { "gamest", GAME_BASEFILE, "ce2100ba71284f55ac302847d7f94747", -1}, { "icon.dat", GAME_ICONFILE, "2db931e84f1ca01f0816dddfae3f49e1", -1}, - { "start", GAME_RESTFILE, "cd711028e209c47b81d04141fff2587b", -1}, { "tbllist", GAME_TBLFILE, "5b6ff494bf7e24213758598ef4ac0a8b", -1}, { NULL, 0, NULL, 0} }, @@ -146,7 +183,6 @@ static const AGOSGameDescription gameDescriptions[] = { { { "gamepc", GAME_BASEFILE, "a49e132a1f18306dd5d1ec2fe435e178", -1}, { "icon.dat", GAME_ICONFILE, "fda48c9da7f3e72d0313e2f5f760fc45", -1}, - { "start", GAME_RESTFILE, "69fb4f12108b39ae659f108cad4d3efe", -1}, { "tbllist", GAME_TBLFILE, "319f6b227c7822a551f57d24e70f8149", -1}, { NULL, 0, NULL, 0} }, @@ -160,20 +196,19 @@ static const AGOSGameDescription gameDescriptions[] = { GF_OLD_BUNDLE }, - // Elvira 1 - German DOS Floppy + // Elvira 1 - French DOS Floppy { { "elvira1", "Floppy", { - { "gamepc", GAME_BASEFILE, "d0b593143e21fc150c044819df2c0b98", -1}, + { "gamepc", GAME_BASEFILE, "9076d507d60cc454df662316438ec843", -1}, { "icon.dat", GAME_ICONFILE, "fda48c9da7f3e72d0313e2f5f760fc45", -1}, - { "start", GAME_RESTFILE, "69fb4f12108b39ae659f108cad4d3efe", -1}, { "tbllist", GAME_TBLFILE, "319f6b227c7822a551f57d24e70f8149", -1}, { NULL, 0, NULL, 0} }, - Common::DE_DEU, + Common::FR_FRA, Common::kPlatformPC, Common::ADGF_NO_FLAGS }, @@ -183,20 +218,19 @@ static const AGOSGameDescription gameDescriptions[] = { GF_OLD_BUNDLE }, - // Elvira 1 - French DOS Floppy + // Elvira 1 - German DOS Floppy { { "elvira1", "Floppy", { - { "gamepc", GAME_BASEFILE, "9076d507d60cc454df662316438ec843", -1}, + { "gamepc", GAME_BASEFILE, "d0b593143e21fc150c044819df2c0b98", -1}, { "icon.dat", GAME_ICONFILE, "fda48c9da7f3e72d0313e2f5f760fc45", -1}, - { "start", GAME_RESTFILE, "69fb4f12108b39ae659f108cad4d3efe", -1}, { "tbllist", GAME_TBLFILE, "319f6b227c7822a551f57d24e70f8149", -1}, { NULL, 0, NULL, 0} }, - Common::FR_FRA, + Common::DE_DEU, Common::kPlatformPC, Common::ADGF_NO_FLAGS }, @@ -382,22 +416,22 @@ static const AGOSGameDescription gameDescriptions[] = { GF_OLD_BUNDLE }, - // Elvira 2 - German DOS Floppy + // Elvira 2 - French DOS Floppy { { "elvira2", "Floppy", { - { "gamepc", GAME_BASEFILE, "d1979d2fbc5fb5276563578ca55cbcec", -1}, + { "gamepc", GAME_BASEFILE, "4bf28ab00f5324fd938e632595742382", -1}, { "icon.dat", GAME_ICONFILE, "83a7278bff55c82fbb3aef92981866c9", -1}, { "menus.dat", GAME_MENUFILE, "a2fdc88a77c8bdffec6b36cbeda4d955", -1}, - { "start", GAME_RESTFILE, "016107aced82d0cc5d758a9fba716270", -1}, + { "start", GAME_RESTFILE, "4d380a35ba941d03ee5084c71d20055b", -1}, { "stripped.txt", GAME_STRFILE, "c3a8f644551a27c8a2fec0f8070b46b7", -1}, { "tbllist", GAME_TBLFILE, "8252660df0edbdbc3e6377e155bbd0c5", -1}, { NULL, 0, NULL, 0} }, - Common::DE_DEU, + Common::FR_FRA, Common::kPlatformPC, Common::ADGF_NO_FLAGS }, @@ -407,22 +441,22 @@ static const AGOSGameDescription gameDescriptions[] = { GF_OLD_BUNDLE }, - // Elvira 2 - French DOS Floppy + // Elvira 2 - German DOS Floppy { { "elvira2", "Floppy", { - { "gamepc", GAME_BASEFILE, "4bf28ab00f5324fd938e632595742382", -1}, + { "gamepc", GAME_BASEFILE, "d1979d2fbc5fb5276563578ca55cbcec", -1}, { "icon.dat", GAME_ICONFILE, "83a7278bff55c82fbb3aef92981866c9", -1}, { "menus.dat", GAME_MENUFILE, "a2fdc88a77c8bdffec6b36cbeda4d955", -1}, - { "start", GAME_RESTFILE, "4d380a35ba941d03ee5084c71d20055b", -1}, + { "start", GAME_RESTFILE, "016107aced82d0cc5d758a9fba716270", -1}, { "stripped.txt", GAME_STRFILE, "c3a8f644551a27c8a2fec0f8070b46b7", -1}, { "tbllist", GAME_TBLFILE, "8252660df0edbdbc3e6377e155bbd0c5", -1}, { NULL, 0, NULL, 0} }, - Common::FR_FRA, + Common::DE_DEU, Common::kPlatformPC, Common::ADGF_NO_FLAGS }, diff --git a/engines/agos/script_e1.cpp b/engines/agos/script_e1.cpp index be60a4b14a..9522901723 100644 --- a/engines/agos/script_e1.cpp +++ b/engines/agos/script_e1.cpp @@ -707,8 +707,8 @@ void AGOSEngine_Elvira1::oe1_loadGame() { uint16 stringId = getNextStringID(); debug(0, "oe1_loadGame: stub (%s)", (const char *)getStringPtrByID(stringId)); - if (!scumm_stricmp(getFileName(GAME_RESTFILE), (const char *)getStringPtrByID(stringId))) { - loadGame(getFileName(GAME_RESTFILE), true); + if (!scumm_stricmp("START", (const char *)getStringPtrByID(stringId))) { + loadGame("START", true); } else { loadGame((const char *)getStringPtrByID(stringId)); } diff --git a/engines/agos/script_e2.cpp b/engines/agos/script_e2.cpp index 13cb15a8b9..8251510fac 100644 --- a/engines/agos/script_e2.cpp +++ b/engines/agos/script_e2.cpp @@ -145,7 +145,7 @@ void AGOSEngine_Elvira2::setupOpcodes() { OPCODE(o_comment), /* 88 */ OPCODE(o_invalid), - OPCODE(oe1_loadGame), + OPCODE(oe2_loadGame), OPCODE(o_getParent), OPCODE(o_getNext), /* 92 */ @@ -315,6 +315,17 @@ void AGOSEngine_Elvira2::oe2_pObj() { showMessageFormat("%s\n", (const char *)getStringPtrByID(subObject->objectFlagValue[0])); // Difference } +void AGOSEngine_Elvira2::oe2_loadGame() { + // 89: load game + uint16 stringId = getNextStringID(); + + if (!scumm_stricmp(getFileName(GAME_RESTFILE), (const char *)getStringPtrByID(stringId))) { + loadGame(getFileName(GAME_RESTFILE), true); + } else { + loadGame((const char *)getStringPtrByID(stringId)); + } +} + void AGOSEngine_Elvira2::oe2_drawItem() { // 113: draw item Item *i = getNextItemPtr(); diff --git a/engines/agos/script_ww.cpp b/engines/agos/script_ww.cpp index 690a717acf..377b49ae3f 100644 --- a/engines/agos/script_ww.cpp +++ b/engines/agos/script_ww.cpp @@ -147,7 +147,7 @@ void AGOSEngine_Waxworks::setupOpcodes() { OPCODE(o_comment), /* 88 */ OPCODE(o_invalid), - OPCODE(oe1_loadGame), + OPCODE(oe2_loadGame), OPCODE(o_getParent), OPCODE(o_getNext), /* 92 */ -- cgit v1.2.3