Commit graph

262 commits

Author SHA1 Message Date
Filippos Karapetis
1921ebf02e ENGINES: Use C++ 11 range-based for loops 2025-03-27 13:47:57 +08:00
Eugene Sandulenko
e721bd540b
AD: Fix debugC() usage 2025-02-22 21:24:19 +01:00
Vladimir Serbinenko
949eab7d21 DETECTOR: Support kADFlagCanTranscodeTraditionalChineseToSimplified 2024-09-13 00:11:38 +02:00
Cameron Cawley
6b9d40ee71 DETECTION: Support Clickteam installers in detection tables 2024-07-15 20:48:55 +03:00
Cameron Cawley
441b02d057 DETECTION: Use uint32 for ADGameFileDescription file size 2024-06-30 19:13:41 +02:00
Le Philousophe
b61bd3ff85 ENGINES: Create a type aware advanced meta engine 2024-06-30 18:39:06 +02:00
Le Philousophe
90b886097f ENGINES: Create a type aware advanced detector 2024-06-30 18:39:06 +02:00
Le Philousophe
98d6f155d2 ENGINES: Split Engine::createInstance in two
This brings a cleaner separation between AdvancedMetaEngineDetection and
AdvancedMetaEngine.
2024-06-30 18:39:06 +02:00
Eugene Sandulenko
9610068217
AD: Added more filenames to gray list 2024-06-01 21:48:31 +02:00
Cameron Cawley
30b977c272 DETECTION: Mark more symbols as const 2023-12-26 20:23:59 +01:00
Le Philousophe
645a35c05b ENGINES: Migrate to Path class 2023-12-24 13:19:25 +01:00
Eugene Sandulenko
22e9f80162
AD: Added demo.ini to graylist 2023-12-16 00:34:45 +01:00
Eugene Sandulenko
f5829aee43
AD: Print out engineid:gameid pairs for game references in sanity checks
These are now new canonical game names, thus, making it consistent.
2023-11-24 02:26:58 +01:00
Kaloyan Chehlarski
fecfd1b462 AD: Improve archive scanning sanity check
Improved the game entry sanity check for entries with
archive scanning so it no longer assumes an A: prefix in the
md5 sum is unaccompanied by other prefixes.
2023-11-04 14:31:37 +02:00
Kaloyan Chehlarski
486b139d10 AD: Clean up detection prefix generation functions
Cleaned up the functions md5PropToGameFile() and
md5PropToCachePrefix() so they no longer work through
a tree of switches. Both functions have also been changed to
return a Common::String.
2023-11-02 18:20:44 +01:00
Kaloyan Chehlarski
f7fe15ed42 AD: Add sanity checks for entries with archives
AdvancedMetaEngineDetection::detectClashes() now
performs a sanity check for entries with archive members,
making sure their filename schema contains exactly three
elements.
2023-11-02 18:20:44 +01:00
Kaloyan Chehlarski
ad682243c4 AD: Support reading inside InstallShieldV3 archives
InstallShield V3 archives are a completely different format
and have their own Archive subclass; this commit allows
AdvancedDetector to look inside them. Also moved around
some of the relevant logic and added more comments to
make the code more readable.
2023-11-02 18:20:44 +01:00
Kaloyan Chehlarski
c598e60e5e AD: Clear archive cache when starting game
This ensures we don't keep potentially expensive and
otherwise useless objects when a game is running
2023-11-02 18:20:44 +01:00
Kaloyan Chehlarski
f77eca7c80 AD: Implement archive caching during detection
Renamed MD5CacheManager to AdvancedDetectorCacheManager,
and added facilities for storing open archives inside it. This
way an archive that was opened by an AdvancedDetector
will be kept in memory until the end of the detection, so
other entries/engines that will look inside it won't have
to reopen it and reread its data every time.
2023-11-02 18:20:44 +01:00
Kaloyan Chehlarski
22553cb924 AD: Implement scanning inside InstallShield archives
Added the A: prefix to detection md5 sums, which is used to
signify that the desired file is embedded within an archive.
Added support for similar prefixes in filenames, which should
look like the following example:

is:data1.cab:file.dat

Where "is" is the identifier for InstallShield archives,
"data1.cab" is the name of the archive container file, and
"file.dat" is the name of the file whose md5 sum will actually
be calculated.
2023-11-02 18:20:44 +01:00
Miro Kropacek
d52d7b202d ENGINES: Optimize string handling
[v]snprintf() / [v]fprintf() used in String::format() gets called
roughly a million times (!) when adding a game.

Reducing the number of calls into libc leads to about 10% speed
improvement on the atari backend (which is counting in seconds!)
2023-09-18 12:52:42 +02:00
Abhinav Chennubhotla
dc2a5624c0 BASE: Dump engine desc in detection entry metadata 2023-08-21 15:40:25 +02:00
Abhinav Chennubhotla
ad8be9d8d5 BASE: Add quotes to metadata while exporting 2023-08-21 15:40:25 +02:00
Eugene Sandulenko
925ef0f66f
AD: Added "Double-click me" to the graylist 2023-07-25 14:11:13 +02:00
Eugene Sandulenko
9717100508
AD: Added more common file names to graylist 2023-07-19 10:48:41 +02:00
elasota
d66fe413a1 ENGINES: Fix wrong printf format specifier (int64 is long long on Windows) 2023-07-10 16:59:38 +02:00
Abhinav Chennubhotla
967c8eaf5e BASE: Update dumpDetectionEntries() outputs
- Use printf() instead of debug()
 - Remove unnecessary type conversions
2023-07-03 13:54:50 +03:00
Abhinav Chennubhotla
41d9855273 BASE: Add metadata to dumped detection entries
- Add title, extra, platform and language to
   differentiate b/w different variants of a game
 - Create escapeString() func to add backslashes
   to strings containing certain special chars
2023-07-03 13:54:50 +03:00
Abhinav Chennubhotla
c09ef64b7f BASE: Update dumpDetectionEntries() and md5PropToGameFile() 2023-07-03 13:54:50 +03:00
Abhinav Chennubhotla
bb20579bee BASE: Add dumpAllDetectionEntries() to commandLine
- Add virtual function dumpDetectionEntries() to
   MetaEngine
 - Glk, Sky and SCUMM do not have proper
   definitions for dumpDetectionEntries()
 - Add md5PropToGameFile() to extract prefixes for
   md5s
 - AdvancedDetector writes content of DAT file to
   STDOUT
2023-07-03 13:54:50 +03:00
Eugene Sandulenko
d1dcfb9508
AD: Set scan depth when adding globs generated from the entries. Default is 5 2023-02-02 18:23:55 +01:00
Eugene Sandulenko
a69078149e
AD: Do not add duplicate dorectories to SearchMan 2023-01-14 21:14:21 +01:00
Eugene Sandulenko
d3f9ddcb44
AD: Move canPlayUnknownVariants() override to a flag. 2023-01-09 18:56:50 +01:00
sluicebox
39b7925c84 AD: Allow engines to prefer fallback detection 2023-01-09 18:42:26 +01:00
sluicebox
4d1107d992 ENGINES: Sort game file listings
The Unknown Game report and AdvancedMetaEngineDetection
logging statements are now sorted by file name, instead
of the HashMap iteration order.
2023-01-08 11:41:19 -08:00
Vladimir Serbinenko
5fd3c9b9b7 COMMON: Resync cache prefix with file md5 prefix 2022-12-28 12:56:22 +01:00
Vladimir Serbinenko
58bb2e81d3 COMMON: Allow specifying Md5 calculation on per-entry basis 2022-12-28 12:56:22 +01:00
Vladimir Serbinenko
275379c3d2 ENGINES: Change getFileProperties to receive MD5Properties as argument 2022-12-28 12:56:22 +01:00
Vladimir Serbinenko
a2233a2166 ENGINES: Add res-only and data-only MD5 computational methods
The current way of ADGF_MACRESFORK is an amalgam of bugs and history. Those
are clean ways for direct specification. It's not accessible yet
2022-12-28 12:56:22 +01:00
Vladimir Serbinenko
1ebbc4071c ENGINES: Switch from game flags to MD5Properties in advancedDetector for MD5.
flags are already out of bit and it makes little sense to polute
it regardless, so this commit is in preparation on having separate flags
on extra ways to hash file.
2022-12-28 12:56:22 +01:00
Thierry Crozat
b52c46d799 ENGINES: Add "PPC" to the advanced detector gray list
Files named "PPC" are relatively common for mac games around
the mid-90s (when Apple transitionned from x86 to PPC cpus).
This for example prevent detecting the mac versions of Broken
Sword 1 as unknown director games.
2022-12-27 15:21:21 +01:00
Vladimir Serbinenko
437aca9e50 ADVANCED DETECTOR: Switch to openFileOrDataFork 2022-12-11 21:32:30 +01:00
Eugene Sandulenko
80b3d8becd
AD: Transparently add path directories when kADFlagMatchFullPaths is set 2022-12-03 23:39:47 +01:00
Eugene Sandulenko
ba3a98431a
AD: Adding abc.exe to graylist 2022-12-03 10:35:27 +01:00
Paul Gilbert
b4be11f553 ENGINES: Added checkExtendedSaves method to AdvancedMetaEngine 2022-11-26 18:44:08 -08:00
Vladimir Serbinenko
98f178c58f DETECTOR: Allow detecting with MacBinary with no resource fork 2022-11-20 17:21:44 +01:00
Cameron Cawley
2c8a7d3900 ENGINES: Remove support for GUI options in MetaEngineDetection subclasses 2022-11-16 23:58:54 +01:00
Cameron Cawley
fd37e09acb ENGINES: Allow getExtraGuiOptions() to be implemented in MetaEngine subclasses 2022-11-16 23:58:54 +01:00
Eugene Sandulenko
a56c6c487a
AD: Implement sanity checks for detection tables 2022-11-03 21:37:05 +01:00
Orgad Shaneh
aa0c0f494f ENGINES: Pass const strings by reference in AdvancedMetaEngineDetection 2022-10-25 13:55:13 +03:00