ref: 71f19d8d1ff5b914ac3871d6f740aaff00db82aa
parent: c46136917cdb4af9df6c9b88cdacdbf5f5f4b899
author: James Haley <haleyjd@hotmail.com>
date: Sun Feb 20 17:46:22 EST 2011
Add'l commenting, removed gamemap == 8 hack left over from Doom 1 which isn't in Strife, and added a note about some horribly buggy code in the S_StartSound I_Error we're not bringing in (for now anyway). Subversion-branch: /branches/strife-branch Subversion-revision: 2271
--- a/src/strife/s_sound.c
+++ b/src/strife/s_sound.c
@@ -138,7 +138,7 @@
// Sets channels, SFX and music volume,
// allocates channel buffer, sets S_sfx lookup.
//
-// haleyjd 09/11/10: Added voice volume
+// haleyjd 09/11/10: [STRIFE] Added voice volume
//
void S_Init(int sfxVolume, int musicVolume, int voiceVolume)
{
@@ -342,7 +342,11 @@
// If the sound is not audible, returns a 0.
// Otherwise, modifies parameters and returns 1.
//
-
+// [STRIFE]
+// haleyjd 20110220: changed to eliminate the gamemap == 8 hack that was
+// left over from Doom 1's original boss levels. Kind of amazing that Rogue
+// was able to catch the smallest things like that.
+//
static int S_AdjustSoundParams(mobj_t *listener, mobj_t *source,
int *vol, int *sep)
{
@@ -359,7 +363,8 @@
// From _GG1_ p.428. Appox. eucledian distance fast.
approx_dist = adx + ady - ((adx < ady ? adx : ady)>>1);
- if (gamemap != 8 && approx_dist > S_CLIPPING_DIST)
+ // [STRIFE] removed gamemap == 8 hack
+ if (approx_dist > S_CLIPPING_DIST)
{
return 0;
}
@@ -385,21 +390,11 @@
*sep = 128 - (FixedMul(S_STEREO_SWING, finesine[angle]) >> FRACBITS);
// volume calculation
+ // [STRIFE] Removed gamemap == 8 hack
if (approx_dist < S_CLOSE_DIST)
{
*vol = snd_SfxVolume;
}
- else if (gamemap == 8)
- {
- if (approx_dist > S_CLIPPING_DIST)
- {
- approx_dist = S_CLIPPING_DIST;
- }
-
- *vol = 15+ ((snd_SfxVolume-15)
- *((S_CLIPPING_DIST - approx_dist)>>FRACBITS))
- / S_ATTENUATOR;
- }
else
{
// distance effect
@@ -427,6 +422,10 @@
// check for bogus sound #
if (sfx_id < 1 || sfx_id > NUMSFX)
{
+ // [STRIFE]: BUG - Note: vanilla had some extremely buggy and dangerous
+ // code here that tried to print the sprite name of the object playing
+ // the bad sound. Because it invokes multiple undefined behaviors and
+ // is of basically no consequence, it has deliberately not been ported.
I_Error("Bad sfx #: %d", sfx_id);
}
@@ -479,7 +478,7 @@
sep = NORM_SEP;
}
- // kill old sound
+ // kill old sound [STRIFE] - nope!
//S_StopSound(origin);
// try to find a channel