Opened 14 years ago

Closed 14 years ago

#2043 closed defect (fixed)

COMI: Verb regression during sword fights

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

Description

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 14 years ago.
Scoll through verb options

Download all attachments as: .zip

Change History (8)

by Kirben, 14 years ago

Attachment: comi.s41 added

Scoll through verb options

comment:1 by fingolfin, 14 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, 14 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,
<http://cvs.sourceforge.net/viewcvs.py/scummvm/scummvm/scumm
/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, 14 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, 14 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, 14 years ago

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

comment:6 by fingolfin, 14 years ago

Resolution: fixed
Status: newclosed

comment:7 by fingolfin, 14 years ago

Fixed in CVS.

Note: See TracTickets for help on using tickets.