#include "multivoc.h" #include "_multivc.h" void MV_16BitReverb( const char *src, char *dest, const VOLUME16 *volume, int count ) { int i; short *pdest = (short *)dest; for (i = 0; i < count; i++) { #if PLATFORM_BIGENDIAN int sl = src[i*2+1]; int sh = src[i*2+0] ^ 0x80; #else int sl = src[i*2+0]; int sh = src[i*2+1] ^ 0x80; #endif sl = (*volume)[sl] >> 8; sh = (*volume)[sh]; pdest[i] = (short)(sl + sh + 0x80); } } void MV_8BitReverb( const signed char *src, signed char *dest, const VOLUME16 *volume, int count ) { int i; for (i = 0; i < count; i++) { unsigned char s = (unsigned char) src[i]; s = (*volume)[s] & 0xff; dest[i] = (char)(s + 0x80); } } void MV_16BitReverbFast( const char *src, char *dest, int count, int shift ) { int i; short *pdest = (short *)dest; const short *psrc = (const short *)src; for (i = 0; i < count; i++) { pdest[i] = psrc[i] >> shift; } } void MV_8BitReverbFast( const signed char *src, signed char *dest, int count, int shift ) { int i; unsigned char sh = 0x80 - (0x80 >> shift); for (i = 0; i < count; i++) { unsigned char a = ((unsigned char) src[i]) >> shift; unsigned char c = (((unsigned char) src[i]) ^ 0x80) >> 7; dest[i] = (signed char) (a + sh + c); } }