#8089 closed patch
SAM: do_command(256) implementation
Reported by: | SF/jamieson630 | Owned by: | SF/ender |
---|---|---|---|
Priority: | normal | Component: | Engine: SCUMM |
Version: | Keywords: | ||
Cc: | Game: | Sam and Max |
Description
This patch implements the Sam & Max interpretation of do_command(256). This command queries for the last encountered marker ID, as set by SysEx code 0.
This command is used mostly during the opening credits to cue each page of credits to the music, thus causing the credits to span the music in full. It is also used by the credits to wait until the end of the music before switching rooms to the office scene.
SysEx code 0 implements triggered commands specified by do_command(17), ImSetTrigger. This modification also causes the SysEx response to store its marker ID *if* no triggered event is already cued.
This business of using the marker ID to identify how far the music has progressed is used, to my knoweldge, only during the opening credits. I'm not sure if it's appropriate to be storing the marker ID in the same slot as used by ImSetTrigger (since if both are used one or the other won't work), but I've tested most of the stops in Sam & Max (the more musically complicated ones, anyway), and I haven't found any case where this actually causes unexpected behavior.
Finally, this patch makes a small change to do_command(14), by preventing a volume fade from occurring if the time-to-fade is 0. I only did this because there is a deferred command showing up outside the Ball of Twine that attempts to do a volume fade, but with invalid parameters. The result is that the music gets faded to 0 instantly, and is never heard from again. Until this patch, the tracks weren't jumping around properly at all, and this problem never had a chance to manifest itself. I can't tell whether do_command(14) or the deferred command mechanism is not implemented properly. I'll be taking a closer look at that. In the meantime, this change does not affect any other observed occurrence of do_command(14).
This patch completes the array of fixes needed to make the opening cutscene, opening credits, and seamless transition to the office scene work perfectly. Knock on wood....
Ticket imported from: #622386. Ticket imported from: patches/194.
Attachments (1)
Change History (4)
by , 22 years ago
Attachment: | imuse.docommand256.diff added |
---|
comment:1 by , 22 years ago
Great work, this also fixes about 40-odd hangs in Sam and Max from timing based on (256) events.
Perfect! :)
comment:2 by , 22 years ago
Owner: | set to |
---|---|
Status: | new → closed |
comment:3 by , 6 years ago
Component: | → Engine: SCUMM |
---|---|
Game: | → Sam and Max |
Patch against iMuse.cpp 1.54 (October 12, 2002)