The purpose is to at least keep string iteration relatively fast in ASCII
game mode, for backwards compatibility.
Also fixed String.Length for plugins in Unicode mode.
From upstream 052def762633796b5565fd0e79295392e5e43b52
Also removed audioclips number check, as that's not necessary for saves.
From upstream bc355721b7b06c5b7b2d3da6a422be2f59c651a1 and
96724015d86094c08e926105438db216d58d8532
When playing a stretched video, clear the destination rect to avoid the
frames being drawn on top of each other.
Fixes intro video in Pleurghburg Dark Ages
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.
Detection entries for compressed game variants now have
an additional file entry for ciftree.dat, which uses the newly
introduced feature for scanning inside archives. The few entries
which I don't own have been temporarily disabled.
Also, a couple new compressed entries have been added; these
were previously put on hold for after the scanning feature
was implemented.
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.
Added facilities for reading patch files embedded within
nancy.dat. The patches are distributed as a single ciftree,
which is loaded (almost) normally into SearchMan. However,
patches can also be enabled/disabled at will via specific
ConfMan entries, whose names are also embedded within
nancy.dat, and read at runtime.
Added facilities for embedding game patches into nancy.dat
Added two game patches for nancy2:
- one of the original patches, as distributed by the original
devs. Specifically, only the patch to extend the end-game
timer; there exists another patch that fixes an error when
double-clicking a specific cupboard, but that's caused by
an engine bug that does not exist in ScummVM.
- a new, custom patch that fixes a nasty softlock caused
by incorrect dependencies in a certain scene.
It appears SearchMan Archive storage is case-sensitive,
which can cause errors when loading files. This commit
makes sure all ciftrees are stored and looked up as
_tree_TREENAME in SearchMan to avoid such errors.
It seems earlier games were aware of the engine bug that
slows down all videos, and their movies were correctly synced
in the original engine. This commit duplicates that bug,
but only in the cases where a movie has an embedded sound
(e.g. the nancy2 cutscenes)
It appears that I have properly fixed this somewhere else during
this year... Having this code in place would just reproduce the
issue I was originally trying to fix.