diff options
-rw-r--r-- | src/chips/dosbox_opl3.cpp | 5 | ||||
-rw-r--r-- | src/chips/dosbox_opl3.h | 1 | ||||
-rw-r--r-- | src/chips/esfmu_opl3.cpp | 7 | ||||
-rw-r--r-- | src/chips/esfmu_opl3.h | 1 | ||||
-rw-r--r-- | src/chips/java_opl3.cpp | 5 | ||||
-rw-r--r-- | src/chips/java_opl3.h | 1 | ||||
-rw-r--r-- | src/chips/nuked_opl3.cpp | 5 | ||||
-rw-r--r-- | src/chips/nuked_opl3.h | 1 | ||||
-rw-r--r-- | src/chips/nuked_opl3_v174.cpp | 5 | ||||
-rw-r--r-- | src/chips/nuked_opl3_v174.h | 1 | ||||
-rw-r--r-- | src/chips/opal_opl3.cpp | 5 | ||||
-rw-r--r-- | src/chips/opal_opl3.h | 1 | ||||
-rw-r--r-- | src/chips/opl_chip_base.h | 9 | ||||
-rw-r--r-- | src/chips/opl_serial_port.cpp | 5 | ||||
-rw-r--r-- | src/chips/opl_serial_port.h | 1 |
15 files changed, 51 insertions, 2 deletions
diff --git a/src/chips/dosbox_opl3.cpp b/src/chips/dosbox_opl3.cpp index 69c77b6..1a29774 100644 --- a/src/chips/dosbox_opl3.cpp +++ b/src/chips/dosbox_opl3.cpp @@ -84,6 +84,11 @@ const char *DosBoxOPL3::emulatorName() return "DOSBox 0.74-r4111 OPL3"; } +bool DosBoxOPL3::hasFullPanning() +{ + return true; +} + OPLChipBase::ChipType DosBoxOPL3::chipType() { return CHIPTYPE_OPL3; diff --git a/src/chips/dosbox_opl3.h b/src/chips/dosbox_opl3.h index 9528493..9911edb 100644 --- a/src/chips/dosbox_opl3.h +++ b/src/chips/dosbox_opl3.h @@ -42,6 +42,7 @@ public: void nativeGenerateN(int16_t *output, size_t frames) override; const char *emulatorName() override; ChipType chipType() override; + bool hasFullPanning() override; }; #endif // DOSBOX_OPL3_H diff --git a/src/chips/esfmu_opl3.cpp b/src/chips/esfmu_opl3.cpp index 9637c4a..f5f20e9 100644 --- a/src/chips/esfmu_opl3.cpp +++ b/src/chips/esfmu_opl3.cpp @@ -77,7 +77,12 @@ const char *ESFMuOPL3::emulatorName() return "ESFMu"; } +bool ESFMuOPL3::hasFullPanning() +{ + return false; +} + OPLChipBase::ChipType ESFMuOPL3::chipType() { - return CHIPTYPE_OPL3; + return CHIPTYPE_ESFM; } diff --git a/src/chips/esfmu_opl3.h b/src/chips/esfmu_opl3.h index b01d784..b7572bb 100644 --- a/src/chips/esfmu_opl3.h +++ b/src/chips/esfmu_opl3.h @@ -40,6 +40,7 @@ public: void nativeGenerate(int16_t *frame) override; const char *emulatorName() override; ChipType chipType() override; + bool hasFullPanning() override; }; #endif // ESFMU_OPL3_H diff --git a/src/chips/java_opl3.cpp b/src/chips/java_opl3.cpp index 0ef53a4..545dd8f 100644 --- a/src/chips/java_opl3.cpp +++ b/src/chips/java_opl3.cpp @@ -111,6 +111,11 @@ const char *JavaOPL3::emulatorName() return "Java 1.0.6 OPL3"; } +bool JavaOPL3::hasFullPanning() +{ + return true; +} + OPLChipBase::ChipType JavaOPL3::chipType() { return CHIPTYPE_OPL3; diff --git a/src/chips/java_opl3.h b/src/chips/java_opl3.h index 1676bb6..e6b481b 100644 --- a/src/chips/java_opl3.h +++ b/src/chips/java_opl3.h @@ -40,6 +40,7 @@ public: void nativeGenerateN(int16_t *output, size_t frames) override; const char *emulatorName() override; ChipType chipType() override; + bool hasFullPanning() override; }; #endif // JAVA_OPL3_H diff --git a/src/chips/nuked_opl3.cpp b/src/chips/nuked_opl3.cpp index 31135cc..5d99bea 100644 --- a/src/chips/nuked_opl3.cpp +++ b/src/chips/nuked_opl3.cpp @@ -74,6 +74,11 @@ const char *NukedOPL3::emulatorName() return "Nuked OPL3 (v 1.8)"; } +bool NukedOPL3::hasFullPanning() +{ + return true; +} + OPLChipBase::ChipType NukedOPL3::chipType() { return CHIPTYPE_OPL3; diff --git a/src/chips/nuked_opl3.h b/src/chips/nuked_opl3.h index 36025c7..613e5b5 100644 --- a/src/chips/nuked_opl3.h +++ b/src/chips/nuked_opl3.h @@ -40,6 +40,7 @@ public: void nativeGenerate(int16_t *frame) override; const char *emulatorName() override; ChipType chipType() override; + bool hasFullPanning() override; }; #endif // NUKED_OPL3_H diff --git a/src/chips/nuked_opl3_v174.cpp b/src/chips/nuked_opl3_v174.cpp index 9f98b36..96cf99d 100644 --- a/src/chips/nuked_opl3_v174.cpp +++ b/src/chips/nuked_opl3_v174.cpp @@ -74,6 +74,11 @@ const char *NukedOPL3v174::emulatorName() return "Nuked OPL3 (v 1.7.4)"; } +bool NukedOPL3v174::hasFullPanning() +{ + return true; +} + OPLChipBase::ChipType NukedOPL3v174::chipType() { return CHIPTYPE_OPL3; diff --git a/src/chips/nuked_opl3_v174.h b/src/chips/nuked_opl3_v174.h index a9cd26a..84f6c99 100644 --- a/src/chips/nuked_opl3_v174.h +++ b/src/chips/nuked_opl3_v174.h @@ -40,6 +40,7 @@ public: void nativeGenerate(int16_t *frame) override; const char *emulatorName() override; ChipType chipType() override; + bool hasFullPanning() override; }; #endif // NUKED_OPL3174_H diff --git a/src/chips/opal_opl3.cpp b/src/chips/opal_opl3.cpp index c118c3a..4e8e3d3 100644 --- a/src/chips/opal_opl3.cpp +++ b/src/chips/opal_opl3.cpp @@ -75,6 +75,11 @@ const char *OpalOPL3::emulatorName() return "Opal OPL3"; } +bool OpalOPL3::hasFullPanning() +{ + return true; +} + OPLChipBase::ChipType OpalOPL3::chipType() { return CHIPTYPE_OPL3; diff --git a/src/chips/opal_opl3.h b/src/chips/opal_opl3.h index 71adc5c..6f1e573 100644 --- a/src/chips/opal_opl3.h +++ b/src/chips/opal_opl3.h @@ -40,6 +40,7 @@ public: void nativeGenerate(int16_t *frame) override; const char *emulatorName() override; ChipType chipType() override; + bool hasFullPanning() override; }; #endif // NUKED_OPL3_H diff --git a/src/chips/opl_chip_base.h b/src/chips/opl_chip_base.h index cbc09b2..3568d68 100644 --- a/src/chips/opl_chip_base.h +++ b/src/chips/opl_chip_base.h @@ -41,7 +41,9 @@ public: enum { nativeRate = 49716 }; enum ChipType { - CHIPTYPE_OPL3 = 0, CHIPTYPE_OPL2 = 1 + CHIPTYPE_OPL3 = 0, + CHIPTYPE_OPL2 = 1, + CHIPTYPE_ESFM = 2 }; protected: uint32_t m_id; @@ -79,6 +81,11 @@ public: virtual const char* emulatorName() = 0; virtual ChipType chipType() = 0; + /** + * @brief Does emulator has the per-channel full-panning extension? + * @return true if emulator has this extension, false if emulator has only original behaviour + */ + virtual bool hasFullPanning() = 0; private: OPLChipBase(const OPLChipBase &c); OPLChipBase &operator=(const OPLChipBase &c); diff --git a/src/chips/opl_serial_port.cpp b/src/chips/opl_serial_port.cpp index 47fe491..d491d69 100644 --- a/src/chips/opl_serial_port.cpp +++ b/src/chips/opl_serial_port.cpp @@ -94,6 +94,11 @@ bool OPL_SerialPort::connectPort(const std::string& name, unsigned baudRate, uns return m_port->open(name, baudRate); } +bool OPL_SerialPort::hasFullPanning() +{ + return false; +} + void OPL_SerialPort::writeReg(uint16_t addr, uint8_t data) { uint8_t sendBuffer[16]; diff --git a/src/chips/opl_serial_port.h b/src/chips/opl_serial_port.h index 299992e..927a5e4 100644 --- a/src/chips/opl_serial_port.h +++ b/src/chips/opl_serial_port.h @@ -54,6 +54,7 @@ public: void nativeGenerate(int16_t *frame) override; const char *emulatorName() override; ChipType chipType() override; + bool hasFullPanning() override; private: ChipSerialPortBase *m_port; |