SegaPCM: fix sample offset moving loop

issue #2306
This commit is contained in:
tildearrow 2024-12-29 16:53:19 -05:00
parent 1b3a3c457d
commit 5ffd47ed7b

View file

@ -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));