[Scummvm-tracker] [ScummVM :: Bugs] #3208: INDY3: Minor Graphics Glitch (script/data bug)

ScummVM :: Bugs trac at scummvm.org
Thu May 26 13:11:24 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
---------------------------+------------------------------
Comment (by dwatteau):

 If I apply the following diff to `Gdi::drawStrip()`

 {{{
 diff --git a/engines/scumm/gfx.cpp b/engines/scumm/gfx.cpp
 index d033d1f3d5f..501bc7eb1f2 100644
 --- a/engines/scumm/gfx.cpp
 +++ b/engines/scumm/gfx.cpp
 @@ -1979,4 +1979,16 @@ bool Gdi::drawStrip(byte *dstPtr, VirtScreen *vs,
 int x, int y, const int width,
         }

 +       // WORKAROUND bug #3208: in all 256-color versions of Indy3, the
 tapestry in
 +       // one of the first rooms of Castle Brunwald has a strange
 vertical purple line
 +       // at the bottom of its first 'strip'. We work around this by not
 printing the
 +       // last pixels of that strip, since fortunately the wall behind
 this tapestry
 +       // is already fully drawn behind this object.
 +       if (_vm->_game.id == GID_INDY3 && (_vm->_game.features &
 GF_OLD256) && _vm->_currentRoom == 135
 +               && vs->number == kMainVirtScreen && smapLen == 6146 &&
 width == 104 && height == 104 && stripnr == 0
 +               && x == 24 && y == 0 && offset == 0x38 /*&&
 _vm->_enableEnhancements*/) {
 +               // XXX: is `height - 10` really safe for unkDecode11()??
 +               return decompressBitmap(dstPtr, vs->pitch, smap_ptr +
 offset, height - 10);
 +       }
 +
         return decompressBitmap(dstPtr, vs->pitch, smap_ptr + offset,
 height);
  }
 }}}

 then I can hide the bottom pixels of this strip, but I'm really unsure
 about cheating on the height value given to `unkDecode11()`. For example,
 if I use `height - 8` instead, then the room sometimes glitch a bit, or a
 lot, or then I trigger some `variable (writing)` assertions when
 repeatedly leaving/entering the room. I'm probably corrupting something,
 so this approach looks too risky.
-- 
Ticket URL: <https://bugs.scummvm.org/ticket/3208#comment:10>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM


More information about the Scummvm-tracker mailing list