aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/dfsound/spu.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/plugins/dfsound/spu.c b/plugins/dfsound/spu.c
index a190b29..b89ab1a 100644
--- a/plugins/dfsound/spu.c
+++ b/plugins/dfsound/spu.c
@@ -671,12 +671,13 @@ static void noinline do_decode_bufs(int which, int start, int count)
{
const int *src = ChanBuf + start;
unsigned short *dst = &spuMem[0x800/2 + which*0x400/2];
- int cursor = decode_pos;
+ int cursor = decode_pos + start;
while (count-- > 0)
{
+ cursor &= 0x1ff;
dst[cursor] = *src++;
- cursor = (cursor + 1) & 0x1ff;
+ cursor++;
}
// decode_pos is updated and irqs are checked later, after voice loop