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 |
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)
Change History (13)
by , 19 years ago
comment:1 by , 19 years ago
Summary: | No time to click while Banjo duel → COMI: No time to click while Banjo duel |
---|
comment:2 by , 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 , 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 , 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:6 by , 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 , 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 , 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 , 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 , 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 , 19 years ago
Owner: | set to |
---|---|
Resolution: | → invalid |
Status: | new → closed |
comment:12 by , 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.
Banjo duel bug