Opened 14 years ago

Closed 14 years ago

#2207 closed defect (invalid)

COMI: No time to click while Banjo duel

Reported by: SF/beerdeer Owned by: Kirben
Priority: normal Component: Engine: SCUMM
Keywords: script Cc:
Game: Monkey Island 3

Description

Hi!
German version of COMI on ScummVM w32 0.7.1 (stable).
While the Banjo duel I often don't even have a chance
to click. After Guybrush played the song, the oppenent
directly says that I would be too slow. This is happen
the most times, not always, but the most. Savegame is
attached, you maybe need to play the duel more times
for the bug to appear. Since I also own a english copy
of COMI I will see if the same thing is happen there.

Just want you to know, thx for your work!

Ticket imported from: #1296826. Ticket imported from: bugs/2207.

Attachments (1)

comi.s02 (57.1 KB ) - added by SF/beerdeer 14 years ago.
Banjo duel bug

Download all attachments as: .zip

Change History (13)

by SF/beerdeer, 14 years ago

Attachment: comi.s02 added

Banjo duel bug

comment:1 by SF/beerdeer, 14 years ago

Summary: No time to click while Banjo duelCOMI: No time to click while Banjo duel

comment:2 by SF/beerdeer, 14 years ago

The bug seem to also occur in the english version! Can't
believe nobody reported it before me... or is it my fault
somehow? :-/

comment:3 by eriktorbjorn, 14 years ago

I haven't tried this for a long time, but the last time I
saw this you could click on the strings before Guybrush
stops playing.

So while it's almost certainly a bug, it might be possible
to get past it.

comment:4 by cyxx, 14 years ago

I may be wrong but if we get rid of the hack for COMI in
o6_delay(), the problem seems to be gone.

I check disassembly, the delay is multiplied by 60 (as in v6).

Apparently, this was introduced with the patch 664893 and
was comitted in order to synchronize the end of music with
the first chapter screen. Was it really needed ? I tested
the original interpreter under win32 and there, the music
ends 2 or 3 seconds after the chapter screen fadeout.

For the reference, the script which handle the "Guybrush
timeout" during banjo duel is room-25-2013.

comment:5 by eriktorbjorn, 14 years ago

In that case, it sounds to me like there's no reason to keep
that hack.

comment:6 by eriktorbjorn, 14 years ago

Though when I revert that hack - at least I think I did - I
didn't notice any difference in behaviour. I'll have to take
a closer look later. Maybe I misunderstood you...

comment:7 by cyxx, 14 years ago

Well, I am not sure this is the correct fix for that bug. I
have just been unable to reproduce the issue without that hack.

comment:8 by eriktorbjorn, 14 years ago

But as far as I can tell, the "delay" opcodes aren't even
used here. Just for reference (in case others are reading
it), here is the script:

Script# 2013
[0000] (65) while (localvar0 <= var688) {
[0010] (6E) localvar0++
[0015] (67) breakHere()
[0016] (**) }
[001B] (79) startScript(0,213,[])
[002B] (7B) stopObjectCode()
END

As far as I can tell, when Van Halgen starts playing, var688
is set to 60 (or 75 in easy mode?). The script starts
running when Guybrush starts playing.

The while loop will compare localvar0 to var688 about every
80 ms, so you have about 5 seconds before Van Halgen decides
you're too slow. And that includes the time it takes for
Guybrush to play the tune. (How long is a tune anyway?)

I wonder if that means that breakHere() isn't breaking for
long enough...

comment:9 by cyxx, 14 years ago

So, a possible explanation would be that, in some cases, the
tune played by Guybrush lasts longer than 60 engine ticks.
Which will lead to the problem described here.

Probably the culprit is one of the other scripts of the
scene (maybe one which handle the tune playback). Running
scummvm in debug level 9 shows that o6_delaySeconds() is
called serveral times.

I need to study the scripts a little more, I guess :)

comment:10 by cyxx, 14 years ago

Justed tested the scene with the original interpreter, and
the "issue" is reproducable : sometimes, Guybrush plays a
tune and, as soon as he finishes, Van Halgen directly
replies "What's the matter / Can't you keep up ?".

I suppose the original script programmers designed that way.

comment:11 by Kirben, 14 years ago

Owner: set to Kirben
Resolution: invalid
Status: newclosed

comment:12 by Kirben, 14 years ago

We definately shouldn't make ScummVM any easier than the
original game. So closng as invalid, since this occurs in the
original game.

Since you can click strings while Guybrush is playing the
banjo, it is easy to pass the duel.

Note: See TracTickets for help on using tickets.