From 9c33abaa1914bc3e9a63df16935f6d6ed7cbb3f0 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 2 Feb 2022 02:46:29 -0500 Subject: [PATCH] Genesis: fix extended channel 3 muting --- src/engine/platform/genesisext.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/genesisext.cpp b/src/engine/platform/genesisext.cpp index 8376a0b5..7d94c744 100644 --- a/src/engine/platform/genesisext.cpp +++ b/src/engine/platform/genesisext.cpp @@ -210,12 +210,18 @@ void DivPlatformGenesisExt::muteChannel(int ch, bool mute) { int ordch=orderedOps[ch-2]; unsigned short baseAddr=chanOffs[2]|opOffs[ordch]; DivInstrumentFM::Operator op=chan[2].state.op[ordch]; - if (isOpMuted[ch]) { + printf("mute op %d\n",ordch); + if (isOpMuted[ch-2]) { rWrite(baseAddr+0x40,127); + immWrite(baseAddr+0x40,127); + printf("muting\n"); } else if (isOutput[chan[2].state.alg][ordch]) { - rWrite(baseAddr+0x40,127-(((127-op.tl)*(opChan[ch].vol&0x7f))/127)); + rWrite(baseAddr+0x40,127-(((127-op.tl)*(opChan[ch-2].vol&0x7f))/127)); + immWrite(baseAddr+0x40,127-(((127-op.tl)*(opChan[ch-2].vol&0x7f))/127)); } else { rWrite(baseAddr+0x40,op.tl); + immWrite(baseAddr+0x40,op.tl); + printf("unmuting non-out\n"); } }