It seems the older version of AGSFlashlight didn't persist
it's fields in the savegame like the latest version does.
I decided against trying to explicitly figure out which
version of AGSFlashlight different games used, and instead
simply have fallback handling if the savegame doesn't
have the data.
The only minor disadvantage is that this means that whilst
savegames are portable from standalone AGS to ScummVM for
the game, it won't in the other direction. But I don't
think that's too major an issue, since it's only for the
few games that do use the old AGSFlashlight
The `shieldCost` field from the firetype table should be used to subtract from
shields, not the weapon damage. Normally shieldCost is a larger value, so it
affects game difficulty a lot.
The NPCs should get randomly harder weapons at No Remorse difficulty level, but
this never happened because I missed a line in the original to reset the "alt"
weapon type in this case.
After rechecking, the original game has expendable BA-40 ammo on every
difficulty above *1*, not *2*. Confirmed in dosbox and the disassembly
(function at 13c8:2975).
Bug #12880. The BA-40 should consume ammo in the higher 2 difficulty levels
for Crusader: No Remorse. A similar change is probably needed for No Regret,
but it will be done separately.
The existing workarounds for this game's unique way of handling saves
assumed that the player restored a game at some point before the end.
Starting a new game and playing to the end would still cause an error
in the SCI1.1 floppy version because the game's save global would
contain an SCI id instead of our virtual id; we were only patching the
global when restoring.
Now we also patch the global on kSaveGame so that it always contains a
virtual id when there is a saved game.
Note that the existing uninitialized read workaround had no effect since
the read occurred in a local procedure but the workaround entry didn't
include a local procedure signature. Updating that workaround wouldn't
fix this; there would still be scenarios where the wrong save would be
auto-deleted.
Fixes bug #5294
The comment says it will clear the live text window, but instead
disabled the navigation arrows (I think), which it then does again right
aftewards. A cut and paste error, perhaps?
Some games like Maniac Mansion Deluxe, start in-game saves
from 100 onwards. Increasing the limit will allow these
saves to be opened directly from the ScummVM launcher
As reported in #12913, the current process loop detection can incorrectly fire
on certain U8 map transitions. Bump the threshold way up to avoid problems.
This will result in a nasty pause in Crusader: No Remorse Map 3, but it's
better than breaking U8.
Because the games have different global sizes, the logic for when to print a
pop-to-global warning was wrong. It should warn for size > 2 in Crusader
(where the globals are *bytes*), or if the size popped doesn't fit in
the number of *bits* for U8.
This was partially caused by a bug in the original source code
that was missing a comma between two strings for those two dialogs.
The original did not have a buffer overflow, but was not correctly
displaying the strings.
This fixes bug #12856.
A few people have not noticed that the GOG version includes a CD image and some
files need to be taken from there. This should help those people.
The same problem will happen for anyone who has an old install of the game and
forgets that it uses some files from the CD.
The Agent 3 information and profile research points were awarded when
pressing the "next" button, so they were never awarded. Award them when
hitting a hotspot instead.
The positions of the previous and next button had been mixed up. The
previous button is left of the next button, not the other way around.
This meant you could only be awarded points when pressing the previous
button, and since you would then step away from the page that awards
point that did not work.
Since the buttons worked in other respects, the id for the previous and
next pages must also have been similarly mixed up. This too should be
fixed now.