From 23dc509524898ef221fbf7c398c7266675d50104 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 8 Feb 2022 17:02:27 -0500 Subject: [PATCH] implement reset macro on porta flag --- src/engine/platform/amiga.cpp | 2 +- src/engine/platform/ay.cpp | 2 +- src/engine/platform/ay8930.cpp | 2 +- src/engine/platform/c64.cpp | 6 ++++-- src/engine/platform/gb.cpp | 2 +- src/engine/platform/nes.cpp | 2 +- src/engine/platform/pce.cpp | 2 +- src/engine/platform/saa.cpp | 2 +- src/engine/platform/sms.cpp | 2 +- src/engine/platform/tia.cpp | 2 +- src/engine/platform/ym2610.cpp | 2 +- 11 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/engine/platform/amiga.cpp b/src/engine/platform/amiga.cpp index 37211ef65..e6b92122e 100644 --- a/src/engine/platform/amiga.cpp +++ b/src/engine/platform/amiga.cpp @@ -250,7 +250,7 @@ int DivPlatformAmiga::dispatch(DivCommand c) { break; } case DIV_CMD_PRE_PORTA: - chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + 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 590d577b0..2c98d8bb1 100644 --- a/src/engine/platform/ay.cpp +++ b/src/engine/platform/ay.cpp @@ -315,7 +315,7 @@ int DivPlatformAY8910::dispatch(DivCommand c) { return 15; break; case DIV_CMD_PRE_PORTA: - chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + 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 bd616fc84..b058629f9 100644 --- a/src/engine/platform/ay8930.cpp +++ b/src/engine/platform/ay8930.cpp @@ -368,7 +368,7 @@ int DivPlatformAY8930::dispatch(DivCommand c) { return 31; break; case DIV_CMD_PRE_PORTA: - chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + 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 2e544924e..dc3897baf 100644 --- a/src/engine/platform/c64.cpp +++ b/src/engine/platform/c64.cpp @@ -271,8 +271,10 @@ int DivPlatformC64::dispatch(DivCommand c) { chan[c.chan].note=c.value; break; case DIV_CMD_PRE_PORTA: - chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); - chan[c.chan].keyOn=true; + 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; case DIV_CMD_PRE_NOTE: diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index cf3708f43..7337bea3e 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -313,7 +313,7 @@ int DivPlatformGB::dispatch(DivCommand c) { break; case DIV_CMD_PRE_PORTA: if (chan[c.chan].active) { - chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); } chan[c.chan].inPorta=c.value; break; diff --git a/src/engine/platform/nes.cpp b/src/engine/platform/nes.cpp index 3fb1322a3..8efd2209b 100644 --- a/src/engine/platform/nes.cpp +++ b/src/engine/platform/nes.cpp @@ -375,7 +375,7 @@ int DivPlatformNES::dispatch(DivCommand c) { chan[c.chan].note=c.value; break; case DIV_CMD_PRE_PORTA: - chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + 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 96b0f024d..4d8c88b1e 100644 --- a/src/engine/platform/pce.cpp +++ b/src/engine/platform/pce.cpp @@ -366,7 +366,7 @@ int DivPlatformPCE::dispatch(DivCommand c) { chan[c.chan].note=c.value; break; case DIV_CMD_PRE_PORTA: - chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + 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 c9301594a..897c53d5c 100644 --- a/src/engine/platform/saa.cpp +++ b/src/engine/platform/saa.cpp @@ -262,7 +262,7 @@ int DivPlatformSAA1099::dispatch(DivCommand c) { return 15; break; case DIV_CMD_PRE_PORTA: - chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + 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 08e853b74..86e8d9459 100644 --- a/src/engine/platform/sms.cpp +++ b/src/engine/platform/sms.cpp @@ -188,7 +188,7 @@ int DivPlatformSMS::dispatch(DivCommand c) { chan[c.chan].actualNote=c.value; break; case DIV_CMD_PRE_PORTA: - chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + 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 6a6ff2628..f3555f217 100644 --- a/src/engine/platform/tia.cpp +++ b/src/engine/platform/tia.cpp @@ -215,7 +215,7 @@ int DivPlatformTIA::dispatch(DivCommand c) { return 15; break; case DIV_CMD_PRE_PORTA: - chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + 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 84711fc88..691982cd9 100644 --- a/src/engine/platform/ym2610.cpp +++ b/src/engine/platform/ym2610.cpp @@ -674,7 +674,7 @@ int DivPlatformYM2610::dispatch(DivCommand c) { break; case DIV_CMD_PRE_PORTA: if (c.chan>3) { - chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); + if (parent->song.resetMacroOnPorta) chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); } chan[c.chan].inPorta=c.value; break;