diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/dfsound/spu.c | 5 |
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 |