[Scummvm-git-logs] scummvm master -> 509884e5c0f58fae38ce53540378e81ace226997
sev-
noreply at scummvm.org
Tue Mar 3 00:19:02 UTC 2026
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
b665b19a29 AD: Enhance logic for computing candidates, added more debug output
509884e5c0 PHOENIXVR: Added detection for CD version of necrono
Commit: b665b19a29e531e1f0d2a7ed3716e28974b7dd77
https://github.com/scummvm/scummvm/commit/b665b19a29e531e1f0d2a7ed3716e28974b7dd77
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2026-03-03T01:13:47+01:00
Commit Message:
AD: Enhance logic for computing candidates, added more debug output
Now we will always try to find candidate with biggest amount
of files and report that, instead of the first partially
matched version.
Changed paths:
engines/advancedDetector.cpp
diff --git a/engines/advancedDetector.cpp b/engines/advancedDetector.cpp
index ab581219eb5..04c16a0ddb2 100644
--- a/engines/advancedDetector.cpp
+++ b/engines/advancedDetector.cpp
@@ -727,8 +727,8 @@ ADDetectedGames AdvancedMetaEngineDetectionBase::detectGame(const Common::FSNode
MD5Properties md5prop = gameFileToMD5Props(fileDesc, g->flags);
Common::String fname = fileDesc->fileName;
Common::String key = md5PropToCachePrefix(md5prop);
- key += ':';
- key += fname;
+ key += ':';
+ key += fname;
if (filesProps.contains(key))
continue;
@@ -745,6 +745,7 @@ ADDetectedGames AdvancedMetaEngineDetectionBase::detectGame(const Common::FSNode
}
int maxFilesMatched = 0;
+ int maxCandidateFiles = 0;
bool gotAnyMatchesWithAllFiles = false;
// MD5 based matching
@@ -772,6 +773,7 @@ ADDetectedGames AdvancedMetaEngineDetectionBase::detectGame(const Common::FSNode
ADDetectedGame game(g);
bool allFilesPresent = true;
int curFilesMatched = 0;
+ int numFilesInEntry = 0;
// Try to match all files for this game
for (fileDesc = game.desc->filesDescriptions; fileDesc->fileName; fileDesc++) {
@@ -781,6 +783,8 @@ ADDetectedGames AdvancedMetaEngineDetectionBase::detectGame(const Common::FSNode
key += ':';
key += tstr;
+ numFilesInEntry++;
+
if (!filesProps.contains(key) || filesProps[key].size == -1) {
allFilesPresent = false;
break;
@@ -811,6 +815,9 @@ ADDetectedGames AdvancedMetaEngineDetectionBase::detectGame(const Common::FSNode
curFilesMatched++;
}
+ debugC(3, kDebugGlobalDetection, "Game '%s' matched %d files all files present: %d has unknown files: %d, total files: %d",
+ g->gameId, curFilesMatched, allFilesPresent, game.hasUnknownFiles, numFilesInEntry);
+
// We found at least one entry with all required files present.
// That means that we got new variant of the game.
//
@@ -828,13 +835,22 @@ ADDetectedGames AdvancedMetaEngineDetectionBase::detectGame(const Common::FSNode
continue;
}
- if (matched.empty() || strcmp(matched.back().desc->gameId, g->gameId) != 0)
+ if (matched.empty() || strcmp(matched.back().desc->gameId, g->gameId) != 0 || numFilesInEntry > maxCandidateFiles) {
+ if (numFilesInEntry > maxCandidateFiles) {
+ debugC(2, kDebugGlobalDetection, " ... new best candidate match, removing all previous candidates");
+ maxCandidateFiles = numFilesInEntry;
+
+ matched.clear(); // Remove any prior, lower ranked matches.
+ }
+
+ debugC(2, kDebugGlobalDetection, " ... adding candidate match");
matched.push_back(game);
+ }
}
if (allFilesPresent && !game.hasUnknownFiles) {
debugC(2, kDebugGlobalDetection, "Found game: %s (%s %s/%s) (%d)", g->gameId, g->extra,
- getPlatformDescription(g->platform), getLanguageDescription(g->language), i);
+ getPlatformDescription(g->platform), getLanguageDescription(g->language), i);
if (curFilesMatched > maxFilesMatched) {
debugC(2, kDebugGlobalDetection, " ... new best match, removing all previous candidates");
@@ -843,6 +859,7 @@ ADDetectedGames AdvancedMetaEngineDetectionBase::detectGame(const Common::FSNode
matched.clear(); // Remove any prior, lower ranked matches.
matched.push_back(game);
} else if (curFilesMatched == maxFilesMatched) {
+ debugC(2, kDebugGlobalDetection, " ... same number of files matched as the current best match, adding to candidates");
matched.push_back(game);
} else {
debugC(2, kDebugGlobalDetection, " ... skipped");
@@ -851,7 +868,7 @@ ADDetectedGames AdvancedMetaEngineDetectionBase::detectGame(const Common::FSNode
gotAnyMatchesWithAllFiles = true;
} else {
debugC(7, kDebugGlobalDetection, "Skipping game: %s (%s %s/%s) (%d)", g->gameId, g->extra,
- getPlatformDescription(g->platform), getLanguageDescription(g->language), i);
+ getPlatformDescription(g->platform), getLanguageDescription(g->language), i);
}
}
Commit: 509884e5c0f58fae38ce53540378e81ace226997
https://github.com/scummvm/scummvm/commit/509884e5c0f58fae38ce53540378e81ace226997
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2026-03-03T01:15:23+01:00
Commit Message:
PHOENIXVR: Added detection for CD version of necrono
Changed paths:
engines/phoenixvr/detection.cpp
engines/phoenixvr/detection_tables.h
diff --git a/engines/phoenixvr/detection.cpp b/engines/phoenixvr/detection.cpp
index 8879a8e06dc..9eed8317a3c 100644
--- a/engines/phoenixvr/detection.cpp
+++ b/engines/phoenixvr/detection.cpp
@@ -39,6 +39,7 @@ const DebugChannelDef PhoenixVRMetaEngineDetection::debugFlagList[] = {
PhoenixVRMetaEngineDetection::PhoenixVRMetaEngineDetection() : AdvancedMetaEngineDetection(
PhoenixVR::gameDescriptions, PhoenixVR::phoenixvrGames) {
+ _flags = kADFlagMatchFullPaths;
}
REGISTER_PLUGIN_STATIC(PHOENIXVR_DETECTION, PLUGIN_TYPE_ENGINE_DETECTION, PhoenixVRMetaEngineDetection);
diff --git a/engines/phoenixvr/detection_tables.h b/engines/phoenixvr/detection_tables.h
index ff1d4d466dd..f121c3bccd0 100644
--- a/engines/phoenixvr/detection_tables.h
+++ b/engines/phoenixvr/detection_tables.h
@@ -39,6 +39,18 @@ const ADGameDescription gameDescriptions[] = {
ADGF_DROPPLATFORM | ADGF_TESTING,
GUIO1(GUIO_NONE)},
+ {"necrono",
+ nullptr,
+ AD_ENTRY4s(
+ "script.pak", "da42a18dd02fc01f116228d5c219b2fd", 215,
+ "textes.txt", "f795f35b079cb8ef599724a2a7336c7e", 5319,
+ "cd1/Data/Script1.pak", "626cac1db5160142313fdcf483fda2bf", 57410,
+ "cd2/Data/Script3.pak", "4f122b65627903da15b3f15156252c8d", 63979),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_DROPPLATFORM | ADGF_CD | ADGF_TESTING,
+ GUIO1(GUIO_NONE)},
+
{"necrono",
nullptr,
AD_ENTRY2s(
More information about the Scummvm-git-logs
mailing list