Even if the game doesn't draw anything to the screen, it can still
change from outside events e.g. by changing the scaler or - on some
systems - by dragging another window across the ScummVM window.
It was explained to me that earlier Apple II models used the block
cursor, and only later ones used the checeked cursor. I try to never
underestimate the power of nostalgia, so let's have both.
Based on Apple II emulators, the original drew the blinking cursor as a
checkerboard pattern, not as a block. If the cursor was placed on top of
a character, it would switch between checkerboard and that character,
not invert it.
Instead of storing the encrypted string (which may contain zeroes) in a
String, decrypt it as it's read from file. While adding zeroes to a
string is allowed (for a brief time it wasn't), doing so is bad form.
This class manages a buffer where all data usually stored in detection
plugin will get copied before unloading the plugin and starting the
game.
This class expects that two functions are present in every
GameDescription: sizeBuffer which calculates how many bytes we will need
to store the entry in RAM and toBuffer which copies the data in the
buffer and fix the pointers in the class.
At the end, it is expected that an ADDynamicGameDescription doesn't
depend anymore on data stored in the detection plugin.
The AD_GAME_DESCRIPTION_HELPERS macro allow to implement these functions
in all GameDescription which don't have any pointer except those in
ADGameDescription.
Fix repetitive warnings about template-id in constructors and destructors. This ensures C++20 compatibility. Warnings are encountered when compiling with GCC 14.
Follow-up to the feature that allows skipping certain ADGF flags.
This here now also allows skipping of incomplete file/md5/size matches. It is basically the same behavior as the graylist. For the mass add all files are treated as if they are on the list.
I added skipping for the ADGF_WARNING and ADGF_UNSUPPORTED flags.
For me, this is mostly about fixing bug no. 13282. We sometimes have bogus entries which only have the purpose of presenting the error message (reasons for being unsupported) contained in the extra field of the detection entry.
Depending on other game option checkboxes. This is used to
enable/disable the semi-smooth scrolling checkboxes for FM Towns Loom,
since it's only used when smooth scrolling is enabled.
The autosave refactoring that was done in
7adad5aaf5 used g_engine for identifying the
autosave slot. This worked for in-game save/load, but doesn't fit when
called from the launcher.
Fix by passing MetaEngine to SaveStateDescriptor ctor and using it for this
query.
Amends 7adad5aaf5.
This employs a "lazy" approach: the "format" for the credits stays
exactly as it was, i.e., perl code. Of course one may want to change
this to another format (e.g. YAML, JSON, XML; or also shell script or
AWK, like `configure.engine` uses). But I deliberately kept it simple,
to get a minimal change that is easy to verify. Any further changes to
e.g. the format can be layered atop this.