From 5ffd47ed7b9fb80733ae99ade7949ee7bf618c67 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 29 Dec 2024 16:53:19 -0500 Subject: [PATCH] SegaPCM: fix sample offset moving loop issue #2306 --- src/engine/platform/segapcm.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/segapcm.cpp b/src/engine/platform/segapcm.cpp index 381736ffd..3c21d3a77 100644 --- a/src/engine/platform/segapcm.cpp +++ b/src/engine/platform/segapcm.cpp @@ -146,7 +146,7 @@ void DivPlatformSegaPCM::tick(bool sysTick) { if (!s->isLoopable()) { rWrite(0x86+(i<<3),2+((actualPos>>16)<<3)); } else { - int loopPos=(actualPos&0xffff)+loopStart; + int loopPos=(sampleOffSegaPCM[chan[i].pcm.sample]&0xffff)+loopStart; logV("sampleOff: %x loopPos: %x",actualPos,loopPos); rWrite(4+(i<<3),loopPos&0xff); rWrite(5+(i<<3),(loopPos>>8)&0xff); @@ -165,7 +165,7 @@ void DivPlatformSegaPCM::tick(bool sysTick) { if (!s->isLoopable()) { rWrite(0x86+(i<<3),2+((actualPos>>16)<<3)); } else { - int loopPos=(actualPos&0xffff)+loopStart; + int loopPos=(sampleOffSegaPCM[chan[i].pcm.sample]&0xffff)+loopStart; rWrite(4+(i<<3),loopPos&0xff); rWrite(5+(i<<3),(loopPos>>8)&0xff); rWrite(0x86+(i<<3),((actualPos>>16)<<3));