Every functionality has been implemented (audio options, text options, saving and loading).
The only thing currently missing from the menu is the thumbnail handling.
This does not improve anything about these modes for v2 and v3, except:
- brighter CGA colors
- v2 will also get the more accurate Hercules mouse cursor
I will do improve v2/v3 as separate tasks. v3 seems to be mostly fine, anyway, except for the actors (we dither them just like the backgrounds, but that looks different in DOSBox).
The original interpreters allowed the usage of the Enter key as a substitute for left mouse click, and the Tab key as a substitute for right click; while v7-8 games handle this substitution via scripts, we have to do this manually for the other games.
This also gets rid of a bug in which in MANIAC V1, the Edna trigger point at the beginning of the game can be totally bypassed, breaking the game.
In order to get rid of this whole class of bugs, we only enable snap scrolling only for the games which were designed for it.
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.
There are several Ctrl+Key combinations that are accepted by the engine.
Most famous one is Ctrl+W, which is Instant Win on monkey1 (monkey2 uses
Alt+W, and has a similar hack for passing it correctly).
This used to work with ScummVM 1.9.0/SDL1, but broke with SDL2, and was
later broken further even for SDL1 in f5ed14e93d.
Fixes#10644.
The main purpose of this set of changes is to refactor the code to make
it easier to pass the name of the Macintosh resource file to other parts
of the engine (it used to be hard-coded in the music players), and to
scale-up the graphics by 2.
The actual font rendering is almost completely broken.
This is mostly based on ZAK and MI2 disasm (and a bit LOOM). For MI1 and INDY4 I have at least checked with the FM-Towns UNZ emulator to ensure that they actually have the smooth scrolling.
The smooth scrolling is a bit tricky with regard to the timing. The scrolling tends to be a bit too slow for the engine, since it happens at a speed of 1 pixel per 60Hz tick, while the engine sometimes writes one or more new 8 pixel strips at the same time. So the scrolling often has to catch up to the engine. The original has a compensation mechanism which I tried to adapt. We'll see if it needs more fine tuning...
The Loom intro even glitches in the UNZ FM-Towns emulator due overflowing the scrolling surface (and causing a wraparound). But I made a fix for that.
Since we do have a bug report about the speed of the ZAK intro (and the new scrolling code does affect the timing) I have run the ZAK intro in ScummVM and in the FM-Towns UNZ emulator (with i80386DX, 16 MHz setting) side by side and they seem totally in sync. If I reduce the MHz setting in the emulator to 10 MHz on the emulator the intro will play slower, but still not play through the whole song. With 8 MHz I get close to finishing the song, but this seems to be almost to slow to run the game properly. So I'll leave that bug ticket open...
On my AZERTY keyboard the period is obtained using SHIFT + ; and
the code checking the PERIOD keycode and no modifier was failing
on both account. The manual for my French DOTT mentions the period
key, but I have not actually checked how it worked with the original
executable and if using the semicolon key without shift or using the
colon key (which would be the period key on a English-US layout)
works.
This includes a TODO to check which SCUMM games actually exhibit this behavior
originally. cbd867329e added this behavior to our
backend code initially.
This doesn't really make any difference because either both
VAR_SAVELOAD_SCRIPT and VAR_SAVELOAD_SCRIPT2 exist, or neither
does. But it feels more correct this way.
The enum is only used inside the SCUMM engine so it is rather pointless to
keep it in common/util.h right now. Also if we really want it in some common
place it should probably be better in graphics/ too.