The previous code made it possible to accidentally jump through thin objects
like laser barriers because it was not testing that the avatar could get to the
start point of the adjusted move. Added a sweep test to ensure the start point
is also valid.
Added support for InstallShield v6 cabinets, which can be made up of
multiple files. The interface for creating an Archive instance now takes
the base filename (e.g. the "data" in "data1.cab") for all cabinets,
including single-file ones.
Co-Authored-By: clone2727 <236052+clone2727@users.noreply.github.com>
Co-Authored-By: Walter van Niftrik <615114+waltervn@users.noreply.github.com>
Opcode 0x3E pushes a byte on to the stack as a 16-bit value. Previously we
assumed it should be treated as an unsigned value, but the code for conveyors
in Crusader clearly treats it as a signed value - they move at +3 or -3 per
tick. Confirmed in the disasm that both U8 and Cru use CBW to sign-extend
value in AL, so this may fix some things in U8 too.
- make the animations a bit faster to reduce the amount of time for which the engine is blocked
- separate the display updates from the engine delays
- register user input during the animations
This makes the playback a bit smoother. The original would scroll the text lines upwards by 2 pixels every 2 ticks. Now we just move them upwards by 1 pixel every 1 tick. Same speed, just smoother...
On AmigaOS miniGL is a static library and linking against it in plugins
prevents to have a shared context. By linking only in main executable,
this forces plugins to use the only context available in scummvm binary.
When not displaying the GUI, plugins are not unloaded.
This can cause problems on AmigaOS where plugins must be unloaded before
exiting. Else, some plugins with global destructors cause crashes being
destroyed too late.
Crusader globs sometimes contain items with an odd z value - eg, stripey floors
or elevators. This is not done in U8 and probably a hack to make the paint
order right in the original, but our scan function was only checking +/-4 and
+/-8 pixels so the avatar would jump 4 pixels up then fall, which was nasty.
Add odd-pixel checks as well when doing a scan in Crusader, and clean up the
old hack. Also tidied up the scan function to make it more understandable.