The orginal does not have an EGA mode implementation for this. For INDY4 (which uses palManipulate) the EGA mode has been ditched completely in the full version. I have tried to make a palManipulate implementation for ScummVM, but it is just glitchy and ugly...
The mouse cursors get dithered correctly now and due to earlier fixes SAMNMAX seems to be in as good a state as DOTT regarding EGA dithering mode, so I enable it. Also added a post-load fix for the palette and the mouse cursors.
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).
In the floppy VGA version of Monkey Island 1 (and only this particular
version), the lava was flowing up instead of flowing down, in the cave
under the Giant Monkey Head. This doesn't happen with the original
interpreter. ScummVM displays this effect correctly with the VGA CD
version.
This is maybe because the game uses color-cycling for this effect in
VGA, and the floppy VGA version is still a GF_SMALL_HEADER game where
we decode this effect differently, notably by always setting its
flags to 2 (and it's been this way for a very long time).
Setting the flags to 0 instead fix this effect. We should maybe
always use this 0 value, but it seems safer to only change this value
for the lava at the moment, until some disasm confirms or disproves
the current flags value for GF_SMALL_HEADER games.
(Also fix some incoherent indentation while there.)
In Macintosh b/w mode, there really is no such thing as palette
manipulation. Any color changes have to be handled by the renderer.
Instead of marking the palette as dirty, changes to the shadow palette
trigger a full redraw of the screen.
At the time of writing, I'm only aware of two things that use this: The
lightning flashes at Castle Brunwald in Indiana Jones and the Last
Crusade, and the scene where the dragon finds Rusty in Loom. I have
verified that both of these seem to work correctly.
This is currently only (partially) implemented for the 16-color Mac
versions of Loom and Indiana Jones and the Last Crusade. The text is
still drawn in color, since that's rendered separately, but I'm
committing this now while it still works.
NES games have a 48 color and 6 gray palette, but this does not include
how the colors are mapped to the screen which will vary by system / TV
display. Each NES Emulator has used slightly different values.
These values are submitted as a better mapping for the flesh tones in
Maniac Mansion by the user "LaurentLaSalle" from a forum post.
The original did not use the room nor verb palette map for the cursor, but
seems to use a custom palette. I now just changed the cursor to use the colors
from the DOS version of Indy4.
This is rather guesswork, but the original did always show a flashing color in
those colors instead of based on the screen colors.
The bug is: "FOA: Wrong colors in the Amiga version".
In the original Indy4 Amiga executable palManipulateInit is a nullsub, thus
the palette effect set up by the scripts is just ignored.
The same might be true for other SCUMM Amiga games, but I can not check these
thus I limited this to Indy4 Amiga for now.
This provides fallback to 8bit color mode for SCUMM3 FM-TOWNS games on platforms which set the USE_RGB_COLOR define even though that color mode is not being fully implemented for that platform.
MKID_BE relied on unspecified behavior of the C++ compiler,
and as such was always a bit unsafe. The new MKTAG macro
is slightly less elegant, but does no longer depend on the
behavior of the compiler.
Inspired by FFmpeg, which has an almost identical macro.