else spu.s_chan[ch].bRVBActive=0; // else -> no reverb\r
}\r
\r
-////////////////////////////////////////////////////////////////////////\r
-// HELPER FOR NEILL'S REVERB: re-inits our reverb mixing buf\r
-////////////////////////////////////////////////////////////////////////\r
-\r
-INLINE void InitREVERB(int ns_to)\r
-{\r
- memset(spu.sRVBStart,0,ns_to*sizeof(spu.sRVBStart[0])*2);\r
-}\r
-\r
////////////////////////////////////////////////////////////////////////\r
\r
INLINE int rvb2ram_offs(int curr, int space, int iOff)\r
////////////////////////////////////////////////////////////////////////\r
\r
// portions based on spu2-x from PCSX2\r
-static void MixREVERB(int ns_to)\r
+static void MixREVERB(int *SSumLR, int *RVB, int ns_to)\r
{\r
int l_old = rvb.iRVBLeft;\r
int r_old = rvb.iRVBRight;\r
int ACC0, ACC1, FB_A0, FB_A1, FB_B0, FB_B1;\r
int mix_dest_a0, mix_dest_a1, mix_dest_b0, mix_dest_b1;\r
\r
- int input_L = spu.sRVBStart[ns] * rvb.IN_COEF_L;\r
- int input_R = spu.sRVBStart[ns+1] * rvb.IN_COEF_R;\r
+ int input_L = RVB[ns] * rvb.IN_COEF_L;\r
+ int input_R = RVB[ns+1] * rvb.IN_COEF_R;\r
\r
int IIR_INPUT_A0 = ((g_buffer(IIR_SRC_A0) * rvb.IIR_COEF) + input_L) >> 15;\r
int IIR_INPUT_A1 = ((g_buffer(IIR_SRC_A1) * rvb.IIR_COEF) + input_R) >> 15;\r
rvb.CurrAddr = curr_addr;\r
}\r
\r
-static void MixREVERB_off(int ns_to)\r
+static void MixREVERB_off(int *SSumLR, int ns_to)\r
{\r
int l_old = rvb.iRVBLeft;\r
int r_old = rvb.iRVBRight;\r
rvb.dirty = 0;\r
}\r
\r
-INLINE void REVERBDo(int ns_to)\r
+INLINE void REVERBDo(int *SSumLR, int *RVB, int ns_to)\r
{\r
if (!rvb.StartAddr) // reverb is off\r
{\r
if (unlikely(rvb.dirty))\r
prepare_offsets();\r
\r
- MixREVERB(ns_to);\r
+ MixREVERB(SSumLR, RVB, ns_to);\r
}\r
else if (rvb.VolLeft || rvb.VolRight)\r
{\r
if (unlikely(rvb.dirty))\r
prepare_offsets();\r
\r
- MixREVERB_off(ns_to);\r
+ MixREVERB_off(SSumLR, ns_to);\r
}\r
else // -> reverb off\r
{\r