[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