From 2e52a2855ca320b4808eb84fdd7bd918e51a2b76 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 25 Apr 2022 18:07:49 -0500 Subject: [PATCH] WonderSwan: fix noise phase reset --- src/engine/platform/swan.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/engine/platform/swan.cpp b/src/engine/platform/swan.cpp index b8f9a40d..86ad9b10 100644 --- a/src/engine/platform/swan.cpp +++ b/src/engine/platform/swan.cpp @@ -226,12 +226,14 @@ void DivPlatformSwan::tick(bool sysTick) { } } if (chan[3].std.duty.had) { - noise=chan[3].std.duty.val; - if (noise>0) { - rWrite(0x0e,((noise-1)&0x07)|0x18); - sndCtrl|=0x80; - } else { - sndCtrl&=~0x80; + if (noise!=chan[3].std.duty.val) { + noise=chan[3].std.duty.val; + if (noise>0) { + rWrite(0x0e,((noise-1)&0x07)|0x18); + sndCtrl|=0x80; + } else { + sndCtrl&=~0x80; + } } } rWrite(0x10,sndCtrl);