diff options
Diffstat (limited to 'src/chips/nuked_opl3_v174.cpp')
-rw-r--r-- | src/chips/nuked_opl3_v174.cpp | 62 |
1 files changed, 9 insertions, 53 deletions
diff --git a/src/chips/nuked_opl3_v174.cpp b/src/chips/nuked_opl3_v174.cpp index 0dcf925..e24b2e7 100644 --- a/src/chips/nuked_opl3_v174.cpp +++ b/src/chips/nuked_opl3_v174.cpp @@ -3,18 +3,10 @@ #include <cstring> NukedOPL3v174::NukedOPL3v174() : - OPLChipBase() + OPLChipBaseT() { m_chip = new opl3_chip; - reset(m_rate); -} - -NukedOPL3v174::NukedOPL3v174(const NukedOPL3v174 &c): - OPLChipBase(c) -{ - m_chip = new opl3_chip; - std::memset(m_chip, 0, sizeof(opl3_chip)); - reset(c.m_rate); + setRate(m_rate); } NukedOPL3v174::~NukedOPL3v174() @@ -25,7 +17,7 @@ NukedOPL3v174::~NukedOPL3v174() void NukedOPL3v174::setRate(uint32_t rate) { - OPLChipBase::setRate(rate); + OPLChipBaseT::setRate(rate); opl3_chip *chip_r = reinterpret_cast<opl3_chip*>(m_chip); std::memset(chip_r, 0, sizeof(opl3_chip)); OPL3v17_Reset(chip_r, rate); @@ -33,12 +25,10 @@ void NukedOPL3v174::setRate(uint32_t rate) void NukedOPL3v174::reset() { - setRate(m_rate); -} - -void NukedOPL3v174::reset(uint32_t rate) -{ - setRate(rate); + OPLChipBaseT::reset(); + opl3_chip *chip_r = reinterpret_cast<opl3_chip*>(m_chip); + std::memset(chip_r, 0, sizeof(opl3_chip)); + OPL3v17_Reset(chip_r, m_rate); } void NukedOPL3v174::writeReg(uint16_t addr, uint8_t data) @@ -47,44 +37,10 @@ void NukedOPL3v174::writeReg(uint16_t addr, uint8_t data) OPL3v17_WriteReg(chip_r, addr, data); } -int NukedOPL3v174::generate(int16_t *output, size_t frames) -{ - opl3_chip *chip_r = reinterpret_cast<opl3_chip*>(m_chip); - OPL3v17_GenerateStream(chip_r, output, (Bit32u)frames); - return (int)frames; -} - -int NukedOPL3v174::generateAndMix(int16_t *output, size_t frames) -{ - opl3_chip *chip_r = reinterpret_cast<opl3_chip*>(m_chip); - OPL3v17_GenerateStreamMix(chip_r, output, (Bit32u)frames); - return (int)frames; -} - -int NukedOPL3v174::generate32(int32_t *output, size_t frames) -{ - opl3_chip *chip_r = reinterpret_cast<opl3_chip*>(m_chip); - for(size_t i = 0; i < frames; ++i) { - int16_t frame[2]; - OPL3v17_GenerateResampled(chip_r, frame); - output[0] = (int32_t)frame[0]; - output[1] = (int32_t)frame[1]; - output += 2; - } - return (int)frames; -} - -int NukedOPL3v174::generateAndMix32(int32_t *output, size_t frames) +void NukedOPL3v174::nativeGenerate(int16_t *frame) { opl3_chip *chip_r = reinterpret_cast<opl3_chip*>(m_chip); - for(size_t i = 0; i < frames; ++i) { - int16_t frame[2]; - OPL3v17_GenerateResampled(chip_r, frame); - output[0] += (int32_t)frame[0]; - output[1] += (int32_t)frame[1]; - output += 2; - } - return (int)frames; + OPL3v17_Generate(chip_r, frame); } const char *NukedOPL3v174::emulatorName() |