From 1bb81394aa674fb41d7703313fd12f1036da4335 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 7 Feb 2022 00:49:01 -0500 Subject: [PATCH] NES: enable duty and'ing on properNoiseLayout --- src/engine/platform/gb.cpp | 2 +- src/engine/platform/nes.cpp | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index 380c6e9b..3b9d2d2c 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -307,7 +307,7 @@ int DivPlatformGB::dispatch(DivCommand c) { chan[c.chan].freqChanged=true; chan[c.chan].note=c.value; break; - case DIV_CMD_PRE_PORTA: // aaaaaaaa + case DIV_CMD_PRE_PORTA: if (chan[c.chan].active) { chan[c.chan].std.init(parent->getIns(chan[c.chan].ins)); } diff --git a/src/engine/platform/nes.cpp b/src/engine/platform/nes.cpp index e87b9ce0..34281026 100644 --- a/src/engine/platform/nes.cpp +++ b/src/engine/platform/nes.cpp @@ -139,7 +139,13 @@ void DivPlatformNES::tick() { } if (chan[i].std.hadDuty) { chan[i].duty=chan[i].std.duty; - if (i==3 && chan[i].duty>1) chan[i].duty=1; + if (i==3) { + if (parent->song.properNoiseLayout) { + chan[i].duty&=1; + } else if (chan[i].duty>1) { + chan[i].duty=1; + } + } if (i!=2) { rWrite(0x4000+i*4,0x30|chan[i].outVol|((chan[i].duty&3)<<6)); }