diff options
author | Jamieson Christian | 2003-09-16 21:28:46 +0000 |
---|---|---|
committer | Jamieson Christian | 2003-09-16 21:28:46 +0000 |
commit | dffa1cbc2f48e36376e016f23ce79dfed4d67a97 (patch) | |
tree | c9fff2d48168d9ff5f7211a7416a8ad0be484b53 | |
parent | 091b41a2787cf7eeb36732cb02aec68c66ab570c (diff) | |
download | scummvm-rg350-dffa1cbc2f48e36376e016f23ce79dfed4d67a97.tar.gz scummvm-rg350-dffa1cbc2f48e36376e016f23ce79dfed4d67a97.tar.bz2 scummvm-rg350-dffa1cbc2f48e36376e016f23ce79dfed4d67a97.zip |
Removed redundant presets storage.
svn-id: r10266
-rw-r--r-- | scumm/midiparser_eup.cpp | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/scumm/midiparser_eup.cpp b/scumm/midiparser_eup.cpp index ba0dd0ff93..8cd809fda1 100644 --- a/scumm/midiparser_eup.cpp +++ b/scumm/midiparser_eup.cpp @@ -34,11 +34,11 @@ class MidiParser_EUP : public MidiParser { protected: struct { - bool mute; - uint8 channel; - int8 volume; - int8 transpose; - } _presets[32]; + byte *enable; + int8 *channel; + int8 *volume; + int8 *transpose; + } _presets; bool _loop; byte _presend; // Tracks which startup implied events have been sent. @@ -84,15 +84,15 @@ void MidiParser_EUP::parseNextEvent (EventInfo &info) { byte cmd = *pos; if ((cmd & 0xF0) == 0x90) { byte preset = pos[1]; - byte channel = _presets[preset].channel; + byte channel = _presets.channel[preset]; if (channel >= 16) channel = cmd & 0x0F; uint16 tick = pos[2] | ((uint16) pos[3] << 7); - int note = (int) pos[4] + _presets[preset].transpose; - int volume = (int) pos[5] + _presets[preset].volume; + int note = (int) pos[4] + _presets.transpose[preset]; + int volume = (int) pos[5] + _presets.volume[preset]; pos += 6; if ((*pos & 0xF0) == 0x80) { - if (!_presets[preset].mute) { + if (_presets.enable[preset]) { uint16 duration = pos[1] | (pos[2] << 4) | (pos[3] << 8) | (pos[4] << 12); info.start = pos; uint32 last = _position._last_event_tick; @@ -157,13 +157,16 @@ bool MidiParser_EUP::loadMusic (byte *data, uint32 size) { byte numInstruments = pos[16]; pos += (16 + 2 + numInstruments * 48); - for (int i = 0; i < 32; ++i) { - _presets[i].mute = ((int8) pos[i] == 0); - _presets[i].channel = pos[i+32]; - _presets[i].volume = (int8) pos[i+64]; - _presets[i].transpose = (int8) pos[i+96]; - } - pos += 32 * 4; // Jump past presets + // Load the prest pointers + _presets.enable = pos; + pos += 32; + _presets.channel = (int8 *) pos; + pos += 32; + _presets.volume = (int8 *) pos; + pos += 32; + _presets.transpose = (int8 *) pos; + pos += 32; + pos += 8; // Unknown bytes pos += 6; // Instrument-to-channel mapping (not supported yet) pos += 4; // Skip the music size for now. |