When playing on level 8, sound effects are not cut off. As the boss levels in Doom all occur on level 8, it is possible that this behavior was intended so that the player could always hear the boss monster from any distance.

As an additional effect, if the sfx volume is decreased to zero, sound effects still play, but very quietly. In this scenario, the effect of distance on volume is reversed. Close sound effects are quiet while sound effects at a distance are loud.

This code calculates the distance of the sound from the player. If the sound is greater than the clipping distance (1,200 units), the function returns and the sound does not play. However, a specific test is made to see if the current level is level 8. If so, there is no distance cutoff.

This is the code which decreases the volume of sound effects with distance. A different calculation is used here for level 8. A value of 15 is always added to the volume, so that it is always above zero.

Examination of the released Doom source code can be misleading because of a change made to the sound code before the source release. In vanilla Doom, there are two variables which hold the sound effect volume. One of these is named "sfxVolume", and has a range of 0-15. This is the value stored in the configuration file and controlled via the sound volume screen.

The second variable is internal to the sound subsystem (snd_SfxVolume in the above code fragment). Unlike sfxVolume this has a range of 0–127. The menu updates this internal variable by calling S_SetSfxVolume to inform the sound subsystem of volume changes. Before the source code release, the two variables were combined into a single variable named snd_SfxVolume, having a range of 0–15.

The result of this is that the sound code from the source release behaves differently on level 8. If the volume setting is at maximum (15), then all sound effects play at maximum volume regardless of distance from the player. Secondly, the reversed volume effect occurs at any volume setting below this.

Remnants of this change are scattered throughout the source release. The following is from m_menu.c:

S_SetSfxVolume(snd_SfxVolume /* *8 */);

The commented-out multiply-by-8 was needed in vanilla Doom to convert from the 0–15 to 0–127 range, but after the two variables were merged, became useless. S_SetSfxVolume itself still checks values are in the range 0–127, although it should be noted that the function essentially became pointless after the change.