It appears that we never showed it, because it was shown only
in the release builds, and in the release builds we were removing
this flag.
This change introduces new message inviting users to report bugs,
it is shown always and could be disabled by the same
"enable_unsupported_game_warning" scummvm.ini key
When adding a game, every engine's detection table is traversed twice
(once for MD5 pre-computation, once for matching) even if the game
folder contains none of the files that engine cares about.
Build a set of all unique filenames referenced by each engine's
detection entries during preprocessDescriptions() (called once and
cached). Before entering the expensive detection loops, check if any
file in the game folder exists in this set. If not, skip the engine
entirely.
On the Atari backend with ~60 statically linked engines, this reduces
the "Add game" time by about 30-40%.
This is a bad syntax for ADGF_MACRESFORK, whuch by the previous
code version was computing only resource forks.
If we managed to mix files with resources and plain files in
a single detection entries, those entries must be fixed with
the respective md5 prefixes, e g. r: or d:
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.
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.
AdvancedMetaEngineDetection::detectClashes() now
performs a sanity check for entries with archive members,
making sure their filename schema contains exactly three
elements.
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.
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.
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.
[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!)
- 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
- 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