diff options
author | Travis Howell | 2008-12-29 10:03:34 +0000 |
---|---|---|
committer | Travis Howell | 2008-12-29 10:03:34 +0000 |
commit | 4b4d752ba1aa590e4616e863f62e9113e2000fe5 (patch) | |
tree | 6f22f99c76fc9280a3badb6d9cc441159994a713 | |
parent | d8abe49a7822679f23980b51ab96c3186d5846b6 (diff) | |
download | scummvm-rg350-4b4d752ba1aa590e4616e863f62e9113e2000fe5.tar.gz scummvm-rg350-4b4d752ba1aa590e4616e863f62e9113e2000fe5.tar.bz2 scummvm-rg350-4b4d752ba1aa590e4616e863f62e9113e2000fe5.zip |
Add Blue's Treasure Hunt.
svn-id: r35599
-rw-r--r-- | engines/scumm/detection.cpp | 8 | ||||
-rw-r--r-- | engines/scumm/detection_tables.h | 9 | ||||
-rw-r--r-- | engines/scumm/he/script_v80he.cpp | 17 | ||||
-rw-r--r-- | engines/scumm/scumm-md5.h | 8 | ||||
-rw-r--r-- | engines/scumm/scumm.cpp | 16 | ||||
-rw-r--r-- | engines/scumm/scumm.h | 2 | ||||
-rw-r--r-- | tools/scumm-md5.txt | 8 |
7 files changed, 59 insertions, 9 deletions
diff --git a/engines/scumm/detection.cpp b/engines/scumm/detection.cpp index 5a82373c0b..326ee6d4c2 100644 --- a/engines/scumm/detection.cpp +++ b/engines/scumm/detection.cpp @@ -99,7 +99,13 @@ Common::String ScummEngine::generateFilename(const int room) const { switch (disk) { case 2: id = 'b'; - snprintf(buf, sizeof(buf), "%s.(b)", _filenamePattern.pattern); + // Special cases for Blue's games, which share common (b) files + if (_game.id == GID_BIRTHDAY) + strcpy(buf, "Blue'sBirthday.(b)"); + else if (_game.id == GID_TREASUREHUNT) + strcpy(buf, "Blue'sTreasureHunt.(b)"); + else + snprintf(buf, sizeof(buf), "%s.(b)", _filenamePattern.pattern); break; case 1: id = 'a'; diff --git a/engines/scumm/detection_tables.h b/engines/scumm/detection_tables.h index bb7e6a0c8b..37af0a7412 100644 --- a/engines/scumm/detection_tables.h +++ b/engines/scumm/detection_tables.h @@ -92,6 +92,7 @@ static const PlainGameDescriptor gameDescriptions[] = { { "Blues123Time", "Blue's 123 Time Activities" }, { "BluesABCTime", "Blue's ABC Time Activities" }, { "BluesBirthday", "Blue's Birthday Adventure" }, + { "BluesTreasureHunt", "Blue's Treasure Hunt" }, { "catalog", "Humongous Interactive Catalog" }, { "chase", "SPY Fox in Cheese Chase" }, { "dog", "Putt-Putt and Pep's Dog on a Stick" }, @@ -316,7 +317,7 @@ static const GameSettings gameVariantsTable[] = { {"puttrace", "HE 99", 0, GID_PUTTRACE, 6, 99, MDT_NONE, GF_USE_KEY, UNK}, {"bluesabctime", "", 0, GID_HEGAME, 6, 98, MDT_NONE, GF_USE_KEY, UNK}, - {"BluesBirthday", 0, 0, GID_HEGAME, 6, 98, MDT_NONE, GF_USE_KEY, UNK}, + {"BluesBirthday", 0, 0, GID_BIRTHDAY, 6, 98, MDT_NONE, GF_USE_KEY, UNK}, {"soccer", "", 0, GID_SOCCER, 6, 98, MDT_NONE, GF_USE_KEY, UNK}, // Global scripts increased to 2048 @@ -351,6 +352,7 @@ static const GameSettings gameVariantsTable[] = { // Uses smacker in external files, for testing only {"arttime", 0, 0, GID_HEGAME, 6, 99, MDT_NONE, GF_USE_KEY | GF_16BIT_COLOR, UNK}, {"readtime", 0, 0, GID_HEGAME, 6, 99, MDT_NONE, GF_USE_KEY | GF_16BIT_COLOR, UNK}, + {"BluesTreasureHunt", 0, 0, GID_TREASUREHUNT, 6, 99, MDT_NONE, GF_USE_KEY, UNK}, // Uses bink in external files for logos {"Baseball2003", 0, 0, GID_HEGAME, 6, 100, MDT_NONE, GF_USE_KEY | GF_16BIT_COLOR, UNK}, @@ -536,6 +538,11 @@ static const GameFilenamePattern gameFilenamesTable[] = { { "BluesBirthday", "bda-slideshow.cup", kGenUnchanged, UNK_LANG, UNK, 0 }, { "BluesBirthday", "BluesBirthdaySlideshow.cup", kGenUnchanged, UNK_LANG, UNK, 0 }, + { "BluesTreasureHunt", "Blue'sTreasureHunt-Disc1", kGenHEPC, UNK_LANG, UNK, 0 }, + { "BluesTreasureHunt", "Blue'sTreasureHunt-Disc1", kGenHEMac, UNK_LANG, Common::kPlatformMacintosh, 0 }, + { "BluesTreasureHunt", "Blue'sTreasureHunt-Disc2", kGenHEPC, UNK_LANG, UNK, 0 }, + { "BluesTreasureHunt", "Blue'sTreasureHunt-Disc2", kGenHEMac, UNK_LANG, Common::kPlatformMacintosh, 0 }, + { "catalog", "catalog", kGenHEPC, UNK_LANG, UNK, 0 }, { "catalog", "catalog2", kGenHEPC, UNK_LANG, UNK, 0 }, { "catalog", "Preview.cup", kGenUnchanged, UNK_LANG, UNK, 0 }, diff --git a/engines/scumm/he/script_v80he.cpp b/engines/scumm/he/script_v80he.cpp index a0a6ab1ef2..aa78757c53 100644 --- a/engines/scumm/he/script_v80he.cpp +++ b/engines/scumm/he/script_v80he.cpp @@ -466,8 +466,17 @@ void ScummEngine_v80he::o80_readConfigFile() { copyScriptString(option, sizeof(option)); copyScriptString(section, sizeof(section)); copyScriptString(filename, sizeof(filename)); + r = convertFilePath(filename); + if (_game.id == GID_TREASUREHUNT) { + // WORKAROUND: Remove invalid characters + if (!strcmp((char *)section, "Blue'sTreasureHunt-Disc1")) + memcpy(section, "BluesTreasureHunt-Disc1\0", 24); + else if (!strcmp((char *)section, "Blue'sTreasureHunt-Disc2")) + memcpy(section, "BluesTreasureHunt-Disc2\0", 24); + } + Common::ConfigFile ConfFile; if (!strcmp((char *)filename + r, "map.ini")) ConfFile.loadFromFile((const char *)filename + r); @@ -528,6 +537,14 @@ void ScummEngine_v80he::o80_writeConfigFile() { r = convertFilePath(filename); + if (_game.id == GID_TREASUREHUNT) { + // WORKAROUND: Remove invalid characters + if (!strcmp((char *)section, "Blue'sTreasureHunt-Disc1")) + memcpy(section, "BluesTreasureHunt-Disc1\0", 24); + else if (!strcmp((char *)section, "Blue'sTreasureHunt-Disc2")) + memcpy(section, "BluesTreasureHunt-Disc2\0", 24); + } + Common::ConfigFile ConfFile; ConfFile.loadFromSaveFile((const char *)filename + r); ConfFile.setKey((char *)option, (char *)section, (char *)string); diff --git a/engines/scumm/scumm-md5.h b/engines/scumm/scumm-md5.h index 2544efa231..d4c41341f7 100644 --- a/engines/scumm/scumm-md5.h +++ b/engines/scumm/scumm-md5.h @@ -1,5 +1,5 @@ /* - This file was generated by the md5table tool on Mon Dec 15 08:27:46 2008 + This file was generated by the md5table tool on Mon Dec 29 10:01:11 2008 DO NOT EDIT MANUALLY! */ @@ -97,7 +97,7 @@ static const MD5Table md5table[] = { { "1ed22f601f8b3695804a6583cc3083f1", "puttrace", "HE 98.5", "", -1, Common::NL_NLD, Common::kPlatformUnknown }, { "1f2e62b5a9c50589fc342285a6bb3a27", "freddi", "HE 73", "", -1, Common::HB_ISR, Common::kPlatformWindows }, { "1fbebd7b2b692df5297870447a80cfed", "atlantis", "", "Floppy", 12030, Common::DE_DEU, Common::kPlatformPC }, - { "1ff5997c78fbd0a841a75ef15a05d9d5", "BluesBirthday", "", "", -1, Common::EN_ANY, Common::kPlatformWindows }, + { "1ff5997c78fbd0a841a75ef15a05d9d5", "BluesBirthday", "", "Red", -1, Common::EN_ANY, Common::kPlatformWindows }, { "2012f854d83d9cc6f73b2b544cd8bbf8", "water", "HE 80", "", -1, Common::RU_RUS, Common::kPlatformWindows }, { "20176076d708bf14407bcc9bdcd7a418", "pajama3", "", "", -1, Common::RU_RUS, Common::kPlatformWindows }, { "204453e33456c4faa26e276229fe5b76", "spyfox2", "", "Demo", 14689, Common::DE_DEU, Common::kPlatformWindows }, @@ -335,7 +335,9 @@ static const MD5Table md5table[] = { { "7fc6cdb46b4c9d384c52327f4bca6416", "football", "", "", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "810a9da887aefa597b0cf3c77d262897", "BluesABCTime", "", "Demo", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "81bbfa181184cb494e7a81dcfa94fbd9", "maniac", "NES", "", 262144, Common::FR_FRA, Common::kPlatformNES }, + { "822807c3cd3b43a925cab2767ca6b453", "BluesTreasureHunt", "", "Disc 1", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "8299d9b8a1b0e7b881bae7a9971dc5e2", "zak", "V2", "Demo", 1916, Common::EN_ANY, Common::kPlatformAtariST }, + { "82e5e24720cb85a2b662bea6b625cad9", "BluesTreasureHunt", "", "Disc 2", -1, Common::EN_ANY, Common::kPlatformWindows }, { "8368f552b1e3eba559f8d559bcc4cadb", "freddi3", "", "", -1, Common::UNK_LANG, Common::kPlatformUnknown }, { "839a658f7d22de00787ebc945348cdb6", "dog", "", "", 19681, Common::DE_DEU, Common::kPlatformWindows }, { "83cedbe26aa8b58988e984e3d34cac8e", "freddi3", "HE 99", "", -1, Common::DE_DEU, Common::kPlatformUnknown }, @@ -388,7 +390,7 @@ static const MD5Table md5table[] = { { "9781422e4288dbc090720e4563168ba7", "puttzoo", "", "", -1, Common::FR_FRA, Common::kPlatformWindows }, { "981e1e1891f2be7e25a01f50ae55a5af", "puttrace", "HE 98", "", -1, Common::EN_USA, Common::kPlatformUnknown }, { "98744fe66ff730e8c2b3b1f58803ab0b", "atlantis", "", "Demo", -1, Common::EN_ANY, Common::kPlatformPC }, - { "99128b6a5bdd9831d9682fb8b5cbf8d4", "BluesBirthday", "", "", -1, Common::EN_ANY, Common::kPlatformUnknown }, + { "99128b6a5bdd9831d9682fb8b5cbf8d4", "BluesBirthday", "", "Yellow", -1, Common::EN_ANY, Common::kPlatformUnknown }, { "99a3699f80b8f776efae592b44b9b991", "maniac", "V2", "V2", -1, Common::FR_FRA, Common::kPlatformPC }, { "99b6f822b0b2612415407865438697d6", "atlantis", "", "Demo", -1, Common::EN_ANY, Common::kPlatformPC }, { "9b7452b5cd6d3ffb2b2f5118010af84f", "ft", "Demo", "Demo", 116463537, Common::EN_ANY, Common::kPlatformMacintosh }, diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp index 5a422d2906..7d44734073 100644 --- a/engines/scumm/scumm.cpp +++ b/engines/scumm/scumm.cpp @@ -1515,15 +1515,27 @@ void ScummEngine_v90he::resetScumm() { } void ScummEngine_v99he::resetScumm() { + byte *data; + Common::String ininame = _targetName + ".ini"; + int len; + ScummEngine_v90he::resetScumm(); _hePalettes = (uint8 *)malloc((_numPalettes + 1) * 1024); memset(_hePalettes, 0, (_numPalettes + 1) * 1024); // Array 129 is set to base name - int len = strlen(_filenamePattern.pattern); - byte *data = defineArray(129, kStringArray, 0, 0, 0, len); + len = strlen(_filenamePattern.pattern); + data = defineArray(129, kStringArray, 0, 0, 0, len); memcpy(data, _filenamePattern.pattern, len); + + // Array 132 is set to game path + data = defineArray(132, kStringArray, 0, 0, 0, 0); + + // Array 137 is set to Windows directory, plus INI file + len = strlen(ininame.c_str()); + data = defineArray(137, kStringArray, 0, 0, 0, len); + memcpy(data, ininame.c_str(), len); } void ScummEngine_v100he::resetScumm() { diff --git a/engines/scumm/scumm.h b/engines/scumm/scumm.h index 331ec52fdc..76ebab0f7c 100644 --- a/engines/scumm/scumm.h +++ b/engines/scumm/scumm.h @@ -221,6 +221,8 @@ enum ScummGameId { GID_FBEAR, GID_FUNPACK, GID_FREDDI3, + GID_BIRTHDAY, + GID_TREASUREHUNT, GID_PUTTRACE, GID_FUNSHOP, // Used for all three funshops GID_FOOTBALL, diff --git a/tools/scumm-md5.txt b/tools/scumm-md5.txt index 0815436850..dbe8b7d09b 100644 --- a/tools/scumm-md5.txt +++ b/tools/scumm-md5.txt @@ -431,8 +431,8 @@ arttime Blue's Art Time Activities d00ffc8c32d17e575fd985d435d2eb88 -1 en All - Demo - Kirben BluesBirthday Blue's Birthday Adventure - 99128b6a5bdd9831d9682fb8b5cbf8d4 -1 en All - - - knifethrower - 1ff5997c78fbd0a841a75ef15a05d9d5 -1 en Windows - - - Mathew + 99128b6a5bdd9831d9682fb8b5cbf8d4 -1 en All - Yellow - knifethrower + 1ff5997c78fbd0a841a75ef15a05d9d5 -1 en Windows - Red - Mathew 2d4acbdcfd8e374c9da8c2e7303a5cd0 -1 en All - Demo - Kirben dbf4d59d70b826733f379f998354d350 -1 en All - Demo - Kirben @@ -441,6 +441,10 @@ BluesBirthday Blue's Birthday Adventure readtime Blue's Reading Time Activities 95818b178d473c989ac753574e8892aa -1 en All - Demo - Kirben +BluesTreasureHunt Blue's Treasure Hunt + 822807c3cd3b43a925cab2767ca6b453 -1 en All - Disc 1 - Kirben + 82e5e24720cb85a2b662bea6b625cad9 -1 en Windows - Disc 2 - Kirben + fbear Fatty Bear's Birthday Surprise 13d2a86a7290813a1c386490447d72db -1 en 3DO HE 61 - - George Kormendi 5b08000a9c47b2887df6506ac767ca68 -1 en 3DO HE 61 - - sev |