From 42f6cbfe115e6cfa695b07001cef894f00fa9cb5 Mon Sep 17 00:00:00 2001 From: JP Cimalando Date: Thu, 31 May 2018 21:59:45 +0200 Subject: dosbox: don't use ssize_t for frame count, use unsigned --- src/chips/dosbox_opl3.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/chips/dosbox_opl3.cpp') diff --git a/src/chips/dosbox_opl3.cpp b/src/chips/dosbox_opl3.cpp index e748b85..9669fa3 100644 --- a/src/chips/dosbox_opl3.cpp +++ b/src/chips/dosbox_opl3.cpp @@ -53,10 +53,10 @@ void DosBoxOPL3::writeReg(uint16_t addr, uint8_t data) int DosBoxOPL3::generate(int16_t *output, size_t frames) { DBOPL::Handler *chip_r = reinterpret_cast(m_chip); - ssize_t left = (ssize_t)frames; + Bitu left = (Bitu)frames; while(left > 0) { - ssize_t frames_i = left; + Bitu frames_i = left; chip_r->GenerateArr(output, &frames_i); output += (frames_i * 2); left -= frames_i; @@ -67,10 +67,10 @@ int DosBoxOPL3::generate(int16_t *output, size_t frames) int DosBoxOPL3::generateAndMix(int16_t *output, size_t frames) { DBOPL::Handler *chip_r = reinterpret_cast(m_chip); - ssize_t left = (ssize_t)frames; + Bitu left = (Bitu)frames; while(left > 0) { - ssize_t frames_i = left; + Bitu frames_i = left; chip_r->GenerateArrMix(output, &frames_i); output += (frames_i * 2); left -= frames_i; @@ -81,10 +81,10 @@ int DosBoxOPL3::generateAndMix(int16_t *output, size_t frames) int DosBoxOPL3::generate32(int32_t *output, size_t frames) { DBOPL::Handler *chip_r = reinterpret_cast(m_chip); - ssize_t left = (ssize_t)frames; + Bitu left = (Bitu)frames; while(left > 0) { - ssize_t frames_i = left; + Bitu frames_i = left; chip_r->GenerateArr(output, &frames_i); output += (frames_i * 2); left -= frames_i; @@ -95,10 +95,10 @@ int DosBoxOPL3::generate32(int32_t *output, size_t frames) int DosBoxOPL3::generateAndMix32(int32_t *output, size_t frames) { DBOPL::Handler *chip_r = reinterpret_cast(m_chip); - ssize_t left = (ssize_t)frames; + Bitu left = (Bitu)frames; while(left > 0) { - ssize_t frames_i = left; + Bitu frames_i = left; chip_r->GenerateArrMix(output, &frames_i); output += (frames_i * 2); left -= frames_i; -- cgit v1.2.3 From a3785e894c562e721a08c1ac7f6c443bcb4c402a Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Fri, 1 Jun 2018 00:29:36 +0300 Subject: Warning fixes and append "r4111" into name of DosBox emulator --- src/chips/dosbox_opl3.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/chips/dosbox_opl3.cpp') diff --git a/src/chips/dosbox_opl3.cpp b/src/chips/dosbox_opl3.cpp index 9669fa3..f1fcce4 100644 --- a/src/chips/dosbox_opl3.cpp +++ b/src/chips/dosbox_opl3.cpp @@ -108,5 +108,5 @@ int DosBoxOPL3::generateAndMix32(int32_t *output, size_t frames) const char *DosBoxOPL3::emulatorName() { - return "DosBox 0.74 OPL3"; + return "DosBox 0.74-r4111 OPL3"; } -- cgit v1.2.3 From 7cfe4dbcef738681b5445aa14b35fc1a6f8ff001 Mon Sep 17 00:00:00 2001 From: JP Cimalando Date: Thu, 7 Jun 2018 07:21:29 +0200 Subject: chips: create a common method set for generation and resampling --- src/chips/dosbox_opl3.cpp | 88 ++++++++--------------------------------------- 1 file changed, 15 insertions(+), 73 deletions(-) (limited to 'src/chips/dosbox_opl3.cpp') diff --git a/src/chips/dosbox_opl3.cpp b/src/chips/dosbox_opl3.cpp index f1fcce4..af4cb08 100644 --- a/src/chips/dosbox_opl3.cpp +++ b/src/chips/dosbox_opl3.cpp @@ -1,22 +1,16 @@ #include "dosbox_opl3.h" #include "dosbox/dbopl.h" +#include #include #include DosBoxOPL3::DosBoxOPL3() : - OPLChipBase(), - m_chip(NULL) + OPLChipBaseBufferedT(), + m_chip(new DBOPL::Handler) { reset(); } -DosBoxOPL3::DosBoxOPL3(const DosBoxOPL3 &c) : - OPLChipBase(c), - m_chip(NULL) -{ - setRate(c.m_rate); -} - DosBoxOPL3::~DosBoxOPL3() { DBOPL::Handler *chip_r = reinterpret_cast(m_chip); @@ -25,23 +19,20 @@ DosBoxOPL3::~DosBoxOPL3() void DosBoxOPL3::setRate(uint32_t rate) { - OPLChipBase::setRate(rate); - reset(); + OPLChipBaseBufferedT::setRate(rate); + DBOPL::Handler *chip_r = reinterpret_cast(m_chip); + chip_r->~Handler(); + new(chip_r) DBOPL::Handler; + chip_r->Init(49716); } void DosBoxOPL3::reset() { + OPLChipBaseBufferedT::reset(); DBOPL::Handler *chip_r = reinterpret_cast(m_chip); - if(m_chip && chip_r) - delete chip_r; - m_chip = new DBOPL::Handler; - chip_r = reinterpret_cast(m_chip); - chip_r->Init(m_rate); -} - -void DosBoxOPL3::reset(uint32_t rate) -{ - setRate(rate); + chip_r->~Handler(); + new(chip_r) DBOPL::Handler; + chip_r->Init(49716); } void DosBoxOPL3::writeReg(uint16_t addr, uint8_t data) @@ -50,60 +41,11 @@ void DosBoxOPL3::writeReg(uint16_t addr, uint8_t data) chip_r->WriteReg(static_cast(addr), data); } -int DosBoxOPL3::generate(int16_t *output, size_t frames) -{ - DBOPL::Handler *chip_r = reinterpret_cast(m_chip); - Bitu left = (Bitu)frames; - while(left > 0) - { - Bitu frames_i = left; - chip_r->GenerateArr(output, &frames_i); - output += (frames_i * 2); - left -= frames_i; - } - return (int)frames; -} - -int DosBoxOPL3::generateAndMix(int16_t *output, size_t frames) -{ - DBOPL::Handler *chip_r = reinterpret_cast(m_chip); - Bitu left = (Bitu)frames; - while(left > 0) - { - Bitu frames_i = left; - chip_r->GenerateArrMix(output, &frames_i); - output += (frames_i * 2); - left -= frames_i; - } - return (int)frames; -} - -int DosBoxOPL3::generate32(int32_t *output, size_t frames) -{ - DBOPL::Handler *chip_r = reinterpret_cast(m_chip); - Bitu left = (Bitu)frames; - while(left > 0) - { - Bitu frames_i = left; - chip_r->GenerateArr(output, &frames_i); - output += (frames_i * 2); - left -= frames_i; - } - return (int)frames; -} - -int DosBoxOPL3::generateAndMix32(int32_t *output, size_t frames) +void DosBoxOPL3::nativeGenerateN(int16_t *output, size_t frames) { DBOPL::Handler *chip_r = reinterpret_cast(m_chip); - Bitu left = (Bitu)frames; - while(left > 0) - { - Bitu frames_i = left; - chip_r->GenerateArrMix(output, &frames_i); - output += (frames_i * 2); - left -= frames_i; - } - return (int)frames; + Bitu frames_i = frames; + chip_r->GenerateArr(output, &frames_i); } const char *DosBoxOPL3::emulatorName() -- cgit v1.2.3