aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2008-12-29 10:03:34 +0000
committerTravis Howell2008-12-29 10:03:34 +0000
commit4b4d752ba1aa590e4616e863f62e9113e2000fe5 (patch)
tree6f22f99c76fc9280a3badb6d9cc441159994a713
parentd8abe49a7822679f23980b51ab96c3186d5846b6 (diff)
downloadscummvm-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.cpp8
-rw-r--r--engines/scumm/detection_tables.h9
-rw-r--r--engines/scumm/he/script_v80he.cpp17
-rw-r--r--engines/scumm/scumm-md5.h8
-rw-r--r--engines/scumm/scumm.cpp16
-rw-r--r--engines/scumm/scumm.h2
-rw-r--r--tools/scumm-md5.txt8
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