Opened 19 years ago

Closed 19 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
Version: Keywords: script
Cc: Game: Monkey Island 3


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 19 years ago.
Banjo duel bug

Download all attachments as: .zip

Change History (13)

by SF/beerdeer, 19 years ago

Attachment: comi.s02 added

Banjo duel bug

comment:1 by SF/beerdeer, 19 years ago

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

comment:2 by SF/beerdeer, 19 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, 19 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, 19 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, 19 years ago

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

comment:6 by eriktorbjorn, 19 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, 19 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, 19 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, 19 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, 19 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, 19 years ago

Owner: set to Kirben
Resolution: invalid
Status: newclosed

comment:12 by Kirben, 19 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.