The MetaEngine claimed to support kSupportsDeleteSave, but
removeSaveState() was not implemented, so deleting savegames
was not doing anything.
This fixes bug #12896 (AGS: Can't delete savegames)
This introduces a new helper method, GetFont(), which loads font data
using a memory stream and handles endianess reads internally. This
simplifies font loading and endianess handling considerably, and allows
for the usage of a common font struct for all engine versions
This version is using the same graphics format as the PSX version, with
differences in resource endianess, but features digital music with a
different track structure and has a different sound sample format
Pending issues:
- Font rendering is wrong - this is evident in the text and menus in
the game title screen
- Cursor sprite and trails are wrong - can be seen in the menu of the
game title screen
- Digital music is not supported yet - seems that a different track
structure is used
- The sound sample format is different than the PC version - looks to
be raw, but isn't
- The game crashes at the first room after watching Rincewind's waking
up cutscene
This adds volume control to the game by setting the mixer sound type on the
various audio streams to values other than the default "plain".
This uses the following sound types:
Ambient (music, environment sounds): music
AI voice: speech
Effects, interface, footsteps, movie audio: SFX
This could be further improved by specifying sound types for individual sounds,
f.e. SFX for environment sounds, or music for the "effects" in the appartment
which are short musical cues. The movie audio is of course pre-mixed music,
speech and SFX.
There seem to be some differences in the data structures between the English
demo and the other versions of the game, which causes ScummVM to reference
invalid animations, hotspots and fonts. Marked it as unstable for now.
On replace mode (r), u tells ar to replace object files only if the source
file is newer than the one in the archive.
When binutils is configured with --enable-deterministic-archives, the
default mode for ar is D (deterministic), which means that all the files
are stored with zero for UID, GID and timestamp. This means that ar has no
way to tell if the archived file is older than the source file, so it just
archives all the input files and issues the following warning:
`u' modifier ignored since `D' is the default (see `U')
Fix by dropping this flag. The performance gain is negligible anyway.
Instead of falling back to the normal scaler if the new scale factor is
1, explicitly check if the desired scaler is available at the new scale
factor. Suggested by criezy, and I'm shamelessly copying his
implementation because this sort of C++ trickery is something I'm not
fluent in.
At the moment, this shouldn't make any difference. But I guess in the
future, there may be a scaler that's available at 3x and 4x, but not 2x,
or something like that.
Now that we have higher scale factors than 3, it makes sense to try and
figure out a default scaler for high-resolution games that approximate
the window size of a low resolution game.
That also means that we are not necessarily restricted to the normal
scaler, since AdvMame has both 2x and 4x versions.
I don't have this version of the game myself, so it's based on a YouTube
playthrough and walking through the process of extracting the necessary
data with timofonic. It has not been properly tested, though the
messages do look correct if I insert them into the English version.
Tested with Loom and The Dig. It seems to be consistent.
Sam&Max seems to have different mapping for Ctrl. The DOS version
has the following actions:
Ctrl-I: Rotates the current action
Ctrl-J: Switches to Joystick Mode
Ctrl-K: Shows memory stats
Ctrl-C: Prompts to quit
Ctrl-M: Switches to Mouse Mode
Anyway, since it doesn't break anything, I did not add an exclusion for it.