[Scummvm-git-logs] scummvm master -> 6202b366065dc71eec988042428b44f0d05686e7

dreammaster paulfgilbert at gmail.com
Sat Dec 15 04:30:51 CET 2018


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
6202b36606 GLK: SCOTT: Add support for Mysterious Adventures Blorb files


Commit: 6202b366065dc71eec988042428b44f0d05686e7
    https://github.com/scummvm/scummvm/commit/6202b366065dc71eec988042428b44f0d05686e7
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2018-12-14T19:30:43-08:00

Commit Message:
GLK: SCOTT: Add support for Mysterious Adventures Blorb files

Changed paths:
    engines/glk/blorb.cpp
    engines/glk/blorb.h
    engines/glk/glk.cpp
    engines/glk/scott/detection.cpp
    engines/glk/scott/detection_tables.h


diff --git a/engines/glk/blorb.cpp b/engines/glk/blorb.cpp
index 1f95919..ce86dee 100644
--- a/engines/glk/blorb.cpp
+++ b/engines/glk/blorb.cpp
@@ -183,7 +183,8 @@ Common::ErrorCode Blorb::load() {
 				(_interpType == INTERPRETER_GLULXE && type == "GLUL") ||
 				(_interpType == INTERPRETER_TADS2 && type == "TAD2") ||
 				(_interpType == INTERPRETER_TADS3 && type == "TAD3") ||
-				(_interpType == INTERPRETER_HUGO && type == "HUGO")
+				(_interpType == INTERPRETER_HUGO && type == "HUGO") ||
+				(_interpType == INTERPRETER_SCOTT && type == "SAAI")
 			) {
 				// Game executable
 				ce._filename = "game";
@@ -196,4 +197,9 @@ Common::ErrorCode Blorb::load() {
 	return Common::kNoError;
 }
 
+bool Blorb::isBlorb(const Common::String &filename) {
+	return filename.hasSuffixIgnoreCase(".blorb") || filename.hasSuffixIgnoreCase(".zblorb")
+		|| filename.hasSuffixIgnoreCase(".gblorb") || filename.hasSuffixIgnoreCase(".blb");
+}
+
 } // End of namespace Glk
diff --git a/engines/glk/blorb.h b/engines/glk/blorb.h
index fbc1dd6..dd7e23c 100644
--- a/engines/glk/blorb.h
+++ b/engines/glk/blorb.h
@@ -93,6 +93,11 @@ public:
 	 * @return the newly created input stream
 	 */
 	virtual Common::SeekableReadStream *createReadStreamForMember(const Common::String &name) const override;
+
+	/**
+	 * Returns true if a given filename specifies a Blorb file
+	 */
+	static bool isBlorb(const Common::String &filename);
 };
 
 } // End of namespace Glk
diff --git a/engines/glk/glk.cpp b/engines/glk/glk.cpp
index 8c35cfe..d3e715a 100644
--- a/engines/glk/glk.cpp
+++ b/engines/glk/glk.cpp
@@ -114,8 +114,7 @@ Common::Error GlkEngine::run() {
 
 	initialize();
 
-	if (filename.hasSuffixIgnoreCase(".blorb") || filename.hasSuffixIgnoreCase(".zblorb")
-			|| filename.hasSuffixIgnoreCase(".gblorb")) {
+	if (Blorb::isBlorb(filename)) {
 		// Blorb archive
 		_blorb = new Blorb(filename, getInterpreterType());
 		SearchMan.add("blorb", _blorb, 99, false);
diff --git a/engines/glk/scott/detection.cpp b/engines/glk/scott/detection.cpp
index 6c04a25..45534d0 100644
--- a/engines/glk/scott/detection.cpp
+++ b/engines/glk/scott/detection.cpp
@@ -49,8 +49,9 @@ bool ScottMetaEngine::detectGames(const Common::FSList &fslist, DetectedGames &g
 
 	// Loop through the files of the folder
 	for (Common::FSList::const_iterator file = fslist.begin(); file != fslist.end(); ++file) {
-		if (file->isDirectory() || !(file->getName().hasSuffixIgnoreCase(".saga")
-				|| file->getName().hasSuffixIgnoreCase(".dat")))
+		Common::String name = file->getName();
+		if (file->isDirectory() || !(name.hasSuffixIgnoreCase(".saga")
+				|| name.hasSuffixIgnoreCase(".dat") || name.hasSuffixIgnoreCase(".blb")))
 			continue;
 
 		if (gameFile.open(*file)) {
@@ -60,7 +61,7 @@ bool ScottMetaEngine::detectGames(const Common::FSList &fslist, DetectedGames &g
 			const ScottGame *p = SCOTT_GAMES;
 			while (p->_md5 && p->_filesize != gameFile.size() && md5 != p->_md5)
 				++p;
-
+warning("{ \"%s\", \"%s\", %d }", md5.c_str(), file->getName().c_str(), gameFile.size());
 			if (p->_filesize) {
 				// Found a match
 				PlainGameDescriptor gameDesc = findGame(p->_gameId);
diff --git a/engines/glk/scott/detection_tables.h b/engines/glk/scott/detection_tables.h
index 37a0163..1270687 100644
--- a/engines/glk/scott/detection_tables.h
+++ b/engines/glk/scott/detection_tables.h
@@ -37,6 +37,7 @@ struct ScottGame {
 };
 
 const PlainGameDescriptor SCOTT_GAME_LIST[] = {
+	// Scott Adams games
 	{ "adventureland",     "Adventureland" },
 	{ "pirateadventure",   "Pirate Adventure" },
 	{ "missionimpossible", "Mission Impossible" },
@@ -54,6 +55,24 @@ const PlainGameDescriptor SCOTT_GAME_LIST[] = {
 	{ "buckaroobanzai",    "Buckaroo Banzai" },
 	{ "marveladventure",   "Marvel Adventure #1" },
 	{ "scottsampler",      "Adventure International's Mini-Adventure Sampler" },
+
+	// 11 Mysterious Adventures by Brian Howarth
+	{ "goldenbaton", "Mysterious Adventures 1: The Golden Baton" },
+	{ "timemachine", "Mysterious Adventures 2: The Time Machine" },
+	{ "arrowofdeath1", "Mysterious Adventures 3: Arrow of Death Part 1" },
+	{ "arrowofdeath2", "Mysterious Adventures 4: Arrow of Death Part 2" },
+	{ "pulsar7", "Mysterious Adventures 5: Escape from Pulsar 7" },
+	{ "circus", "Mysterious Adventures 6: Circus" },
+	{ "feasibility", "Mysterious Adventures 7: Feasibility Experiment" },
+	{ "akyrz", "Mysterious Adventures 8: The Wizard of Akyrz" },
+	{ "perseus", "Mysterious Adventures 9: Perseus and Andromeda" },
+	{ "10indians", "Mysterious Adventures 10: Ten Little Indians" },
+	{ "waxworks", "Mysterious Adventures 11: Waxworks" },
+
+
+	// Miscellaneous
+	{ "desert",            "Desert Adventure" },
+
 	{ nullptr, nullptr }
 };
 
@@ -92,6 +111,34 @@ const ScottGame SCOTT_GAMES[] = {
 	{ "0ef0def798d895ed766041fa99dd28a0", "adventure13",       22346 },
 	{ "0bf1bcc649422798332a38c88588fdff", "adventure14",       22087 },
 	{ "a0a5423967287dae9cbeb9abe8324479", "buckaroobanzai",    21038 },
+
+	// 11 Mysterious Adventures
+	{ "2ebf7b1dd515aff34b99b40f27af00e3", "goldenbaton", 13373 },
+	{ "a10cde2063bb56694000013b32dc0798", "timemachine", 13742 },
+	{ "6f7040fe091eeb9ebdc2fd7533b94ceb", "arrowofdeath1", 13412 },
+	{ "c5758034b83b06258e46091a80abebde", "arrowofdeath2", 15554 },
+	{ "7597704b423c1ca2bea3a48263b5f4dc", "pulsar7", 17777 },
+	{ "93a7947e2edb7c45036446168b427546", "circus", 13621 },
+	{ "c8f423a79ad0e508f43ba4ce91f1e573", "feasibility", 13441 },
+	{ "645c089d6d66324472d939993793eb57", "akyrz", 16803 },
+	{ "2f5bb15b461fbdc000243acabd324c67", "perseus", 15080 },
+	{ "3bb85fd505b4d42bd1767c1a76347e2f", "10indians", 14215 },
+	{ "af134c32cc0d50329d6e7335639ded88", "waxworks", 16068 },
+	{ "028303fd062c39b59b28982cde75f085", "goldenbaton", 53374 },
+	{ "b2ff405412d92b06373d9a5efbb048d4", "timemachine", 54062 },
+	{ "f11f85802eff8aed9e212aef7f26ede1", "arrowofdeath1", 68150 },
+	{ "8f2609b1270248c93cdf254435f9d410", "arrowofdeath2", 77544 },
+	{ "72e14dbfca7ced5c0aadf019b47b4024", "pulsar7", 55516 },
+	{ "64d44e66c4f5353150f8fbaceaa99800", "circus", 48624 },
+	{ "2d717aa4f0eba77b77e259f81f92fc37", "feasibility", 78456 },
+	{ "3467e09eb247c474ae7e8a8d503968d0", "akyrz", 65008 },
+	{ "4d8389c0ea3425bd4d92492538f63b19", "perseus", 56914 },
+	{ "72e91da7590138b78d370a3cb1448f3c", "10indians", 64660 },
+	{ "4d4ee8aa1f24e1745ab1aa017590dcff", "waxworks", 54556 },
+
+	// Other games
+	{ "c43e19228bae08eab74bc080e17bbe16", "desert",            12287 },
+
 	{ nullptr, nullptr, 0 }
 };
 





More information about the Scummvm-git-logs mailing list