[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