Opened 20 years ago

Closed 20 years ago

Last modified 20 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
Version: 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 20 years ago.
Screenshot
comi.s06 (51.6 KB ) - added by SF/evil_penguin 20 years ago.
Savegame

Download all attachments as: .zip

Change History (12)

by SF/evil_penguin, 20 years ago

Attachment: scummvm-voodoodown2.png added

Screenshot

comment:1 by SF/evil_penguin, 20 years ago

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

by SF/evil_penguin, 20 years ago

Attachment: comi.s06 added

Savegame

comment:2 by SF/evil_penguin, 20 years ago

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

comment:3 by eriktorbjorn, 20 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, 20 years ago

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

comment:5 by SF/ender, 20 years ago

Priority: normallow

comment:6 by fingolfin, 20 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, 20 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, 20 years ago

Of course code 108 is meant ;-)

comment:9 by fingolfin, 20 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, 20 years ago

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