diff --git a/src/engine/platform/opll.cpp b/src/engine/platform/opll.cpp index 08d46cf9d..651ff4b7d 100644 --- a/src/engine/platform/opll.cpp +++ b/src/engine/platform/opll.cpp @@ -405,8 +405,10 @@ int DivPlatformOPLL::dispatch(DivCommand c) { } } else { if (c.chan>=6) { - drums=false; - immWrite(0x0e,0); + if (drums) { + drums=false; + immWrite(0x0e,0); + } } rWrite(0x30+c.chan,((15-(chan[c.chan].outVol*(15-chan[c.chan].state.op[1].tl))/15)&15)|(chan[c.chan].state.opllPreset<<4)); } @@ -642,6 +644,7 @@ void DivPlatformOPLL::forceIns() { if (chan[i].active) { chan[i].keyOn=true; chan[i].freqChanged=true; + chan[i].insChanged=true; } } }