[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