From e269f55f501a9f1b32c471a4451d68c2202055f3 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 23 Nov 2022 12:39:28 +0100 Subject: [PATCH] MOHAWK: Add games not yet suppoted by engine to detection and mark them as such This effectively reverts 44fd44ccc965b91a38c534e0a890772e83577c4b We use detection for documentation purposes, to reduce time spent on game cataloging and also indicate to the devs where they could explore --- engines/mohawk/detection.cpp | 7 + engines/mohawk/detection.h | 9 +- engines/mohawk/detection_tables.h | 211 ++++++++++++++++++++++++++++++ engines/mohawk/resource.h | 8 ++ engines/mohawk/sound.cpp | 3 + 5 files changed, 237 insertions(+), 1 deletion(-) diff --git a/engines/mohawk/detection.cpp b/engines/mohawk/detection.cpp index 46943b8d005..01b21616e45 100644 --- a/engines/mohawk/detection.cpp +++ b/engines/mohawk/detection.cpp @@ -36,12 +36,19 @@ static const PlainGameDescriptor mohawkGames[] = { {"myst", "Myst"}, {"makingofmyst", "The Making of Myst"}, {"riven", "Riven: The Sequel to Myst"}, + {"zoombini", "Logical Journey of the Zoombinis"}, {"cstime", "Where in Time is Carmen Sandiego?"}, + {"csworld", "Where in the World is Carmen Sandiego?"}, + {"csamtrak", "Where in America is Carmen Sandiego? (The Great Amtrak Train Adventure)"}, {"carmentq", "Carmen Sandiego's ThinkQuick Challenge"}, {"carmentqc", "Carmen Sandiego's ThinkQuick Challenge Custom Question Creator"}, {"maggiesfa", "Maggie's Farmyard Adventure"}, + {"jamesmath", "James Discovers/Explores Math"}, + {"treehouse", "The Treehouse"}, {"greeneggs", "Green Eggs and Ham"}, {"seussabc", "Dr Seuss's ABC"}, + {"1stdegree", "In the 1st Degree"}, + {"csusa", "Where in the USA is Carmen Sandiego?"}, {"seussps", "Dr Seuss's Preschool"}, {"tortoise", "Aesop's Fables: The Tortoise and the Hare"}, {"arthur", "Arthur's Teacher Trouble"}, diff --git a/engines/mohawk/detection.h b/engines/mohawk/detection.h index ad5d0688a04..cfe4c5811ef 100644 --- a/engines/mohawk/detection.h +++ b/engines/mohawk/detection.h @@ -35,7 +35,14 @@ enum MohawkGameType { GType_LIVINGBOOKSV2, GType_LIVINGBOOKSV3, GType_LIVINGBOOKSV4, - GType_LIVINGBOOKSV5 + GType_LIVINGBOOKSV5, + GType_ZOOMBINI, + GType_CSWORLD, + GType_CSAMTRAK, + GType_JAMESMATH, + GType_TREEHOUSE, + GType_1STDEGREE, + GType_CSUSA, }; #define GAMEOPTION_ME GUIO_GAMEOPTIONS1 diff --git a/engines/mohawk/detection_tables.h b/engines/mohawk/detection_tables.h index b707a330f1b..023399e7d8d 100644 --- a/engines/mohawk/detection_tables.h +++ b/engines/mohawk/detection_tables.h @@ -758,6 +758,123 @@ static const MohawkGameDescription gameDescriptions[] = { 0 }, + { + { + "zoombini", + _s("Missing game code"), // Reason for being unsupported, + AD_ENTRY1("ZOOMBINI.MHK", "98b758fec55104c096cfd129048be9a6"), + Common::EN_ANY, + Common::kPlatformWindows, + ADGF_UNSUPPORTED, + GUIO1(GUIO_NOASPECT) + }, + GType_ZOOMBINI, + 0, + 0 + }, + + { + { + "zoombini", + _s("Missing game code"), // Reason for being unsupported, + AD_ENTRY1("ZOOMBINI.MHK", "0672f65c40dd065840c896e41c13f980"), + Common::EN_ANY, + Common::kPlatformWindows, + ADGF_UNSUPPORTED, + GUIO1(GUIO_NOASPECT) + }, + GType_ZOOMBINI, + 0, + 0 + }, + + { + { + "zoombini", + _s("Missing game code"), // Reason for being unsupported // "v2.0", + AD_ENTRY1("ZOOMBINI.MHK", "506b1122ffa740e2566cf0b583d24478"), + Common::EN_ANY, + Common::kPlatformWindows, + ADGF_UNSUPPORTED, + GUIO1(GUIO_NOASPECT) + }, + GType_ZOOMBINI, + 0, + 0 + }, + { + { + "zoombini", + _s("Missing game code"), // Reason for being unsupported, + AD_ENTRY1("ZOOMBINI.MHK", "6ae0bdf791266b1fe3d4fabbf44c3faa"), + Common::DE_DEU, + Common::kPlatformWindows, + ADGF_UNSUPPORTED, + GUIO1(GUIO_NOASPECT) + }, + GType_ZOOMBINI, + 0, + 0 + }, + { + { + "zoombini", + _s("Missing game code"), // Reason for being unsupported, + AD_ENTRY1("ZOOMBINI.MHK", "8231e58525143ccf6e8b747df34b139f"), + Common::FR_FRA, + Common::kPlatformWindows, + ADGF_UNSUPPORTED, + GUIO1(GUIO_NOASPECT) + }, + GType_ZOOMBINI, + 0, + 0 + }, + + { + { + "csworld", + _s("Missing game code"), // Reason for being unsupported // "v3.0", + AD_ENTRY1("C2K.MHK", "605fe88380848031bbd0ff84ade6fe40"), + Common::EN_ANY, + Common::kPlatformWindows, + ADGF_UNSUPPORTED, + GUIO1(GUIO_NOASPECT) + }, + GType_CSWORLD, + 0, + 0 + }, + { + { + "csworld", + _s("Missing game code"), // Reason for being unsupported // "v3.5", + AD_ENTRY1("C2K.MHK", "d4857aeb0f5e2e0c4ac556aa74f38c23"), + Common::EN_ANY, + Common::kPlatformWindows, + ADGF_UNSUPPORTED, + GUIO1(GUIO_NOASPECT) + }, + GType_CSWORLD, + 0, + 0 + }, + + { + { + "csamtrak", + _s("Missing game code"), // Reason for being unsupported, + AD_ENTRY1("AMTRAK.MHK", "2f95301f0bb950d555bb7b0e3b1b7eb1"), + Common::EN_ANY, + Common::kPlatformWindows, + ADGF_UNSUPPORTED, + GUIO1(GUIO_NOASPECT) + }, + GType_CSAMTRAK, + 0, + 0 + }, + // Harry and the Haunted House v1.0E // English Windows 3.11 // From strangerke @@ -987,6 +1104,52 @@ static const MohawkGameDescription gameDescriptions[] = { 0 }, + { + { + "jamesmath", + _s("Missing game code"), // Reason for being unsupported, + AD_ENTRY1("BRODER.MHK", "007299da8b2c6e8ec1cde9598c243024"), + Common::EN_ANY, + Common::kPlatformWindows, + ADGF_UNSUPPORTED, + GUIO1(GUIO_NOASPECT) + }, + GType_JAMESMATH, + 0, + 0 + }, + + // This is in the NEWDATA folder, so I assume it's a newer version ;) + { + { + "jamesmath", + _s("Missing game code"), // Reason for being unsupported, + AD_ENTRY1("BRODER.MHK", "53c000938a50dca92860fd9b546dd276"), + Common::EN_ANY, + Common::kPlatformWindows, + ADGF_UNSUPPORTED, + GUIO1(GUIO_NOASPECT) + }, + GType_JAMESMATH, + 0, + 0 + }, + + { + { + "treehouse", + _s("Missing game code"), // Reason for being unsupported, + AD_ENTRY1("MAINROOM.MHK", "12f51894d7f838af639ea9bf1bc8f45b"), + Common::EN_ANY, + Common::kPlatformWindows, + ADGF_UNSUPPORTED, + GUIO1(GUIO_NOASPECT) + }, + GType_TREEHOUSE, + 0, + 0 + }, + { { "greeneggs", @@ -1154,6 +1317,54 @@ static const MohawkGameDescription gameDescriptions[] = { 0 }, + { + { + "1stdegree", + _s("Missing game code"), // Reason for being unsupported, + AD_ENTRY1("AL236_1.MHK", "3ba145492a7b8b4dee0ef4222c5639c3"), + Common::EN_ANY, + Common::kPlatformWindows, + ADGF_UNSUPPORTED, + GUIO1(GUIO_NOASPECT) + }, + GType_1STDEGREE, + 0, + 0 + }, + + // In The 1st Degree + // French Windows + // From Strangerke + { + { + "1stdegree", + _s("Missing game code"), // Reason for being unsupported, + AD_ENTRY1("AL236_1.MHK", "0e0c70b1b702b6ddca61a1192ada1282"), + Common::FR_FRA, + Common::kPlatformWindows, + ADGF_UNSUPPORTED, + GUIO1(GUIO_NOASPECT) + }, + GType_1STDEGREE, + 0, + 0 + }, + + { + { + "csusa", + _s("Missing game code"), // Reason for being unsupported, + AD_ENTRY1("USAC2K.MHK", "b8c9d3a2586f62bce3a48b50d7a700e9"), + Common::EN_ANY, + Common::kPlatformWindows, + ADGF_UNSUPPORTED, + GUIO1(GUIO_NOASPECT) + }, + GType_CSUSA, + 0, + 0 + }, + { { "tortoise", diff --git a/engines/mohawk/resource.h b/engines/mohawk/resource.h index 4daa5057372..b4b7204a02a 100644 --- a/engines/mohawk/resource.h +++ b/engines/mohawk/resource.h @@ -92,6 +92,10 @@ namespace Mohawk { #define ID_BMAP MKTAG('B','M','A','P') // Old Mohawk Bitmap #define ID_BCOD MKTAG('B','C','O','D') // Book Code +// JamesMath Resource FourCC's +#define ID_TANM MKTAG('t','A','N','M') // Animation? +#define ID_TMFO MKTAG('t','M','F','O') // ??? + // CSTime Resource FourCC's #define ID_CINF MKTAG('C','I','N','F') // Case Info #define ID_CONV MKTAG('C','O','N','V') // Conversation @@ -107,6 +111,10 @@ namespace Mohawk { #define ID_DATA MKTAG('D','a','t','a') // Game Sound Chunk #define ID_CUE MKTAG('C','u','e','#') // Game Sound Chunk +// Mohawk MIDI Tags +#define ID_MIDI MKTAG('M','I','D','I') // Game Sound (Third Tag), instead of WAVE +#define ID_PRG MKTAG('P','r','g','#') // MIDI Patch + // Common Resource FourCC's #define ID_TBMP MKTAG('t','B','M','P') // Standard Mohawk Bitmap #define ID_TWAV MKTAG('t','W','A','V') // Standard Mohawk Sound diff --git a/engines/mohawk/sound.cpp b/engines/mohawk/sound.cpp index 25791721943..e0a674f2112 100644 --- a/engines/mohawk/sound.cpp +++ b/engines/mohawk/sound.cpp @@ -196,6 +196,9 @@ Audio::RewindableAudioStream *Sound::makeAudioStream(uint16 id, CueList *cueList Audio::RewindableAudioStream *audStream = nullptr; switch (_vm->getGameType()) { + case GType_ZOOMBINI: + audStream = makeMohawkWaveStream(_vm->getResource(ID_SND, id)); + break; case GType_LIVINGBOOKSV1: audStream = makeLivingBooksWaveStream_v1(_vm->getResource(ID_WAV, id)); break;