[Scummvm-git-logs] scummvm master -> febc1c1eb4a8cac49b37b834b4f2cdfe60f69c30

neuromancer noreply at scummvm.org
Wed Jun 24 20:36:38 UTC 2026


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

Summary:
febc1c1eb4 EEM: better hash matching for EEM1 Mac


Commit: febc1c1eb4a8cac49b37b834b4f2cdfe60f69c30
    https://github.com/scummvm/scummvm/commit/febc1c1eb4a8cac49b37b834b4f2cdfe60f69c30
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2026-06-24T21:58:05+02:00

Commit Message:
EEM: better hash matching for EEM1 Mac

Changed paths:
    engines/eem/detection.cpp
    engines/eem/installer.cpp


diff --git a/engines/eem/detection.cpp b/engines/eem/detection.cpp
index 48ab6e43f2f..22cbe01d787 100644
--- a/engines/eem/detection.cpp
+++ b/engines/eem/detection.cpp
@@ -90,12 +90,13 @@ const ADGameDescription gameDescriptions[] = {
 		GUI_OPTIONS_EEM_MAC
 	},
 	{
-		// Macintosh floppy release played straight from its installer files
-		// ("Eagle Eye Installer" + "EEM Install Data 2".."6"); the engine
-		// decompresses them on the fly (see installer.cpp).
+		// Macintosh release played straight from its installer files
+		// ("Eagle Eye Installer" + "EEM Install Data 2".."6"); decompressed on
+		// the fly (see installer.cpp). "d:" hashes the data fork so this matches
+		// both the raw-fork (CD/floppy) and MacBinary-wrapped captures.
 		"eem",
 		"",
-		AD_ENTRY2s("Eagle Eye Installer", "08440dbf0cb47fb57e522f050159ffaa", 1391577,
+		AD_ENTRY2s("Eagle Eye Installer", "d:08440dbf0cb47fb57e522f050159ffaa", 1391577,
 				   "EEM Install Data 2",  "aebccc677e149b37285f291f6ac72f57", 1446428),
 		Common::EN_ANY,
 		Common::kPlatformMacintosh,
diff --git a/engines/eem/installer.cpp b/engines/eem/installer.cpp
index 8c2096787b0..a0eeea28b00 100644
--- a/engines/eem/installer.cpp
+++ b/engines/eem/installer.cpp
@@ -26,6 +26,7 @@
 #include "common/debug.h"
 #include "common/endian.h"
 #include "common/fs.h"
+#include "common/macresman.h"
 #include "common/memstream.h"
 #include "common/str.h"
 #include "common/stream.h"
@@ -400,16 +401,26 @@ bool InstallerArchive::load(const Common::FSNode &dir) {
 			// only entries that reference them will fail to load.
 			break;
 		}
-		Common::ScopedPtr<Common::SeekableReadStream> stream(node.createReadStream());
-		if (!stream) {
+		Common::ScopedPtr<Common::SeekableReadStream> file(node.createReadStream());
+		if (!file) {
 			warning("EEM installer: cannot read %s", names[i].c_str());
 			return i != 0;
 		}
+
+		// "Eagle Eye Installer" may be a raw data fork (CD/floppy) or
+		// MacBinary-wrapped; read just its data fork so both yield the same
+		// stream. The continuation segments are always raw.
+		Common::ScopedPtr<Common::SeekableReadStream> dataFork;
+		if (i == 0)
+			dataFork.reset(Common::MacResManager::openDataForkFromMacBinary(file.get()));
+		Common::SeekableReadStream *src = dataFork ? dataFork.get() : file.get();
+		src->seek(0);
+
 		const uint32 oldSize = _archive.size();
-		const uint32 addSize = (uint32)stream->size();
+		const uint32 addSize = (uint32)src->size();
 		_diskBase[i + 1] = oldSize; // disk numbers are 1-based
 		_archive.resize(oldSize + addSize);
-		if (stream->read(_archive.data() + oldSize, addSize) != addSize) {
+		if (src->read(_archive.data() + oldSize, addSize) != addSize) {
 			warning("EEM installer: short read on %s", names[i].c_str());
 			return false;
 		}




More information about the Scummvm-git-logs mailing list