From 2542a10620bfc9257768f8b081354992d18d1b68 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 9 Feb 2023 14:02:54 -0500 Subject: [PATCH] YM2612: change strategy for operator toggle --- src/engine/platform/genesis.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index 188b258b..ca3c1057 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -300,7 +300,7 @@ void DivPlatformGenesis::tick(bool sysTick) { if (i<6) for (int j=0; j<4; j++) { unsigned short baseAddr=chanOffs[i]|opOffs[j]; DivInstrumentFM::Operator& op=chan[i].state.op[j]; - if (isMuted[i]) { + if (isMuted[i] || !op.enable) { rWrite(baseAddr+ADDR_TL,127); } else { if (KVS(i,j)) { @@ -383,7 +383,7 @@ void DivPlatformGenesis::tick(bool sysTick) { if (!parent->song.algMacroBehavior) for (int j=0; j<4; j++) { unsigned short baseAddr=chanOffs[i]|opOffs[j]; DivInstrumentFM::Operator& op=chan[i].state.op[j]; - if (isMuted[i]) { + if (isMuted[i] || !op.enable) { rWrite(baseAddr+ADDR_TL,127); } else { if (KVS(i,j)) { @@ -444,7 +444,7 @@ void DivPlatformGenesis::tick(bool sysTick) { } if (m.tl.had) { op.tl=127-m.tl.val; - if (isMuted[i]) { + if (isMuted[i] || !op.enable) { rWrite(baseAddr+ADDR_TL,127); } else { if (KVS(i,j)) { @@ -585,7 +585,7 @@ void DivPlatformGenesis::muteChannel(int ch, bool mute) { for (int j=0; j<4; j++) { unsigned short baseAddr=chanOffs[ch]|opOffs[j]; DivInstrumentFM::Operator& op=chan[ch].state.op[j]; - if (isMuted[ch]) { + if (isMuted[ch] || !op.enable) { rWrite(baseAddr+ADDR_TL,127); } else { if (KVS(ch,j)) { @@ -614,7 +614,7 @@ void DivPlatformGenesis::commitState(int ch, DivInstrument* ins) { for (int i=0; i<4; i++) { unsigned short baseAddr=chanOffs[ch]|opOffs[i]; DivInstrumentFM::Operator& op=chan[ch].state.op[i]; - if (isMuted[ch]) { + if (isMuted[ch] || !op.enable) { rWrite(baseAddr+ADDR_TL,127); } else { if (KVS(ch,i)) { @@ -780,7 +780,7 @@ int DivPlatformGenesis::dispatch(DivCommand c) { for (int i=0; i<4; i++) { unsigned short baseAddr=chanOffs[c.chan]|opOffs[i]; DivInstrumentFM::Operator& op=chan[c.chan].state.op[i]; - if (isMuted[c.chan]) { + if (isMuted[c.chan] || !op.enable) { rWrite(baseAddr+ADDR_TL,127); } else { if (KVS(c.chan,i)) { @@ -958,7 +958,7 @@ int DivPlatformGenesis::dispatch(DivCommand c) { unsigned short baseAddr=chanOffs[c.chan]|opOffs[orderedOps[c.value]]; DivInstrumentFM::Operator& op=chan[c.chan].state.op[orderedOps[c.value]]; op.tl=c.value2; - if (isMuted[c.chan]) { + if (isMuted[c.chan] || !op.enable) { rWrite(baseAddr+ADDR_TL,127); } else { if (KVS(c.chan,c.value)) { @@ -1155,7 +1155,7 @@ void DivPlatformGenesis::forceIns() { for (int j=0; j<4; j++) { unsigned short baseAddr=chanOffs[i]|opOffs[j]; DivInstrumentFM::Operator& op=chan[i].state.op[j]; - if (isMuted[i]) { + if (isMuted[i] || !op.enable) { rWrite(baseAddr+ADDR_TL,127); } else { if (KVS(i,j)) {