X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_em%2Fulaw_generate.c;h=8f0d7b06454c5a8452dbbdd8b7ac3167a52724c0;hb=12a92e1aa977ccfcc6223eaabc92d6c3ca84e2ff;hp=05ab83e989cde14b74e2a3c32cb66e37112f4653;hpb=c405cf118d3d31c2b6e1fe935671ecdaeb031f8f;p=rocksndiamonds.git diff --git a/src/game_em/ulaw_generate.c b/src/game_em/ulaw_generate.c index 05ab83e9..8f0d7b06 100644 --- a/src/game_em/ulaw_generate.c +++ b/src/game_em/ulaw_generate.c @@ -18,45 +18,6 @@ unsigned char calc_linear_to_ulaw(int); int buffer[65536]; -#if 0 - -void print_buffer(int *buffer, int count) -{ - int i,j; - j = 0; - for(i = 0; i < count;) { - if(j > 80) { j=0; printf("\n"); } - if(j == 0) printf("\t"); - j += printf("%d", buffer[i]); - j += printf("%s", ++i == count ? "" : ","); - } - if(j) printf("\n"); -} -int main_OLD(void) -{ - int i; - printf("/* THIS FILE AUTOMATICALLY GENERATED */\n"); - printf("\n#if defined(LINUX) || defined(BSD)\n"); - printf("\n/* convert from 8 bit ulaw to signed 16 bit linear */\n"); - printf("const short ulaw_to_linear[256] = {\n"); - for(i = 0; i < 256; i++) { - buffer[i] = calc_ulaw_to_linear(i); - } - print_buffer(buffer, 256); - printf("};\n"); - printf("\n/* convert from signed 16 bit linear to 8 bit ulaw */\n"); - printf("const unsigned char linear_to_ulaw[65536] = {\n"); - for(i = -32768; i < 32768; i++) { - buffer[i + 32768] = calc_linear_to_ulaw(i); - } - print_buffer(buffer, 65536); - printf("};\n"); - printf("\n#endif /* defined(LINUX) || defined(BSD) */\n"); - return(0); -} - -#endif - /* convert from 8 bit ulaw to signed 16 bit linear */ short ulaw_to_linear[256]; @@ -92,18 +53,18 @@ void ulaw_generate() int calc_ulaw_to_linear(unsigned char ulawbyte) { - static int exp_lut[8] = { 0, 132, 396, 924, 1980, 4092, 8316, 16764 }; - int sign, exponent, mantissa, sample; - - ulawbyte = ~ ulawbyte; - sign = ( ulawbyte & 0x80 ); - exponent = ( ulawbyte >> 4 ) & 0x07; - mantissa = ulawbyte & 0x0F; - sample = exp_lut[exponent] + ( mantissa << ( exponent + 3 ) ); - if (sign != 0) - sample = -sample; - - return(sample); + static int exp_lut[8] = { 0, 132, 396, 924, 1980, 4092, 8316, 16764 }; + int sign, exponent, mantissa, sample; + + ulawbyte = ~ ulawbyte; + sign = ( ulawbyte & 0x80 ); + exponent = ( ulawbyte >> 4 ) & 0x07; + mantissa = ulawbyte & 0x0F; + sample = exp_lut[exponent] + ( mantissa << ( exponent + 3 ) ); + if (sign != 0) + sample = -sample; + + return(sample); } /* @@ -133,47 +94,47 @@ int calc_ulaw_to_linear(unsigned char ulawbyte) unsigned char calc_linear_to_ulaw(int sample) { - static int exp_lut[256] = - { - 0,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7 - }; - - int sign, exponent, mantissa; - unsigned char ulawbyte; + static int exp_lut[256] = + { + 0,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7 + }; + + int sign, exponent, mantissa; + unsigned char ulawbyte; /* Get the sample into sign-magnitude. */ - sign = (sample >> 8) & 0x80; /* set aside the sign */ - if (sign != 0) - sample = -sample; /* get magnitude */ - if (sample > CLIP) - sample = CLIP; /* clip the magnitude */ + sign = (sample >> 8) & 0x80; /* set aside the sign */ + if (sign != 0) + sample = -sample; /* get magnitude */ + if (sample > CLIP) + sample = CLIP; /* clip the magnitude */ /* Convert from 16 bit linear to ulaw. */ - sample = sample + BIAS; - exponent = exp_lut[( sample >> 7 ) & 0xFF]; - mantissa = ( sample >> ( exponent + 3 ) ) & 0x0F; - ulawbyte = ~ ( sign | ( exponent << 4 ) | mantissa ); + sample = sample + BIAS; + exponent = exp_lut[( sample >> 7 ) & 0xFF]; + mantissa = ( sample >> ( exponent + 3 ) ) & 0x0F; + ulawbyte = ~ ( sign | ( exponent << 4 ) | mantissa ); #ifdef ZEROTRAP - if (ulawbyte == 0) - ulawbyte = 0x02; /* optional CCITT trap */ + if (ulawbyte == 0) + ulawbyte = 0x02; /* optional CCITT trap */ #endif - return(ulawbyte); + return(ulawbyte); } #endif /* defined(PLATFORM_LINUX) || defined(PLATFORM_BSD) */