aboutsummaryrefslogtreecommitdiff
path: root/plugins/dfsound/spu.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/dfsound/spu.c')
-rw-r--r--plugins/dfsound/spu.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/plugins/dfsound/spu.c b/plugins/dfsound/spu.c
index f5edd3a..ec31b0c 100644
--- a/plugins/dfsound/spu.c
+++ b/plugins/dfsound/spu.c
@@ -595,24 +595,26 @@ make_do_samples(simple, , ,
static int do_samples_skip(int ch, int ns_to)
{
SPUCHAN *s_chan = &spu.s_chan[ch];
+ int spos = s_chan->spos;
+ int sinc = s_chan->sinc;
int ret = ns_to, ns, d;
- s_chan->spos += s_chan->iSBPos << 16;
+ spos += s_chan->iSBPos << 16;
for (ns = 0; ns < ns_to; ns++)
{
- s_chan->spos += s_chan->sinc;
- while (s_chan->spos >= 28*0x10000)
+ spos += sinc;
+ while (spos >= 28*0x10000)
{
d = skip_block(ch);
if (d && ns < ret)
ret = ns;
- s_chan->spos -= 28*0x10000;
+ spos -= 28*0x10000;
}
}
- s_chan->iSBPos = s_chan->spos >> 16;
- s_chan->spos &= 0xffff;
+ s_chan->iSBPos = spos >> 16;
+ s_chan->spos = spos & 0xffff;
return ret;
}