From 7f6a54208bc9da2b100ef1a6d5ddbf19516aedd6 Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Tue, 25 Mar 2025 22:14:33 +0300 Subject: Fixed instruments distortion on OPL2 chips --- src/adlmidi_opl3.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/adlmidi_opl3.cpp b/src/adlmidi_opl3.cpp index 48a7d20..cc3718d 100644 --- a/src/adlmidi_opl3.cpp +++ b/src/adlmidi_opl3.cpp @@ -1538,6 +1538,9 @@ void OPL3::setPatch(size_t c, const OplTimbre &instrument) if(o2 != 0xFFF) writeRegI(chip, data[a] + o2, y & 0xFF); } + + if(m_currentChipType == OPLChipBase::CHIPTYPE_OPL2) + writeRegI(chip, 0xC0 + g_channelsMapPan[cc], instrument.feedconn); } void OPL3::setPan(size_t c, uint8_t value) @@ -1899,7 +1902,8 @@ void OPL3::initChip(size_t chip) static const uint16_t data_opl2[] = { 0x004, 96, 0x004, 128, // Pulse timer - 0x001, 32 // Enable wave + 0x001, 32, // Enable wave + 0x08, 0 // CSW/Note Sel }; static const size_t data_opl2_size = sizeof(data_opl2) / sizeof(uint16_t); -- cgit v1.2.3