From b3c82861070ba95e489855349756b06ff2b68778 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 26 Jan 2024 16:19:46 -0500 Subject: [PATCH] PowerNoise: fix phase reset macro and improve LFSR load one --- src/engine/platform/powernoise.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/engine/platform/powernoise.cpp b/src/engine/platform/powernoise.cpp index 91dab9482..353d1ffe8 100644 --- a/src/engine/platform/powernoise.cpp +++ b/src/engine/platform/powernoise.cpp @@ -158,9 +158,11 @@ void DivPlatformPowerNoise::tick(bool sysTick) { chWrite(i,0x05,(chan[i].tapA<<4)|chan[i].tapB); } if (chan[i].std.ex8.had) { - chan[i].initLFSR=chan[i].std.ex8.val&0xffff; - chWrite(i,0x03,chan[i].std.ex8.val&0xff); - chWrite(i,0x04,chan[i].std.ex8.val>>8); + if (chan[i].initLFSR!=(chan[i].std.ex8.val&0xffff)) { + chan[i].initLFSR=chan[i].std.ex8.val&0xffff; + chWrite(i,0x03,chan[i].std.ex8.val&0xff); + chWrite(i,0x04,chan[i].std.ex8.val>>8); + } } } @@ -407,6 +409,10 @@ void DivPlatformPowerNoise::forceIns() { for (int i=0; i<4; i++) { chan[i].insChanged=true; chan[i].freqChanged=true; + if (i<3) { + chWrite(i,0x03,chan[i].initLFSR&0xff); + chWrite(i,0x04,chan[i].initLFSR>>8); + } } }