Commit Graph
259 Commits
Author SHA1 Message Date
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
Eugene Sandulenko f26851d19d AD: Added "gamedata" to detection graylist 2022-09-17 16:53:47 +02:00
Misty De Meo eeb924bcf6 AD: add data to grayList 2022-09-13 17:41:42 -07:00
D G Turner 4c3da7beed AD: Slightly Cleaner Fix for Signed vs. Unsigned Comparison Compiler Warning 2022-07-31 21:30:11 +01:00