Opened 15 years ago

Closed 15 years ago

Last modified 15 years ago

#1476 closed defect (fixed)

COMI: Part of "voodoo-throne" appears in the wrong place

Reported by: SF/evil_penguin Owned by: eriktorbjorn
Priority: low Component: Engine: SCUMM
Keywords: Cc:
Game: Monkey Island 3

Description

When the voodoo-throne appears / disappears part of the
throne is visible at the wrong place (during the actual
transition).

This is with ScummVM 0.6.0pre as of today (2004-02-20
22:40 CET).

Ticket imported from: #901462. Ticket imported from: bugs/1476.

Attachments (2)

scummvm-voodoodown2.png (213.4 KB) - added by SF/evil_penguin 15 years ago.
Screenshot
comi.s06 (51.6 KB) - added by SF/evil_penguin 15 years ago.
Savegame

Download all attachments as: .zip

Change History (12)

Changed 15 years ago by SF/evil_penguin

Attachment: scummvm-voodoodown2.png added

Screenshot

comment:1 Changed 15 years ago by SF/evil_penguin

Summary: COMI: Part of "voodoo-throne" appears at the wrong placeCOMI: Part of

Changed 15 years ago by SF/evil_penguin

Attachment: comi.s06 added

Savegame

comment:2 Changed 15 years ago by SF/evil_penguin

Summary: COMI: Part ofCOMI: Part of "voodoo-throne" appears in the wrong place

comment:3 Changed 15 years ago by eriktorbjorn

I saw this a long time ago, but I don't think I ever got
around to reporting it. (I haven't played this game much in
ScummVM.)

From what I remember, it only happens if you summon the
voodoo lady after you've picked up something off the floor.
If so, I guess that for whatever reason the mask is erased
along with the object.

comment:4 Changed 15 years ago by SF/ender

Lowering priority: Minor cosmetic bug, and a conditional one at
that.

comment:5 Changed 15 years ago by SF/ender

Priority: normallow

comment:6 Changed 15 years ago by fingolfin

Summary: COMI: Part of "voodoo-throne" appears in the wrong placeCOMI: Part of "voodoo-throne" appears in the wrong place

comment:7 Changed 15 years ago by eriktorbjorn

As far as I can see, when the object is redrawn - that is,
removed - it eventually uses decompressMaskImg() which
clears that part of the mask. In a way this makes sense,
since the bottle of glue and the pin don't mask anything
themselves - particularly not when they've been picked up.
If I force it to use decompressMaskImgOr() instead, it works.

The reason that function isn't used even though drawBitmap()
is called with the dbAllowMaskOr flag is that
useOrDecompress is false, since that's what
decompressBitmap() returns.

It uses cases 118 and 18 of decompressBitmap(), so if I make
them se useOrDecompress to true, it works. But is that
correct, or will it break other stuff?

If I only change case 118, it works for the pin and most of
the glue bottle, but a sliver of the mask is still
destroyed. I haven't checked why this is, but perhaps it's
redrawing yet another object on the ground at the same time,
and that uses case 18?

comment:8 Changed 15 years ago by fingolfin

Of course code 108 is meant ;-)

comment:9 Changed 15 years ago by fingolfin

I added the workaround erik suggests to CVS, only for COMI, though. Of
course it would be preferable if somebody with disassembly could take a
look at this, but for now, this works, and we can wait for regression
reports :-).
Note: the problem might also be at the higher level, in drawBitmap -- it
might have to be changed a bit for V8, after all...

comment:10 Changed 15 years ago by fingolfin

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