[ scummvm-Bugs-3119713 ] PQ2: song-specific reverb changes are ignored

SourceForge.net noreply at sourceforge.net
Fri Nov 26 15:41:16 CET 2010

Bugs item #3119713, was opened at 2010-11-26 23:41
Message generated for change (Tracker Item Submitted) made by sven3000
You can respond by visiting: 

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: iMuse/Music
Group: SCI: Police Quest 2
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Sven (sven3000)
Assigned to: Nobody/Anonymous (nobody)
Summary: PQ2: song-specific reverb changes are ignored

Initial Comment:
When running Police Quest 2 on ScummVM revision 54495, Windows 7 x64, using a real Roland MT-32 connected via USB MIDI cable, certain song-specific reverb changes are not sent to the MT-32.

With the recent reverb changes, ScummVM now correctly initializes the MT-32 with the default reverb. However, it appears that certain reverb changes in songs are still not processed right.

I took a MIDI capture from PQ2 in DOSBox, it seems the reverb is initialized to reverb config 0 (00 04 05), but is then immediately changed to reverb config 2 (01 01 07) by the intro song. ScummVM now initializes to reverb 0 (which is good), but does not send the change to reverb 2 (which is bad).

The intro song is sound resource sound.001. The byte sequence that triggers the reverb change is at offset 0x69, and it's B1 50 02 00. ScummVM only recognizes sequences starting with BF 50 as a reverb change, but it appears that is not correct. ScummVM simply passes the B1 50 02 00 sequence on to the driver, which sends it to the MT-32, which does nothing with it because 0x50 is not a valid control change.

I don't know if this means that all control changes with value 0x50 should be treated as a reverb change, regardless of channel, or if there is some kind of difference between BF and B1.

Some further observations about PQ2's behaviour: after the introduction, when I then do something to cause the points fanfare to play, the reverb is first changed back to config 0, and then back to 2 (the points fanfare (sound.006) also contains the same B1 50 02 00 sequence). When other music is played (I tried the airport music) the reverb was changed back to 0; the airport music (sound.016) doesn't contain any reverb change command (no B1 50 or BF 50 or any 50).

Based on that, I might surmise that B1 50 could mean "change the reverb for this song, but change it back afterwards". But that's just an educated guess, someone more familiar with the inner workings of SCI should look at this.

In any case, B1 50 does mean a reverb change and should not be forwarded to the device, which is what ScummVM does now.


You can respond by visiting: 

More information about the Scummvm-tracker mailing list