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

sev- noreply at scummvm.org
Tue Jun 17 18:49:14 UTC 2025


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

Summary:
54a873ba52 COMMON: Expose data/resfork sizes in MacResMan
6dcf57e600 GUI: INTEGRITY: Simplified checksum calculations and added size calculations for mac files
991f8f808d DIRECTOR: Change h: prefix in md5s (?) to f:. It seems to be front of the file
c21003d7ea MOHAWK: Change 'h:' md5 prefix in detection tables to f:


Commit: 54a873ba52e8b72fd7546c5fe81deac2dbe8741d
    https://github.com/scummvm/scummvm/commit/54a873ba52e8b72fd7546c5fe81deac2dbe8741d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-06-17T20:49:05+02:00

Commit Message:
COMMON: Expose data/resfork sizes in MacResMan

Changed paths:
    common/macresman.h


diff --git a/common/macresman.h b/common/macresman.h
index e98da991817..c741ffb81fb 100644
--- a/common/macresman.h
+++ b/common/macresman.h
@@ -267,6 +267,18 @@ public:
 	 */
 	uint32 getResForkDataSize() const;
 
+	uint32 getResForkSize() const {
+		if (!hasResFork())
+			return 0;
+		return _resForkSize;
+	}
+
+	uint32 getDataForkSize() const {
+		if (!hasDataFork())
+			return 0;
+		return _dataLength;
+	}
+
 	/**
 	 * Calculate the MD5 checksum of the resource fork
 	 * @param length The maximum length to compute for


Commit: 6dcf57e600751a3379b714130dea396834924af1
    https://github.com/scummvm/scummvm/commit/6dcf57e600751a3379b714130dea396834924af1
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-06-17T20:49:05+02:00

Commit Message:
GUI: INTEGRITY: Simplified checksum calculations and added size calculations for mac files

Changed paths:
    gui/integrity-dialog.cpp


diff --git a/gui/integrity-dialog.cpp b/gui/integrity-dialog.cpp
index b3e8c8ea131..aec7fef451c 100644
--- a/gui/integrity-dialog.cpp
+++ b/gui/integrity-dialog.cpp
@@ -370,24 +370,38 @@ Common::Array<Common::StringArray> IntegrityDialog::generateChecksums(Common::Pa
 			// Data fork
 			// Various checksizes
 			for (auto size : {0, 5000, 1024 * 1024}) {
+				fileChecksum.push_back(Common::String::format("md5-d-%d", size));
 				fileChecksum.push_back(Common::computeStreamMD5AsString(*dataForkStream, size, progressUpdateCallback, this));
 				dataForkStream->seek(0);
 			}
 			// Tail checksums with checksize 5000
 			dataForkStream->seek(-5000, SEEK_END);
+			fileChecksum.push_back("md5-dt-5000");
 			fileChecksum.push_back(Common::computeStreamMD5AsString(*dataForkStream, 0, progressUpdateCallback, this).c_str());
 
 			// Resource fork
 			if (macFile.hasResFork()) {
 				// Various checksizes
 				for (auto size : {0, 5000, 1024 * 1024}) {
+					fileChecksum.push_back(Common::String::format("md5-r-%d", size));
 					fileChecksum.push_back(macFile.computeResForkMD5AsString(size, false, progressUpdateCallback, this));
 				}
 				// Tail checksums with checksize 5000
+				fileChecksum.push_back("md5-rt-5000");
 				fileChecksum.push_back(macFile.computeResForkMD5AsString(5000, true, progressUpdateCallback, this).c_str());
-				fileChecksums.push_back(fileChecksum);
 			}
 
+			fileChecksum.push_back("size");
+			fileChecksum.push_back(Common::String::format("%llu", (unsigned long long)macFile.getDataForkSize()));
+
+			fileChecksum.push_back("size-r");
+			fileChecksum.push_back(Common::String::format("%llu", (unsigned long long)macFile.getResForkSize()));
+
+			fileChecksum.push_back("size-rd");
+			fileChecksum.push_back(Common::String::format("%llu", (unsigned long long)macFile.getResForkDataSize()));
+
+			fileChecksums.push_back(fileChecksum);
+
 			g_checksum_state->calculatedSize += dataForkStream->size();
 
 			macFile.close();
@@ -404,13 +418,18 @@ Common::Array<Common::StringArray> IntegrityDialog::generateChecksums(Common::Pa
 		Common::Array<Common::String> fileChecksum = {filename.toString()};
 		// Various checksizes
 		for (auto size : {0, 5000, 1024 * 1024}) {
+			fileChecksum.push_back(Common::String::format("md5-%d", size));
 			fileChecksum.push_back(Common::computeStreamMD5AsString(file, size, progressUpdateCallback, this).c_str());
 			file.seek(0);
 		}
 		// Tail checksums with checksize 5000
 		file.seek(-5000, SEEK_END);
+		fileChecksum.push_back("md5-t-5000");
 		fileChecksum.push_back(Common::computeStreamMD5AsString(file, 0, progressUpdateCallback, this).c_str());
 
+		fileChecksum.push_back("size");
+		fileChecksum.push_back(Common::String::format("%llu", (unsigned long long)file.size()));
+
 		file.close();
 		fileChecksums.push_back(fileChecksum);
 	}
@@ -442,37 +461,26 @@ Common::JSONValue *IntegrityDialog::generateJSONRequest(Common::Path gamePath, C
 		Common::Path relativePath = Common::Path(fileChecksum[0]).relativeTo(gamePath);
 		file.setVal("name", new Common::JSONValue(relativePath.toConfig()));
 
-		Common::File tempFile;
-		if (!tempFile.open(Common::Path(fileChecksum[0])))
-			continue;
-		uint64 fileSize = tempFile.size();
-		tempFile.close();
-
-		file.setVal("size", new Common::JSONValue((long long)fileSize));
-
 		Common::JSONArray checksums;
 		Common::StringArray checkcodes;
-		if (fileChecksum.size() == 9)
-			checkcodes = {"md5-d", "md5-d-5000", "md5-d-1M", "md5-dt-5000", "md5-r", "md5-r-5000", "md5-r-1M", "md5-rt-5000"};
-		else
-			checkcodes = {"md5", "md5-5000", "md5-1M", "md5-t-5000"};
-
-		int index = -1;
-		for (Common::String val : fileChecksum) {
-			index++;
 
+		uint i;
+		for (i = 1; i < fileChecksum.size(); i += 2) {
 			Common::JSONObject checksum;
-			if (index < 1) {
-				continue;
-			}
 
-			checksum.setVal("type", new Common::JSONValue(checkcodes[index - 1]));
-			checksum.setVal("checksum", new Common::JSONValue(val));
+			checksum.setVal("type", new Common::JSONValue(fileChecksum[i]));
+			checksum.setVal("checksum", new Common::JSONValue(fileChecksum[i + 1]));
+
+			if (fileChecksum[i].hasPrefix("size"))
+				break;
 
 			checksums.push_back(new Common::JSONValue(checksum));
 		}
 		file.setVal("checksums", new Common::JSONValue(checksums));
 
+		for (; i < fileChecksum.size(); i += 2)
+			file.setVal(fileChecksum[i], new Common::JSONValue(fileChecksum[i + 1]));
+
 		filesObject.push_back(new Common::JSONValue(file));
 	}
 


Commit: 991f8f808d7730eb0b333bfc4cd36389a8ffaf66
    https://github.com/scummvm/scummvm/commit/991f8f808d7730eb0b333bfc4cd36389a8ffaf66
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-06-17T20:49:05+02:00

Commit Message:
DIRECTOR: Change h: prefix in md5s (?) to f:. It seems to be front of the file

Changed paths:
    engines/director/detection_tables.h


diff --git a/engines/director/detection_tables.h b/engines/director/detection_tables.h
index 70a2a984ed8..7edf9086d7e 100644
--- a/engines/director/detection_tables.h
+++ b/engines/director/detection_tables.h
@@ -4360,7 +4360,7 @@ static const DirectorGameDescription gameDescriptions[] = {
 
 	MACGAME1("gigglevania", "", "Pantsylvania", "r:d9082ba24e164f376ffb3090c43fa997", 303893, 404),
 	WINGAME2("gigglevania", "", "PANTS.EXE",	"t:2c22991e2349ff5fc6f4f23940ae6487", 697317,
-								"INTRO.DXR",	"h:41101e9d94da0a627e75f5b93ae22f48", 5008606, 404),
+								"INTRO.DXR",	"f:41101e9d94da0a627e75f5b93ae22f48", 5008606, 404),
 	// Found on Elroy Goes Bugzerk CD
 	MACDEMO1("gigglevania", "Demo", "Pantsylvania Demo", "r:da1e2ceef5a0013fa068e9a3ad013336", 502075, 400),
 	WINDEMO1("gigglevania", "Demo", "PANTDEMO.EXE", "t:ad83c38a5bbf3ce654dc27641cd505cc", 8422605, 400),
@@ -5963,7 +5963,7 @@ static const DirectorGameDescription gameDescriptions[] = {
 	// Earlier demos are D3; the Great Big Demo is from Spaceship Warlock AV (1996)
 	// Great Big Windows demo is also on this disc, despite it being HFS and Mac-only
 	MACGAME1("totaldistortion", "",	"Installer Files/xn--TD MACPPC-qa02c",	 "r:17efee018a660458fae80de4364021ac", 485818, 404),
-	WINGAME1("totaldistortion", "", "TOTAL_DN.EXE",							 "h:461b407c321e80487ae4882056310f9f", 700747, 404),
+	WINGAME1("totaldistortion", "", "TOTAL_DN.EXE",							 "t:f1adf50f829a148bbae442ee5cca0bd3", 700747, 404),
 	MACDEMO1("totaldistortion", "Great Big Demo", "TD Demo 12 Meg",			 "r:17efee018a660458fae80de4364021ac", 485818, 404),
 	WINDEMO1("totaldistortion", "Great Big Demo", "TD_DEMO.EXE",			 "t:028063f8a752f5ffda7477f328500d82", 700447, 404),
 	WINDEMO1("totaldistortion", "Great Big Demo", "TD_DEMON.EXE",			 "t:028063f8a752f5ffda7477f328500d82", 700447, 400),
@@ -6390,9 +6390,9 @@ static const DirectorGameDescription gameDescriptions[] = {
 
 	// From Ultra Gameplayers #98
 	MACDEMO2("aol", "", "WELCOME",	   "r:06ed90580400cd9e263525f84c8075fd", 705417,
-						"Installer",   "h:b5b0f62a80b345e4e25063bffbdb9f0a", 5854464, 500),
+						"Installer",   "f:b5b0f62a80b345e4e25063bffbdb9f0a", 5854464, 500),
 	WINDEMO2("aol", "", "WELCOME.EXE", "t:9ba379aef91e4ad2c8c8a66f78a33db8", 5417967,
-						"SETUP.EXE",   "h:26b91350fc6ba73a6f76b73f3c781415", 21106117, 501),
+						"SETUP.EXE",   "f:26b91350fc6ba73a6f76b73f3c781415", 21106117, 501),
 
 	MACDEMO1("aptesampler", "", "Product Sampler", "aa6a527c1314eae56f00d9b9fb587683", 719033, 501),
 	WINDEMO1t("aptesampler", "", "APTE32.EXE", "a42cd36dd6224f4382f676f946e48914", 1410355, 501),
@@ -6821,7 +6821,7 @@ static const DirectorGameDescription gameDescriptions[] = {
 	WINGAME2f_l("gadgetpaf", "",		 "GADGET/GADGET.EXE", "1a7acbba10a7246ba58c1d53fc7203f5", 1411507,
 									 "DATA/TEXT_E.Cxt", "056ab5419f65fab51fa50c28ad360e76", 561824, Common::ES_ESP, 501, GF_32BPP),
 	WINDEMO2f_l("gadgetpaf", "Demo", "GADGET.exe", "t:7e393434e06153a6413baf1b448f440e", 1647502,
-									 "TEXT_E.Cxt", "h:f2efb64dc4e3e1ea705309426fff7824", 152776, Common::ES_ESP, 501, GF_32BPP),
+									 "TEXT_E.Cxt", "f:f2efb64dc4e3e1ea705309426fff7824", 152776, Common::ES_ESP, 501, GF_32BPP),
 
 	MACGAME1("gamingmegapac", "", "Gaming MegaPac", "b861188374e80b1184e7f96dcab4fc9b", 719005, 501),
 
@@ -7502,13 +7502,13 @@ static const DirectorGameDescription gameDescriptions[] = {
 
 	// Mac version requires installation, 'Install Secrets of the Minds', Installer VISE Lite 3.6
 	MACGAME2("secretmind", "Disc 1", "Secrets of the Minds", "r:575bc118621e964630087984e463c283", 90895,
-									 "XBITEMOV/ANAD01.DIR",	 "h:ed02ee44b196363709d3be9b00623fce", 124730, 500),
+									 "XBITEMOV/ANAD01.DIR",	 "f:ed02ee44b196363709d3be9b00623fce", 124730, 500),
 	WINGAME2("secretmind", "Disc 1", "Install Secrets of the Mind/Mind.exe", "t:e9cfac3e743c99605893a1b5e90a821d", 1412092,
-									 "XBITEMOV/ANAD01.DIR",	 "h:ed02ee44b196363709d3be9b00623fce", 124730, 500),
+									 "XBITEMOV/ANAD01.DIR",	 "f:ed02ee44b196363709d3be9b00623fce", 124730, 500),
 	MACGAME2("secretmind", "Disc 2", "Secrets of the Minds", "r:575bc118621e964630087984e463c283", 90895,
-									 "XBITEMOV/BLDE01.DIR",	 "h:e137bdd5e7afe3b68ad8309e78edeb43", 87132, 500),
+									 "XBITEMOV/BLDE01.DIR",	 "f:e137bdd5e7afe3b68ad8309e78edeb43", 87132, 500),
 	WINGAME2("secretmind", "Disc 2", "Install Secrets of the Mind/Mind.exe", "t:e9cfac3e743c99605893a1b5e90a821d", 1412092,
-									 "XBITEMOV/BLDE01.DIR",	 "h:e137bdd5e7afe3b68ad8309e78edeb43", 87132, 500),
+									 "XBITEMOV/BLDE01.DIR",	 "f:e137bdd5e7afe3b68ad8309e78edeb43", 87132, 500),
 
 	// Both versions require installation
 	MACGAME1("secretpaths1", "", "Secret Paths in the Forest",	   "r:4f0fb528e9c495fd2822ad400178e7a8",  716771, 501),
@@ -7752,9 +7752,9 @@ static const DirectorGameDescription gameDescriptions[] = {
 	},
 
 	MACGAME2("ultragameplayers", "#98", "Start PPC",   "r:b69f9cb79da512852ed383a1cfef14b9", 718097,
-										"NEW_UGP.Dxr", "h:b6c7ab2e81611d3cf3daa7d4f62b7a9b", 8931668, 501),
+										"NEW_UGP.Dxr", "f:b6c7ab2e81611d3cf3daa7d4f62b7a9b", 8931668, 501),
 	WINGAME2("ultragameplayers", "#98", "START95.EXE", "t:3504faad6bcbf5eef2ca88be1f618b9e", 1034041,
-										"NEW_UGP.Dxr", "h:b6c7ab2e81611d3cf3daa7d4f62b7a9b", 8931668, 501),
+										"NEW_UGP.Dxr", "f:b6c7ab2e81611d3cf3daa7d4f62b7a9b", 8931668, 501),
 
 	MACGAME1_l("ursaminorblue", "Hybrid release", "URSA (PPC)", "08166af62693ceab79b28d90d2f6c86b", 106927, Common::JA_JPN, 501),
 	WINGAME1_l("ursaminorblue", "Hybrid release", "START/UMB_32.EXE", "1a7acbba10a7246ba58c1d53fc7203f5", 1405383, Common::JA_JPN, 501),
@@ -8621,7 +8621,7 @@ static const DirectorGameDescription gameDescriptions[] = {
 	// Requires installation, Setup.exe/Setup, Installer VISE Lite 3.6
 	MACGAME1("rockettmilkss", "", "xn--Rockett's got milk-cba45j", "r:b0b0e36586489ca6070d20feeff52fa5", 1194536, 600),
 	WINGAME2("rockettmilkss", "", "SETUP.EXE", "t:4623015fc4f068dce16877798eff3599", 5299185,
-								  "SETUP.SCR", "h:6cf2d7908884109d915caba5c2671168", 354934, 600),
+								  "SETUP.SCR", "f:6cf2d7908884109d915caba5c2671168", 354934, 600),
 
 	WINGAME1t_l("rymdjakten", "Romjakten", "ROMJAKT.EXE", "c4259b2ecfd421bd28f29b8a6ddf42f3", 1522656, Common::NB_NOR, 602),
 	MACGAME1t_l("rymdjakten", "Romjakten", "Romjakten", "960f8041921e1ca6c0781cb0f17abc25", 1032378, Common::NB_NOR, 602),
@@ -9972,7 +9972,7 @@ static const DirectorGameDescription gameDescriptions[] = {
 						   "unwrap.dxr", "69dd7f79e76af5b0eab89d5ae589f836", 50599487, 800),
 
 	WINGAME2("urubonus", "", "DEMO.EXE", "t:e1d0f97d43f0c5cd7a489100ba35f447", 2861430,
-							 "MOF.DXR",	 "h:cea5b508833dea38abe41b743b3676cd", 1416050, 850),
+							 "MOF.DXR",	 "f:cea5b508833dea38abe41b743b3676cd", 1416050, 850),
 
 	MACGAME1("vug2005", "", "VUGames.osx", "a171b7a952d1ac68ae3cd419d6dfc674", 262042, 850),
 	WINGAME1("vug2005", "", "VUG_2005.exe", "c163f36141579ee374f7b4b2bddee95a", 2823410, 850),


Commit: c21003d7ea8ea2ca6daaeec3c2f887a52079bb8f
    https://github.com/scummvm/scummvm/commit/c21003d7ea8ea2ca6daaeec3c2f887a52079bb8f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-06-17T20:49:05+02:00

Commit Message:
MOHAWK: Change 'h:' md5 prefix in detection tables to f:

Changed paths:
    engines/mohawk/detection_tables.h


diff --git a/engines/mohawk/detection_tables.h b/engines/mohawk/detection_tables.h
index 759c75b5384..54ac21b27db 100644
--- a/engines/mohawk/detection_tables.h
+++ b/engines/mohawk/detection_tables.h
@@ -1069,7 +1069,7 @@ static const MohawkGameDescription gameDescriptions[] = {
 		{
 			"amazingwriting",
 			MetaEngineDetection::GAME_NOT_IMPLEMENTED, // Reason for being unsupported,
-			AD_ENTRY1s("system.dat", "h:6d65aa2cc7d437bb352aa18c0d63e332", 131),
+			AD_ENTRY1s("system.dat", "f:6d65aa2cc7d437bb352aa18c0d63e332", 131),
 			Common::FR_FRA,
 			Common::kPlatformMacintosh,
 			ADGF_UNSUPPORTED,




More information about the Scummvm-git-logs mailing list