Avoid picking any .d64 (Commodore disc) or .t64 (Commodore tape)
as a possible Scott game, to prevent conflicts with the detection of
Maniac Mansion / Zak C64 and possibile flooding in mass-add.
The engine name in the configure.engine file was reverted to use
only ASCII characters. We cannot know what encoding will be assumed
by the terminal in which we run configure, so using non-ASCII
characters can result in unexpected results.
The engine and game name string literals in the source code were
changed to escape the non-ASCII character since there is no
guarantee that the compiler will assume utf-8 encoding for the
source code files.
Two improvements for RIFF loading: size and alignment
A RIFF elements header: FourCC and size (4 bytes each) are not included
in the size. Offset + 12 then size - 4.
'DIB ' resources were found to always lead with two zero bytes.
Tested with: Fujitsu fmTOWNS SUPER TECHNOLOGY DEMO 1993.
Other resources such as 'SND ' do need alignment.
Tested with: SpaceWarlock Win. Intro movie lacked sound without
alignment. (WARNING: SNDDecoder: Bad format: 17408!)
Handle loadStream returning false when the pic doesn't confirm.
In this case a 'DIB ' with a headersize not matching 40.
Observed happening in:
- Fujitsu fm TOWNS Super TECHNOLOGY DEMO
- KUZIRA.MMM from PINGU
This workaround was originally meant to address the case in which derefActor was called with
an id == 0. Originally, a value of 0 triggered a range error. As a matter of fact, we (correctly) accept
actors id == 0 now, so this workaround is never being triggered.
This one was added more than 20 years ago, but I can't reproduce the
issue anymore with the DOS, Macintosh, or Amiga versions, and it
appears that it was already OK back in 2008.
I couldn't reproduce any lock-up with the original DOS version in
DOSBox either.
We are probably closer to the behavior of the original interpreters
now, because I can't reproduce this ScummVM problem anymore with any
demo, Passport to Adventure, EGA or Amiga version.
Bisecting a bit with the Amiga demo, this has effectively been fixed
by commit d719e83783.
20 years ago this was needed because it was assumed that actor 0 was an invalid actor, but that
simply isn't true. In the original this particular call failed because actor 0 wasn't in the current room,
and this is exactly what happens now on our end, when removing this workaround.
Widget is an XObject used in Alice: An Interactive Museum.
The assumption is that getPro returns the drive letter as
the return value of getPro is assigned to a variable called drv.
Resolves the following errors from: https://bugs.scummvm.org/ticket/13204
- WARNING: BUILDBOT: Uncaught Lingo error: Call to undefined handler 'Widget'. Dropping 1 stack items!
- WARNING: varFetch: global variable drv not defined!