Director 4 and later games for windows use filepaths where '\' is the separator.
Games for mac use ':', which was the default.
Director 3 and earlier games were authored on Mac and thus use the ':'
internally.
This fixes a bug where the filename for c:\fileio.dll was parsed
to \fileio.dll. Due to the default ':' everything after the ':' was
seen as the filename.
This adds support for the Casio MIDI devices originally supported by several
SCI0 games:
- Space Quest III
- Hoyle's Book Of Games I
- Quest For Glory I
- Leisure Suit Larry III
- The Colonel's Bequest
- Codename: Iceman
- Conquests Of Camelot
- Add support for sustain controller
- Correct MT-540 <> CT-460/CSM-1 instrument remapping
- Simplify volume control (Casio devices do not support note velocity)
UBSan would report this when starting Full Throttle, for example:
runtime error: signed integer overflow: 2147287044 + 393204 cannot be
represented in type 'int'
Change checked by AndywinXp.
The bug also happens with the original interpreter, but the workaround
is backported from the 2017 remaster, and so it probably qualifies as an
enhancement, if one really wants to be as close as possible to the
original experience and the original bugs.
The workaround itself doesn't require any v7/v8-only feature, and
there's no much sense in saving a few bytes for such a small
workaround. Others Dig/FT/COMI workarounds don't use an ifdef for
this anyway.
This workaround fixed a complete scene hang that any user could
trigger during a legitimate gameplay, and there's no point in letting
users hang the game… (if you're really curious for it, you know how to
build ScummVM or how to run an original interpreter).
Also make it explicit that the bug also happens with DREAMM, while
there.
These are emitted if -Wundef is passed to GCC.
This commit also modifies the generic naming of these symbols to add
the engine name as a prefix i.e. DEBUG_PATH could be set in the build
environment for other reasons, TETRAEDGE_DEBUG_PATH is clearer and
avoids odd side effects.
sdl_video.h names all of SDL_RLEACCEL, SDL_SRCCOLORKEY and SDL_SRCALPHA
as private and read-only. Documentation mentions them in
SDL_CreateRGBSurface but also says they are automatically set on
either SDL_SetColorKey or on non-zero Amask.
Previously passing them created no problem but miyoo mini SDL gets confused,
so let's never pass the private flags.
The full context is documented in the original ticket, but we still need
this workaround if one plays with subtitles and voices and a slow text
speed, and this is indeed an original script issue since the small glitch
with the fishing line also happens with the original interpreters.
Since we're fixing an original, non-game-breaking bug, this qualifies as
an enhancement that one can disable if they want to be as close as
possible to the original experience.