diff --git a/src/engine/platform/amiga.cpp b/src/engine/platform/amiga.cpp index e6b92122e..5356e9d6e 100644 --- a/src/engine/platform/amiga.cpp +++ b/src/engine/platform/amiga.cpp @@ -250,7 +250,9 @@ int DivPlatformAmiga::dispatch(DivCommand c) { break; } case DIV_CMD_PRE_PORTA: - if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + if (chan[c.chan].active) { + if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + } chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/ay.cpp b/src/engine/platform/ay.cpp index 2c98d8bb1..4eea30b3d 100644 --- a/src/engine/platform/ay.cpp +++ b/src/engine/platform/ay.cpp @@ -315,7 +315,9 @@ int DivPlatformAY8910::dispatch(DivCommand c) { return 15; break; case DIV_CMD_PRE_PORTA: - if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + if (chan[c.chan].active) { + if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + } chan[c.chan].inPorta=c.value; break; case DIV_CMD_PRE_NOTE: diff --git a/src/engine/platform/ay8930.cpp b/src/engine/platform/ay8930.cpp index b058629f9..b167edd14 100644 --- a/src/engine/platform/ay8930.cpp +++ b/src/engine/platform/ay8930.cpp @@ -368,7 +368,9 @@ int DivPlatformAY8930::dispatch(DivCommand c) { return 31; break; case DIV_CMD_PRE_PORTA: - if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + if (chan[c.chan].active) { + if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + } chan[c.chan].inPorta=c.value; break; case DIV_CMD_PRE_NOTE: diff --git a/src/engine/platform/c64.cpp b/src/engine/platform/c64.cpp index dc3897baf..f9cc20344 100644 --- a/src/engine/platform/c64.cpp +++ b/src/engine/platform/c64.cpp @@ -271,9 +271,11 @@ int DivPlatformC64::dispatch(DivCommand c) { chan[c.chan].note=c.value; break; case DIV_CMD_PRE_PORTA: - if (parent->song.resetMacroOnPorta) { - chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); - chan[c.chan].keyOn=true; + if (chan[c.chan].active) { + if (parent->song.resetMacroOnPorta) { + chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + chan[c.chan].keyOn=true; + } } chan[c.chan].inPorta=c.value; break; diff --git a/src/engine/platform/nes.cpp b/src/engine/platform/nes.cpp index 8efd2209b..c306ac946 100644 --- a/src/engine/platform/nes.cpp +++ b/src/engine/platform/nes.cpp @@ -375,7 +375,9 @@ int DivPlatformNES::dispatch(DivCommand c) { chan[c.chan].note=c.value; break; case DIV_CMD_PRE_PORTA: - if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + if (chan[c.chan].active) { + if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + } chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/pce.cpp b/src/engine/platform/pce.cpp index 4d8c88b1e..833c43610 100644 --- a/src/engine/platform/pce.cpp +++ b/src/engine/platform/pce.cpp @@ -366,7 +366,9 @@ int DivPlatformPCE::dispatch(DivCommand c) { chan[c.chan].note=c.value; break; case DIV_CMD_PRE_PORTA: - if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + if (chan[c.chan].active) { + if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + } chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/saa.cpp b/src/engine/platform/saa.cpp index 897c53d5c..8ee203822 100644 --- a/src/engine/platform/saa.cpp +++ b/src/engine/platform/saa.cpp @@ -262,7 +262,9 @@ int DivPlatformSAA1099::dispatch(DivCommand c) { return 15; break; case DIV_CMD_PRE_PORTA: - if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + if (chan[c.chan].active) { + if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + } chan[c.chan].inPorta=c.value; break; case DIV_CMD_PRE_NOTE: diff --git a/src/engine/platform/sms.cpp b/src/engine/platform/sms.cpp index 86e8d9459..916e18310 100644 --- a/src/engine/platform/sms.cpp +++ b/src/engine/platform/sms.cpp @@ -188,7 +188,9 @@ int DivPlatformSMS::dispatch(DivCommand c) { chan[c.chan].actualNote=c.value; break; case DIV_CMD_PRE_PORTA: - if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + if (chan[c.chan].active) { + if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + } chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/tia.cpp b/src/engine/platform/tia.cpp index f3555f217..4b11e8aad 100644 --- a/src/engine/platform/tia.cpp +++ b/src/engine/platform/tia.cpp @@ -215,7 +215,9 @@ int DivPlatformTIA::dispatch(DivCommand c) { return 15; break; case DIV_CMD_PRE_PORTA: - if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + if (chan[c.chan].active) { + if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + } chan[c.chan].inPorta=c.value; break; case DIV_CMD_PRE_NOTE: diff --git a/src/engine/platform/ym2610.cpp b/src/engine/platform/ym2610.cpp index 691982cd9..155151ecc 100644 --- a/src/engine/platform/ym2610.cpp +++ b/src/engine/platform/ym2610.cpp @@ -674,7 +674,9 @@ int DivPlatformYM2610::dispatch(DivCommand c) { break; case DIV_CMD_PRE_PORTA: if (c.chan>3) { - if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + if (chan[c.chan].active) { + if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + } } chan[c.chan].inPorta=c.value; break;