diff options
author | Vitaly Novichkov <admin@wohlnet.ru> | 2018-06-02 01:41:28 +0300 |
---|---|---|
committer | Vitaly Novichkov <admin@wohlnet.ru> | 2018-06-02 01:41:28 +0300 |
commit | 9fb6aef78053b6462f2e74fdb750576dbd3eab96 (patch) | |
tree | 6c1e0a504da727fb6ec699d930b8b8ee6883c027 /src/adlmidi_private.cpp | |
parent | a983e9325269a1d1abebeaa104c862041e315598 (diff) | |
parent | bfd80e89d91a1f014ee8c7bf8996aecfbc257975 (diff) | |
download | libADLMIDI-9fb6aef78053b6462f2e74fdb750576dbd3eab96.tar.gz libADLMIDI-9fb6aef78053b6462f2e74fdb750576dbd3eab96.tar.bz2 libADLMIDI-9fb6aef78053b6462f2e74fdb750576dbd3eab96.zip |
Merge branch 'banks3-rebase'
Diffstat (limited to 'src/adlmidi_private.cpp')
-rw-r--r-- | src/adlmidi_private.cpp | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/adlmidi_private.cpp b/src/adlmidi_private.cpp index 3d9d9e9..77319d7 100644 --- a/src/adlmidi_private.cpp +++ b/src/adlmidi_private.cpp @@ -34,16 +34,21 @@ int adlRefreshNumCards(ADL_MIDIPlayer *device) if(play->opl.AdlBank == ~0u) { //For custom bank - for(size_t a = 0; a < play->opl.dynamic_metainstruments.size(); ++a) + OPL3::BankMap::iterator it = play->opl.dynamic_banks.begin(); + OPL3::BankMap::iterator end = play->opl.dynamic_banks.end(); + for(; it != end; ++it) { - adlinsdata2 &ins = play->opl.dynamic_metainstruments[a]; - if(ins.flags & adlinsdata::Flag_NoSound) - continue; - - size_t div = (a >= play->opl.dynamic_percussion_offset) ? 1 : 0; - ++n_total[div]; - if(ins.flags & adlinsdata::Flag_Real4op) - ++n_fourop[div]; + uint16_t bank = it->first; + unsigned div = (bank & OPL3::PercussionTag) ? 1 : 0; + for(unsigned i = 0; i < 128; ++i) + { + adlinsdata2 &ins = it->second.ins[i]; + if(ins.flags & adlinsdata::Flag_NoSound) + continue; + if((ins.adl[0] != ins.adl[1]) && ((ins.flags & adlinsdata::Flag_Pseudo4op) == 0)) + ++n_fourop[div]; + ++n_total[div]; + } } } else |