aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm
diff options
context:
space:
mode:
authorTravis Howell2008-12-29 10:03:34 +0000
committerTravis Howell2008-12-29 10:03:34 +0000
commit4b4d752ba1aa590e4616e863f62e9113e2000fe5 (patch)
tree6f22f99c76fc9280a3badb6d9cc441159994a713 /engines/scumm
parentd8abe49a7822679f23980b51ab96c3186d5846b6 (diff)
downloadscummvm-rg350-4b4d752ba1aa590e4616e863f62e9113e2000fe5.tar.gz
scummvm-rg350-4b4d752ba1aa590e4616e863f62e9113e2000fe5.tar.bz2
scummvm-rg350-4b4d752ba1aa590e4616e863f62e9113e2000fe5.zip
Add Blue's Treasure Hunt.
svn-id: r35599
Diffstat (limited to 'engines/scumm')
-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
6 files changed, 53 insertions, 7 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,