This is a regression from 86a817beb5eef248c5f5e28f18133db802a59c2e.
Formerly Kyra always queried the render_mode and initializes its Screen
functionality accordingly, even when the game actually only supported VGA.
While in the "Edit game..." options only VGA was selectable, the global options
still allowed for example EGA to be selected and thus messing up the internal
state. I only check the render_mode setting for EoB 1 and 2 now, which are
the only games which support the setting inside Screen.
The BMP decoder getPalette function definition is now identical to
the other image format decoders subclassed from ImageDecoder.
This also fixes a overloaded virtual warning reported by salty-horse.
This is the third and final part of the patch supplied by Ignaz Forster
on bug #3423955 ("CRUISE: Slow / unresponsive game behaviour") for
avoiding blocking graphical updates during user wait loops.
The removal of the continue statement fixes the update of background
animations while waiting for user to respond i.e. try opening a locked
door on the upper deck of the boat and check the sea background
animation, but it also has the side effect of allowing hotspots to
respond during this period if the user clicks fast enough.
However, this bug was also present in the original interpreter, and
a workaround has been added to inhibit this.
This is the second part of the patch supplied by Ignaz Forster on
bug #3423955 ("CRUISE: Slow / unresponsive game behaviour") for
avoiding blocking graphical updates during user wait loops.
This removes the check for fastMode from the cursor update code and
other code in this "idle" loop, and moves it down to qualifying
only a few of the function calls.
This is the first part of the patch supplied by Ignaz Forster on
bug #3423955 ("CRUISE: Slow / unresponsive game behaviour") for
avoiding blocking graphical updates during user wait loops.
Hotspots passed during the idle loop do _not_ give any user feedback
without this patch.
The original patch has been split to allow for better understanding of
the changes and to allow fine grained bisection if this introduces any
regressions.
This is a situation that would occur when a user copies drscula save
files from one device to another, without copying the corresponding
index, or copies the index without all corresponding save files.
This removes the large static tables from the binary (which saves 500K
to 1Mb of binary size) and replaced them with a class which generates
the required tables as needed in RAM. This has been tested with QDM2
and shows no obvious performance degredation and Memprof shows no
significant rise in RAM usage.
The math utility classes in Common are now used by more than just Bink
Video i.e. Huffman is used by SVQ1, RDFT by QDM2 etc. so need to remove
conditional inclusion of objects in the Common Library.
This was done as these functions are very large wrt. binary size.
This is mainly due to the sine, cosine and log tables which should be
reconsidered as to whether these are needed or can be replaced by
standard sin()/cos() calls.
This should allow the QDM2 codec to work again with Common::Bitstream
instead of the older getBits() reader, but this aborts with a reading
past end of stream error...
getBits(n) would cause a runtime error if n is greater than 32,
but using getBits() to skip is no longer necessary as the newer
BitStream class has a skip method, which is used instead.