aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornotaz2011-10-10 01:35:15 +0300
committernotaz2011-10-10 01:52:52 +0300
commit8cd23d6dc354bd82c9ba3fa6362c8e9fb0b50f7d (patch)
tree91254d2eb15fb79e35e26db310071cfb24e0a4c8
parentfb005d8711c6bb5eef8bf200a67e4e6503dd7d79 (diff)
downloadpcsx_rearmed-8cd23d6dc354bd82c9ba3fa6362c8e9fb0b50f7d.tar.gz
pcsx_rearmed-8cd23d6dc354bd82c9ba3fa6362c8e9fb0b50f7d.tar.bz2
pcsx_rearmed-8cd23d6dc354bd82c9ba3fa6362c8e9fb0b50f7d.zip
spu: fix gaussian interpolation
-rw-r--r--plugins/dfsound/spu.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/plugins/dfsound/spu.c b/plugins/dfsound/spu.c
index df95f35..ecc7ca0 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 \