The replacement music timer operates on real time, and is adjusted for
the expected length of the Loom overture in order to accommodate for
different recordings of it. It's completely independent of the SCUMM
engine's timer frequency.
@BeWorld2018
- Change plugin naming
- Add using dl library for dynamic
- Add "x" flag for strip to preserve global symbols with dynamic (honestly stolen from @dwatteau and #3877) ;-)
I'd like to get your confirmation on this, since it also touches MorphOS.
Otherwise i'll have to split targets.
Conforming to many of the other platforms use of plugin naming
and to distinguish between ScummVM's engine plugins and the OS'
shared objects/libraries names.
In most (if not all) versions of Loom before the Talkie v4 release, one
of the shepherds should trigger a "We are the masters of stealth" line
if Bobbin tries to use the stealth draft on them, but no proper value for
the actor number is ever given. In the original interpreters, the invalid
line would be skipped. The Talkie release changes the lines a bit and
makes the third shepherd (act. 4) say something similar, instead.
Until now, ScummVM would work around this by forcing the leftmost (act. 2)
shepherd to say this line. But, looking at the original script, it seems
that the original intent may have been to let any of the four shepherds
say this line, since script 232 expects a parameter which could be given
by any of the associated 422--425 (act. 2--5) actor objects.
So, moving this check from actorTalk() to o5_startScript() lets us
implement a more comprehensive workaround (with a bit more safety checks,
since there are so many Loom versions), but it also exposes another bug
in some EGA versions and derivatives (e.g. the French EGA version has it,
but the English EGA 1.1 version doesn't): if Bobbin uses the stealth draft
on the second shepherd (act. 3), then some line(s) will be completely
missing, potentially because this actor has been removed from the scene
in the earliest versions, although he's still in use.
Having zero reaction from the shepherds when you try their draft upon
them can be extremely confusing, so we need to work around this, too.
Forcing this actor to "stay" doesn't fix the issue for now (and the
symptoms are a bit different between ScummVM and the original
interpreters), so at the moment we force this workaround even if
`_enableEnhancements` is not enabled, when we detect this strange
actor behavior.
There was no copy protection on NES, since it was on a cartridge.
One just needs to open the security door like a regular door, with its
dramatic sound effect.
This also lets one close the door again, like in the original game.
The mainRoutine() function returns a byte, not a bool. This caused text
to be partly erased when drugging the piranha poodles in MI1. Probably
other things as well.