shithub: choc

Download patch

ref: 431b79530bea2f5666e0ca362773160ab7274f5d
parent: 0fea3b6cd1c5e80aaed4a045d11025db34a83d7f
author: Simon Howard <[email protected]>
date: Wed Jun 19 16:50:09 EDT 2013

Fix OPL MIDI playback on big endian systems (thanks GhostlyDeath).

Subversion-branch: /trunk/chocolate-doom
Subversion-revision: 2607

--- a/src/i_oplmusic.c
+++ b/src/i_oplmusic.c
@@ -736,7 +736,7 @@
 
     gm_voice = &voice->current_instr->voices[voice->current_instr_voice];
 
-    if ((voice->current_instr->flags & GENMIDI_FLAG_FIXED) == 0)
+    if ((SHORT(voice->current_instr->flags) & GENMIDI_FLAG_FIXED) == 0)
     {
         note += (signed short) SHORT(gm_voice->base_note_offset);
     }
@@ -853,7 +853,7 @@
     // Work out the note to use.  This is normally the same as
     // the key, unless it is a fixed pitch instrument.
 
-    if ((instrument->flags & GENMIDI_FLAG_FIXED) != 0)
+    if ((SHORT(instrument->flags) & GENMIDI_FLAG_FIXED) != 0)
     {
         voice->note = instrument->fixed_note;
     }
@@ -920,7 +920,7 @@
 
     VoiceKeyOn(channel, instrument, 0, key, volume);
 
-    if ((instrument->flags & GENMIDI_FLAG_2VOICE) != 0)
+    if ((SHORT(instrument->flags) & GENMIDI_FLAG_2VOICE) != 0)
     {
         VoiceKeyOn(channel, instrument, 1, key, volume);
     }
--- a/src/midifile.c
+++ b/src/midifile.c
@@ -697,7 +697,7 @@
 
 unsigned int MIDI_GetFileTimeDivision(midi_file_t *file)
 {
-    return file->header.time_division;
+    return SHORT(file->header.time_division);
 }
 
 void MIDI_RestartIterator(midi_track_iter_t *iter)