From 146c8b228b6ec98cda3b4f3a8f8f1e15517cee64 Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Thu, 25 Oct 2018 22:53:58 -0400 Subject: [PATCH] - Reduce volume reduction - Don't apply to sounds without an origin mobj --- src/s_sound.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/s_sound.c b/src/s_sound.c index 91d85746..8f2e4a35 100644 --- a/src/s_sound.c +++ b/src/s_sound.c @@ -530,7 +530,9 @@ void S_StartSoundAtVolume(const void *origin_p, sfxenum_t sfx_id, INT32 volume) // Initialize sound parameters pitch = NORM_PITCH; priority = NORM_PRIORITY; - volume /= (splitscreen+1); + + if (origin) + volume = FixedDiv(volume<>FRACBITS; if (splitscreen && listenmobj2) // Copy the sound for the split player { @@ -1008,10 +1010,13 @@ void S_UpdateSounds(void) if (I_SoundIsPlaying(c->handle)) { // initialize parameters - volume = 255/(splitscreen+1); // 8 bits internal volume precision + volume = 255; // 8 bits internal volume precision pitch = NORM_PITCH; sep = NORM_SEP; + if (c->origin) + volume = FixedDiv(volume<>FRACBITS; + // check non-local sounds for distance clipping // or modify their params if (c->origin && ((c->origin != players[consoleplayer].mo) @@ -1326,7 +1331,7 @@ INT32 S_AdjustSoundParams(const mobj_t *listener, const mobj_t *source, INT32 *v *vol = (15 * ((S_CLIPPING_DIST - approx_dist)>>FRACBITS)) / S_ATTENUATOR; } - *vol /= (splitscreen+1); + *vol = FixedDiv((*vol)<>FRACBITS; return (*vol > 0); }