From: notaz Date: Sun, 9 Oct 2011 22:35:15 +0000 (+0300) Subject: spu: fix gaussian interpolation X-Git-Tag: r10~1 X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8cd23d6dc354bd82c9ba3fa6362c8e9fb0b50f7d;p=pcsx_rearmed.git spu: fix gaussian interpolation --- diff --git a/plugins/dfsound/spu.c b/plugins/dfsound/spu.c index df95f35d..ecc7ca02 100644 --- a/plugins/dfsound/spu.c +++ b/plugins/dfsound/spu.c @@ -339,7 +339,7 @@ INLINE void StoreInterpolationVal(int ch,int fa) //////////////////////////////////////////////////////////////////////// -INLINE int iGetInterpolationVal(int ch) +INLINE int iGetInterpolationVal(int ch, int spos) { int fa; @@ -351,7 +351,7 @@ INLINE int iGetInterpolationVal(int ch) case 3: // cubic interpolation { long xd;int gpos; - xd = ((s_chan[ch].spos) >> 1)+1; + xd = (spos >> 1)+1; gpos = s_chan[ch].SB[28]; fa = gval(3) - 3*gval(2) + 3*gval(1) - gval0; @@ -370,7 +370,7 @@ INLINE int iGetInterpolationVal(int ch) case 2: // gauss interpolation { int vl, vr;int gpos; - vl = (s_chan[ch].spos >> 6) & ~3; + vl = (spos >> 6) & ~3; gpos = s_chan[ch].SB[28]; vr=(gauss[vl]*gval0)&~2047; vr+=(gauss[vl+1]*gval(1))&~2047; @@ -570,7 +570,7 @@ out: \ make_do_samples(default, fmod_recv_check, , StoreInterpolationVal(ch, fa), - ChanBuf[ns] = iGetInterpolationVal(ch), ) + ChanBuf[ns] = iGetInterpolationVal(ch, spos), ) make_do_samples(noint, , fa = s_chan[ch].SB[29], , ChanBuf[ns] = fa, s_chan[ch].SB[29] = fa) #define simple_interp_store \