From 474dfa2587c7bfa178a7b3c9199d84cd05cec449 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 15 Aug 2022 22:36:26 -0500 Subject: [PATCH] Game Boy: fix bug involving hw sweep and zombie --- src/engine/platform/gb.cpp | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index b6a00c0f1..c29329b95 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -181,7 +181,6 @@ void DivPlatformGB::tick(bool sysTick) { chan[i].soundLen=64; if (!chan[i].keyOn) chan[i].killIt=true; - chan[i].freqChanged=true; } } } @@ -353,25 +352,24 @@ void DivPlatformGB::tick(bool sysTick) { if (chan[i].keyOn) chan[i].keyOn=false; if (chan[i].keyOff) chan[i].keyOff=false; chan[i].freqChanged=false; + } + if (chan[i].killIt) { + if (i!=2) { + //rWrite(16+i*5+2,8); + int killDelta=chan[i].lastKill-chan[i].outVol+1; + if (killDelta<0) killDelta+=16; + chan[i].lastKill=chan[i].outVol; - if (chan[i].killIt) { - if (i!=2) { - //rWrite(16+i*5+2,8); - int killDelta=chan[i].lastKill-chan[i].outVol+1; - if (killDelta<0) killDelta+=16; - chan[i].lastKill=chan[i].outVol; - - if (killDelta!=1) { - rWrite(16+i*5+2,((chan[i].envVol<<4))|8); - for (int j=0; j