diff options
author | Paweł Kołodziejski | 2003-03-06 18:30:44 +0000 |
---|---|---|
committer | Paweł Kołodziejski | 2003-03-06 18:30:44 +0000 |
commit | a8c3057875d7746bd48efd91406473a41bb7f607 (patch) | |
tree | d9c1b64164d473d401e9baf9f660727ce1551567 /backends/midi/adlib.cpp | |
parent | 093428ae9a6a1fd33003a8a0827d7410501a74cb (diff) | |
download | scummvm-rg350-a8c3057875d7746bd48efd91406473a41bb7f607.tar.gz scummvm-rg350-a8c3057875d7746bd48efd91406473a41bb7f607.tar.bz2 scummvm-rg350-a8c3057875d7746bd48efd91406473a41bb7f607.zip |
and more cleanup ....
svn-id: r6719
Diffstat (limited to 'backends/midi/adlib.cpp')
-rw-r--r-- | backends/midi/adlib.cpp | 195 |
1 files changed, 69 insertions, 126 deletions
diff --git a/backends/midi/adlib.cpp b/backends/midi/adlib.cpp index 3cdddb5f92..873fe6007b 100644 --- a/backends/midi/adlib.cpp +++ b/backends/midi/adlib.cpp @@ -431,8 +431,7 @@ const byte volume_table[] = { 62, 63, 63, 63 }; -static int lookup_volume(int a, int b) -{ +static int lookup_volume(int a, int b) { if (b == 0) return 0; @@ -458,8 +457,7 @@ static int lookup_volume(int a, int b) } } -static void create_lookup_table() -{ +static void create_lookup_table() { int i, j; int sum; @@ -476,8 +474,6 @@ static void create_lookup_table() typedef void TimerCallback (void *); - - //////////////////////////////////////// // // Adlib MIDI driver @@ -570,34 +566,28 @@ private: static void premix_proc(void *param, int16 *buf, uint len); }; - - // MidiChannel method implementations void AdlibPart::init (MidiDriver_ADLIB *owner, byte channel) { _owner = owner; _channel = channel; - } -MidiDriver *AdlibPart::device() -{ +MidiDriver *AdlibPart::device() { return _owner; } -void AdlibPart::noteOff (byte note) -{ +void AdlibPart::noteOff (byte note) { _owner->part_key_off (this, note); } -void AdlibPart::noteOn (byte note, byte velocity) -{ +void AdlibPart::noteOn (byte note, byte velocity) { _owner->part_key_on (this, note, velocity); } -void AdlibPart::programChange (byte program) -{ - if (program > 127) return; +void AdlibPart::programChange (byte program) { + if (program > 127) + return; uint i; uint count = 0; @@ -609,8 +599,7 @@ void AdlibPart::programChange (byte program) _owner->part_set_instrument (this, (AdlibInstrument *) &map_gm_to_fm [program]); } -void AdlibPart::pitchBend (int16 bend) -{ +void AdlibPart::pitchBend (int16 bend) { MidiChannelAdl *mc; _pitchbend = bend; @@ -620,8 +609,7 @@ void AdlibPart::pitchBend (int16 bend) } } -void AdlibPart::controlChange (byte control, byte value) -{ +void AdlibPart::controlChange (byte control, byte value) { switch (control) { case 1: modulationWheel (value); break; case 7: volume (value); break; @@ -640,8 +628,7 @@ void AdlibPart::controlChange (byte control, byte value) } } -void AdlibPart::modulationWheel (byte value) -{ +void AdlibPart::modulationWheel (byte value) { MidiChannelAdl *mc; _modwheel = value; @@ -653,8 +640,7 @@ void AdlibPart::modulationWheel (byte value) } } -void AdlibPart::volume (byte value) -{ +void AdlibPart::volume (byte value) { MidiChannelAdl *mc; _vol_eff = value; @@ -666,8 +652,7 @@ void AdlibPart::volume (byte value) } } -void AdlibPart::pitchBendFactor (byte value) -{ +void AdlibPart::pitchBendFactor (byte value) { MidiChannelAdl *mc; _pitchbend_factor = value; @@ -677,8 +662,7 @@ void AdlibPart::pitchBendFactor (byte value) } } -void AdlibPart::detune (byte value) -{ +void AdlibPart::detune (byte value) { MidiChannelAdl *mc; _detune_eff = value; @@ -688,13 +672,11 @@ void AdlibPart::detune (byte value) } } -void AdlibPart::priority (byte value) -{ +void AdlibPart::priority (byte value) { _pri_eff = value; } -void AdlibPart::sustain (bool value) -{ +void AdlibPart::sustain (bool value) { MidiChannelAdl *mc; _pedal = value; @@ -706,23 +688,18 @@ void AdlibPart::sustain (bool value) } } -void AdlibPart::allNotesOff() -{ +void AdlibPart::allNotesOff() { while (_mc) _owner->mc_off (_mc); } -void AdlibPart::sysEx_customInstrument (uint32 type, byte *instr) -{ +void AdlibPart::sysEx_customInstrument (uint32 type, byte *instr) { _owner->sysEx_customInstrument (this, type, instr); } - - // MidiDriver method implementations -MidiDriver_ADLIB::MidiDriver_ADLIB() -{ +MidiDriver_ADLIB::MidiDriver_ADLIB() { uint i; for (i = 0; i < ARRAYSIZE(_parts); ++i) { _parts[i].init (this, i); @@ -731,8 +708,7 @@ MidiDriver_ADLIB::MidiDriver_ADLIB() _isOpen = false; } -int MidiDriver_ADLIB::open () -{ +int MidiDriver_ADLIB::open() { if (_isOpen) return MERR_ALREADY_OPEN; _isOpen = true; @@ -765,8 +741,7 @@ int MidiDriver_ADLIB::open () return 0; } -void MidiDriver_ADLIB::close() -{ +void MidiDriver_ADLIB::close() { uint i; for (i = 0; i < ARRAYSIZE(_midi_channels); ++i) { if (_midi_channels [i]._part) @@ -779,8 +754,7 @@ void MidiDriver_ADLIB::close() _isOpen = false; } -void MidiDriver_ADLIB::send (uint32 b) -{ +void MidiDriver_ADLIB::send (uint32 b) { //byte param3 = (byte) ((b >> 24) & 0xFF); byte param2 = (byte) ((b >> 16) & 0xFF); byte param1 = (byte) ((b >> 8) & 0xFF); @@ -790,13 +764,16 @@ void MidiDriver_ADLIB::send (uint32 b) switch (cmd) { case 0x80:// Note Off - part_key_off (part, param1); break; + part_key_off (part, param1); + break; case 0x90: // Note On - part_key_on (part, param1, param2); break; + part_key_on (part, param1, param2); + break; case 0xA0: // Aftertouch break; // Not supported. case 0xB0: // Control Change - part->controlChange (param1, param2); break; + part->controlChange (param1, param2); + break; case 0xC0: // Program Change if (chan != 9) part->programChange (param1); @@ -804,7 +781,8 @@ void MidiDriver_ADLIB::send (uint32 b) case 0xD0: // Channel Pressure break; // Not supported. case 0xE0: // Pitch Bend - part->pitchBend ((param1 | (param2 << 7)) - 0x2000); break; + part->pitchBend ((param1 | (param2 << 7)) - 0x2000); + break; case 0xF0: // SysEx // We should never get here! SysEx information has to be // sent via high-level semantic methods. @@ -816,8 +794,7 @@ void MidiDriver_ADLIB::send (uint32 b) } } -uint32 MidiDriver_ADLIB::property (int prop, uint32 param) -{ +uint32 MidiDriver_ADLIB::property (int prop, uint32 param) { switch (prop) { case PROP_SMALLHEADER: // Indicates older game, use different operator volume algorithm _game_SmallHeader = (param > 0); @@ -827,42 +804,37 @@ uint32 MidiDriver_ADLIB::property (int prop, uint32 param) return 0; } -void MidiDriver_ADLIB::setPitchBendRange (byte channel, uint range) -{ +void MidiDriver_ADLIB::setPitchBendRange (byte channel, uint range) { MidiChannelAdl *mc; AdlibPart *part = &_parts [channel]; part->_pitchbend_factor = range; for (mc = part->_mc; mc; mc = mc->_next) { adlib_note_on(mc->_channel, mc->_note + part->_transpose_eff, - (part->_pitchbend * part->_pitchbend_factor >> 6) + part->_detune_eff); + (part->_pitchbend * part->_pitchbend_factor >> 6) + part->_detune_eff); } } -void MidiDriver_ADLIB::sysEx_customInstrument (byte channel, uint32 type, byte *instr) -{ +void MidiDriver_ADLIB::sysEx_customInstrument (byte channel, uint32 type, byte *instr) { sysEx_customInstrument (&_parts [channel], type, instr); } -void MidiDriver_ADLIB::sysEx_customInstrument (AdlibPart *part, uint32 type, byte *instr) -{ +void MidiDriver_ADLIB::sysEx_customInstrument (AdlibPart *part, uint32 type, byte *instr) { if (type == 'ADL ') { AdlibInstrument *i = &part->_part_instr; memcpy(i, instr, sizeof(AdlibInstrument)); } } -void MidiDriver_ADLIB::setTimerCallback (void *timer_param, void (*timer_proc) (void *)) -{ +void MidiDriver_ADLIB::setTimerCallback (void *timer_param, void (*timer_proc) (void *)) { _timer_proc = (TimerCallback *) timer_proc; _timer_param = timer_param; } -MidiChannel *MidiDriver_ADLIB::allocateChannel() -{ +MidiChannel *MidiDriver_ADLIB::allocateChannel() { AdlibPart *part; uint i; - + for (i = 0; i < ARRAYSIZE(_parts); ++i) { part = &_parts[i]; if (!part->_allocated) { @@ -873,22 +845,17 @@ MidiChannel *MidiDriver_ADLIB::allocateChannel() return NULL; } -MidiDriver *MidiDriver_ADLIB_create() -{ +MidiDriver *MidiDriver_ADLIB_create() { return new MidiDriver_ADLIB(); } - - // All the code brought over from IMuseAdlib -void MidiDriver_ADLIB::premix_proc(void *param, int16 *buf, uint len) -{ +void MidiDriver_ADLIB::premix_proc(void *param, int16 *buf, uint len) { ((MidiDriver_ADLIB *) param)->generate_samples(buf, len); } -void MidiDriver_ADLIB::adlib_write(byte port, byte value) -{ +void MidiDriver_ADLIB::adlib_write(byte port, byte value) { if (_adlib_reg_cache[port] == value) return; _adlib_reg_cache[port] = value; @@ -896,8 +863,7 @@ void MidiDriver_ADLIB::adlib_write(byte port, byte value) OPLWriteReg(_opl, port, value); } -void MidiDriver_ADLIB::generate_samples(int16 *data, int len) -{ +void MidiDriver_ADLIB::generate_samples(int16 *data, int len) { int step; if (!_opl) { @@ -921,13 +887,11 @@ void MidiDriver_ADLIB::generate_samples(int16 *data, int len) } while (len -= step); } -void MidiDriver_ADLIB::reset_tick() -{ +void MidiDriver_ADLIB::reset_tick() { _next_tick = 88; } -void MidiDriver_ADLIB::on_timer() -{ +void MidiDriver_ADLIB::on_timer() { MidiChannelAdl *mc; int i; @@ -952,8 +916,7 @@ void MidiDriver_ADLIB::on_timer() } } -void MidiDriver_ADLIB::mc_off(MidiChannelAdl * mc2) -{ +void MidiDriver_ADLIB::mc_off(MidiChannelAdl * mc2) { MidiChannelAdl *mc = (MidiChannelAdl *)mc2, *tmp; adlib_key_off(mc->_channel); @@ -969,8 +932,7 @@ void MidiDriver_ADLIB::mc_off(MidiChannelAdl * mc2) mc->_part = NULL; } -void MidiDriver_ADLIB::mc_inc_stuff(MidiChannelAdl *mc, Struct10 * s10, Struct11 * s11) -{ +void MidiDriver_ADLIB::mc_inc_stuff(MidiChannelAdl *mc, Struct10 *s10, Struct11 *s11) { byte code; AdlibPart *part = mc->_part; @@ -981,15 +943,15 @@ void MidiDriver_ADLIB::mc_inc_stuff(MidiChannelAdl *mc, Struct10 * s10, Struct11 case 0: mc->_vol_2 = s10->start_value + s11->modify_val; adlib_set_param(mc->_channel, 0, - volume_table[lookup_table[mc->_vol_2] - [part->_vol_eff >> 2]]); + volume_table[lookup_table[mc->_vol_2] + [part->_vol_eff >> 2]]); break; case 13: mc->_vol_1 = s10->start_value + s11->modify_val; if (mc->_twochan) { adlib_set_param(mc->_channel, 13, - volume_table[lookup_table[mc->_vol_1] - [part->_vol_eff >> 2]]); + volume_table[lookup_table[mc->_vol_1] + [part->_vol_eff >> 2]]); } else { adlib_set_param(mc->_channel, 13, mc->_vol_1); } @@ -1002,7 +964,7 @@ void MidiDriver_ADLIB::mc_inc_stuff(MidiChannelAdl *mc, Struct10 * s10, Struct11 break; default: adlib_set_param(mc->_channel, s11->param, - s10->start_value + s11->modify_val); + s10->start_value + s11->modify_val); break; } } @@ -1011,14 +973,12 @@ void MidiDriver_ADLIB::mc_inc_stuff(MidiChannelAdl *mc, Struct10 * s10, Struct11 adlib_key_onoff(mc->_channel); } -void MidiDriver_ADLIB::adlib_key_off(int chan) -{ +void MidiDriver_ADLIB::adlib_key_off(int chan){ byte port = chan + 0xB0; adlib_write(port, adlib_read(port) & ~0x20); } -byte MidiDriver_ADLIB::struct10_ontimer(Struct10 * s10, Struct11 * s11) -{ +byte MidiDriver_ADLIB::struct10_ontimer(Struct10 *s10, Struct11 *s11) { byte result = 0; int i; @@ -1061,8 +1021,7 @@ byte MidiDriver_ADLIB::struct10_ontimer(Struct10 * s10, Struct11 * s11) return result; } -void MidiDriver_ADLIB::adlib_set_param(int channel, byte param, int value) -{ +void MidiDriver_ADLIB::adlib_set_param(int channel, byte param, int value) { const AdlibSetParams *as; byte port; @@ -1096,8 +1055,7 @@ void MidiDriver_ADLIB::adlib_set_param(int channel, byte param, int value) adlib_write(port, (adlib_read(port) & ~as->c) | (((byte)value) << as->b)); } -void MidiDriver_ADLIB::adlib_key_onoff(int channel) -{ +void MidiDriver_ADLIB::adlib_key_onoff(int channel) { byte val; byte port = channel + 0xB0; assert(channel >= 0 && channel < 9); @@ -1107,8 +1065,7 @@ void MidiDriver_ADLIB::adlib_key_onoff(int channel) adlib_write(port, val | 0x20); } -void MidiDriver_ADLIB::struct10_setup(Struct10 * s10) -{ +void MidiDriver_ADLIB::struct10_setup(Struct10 *s10) { int b, c, d, e, f, g, h; byte t; @@ -1157,8 +1114,7 @@ void MidiDriver_ADLIB::struct10_setup(Struct10 * s10) s10->speed_lo_counter = 0; } -void MidiDriver_ADLIB::adlib_playnote(int channel, int note) -{ +void MidiDriver_ADLIB::adlib_playnote(int channel, int note) { byte old, oct, notex; int note2; int i; @@ -1189,8 +1145,7 @@ void MidiDriver_ADLIB::adlib_playnote(int channel, int note) adlib_write(channel + 0xB0, oct | 0x20); } -int MidiDriver_ADLIB::random_nr(int a) -{ +int MidiDriver_ADLIB::random_nr(int a) { static byte _rand_seed = 1; if (_rand_seed & 1) { _rand_seed >>= 1; @@ -1201,8 +1156,7 @@ int MidiDriver_ADLIB::random_nr(int a) return _rand_seed * a >> 8; } -void MidiDriver_ADLIB::part_key_off (AdlibPart *part, byte note) -{ +void MidiDriver_ADLIB::part_key_off (AdlibPart *part, byte note) { MidiChannelAdl *mc; for (mc = part->_mc; mc; mc = mc->_next) { @@ -1215,8 +1169,7 @@ void MidiDriver_ADLIB::part_key_off (AdlibPart *part, byte note) } } -void MidiDriver_ADLIB::part_key_on (AdlibPart *part, byte note, byte velocity) -{ +void MidiDriver_ADLIB::part_key_on (AdlibPart *part, byte note, byte velocity) { MidiChannelAdl *mc; mc = allocate_midichan(part->_pri_eff); @@ -1227,8 +1180,7 @@ void MidiDriver_ADLIB::part_key_on (AdlibPart *part, byte note, byte velocity) mc_key_on(mc, note, velocity); } -MidiChannelAdl *MidiDriver_ADLIB::allocate_midichan(byte pri) -{ +MidiChannelAdl *MidiDriver_ADLIB::allocate_midichan(byte pri) { MidiChannelAdl *ac, *best = NULL; int i; @@ -1251,8 +1203,7 @@ MidiChannelAdl *MidiDriver_ADLIB::allocate_midichan(byte pri) return best; } -void MidiDriver_ADLIB::link_mc (AdlibPart *part, MidiChannelAdl *mc) -{ +void MidiDriver_ADLIB::link_mc (AdlibPart *part, MidiChannelAdl *mc) { mc->_part = part; mc->_next = (MidiChannelAdl *)part->_mc; part->_mc = mc; @@ -1262,8 +1213,7 @@ void MidiDriver_ADLIB::link_mc (AdlibPart *part, MidiChannelAdl *mc) mc->_next->_prev = mc; } -void MidiDriver_ADLIB::mc_key_on (MidiChannelAdl * mc2, byte note, byte velocity) -{ +void MidiDriver_ADLIB::mc_key_on (MidiChannelAdl *mc2, byte note, byte velocity) { MidiChannelAdl *mc = (MidiChannelAdl *)mc2; AdlibPart *part = mc->_part; AdlibInstrument *instr = &part->_part_instr; @@ -1309,8 +1259,7 @@ void MidiDriver_ADLIB::mc_key_on (MidiChannelAdl * mc2, byte note, byte velocity } } -void MidiDriver_ADLIB::adlib_setup_channel(int chan, AdlibInstrument * instr, byte vol_1, byte vol_2) -{ +void MidiDriver_ADLIB::adlib_setup_channel(int chan, AdlibInstrument *instr, byte vol_1, byte vol_2) { byte port; assert(chan >= 0 && chan < 9); @@ -1348,10 +1297,8 @@ void MidiDriver_ADLIB::adlib_note_on_ex(int chan, byte note, int mod) } void MidiDriver_ADLIB::mc_init_stuff (MidiChannelAdl *mc, Struct10 * s10, - Struct11 * s11, byte flags, InstrumentExtra * ie) -{ + Struct11 * s11, byte flags, InstrumentExtra * ie) { AdlibPart *part = mc->_part; - s11->modify_val = 0; s11->flag0x40 = flags & 0x40; s10->loop = flags & 0x20; @@ -1387,8 +1334,7 @@ void MidiDriver_ADLIB::mc_init_stuff (MidiChannelAdl *mc, Struct10 * s10, struct10_init(s10, ie); } -void MidiDriver_ADLIB::struct10_init(Struct10 * s10, InstrumentExtra * ie) -{ +void MidiDriver_ADLIB::struct10_init(Struct10 *s10, InstrumentExtra *ie) { s10->active = 1; s10->cur_val = 0; s10->modwheel_last = 31; @@ -1408,8 +1354,7 @@ void MidiDriver_ADLIB::struct10_init(Struct10 * s10, InstrumentExtra * ie) struct10_setup(s10); } -int MidiDriver_ADLIB::adlib_read_param(int chan, byte param) -{ +int MidiDriver_ADLIB::adlib_read_param(int chan, byte param) { const AdlibSetParams *as; byte val; byte port; @@ -1442,8 +1387,7 @@ int MidiDriver_ADLIB::adlib_read_param(int chan, byte param) return val; } -void MidiDriver_ADLIB::adlib_note_on(int chan, byte note, int mod) -{ +void MidiDriver_ADLIB::adlib_note_on(int chan, byte note, int mod) { int code; assert(chan >= 0 && chan < 9); code = (note << 7) + mod; @@ -1451,8 +1395,7 @@ void MidiDriver_ADLIB::adlib_note_on(int chan, byte note, int mod) adlib_playnote(chan, channel_table_2[chan] + code); } -void MidiDriver_ADLIB::part_set_instrument(AdlibPart *part, AdlibInstrument * instr) -{ +void MidiDriver_ADLIB::part_set_instrument(AdlibPart *part, AdlibInstrument *instr) { AdlibInstrument *i = &part->_part_instr; memcpy(i, instr, sizeof(AdlibInstrument)); } |