[Scummvm-cvs-logs] CVS: scummvm/sound midiparser_smf.cpp,1.8,1.9
Jamieson Christian
jamieson630 at users.sourceforge.net
Tue May 20 14:00:13 CEST 2003
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.101,1.102 debugger.cpp,1.45,1.46 script.cpp,1.95,1.96 script_v2.cpp,2.84,2.85 script_v5.cpp,1.88,1.89 script_v6.cpp,1.120,1.121 scumm.h,1.202,1.203 scummvm.cpp,2.168,2.169
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.102,1.103 script_v5.cpp,1.89,1.90 script_v6.cpp,1.121,1.122
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/sound
In directory sc8-pr-cvs1:/tmp/cvs-serv11638/scummvm/sound
Modified Files:
midiparser_smf.cpp
Log Message:
Corrections to SMF Type 1 compression to Type 0.
Fixes simon2win title music.
Index: midiparser_smf.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/midiparser_smf.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- midiparser_smf.cpp 20 May 2003 14:55:47 -0000 1.8
+++ midiparser_smf.cpp 20 May 2003 20:58:59 -0000 1.9
@@ -225,6 +225,7 @@
// our tracks down into a single Type 0 track.
if (_buffer) {
free (_buffer);
+ _buffer = 0;
}
if (midi_type == 1) {
@@ -258,6 +259,7 @@
running_status[i] = 0;
track_pos[i] = _tracks[i];
track_timer[i] = readVLQ (track_pos[i]);
+ running_status[i] = 0;
}
int best_i;
@@ -285,7 +287,7 @@
delta = 0;
length = track_timer[best_i];
for (i = 0; length; ++i) {
- delta = (delta << 8) | (length & 0x7F);
+ delta = (delta << 8) | (length & 0x7F) | (i ? 0x80 : 0);
length >>= 7;
}
@@ -326,19 +328,24 @@
track_pos[best_i] = 0;
}
- if (track_pos[best_i]) {
- // Update all tracks' deltas
+ // Update all tracks' deltas
+ if (write) {
for (i = 0; i < _num_tracks; ++i) {
if (track_pos[i] && i != best_i)
track_timer[i] -= track_timer[best_i];
}
+ }
+ if (track_pos[best_i]) {
if (write) {
+ track_timer[best_i] = 0;
+
// Write VLQ delta
- do {
- *output++ = (byte) (delta & 0xFF | (delta > 0xFF ? 0x80 : 0));
+ while (delta & 0x80) {
+ *output++ = (byte) (delta & 0xFF);
delta >>= 8;
- } while (delta);
+ }
+ *output++ = (byte) (delta & 0xFF);
// Write MIDI data
memcpy (output, track_pos[best_i], copy_bytes);
@@ -347,7 +354,8 @@
// Fetch new VLQ delta for winning track
track_pos[best_i] += copy_bytes;
- track_timer[best_i] = readVLQ (track_pos[best_i]);
+ if (active_tracks)
+ track_timer[best_i] += readVLQ (track_pos[best_i]);
}
}
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.101,1.102 debugger.cpp,1.45,1.46 script.cpp,1.95,1.96 script_v2.cpp,2.84,2.85 script_v5.cpp,1.88,1.89 script_v6.cpp,1.120,1.121 scumm.h,1.202,1.203 scummvm.cpp,2.168,2.169
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.102,1.103 script_v5.cpp,1.89,1.90 script_v6.cpp,1.121,1.122
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list