From 400bbe91092e74b708ca596ae071431999070345 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 28 Aug 2024 06:05:35 -0500 Subject: [PATCH] NES: DPCM loop fix... pull request #2119 --- src/engine/platform/nes.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/engine/platform/nes.cpp b/src/engine/platform/nes.cpp index 67fdbc11e..bb6f2e8b9 100644 --- a/src/engine/platform/nes.cpp +++ b/src/engine/platform/nes.cpp @@ -436,7 +436,7 @@ void DivPlatformNES::tick(bool sysTick) { // https://www.youtube.com/watch?v=vB4P8x2Am6Y if (lsamp->loopEnd>lsamp->loopStart && goingToLoop) { - int loopStartAddr=(sampleOffDPCM[dacSample]+lsamp->loopStart)>>3; + int loopStartAddr=sampleOffDPCM[dacSample]+(lsamp->loopStart>>3); int loopLen=(lsamp->loopEnd-lsamp->loopStart)>>3; rWrite(0x4012,(loopStartAddr>>6)&0xff); @@ -492,14 +492,14 @@ int DivPlatformNES::dispatch(DivCommand c) { } } if (c.value!=DIV_NOTE_NULL) { - dacSample=ins->amiga.getSample(c.value); + dacSample=(int)ins->amiga.getSample(c.value); if (ins->type==DIV_INS_AMIGA) { chan[c.chan].sampleNote=c.value; c.value=ins->amiga.getFreq(c.value); chan[c.chan].sampleNoteDelta=c.value-chan[c.chan].sampleNote; } } else if (chan[c.chan].sampleNote!=DIV_NOTE_NULL) { - dacSample=ins->amiga.getSample(chan[c.chan].sampleNote); + dacSample=(int)ins->amiga.getSample(chan[c.chan].sampleNote); if (ins->type==DIV_INS_AMIGA) { c.value=ins->amiga.getFreq(chan[c.chan].sampleNote); }