diff options
author | Wohlstand <admin@wohlnet.ru> | 2025-03-24 13:36:08 +0300 |
---|---|---|
committer | Wohlstand <admin@wohlnet.ru> | 2025-03-24 13:36:08 +0300 |
commit | 4fd3ef02876897453f7309b4a8b62113e63bffb0 (patch) | |
tree | 79706d4b6e692b08993cf0566038f624ed7c2938 /src | |
parent | db850087a4222e0709269e666ddf8923a72977ab (diff) | |
download | libADLMIDI-4fd3ef02876897453f7309b4a8b62113e63bffb0.tar.gz libADLMIDI-4fd3ef02876897453f7309b4a8b62113e63bffb0.tar.bz2 libADLMIDI-4fd3ef02876897453f7309b4a8b62113e63bffb0.zip |
ESFM: Remove the queue workaround
Diffstat (limited to 'src')
-rw-r--r-- | src/chips/esfmu_opl3.cpp | 36 | ||||
-rw-r--r-- | src/chips/esfmu_opl3.h | 14 |
2 files changed, 3 insertions, 47 deletions
diff --git a/src/chips/esfmu_opl3.cpp b/src/chips/esfmu_opl3.cpp index 67056d0..9637c4a 100644 --- a/src/chips/esfmu_opl3.cpp +++ b/src/chips/esfmu_opl3.cpp @@ -23,10 +23,7 @@ #include <cstring> ESFMuOPL3::ESFMuOPL3() : - OPLChipBaseT(), - m_headPos(0), - m_tailPos(0), - m_queueCount(0) + OPLChipBaseT() { m_chip = new esfm_chip; ESFMuOPL3::setRate(m_rate); @@ -56,16 +53,8 @@ void ESFMuOPL3::reset() void ESFMuOPL3::writeReg(uint16_t addr, uint8_t data) { - Reg &back = m_queue[m_headPos++]; - back.addr = addr; - back.data = data; - - if(m_headPos >= c_queueSize) - m_headPos = 0; - - ++m_queueCount; - // esfm_chip *chip_r = reinterpret_cast<esfm_chip*>(m_chip); - // ESFM_write_reg_buffered(chip_r, addr, data); + esfm_chip *chip_r = reinterpret_cast<esfm_chip*>(m_chip); + ESFM_write_reg_buffered_fast(chip_r, addr, data); } void ESFMuOPL3::writePan(uint16_t addr, uint8_t data) @@ -80,25 +69,6 @@ void ESFMuOPL3::writePan(uint16_t addr, uint8_t data) void ESFMuOPL3::nativeGenerate(int16_t *frame) { esfm_chip *chip_r = reinterpret_cast<esfm_chip*>(m_chip); - uint32_t addr = 0xffff, data; - - // see if there is data to be written; if so, extract it and dequeue - if(m_queueCount > 0) - { - const Reg &front = m_queue[m_tailPos++]; - - if(m_tailPos >= c_queueSize) - m_tailPos = 0; - --m_queueCount; - - addr = front.addr; - data = front.data; - } - - // write to the chip - if(addr != 0xffff) - ESFM_write_reg(chip_r, addr, data); - ESFM_generate(chip_r, frame); } diff --git a/src/chips/esfmu_opl3.h b/src/chips/esfmu_opl3.h index 43eb09a..b01d784 100644 --- a/src/chips/esfmu_opl3.h +++ b/src/chips/esfmu_opl3.h @@ -26,20 +26,6 @@ class ESFMuOPL3 final : public OPLChipBaseT<ESFMuOPL3> { void *m_chip; - - static const size_t c_queueSize = 500; - - struct Reg - { - uint32_t addr; - uint8_t data; - }; - - Reg m_queue[c_queueSize]; - size_t m_headPos; - size_t m_tailPos; - long m_queueCount; - public: ESFMuOPL3(); ~ESFMuOPL3() override; |