diff options
author | JP Cimalando <jpcima@users.noreply.github.com> | 2018-06-19 16:12:27 +0200 |
---|---|---|
committer | JP Cimalando <jpcima@users.noreply.github.com> | 2018-06-19 16:25:36 +0200 |
commit | 3013fbb93b06e8d30b6b54c324340d6dccad7f3b (patch) | |
tree | 8ffbd8d896849ffd418bccf5d429f74e7f63c6d2 /src/adlmidi_opl3.cpp | |
parent | 70c83caace9911dc5d8b80c1653c96b073f88e4a (diff) | |
download | libADLMIDI-3013fbb93b06e8d30b6b54c324340d6dccad7f3b.tar.gz libADLMIDI-3013fbb93b06e8d30b6b54c324340d6dccad7f3b.tar.bz2 libADLMIDI-3013fbb93b06e8d30b6b54c324340d6dccad7f3b.zip |
get chip base on level with OPNMIDI
Diffstat (limited to 'src/adlmidi_opl3.cpp')
-rw-r--r-- | src/adlmidi_opl3.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/adlmidi_opl3.cpp b/src/adlmidi_opl3.cpp index b4db049..ea479c8 100644 --- a/src/adlmidi_opl3.cpp +++ b/src/adlmidi_opl3.cpp @@ -484,7 +484,7 @@ void OPL3::ClearChips() } #endif -void OPL3::Reset(int emulator, unsigned long PCM_RATE) +void OPL3::Reset(int emulator, unsigned long PCM_RATE, void *audioTickHandler) { #ifndef ADLMIDI_HW_OPL ClearChips(); @@ -520,25 +520,32 @@ void OPL3::Reset(int emulator, unsigned long PCM_RATE) for(size_t i = 0; i < NumCards; ++i) { + OPLChipBase *chip; + #ifndef ADLMIDI_HW_OPL switch(emulator) { default: #ifndef ADLMIDI_DISABLE_NUKED_EMULATOR case ADLMIDI_EMU_NUKED: /* Latest Nuked OPL3 */ - cardsOP2[i].reset(new NukedOPL3()); + chip = new NukedOPL3; break; case ADLMIDI_EMU_NUKED_174: /* Old Nuked OPL3 1.4.7 modified and optimized */ - cardsOP2[i].reset(new NukedOPL3v174()); + chip = new NukedOPL3v174; break; #endif #ifndef ADLMIDI_DISABLE_DOSBOX_EMULATOR case ADLMIDI_EMU_DOSBOX: - cardsOP2[i].reset(new DosBoxOPL3()); + chip = new DosBoxOPL3; break; #endif } - cardsOP2[i]->setRate((uint32_t)PCM_RATE); + cardsOP2[i].reset(chip); + chip->setChipId(i); + chip->setRate((uint32_t)PCM_RATE); + if(runAtPcmRate) + chip->setRunningAtPcmRate(true); + chip->setAudioTickHandlerInstance(audioTickHandler); #endif // ADLMIDI_HW_OPL for(unsigned a = 0; a < 18; ++a) Poke(i, 0xB0 + Channels[a], 0x00); |