Opened 16 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 16 years ago.
Screenshot
comi.s06 (51.6 KB ) - added by SF/evil_penguin 16 years ago.
Savegame

Download all attachments as: .zip

Change History (12)

by SF/evil_penguin, 16 years ago

Attachment: scummvm-voodoodown2.png added

Screenshot

comment:1 by SF/evil_penguin, 16 years ago

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

by SF/evil_penguin, 16 years ago

Attachment: comi.s06 added

Savegame

comment:2 by SF/evil_penguin, 16 years ago

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

comment:3 by eriktorbjorn, 16 years ago

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 by SF/ender, 16 years ago

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

comment:5 by SF/ender, 16 years ago

Priority: normallow

comment:6 by fingolfin, 16 years ago

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

comment:7 by eriktorbjorn, 15 years ago

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 by fingolfin, 15 years ago

Of course code 108 is meant ;-)

comment:9 by fingolfin, 15 years ago

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 by fingolfin, 15 years ago

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