[Scummvm-git-logs] scummvm master -> 6735e3c0f006730831f020e31b3385ee55f58edb
bluegr
noreply at scummvm.org
Thu May 26 18:03:57 UTC 2022
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
6735e3c0f0 SCUMM: Fix the cyan/pink lines when Indy meets Elsa in Berlin
Commit: 6735e3c0f006730831f020e31b3385ee55f58edb
https://github.com/scummvm/scummvm/commit/6735e3c0f006730831f020e31b3385ee55f58edb
Author: Donovan Watteau (contrib at dwatteau.fr)
Date: 2022-05-26T21:03:53+03:00
Commit Message:
SCUMM: Fix the cyan/pink lines when Indy meets Elsa in Berlin
In the 256-color versions of Indy3, there are some weird horizontal
cyan/pink lines which appear out of place in the Berlin night scene.
The official FM-TOWNS release fixed that by reusing some other colors
from the local palette, so we can apply a similar change for the DOS
and Steam versions, as long as we keep the original EGA colors for the
text and inventory.
(We still do a quick check for the original `smapLen`, just in case a
fan translation redid the background.)
Changed paths:
engines/scumm/detection_tables.h
engines/scumm/gfx.cpp
diff --git a/engines/scumm/detection_tables.h b/engines/scumm/detection_tables.h
index 6e287a50b7d..6eb09820f32 100644
--- a/engines/scumm/detection_tables.h
+++ b/engines/scumm/detection_tables.h
@@ -172,8 +172,8 @@ static const GameSettings gameVariantsTable[] = {
{"indy3", "EGA", "ega", GID_INDY3, 3, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB, 0, UNK, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)},
{"indy3", "Mac", "ega", GID_INDY3, 3, 0, MDT_PCSPK | MDT_PCJR, 0, Common::kPlatformMacintosh, GUIO3(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_ENHANCEMENTS)},
{"indy3", "No AdLib", "ega", GID_INDY3, 3, 0, MDT_PCSPK | MDT_PCJR, 0, UNK, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)},
- {"indy3", "VGA", "vga", GID_INDY3, 3, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB, GF_OLD256 | GF_FEW_LOCALS, Common::kPlatformDOS, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)},
- {"indy3", "Steam", "steam", GID_INDY3, 3, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB, GF_OLD256 | GF_FEW_LOCALS, UNK, GUIO2(GUIO_NOSPEECH, GUIO_NOMIDI)},
+ {"indy3", "VGA", "vga", GID_INDY3, 3, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB, GF_OLD256 | GF_FEW_LOCALS, Common::kPlatformDOS, GUIO3(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_ENHANCEMENTS)},
+ {"indy3", "Steam", "steam", GID_INDY3, 3, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB, GF_OLD256 | GF_FEW_LOCALS, UNK, GUIO3(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_ENHANCEMENTS)},
{"indy3", "FM-TOWNS", 0, GID_INDY3, 3, 0, MDT_TOWNS, GF_OLD256 | GF_FEW_LOCALS | GF_AUDIOTRACKS, Common::kPlatformFMTowns, GUIO4(GUIO_NOSPEECH, GUIO_NOMIDI, GUIO_MIDITOWNS, GUIO_TRIM_FMTOWNS_TO_200_PIXELS)},
{"loom", "EGA", "ega", GID_LOOM, 3, 0, MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO2(GUIO_NOSPEECH, GUIO_ENHANCEMENTS)},
diff --git a/engines/scumm/gfx.cpp b/engines/scumm/gfx.cpp
index fce188bc18d..d033d1f3d5f 100644
--- a/engines/scumm/gfx.cpp
+++ b/engines/scumm/gfx.cpp
@@ -1963,6 +1963,21 @@ bool Gdi::drawStrip(byte *dstPtr, VirtScreen *vs, int x, int y, const int width,
_roomPalette = _vm->_roomPalette;
}
+ // WORKAROUND: 256-color versions of Indy3 feature unusual pink and cyan
+ // horizontal lines when Indy meets Elsa in Berlin. This has only been fixed
+ // in the official FM-TOWNS release (with a few other subtle adjustments),
+ // but a simpler fix here is to override the pink and cyan colors in the local
+ // palette so that it matches the way these lines have been redrawn in the
+ // FM-TOWNS release. We take care not to apply this palette change to the
+ // text or inventory, as they still require the original colors.
+ if (_vm->_game.id == GID_INDY3 && (_vm->_game.features & GF_OLD256) && _vm->_game.platform != Common::kPlatformFMTowns
+ && _vm->_roomResource == 46 && smapLen == 43159 && vs->number == kMainVirtScreen && _vm->_enableEnhancements) {
+ if (_roomPalette[11] == 11 && _roomPalette[86] == 86)
+ _roomPalette[11] = 86;
+ if (_roomPalette[13] == 13 && _roomPalette[80] == 80)
+ _roomPalette[13] = 80;
+ }
+
return decompressBitmap(dstPtr, vs->pitch, smap_ptr + offset, height);
}
More information about the Scummvm-git-logs
mailing list