There was a nasty bug in the fuel tower room, when the cops arrive at the
tower and the player regains control, in which the camera would be brought up
and then down again.
While I was there, since this is the same domain, I rechecked the v7-8 camera
code from the disasm, made some corrections, and properly fixed#1195 and
#1579. Another workaround bites the dust :)
The older titles (v0-v4) allowed this. This only targets internal speaker-like audio devices,
so AdLib and MT-32 are not impacted by this, just like on the original.
I have to think of a clever way of handling all those text positioning glitches of this version.
Also, some of the strings are either too long or missing to be displayed as banners.
I might have to make a replica of the original save menu for this version, but without the
passcode system. Since it's going to take a little longer, I'm temporarily disabling GUI
support for this version.
This commit implements saving and loading in the same way the original interpreters
for MANIAC v0-1-2, ZAK v1-2-3, LOOM v3 and INDY v3 do. This makes it possible to
use the original save menus without glitches or crashes.
Saves done from GMM can also be loaded from the original menu.
(fixes bug no. 1248 - "SAM: some MIDI channels missing on MT-32")
This is a very obvious bug if the speech is turned off (otherwise the speech will
kind of cover it up). In the SAMNMAX intro it is hardly playing anything.
The reason is that the newer sound system has an extra driver layer between the
imuse parts and the actual hardware which mananges the channels (similar to
what we already do for AdLib, Amiga, FM-Towns...). Whenever the songs are
attempting to use a Midi part > 9 our current system will fail.
I have written the MT-32 player to also handle the older games music and sound
effects. This will allow cleaning up various more hacks in the common sound code.
I have done only little cleanup here, since it is not the main purpose of the commit.
I will also write a GM driver. This is going to be easier. Currently, there is a only
some init and skeleton code for it, the rest is just pass-through...
Currently, Roland MT-32 sound is broken for
SAMNMAX. Just try the intro song with shut off
speech. It is very obvious that it plays with a quite
reduced number of channels compared to the
original interpreter.
Now, due to the not-so-helpful code design (much
of the iMuse code has been drawn into the common
code) it has become increasingly difficult to fix Midi
related thing in iMuse. I have added more and more
crude hacks over time.
SAMNMAX requires more elaborate channel
allocation. To make it happen I have added driver
wrappers for Midi to the iMuse code.
Other than that, I have done only minor cleanup here.
Actually, I would have liked to withdraw much more
of the iMuse code from the common code and move
it to SCUMM (basically all the MidiChannel
stuff which is exclusively used by iMuse. But it turns
out that it is so thoroughly intertwined (the major
blocker here being the AdLib driver) that it requires
more thought and effort and would just distract me
from fixing the SAMNMAX sound.
I'm told by some French players that only the 8-disk French VGA floppy
release had invalid MT-32 content, but that the 4-disk release didn't
have this problem. The MD5 check still appears to be OK, but the comment
was a bit wrong.
The French VGA floppy version of Monkey 1 (and, apparently, this version
alone) is missing the usual 'roland' room, and the index references an
invalid DISK00.LEC file, although the game scripts didn't disable the
MT-32 feature itself. This causes a fatal error when trying to run this
game with MT-32 support, even with the original interpreter (while it
does work with the English and Spanish VGA floppy versions).
We can't do much about this, since many resources appear to be missing,
but we can detect this version and warn the user before going back to
Adlib mode. Otherwise, some users can be confused by the fatal error
about the DISK00.LEC file.
Commit 2fe65d95ef limited render modes to
suitable targets, but many users are used to render the DOS/V2 versions
of Maniac Mansion and Zak in Amiga mode, to avoid the so-called "sunburn
effect". Playing the game with this setting doesn't cause any issue, as
far as I know.
Reduce abuse of the property function to set init vars.
Better distinction between drivers to prevent a GM init on
the Mac driver (which could happen depending on the
launcher sound setting).
This replaces the fixed vertical coordinates with coordinates based on the font
height (taken from the original CJK DIG interpreter).
It also influences the appearance of the non-CJK dialog, but not necessarily for
the worse (and the one we had is again different from the one in the original
7.3.5/7.5.0 interpreters, so there really is not one definite dialog).
There is more in this commit, like:
- clippint the save names at the end of the line
- getting rid of all sprintfs and similiar cleanup to be better in line with our
coding conventions.
From now on we're reasoning in terms of text speed, just like the interpreter does,
which means: delay == 9 - speed.
This allows us to sync the internal GUI and the ScummVM GUI more easily, and
allows for a better correspondence to the original interpreters.
While we already tried to prevent invalid render mode
selections there were still some possible misconfigurations.
I have no idea why on earth people do things like select
CGA mode on Mac or Amiga, but it happens...
MI1 CD, MI2 and DOTT make script-based color adjustments to the verb interface, depending on the videomode var...
MI1 VGA Floppy, LOOM VGA, INDY4 and SAMNMAX don't do that. It seems to me that it only applies to the games with the purple verbs interfaces. The fact alone that DOTT still checks the videomode for an EGA setting and sets colors accordingly (the same ones as in MI2) shows that these scripts most likely were just brought over from MI2 to MI1 CD and DOTT.