X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=plugins%2Fdfsound%2Fspu.c;h=ecc7ca0229f5f4a96f3806155a4c0d12446afa72;hb=8cd23d6dc354bd82c9ba3fa6362c8e9fb0b50f7d;hp=d7dc1b6441fb60587fcd55a0df11701ce36b1ed6;hpb=76d1d09c1224af8d663ce63dc5b32425bd62cb29;p=pcsx_rearmed.git diff --git a/plugins/dfsound/spu.c b/plugins/dfsound/spu.c index d7dc1b64..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 \ @@ -904,12 +904,14 @@ static void *MAINThread(void *arg) // SPU ASYNC... even newer epsxe func // 1 time every 'cycle' cycles... harhar +// rearmed: called every 2ms now + void CALLBACK SPUasync(unsigned long cycle) { if(iSpuAsyncWait) { iSpuAsyncWait++; - if(iSpuAsyncWait<=16/FRAG_MSECS) return; + if(iSpuAsyncWait<=16/2) return; iSpuAsyncWait=0; }