From b073689ac9aef413bd39392471a636ca5889e73f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 24 Oct 2022 22:53:44 -0500 Subject: [PATCH] OPNA: try an ADPCM fix --- src/engine/platform/ym2608.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/engine/platform/ym2608.cpp b/src/engine/platform/ym2608.cpp index 48739823..ad31e4a4 100644 --- a/src/engine/platform/ym2608.cpp +++ b/src/engine/platform/ym2608.cpp @@ -627,7 +627,7 @@ void DivPlatformYM2608::tick(bool sysTick) { immWrite(0x109,chan[15].freq&0xff); immWrite(0x10a,(chan[15].freq>>8)&0xff); if (chan[15].keyOn || chan[15].keyOff) { - immWrite(0x100,0x01); // reset + if (chan[15].keyOff) immWrite(0x100,0x01); // reset if (chan[15].active && chan[15].keyOn && !chan[15].keyOff) { if (chan[15].sample>=0 && chan[15].samplesong.sampleLen) { DivSample* s=parent->getSample(chan[15].sample); @@ -685,6 +685,7 @@ int DivPlatformYM2608::dispatch(DivCommand c) { chan[c.chan].sample=ins->amiga.getSample(c.value); if (chan[c.chan].sample>=0 && chan[c.chan].samplesong.sampleLen) { DivSample* s=parent->getSample(chan[c.chan].sample); + immWrite(0x100,0x01); // reset immWrite(0x102,(sampleOffB[chan[c.chan].sample]>>5)&0xff); immWrite(0x103,(sampleOffB[chan[c.chan].sample]>>13)&0xff); int end=sampleOffB[chan[c.chan].sample]+s->lengthB-1; @@ -716,6 +717,7 @@ int DivPlatformYM2608::dispatch(DivCommand c) { chan[c.chan].sample=12*sampleBank+c.value%12; if (chan[c.chan].sample>=0 && chan[c.chan].samplesong.sampleLen) { DivSample* s=parent->getSample(chan[c.chan].sample); + immWrite(0x100,0x01); // reset immWrite(0x102,(sampleOffB[chan[c.chan].sample]>>5)&0xff); immWrite(0x103,(sampleOffB[chan[c.chan].sample]>>13)&0xff); int end=sampleOffB[chan[c.chan].sample]+s->lengthB-1;