Opened 19 years ago
Closed 19 years ago
#2276 closed defect (fixed)
COMI: Obj showing through gold medallion
Reported by: | SF/gizz_online | Owned by: | cyxx |
---|---|---|---|
Priority: | normal | Component: | Engine: SCUMM |
Version: | Keywords: | ||
Cc: | Game: | Monkey Island 3 |
Description
# scummvm -v : (snapshot 20051013) ScummVM 0.8.0CVS (Oct 13 2005 12:11:32) Features compiled in: Vorbis ALSA zLib
The bug appears on the chimp's ship on blood island, in the captain's cabin. The object in question is a big porcelaine vase, on the right. If you select "look at" in the ingame GUI (the gold medallion with three actions) on this object, the top of the vase (the hole) shows through the GUI.
# Language of game : french (original CD copied on my hdd) # Version of game : original talkie # Platform and Compiler : Debian testing 3.1 linux 2.6.13 AMD64 gcc version 4.0.2 (Debian 4.0.2-2) # Attach a save game if possible : see attached (save + shot)
Ticket imported from: #1329220. Ticket imported from: bugs/2276.
Attachments (3)
Change History (12)
by , 19 years ago
comment:1 by , 19 years ago
Summary: | Object showing through GUI (gold medallion) → COMI:Obj showing through GUI (gold medallion) |
---|
comment:2 by , 19 years ago
Summary: | COMI:Obj showing through GUI (gold medallion) → COMI: Obj showing through gold medallion |
---|
comment:3 by , 19 years ago
Apparently, in this savegame, the object 795 has kObjectClassIgnoreBoxes in its _classData. So in when it is drawn, in drawBitmap(), it is done in all the z-planes (which leads to the glitch).
If I use the bootparam 290 to get there, there's no graphical glicth as object 795 doesn't have the kObjectClassIgnoreBoxes class.
So, probably something is wrong in the save data. nsauzede / gizz_online, can you attach the savegames you made before this one ? Thanks.
comment:4 by , 19 years ago
In fact, nothing seems to be wrong in the save data. Class 22 is apparently set on purpose in script-246 :
[0AA5] (89) setClassOf?(795,[150]) [0AB5] (A4) animateActor(1,7) [0AC0] (68) breakHereVar(4) [0AC6] (9D) loadRoom(38) [0ACC] (6B) delaySeconds(5) [0AD2] (65) if (VAR_OVERRIDE) { [0ADC] (85) endOverride() [0ADD] (93) printLine.baseop() [0ADF] (93) printLine.msg(" ") [0AE3] (A1) putActorAtXY(7,0,0,0) [0AF8] (89) setClassOf?(795,[150])
I think the solution is quite simple in fact, I checked disassembly and dbDrawMaskOnAll doesn't seem to be used at all in COMI (there are no getClass() checks in drawBitmap/drawObject). It is in samnmax and FT, though.
I will playtest COMI a bit more to see if this is causing regressions before comitting.
comment:5 by , 19 years ago
Owner: | set to |
---|
comment:6 by , 19 years ago
Slightly offtopic, in FT it seems dbDrawMaskOnAll should only be set if getClass(31) is != 0. And not 22, as in CVS.
comment:7 by , 19 years ago
cyx, of course, feel free to fix FT in favor of disassembly. Probably it will even fix some masking issues like https://sourceforge.net/tracker/index.php?func=detail&aid=1092993&group_id=37116&atid=418820
comment:8 by , 19 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:9 by , 19 years ago
Commited the COMI related change.
sev, the masking issue you describe isn't related to this. To fix item 1092993 properly, I think we need to use blasttexts in order to display subtitles which, last time I looked, required non trivial changes.
tarball with two screenshots + save