X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Flibgame%2Fsound.c;h=144dd1ad5dccc26ee07e419f34b81fb7cd168ece;hb=caed1f8c1a80db15b94da8a59bba3e95f7bd06db;hp=75634f1467f73b06c688f0ec11b796628308d34b;hpb=9231085da17abf4dfcd4938d4adc215e0a5f0647;p=rocksndiamonds.git diff --git a/src/libgame/sound.c b/src/libgame/sound.c index 75634f14..144dd1ad 100644 --- a/src/libgame/sound.c +++ b/src/libgame/sound.c @@ -401,11 +401,9 @@ void SoundServer(void) sample_size = max_sample_size; } -#if 0 /* expand sample from 8 to 16 bit */ for(j=0; j> PSND_MAX_VOLUME_BITS; /* fill the last mixing buffer with stereo or mono sound */ if (stereo) { - int middle_pos = PSND_MAX_LEFT2RIGHT/2; + int middle_pos = PSND_MAX_LEFT2RIGHT / 2; int left_volume = stereo_volume[middle_pos + playlist[i].stereo]; int right_volume= stereo_volume[middle_pos - playlist[i].stereo]; for(j=0; j> PSND_MAX_LEFT2RIGHT_BITS; premix_right_buffer[j] = - (right_volume * (int)premix_first_buffer[j]) + (right_volume * premix_second_buffer[j]) >> PSND_MAX_LEFT2RIGHT_BITS; premix_last_buffer[2 * j + 0] += premix_left_buffer[j]; @@ -442,7 +440,7 @@ void SoundServer(void) else { for(j=0; j 255) - playing_buffer[i] = 255; - else - playing_buffer[i] = (premix_last_buffer[i] >> 1) ^ 0x80; - } -#else for(i=0; i 255) - playing_buffer[i] = 127; + if (premix_last_buffer[i] < -65535) + playing_buffer[i] = -32767; + else if (premix_last_buffer[i] > 65535) + playing_buffer[i] = 32767; else - playing_buffer[i] = (premix_last_buffer[i] >> 1); - - playing_buffer[i] <<= 8; + playing_buffer[i] = (short)(premix_last_buffer[i] >> 1); } -#endif /* finally play the sound fragment */ write(audio.device_fd, playing_buffer, fragment_size);