The music code was a freaking mess because it had different methods for digital and MIDI playback; redundant variables; and unclear separation for loading, playing, stopping, and unloading.
This is all internal plumbing, no user-facing changes (other than small sound menu tweaks.) Nothing that affects netsync because audio is not shared.
nomidimusic nodigimusic nosound
are merged into the existing variables midi_disabled digital_disabled sound_disabled
S_Init
into S_InitSfxChannels
S_ChangeMusic
calls both)I_PlayDigSong
= I_LoadSong
and I_PlaySong
.I_StopDigSong
= I_UnloadSong
and I_StopSong
.I_SongType
- Returns format of musicI_SongPlaying
I_SongPaused
s_sound
helper functions
S_DigMusicDisabled
, S_MIDIMusicDisabled
, S_MusicDisabled
S_MusicPlaying
, S_MusicPaused
, S_MusicType
S_MusicInfo
- Returns current name, flags, and loopingS_MusicExists
- Checks wadfiles for existing music namesdl_sound.c
because it's never invoked.
NOMIXER=1
. The music code is hidden under #ifdef HAVE_MIXER
, and so that build never plays music.The only things that remain separate between digital/MIDI is toggling and volume. The Win32 MIDI volume hack is still in effect.
I conformed the other targets (DOS, DirectX/FMOD, Dummy, etc.) as best as I could. DirectX and NOMIXER=1
both build. Some targets have been unchanged because they're removed from 2.2 (like XBOX.)