From 457f5da0957a964bff95dc4e545817540332d71d Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Tue, 16 Apr 2013 23:04:33 +0200 Subject: SCI: Don't suppress end-of-track delta in SCI0 midi This fixes the main part of bug #3487090. This seems to be a conversion error from SCI1's channel mixing to SCI0's channel filtering code. --- engines/sci/sound/midiparser_sci.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'engines/sci') diff --git a/engines/sci/sound/midiparser_sci.cpp b/engines/sci/sound/midiparser_sci.cpp index 4e54797960..2e66a16cb7 100644 --- a/engines/sci/sound/midiparser_sci.cpp +++ b/engines/sci/sound/midiparser_sci.cpp @@ -251,15 +251,14 @@ byte *MidiParser_SCI::midiFilterChannels(int channelMask) { if (curChannel != 0xF) containsMidiData = true; - if (command != kEndOfTrack) { - // Write delta - while (delta > 240) { - *outData++ = 0xF8; - delta -= 240; - } - *outData++ = (byte)delta; - delta = 0; + // Write delta + while (delta > 240) { + *outData++ = 0xF8; + delta -= 240; } + *outData++ = (byte)delta; + delta = 0; + // Write command switch (command) { case 0xF0: // sysEx @@ -302,7 +301,7 @@ byte *MidiParser_SCI::midiFilterChannels(int channelMask) { } // Insert stop event - *outData++ = 0; // Delta + // (Delta is already output above) *outData++ = 0xFF; // Meta event *outData++ = 0x2F; // End of track (EOT) *outData++ = 0x00; -- cgit v1.2.3