diff --git a/src/engine/platform/opll.cpp b/src/engine/platform/opll.cpp index 66fc0622a..70bda999d 100644 --- a/src/engine/platform/opll.cpp +++ b/src/engine/platform/opll.cpp @@ -398,9 +398,16 @@ void DivPlatformOPLL::switchMode(bool mode) { if (mode==properDrums) return; if (mode) { logV("mode switch to DRUMS"); + immWrite(0x26,0); + immWrite(0x27,0); + immWrite(0x28,0); immWrite(0x0e,0x20); + immWrite(0x36,drumVol[0]); + immWrite(0x37,drumVol[1]|(drumVol[4]<<4)); + immWrite(0x38,drumVol[3]|(drumVol[2]<<4)); } else { logV("mode switch to NORMAL"); + immWrite(0x0e,0x20); immWrite(0x0e,0x00); } properDrums=mode;