diff --git a/source/blood/src/blood.cpp b/source/blood/src/blood.cpp index 675b9003d..3ae6eb9a5 100644 --- a/source/blood/src/blood.cpp +++ b/source/blood/src/blood.cpp @@ -947,7 +947,7 @@ void ProcessFrame(void) } if (gDemo.at0) gDemo.Close(); - sndFadeSong(4000); + Mus_Fade(4000); seqKillAll(); if (gGameOptions.uGameFlags&2) { @@ -1367,7 +1367,7 @@ RESTART: if (gRestartGame) { UpdateDacs(0, true); - sndStopSong(); + Mus_Stop(); FX_StopAllSounds(); gQuitGame = 0; gQuitRequest = 0; @@ -1991,27 +1991,18 @@ int sndTryPlaySpecialMusic(int nMusic) { int nEpisode = nMusic/kMaxLevels; int nLevel = nMusic%kMaxLevels; - if (sndPlaySong(gEpisodeInfo[nEpisode].at28[nLevel].at0, gEpisodeInfo[nEpisode].at28[nLevel].atd0, true)) + if (Mus_Play(gEpisodeInfo[nEpisode].at28[nLevel].at0, gEpisodeInfo[nEpisode].at28[nLevel].atd0, true)) { - strncpy(gGameOptions.zLevelSong, gEpisodeInfo[nEpisode].at28[nLevel].atd0, BMAX_PATH); return 0; } - else - { - // Unable to stat the music. - *gGameOptions.zLevelSong = 0; - } return 1; } void sndPlaySpecialMusicOrNothing(int nMusic) { - int nEpisode = nMusic/kMaxLevels; - int nLevel = nMusic%kMaxLevels; if (sndTryPlaySpecialMusic(nMusic)) { - sndStopSong(); - strncpy(gGameOptions.zLevelSong, gEpisodeInfo[nEpisode].at28[nLevel].atd0, BMAX_PATH); + Mus_Stop(); } } diff --git a/source/blood/src/credits.cpp b/source/blood/src/credits.cpp index f6f1dbc23..45c2157a2 100644 --- a/source/blood/src/credits.cpp +++ b/source/blood/src/credits.cpp @@ -140,7 +140,7 @@ void credLogosDos(void) rotatesprite(160<<16, 100<<16, 65536, 0, 2518, 0, 0, 0x4a, 0, 0, xdim-1, ydim-1); scrNextPage(); Wait(360); - sndFadeSong(4000); + Mus_Fade(4000); } void credReset(void) diff --git a/source/blood/src/demo.cpp b/source/blood/src/demo.cpp index f83043659..596ac9bc9 100644 --- a/source/blood/src/demo.cpp +++ b/source/blood/src/demo.cpp @@ -61,7 +61,6 @@ void ReadGameOptionsLegacy(GAMEOPTIONS &gameOptions, GAMEOPTIONSLEGACY &gameOpti gameOptions.nEpisode = gameOptionsLegacy.nEpisode; gameOptions.nLevel = gameOptionsLegacy.nLevel; strcpy(gameOptions.zLevelName, gameOptionsLegacy.zLevelName); - strcpy(gameOptions.zLevelSong, gameOptionsLegacy.zLevelSong); gameOptions.nTrackNumber = gameOptionsLegacy.nTrackNumber; gameOptions.nSaveGameSlot = gameOptionsLegacy.nSaveGameSlot; gameOptions.picEntry = gameOptionsLegacy.picEntry; diff --git a/source/blood/src/levels.cpp b/source/blood/src/levels.cpp index f40f9d1fb..0ca5672f6 100644 --- a/source/blood/src/levels.cpp +++ b/source/blood/src/levels.cpp @@ -50,7 +50,7 @@ BEGIN_BLD_NS GAMEOPTIONS gGameOptions; GAMEOPTIONS gSingleGameOptions = { - 0, 2, 0, 0, "", "", 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 3600, 1800, 1800, 7200 + 0, 2, 0, 0, "", 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 3600, 1800, 1800, 7200 }; EPISODEINFO gEpisodeInfo[kMaxEpisodes+1]; @@ -88,7 +88,7 @@ void levelOverrideINI(const char *pzIni) void levelPlayIntroScene(int nEpisode) { gGameOptions.uGameFlags &= ~4; - sndStopSong(); + Mus_Stop(); sndKillAllSounds(); sfxKillAllSounds(); ambKillAll(); @@ -104,7 +104,7 @@ void levelPlayIntroScene(int nEpisode) void levelPlayEndScene(int nEpisode) { gGameOptions.uGameFlags &= ~8; - sndStopSong(); + Mus_Stop(); sndKillAllSounds(); sfxKillAllSounds(); ambKillAll(); @@ -199,7 +199,6 @@ void levelSetupOptions(int nEpisode, int nLevel) gGameOptions.nLevel = nLevel; strcpy(gGameOptions.zLevelName, gEpisodeInfo[nEpisode].at28[nLevel].at0); gGameOptions.uMapCRC = dbReadMapCRC(gGameOptions.zLevelName); - // strcpy(gGameOptions.zLevelSong, gEpisodeInfo[nEpisode].at28[nLevel].atd0); gGameOptions.nTrackNumber = gEpisodeInfo[nEpisode].at28[nLevel].ate0; } @@ -401,19 +400,17 @@ bool levelTryPlayMusic(int nEpisode, int nLevel, bool bSetLevelSong) if (mus_redbook && gEpisodeInfo[nEpisode].at28[nLevel].ate0 > 0) snprintf(buffer, BMAX_PATH, "blood%02i.ogg", gEpisodeInfo[nEpisode].at28[nLevel].ate0); else + { strncpy(buffer, gEpisodeInfo[nEpisode].at28[nLevel].atd0, BMAX_PATH); + } if (!strchr(buffer, '.')) strcat(buffer, ".mid"); - bool bReturn = !!sndPlaySong(gEpisodeInfo[nEpisode].at28[nLevel].at0, buffer, true); - if (bReturn || bSetLevelSong) - strncpy(gGameOptions.zLevelSong, buffer, BMAX_PATH); - else *gGameOptions.zLevelSong = 0; - return bReturn; + return !!Mus_Play(gEpisodeInfo[nEpisode].at28[nLevel].at0, buffer, true); } void levelTryPlayMusicOrNothing(int nEpisode, int nLevel) { if (levelTryPlayMusic(nEpisode, nLevel, true)) - sndStopSong(); + Mus_Stop(); } class LevelsLoadSave : public LoadSave diff --git a/source/blood/src/levels.h b/source/blood/src/levels.h index dc526e444..eb4223f9b 100644 --- a/source/blood/src/levels.h +++ b/source/blood/src/levels.h @@ -39,7 +39,6 @@ struct GAMEOPTIONS { int nEpisode; int nLevel; char zLevelName[BMAX_PATH]; - char zLevelSong[BMAX_PATH]; int nTrackNumber; //at12a; short nSaveGameSlot; int picEntry; diff --git a/source/blood/src/loadsave.cpp b/source/blood/src/loadsave.cpp index 9dc5c35e9..ae636805e 100644 --- a/source/blood/src/loadsave.cpp +++ b/source/blood/src/loadsave.cpp @@ -180,7 +180,6 @@ bool GameInterface::LoadGame(FSaveGameNode* node) MUS_ResumeSaved(); netBroadcastPlayerInfo(myconnectindex); - //sndPlaySong(gGameOptions.zLevelSong, 1); return true; } diff --git a/source/blood/src/menu.cpp b/source/blood/src/menu.cpp index de220ffd4..ef66e2a5d 100644 --- a/source/blood/src/menu.cpp +++ b/source/blood/src/menu.cpp @@ -152,7 +152,7 @@ void SetupNetworkJoinMenu(CGameMenuItemChain *pItem) void NetworkHostGame(CGameMenuItemChain *pItem) { UNREFERENCED_PARAMETER(pItem); - sndStopSong(); + Mus_Stop(); FX_StopAllSounds(); UpdateDacs(0, true); gNetPlayers = itemNetworkHostPlayerNum.nValue; @@ -168,7 +168,7 @@ void NetworkHostGame(CGameMenuItemChain *pItem) void NetworkJoinGame(CGameMenuItemChain *pItem) { UNREFERENCED_PARAMETER(pItem); - sndStopSong(); + Mus_Stop(); FX_StopAllSounds(); UpdateDacs(0, true); strcpy(gNetAddress, zNetAddressBuffer); diff --git a/source/blood/src/sound.cpp b/source/blood/src/sound.cpp index dc1f87dcc..c844d5e3a 100644 --- a/source/blood/src/sound.cpp +++ b/source/blood/src/sound.cpp @@ -75,27 +75,6 @@ SAMPLE2D * FindChannel(void) return NULL; } -int sndPlaySong(const char *mapname, const char* songName, bool bLoop) -{ - return Mus_Play(mapname, songName, bLoop); -} - -bool sndIsSongPlaying(void) -{ - // Not used - return false; -} - -void sndFadeSong(int nTime) -{ - // not implemented -} - -void sndStopSong(void) -{ - Mus_Stop(); -} - void sndSetFXVolume(int nVolume) { snd_fxvolume = nVolume; @@ -307,7 +286,7 @@ void sndTerm(void) if (!sndActive) return; sndActive = false; - sndStopSong(); + Mus_Stop(); DeinitSoundDevice(); //DeinitMusicDevice(); } diff --git a/source/blood/src/sound.h b/source/blood/src/sound.h index 44b101e29..ccc31501e 100644 --- a/source/blood/src/sound.h +++ b/source/blood/src/sound.h @@ -23,6 +23,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #pragma once #include "resource.h" +#include "z_music.h" BEGIN_BLD_NS @@ -44,12 +45,7 @@ struct SFX }; int sndGetRate(int format); -int sndPlaySong(const char *mapname, const char *songName, bool bLoop); -bool sndIsSongPlaying(void); -void sndFadeSong(int nTime); -void sndSetMusicVolume(int nVolume); void sndSetFXVolume(int nVolume); -void sndStopSong(void); void sndStartSample(const char *pzSound, int nVolume, int nChannel = -1); void sndStartSample(unsigned int nSound, int nVolume, int nChannel = -1, bool bLoop = false); void sndStartWavID(unsigned int nSound, int nVolume, int nChannel = -1); diff --git a/source/common/music/music.cpp b/source/common/music/music.cpp index 5b9540ad9..30d36cc5b 100644 --- a/source/common/music/music.cpp +++ b/source/common/music/music.cpp @@ -609,6 +609,12 @@ void Mus_Stop() S_StopMusic(true); } +void Mus_Fade(double seconds) +{ + // Todo: Blood uses this, but the streamer cannot currently fade the volume. + Mus_Stop(); +} + void Mus_SetPaused(bool on) { if (on) S_PauseMusic(); diff --git a/source/common/music/z_music.h b/source/common/music/z_music.h index 026ff5c30..e2dff877a 100644 --- a/source/common/music/z_music.h +++ b/source/common/music/z_music.h @@ -5,5 +5,6 @@ void Mus_Init(); int Mus_Play(const char *mapname, const char *fn, bool loop); void Mus_Stop(); +void Mus_Fade(double seconds); void Mus_SetPaused(bool on); void MUS_ResumeSaved(); diff --git a/source/duke3d/src/gameexec.cpp b/source/duke3d/src/gameexec.cpp index c457b4223..8bbd4bdc5 100644 --- a/source/duke3d/src/gameexec.cpp +++ b/source/duke3d/src/gameexec.cpp @@ -5008,7 +5008,7 @@ badindex: vInstruction(CON_STOPALLMUSIC): insptr++; - S_StopMusic(); + Mus_Stop(); dispatch(); vInstruction(CON_OPERATE): diff --git a/source/duke3d/src/screens.cpp b/source/duke3d/src/screens.cpp index 74270f54e..ea8f64505 100644 --- a/source/duke3d/src/screens.cpp +++ b/source/duke3d/src/screens.cpp @@ -1287,7 +1287,7 @@ void gameDisplaySharewareScreens() void G_DisplayExtraScreens(void) { - S_StopMusic(); + Mus_Stop(); FX_StopAllSounds(); if (!DUKEBETA && (!VOLUMEALL || G_GetLogoFlags() & LOGO_SHAREWARESCREENS)) @@ -1467,7 +1467,7 @@ void G_DisplayLogo(void) renderFlushPerms(); videoNextPage(); - S_StopMusic(); + Mus_Stop(); FX_StopAllSounds(); // JBF 20031228 S_ClearSoundLocks(); // JBF 20031228 @@ -1669,7 +1669,7 @@ static void G_BonusCutscenes(void) fadepal(0, 0, 0, 0, 252, 4); VOL1_END: - S_StopMusic(); + Mus_Stop(); FX_StopAllSounds(); S_ClearSoundLocks(); break; @@ -1680,7 +1680,7 @@ static void G_BonusCutscenes(void) videoSetViewableArea(0, 0, xdim-1, ydim-1); - S_StopMusic(); + Mus_Stop(); videoClearScreen(0L); videoNextPage(); @@ -1714,7 +1714,7 @@ static void G_BonusCutscenes(void) videoSetViewableArea(0, 0, xdim-1, ydim-1); - S_StopMusic(); + Mus_Stop(); videoClearScreen(0L); videoNextPage(); @@ -1796,7 +1796,7 @@ static void G_BonusCutscenes(void) if ((G_GetLogoFlags() & LOGO_NOE3BONUSSCENE) && (G_GetLogoFlags() & LOGO_NOE3RADLOGO) && (PLUTOPAK || (G_GetLogoFlags() & LOGO_NODUKETEAMPIC))) return; - S_StopMusic(); + Mus_Stop(); videoClearScreen(0L); videoNextPage(); if (adult_lockout == 0 && !(G_GetLogoFlags() & LOGO_NOE3BONUSSCENE)) @@ -2043,7 +2043,7 @@ void G_BonusScreen(int32_t bonusonly) totalclock = 0; bonuscnt = 0; - S_StopMusic(); + Mus_Stop(); FX_StopAllSounds(); S_ClearSoundLocks(); diff --git a/source/duke3d/src/sector.cpp b/source/duke3d/src/sector.cpp index b29a9098d..6f8c5b32b 100644 --- a/source/duke3d/src/sector.cpp +++ b/source/duke3d/src/sector.cpp @@ -2602,12 +2602,12 @@ void P_HandleSharedKeys(int playerNum) else ud.pause_on = 1+SHIFTS_IS_PRESSED; if (ud.pause_on) { - S_PauseMusic(true); + Mus_SetPaused(true); S_PauseSounds(true); } else { - if (MusicEnabled()) S_PauseMusic(false); + if (MusicEnabled()) Mus_SetPaused(false); S_PauseSounds(false); diff --git a/source/duke3d/src/sounds.cpp b/source/duke3d/src/sounds.cpp index 36b8bb241..b3cb42cd8 100644 --- a/source/duke3d/src/sounds.cpp +++ b/source/duke3d/src/sounds.cpp @@ -133,22 +133,6 @@ void S_MenuSound(void) } -static int S_PlayMusic(const char *mapname, const char* fn, bool looping = true) -{ - return Mus_Play(mapname, fn, looping); -} - -void S_StopMusic(void) -{ - Mus_Stop(); -} - -void S_PauseMusic(bool paused) -{ - Mus_SetPaused(paused); -} - - static void S_SetMusicIndex(unsigned int m) { g_musicIndex = m; @@ -156,30 +140,16 @@ static void S_SetMusicIndex(unsigned int m) ud.music_level = m % MAXLEVELS; } -bool S_TryPlayLevelMusic(unsigned int m) +void S_PlayLevelMusicOrNothing(unsigned int m) { ud.returnvar[0] = m / MAXLEVELS; ud.returnvar[1] = m % MAXLEVELS; int retval = VM_OnEvent(EVENT_PLAYLEVELMUSICSLOT, g_player[myconnectindex].ps->i, myconnectindex); - if (retval < 0) - return false; - - if (!S_PlayMusic(g_mapInfo[m].filename, g_mapInfo[m].musicfn)) - { - S_SetMusicIndex(m); - return false; - } - - return true; -} - -void S_PlayLevelMusicOrNothing(unsigned int m) -{ - if (S_TryPlayLevelMusic(m)) + if (retval >= 0) { - //S_StopMusic(); + Mus_Play(g_mapInfo[m].filename, g_mapInfo[m].musicfn, true); S_SetMusicIndex(m); } } @@ -189,7 +159,7 @@ int S_TryPlaySpecialMusic(unsigned int m) char const * musicfn = g_mapInfo[m].musicfn; if (musicfn != NULL) { - if (!S_PlayMusic(nullptr, musicfn)) + if (!Mus_Play(nullptr, musicfn, true)) { S_SetMusicIndex(m); return 0; @@ -203,7 +173,6 @@ void S_PlaySpecialMusicOrNothing(unsigned int m) { if (S_TryPlaySpecialMusic(m)) { - //S_StopMusic(); S_SetMusicIndex(m); } } diff --git a/source/duke3d/src/sounds.h b/source/duke3d/src/sounds.h index 405a4c4b1..428815125 100644 --- a/source/duke3d/src/sounds.h +++ b/source/duke3d/src/sounds.h @@ -30,6 +30,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #define sounds_public_h_ #include "sounds_common.h" +#include "z_music.h" BEGIN_DUKE_NS @@ -72,7 +73,6 @@ void cacheAllSounds(void); void S_MenuSound(void); void S_PauseMusic(bool paused); void S_PauseSounds(bool paused); -bool S_TryPlayLevelMusic(unsigned int m); void S_PlayLevelMusicOrNothing(unsigned int); int S_TryPlaySpecialMusic(unsigned int); void S_PlaySpecialMusicOrNothing(unsigned int); @@ -83,7 +83,6 @@ void S_SoundShutdown(void); void S_SoundStartup(void); void S_StopEnvSound(int sndNum,int sprNum); void S_StopAllSounds(void); -void S_StopMusic(void); void S_Update(void); void S_ChangeSoundPitch(int soundNum, int spriteNum, int pitchoffset); diff --git a/source/rr/src/savegame.cpp b/source/rr/src/savegame.cpp index b9343fb0f..f056ef7db 100644 --- a/source/rr/src/savegame.cpp +++ b/source/rr/src/savegame.cpp @@ -1615,7 +1615,7 @@ static void postloadplayer(int32_t savegamep) MUS_ResumeSaved(); if (MusicEnabled()) - S_PauseMusic(false); + Mus_SetPaused(false); g_player[myconnectindex].ps->gm = MODE_GAME; ud.recstat = 0; diff --git a/source/rr/src/screens.cpp b/source/rr/src/screens.cpp index 9e0b7d48e..557beea8b 100644 --- a/source/rr/src/screens.cpp +++ b/source/rr/src/screens.cpp @@ -1236,7 +1236,7 @@ int inExtraScreens = 0; void G_DisplayExtraScreens(void) { - S_StopMusic(); + Mus_Stop(); FX_StopAllSounds(); if (RR) return; @@ -1310,7 +1310,7 @@ void G_DisplayLogo(void) renderFlushPerms(); videoNextPage(); - S_StopMusic(); + Mus_Stop(); FX_StopAllSounds(); // JBF 20031228 S_ClearSoundLocks(); // JBF 20031228 if (RRRA) @@ -1724,7 +1724,7 @@ static void G_BonusCutscenes(void) G_HandleEventsWhileNoInput(); fadepal(0, 0, 0, 0, 252, 4); - S_StopMusic(); + Mus_Stop(); FX_StopAllSounds(); S_ClearSoundLocks(); break; @@ -1732,7 +1732,7 @@ static void G_BonusCutscenes(void) case 1: videoSetViewableArea(0, 0, xdim-1, ydim-1); - S_StopMusic(); + Mus_Stop(); videoClearScreen(0L); videoNextPage(); @@ -1760,7 +1760,7 @@ static void G_BonusCutscenes(void) case 3: videoSetViewableArea(0, 0, xdim-1, ydim-1); - S_StopMusic(); + Mus_Stop(); videoClearScreen(0L); videoNextPage(); @@ -1828,7 +1828,7 @@ static void G_BonusCutscenes(void) break; case 2: - S_StopMusic(); + Mus_Stop(); videoClearScreen(0L); videoNextPage(); if (adult_lockout == 0) @@ -2077,7 +2077,7 @@ void G_BonusScreen(int32_t bonusonly) totalclock = 0; bonuscnt = 0; - S_StopMusic(); + Mus_Stop(); FX_StopAllSounds(); S_ClearSoundLocks(); @@ -2669,7 +2669,7 @@ void G_BonusScreenRRRA(int32_t bonusonly) totalclock = 0; bonuscnt = 0; - S_StopMusic(); + Mus_Stop(); FX_StopAllSounds(); S_ClearSoundLocks(); diff --git a/source/rr/src/sector.cpp b/source/rr/src/sector.cpp index b716b3142..da95f232e 100644 --- a/source/rr/src/sector.cpp +++ b/source/rr/src/sector.cpp @@ -3649,12 +3649,12 @@ void P_HandleSharedKeys(int playerNum) else ud.pause_on = 1+SHIFTS_IS_PRESSED; if (ud.pause_on) { - S_PauseMusic(true); + Mus_SetPaused(true); S_PauseSounds(true); } else { - if (MusicEnabled()) S_PauseMusic(false); + if (MusicEnabled()) Mus_SetPaused(false); S_PauseSounds(false); diff --git a/source/rr/src/sounds.cpp b/source/rr/src/sounds.cpp index 473f9f1c3..0f5424707 100644 --- a/source/rr/src/sounds.cpp +++ b/source/rr/src/sounds.cpp @@ -122,23 +122,6 @@ void S_MenuSound(void) } -static int S_PlayMusic(const char *mapname, const char* fn, bool looping = true) -{ - return Mus_Play(mapname, fn, looping); -} - -void S_StopMusic(void) -{ - Mus_Stop(); -} - - -void S_PauseMusic(bool paused) -{ - Mus_SetPaused(paused); -} - - static void S_SetMusicIndex(unsigned int m) { g_musicIndex = m; @@ -146,25 +129,10 @@ static void S_SetMusicIndex(unsigned int m) ud.music_level = m % MAXLEVELS; } -bool S_TryPlayLevelMusic(unsigned int m) -{ - // For RR only explicitly invalidate the music name, but still allow the music code to run its own music substitution logic based on map names. - if (!S_PlayMusic(g_mapInfo[m].filename,RR? nullptr : g_mapInfo[m].musicfn)) - { - S_SetMusicIndex(m); - return false; - } - - return true; -} - void S_PlayLevelMusicOrNothing(unsigned int m) { - if (S_TryPlayLevelMusic(m)) - { - //S_StopMusic(); - S_SetMusicIndex(m); - } + Mus_Play(g_mapInfo[m].filename, RR ? nullptr : g_mapInfo[m].musicfn, true); + S_SetMusicIndex(m); } int S_TryPlaySpecialMusic(unsigned int m) @@ -174,7 +142,7 @@ int S_TryPlaySpecialMusic(unsigned int m) char const * musicfn = g_mapInfo[m].musicfn; if (musicfn != NULL) { - if (!S_PlayMusic(nullptr, musicfn, 1)) + if (!Mus_Play(nullptr, musicfn, 1)) { S_SetMusicIndex(m); return 0; @@ -189,20 +157,19 @@ void S_PlayRRMusic(int newTrack) char fileName[16]; if (!RR) return; - S_StopMusic(); + Mus_Stop(); g_cdTrack = newTrack != -1 ? newTrack : g_cdTrack+1; if (newTrack != 10 && (g_cdTrack > 9 || g_cdTrack < 2)) g_cdTrack = 2; Bsprintf(fileName, "track%.2d.ogg", g_cdTrack); - S_PlayMusic(fileName, 0); + Mus_Play(fileName, 0, true); } void S_PlaySpecialMusicOrNothing(unsigned int m) { if (S_TryPlaySpecialMusic(m)) { - //S_StopMusic(); S_SetMusicIndex(m); } } diff --git a/source/rr/src/sounds.h b/source/rr/src/sounds.h index 33b5b6082..39cb58900 100644 --- a/source/rr/src/sounds.h +++ b/source/rr/src/sounds.h @@ -30,6 +30,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #define sounds_public_h_ #include "sounds_common.h" +#include "z_music.h" BEGIN_RR_NS @@ -71,10 +72,8 @@ inline void S_ClearSoundLocks(void) {} int32_t S_LoadSound(uint32_t num); void S_PrecacheSounds(void); void S_MenuSound(void); -void S_PauseMusic(bool paused); void S_PauseSounds(bool paused); void S_PlayRRMusic(int newTrack = -1); -bool S_TryPlayLevelMusic(unsigned int m); void S_PlayLevelMusicOrNothing(unsigned int); int S_TryPlaySpecialMusic(unsigned int); void S_PlaySpecialMusicOrNothing(unsigned int); @@ -84,7 +83,6 @@ void S_SoundShutdown(void); void S_SoundStartup(void); void S_StopEnvSound(int32_t num,int32_t i); void S_StopAllSounds(void); -void S_StopMusic(void); void S_Update(void); void S_ChangeSoundPitch(int soundNum, int spriteNum, int pitchoffset);