diff options
-rw-r--r-- | engines/agi/agi.cpp | 4 | ||||
-rw-r--r-- | engines/agi/detection.cpp | 165 | ||||
-rw-r--r-- | engines/agi/id.cpp | 6 |
3 files changed, 170 insertions, 5 deletions
diff --git a/engines/agi/agi.cpp b/engines/agi/agi.cpp index 174120eee9..e38be13a1f 100644 --- a/engines/agi/agi.cpp +++ b/engines/agi/agi.cpp @@ -372,8 +372,8 @@ int AgiEngine::agiInit() { break; case 3: report("Emulating Sierra AGI v%x.002.%03x\n", - (int)(loader->version() >> 12) & 0xF, - (int)(loader->version()) & 0xFFF); + (int)(agiGetRelease() >> 12) & 0xF, + (int)(agiGetRelease()) & 0xFFF); break; } diff --git a/engines/agi/detection.cpp b/engines/agi/detection.cpp index 26edb3bd46..e8df80d0fa 100644 --- a/engines/agi/detection.cpp +++ b/engines/agi/detection.cpp @@ -86,13 +86,54 @@ static const ADGameFileDescription AGI_KQ2_MAC_20R_GameFiles[] = { { NULL, 0, NULL} }; +// Kings Quest III +static const ADGameFileDescription AGI_KQ3_PC_101_GameFiles[] = { + { "logdir", 0, "9c2b34e7ffaa89c8e2ecfeb3695d444b"}, + { NULL, 0, NULL} +}; +static const ADGameFileDescription AGI_KQ3_PC_200_GameFiles[] = { + { "logdir", 0, "18aad8f7acaaff760720c5c6885b6bab"}, + { NULL, 0, NULL} +}; +static const ADGameFileDescription AGI_KQ3_PC_214A_GameFiles[] = { + { "logdir", 0, "7650e659c7bc0f1e9f8a410b7a2e9de6"}, + { NULL, 0, NULL} +}; +static const ADGameFileDescription AGI_KQ3_PC_214B_GameFiles[] = { + { "logdir", 0, "d3d17b77b3b3cd13246749231d9473cd"}, + { NULL, 0, NULL} +}; + +// Kings Quest IV AGI v3 +static const ADGameFileDescription AGI_KQ4_PC_20_GameFiles[] = { + { "kq4dir", 0, "fe44655c42f16c6f81046fdf169b6337"}, + { NULL, 0, NULL} +}; +static const ADGameFileDescription AGI_KQ4_PC_22_GameFiles[] = { + { "kq4dir", 0, "7470b3aeb49d867541fc66cc8454fb7d"}, + { NULL, 0, NULL} +}; + +// Groza : AGDS +static const ADGameFileDescription AGI_Groza_PC_GameFiles[] = { + { "logdir", 0, "421da3a18004122a966d64ab6bd86d2e"}, + { NULL, 0, NULL} +}; + +// Donald Ducks Playground +static const ADGameFileDescription AGI_DDP_PC_10A_GameFiles[] = { + { "logdir", 0, "64388812e25dbd75f7af1103bc348596"}, + { NULL, 0, NULL} +}; + + static const AGIGameDescription gameDescriptions[] = { { // kings quest 1 : pc : 2.0F { "agi", - "King's Quest 1 (PC 5.25\"/3.5\") 2.0F [AGI 2.917]", + "King's Quest 1 (PC) 2.0F [AGI 2.917]", AGI_KQ1_PC_20F_GameFiles, Common::EN_ANY, Common::kPlatformPC, @@ -136,7 +177,7 @@ static const AGIGameDescription gameDescriptions[] = { // kings quest 2 : PC : 2.2 { "agi", - "King's Quest 2 (PC 5.25\"/3.5\") 2.2 [AGI 2.426]", + "King's Quest 2 (PC) 2.2 [AGI 2.426]", AGI_KQ2_PC_22_GameFiles, Common::EN_ANY, Common::kPlatformPC, @@ -174,6 +215,126 @@ static const AGIGameDescription gameDescriptions[] = { 0x2440, }, + + + { + // kings quest 3 : PC : 1.01 + { + "agi", + "King's Quest 3 (PC) 1.01 11/08/86 [AGI 2.272]", + AGI_KQ3_PC_101_GameFiles, + Common::EN_ANY, + Common::kPlatformPC, + }, + GType_V2, + 0, + 0x2272, + }, + + { + // kings quest 3 : PC : 2.00 + { + "agi", + "King's Quest 3 (PC) 2.00 5/25/87 [AGI 2.435]", + AGI_KQ3_PC_200_GameFiles, + Common::EN_ANY, + Common::kPlatformPC, + }, + GType_V2, + 0, + 0x2440, + }, + + { + // kings quest 3 : PC : 2.14-A + { + "agi", + "King's Quest 3 (PC) 2.14 3/15/88 [AGI 2.936]", + AGI_KQ3_PC_214A_GameFiles, + Common::EN_ANY, + Common::kPlatformPC, + }, + GType_V2, + 0, + 0x2936, + }, + + { + // kings quest 3 : PC : 2.14-B + { + "agi", + "King's Quest 3 (PC) 2.14 3/15/88 [AGI 2.936]", + AGI_KQ3_PC_214B_GameFiles, + Common::EN_ANY, + Common::kPlatformPC, + }, + GType_V2, + 0, + 0x2936, + }, + + + + { + // kings quest 4 : PC : 2.0 + { + "agi", + "King's Quest 4 (PC) 2.0 7/27/88 [AGI 3.002.086]", + AGI_KQ4_PC_20_GameFiles, + Common::EN_ANY, + Common::kPlatformPC, + }, + GType_V3, + 0, + 0x3086, + }, + + { + // kings quest 4 : PC : 2.0 + { + "agi", + "King's Quest 4 (PC) 2.2 9/27/88 [AGI 3.002.086]", + AGI_KQ4_PC_22_GameFiles, + Common::EN_ANY, + Common::kPlatformPC, + }, + GType_V3, + 0, + 0x3086, + }, + + + // AGDS : GROZA + { + // kings quest 4 : PC : 2.0 + { + "agi", + "Groza : Russian AGDS", + AGI_Groza_PC_GameFiles, + Common::EN_ANY, + Common::kPlatformPC, + }, + GType_V2, + AGI_AGDS, + 0x2440, + }, + + + { + // Donald Ducks Playground : PC : 2.001 ** CURRENTLY UNSUPPORTED ** + { + "agi", + "Donald Ducks Playground 1.0A ** UNSUPPORTED **", + AGI_DDP_PC_10A_GameFiles, + Common::EN_ANY, + Common::kPlatformPC, + }, + GType_V2, + 0, + 0x2089, + }, + + { { NULL, NULL, NULL, Common::UNK_LANG, Common::kPlatformUnknown }, 0, 0, 0 } }; diff --git a/engines/agi/id.cpp b/engines/agi/id.cpp index 6878b5f5e7..22fced68b0 100644 --- a/engines/agi/id.cpp +++ b/engines/agi/id.cpp @@ -79,6 +79,8 @@ int AgiEngine::setup_v2_game(int ver, uint32 crc) { if (opt.agds) agiSetRelease(0x2440); /* ALL AGDS games built for 2.440 */ + report("Seting up for version 0x%04X\n", ver); + switch (agiGetRelease()) { case 0x2089: logic_names_cmd[0x86].num_args = 0; /* quit: 0 args */ @@ -117,7 +119,9 @@ int AgiEngine::setup_v3_game(int ver, uint32 crc) { if (opt.emuversion) agiSetRelease(ver = opt.emuversion); - switch (ver) { + report("Seting up for version 0x%04X\n", ver); + + switch (agiGetRelease()) { case 0x3086: logic_names_cmd[0xad].num_args = 1; /* 173 : 1 args */ break; |