X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=plugins%2Fdfsound%2Fxa.c;h=bfebe3e549fa5d615b3d3fe94cb853b982caaec4;hb=636462080c6b984993d7427b5d7688a362e45c2f;hp=124138084f64d2f002e7d2659b82ef8a896e284d;hpb=215ff9e69c0b845f24e7a3aa9faeef06d9276145;p=pcsx_rearmed.git diff --git a/plugins/dfsound/xa.c b/plugins/dfsound/xa.c index 12413808..bfebe3e5 100644 --- a/plugins/dfsound/xa.c +++ b/plugins/dfsound/xa.c @@ -38,7 +38,7 @@ static int gauss_window[8] = {0, 0, 0, 0, 0, 0, 0, 0}; // MIX XA & CDDA //////////////////////////////////////////////////////////////////////// -INLINE void MixXA(int ns_to, int decode_pos) +INLINE void MixXA(int *SSumLR, int ns_to, int decode_pos) { int cursor = decode_pos; int ns; @@ -90,7 +90,9 @@ INLINE void MixXA(int ns_to, int decode_pos) static unsigned long timeGetTime_spu() { -#ifdef _WIN32 +#if defined(NO_OS) + return 0; +#elif defined(_WIN32) return GetTickCount(); #else struct timeval tv; @@ -187,16 +189,16 @@ INLINE void FeedXA(xa_decode_t *xap) spos -= 0x10000L; } vl = (spos >> 6) & ~3; - vr=(gauss[vl]*gvall0)&~2047; - vr+=(gauss[vl+1]*gvall(1))&~2047; - vr+=(gauss[vl+2]*gvall(2))&~2047; - vr+=(gauss[vl+3]*gvall(3))&~2047; - l= (vr >> 11) & 0xffff; - vr=(gauss[vl]*gvalr0)&~2047; - vr+=(gauss[vl+1]*gvalr(1))&~2047; - vr+=(gauss[vl+2]*gvalr(2))&~2047; - vr+=(gauss[vl+3]*gvalr(3))&~2047; - l |= vr << 5; + vr=(gauss[vl]*gvall0) >> 15; + vr+=(gauss[vl+1]*gvall(1)) >> 15; + vr+=(gauss[vl+2]*gvall(2)) >> 15; + vr+=(gauss[vl+3]*gvall(3)) >> 15; + l= vr & 0xffff; + vr=(gauss[vl]*gvalr0) >> 15; + vr+=(gauss[vl+1]*gvalr(1)) >> 15; + vr+=(gauss[vl+2]*gvalr(2)) >> 15; + vr+=(gauss[vl+3]*gvalr(3)) >> 15; + l |= vr << 16; } else { @@ -244,16 +246,16 @@ INLINE void FeedXA(xa_decode_t *xap) spos -= 0x10000L; } vl = (spos >> 6) & ~3; - vr=(gauss[vl]*gvall0)&~2047; - vr+=(gauss[vl+1]*gvall(1))&~2047; - vr+=(gauss[vl+2]*gvall(2))&~2047; - vr+=(gauss[vl+3]*gvall(3))&~2047; - l= (vr >> 11) & 0xffff; - vr=(gauss[vl]*gvalr0)&~2047; - vr+=(gauss[vl+1]*gvalr(1))&~2047; - vr+=(gauss[vl+2]*gvalr(2))&~2047; - vr+=(gauss[vl+3]*gvalr(3))&~2047; - l |= vr << 5; + vr=(gauss[vl]*gvall0) >> 15; + vr+=(gauss[vl+1]*gvall(1)) >> 15; + vr+=(gauss[vl+2]*gvall(2)) >> 15; + vr+=(gauss[vl+3]*gvall(3)) >> 15; + l= vr & 0xffff; + vr=(gauss[vl]*gvalr0) >> 15; + vr+=(gauss[vl+1]*gvalr(1)) >> 15; + vr+=(gauss[vl+2]*gvalr(2)) >> 15; + vr+=(gauss[vl+3]*gvalr(3)) >> 15; + l |= vr << 16; } else { @@ -296,11 +298,11 @@ INLINE void FeedXA(xa_decode_t *xap) spos -= 0x10000L; } vl = (spos >> 6) & ~3; - vr=(gauss[vl]*gvall0)&~2047; - vr+=(gauss[vl+1]*gvall(1))&~2047; - vr+=(gauss[vl+2]*gvall(2))&~2047; - vr+=(gauss[vl+3]*gvall(3))&~2047; - l1=s= vr >> 11; + vr=(gauss[vl]*gvall0) >> 15; + vr+=(gauss[vl+1]*gvall(1)) >> 15; + vr+=(gauss[vl+2]*gvall(2)) >> 15; + vr+=(gauss[vl+3]*gvall(3)) >> 15; + l1=s= vr; l1 &= 0xffff; } else @@ -341,11 +343,11 @@ INLINE void FeedXA(xa_decode_t *xap) spos -= 0x10000L; } vl = (spos >> 6) & ~3; - vr=(gauss[vl]*gvall0)&~2047; - vr+=(gauss[vl+1]*gvall(1))&~2047; - vr+=(gauss[vl+2]*gvall(2))&~2047; - vr+=(gauss[vl+3]*gvall(3))&~2047; - l=s= vr >> 11; + vr=(gauss[vl]*gvall0) >> 15; + vr+=(gauss[vl+1]*gvall(1)) >> 15; + vr+=(gauss[vl+2]*gvall(2)) >> 15; + vr+=(gauss[vl+3]*gvall(3)) >> 15; + l=s= vr; } else {