Opened 19 years ago

Closed 19 years ago

#2043 closed defect (fixed)

COMI: Verb regression during sword fights

Reported by: Kirben Owned by: fingolfin
Priority: normal Component: Engine: SCUMM
Version: Keywords:
Cc: Game: Monkey Island 3


Latest ScummVM cvs version. English version of Curse of Monkey Island. Compiled under mingw with GCC 3.4.2 and running under Windows XP.

When scrolling through verb options during the insult sword fighting verb glitches can be seen briefly as their backgrounds are cleared.

The last few lines of some letters (ie g) are cut off, in verb options during conversations.

Saved game attached, just scroll through verb options to see both verb glitches.

These issues occur since scumm/verbs.cpp revision 1.136. The current verb redraw order is correct though, according to COMI disasm.

Ticket imported from: #1208956. Ticket imported from: bugs/2043.

Attachments (1)

comi.s41 (72.9 KB ) - added by Kirben 19 years ago.
Scoll through verb options

Download all attachments as: .zip

Change History (8)

by Kirben, 19 years ago

Attachment: comi.s41 added

Scoll through verb options

comment:1 by fingolfin, 19 years ago

Hrm, I can't load that savegame, it says: WARNING: Can not load thumbnail!

Maybe the new thumbnails aren't as endian safe as we thought after all? <sigh>

comment:2 by fingolfin, 19 years ago

I fixed the savegame issue in CVS.

Anyway, the issue in this report is trivial to fix (see verbs.cpp revision 1.21, < /verbs.cpp?r1=1.20&r2=1.21>); but of course that fix (which simply makes COMI not redraw the verb background) then causes verb scrolling to be broken.

There are multiple hypothetically possible ways to solve this. At the very least the following two come to mind. In both cases, we would re-apply 1.21. (Maybe somebody can check the disasm of drawVerb in COMI to verify this?). In either case we would then have to restore the background in some other place.

1) Modify redrawVerbs() to first loop and call restoreVerbBG() for each verb as appropriate, and only after that do the current loop which calls drawVerb for each verb

2) I wonder if the verbs in FT, Dig, Comi are handled like the blast text/objects; that would kinda make a lot of sense: these, two, are all redrawn every time scummLoop runs. For the blast stuff, we first draw them, then render them, and in the end, remove them from the screen. So maybe we simply should add a 'removeVerbsFromScreen' phase after drawDirtyScreenParts() ? Of cour

comment:3 by Kirben, 19 years ago

FT, Dig and COMI all use blastTexts for verbs, if that is any help. They don't clear the previous verb in drawVerb() but elsewhere (Not sure where). Dig and COMI originally called redrawVerbs() right after 'palMultipliate()' in the main loop too. But that caused problems when I previously applied it to ScummVM too.

comment:4 by fingolfin, 19 years ago

Uhm, you are confusing me... :-) If they used blastText for verbs, then they didn't have to clear the verbs somewhere else; blastTexts are already always cleared...

comment:5 by Kirben, 19 years ago

Your right, verbs are cleared my removeBlastTexts() later in main loop. Just ignore my last confusing comment.

comment:6 by fingolfin, 19 years ago

Resolution: fixed
Status: newclosed

comment:7 by fingolfin, 19 years ago

Fixed in CVS.

Note: See TracTickets for help on using tickets.