Opened 14 years ago

Closed 13 years ago

Last modified 13 years ago

#2195 closed defect (fixed)

DIGDEMO: Characters appear in front of foreground objects

Reported by: joostp Owned by: Kirben
Priority: normal Component: Engine: SCUMM
Keywords: Cc:
Game: The Dig

Description

Not sure wether to file this under "graphics" or "actor
behaviour", anyway, using latest CVS (11 Sept. 2005)
there are some very obvious graphical glitches where
you can get your characters in front of foreground objects.

The attached screenshots demonstrate the problem.
To reproduce just start the demo and walk to left, when
passing the objects shown in the screenshot your
characters will appear in front of them, there are no
other steps necessary to cause the glitches to appear here.

The demo used is the english demo linked from the demos
page.
I haven't tried this scene in the full version of The
Dig yet.
Tested platforms: PC (debian linux) and PSP.

Ticket imported from: #1288652. Ticket imported from: bugs/2195.

Attachments (2)

digdemo-bug1.png (66.7 KB) - added by joostp 14 years ago.
digdemo masking bug shot #1
digdemo-bug2.png (69.0 KB) - added by joostp 14 years ago.
digdemo masking bug shot #2

Download all attachments as: .zip

Change History (6)

Changed 14 years ago by joostp

Attachment: digdemo-bug1.png added

digdemo masking bug shot #1

Changed 14 years ago by joostp

Attachment: digdemo-bug2.png added

digdemo masking bug shot #2

comment:1 Changed 14 years ago by SF/kaminari

I checked the scene with the full Mac version on WinXP, and
the problem doesn't appear.

comment:2 Changed 14 years ago by eriktorbjorn

One difference between the full game and the demo is
script-4. I'm not sure exactly when this script is run, but
at the very least it appears to be run when moving between
rooms. In the demo it looks like this:

[0000] (6E) setClass(4,[21])
[000A] (6E) setClass(3,[21])
[0014] (66) stopObjectCodeB()
END

In the full game, it's even shorter:

[0000] (66) stopObjectCodeB()
END

If I understand things correctly, those setClass() opcodes
will set _forceClip to 0, meaning "never mask", in actors 3
and 4 which I assume are Boston and Maggie. Brink appears to
be correctly masked, which is why I think the script doesn't
affect him.

Of course, this only explains why the problem happens. Not
how to fix it.

comment:3 Changed 13 years ago by Kirben

The problem was the changes made by Actor::classChanged
() are only required by SCUMM 3/4 games, but were been
applied to later SCUMM games too.. Fixed in ScummVM
CVS.

Might help with other masking issues too, since I noticed a
masking issue in airport no longer occurs now.

comment:4 Changed 13 years ago by Kirben

Owner: set to Kirben
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.