From c527eaa94623017f4a9f6bedbaa5aab2ea049f01 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 7 Apr 2024 17:00:23 -0500 Subject: [PATCH] emu2413: fix muting --- src/engine/platform/opll.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/engine/platform/opll.cpp b/src/engine/platform/opll.cpp index 537df42d7..0fd3b6d3d 100644 --- a/src/engine/platform/opll.cpp +++ b/src/engine/platform/opll.cpp @@ -390,6 +390,19 @@ int DivPlatformOPLL::toFreq(int freq) { void DivPlatformOPLL::muteChannel(int ch, bool mute) { isMuted[ch]=mute; + if (selCore==1) { + OPLL_setMask(fm_emu, + (isMuted[0]?1:0)| + (isMuted[1]?2:0)| + (isMuted[2]?4:0)| + (isMuted[3]?8:0)| + (isMuted[4]?16:0)| + (isMuted[5]?32:0)| + (isMuted[6]?64:0)| + (isMuted[7]?128:0)| + (isMuted[8]?256:0) + ); + } } void DivPlatformOPLL::commitState(int ch, DivInstrument* ins) { @@ -1043,6 +1056,17 @@ void DivPlatformOPLL::reset() { OPLL_reset(fm_emu); OPLL_setChipType(fm_emu,vrc7?1:0); OPLL_resetPatch(fm_emu,vrc7?1:nukedToEmuPatch[patchSet&3]); + OPLL_setMask(fm_emu, + (isMuted[0]?1:0)| + (isMuted[1]?2:0)| + (isMuted[2]?4:0)| + (isMuted[3]?8:0)| + (isMuted[4]?16:0)| + (isMuted[5]?32:0)| + (isMuted[6]?64:0)| + (isMuted[7]?128:0)| + (isMuted[8]?256:0) + ); } for (int i=0; i<11; i++) { chan[i]=DivPlatformOPLL::Channel();