[Scummvm-cvs-logs] scummvm master -> a9b79544a11eba0649905330f58c4ff6161687e8

bluegr bluegr at gmail.com
Wed Jan 7 22:51:04 CET 2015


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

Summary:
339abc781c ZVISION: Add detection for the French version of Zork: Nemesis
5e1702d60e Cursors "arrowa.zcr" and "arrowb.zcr" are missing from Zork: Nemesis
07ad10babe ZVISION: Handle sound patches (.src files) dynamically
474ef74122 ZVISION: Check the validity of ZIX files
a9b79544a1 ZVISION: Add support for an unmodified ZIX file for Zork: Nemesis


Commit: 339abc781c09cec263a67e886ab4305368f7bfb5
    https://github.com/scummvm/scummvm/commit/339abc781c09cec263a67e886ab4305368f7bfb5
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2015-01-07T23:49:12+02:00

Commit Message:
ZVISION: Add detection for the French version of Zork: Nemesis

Changed paths:
    engines/zvision/detection.cpp



diff --git a/engines/zvision/detection.cpp b/engines/zvision/detection.cpp
index 5792377..6615240 100644
--- a/engines/zvision/detection.cpp
+++ b/engines/zvision/detection.cpp
@@ -78,6 +78,20 @@ static const ZVisionGameDescription gameDescriptions[] = {
 	},
 
 	{
+		// Zork Nemesis French version
+		{
+			"znemesis",
+			0,
+			AD_ENTRY1s("CSCR.ZFS", "f04113357b4748c13efcb58b4629887c", 2577873),
+			Common::FR_FRA,
+			Common::kPlatformDOS,
+			ADGF_NO_FLAGS,
+			GUIO4(GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_DOUBLE_FPS, GAMEOPTION_ENABLE_VENUS, GAMEOPTION_DISABLE_ANIM_WHILE_TURNING)
+		},
+		GID_NEMESIS
+	},
+
+	{
 		// Zork Nemesis English demo version
 		{
 			"znemesis",


Commit: 5e1702d60e4e6b6e618be36a64dc4ef563c80e47
    https://github.com/scummvm/scummvm/commit/5e1702d60e4e6b6e618be36a64dc4ef563c80e47
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2015-01-07T23:49:12+02:00

Commit Message:
Cursors "arrowa.zcr" and "arrowb.zcr" are missing from Zork: Nemesis

Changed paths:
    engines/zvision/graphics/cursors/cursor_manager.cpp



diff --git a/engines/zvision/graphics/cursors/cursor_manager.cpp b/engines/zvision/graphics/cursors/cursor_manager.cpp
index f3a5e73..1e048ef 100644
--- a/engines/zvision/graphics/cursors/cursor_manager.cpp
+++ b/engines/zvision/graphics/cursors/cursor_manager.cpp
@@ -55,6 +55,11 @@ CursorManager::CursorManager(ZVision *engine, const Graphics::PixelFormat pixelF
 	for (int i = 0; i < NUM_CURSORS; i++) {
 		if (_engine->getGameId() == GID_NEMESIS) {
 			Common::String name;
+			if (i == 1) {
+				// Cursors "arrowa.zcr" and "arrowb.zcr" are missing
+				_cursors[i][0] = _cursors[i][1] = ZorkCursor();
+				continue;
+			}
 			name = Common::String::format("%sa.zcr", _zNemCursorFileNames[i]);
 			_cursors[i][0] = ZorkCursor(_engine, name); // Up cursor
 			name = Common::String::format("%sb.zcr", _zNemCursorFileNames[i]);


Commit: 07ad10babe6eed96ac1d3ff8e9fc9580ec21b7bd
    https://github.com/scummvm/scummvm/commit/07ad10babe6eed96ac1d3ff8e9fc9580ec21b7bd
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2015-01-07T23:49:12+02:00

Commit Message:
ZVISION: Handle sound patches (.src files) dynamically

Changed paths:
    engines/zvision/file/search_manager.cpp
    engines/zvision/file/search_manager.h
    engines/zvision/sound/zork_raw.cpp
    engines/zvision/zvision.cpp



diff --git a/engines/zvision/file/search_manager.cpp b/engines/zvision/file/search_manager.cpp
index 626c777..aecfff5 100644
--- a/engines/zvision/file/search_manager.cpp
+++ b/engines/zvision/file/search_manager.cpp
@@ -62,19 +62,6 @@ SearchManager::~SearchManager() {
 	_archList.clear();
 }
 
-void SearchManager::addPatch(const Common::String &src, const Common::String &dst) {
-	Common::String lowerCaseName = dst;
-	lowerCaseName.toLowercase();
-
-	SearchManager::MatchList::iterator it = _files.find(lowerCaseName);
-
-	if (it != _files.end()) {
-		lowerCaseName = src;
-		lowerCaseName.toLowercase();
-		_files[lowerCaseName] = it->_value;
-	}
-}
-
 void SearchManager::addFile(const Common::String &name, Common::Archive *arch) {
 	bool addArch = true;
 	Common::List<Common::Archive *>::iterator it = _archList.begin();
diff --git a/engines/zvision/file/search_manager.h b/engines/zvision/file/search_manager.h
index b9ed02e..43e7ff4 100644
--- a/engines/zvision/file/search_manager.h
+++ b/engines/zvision/file/search_manager.h
@@ -39,7 +39,6 @@ public:
 
 	void addFile(const Common::String &name, Common::Archive *arch);
 	void addDir(const Common::String &name);
-	void addPatch(const Common::String &src, const Common::String &dst);
 
 	Common::File *openFile(const Common::String &name);
 	bool openFile(Common::File &file, const Common::String &name);
diff --git a/engines/zvision/sound/zork_raw.cpp b/engines/zvision/sound/zork_raw.cpp
index 6d1980b..0ef5de2 100644
--- a/engines/zvision/sound/zork_raw.cpp
+++ b/engines/zvision/sound/zork_raw.cpp
@@ -242,11 +242,27 @@ Audio::RewindableAudioStream *makeRawZorkStream(Common::SeekableReadStream *stre
 
 Audio::RewindableAudioStream *makeRawZorkStream(const Common::String &filePath, ZVision *engine) {
 	Common::File *file = new Common::File();
-	if (!engine->getSearchManager()->openFile(*file, filePath))
-		error("File not found: %s", filePath.c_str());
+	Common::String actualName = filePath;
+	bool found = engine->getSearchManager()->openFile(*file, actualName);
+	bool isRaw = actualName.hasSuffix(".raw");
+
+	if ((!found && isRaw) || (found && isRaw && file->size() < 10)) {
+		if (found)
+			file->close();
+
+		// Check for an audio patch (.src)
+		actualName.setChar('s', actualName.size() - 3);
+		actualName.setChar('r', actualName.size() - 2);
+		actualName.setChar('c', actualName.size() - 1);
+
+		if (!engine->getSearchManager()->openFile(*file, actualName))
+			error("File not found: %s", actualName.c_str());
+	} else if (!found && !isRaw) {
+		error("File not found: %s", actualName.c_str());
+	}
 
 	// Get the file name
-	Common::StringTokenizer tokenizer(filePath, "/\\");
+	Common::StringTokenizer tokenizer(actualName, "/\\");
 	Common::String fileName;
 	while (!tokenizer.empty()) {
 		fileName = tokenizer.nextToken();
diff --git a/engines/zvision/zvision.cpp b/engines/zvision/zvision.cpp
index 1349aaa..848cba0 100644
--- a/engines/zvision/zvision.cpp
+++ b/engines/zvision/zvision.cpp
@@ -186,20 +186,6 @@ void ZVision::initialize() {
 
 	if (_gameDescription->gameId == GID_GRANDINQUISITOR) {
 		_searchManager->loadZix("INQUIS.ZIX");
-		_searchManager->addPatch("C000H01Q.RAW", "C000H01Q.SRC");
-		_searchManager->addPatch("CM00H01Q.RAW", "CM00H01Q.SRC");
-		_searchManager->addPatch("DM00H01Q.RAW", "DM00H01Q.SRC");
-		_searchManager->addPatch("E000H01Q.RAW", "E000H01Q.SRC");
-		_searchManager->addPatch("EM00H50Q.RAW", "EM00H50Q.SRC");
-		_searchManager->addPatch("GJNPH65P.RAW", "GJNPH65P.SRC");
-		_searchManager->addPatch("GJNPH72P.RAW", "GJNPH72P.SRC");
-		_searchManager->addPatch("H000H01Q.RAW", "H000H01Q.SRC");
-		_searchManager->addPatch("M000H01Q.RAW", "M000H01Q.SRC");
-		_searchManager->addPatch("P000H01Q.RAW", "P000H01Q.SRC");
-		_searchManager->addPatch("Q000H01Q.RAW", "Q000H01Q.SRC");
-		_searchManager->addPatch("SW00H01Q.RAW", "SW00H01Q.SRC");
-		_searchManager->addPatch("T000H01Q.RAW", "T000H01Q.SRC");
-		_searchManager->addPatch("U000H01Q.RAW", "U000H01Q.SRC");
 	} else if (_gameDescription->gameId == GID_NEMESIS)
 		_searchManager->loadZix("NEMESIS.ZIX");
 


Commit: 474ef741226ac56bd146c79be96c55c00551593b
    https://github.com/scummvm/scummvm/commit/474ef741226ac56bd146c79be96c55c00551593b
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2015-01-07T23:49:13+02:00

Commit Message:
ZVISION: Check the validity of ZIX files

Changed paths:
    engines/zvision/file/search_manager.cpp
    engines/zvision/file/search_manager.h



diff --git a/engines/zvision/file/search_manager.cpp b/engines/zvision/file/search_manager.cpp
index aecfff5..80792b0 100644
--- a/engines/zvision/file/search_manager.cpp
+++ b/engines/zvision/file/search_manager.cpp
@@ -134,9 +134,10 @@ bool SearchManager::hasFile(const Common::String &name) {
 	return false;
 }
 
-void SearchManager::loadZix(const Common::String &name) {
+bool SearchManager::loadZix(const Common::String &name) {
 	Common::File file;
-	file.open(name);
+	if (!file.open(name))
+		return false;
 
 	Common::String line;
 
@@ -147,7 +148,7 @@ void SearchManager::loadZix(const Common::String &name) {
 	}
 
 	if (file.eos())
-		return;
+		error("Corrupt ZIX file: %s", name.c_str());
 
 	Common::Array<Common::Archive *> archives;
 
@@ -189,7 +190,7 @@ void SearchManager::loadZix(const Common::String &name) {
 	}
 
 	if (file.eos())
-		return;
+		error("Corrupt ZIX file: %s", name.c_str());
 
 	while (!file.eos()) {
 		line = file.readLine();
@@ -202,6 +203,8 @@ void SearchManager::loadZix(const Common::String &name) {
 			}
 		}
 	}
+
+	return true;
 }
 
 void SearchManager::addDir(const Common::String &name) {
diff --git a/engines/zvision/file/search_manager.h b/engines/zvision/file/search_manager.h
index 43e7ff4..0d0ab14 100644
--- a/engines/zvision/file/search_manager.h
+++ b/engines/zvision/file/search_manager.h
@@ -44,7 +44,7 @@ public:
 	bool openFile(Common::File &file, const Common::String &name);
 	bool hasFile(const Common::String &name);
 
-	void loadZix(const Common::String &name);
+	bool loadZix(const Common::String &name);
 
 	struct Node {
 		Common::String name;


Commit: a9b79544a11eba0649905330f58c4ff6161687e8
    https://github.com/scummvm/scummvm/commit/a9b79544a11eba0649905330f58c4ff6161687e8
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2015-01-07T23:49:13+02:00

Commit Message:
ZVISION: Add support for an unmodified ZIX file for Zork: Nemesis

This helps in copying the game files straight off the CD

Changed paths:
    engines/zvision/zvision.cpp



diff --git a/engines/zvision/zvision.cpp b/engines/zvision/zvision.cpp
index 848cba0..5b6d63e 100644
--- a/engines/zvision/zvision.cpp
+++ b/engines/zvision/zvision.cpp
@@ -185,9 +185,15 @@ void ZVision::initialize() {
 	_searchManager->addDir("addon");
 
 	if (_gameDescription->gameId == GID_GRANDINQUISITOR) {
-		_searchManager->loadZix("INQUIS.ZIX");
-	} else if (_gameDescription->gameId == GID_NEMESIS)
-		_searchManager->loadZix("NEMESIS.ZIX");
+		if (!_searchManager->loadZix("INQUIS.ZIX"))
+			error("Unable to load the game ZIX file");
+	} else if (_gameDescription->gameId == GID_NEMESIS) {
+		if (!_searchManager->loadZix("NEMESIS.ZIX")) {
+			// The game might not be installed, try MEDIUM.ZIX instead
+			if (!_searchManager->loadZix("ZNEMSCR/MEDIUM.ZIX"))
+				error("Unable to load the game ZIX file");
+		}
+	}
 
 	initScreen();
 






More information about the Scummvm-git-logs mailing list