[Scummvm-tracker] [ScummVM :: Bugs] #3208: INDY3: Minor Graphics Glitch (script/data bug)
ScummVM :: Bugs
trac at scummvm.org
Fri Apr 29 18:31:12 UTC 2022
#3208: INDY3: Minor Graphics Glitch (script/data bug)
---------------------------+------------------------------
Reporter: SF/mthreepwood | Owner: (none)
Type: defect | Status: new
Priority: low | Component: Engine: SCUMM
Version: | Resolution:
Keywords: original | Game: Indiana Jones 3
---------------------------+------------------------------
Changes (by dwatteau):
* status: closed => new
Comment:
Reopening, since this glitch is still there. An easy way to see it is just
to `room 135`. (Looking at some online videos, it looks like the FM-Towns
version has this too, but I don't own that one.)
It looks like the bogus data is in this part of OI 324 (in its first
'strip').
{{{
0xe2 [0x05] 0x80 0x23 0xfc 0xe2 0x15 0xda
}}}
and Gdi::unkDecode11() is what handles this format.
The problem I see is that this is a compressed format, so patching this
resource is a bit tricky. As far as I can say, there isn't any "invisible"
pixel in the palette for objects in v3 games, so replacing that 0x05 color
with something else is always going to give suboptimal values. Trimming
the leftmost pixel column of that object could work too, but I don't know
how to do this.
Good old BMRP.exe lets me rewrite this object (for a similar effect,
change `E2 05 80 23 FC E2 15` to `E2 08 AF E0 C6 47 B8 F1 11 FC E2 15` in
this OI, and then recompute the various offsets at the start, the object
size, the room size…), but live-patching this inside ScummVM looks a bit
complex, since the size changes and since it looks like ScummVM just deals
with the object resources from their original offsets. So, I couldn't make
a simple patch for this, myself.
A simpler hack consists in replacing that pink color, in that room (it
looks unused anyway) with the grey color from the wall. The glitch is
still there, but it's much less noticeable:
{{{
diff --git a/engines/scumm/room.cpp b/engines/scumm/room.cpp
index 406b270644d..c50d584087c 100644
--- a/engines/scumm/room.cpp
+++ b/engines/scumm/room.cpp
@@ -107,6 +107,11 @@ void ScummEngine::startScene(int room, Actor *a, int
objectNr) {
if (_shadowPalette)
_shadowPalette[i] = i;
}
+
+ // XXX
+ if (_game.id == GID_INDY3 && _game.platform ==
Common::kPlatformDOS && (_game.features & GF_OLD256) && room == 135)
+ _roomPalette[5] = 8;
+
if (_game.features & GF_SMALL_HEADER)
setDirtyColors(0, 255);
}
}}}
but I don't think that it's a good-enough hack, unless someone really
wants that for now.
--
Ticket URL: <https://bugs.scummvm.org/ticket/3208#comment:9>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM
More information about the Scummvm-tracker
mailing list