From 8431266d2759561e0761bf2dbcc9c4158b722ec2 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 22 Oct 2019 02:01:05 +0200 Subject: [PATCH] - refactoring of music CVARs This is a lot of changes in a lot of code because nothing here was abstracted into the sound system. :( Hopefully most of the affected code here can be tossed out soon, it's not pretty. --- source/blood/src/asound.cpp | 2 +- source/blood/src/blood.cpp | 2 +- source/blood/src/config.cpp | 32 +--------- source/blood/src/config.h | 3 +- source/blood/src/credits.cpp | 4 +- source/blood/src/endgame.cpp | 3 +- source/blood/src/levels.cpp | 2 +- source/blood/src/loadsave.cpp | 2 +- source/blood/src/menu.cpp | 60 ++++++++--------- source/blood/src/menus.cpp | 38 +++++------ source/blood/src/osdcmd.cpp | 4 +- source/blood/src/sfx.cpp | 16 ++--- source/blood/src/sound.cpp | 45 ++++--------- source/blood/src/sound.h | 13 ---- source/common/gamecvars.cpp | 96 +++++++++++++++------------- source/common/gamecvars.h | 15 +++++ source/duke3d/src/actors.cpp | 8 +-- source/duke3d/src/common.cpp | 3 +- source/duke3d/src/common_game.h | 1 - source/duke3d/src/config.cpp | 19 ------ source/duke3d/src/demo.cpp | 21 +++--- source/duke3d/src/game.cpp | 11 ++-- source/duke3d/src/game.h | 18 ------ source/duke3d/src/gamestructures.cpp | 4 +- source/duke3d/src/menus.cpp | 38 +++++------ source/duke3d/src/osdcmds.cpp | 2 +- source/duke3d/src/premap.cpp | 2 +- source/duke3d/src/savegame.cpp | 4 +- source/duke3d/src/screens.cpp | 4 +- source/duke3d/src/sector.cpp | 2 +- source/duke3d/src/sounds.cpp | 28 ++++---- source/rr/src/actors.cpp | 8 +-- source/rr/src/config.cpp | 22 +------ source/rr/src/demo.cpp | 20 +++--- source/rr/src/game.cpp | 11 ++-- source/rr/src/game.h | 18 ------ source/rr/src/menus.cpp | 72 ++++++++++----------- source/rr/src/osdcmds.cpp | 2 +- source/rr/src/premap.cpp | 2 +- source/rr/src/savegame.cpp | 4 +- source/rr/src/screens.cpp | 6 +- source/rr/src/sector.cpp | 2 +- source/rr/src/sounds.cpp | 28 ++++---- source/sw/src/config.cpp | 81 +---------------------- source/sw/src/config.h | 11 ---- source/sw/src/game.cpp | 16 +++-- source/sw/src/menus.cpp | 94 ++++++++------------------- source/sw/src/save.cpp | 19 +----- source/sw/src/serp.cpp | 2 +- source/sw/src/settings.h | 7 +- source/sw/src/sounds.cpp | 68 ++++++-------------- source/sw/src/sounds.h | 1 - source/sw/src/sumo.cpp | 8 +-- source/sw/src/swconfig.cpp | 16 ++--- source/sw/src/zilla.cpp | 2 +- 55 files changed, 369 insertions(+), 653 deletions(-) diff --git a/source/blood/src/asound.cpp b/source/blood/src/asound.cpp index 3c258f845..c8c791401 100644 --- a/source/blood/src/asound.cpp +++ b/source/blood/src/asound.cpp @@ -54,7 +54,7 @@ int nAmbChannels = 0; void ambProcess(void) { - if (!SoundToggle) + if (!snd_enabled) return; for (int nSprite = headspritestat[kStatAmbience]; nSprite >= 0; nSprite = nextspritestat[nSprite]) { diff --git a/source/blood/src/blood.cpp b/source/blood/src/blood.cpp index ff6286281..837f6c034 100644 --- a/source/blood/src/blood.cpp +++ b/source/blood/src/blood.cpp @@ -400,7 +400,7 @@ void PreloadCache(void) gSoundRes.PurgeCache(); gSysRes.PrecacheSounds(); gSoundRes.PrecacheSounds(); - if (MusicRestartsOnLoadToggle) + if (mus_restartonload) sndTryPlaySpecialMusic(MUS_LOADING); PreloadTiles(); ClockTicks clock = totalclock; diff --git a/source/blood/src/config.cpp b/source/blood/src/config.cpp index 8b7c5bfa7..0506cd575 100644 --- a/source/blood/src/config.cpp +++ b/source/blood/src/config.cpp @@ -71,7 +71,7 @@ int32_t JoystickAnalogueSaturate[MAXJOYAXES]; uint8_t KeyboardKeys[NUMGAMEFUNCTIONS][2]; int32_t scripthandle; int32_t setupread; -int32_t MusicRestartsOnLoadToggle; +int32_t mus_restartonload; int32_t configversion; int32_t CheckForUpdates; int32_t LastUpdateCheck; @@ -96,7 +96,6 @@ int32_t gMessageTime; int32_t gMessageFont; int32_t gbAdultContent; char gzAdultPassword[9]; -int32_t gDoppler; int32_t gShowWeapon; int32_t gMouseSensitivity; int32_t gMouseAiming; @@ -284,20 +283,6 @@ void CONFIG_SetDefaults(void) gSetup.bpp = 8; #endif -#if defined(_WIN32) - MixRate = 44100; -#elif defined __ANDROID__ - MixRate = droidinfo.audio_sample_rate; -#else - MixRate = 48000; -#endif - -#if defined GEKKO || defined __OPENDINGUX__ - NumVoices = 32; -#else - NumVoices = 64; -#endif - #ifdef GEKKO gSetup.usejoystick = 1; #else @@ -309,25 +294,15 @@ void CONFIG_SetDefaults(void) gSetup.fullscreen = 1; gSetup.usemouse = 1; - //ud.config.AmbienceToggle = 1; + //snd_ambience = 1; //ud.config.AutoAim = 1; CheckForUpdates = 1; - FXVolume = 255; MouseBias = 0; MouseDeadZone = 0; - MusicToggle = 1; - MusicRestartsOnLoadToggle = 0; - MusicVolume = 195; - NumBits = 16; - NumChannels = 2; - ReverseStereo = 0; gBrightness = 8; //ud.config.ShowWeapons = 0; SmoothInput = 1; - SoundToggle = 1; - CDAudioToggle = 0; - MusicDevice = 0; - //ud.config.VoiceToggle = 5; // bitfield, 1 = local, 2 = dummy, 4 = other players in DM + useprecache = 1; configversion = 0; //ud.crosshair = 1; @@ -387,7 +362,6 @@ void CONFIG_SetDefaults(void) gMessageTime = 5; gMessageFont = 0; gbAdultContent = 0; - gDoppler = 1; gShowWeapon = 0; gzAdultPassword[0] = 0; diff --git a/source/blood/src/config.h b/source/blood/src/config.h index aab1f514a..ab2fdff85 100644 --- a/source/blood/src/config.h +++ b/source/blood/src/config.h @@ -53,7 +53,7 @@ extern int32_t JoystickAnalogueSaturate[MAXJOYAXES]; extern uint8_t KeyboardKeys[NUMGAMEFUNCTIONS][2]; extern int32_t scripthandle; extern int32_t setupread; -extern int32_t MusicRestartsOnLoadToggle; +extern int32_t mus_restartonload; extern int32_t configversion; extern int32_t CheckForUpdates; extern int32_t LastUpdateCheck; @@ -77,7 +77,6 @@ extern int32_t gMessageTime; extern int32_t gMessageFont; extern int32_t gbAdultContent; extern char gzAdultPassword[9]; -extern int32_t gDoppler; extern int32_t gShowWeapon; extern int32_t gMouseSensitivity; extern int32_t gMouseAiming; diff --git a/source/blood/src/credits.cpp b/source/blood/src/credits.cpp index 51850b3d7..9db88b923 100644 --- a/source/blood/src/credits.cpp +++ b/source/blood/src/credits.cpp @@ -238,13 +238,13 @@ void credPlaySmk(const char *_pzSMK, const char *_pzWAV, int nWav) nScale = divscale16(200, nHeight); if (nWav) - sndStartWavID(nWav, FXVolume); + sndStartWavID(nWav, snd_fxvolume); else { auto nHandleWAV = credKOpen4Load(pzWAV); if (nHandleWAV.isOpen()) { - sndStartWavDisk(pzWAV, FXVolume); + sndStartWavDisk(pzWAV, snd_fxvolume); } } diff --git a/source/blood/src/endgame.cpp b/source/blood/src/endgame.cpp index 608beba69..d8d601197 100644 --- a/source/blood/src/endgame.cpp +++ b/source/blood/src/endgame.cpp @@ -115,8 +115,7 @@ void CEndGameMgr::Finish(void) { levelSetupOptions(gGameOptions.nEpisode, gNextLevel); gInitialNetPlayers = numplayers; - //if (FXDevice != -1) - FX_StopAllSounds(); + FX_StopAllSounds(); sndKillAllSounds(); gStartNewGame = 1; gInputMode = (INPUT_MODE)at1; diff --git a/source/blood/src/levels.cpp b/source/blood/src/levels.cpp index 0f4611b9a..1946a0c9d 100644 --- a/source/blood/src/levels.cpp +++ b/source/blood/src/levels.cpp @@ -400,7 +400,7 @@ int levelGetMusicIdx(const char *str) bool levelTryPlayMusic(int nEpisode, int nLevel, bool bSetLevelSong) { char buffer[BMAX_PATH]; - if (CDAudioToggle && gEpisodeInfo[nEpisode].at28[nLevel].ate0 > 0) + 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); diff --git a/source/blood/src/loadsave.cpp b/source/blood/src/loadsave.cpp index f45f99ca0..4ca32c4bf 100644 --- a/source/blood/src/loadsave.cpp +++ b/source/blood/src/loadsave.cpp @@ -170,7 +170,7 @@ void LoadSave::LoadGame(char *pzFile) gGameStarted = 1; bVanilla = false; - if (MusicRestartsOnLoadToggle + if (mus_restartonload || demoWasPlayed || (gMusicPrevLoadedEpisode != gGameOptions.nEpisode || gMusicPrevLoadedLevel != gGameOptions.nLevel)) { diff --git a/source/blood/src/menu.cpp b/source/blood/src/menu.cpp index 0cf4e7a33..8b6f6d528 100644 --- a/source/blood/src/menu.cpp +++ b/source/blood/src/menu.cpp @@ -223,10 +223,10 @@ CGameMenuItemTitle itemOptionsOldTitle("OPTIONS", 1, 160, 20, 2038); CGameMenuItemChain itemOption1("CONTROLS...", 3, 0, 40, 320, 1, &menuControls, -1, NULL, 0); CGameMenuItemSlider sliderDetail("DETAIL:", 3, 66, 50, 180, gDetail, 0, 4, 1, SetDetail, -1, -1); CGameMenuItemSlider sliderGamma("GAMMA:", 3, 66, 60, 180, gGamma, 0, 15, 2, SetGamma, -1, -1); -CGameMenuItemSlider sliderMusic("MUSIC:", 3, 66, 70, 180, MusicVolume, 0, 256, 48, SetMusicVol, -1, -1); -CGameMenuItemSlider sliderSound("SOUND:", 3, 66, 80, 180, FXVolume, 0, 256, 48, SetSoundVol, -1, -1); +CGameMenuItemSlider sliderMusic("MUSIC:", 3, 66, 70, 180, mus_volume, 0, 256, 48, SetMusicVol, -1, -1); +CGameMenuItemSlider sliderSound("SOUND:", 3, 66, 80, 180, snd_fxvolume, 0, 256, 48, SetSoundVol, -1, -1); CGameMenuItemSlider sliderCDAudio("CD AUDIO:", 3, 66, 90, 180, CDVolume, 0, 256, 48, SetCDVol, -1, -1); -CGameMenuItemZBool bool3DAudio("3D AUDIO:", 3, 66, 100, 180, gDoppler, SetDoppler, NULL, NULL); +CGameMenuItemZBool bool3DAudio("3D AUDIO:", 3, 66, 100, 180, snd_doppler, SetDoppler, NULL, NULL); CGameMenuItemZBool boolCrosshair("CROSSHAIR:", 3, 66, 110, 180, cl_crosshair, SetCrosshair, NULL, NULL); CGameMenuItemZBool boolShowWeapons("SHOW WEAPONS:", 3, 66, 120, 180, gShowWeapon, SetShowWeapons, NULL, NULL); CGameMenuItemZBool boolSlopeTilting("SLOPE TILTING:", 3, 66, 130, 180, gSlopeTilting, SetSlopeTilting, NULL, NULL); @@ -299,10 +299,10 @@ CGameMenuItemChain itemNetStart12("START GAME", 1, 66, 175, 280, 0, 0, -1, Start CGameMenuItemText itemLoadingText("LOADING...", 1, 160, 100, 1); CGameMenuItemTitle itemSoundsTitle("SOUNDS", 1, 160, 20, 2038); -CGameMenuItemSlider itemSoundsMusic("MUSIC:", 3, 40, 60, 180, MusicVolume, 0, 256, 48, SetMusicVol, -1, -1); -CGameMenuItemSlider itemSoundsSound("SOUND:", 3, 40, 70, 180, FXVolume, 0, 256, 48, SetSoundVol, -1, -1); +CGameMenuItemSlider itemSoundsMusic("MUSIC:", 3, 40, 60, 180, mus_volume, 0, 256, 48, SetMusicVol, -1, -1); +CGameMenuItemSlider itemSoundsSound("SOUND:", 3, 40, 70, 180, snd_fxvolume, 0, 256, 48, SetSoundVol, -1, -1); CGameMenuItemSlider itemSoundsCDAudio("CD AUDIO:", 3, 40, 80, 180, CDVolume, 0, 256, 48, SetCDVol, -1, -1); -CGameMenuItemZBool itemSounds3DAudio("3D SOUND:", 3, 40, 90, 180, gDoppler, SetDoppler, NULL, NULL); +CGameMenuItemZBool itemSounds3DAudio("3D SOUND:", 3, 40, 90, 180, snd_doppler, SetDoppler, NULL, NULL); CGameMenuItemTitle itemQuitTitle("QUIT", 1, 160, 20, 2038); CGameMenuItemText itemQuitText1("Do you really want to quit?", 0, 160, 100, 1); @@ -583,10 +583,10 @@ CGameMenuItemTitle itemOptionsSoundTitle("SOUND SETUP", 1, 160, 20, 2038); CGameMenuItemZBool itemOptionsSoundSoundToggle("SOUND:", 3, 66, 60, 180, false, UpdateSoundToggle, NULL, NULL); CGameMenuItemZBool itemOptionsSoundMusicToggle("MUSIC:", 3, 66, 70, 180, false, UpdateMusicToggle, NULL, NULL); CGameMenuItemZBool itemOptionsSound3DToggle("3D AUDIO:", 3, 66, 80, 180, false, Update3DToggle, NULL, NULL); -CGameMenuItemSlider itemOptionsSoundSoundVolume("SOUND VOLUME:", 3, 66, 90, 180, &FXVolume, 0, 256, 48, UpdateSoundVolume, -1, -1, kMenuSliderPercent); -CGameMenuItemSlider itemOptionsSoundMusicVolume("MUSIC VOLUME:", 3, 66, 100, 180, &MusicVolume, 0, 256, 48, UpdateMusicVolume, -1, -1, kMenuSliderPercent); +CGameMenuItemSlider itemOptionsSoundSoundVolume("SOUND VOLUME:", 3, 66, 90, 180, &snd_fxvolume.Value, 0, 256, 48, UpdateSoundVolume, -1, -1, kMenuSliderPercent); +CGameMenuItemSlider itemOptionsSoundMusicVolume("MUSIC VOLUME:", 3, 66, 100, 180, &mus_volume.Value, 0, 256, 48, UpdateMusicVolume, -1, -1, kMenuSliderPercent); CGameMenuItemZCycle itemOptionsSoundSampleRate("SAMPLE RATE:", 3, 66, 110, 180, 0, UpdateSoundRate, pzSoundRateStrings, 3, 0); -CGameMenuItemSlider itemOptionsSoundNumVoices("VOICES:", 3, 66, 120, 180, NumVoices, 16, 256, 16, UpdateNumVoices, -1, -1, kMenuSliderValue); +CGameMenuItemSlider itemOptionsSoundNumVoices("VOICES:", 3, 66, 120, 180, snd_numvoices, 16, 256, 16, UpdateNumVoices, -1, -1, kMenuSliderValue); CGameMenuItemZBool itemOptionsSoundCDToggle("REDBOOK AUDIO:", 3, 66, 130, 180, false, UpdateCDToggle, NULL, NULL); CGameMenuItemZCycle itemOptionsSoundMusicDevice("MUSIC DEVICE:", 3, 66, 140, 180, 0, UpdateMusicDevice, pzMusicDeviceStrings, 2, 0); CGameMenuItemChain itemOptionsSoundApplyChanges("APPLY CHANGES", 3, 66, 150, 180, 0, NULL, 0, SetSound, 0); @@ -748,9 +748,9 @@ void SetupOptionsOldMenu(void) { sliderDetail.nValue = ClipRange(gDetail, sliderDetail.nRangeLow, sliderDetail.nRangeHigh); sliderGamma.nValue = ClipRange(gGamma, sliderGamma.nRangeLow, sliderGamma.nRangeHigh); - sliderMusic.nValue = ClipRange(MusicVolume, sliderMusic.nRangeLow, sliderMusic.nRangeHigh); - sliderSound.nValue = ClipRange(FXVolume, sliderSound.nRangeLow, sliderSound.nRangeHigh); - bool3DAudio.at20 = gDoppler; + sliderMusic.nValue = ClipRange(mus_volume, sliderMusic.nRangeLow, sliderMusic.nRangeHigh); + sliderSound.nValue = ClipRange(snd_fxvolume, sliderSound.nRangeLow, sliderSound.nRangeHigh); + bool3DAudio.at20 = snd_doppler; boolCrosshair.at20 = cl_crosshair; boolShowWeapons.at20 = gShowWeapon; boolSlopeTilting.at20 = gSlopeTilting; @@ -1006,8 +1006,8 @@ void SetupLoadGameMenu(void) void SetupSoundsMenu(void) { - itemSoundsMusic.nValue = ClipRange(MusicVolume, itemSoundsMusic.nRangeLow, itemSoundsMusic.nRangeHigh); - itemSoundsSound.nValue = ClipRange(FXVolume, itemSoundsSound.nRangeLow, itemSoundsSound.nRangeHigh); + itemSoundsMusic.nValue = ClipRange(mus_volume, itemSoundsMusic.nRangeLow, itemSoundsMusic.nRangeHigh); + itemSoundsSound.nValue = ClipRange(snd_fxvolume, itemSoundsSound.nRangeLow, itemSoundsSound.nRangeHigh); menuSounds.Add(&itemSoundsTitle, false); menuSounds.Add(&itemSoundsMusic, true); menuSounds.Add(&itemSoundsSound, false); @@ -1366,7 +1366,7 @@ void UpdateNetworkMenus(void) void SetDoppler(CGameMenuItemZBool *pItem) { - gDoppler = pItem->at20; + snd_doppler = pItem->at20; } void SetCrosshair(CGameMenuItemZBool *pItem) @@ -1793,15 +1793,15 @@ void PreDrawDisplayPolymost(CGameMenuItem *pItem) void UpdateSoundToggle(CGameMenuItemZBool *pItem) { - SoundToggle = pItem->at20; - if (!SoundToggle) + snd_enabled = pItem->at20; + if (!snd_enabled) FX_StopAllSounds(); } void UpdateMusicToggle(CGameMenuItemZBool *pItem) { - MusicToggle = pItem->at20; - if (!MusicToggle) + mus_enabled = pItem->at20; + if (!mus_enabled) sndStopSong(); else { @@ -1812,12 +1812,12 @@ void UpdateMusicToggle(CGameMenuItemZBool *pItem) void Update3DToggle(CGameMenuItemZBool *pItem) { - gDoppler = pItem->at20; + snd_doppler = pItem->at20; } void UpdateCDToggle(CGameMenuItemZBool *pItem) { - CDAudioToggle = pItem->at20; + mus_redbook = pItem->at20; if (gGameStarted || gDemo.at1) levelTryPlayMusicOrNothing(gGameOptions.nEpisode, gGameOptions.nLevel); } @@ -1850,8 +1850,8 @@ void UpdateMusicDevice(CGameMenuItemZCycle *pItem) void SetSound(CGameMenuItemChain *pItem) { UNREFERENCED_PARAMETER(pItem); - MixRate = nSoundRateValues[itemOptionsSoundSampleRate.m_nFocus]; - NumVoices = itemOptionsSoundNumVoices.nValue; + snd_mixrate = nSoundRateValues[itemOptionsSoundSampleRate.m_nFocus]; + snd_numvoices = itemOptionsSoundNumVoices.nValue; MusicDevice = itemOptionsSoundMusicDevice.m_nFocus; sfxTerm(); sndTerm(); @@ -1859,7 +1859,7 @@ void SetSound(CGameMenuItemChain *pItem) sndInit(); sfxInit(); - if (MusicToggle && (gGameStarted || gDemo.at1)) + if (mus_enabled && (gGameStarted || gDemo.at1)) sndPlaySong(gGameOptions.zLevelSong, true); } @@ -1871,20 +1871,20 @@ void PreDrawSound(CGameMenuItem *pItem) void SetupOptionsSound(CGameMenuItemChain *pItem) { UNREFERENCED_PARAMETER(pItem); - itemOptionsSoundSoundToggle.at20 = SoundToggle; - itemOptionsSoundMusicToggle.at20 = MusicToggle; - itemOptionsSound3DToggle.at20 = gDoppler; - itemOptionsSoundCDToggle.at20 = CDAudioToggle; + itemOptionsSoundSoundToggle.at20 = snd_enabled; + itemOptionsSoundMusicToggle.at20 = mus_enabled; + itemOptionsSound3DToggle.at20 = snd_doppler; + itemOptionsSoundCDToggle.at20 = mus_redbook; itemOptionsSoundSampleRate.m_nFocus = 0; for (int i = 0; i < 3; i++) { - if (nSoundRateValues[i] == MixRate) + if (nSoundRateValues[i] == snd_mixrate) { itemOptionsSoundSampleRate.m_nFocus = i; break; } } - itemOptionsSoundNumVoices.nValue = NumVoices; + itemOptionsSoundNumVoices.nValue = snd_numvoices; itemOptionsSoundMusicDevice.m_nFocus = MusicDevice; } diff --git a/source/blood/src/menus.cpp b/source/blood/src/menus.cpp index 30e4f7c76..fa6aa409a 100644 --- a/source/blood/src/menus.cpp +++ b/source/blood/src/menus.cpp @@ -1142,18 +1142,18 @@ static MenuEntry_t *ME_SAVE; static MenuEntry_t **MEL_SAVE; static int32_t soundrate, soundvoices; -static MenuOption_t MEO_SOUND = MAKE_MENUOPTION( &MF_Redfont, &MEOS_OffOn, &ud.config.SoundToggle ); +static MenuOption_t MEO_SOUND = MAKE_MENUOPTION( &MF_Redfont, &MEOS_OffOn, &snd_enabled.Value ); static MenuEntry_t ME_SOUND = MAKE_MENUENTRY( "Sound:", &MF_Redfont, &MEF_BigOptionsRt, &MEO_SOUND, Option ); -static MenuOption_t MEO_SOUND_MUSIC = MAKE_MENUOPTION( &MF_Redfont, &MEOS_OffOn, &ud.config.MusicToggle ); +static MenuOption_t MEO_SOUND_MUSIC = MAKE_MENUOPTION( &MF_Redfont, &MEOS_OffOn, mus_enabled.Value ); static MenuEntry_t ME_SOUND_MUSIC = MAKE_MENUENTRY( "Music:", &MF_Redfont, &MEF_BigOptionsRt, &MEO_SOUND_MUSIC, Option ); static char const s_Volume[] = "Volume:"; -static MenuRangeInt32_t MEO_SOUND_VOLUME_FX = MAKE_MENURANGE( &ud.config.FXVolume, &MF_Redfont, 0, 255, 0, 33, 2 ); +static MenuRangeInt32_t MEO_SOUND_VOLUME_FX = MAKE_MENURANGE( &snd_fxvolume.Value, &MF_Redfont, 0, 255, 0, 33, 2 ); static MenuEntry_t ME_SOUND_VOLUME_FX = MAKE_MENUENTRY( s_Volume, &MF_Redfont, &MEF_BigOptions_Apply, &MEO_SOUND_VOLUME_FX, RangeInt32 ); -static MenuRangeInt32_t MEO_SOUND_VOLUME_MUSIC = MAKE_MENURANGE( &ud.config.MusicVolume, &MF_Redfont, 0, 255, 0, 33, 2 ); +static MenuRangeInt32_t MEO_SOUND_VOLUME_MUSIC = MAKE_MENURANGE( &mus_volume.Value, &MF_Redfont, 0, 255, 0, 33, 2 ); static MenuEntry_t ME_SOUND_VOLUME_MUSIC = MAKE_MENUENTRY( s_Volume, &MF_Redfont, &MEF_BigOptions_Apply, &MEO_SOUND_VOLUME_MUSIC, RangeInt32 ); #ifndef EDUKE32_STANDALONE @@ -2105,15 +2105,15 @@ static void Menu_Pre(MenuID_t cm) case MENU_SOUND: case MENU_SOUND_INGAME: case MENU_ADVSOUND: - MenuEntry_DisableOnCondition(&ME_SOUND_VOLUME_FX, !ud.config.SoundToggle); - MenuEntry_DisableOnCondition(&ME_SOUND_VOLUME_MUSIC, !ud.config.MusicToggle); - MenuEntry_DisableOnCondition(&ME_SOUND_DUKETALK, !ud.config.SoundToggle); - MenuEntry_DisableOnCondition(&ME_SOUND_SAMPLINGRATE, !ud.config.SoundToggle && !ud.config.MusicToggle); + MenuEntry_DisableOnCondition(&ME_SOUND_VOLUME_FX, !snd_enabled); + MenuEntry_DisableOnCondition(&ME_SOUND_VOLUME_MUSIC, !mus_enabled); + MenuEntry_DisableOnCondition(&ME_SOUND_DUKETALK, !snd_enabled); + MenuEntry_DisableOnCondition(&ME_SOUND_SAMPLINGRATE, !snd_enabled && !mus_enabled); #ifndef EDUKE32_SIMPLE_MENU - MenuEntry_DisableOnCondition(&ME_SOUND_NUMVOICES, !ud.config.SoundToggle); + MenuEntry_DisableOnCondition(&ME_SOUND_NUMVOICES, !snd_enabled); #endif - MenuEntry_DisableOnCondition(&ME_SOUND_RESTART, soundrate == ud.config.MixRate && - soundvoices == ud.config.NumVoices); + MenuEntry_DisableOnCondition(&ME_SOUND_RESTART, soundrate == snd_mixrate && + soundvoices == snd_numvoices); break; case MENU_SAVESETUP: @@ -3219,8 +3219,8 @@ static void Menu_EntryLinkActivate(MenuEntry_t *entry) } else if (entry == &ME_SOUND_RESTART) { - ud.config.MixRate = soundrate; - ud.config.NumVoices = soundvoices; + snd_mixrate = soundrate; + snd_numvoices = soundvoices; S_SoundShutdown(); S_MusicShutdown(); @@ -3231,7 +3231,7 @@ static void Menu_EntryLinkActivate(MenuEntry_t *entry) FX_StopAllSounds(); S_ClearSoundLocks(); - if (ud.config.MusicToggle) + if (mus_enabled) S_RestartMusic(); } else if (entry == &ME_SAVESETUP_CLEANUP) @@ -3297,7 +3297,7 @@ static int32_t Menu_EntryOptionModify(MenuEntry_t *entry, int32_t newOption) } else if (entry == &ME_SOUND_MUSIC) { - ud.config.MusicToggle = newOption; + mus_enabled = newOption; if (newOption == 0) S_PauseMusic(true); @@ -3308,7 +3308,7 @@ static int32_t Menu_EntryOptionModify(MenuEntry_t *entry, int32_t newOption) } } else if (entry == &ME_SOUND_DUKETALK) - ud.config.VoiceToggle = (ud.config.VoiceToggle&~1) | newOption; + snd_speech = (snd_speech&~1) | newOption; else if (entry == &ME_MOUSESETUP_SMOOTH) CONTROL_SmoothMouse = ud.config.SmoothInput; else if (entry == &ME_JOYSTICK_ENABLE) @@ -3606,7 +3606,7 @@ static int32_t Menu_EntryOptionSource(MenuEntry_t *entry, int32_t currentValue) if (entry == &ME_GAMESETUP_WEAPSWITCH_PICKUP) return (ud.weaponswitch & 1) ? ((ud.weaponswitch & 4) ? 2 : 1) : 0; else if (entry == &ME_SOUND_DUKETALK) - return ud.config.VoiceToggle & 1; + return snd_speech & 1; else if (entry == &ME_NETOPTIONS_MONSTERS) return (ud.m_monsters_off ? g_skillCnt : ud.m_player_skill); @@ -4249,8 +4249,8 @@ static void Menu_AboutToStartDisplaying(Menu_t * m) break; case MENU_ADVSOUND: - soundrate = ud.config.MixRate; - soundvoices = ud.config.NumVoices; + soundrate = snd_mixrate; + soundvoices = snd_numvoices; break; default: diff --git a/source/blood/src/osdcmd.cpp b/source/blood/src/osdcmd.cpp index 23697607f..2d92cd8f4 100644 --- a/source/blood/src/osdcmd.cpp +++ b/source/blood/src/osdcmd.cpp @@ -237,7 +237,7 @@ static int osdcmd_music(osdcmdptr_t parm) if (!levelTryPlayMusic(nEpisode, nLevel)) { - if (CDAudioToggle) + if (mus_redbook) snprintf(buffer, sizeof(buffer), "Playing %i track", gEpisodeInfo[nEpisode].at28[nLevel].ate0); else snprintf(buffer, sizeof(buffer), "Playing %s", gEpisodeInfo[nEpisode].at28[nLevel].atd0); @@ -431,7 +431,7 @@ static int osdcmd_restartsound(osdcmdptr_t UNUSED(parm)) sndInit(); sfxInit(); - if (MusicToggle && (gGameStarted || gDemo.at1)) + if (mus_enabled && (gGameStarted || gDemo.at1)) sndPlaySong(gGameOptions.zLevelSong, true); return OSDCMD_OK; diff --git a/source/blood/src/sfx.cpp b/source/blood/src/sfx.cpp index 9bc27ec1a..c345376d9 100644 --- a/source/blood/src/sfx.cpp +++ b/source/blood/src/sfx.cpp @@ -119,7 +119,7 @@ void Calc3DValues(BONKLE *pBonkle) void sfxPlay3DSound(int x, int y, int z, int soundId, int nSector) { - if (!SoundToggle || soundId < 0) return; + if (!snd_enabled || soundId < 0) return; DICTNODE *hRes = gSoundRes.Lookup(soundId, "SFX"); if (!hRes)return; @@ -153,7 +153,7 @@ void sfxPlay3DSound(int x, int y, int z, int soundId, int nSector) priority = lVol; if (priority < rVol) priority = rVol; - if (gDoppler) + if (snd_doppler) { MV_Lock(); pBonkle->at0 = FX_PlayRaw(pData + lPhase, size - lPhase, lPitch, 0, lVol, lVol, 0, priority, 1.f, (intptr_t)&pBonkle->at0); @@ -169,7 +169,7 @@ void sfxPlay3DSound(int x, int y, int z, int soundId, int nSector) void sfxPlay3DSound(spritetype *pSprite, int soundId, int a3, int a4) { - if (!SoundToggle) + if (!snd_enabled) return; if (!pSprite) return; @@ -252,7 +252,7 @@ void sfxPlay3DSound(spritetype *pSprite, int soundId, int a3, int a4) char *pData = (char*)gSoundRes.Lock(hRes); if (loopStart >= 0) { - if (gDoppler) + if (snd_doppler) { pBonkle->at0 = FX_PlayLoopedRaw(pData + lPhase, size - lPhase, pData + loopStart, pData + loopEnd, lPitch, 0, lVol, lVol, 0, priority, 1.f, (intptr_t)&pBonkle->at0); pBonkle->at4 = FX_PlayLoopedRaw(pData + rPhase, size - rPhase, pData + loopStart, pData + loopEnd, rPitch, 0, rVol, 0, rVol, priority, 1.f, (intptr_t)&pBonkle->at4); @@ -266,7 +266,7 @@ void sfxPlay3DSound(spritetype *pSprite, int soundId, int a3, int a4) else { pData = (char*)gSoundRes.Lock(pBonkle->at8); - if (gDoppler) + if (snd_doppler) { pBonkle->at0 = FX_PlayRaw(pData + lPhase, size - lPhase, lPitch, 0, lVol, lVol, 0, priority, 1.f, (intptr_t)&pBonkle->at0); pBonkle->at4 = FX_PlayRaw(pData + rPhase, size - rPhase, rPitch, 0, rVol, 0, rVol, priority, 1.f, (intptr_t)&pBonkle->at4); @@ -283,7 +283,7 @@ void sfxPlay3DSound(spritetype *pSprite, int soundId, int a3, int a4) // By NoOne: same as previous, but allows to set custom pitch for sound AND volume. Used by SFX gen now. void sfxPlay3DSoundCP(spritetype* pSprite, int soundId, int a3, int a4, int pitch, int volume) { - if (!SoundToggle || !pSprite || soundId < 0) return; + if (!snd_enabled || !pSprite || soundId < 0) return; DICTNODE* hRes = gSoundRes.Lookup(soundId, "SFX"); if (!hRes) return; @@ -363,7 +363,7 @@ void sfxPlay3DSoundCP(spritetype* pSprite, int soundId, int a3, int a4, int pitc char* pData = (char*)gSoundRes.Lock(hRes); if (loopStart >= 0) { - if (gDoppler) + if (snd_doppler) { pBonkle->at0 = FX_PlayLoopedRaw(pData + lPhase, size - lPhase, pData + loopStart, pData + loopEnd, lPitch, 0, lVol, lVol, 0, priority, 1.f, (intptr_t)& pBonkle->at0); pBonkle->at4 = FX_PlayLoopedRaw(pData + rPhase, size - rPhase, pData + loopStart, pData + loopEnd, rPitch, 0, rVol, 0, rVol, priority, 1.f, (intptr_t)& pBonkle->at4); @@ -377,7 +377,7 @@ void sfxPlay3DSoundCP(spritetype* pSprite, int soundId, int a3, int a4, int pitc else { pData = (char*)gSoundRes.Lock(pBonkle->at8); - if (gDoppler) + if (snd_doppler) { pBonkle->at0 = FX_PlayRaw(pData + lPhase, size - lPhase, lPitch, 0, lVol, lVol, 0, priority, 1.f, (intptr_t)& pBonkle->at0); pBonkle->at4 = FX_PlayRaw(pData + rPhase, size - rPhase, rPitch, 0, rVol, 0, rVol, priority, 1.f, (intptr_t)& pBonkle->at4); diff --git a/source/blood/src/sound.cpp b/source/blood/src/sound.cpp index d6e68685f..1009c1804 100644 --- a/source/blood/src/sound.cpp +++ b/source/blood/src/sound.cpp @@ -35,19 +35,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. BEGIN_BLD_NS -int32_t SoundToggle; -int32_t MusicToggle; -int32_t CDAudioToggle; -int32_t FXVolume; -int32_t MusicVolume; -int32_t CDVolume; -int32_t NumVoices; -int32_t NumChannels; -int32_t NumBits; -int32_t MixRate; -int32_t ReverseStereo; -int32_t MusicDevice; - Resource gSoundRes; int soundRates[13] = { @@ -93,7 +80,7 @@ int nWaveMusicHandle; int sndPlaySong(const char *songName, bool bLoop) { - if (!MusicToggle) + if (!mus_enabled) return 0; if (!songName || strlen(songName) == 0) return 1; @@ -110,7 +97,7 @@ int sndPlaySong(const char *songName, bool bLoop) int nNewSongSize = hSong->size; char *pNewSongPtr = (char *)Xaligned_alloc(16, nNewSongSize); gSoundRes.Load(hSong, pNewSongPtr); - MUSIC_SetVolume(MusicVolume); + MUSIC_SetVolume(mus_volume); int32_t retval = MUSIC_PlaySong(pNewSongPtr, nNewSongSize, bLoop); if (retval != MUSIC_Ok) @@ -174,7 +161,7 @@ int sndPlaySong(const char *songName, bool bLoop) } else { - int nNewWaveMusicHandle = FX_Play(pNewSongPtr, bLoop ? nNewSongSize : -1, 0, 0, 0, MusicVolume, MusicVolume, MusicVolume, + int nNewWaveMusicHandle = FX_Play(pNewSongPtr, bLoop ? nNewSongSize : -1, 0, 0, 0, mus_volume, mus_volume, mus_volume, FX_MUSIC_PRIORITY, 1.f, (intptr_t)&nWaveMusicHandle); if (nNewWaveMusicHandle <= FX_Ok) @@ -207,12 +194,7 @@ bool sndIsSongPlaying(void) void sndFadeSong(int nTime) { UNREFERENCED_PARAMETER(nTime); - // NUKE-TODO: - //if (MusicDevice == -1) - // return; - //if (gEightyTwoFifty && sndMultiPlayer) - // return; - //MUSIC_FadeVolume(0, nTime); + if (bWaveMusic && nWaveMusicHandle >= 0) { FX_StopSound(nWaveMusicHandle); @@ -225,7 +207,7 @@ void sndFadeSong(int nTime) void sndSetMusicVolume(int nVolume) { - MusicVolume = nVolume; + mus_volume = nVolume; if (bWaveMusic && nWaveMusicHandle >= 0) FX_SetPan(nWaveMusicHandle, nVolume, nVolume, nVolume); MUSIC_SetVolume(nVolume); @@ -233,7 +215,7 @@ void sndSetMusicVolume(int nVolume) void sndSetFXVolume(int nVolume) { - FXVolume = nVolume; + snd_fxvolume = nVolume; FX_SetVolume(nVolume); } @@ -262,7 +244,7 @@ void sndKillSound(SAMPLE2D *pChannel); void sndStartSample(const char *pzSound, int nVolume, int nChannel) { - if (!SoundToggle) + if (!snd_enabled) return; if (!strlen(pzSound)) return; @@ -284,7 +266,7 @@ void sndStartSample(const char *pzSound, int nVolume, int nChannel) void sndStartSample(unsigned int nSound, int nVolume, int nChannel, bool bLoop) { - if (!SoundToggle) + if (!snd_enabled) return; dassert(nChannel >= -1 && nChannel < kMaxChannels); DICTNODE *hSfx = gSoundRes.Lookup(nSound, "SFX"); @@ -328,7 +310,7 @@ void sndStartSample(unsigned int nSound, int nVolume, int nChannel, bool bLoop) void sndStartWavID(unsigned int nSound, int nVolume, int nChannel) { - if (!SoundToggle) + if (!snd_enabled) return; dassert(nChannel >= -1 && nChannel < kMaxChannels); SAMPLE2D *pChannel; @@ -435,15 +417,14 @@ void InitSoundDevice(void) void *initdata = NULL; #endif int nStatus; - nStatus = FX_Init(NumVoices, NumChannels, MixRate, initdata); + nStatus = FX_Init(snd_numvoices, snd_numchannels, snd_mixrate, initdata); if (nStatus != 0) { initprintf("InitSoundDevice: %s\n", FX_ErrorString(nStatus)); return; } - if (ReverseStereo == 1) - FX_SetReverseStereo(!FX_GetReverseStereo()); - FX_SetVolume(FXVolume); + snd_reversestereo.Callback(); + snd_fxvolume.Callback(); FX_SetCallBack(SoundCallback); } @@ -462,7 +443,7 @@ void InitMusicDevice(void) initprintf("InitMusicDevice: %s\n", MUSIC_ErrorString(nStatus)); return; } - MUSIC_SetVolume(MusicVolume); + MUSIC_SetVolume(mus_volume); } void DeinitMusicDevice(void) diff --git a/source/blood/src/sound.h b/source/blood/src/sound.h index 3451074b9..bec256d34 100644 --- a/source/blood/src/sound.h +++ b/source/blood/src/sound.h @@ -43,19 +43,6 @@ struct SFX char rawName[9]; }; -extern int32_t SoundToggle; -extern int32_t MusicToggle; -extern int32_t CDAudioToggle; -extern int32_t FXVolume; -extern int32_t MusicVolume; -extern int32_t CDVolume; -extern int32_t NumVoices; -extern int32_t NumChannels; -extern int32_t NumBits; -extern int32_t MixRate; -extern int32_t ReverseStereo; -extern int32_t MusicDevice; - int sndGetRate(int format); int sndPlaySong(const char *songName, bool bLoop); bool sndIsSongPlaying(void); diff --git a/source/common/gamecvars.cpp b/source/common/gamecvars.cpp index 16aa56557..5ccc1debe 100644 --- a/source/common/gamecvars.cpp +++ b/source/common/gamecvars.cpp @@ -1,5 +1,6 @@ #include "c_cvars.h" #include "common.h" +#include "fx_man.h" /* Notes @@ -35,16 +36,13 @@ CUSTOM_CVARD(Int, cl_autovote, 0, CVAR_ARCHIVE, "enable/disable automatic voting if (self < 0 || self > 2) self = 0; } - - - bool G_CheckAutorun(bool button) { if (cl_runmode) return button || cl_autorun; else return button ^ !!cl_autorun; } - +// Demos CVARD_NAMED(Bool, demorec_diffcompress, demorec_diffcompress_cvar, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "Compression for diffs") CVARD_NAMED(Bool, demorec_synccompress, demorec_synccompress_cvar, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "Compression for input") @@ -55,6 +53,57 @@ CVARD_NAMED(Int, demorec_difftics, demorec_difftics_cvar, 60, CVAR_ARCHIVE|CVAR_ CVARD(Bool, demoplay_diffs, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "enable/disable application of diffs in demo playback") CVARD(Bool, demoplay_showsync, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "enable/disable display of sync status") +// Sound + +CVARD(Bool, snd_ambience, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "enables/disables ambient sounds") // Not implemented for Blood +CVARD(Bool, snd_enabled, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "enables/disables sound effects") +CVARD(Bool, snd_tryformats, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "enables/disables automatic discovery of replacement sounds and music in .flac and .ogg formats") +CVARD(Bool, snd_doppler, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "enable/disable 3d sound") + +CVARD(Bool, mus_enabled, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "enables/disables music") +CVARD(Bool, mus_restartonload, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "restart the music when loading a saved game with the same map or not") // only implemented for Blood - todo: generalize +CVARD(Bool, mus_redbook, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "enables/disables redbook audio (Blood only!)") // only Blood has assets for this. + +CUSTOM_CVARD(Bool, snd_reversestereo, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG|CVAR_NOINITCALL, "reverses the stereo channels") +{ + FX_SetReverseStereo(self); +} + +CUSTOM_CVARD(Int, snd_fxvolume, 255, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "controls volume for sound effects") +{ + if (self < 0) self = 0; + if (self > 255) self = 255; +} + +CUSTOM_CVARD(Int, snd_mixrate, 44100, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "sound mixing rate") +{ + if (self < 11025) self = 11025; + else if (self > 48000) self = 48000; +} + +CUSTOM_CVARD(Int, snd_numchannels, 2, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "the number of sound channels") +{ + if (self < 1) self = 1; + else if (self > 2) self = 2; +} + +CUSTOM_CVARD(Int, snd_numvoices, 64, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "the number of concurrent sounds") +{ + if (self < 8) self = 8; + else if (self > 128) self = 128; +} + +CUSTOM_CVARD(Int, snd_speech, 5, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "enables/disables player speech") +{ + if (self < 8) self = 0; + else if (self > 5) self = 5; +} + +CUSTOM_CVARD(Int, mus_volume, 255, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "controls music volume") +{ + if (self < 0) self = 0; + if (self > 255) self = 255; +} #if 0 @@ -100,8 +149,6 @@ CVARD(Bool, demoplay_showsync, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "enable/dis { "in_mousemode", "toggles vertical mouse view", (void *)&g_myAimMode, CVAR_BOOL, 0, 1 }, { "in_mousesmoothing", "enable/disable mouse input smoothing", (void *)&ud.config.SmoothInput, CVAR_BOOL, 0, 1 }, - { "mus_volume", "controls music volume", (void *)&ud.config.MusicVolume, CVAR_INT, 0, 255 }, - { "r_camrefreshdelay", "minimum delay between security camera sprite updates, 120 = 1 second", (void *)&ud.camera_time, CVAR_INT, 1, 240 }, { "r_drawweapon", "enable/disable weapon drawing", (void *)&ud.drawweapon, CVAR_INT, 0, 2 }, { "r_showfps", "show the frame rate counter", (void *)&ud.showfps, CVAR_INT, 0, 3 }, @@ -120,15 +167,6 @@ CVARD(Bool, demoplay_showsync, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "enable/dis { "skill","changes the game skill setting", (void *)&ud.m_player_skill, CVAR_INT|CVAR_FUNCPTR|CVAR_NOSAVE/*|CVAR_NOMULTI*/, 0, 5 }, - { "snd_ambience", "enables/disables ambient sounds", (void *)&ud.config.AmbienceToggle, CVAR_BOOL, 0, 1 }, - { "snd_enabled", "enables/disables sound effects", (void *)&ud.config.SoundToggle, CVAR_BOOL, 0, 1 }, - { "snd_fxvolume", "controls volume for sound effects", (void *)&ud.config.FXVolume, CVAR_INT, 0, 255 }, - { "snd_mixrate", "sound mixing rate", (void *)&ud.config.MixRate, CVAR_INT, 0, 48000 }, - { "snd_numchannels", "the number of sound channels", (void *)&ud.config.NumChannels, CVAR_INT, 0, 2 }, - { "snd_numvoices", "the number of concurrent sounds", (void *)&ud.config.NumVoices, CVAR_INT, 1, 128 }, - { "snd_reversestereo", "reverses the stereo channels", (void *)&ud.config.ReverseStereo, CVAR_BOOL, 0, 1 }, - { "snd_speech", "enables/disables player speech", (void *)&ud.config.VoiceToggle, CVAR_INT, 0, 5 }, - { "snd_tryformats", "enables/disables automatic discovery of replacement sounds and music in .flac and .ogg formats", (void *)&g_maybeUpgradeSoundFormats, CVAR_BOOL, 0, 1 }, { "team","change team in multiplayer", (void *)&ud.team, CVAR_INT|CVAR_MULTI, 0, 3 }, { "vid_gamma","adjusts gamma component of gamma ramp",(void *)&g_videoGamma, CVAR_FLOAT|CVAR_FUNCPTR, 0, 10 }, @@ -195,9 +233,6 @@ CVARD(Bool, demoplay_showsync, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "enable/dis { "in_mousemode", "toggles vertical mouse view", (void *)&g_myAimMode, CVAR_BOOL, 0, 1 }, { "in_mousesmoothing", "enable/disable mouse input smoothing", (void *)&ud.config.SmoothInput, CVAR_BOOL, 0, 1 }, - { "mus_enabled", "enables/disables music", (void *)&ud.config.MusicToggle, CVAR_BOOL, 0, 1 }, - { "mus_volume", "controls music volume", (void *)&ud.config.MusicVolume, CVAR_INT, 0, 255 }, - { "r_camrefreshdelay", "minimum delay between security camera sprite updates, 120 = 1 second", (void *)&ud.camera_time, CVAR_INT, 1, 240 }, { "r_drawweapon", "enable/disable weapon drawing", (void *)&ud.drawweapon, CVAR_INT, 0, 2 }, { "r_showfps", "show the frame rate counter", (void *)&ud.showfps, CVAR_INT, 0, 3 }, @@ -216,15 +251,6 @@ CVARD(Bool, demoplay_showsync, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "enable/dis { "skill","changes the game skill setting", (void *)&ud.m_player_skill, CVAR_INT|CVAR_FUNCPTR|CVAR_NOSAVE/*|CVAR_NOMULTI*/, 0, 5 }, - { "snd_ambience", "enables/disables ambient sounds", (void *)&ud.config.AmbienceToggle, CVAR_BOOL, 0, 1 }, - { "snd_enabled", "enables/disables sound effects", (void *)&ud.config.SoundToggle, CVAR_BOOL, 0, 1 }, - { "snd_fxvolume", "controls volume for sound effects", (void *)&ud.config.FXVolume, CVAR_INT, 0, 255 }, - { "snd_mixrate", "sound mixing rate", (void *)&ud.config.MixRate, CVAR_INT, 0, 48000 }, - { "snd_numchannels", "the number of sound channels", (void *)&ud.config.NumChannels, CVAR_INT, 0, 2 }, - { "snd_numvoices", "the number of concurrent sounds", (void *)&ud.config.NumVoices, CVAR_INT, 1, 128 }, - { "snd_reversestereo", "reverses the stereo channels", (void *)&ud.config.ReverseStereo, CVAR_BOOL, 0, 1 }, - { "snd_speech", "enables/disables player speech", (void *)&ud.config.VoiceToggle, CVAR_INT, 0, 5 }, - { "team","change team in multiplayer", (void *)&ud.team, CVAR_INT|CVAR_MULTI, 0, 3 }, { "vid_gamma","adjusts gamma component of gamma ramp",(void *)&g_videoGamma, CVAR_FLOAT|CVAR_FUNCPTR, 0, 10 }, @@ -303,12 +329,6 @@ int32_t registerosdcommands(void) { "in_mousemode", "toggles vertical mouse view", (void *)&gMouseAim, CVAR_BOOL, 0, 1 }, { "in_mousesmoothing", "enable/disable mouse input smoothing", (void *)&SmoothInput, CVAR_BOOL, 0, 1 }, // - { "mus_enabled", "enables/disables music", (void *)&MusicToggle, CVAR_BOOL, 0, 1 }, - { "mus_restartonload", "restart the music when loading a saved game with the same map or not", (void *)&MusicRestartsOnLoadToggle, CVAR_BOOL, 0, 1 }, - { "mus_volume", "controls music volume", (void *)&MusicVolume, CVAR_INT, 0, 255 }, - { "mus_device", "music device", (void *)&MusicDevice, CVAR_INT, 0, 1 }, - { "mus_redbook", "enables/disables redbook audio", (void *)&CDAudioToggle, CVAR_BOOL, 0, 1 }, - // { "r_camrefreshdelay", "minimum delay between security camera sprite updates, 120 = 1 second", (void *)&ud.camera_time, CVAR_INT, 1, 240 }, // { "r_drawweapon", "enable/disable weapon drawing", (void *)&ud.drawweapon, CVAR_INT, 0, 2 }, { "r_showfps", "show the frame rate counter", (void *)&gShowFps, CVAR_INT, 0, 3 }, @@ -327,16 +347,6 @@ int32_t registerosdcommands(void) // // { "skill","changes the game skill setting", (void *)&ud.m_player_skill, CVAR_INT|CVAR_FUNCPTR|CVAR_NOSAVE/*|CVAR_NOMULTI*/, 0, 5 }, // -// { "snd_ambience", "enables/disables ambient sounds", (void *)&ud.config.AmbienceToggle, CVAR_BOOL, 0, 1 }, - { "snd_enabled", "enables/disables sound effects", (void *)&SoundToggle, CVAR_BOOL, 0, 1 }, - { "snd_fxvolume", "controls volume for sound effects", (void *)&FXVolume, CVAR_INT, 0, 255 }, - { "snd_mixrate", "sound mixing rate", (void *)&MixRate, CVAR_INT, 0, 48000 }, - { "snd_numchannels", "the number of sound channels", (void *)&NumChannels, CVAR_INT, 0, 2 }, - { "snd_numvoices", "the number of concurrent sounds", (void *)&NumVoices, CVAR_INT, 1, 128 }, - { "snd_reversestereo", "reverses the stereo channels", (void *)&ReverseStereo, CVAR_BOOL, 0, 1 }, - { "snd_doppler", "enable/disable 3d sound", (void *)&gDoppler, CVAR_BOOL, 0, 1 }, -// { "snd_speech", "enables/disables player speech", (void *)&ud.config.VoiceToggle, CVAR_INT, 0, 5 }, -// { "team","change team in multiplayer", (void *)&ud.team, CVAR_INT|CVAR_MULTI, 0, 3 }, { "vid_gamma","adjusts gamma component of gamma ramp",(void *)&g_videoGamma, CVAR_FLOAT|CVAR_FUNCPTR, 0, 10 }, { "vid_contrast","adjusts contrast component of gamma ramp",(void *)&g_videoContrast, CVAR_FLOAT|CVAR_FUNCPTR, 0, 10 }, diff --git a/source/common/gamecvars.h b/source/common/gamecvars.h index 08e2957b3..5b5310bf2 100644 --- a/source/common/gamecvars.h +++ b/source/common/gamecvars.h @@ -25,4 +25,19 @@ EXTERN_CVAR(Bool, demorec_diffs_cvar) EXTERN_CVAR(Bool, demorec_force_cvar) EXTERN_CVAR(Int, demorec_difftics_cvar) +EXTERN_CVAR(Bool, snd_ambience) +EXTERN_CVAR(Bool, snd_enabled) +EXTERN_CVAR(Bool, snd_tryformats) +EXTERN_CVAR(Bool, snd_doppler) +EXTERN_CVAR(Bool, mus_enabled) +EXTERN_CVAR(Bool, mus_restartonload) +EXTERN_CVAR(Bool, mus_redbook) +EXTERN_CVAR(Bool, snd_reversestereo) +EXTERN_CVAR(Int, snd_fxvolume) +EXTERN_CVAR(Int, snd_mixrate) +EXTERN_CVAR(Int, snd_numchannels) +EXTERN_CVAR(Int, snd_numvoices) +EXTERN_CVAR(Int, snd_speech) +EXTERN_CVAR(Int, mus_volume) + bool G_CheckAutorun(bool button); diff --git a/source/duke3d/src/actors.cpp b/source/duke3d/src/actors.cpp index 0c5889ecc..cb1f5864c 100644 --- a/source/duke3d/src/actors.cpp +++ b/source/duke3d/src/actors.cpp @@ -1457,10 +1457,10 @@ ACTOR_STATIC void G_MoveFX(void) int32_t const spriteHitag = (uint16_t)pSprite->hitag; auto const pPlayer = g_player[screenpeek].ps; - if (T2(spriteNum) != ud.config.SoundToggle) + if (T2(spriteNum) != snd_enabled) { // If sound playback was toggled, restart. - T2(spriteNum) = ud.config.SoundToggle; + T2(spriteNum) = snd_enabled; T1(spriteNum) = 0; } @@ -1490,7 +1490,7 @@ ACTOR_STATIC void G_MoveFX(void) } } else if (pSprite->lotag < 999 && (unsigned)sector[pSprite->sectnum].lotag < 9 && // ST_9_SLIDING_ST_DOOR - ud.config.AmbienceToggle && sector[SECT(spriteNum)].floorz != sector[SECT(spriteNum)].ceilingz) + snd_ambience && sector[SECT(spriteNum)].floorz != sector[SECT(spriteNum)].ceilingz) { if (g_sounds[pSprite->lotag].m & SF_MSFX) { @@ -1510,7 +1510,7 @@ ACTOR_STATIC void G_MoveFX(void) // Start playing an ambience sound. char om = g_sounds[pSprite->lotag].m; - if (g_numEnvSoundsPlaying == ud.config.NumVoices) + if (g_numEnvSoundsPlaying == snd_numvoices) { int32_t j; diff --git a/source/duke3d/src/common.cpp b/source/duke3d/src/common.cpp index ca4e9716f..a362aa84d 100644 --- a/source/duke3d/src/common.cpp +++ b/source/duke3d/src/common.cpp @@ -1050,7 +1050,6 @@ void G_LoadLookups(void) ////////// #ifdef FORMAT_UPGRADE_ELIGIBLE -int g_maybeUpgradeSoundFormats = 1; static FileReader S_TryFormats(char * const testfn, char * const fn_suffix, char const searchfirst) { @@ -1108,6 +1107,8 @@ static FileReader S_TryExtensionReplacements(char * const testfn, char const sea FileReader S_OpenAudio(const char *fn, char searchfirst, uint8_t const ismusic) { auto origfp = kopenFileReader(fn, searchfirst); + if (!snd_tryformats) return origfp; + char const* const origparent = origfp.isOpen() ? kfileparent(origfp) : NULL; uint32_t const parentlength = origparent != NULL ? Bstrlen(origparent) : 0; diff --git a/source/duke3d/src/common_game.h b/source/duke3d/src/common_game.h index 4a1ee3abe..d965d6eea 100644 --- a/source/duke3d/src/common_game.h +++ b/source/duke3d/src/common_game.h @@ -138,7 +138,6 @@ extern void G_LoadLookups(void); ////////// # define FORMAT_UPGRADE_ELIGIBLE -extern int g_maybeUpgradeSoundFormats; extern FileReader S_OpenAudio(const char *fn, char searchfirst, uint8_t ismusic); void G_AddGroup(const char* buffer); diff --git a/source/duke3d/src/config.cpp b/source/duke3d/src/config.cpp index 3f87b0a15..3e9bde3af 100644 --- a/source/duke3d/src/config.cpp +++ b/source/duke3d/src/config.cpp @@ -224,19 +224,9 @@ void CONFIG_SetDefaults(void) ud.setup.bpp = 8; #endif -#if defined(_WIN32) - ud.config.MixRate = 44100; -#elif defined __ANDROID__ - ud.config.MixRate = droidinfo.audio_sample_rate; -#else - ud.config.MixRate = 48000; -#endif - #if defined GEKKO || defined __OPENDINGUX__ - ud.config.NumVoices = 32; ud.camera_time = 11; #else - ud.config.NumVoices = 64; ud.camera_time = 4; #endif @@ -257,20 +247,11 @@ void CONFIG_SetDefaults(void) ud.brightness = 8; ud.camerasprite = -1; ud.color = 0; - ud.config.AmbienceToggle = 1; ud.config.CheckForUpdates = 1; - ud.config.FXVolume = 255; ud.config.MouseBias = 0; ud.config.MouseDeadZone = 0; - ud.config.MusicToggle = 1; - ud.config.MusicVolume = 195; - ud.config.NumBits = 16; - ud.config.NumChannels = 2; - ud.config.ReverseStereo = 0; ud.config.ShowWeapons = 0; ud.config.SmoothInput = 1; - ud.config.SoundToggle = 1; - ud.config.VoiceToggle = 5; // bitfield, 1 = local, 2 = dummy, 4 = other players in DM ud.config.useprecache = 1; ud.configversion = 0; ud.crosshairscale = 50; diff --git a/source/duke3d/src/demo.cpp b/source/duke3d/src/demo.cpp index 2a469c23d..127d43f62 100644 --- a/source/duke3d/src/demo.cpp +++ b/source/duke3d/src/demo.cpp @@ -63,12 +63,13 @@ static void Demo_RestoreModes(int32_t menu) g_player[myconnectindex].ps->gm |= MODE_DEMO; } +// This is utterly gross. Global configuration should not be manipulated like this. void Demo_PrepareWarp(void) { if (!g_demo_paused) { - g_demo_soundToggle = ud.config.SoundToggle; - ud.config.SoundToggle = 0; + g_demo_soundToggle = snd_enabled; + snd_enabled = 0; } FX_StopAllSounds(); @@ -401,8 +402,8 @@ static void Demo_SetupProfile(void) { g_demo_profile *= -1; // now >0: profile for real - g_demo_soundToggle = ud.config.SoundToggle; - ud.config.SoundToggle = 0; // restored by Demo_FinishProfile() + g_demo_soundToggle = snd_enabled; + snd_enabled = 0; // restored by Demo_FinishProfile() Bmemset(&g_prof, 0, sizeof(g_prof)); @@ -418,7 +419,7 @@ static void Demo_FinishProfile(void) double gms=g_prof.totalgamems; double dms1=g_prof.totalroomsdrawms, dms2=g_prof.totalrestdrawms; - ud.config.SoundToggle = g_demo_soundToggle; + snd_enabled = g_demo_soundToggle; if (nt > 0) { @@ -687,7 +688,7 @@ nextdemo_nomenu: if (g_demo_goalCnt>0) { g_demo_goalCnt=0; - ud.config.SoundToggle = g_demo_soundToggle; + snd_enabled = g_demo_soundToggle; } if (Demo_IsProfiling()) // don't reset g_demo_profile if it's < 0 @@ -729,10 +730,10 @@ nextdemo_nomenu: } else { - int32_t k = ud.config.SoundToggle; - ud.config.SoundToggle = 0; + int32_t k = snd_enabled; + snd_enabled = 0; G_DoMoveThings(); - ud.config.SoundToggle = k; + snd_enabled = k; } ototalclock += TICSPERFRAME; @@ -747,7 +748,7 @@ nextdemo_nomenu: if (g_demo_cnt>=g_demo_goalCnt) { g_demo_goalCnt = 0; - ud.config.SoundToggle = g_demo_soundToggle; + snd_enabled = g_demo_soundToggle; } } } diff --git a/source/duke3d/src/game.cpp b/source/duke3d/src/game.cpp index 776678295..5937d8a7f 100644 --- a/source/duke3d/src/game.cpp +++ b/source/duke3d/src/game.cpp @@ -4499,8 +4499,8 @@ static int32_t g_RTSPlaying; // Returns: started playing? extern int G_StartRTS(int lumpNum, int localPlayer) { - if (!ud.lockout && ud.config.SoundToggle && - RTS_IsInitialized() && g_RTSPlaying == 0 && (ud.config.VoiceToggle & (localPlayer ? 1 : 4))) + if (!ud.lockout && snd_enabled && + RTS_IsInitialized() && g_RTSPlaying == 0 && (snd_speech & (localPlayer ? 1 : 4))) { char *const pData = (char *)RTS_GetSound(lumpNum - 1); @@ -4900,7 +4900,7 @@ FAKE_F3: Menu_Change(MENU_SOUND_INGAME); } - if (KB_UnBoundKeyPressed(sc_F5) && ud.config.MusicToggle) + if (KB_UnBoundKeyPressed(sc_F5) && mus_enabled) { map_t *const pMapInfo = &g_mapInfo[g_musicIndex]; char *const musicString = apStrings[QUOTE_MUSIC]; @@ -6056,8 +6056,9 @@ static void G_Startup(void) #endif if (g_netServer || ud.multimode > 1) G_CheckGametype(); - if (g_noSound) ud.config.SoundToggle = 0; - if (g_noMusic) ud.config.MusicToggle = 0; + //errr... what??? Why does this clobber the user setting? Well, it needs to be redone anyway, preferably at a lower level. + //if (g_noSound) snd_enabled = 0; + //if (g_noMusic) mus_enabled = 0; if (CommandName) { diff --git a/source/duke3d/src/game.h b/source/duke3d/src/game.h index 9ecdbd4da..540f564a7 100644 --- a/source/duke3d/src/game.h +++ b/source/duke3d/src/game.h @@ -241,24 +241,6 @@ typedef struct { int32_t JoystickAnalogueSaturate[MAXJOYAXES]; uint8_t KeyboardKeys[NUMGAMEFUNCTIONS][2]; - // - // Sound variables - // - int32_t FXVolume; - int32_t MusicVolume; - int32_t SoundToggle; - int32_t MusicToggle; - int32_t VoiceToggle; - int32_t AmbienceToggle; - - int32_t NumVoices; - int32_t NumChannels; - int32_t NumBits; - int32_t MixRate; - - int32_t ReverseStereo; - - int32_t scripthandle; int32_t setupread; diff --git a/source/duke3d/src/gamestructures.cpp b/source/duke3d/src/gamestructures.cpp index ca37233d9..e4d01cda6 100644 --- a/source/duke3d/src/gamestructures.cpp +++ b/source/duke3d/src/gamestructures.cpp @@ -1475,7 +1475,7 @@ int32_t __fastcall VM_GetUserdef(int32_t labelNum, int const lParm2) case USERDEFS_M_ORIGIN_X: labelNum = ud.returnvar[0]; break; case USERDEFS_M_ORIGIN_Y: labelNum = ud.returnvar[1]; break; case USERDEFS_PLAYERBEST: labelNum = ud.playerbest; break; - case USERDEFS_MUSICTOGGLE: labelNum = ud.config.MusicToggle; break; + case USERDEFS_MUSICTOGGLE: labelNum = mus_enabled; break; case USERDEFS_USEVOXELS: labelNum = usevoxels; break; case USERDEFS_USEHIGHTILE: #ifdef USE_OPENGL @@ -1494,7 +1494,7 @@ int32_t __fastcall VM_GetUserdef(int32_t labelNum, int const lParm2) case USERDEFS_VM_PLAYER: labelNum = vm.playerNum; break; case USERDEFS_VM_SPRITE: labelNum = vm.spriteNum; break; case USERDEFS_VM_DISTANCE: labelNum = vm.playerDist; break; - case USERDEFS_SOUNDTOGGLE: labelNum = ud.config.SoundToggle; break; + case USERDEFS_SOUNDTOGGLE: labelNum = snd_enabled; break; case USERDEFS_GAMETEXT_TRACKING: labelNum = MF_Bluefont.between.x; break; case USERDEFS_MENUTEXT_TRACKING: labelNum = MF_Redfont.between.x; break; case USERDEFS_MAXSPRITESONSCREEN: labelNum = maxspritesonscreen; break; diff --git a/source/duke3d/src/menus.cpp b/source/duke3d/src/menus.cpp index 856d9cb45..baa30fc2e 100644 --- a/source/duke3d/src/menus.cpp +++ b/source/duke3d/src/menus.cpp @@ -1141,18 +1141,18 @@ static MenuEntry_t *ME_SAVE; static MenuEntry_t **MEL_SAVE; static int32_t soundrate, soundvoices; -static MenuOption_t MEO_SOUND = MAKE_MENUOPTION( &MF_Redfont, &MEOS_OffOn, &ud.config.SoundToggle ); +static MenuOption_t MEO_SOUND = MAKE_MENUOPTION( &MF_Redfont, &MEOS_OffOn, &snd_enabled.Value ); static MenuEntry_t ME_SOUND = MAKE_MENUENTRY( "Sound:", &MF_Redfont, &MEF_BigOptionsRt, &MEO_SOUND, Option ); -static MenuOption_t MEO_SOUND_MUSIC = MAKE_MENUOPTION( &MF_Redfont, &MEOS_OffOn, &ud.config.MusicToggle ); +static MenuOption_t MEO_SOUND_MUSIC = MAKE_MENUOPTION( &MF_Redfont, &MEOS_OffOn, mus_enabled.Value ); static MenuEntry_t ME_SOUND_MUSIC = MAKE_MENUENTRY( "Music:", &MF_Redfont, &MEF_BigOptionsRt, &MEO_SOUND_MUSIC, Option ); static char const s_Volume[] = "Volume:"; -static MenuRangeInt32_t MEO_SOUND_VOLUME_FX = MAKE_MENURANGE( &ud.config.FXVolume, &MF_Redfont, 0, 255, 0, 33, 2 ); +static MenuRangeInt32_t MEO_SOUND_VOLUME_FX = MAKE_MENURANGE( &snd_fxvolume.Value, &MF_Redfont, 0, 255, 0, 33, 2 ); static MenuEntry_t ME_SOUND_VOLUME_FX = MAKE_MENUENTRY( s_Volume, &MF_Redfont, &MEF_BigOptions_Apply, &MEO_SOUND_VOLUME_FX, RangeInt32 ); -static MenuRangeInt32_t MEO_SOUND_VOLUME_MUSIC = MAKE_MENURANGE( &ud.config.MusicVolume, &MF_Redfont, 0, 255, 0, 33, 2 ); +static MenuRangeInt32_t MEO_SOUND_VOLUME_MUSIC = MAKE_MENURANGE( &mus_volume.Value, &MF_Redfont, 0, 255, 0, 33, 2 ); static MenuEntry_t ME_SOUND_VOLUME_MUSIC = MAKE_MENUENTRY( s_Volume, &MF_Redfont, &MEF_BigOptions_Apply, &MEO_SOUND_VOLUME_MUSIC, RangeInt32 ); #ifndef EDUKE32_STANDALONE @@ -2119,15 +2119,15 @@ static void Menu_Pre(MenuID_t cm) case MENU_SOUND: case MENU_SOUND_INGAME: case MENU_ADVSOUND: - MenuEntry_DisableOnCondition(&ME_SOUND_VOLUME_FX, !ud.config.SoundToggle); - MenuEntry_DisableOnCondition(&ME_SOUND_VOLUME_MUSIC, !ud.config.MusicToggle); - MenuEntry_DisableOnCondition(&ME_SOUND_DUKETALK, !ud.config.SoundToggle); - MenuEntry_DisableOnCondition(&ME_SOUND_SAMPLINGRATE, !ud.config.SoundToggle && !ud.config.MusicToggle); + MenuEntry_DisableOnCondition(&ME_SOUND_VOLUME_FX, !snd_enabled); + MenuEntry_DisableOnCondition(&ME_SOUND_VOLUME_MUSIC, !mus_enabled); + MenuEntry_DisableOnCondition(&ME_SOUND_DUKETALK, !snd_enabled); + MenuEntry_DisableOnCondition(&ME_SOUND_SAMPLINGRATE, !snd_enabled && !mus_enabled); #ifndef EDUKE32_SIMPLE_MENU - MenuEntry_DisableOnCondition(&ME_SOUND_NUMVOICES, !ud.config.SoundToggle); + MenuEntry_DisableOnCondition(&ME_SOUND_NUMVOICES, !snd_enabled); #endif - MenuEntry_DisableOnCondition(&ME_SOUND_RESTART, soundrate == ud.config.MixRate && - soundvoices == ud.config.NumVoices); + MenuEntry_DisableOnCondition(&ME_SOUND_RESTART, soundrate == snd_mixrate && + soundvoices == snd_numvoices); break; case MENU_SAVESETUP: @@ -3233,8 +3233,8 @@ static void Menu_EntryLinkActivate(MenuEntry_t *entry) } else if (entry == &ME_SOUND_RESTART) { - ud.config.MixRate = soundrate; - ud.config.NumVoices = soundvoices; + snd_mixrate = soundrate; + snd_numvoices = soundvoices; S_SoundShutdown(); S_MusicShutdown(); @@ -3245,7 +3245,7 @@ static void Menu_EntryLinkActivate(MenuEntry_t *entry) FX_StopAllSounds(); S_ClearSoundLocks(); - if (ud.config.MusicToggle) + if (mus_enabled) S_RestartMusic(); } else if (entry == &ME_SAVESETUP_CLEANUP) @@ -3311,7 +3311,7 @@ static int32_t Menu_EntryOptionModify(MenuEntry_t *entry, int32_t newOption) } else if (entry == &ME_SOUND_MUSIC) { - ud.config.MusicToggle = newOption; + mus_enabled = newOption; if (newOption == 0) S_PauseMusic(true); @@ -3322,7 +3322,7 @@ static int32_t Menu_EntryOptionModify(MenuEntry_t *entry, int32_t newOption) } } else if (entry == &ME_SOUND_DUKETALK) - ud.config.VoiceToggle = (ud.config.VoiceToggle&~1) | newOption; + snd_speech = (snd_speech&~1) | newOption; else if (entry == &ME_MOUSESETUP_SMOOTH) CONTROL_SmoothMouse = ud.config.SmoothInput; else if (entry == &ME_JOYSTICK_ENABLE) @@ -3620,7 +3620,7 @@ static int32_t Menu_EntryOptionSource(MenuEntry_t *entry, int32_t currentValue) if (entry == &ME_GAMESETUP_WEAPSWITCH_PICKUP) return (ud.weaponswitch & 1) ? ((ud.weaponswitch & 4) ? 2 : 1) : 0; else if (entry == &ME_SOUND_DUKETALK) - return ud.config.VoiceToggle & 1; + return snd_speech & 1; else if (entry == &ME_NETOPTIONS_MONSTERS) return (ud.m_monsters_off ? g_skillCnt : ud.m_player_skill); @@ -4263,8 +4263,8 @@ static void Menu_AboutToStartDisplaying(Menu_t * m) break; case MENU_ADVSOUND: - soundrate = ud.config.MixRate; - soundvoices = ud.config.NumVoices; + soundrate = snd_mixrate; + soundvoices = snd_numvoices; break; default: diff --git a/source/duke3d/src/osdcmds.cpp b/source/duke3d/src/osdcmds.cpp index f1848c243..29edb6c09 100644 --- a/source/duke3d/src/osdcmds.cpp +++ b/source/duke3d/src/osdcmds.cpp @@ -381,7 +381,7 @@ static int osdcmd_restartsound(osdcmdptr_t UNUSED(parm)) FX_StopAllSounds(); S_ClearSoundLocks(); - if (ud.config.MusicToggle) + if (mus_enabled) S_RestartMusic(); return OSDCMD_OK; diff --git a/source/duke3d/src/premap.cpp b/source/duke3d/src/premap.cpp index 749005dc5..229422b29 100644 --- a/source/duke3d/src/premap.cpp +++ b/source/duke3d/src/premap.cpp @@ -1319,7 +1319,7 @@ void G_NewGame(int volumeNum, int levelNum, int skillNum) gameHandleEvents(); - if (ud.skill_voice > 0 && ud.config.SoundToggle) + if (ud.skill_voice > 0 && snd_enabled) { while (FX_SoundActive(ud.skill_voice)) gameHandleEvents(); diff --git a/source/duke3d/src/savegame.cpp b/source/duke3d/src/savegame.cpp index 2c56e544f..6466dbd81 100644 --- a/source/duke3d/src/savegame.cpp +++ b/source/duke3d/src/savegame.cpp @@ -2450,7 +2450,7 @@ static void postloadplayer(int32_t savegamep) else S_ContinueLevelMusic(); - if (ud.config.MusicToggle) + if (mus_enabled) S_PauseMusic(false); g_player[myconnectindex].ps->gm = MODE_GAME; @@ -2470,7 +2470,7 @@ static void postloadplayer(int32_t savegamep) for (SPRITES_OF(STAT_FX, i)) if (sprite[i].picnum == MUSICANDSFX) { - T2(i) = ud.config.SoundToggle; + T2(i) = snd_enabled; T1(i) = 0; } diff --git a/source/duke3d/src/screens.cpp b/source/duke3d/src/screens.cpp index 6b72a606f..0bdc0afe4 100644 --- a/source/duke3d/src/screens.cpp +++ b/source/duke3d/src/screens.cpp @@ -2203,7 +2203,7 @@ void G_BonusScreen(int32_t bonusonly) videoClearScreen(0); G_DisplayMPResultsScreen(); - if (ud.config.MusicToggle) + if (mus_enabled) S_PlaySound(BONUSMUSIC); videoNextPage(); @@ -2244,7 +2244,7 @@ void G_BonusScreen(int32_t bonusonly) gametext_center_shade(192, "Press any key or button to continue", quotepulseshade); - if (ud.config.MusicToggle) + if (mus_enabled) S_PlaySound(BONUSMUSIC); videoNextPage(); diff --git a/source/duke3d/src/sector.cpp b/source/duke3d/src/sector.cpp index 400623d9a..4127590c9 100644 --- a/source/duke3d/src/sector.cpp +++ b/source/duke3d/src/sector.cpp @@ -2605,7 +2605,7 @@ void P_HandleSharedKeys(int playerNum) } else { - if (ud.config.MusicToggle) S_PauseMusic(false); + if (mus_enabled) S_PauseMusic(false); S_PauseSounds(false); diff --git a/source/duke3d/src/sounds.cpp b/source/duke3d/src/sounds.cpp index 4eda9f73b..b819589cf 100644 --- a/source/duke3d/src/sounds.cpp +++ b/source/duke3d/src/sounds.cpp @@ -66,14 +66,14 @@ void S_SoundStartup(void) initprintf("Initializing sound... "); - if (FX_Init(ud.config.NumVoices, ud.config.NumChannels, ud.config.MixRate, initdata) != FX_Ok) + if (FX_Init(snd_numvoices, snd_numchannels, snd_mixrate, initdata) != FX_Ok) { initprintf("failed! %s\n", FX_ErrorString(FX_Error)); return; } - initprintf("%d voices, %d channels, %d-bit %d Hz\n", ud.config.NumVoices, ud.config.NumChannels, - ud.config.NumBits, ud.config.MixRate); + initprintf("%d voices, %d channels, 16-bit %d Hz\n", snd_numvoices, snd_numchannels, + snd_mixrate); for (int i = 0; i <= g_highestSoundIdx; ++i) { @@ -90,10 +90,10 @@ void S_SoundStartup(void) cacheAllSounds(); - FX_SetVolume(ud.config.FXVolume); - S_MusicVolume(ud.config.MusicVolume); + snd_fxvolume.Callback(); + S_MusicVolume(mus_volume); - FX_SetReverseStereo(ud.config.ReverseStereo); + snd_reversestereo.Callback(); FX_SetCallBack(S_Callback); FX_SetPrintf(OSD_Printf); mutex_init(&m_callback); @@ -117,7 +117,7 @@ void S_MusicStartup(void) if (MUSIC_Init(0, 0) == MUSIC_Ok || MUSIC_Init(1, 0) == MUSIC_Ok) { - MUSIC_SetVolume(ud.config.MusicVolume); + MUSIC_SetVolume(mus_volume); return; } @@ -206,7 +206,7 @@ void S_MenuSound(void) static int S_PlayMusic(const char *fn) { - if (!ud.config.MusicToggle) + if (!mus_enabled) return 0; if (fn == NULL) @@ -261,7 +261,7 @@ static int S_PlayMusic(const char *fn) } else { - int MyMusicVoice = FX_Play(MyMusicPtr, MusicLen, 0, 0, 0, ud.config.MusicVolume, ud.config.MusicVolume, ud.config.MusicVolume, + int MyMusicVoice = FX_Play(MyMusicPtr, MusicLen, 0, 0, 0, mus_volume, mus_volume, mus_volume, FX_MUSIC_PRIORITY, 1.f, MUSIC_ID); if (MyMusicVoice <= FX_Ok) @@ -640,7 +640,7 @@ int S_PlaySound3D(int num, int spriteNum, const vec3_t *pos) { int32_t j = VM_OnEventWithReturn(EVENT_SOUND, spriteNum, screenpeek, num); - if ((j == -1 && num != -1) || !ud.config.SoundToggle) // check that the user returned -1, but only if -1 wasn't playing already (in which case, warn) + if ((j == -1 && num != -1) || !snd_enabled) // check that the user returned -1, but only if -1 wasn't playing already (in which case, warn) return -1; int const sndNum = j; @@ -663,10 +663,10 @@ int S_PlaySound3D(int num, int spriteNum, const vec3_t *pos) { if ((g_netServer || ud.multimode > 1) && PN(spriteNum) == APLAYER && P_Get(spriteNum) != screenpeek) // other player sound { - if ((ud.config.VoiceToggle & 4) != 4) + if ((snd_speech & 4) != 4) return -1; } - else if ((ud.config.VoiceToggle & 1) != 1) + else if ((snd_speech & 1) != 1) return -1; // don't play if any Duke talk sounds are already playing @@ -780,7 +780,7 @@ int S_PlaySound(int num) { int sndnum = VM_OnEventWithReturn(EVENT_SOUND, g_player[screenpeek].ps->i, screenpeek, num); - if ((sndnum == -1 && num != -1) || !ud.config.SoundToggle) // check that the user returned -1, but only if -1 wasn't playing already (in which case, warn) + if ((sndnum == -1 && num != -1) || !snd_enabled) // check that the user returned -1, but only if -1 wasn't playing already (in which case, warn) return -1; num = sndnum; @@ -793,7 +793,7 @@ int S_PlaySound(int num) return -1; } - if ((!(ud.config.VoiceToggle & 1) && (snd.m & SF_TALK)) || ((snd.m & SF_ADULT) && ud.lockout) || !FX_VoiceAvailable(snd.pr)) + if ((!(snd_speech & 1) && (snd.m & SF_TALK)) || ((snd.m & SF_ADULT) && ud.lockout) || !FX_VoiceAvailable(snd.pr)) return -1; int const pitch = S_GetPitch(num); diff --git a/source/rr/src/actors.cpp b/source/rr/src/actors.cpp index b372e7551..cbd846a60 100644 --- a/source/rr/src/actors.cpp +++ b/source/rr/src/actors.cpp @@ -1324,10 +1324,10 @@ ACTOR_STATIC void G_MoveFX(void) int32_t const spriteHitag = (uint16_t)pSprite->hitag; DukePlayer_t *const pPlayer = g_player[screenpeek].ps; - if (T2(spriteNum) != ud.config.SoundToggle) + if (T2(spriteNum) != snd_enabled) { // If sound playback was toggled, restart. - T2(spriteNum) = ud.config.SoundToggle; + T2(spriteNum) = snd_enabled; T1(spriteNum) = 0; } @@ -1357,7 +1357,7 @@ ACTOR_STATIC void G_MoveFX(void) } } else if (pSprite->lotag < 999 && (unsigned)sector[pSprite->sectnum].lotag < 9 && // ST_9_SLIDING_ST_DOOR - ud.config.AmbienceToggle && sector[SECT(spriteNum)].floorz != sector[SECT(spriteNum)].ceilingz) + snd_ambience && sector[SECT(spriteNum)].floorz != sector[SECT(spriteNum)].ceilingz) { if (g_sounds[pSprite->lotag].m & SF_MSFX) { @@ -1377,7 +1377,7 @@ ACTOR_STATIC void G_MoveFX(void) // Start playing an ambience sound. char om = g_sounds[pSprite->lotag].m; - if (g_numEnvSoundsPlaying == ud.config.NumVoices) + if (g_numEnvSoundsPlaying == snd_numvoices) { int32_t j; diff --git a/source/rr/src/config.cpp b/source/rr/src/config.cpp index 135838db3..fb8a975ca 100644 --- a/source/rr/src/config.cpp +++ b/source/rr/src/config.cpp @@ -212,31 +212,11 @@ void CONFIG_SetDefaults(void) ud.setup.bpp = 8; #endif ud.config.useprecache = 1; - ud.config.AmbienceToggle = 1; - ud.config.FXVolume = 255; -#if defined(_WIN32) - ud.config.MixRate = 44100; -#elif defined __ANDROID__ - ud.config.MixRate = droidinfo.audio_sample_rate; -#else - ud.config.MixRate = 48000; -#endif ud.config.MouseBias = 0; ud.config.MouseDeadZone = 0; - ud.config.MusicToggle = 1; - ud.config.MusicVolume = 195; g_myAimMode = g_player[0].ps->aim_mode = 1; - ud.config.NumBits = 16; - ud.config.NumChannels = 2; -#if defined GEKKO || defined __OPENDINGUX__ - ud.config.NumVoices = 32; -#else - ud.config.NumVoices = 64; -#endif - ud.config.ReverseStereo = 0; ud.config.ShowOpponentWeapons = 0; ud.config.SmoothInput = 1; - ud.config.SoundToggle = 1; ud.althud = 1; ud.automsg = 0; ud.brightness = 8; @@ -286,7 +266,7 @@ void CONFIG_SetDefaults(void) ud.setup.fullscreen = 1; ud.setup.usemouse = 1; - ud.config.VoiceToggle = 5; // bitfield, 1 = local, 2 = dummy, 4 = other players in DM + snd_speech = 5; // bitfield, 1 = local, 2 = dummy, 4 = other players in DM ud.display_bonus_screen = 1; ud.show_level_text = 1; ud.configversion = 0; diff --git a/source/rr/src/demo.cpp b/source/rr/src/demo.cpp index cb6792620..b4b40c051 100644 --- a/source/rr/src/demo.cpp +++ b/source/rr/src/demo.cpp @@ -71,8 +71,8 @@ void Demo_PrepareWarp(void) { if (!g_demo_paused) { - g_demo_soundToggle = ud.config.SoundToggle; - ud.config.SoundToggle = 0; + g_demo_soundToggle = snd_enabled; + snd_enabled = 0; } FX_StopAllSounds(); @@ -405,8 +405,8 @@ static void Demo_SetupProfile(void) { g_demo_profile *= -1; // now >0: profile for real - g_demo_soundToggle = ud.config.SoundToggle; - ud.config.SoundToggle = 0; // restored by Demo_FinishProfile() + g_demo_soundToggle = snd_enabled; + snd_enabled = 0; // restored by Demo_FinishProfile() Bmemset(&g_prof, 0, sizeof(g_prof)); @@ -422,7 +422,7 @@ static void Demo_FinishProfile(void) double gms=g_prof.totalgamems; double dms1=g_prof.totalroomsdrawms, dms2=g_prof.totalrestdrawms; - ud.config.SoundToggle = g_demo_soundToggle; + snd_enabled = g_demo_soundToggle; if (nt > 0) { @@ -691,7 +691,7 @@ nextdemo_nomenu: if (g_demo_goalCnt>0) { g_demo_goalCnt=0; - ud.config.SoundToggle = g_demo_soundToggle; + snd_enabled = g_demo_soundToggle; } if (Demo_IsProfiling()) // don't reset g_demo_profile if it's < 0 @@ -735,10 +735,10 @@ nextdemo_nomenu: } else { - int32_t k = ud.config.SoundToggle; - ud.config.SoundToggle = 0; + int32_t k = snd_enabled; + snd_enabled = 0; G_DoMoveThings(); - ud.config.SoundToggle = k; + snd_enabled = k; } ototalclock += TICSPERFRAME; @@ -753,7 +753,7 @@ nextdemo_nomenu: if (g_demo_cnt>=g_demo_goalCnt) { g_demo_goalCnt = 0; - ud.config.SoundToggle = g_demo_soundToggle; + snd_enabled = g_demo_soundToggle; } } } diff --git a/source/rr/src/game.cpp b/source/rr/src/game.cpp index 0b24f486e..19f959224 100644 --- a/source/rr/src/game.cpp +++ b/source/rr/src/game.cpp @@ -6010,8 +6010,8 @@ static int32_t g_RTSPlaying; // Returns: started playing? extern int G_StartRTS(int lumpNum, int localPlayer) { - if (!ud.lockout && ud.config.SoundToggle && - RTS_IsInitialized() && g_RTSPlaying == 0 && (ud.config.VoiceToggle & (localPlayer ? 1 : 4))) + if (!ud.lockout && snd_enabled && + RTS_IsInitialized() && g_RTSPlaying == 0 && (snd_speech & (localPlayer ? 1 : 4))) { char *const pData = (char *)RTS_GetSound(lumpNum - 1); @@ -6411,7 +6411,7 @@ FAKE_F3: Menu_Change(MENU_SOUND_INGAME); } - if (KB_UnBoundKeyPressed(sc_F5) && ud.config.MusicToggle) + if (KB_UnBoundKeyPressed(sc_F5) && mus_enabled) { map_t *const pMapInfo = &g_mapInfo[g_musicIndex]; char *const musicString = apStrings[QUOTE_MUSIC]; @@ -7447,8 +7447,9 @@ static void G_Startup(void) G_PostCreateGameState(); if (g_netServer || ud.multimode > 1) G_CheckGametype(); - if (g_noSound) ud.config.SoundToggle = 0; - if (g_noMusic) ud.config.MusicToggle = 0; + //errr... what??? Why does this clobber the user setting? Well, it needs to be redone anyway, preferably at a lower level. + //if (g_noSound) snd_enabled = 0; + //if (g_noMusic) mus_enabled = 0; if (CommandName) { diff --git a/source/rr/src/game.h b/source/rr/src/game.h index 37f78c03e..3cfb3e17d 100644 --- a/source/rr/src/game.h +++ b/source/rr/src/game.h @@ -215,24 +215,6 @@ typedef struct { int32_t JoystickAnalogueSaturate[MAXJOYAXES]; uint8_t KeyboardKeys[NUMGAMEFUNCTIONS][2]; - // - // Sound variables - // - int32_t FXVolume; - int32_t MusicVolume; - int32_t SoundToggle; - int32_t MusicToggle; - int32_t VoiceToggle; - int32_t AmbienceToggle; - - int32_t NumVoices; - int32_t NumChannels; - int32_t NumBits; - int32_t MixRate; - - int32_t ReverseStereo; - - int32_t scripthandle; int32_t setupread; diff --git a/source/rr/src/menus.cpp b/source/rr/src/menus.cpp index 7a4ce801e..60b1f5c2f 100644 --- a/source/rr/src/menus.cpp +++ b/source/rr/src/menus.cpp @@ -1099,19 +1099,19 @@ static MenuEntry_t *ME_SAVE; static MenuEntry_t **MEL_SAVE; static int32_t soundrate, soundvoices; -static MenuOption_t MEO_SOUND = MAKE_MENUOPTION( &MF_Redfont, &MEOS_OffOn, &ud.config.SoundToggle ); +static MenuOption_t MEO_SOUND = MAKE_MENUOPTION( &MF_Redfont, &MEOS_OffOn, &snd_enabled.Value ); static MenuEntry_t ME_SOUND = MAKE_MENUENTRY( "Sound:", &MF_Redfont, &MEF_BigOptionsRt, &MEO_SOUND, Option ); -static MenuOption_t MEO_SOUND_MUSIC = MAKE_MENUOPTION( &MF_Redfont, &MEOS_OffOn, &ud.config.MusicToggle ); +static MenuOption_t MEO_SOUND_MUSIC = MAKE_MENUOPTION( &MF_Redfont, &MEOS_OffOn, mus_enabled.Value ); static MenuEntry_t ME_SOUND_MUSIC = MAKE_MENUENTRY( "Music:", &MF_Redfont, &MEF_BigOptionsRt, &MEO_SOUND_MUSIC, Option ); static MenuLink_t MEO_SOUND_CDPLAYER = { MENU_CDPLAYER, MA_Advance, }; static MenuEntry_t ME_SOUND_CDPLAYER = MAKE_MENUENTRY( "8 Track Player", &MF_Redfont, &MEF_BigOptionsRt, &MEO_SOUND_CDPLAYER, Link ); -static MenuRangeInt32_t MEO_SOUND_VOLUME_FX = MAKE_MENURANGE( &ud.config.FXVolume, &MF_Redfont, 0, 255, 0, 33, 2 ); +static MenuRangeInt32_t MEO_SOUND_VOLUME_FX = MAKE_MENURANGE( &snd_fxvolume.Value, &MF_Redfont, 0, 255, 0, 33, 2 ); static MenuEntry_t ME_SOUND_VOLUME_FX = MAKE_MENUENTRY( "Volume:", &MF_Redfont, &MEF_BigOptionsRt, &MEO_SOUND_VOLUME_FX, RangeInt32 ); -static MenuRangeInt32_t MEO_SOUND_VOLUME_MUSIC = MAKE_MENURANGE( &ud.config.MusicVolume, &MF_Redfont, 0, 255, 0, 33, 2 ); +static MenuRangeInt32_t MEO_SOUND_VOLUME_MUSIC = MAKE_MENURANGE( &mus_volume.Value, &MF_Redfont, 0, 255, 0, 33, 2 ); static MenuEntry_t ME_SOUND_VOLUME_MUSIC = MAKE_MENUENTRY( "Music:", &MF_Redfont, &MEF_BigOptionsRt, &MEO_SOUND_VOLUME_MUSIC, RangeInt32 ); static MenuOption_t MEO_SOUND_DUKETALK = MAKE_MENUOPTION(&MF_Redfont, &MEOS_NoYes, NULL); @@ -2055,15 +2055,15 @@ static void Menu_Pre(MenuID_t cm) case MENU_SOUND: case MENU_SOUND_INGAME: case MENU_ADVSOUND: - MenuEntry_DisableOnCondition(&ME_SOUND_VOLUME_FX, !ud.config.SoundToggle); - MenuEntry_DisableOnCondition(&ME_SOUND_VOLUME_MUSIC, !ud.config.MusicToggle); - MenuEntry_DisableOnCondition(&ME_SOUND_DUKETALK, !ud.config.SoundToggle); - MenuEntry_DisableOnCondition(&ME_SOUND_SAMPLINGRATE, !ud.config.SoundToggle && !ud.config.MusicToggle); + MenuEntry_DisableOnCondition(&ME_SOUND_VOLUME_FX, !snd_enabled); + MenuEntry_DisableOnCondition(&ME_SOUND_VOLUME_MUSIC, !mus_enabled); + MenuEntry_DisableOnCondition(&ME_SOUND_DUKETALK, !snd_enabled); + MenuEntry_DisableOnCondition(&ME_SOUND_SAMPLINGRATE, !snd_enabled && !mus_enabled); #ifndef EDUKE32_SIMPLE_MENU - MenuEntry_DisableOnCondition(&ME_SOUND_NUMVOICES, !ud.config.SoundToggle); + MenuEntry_DisableOnCondition(&ME_SOUND_NUMVOICES, !snd_enabled); #endif - MenuEntry_DisableOnCondition(&ME_SOUND_RESTART, soundrate == ud.config.MixRate && - soundvoices == ud.config.NumVoices); + MenuEntry_DisableOnCondition(&ME_SOUND_RESTART, soundrate == snd_mixrate && + soundvoices == snd_numvoices); break; case MENU_SAVESETUP: @@ -3625,8 +3625,8 @@ static void Menu_EntryLinkActivate(MenuEntry_t *entry) } else if (entry == &ME_SOUND_RESTART) { - ud.config.MixRate = soundrate; - ud.config.NumVoices = soundvoices; + snd_mixrate = soundrate; + snd_numvoices = soundvoices; S_SoundShutdown(); S_MusicShutdown(); @@ -3637,7 +3637,7 @@ static void Menu_EntryLinkActivate(MenuEntry_t *entry) FX_StopAllSounds(); S_ClearSoundLocks(); - if (ud.config.MusicToggle) + if (mus_enabled) S_RestartMusic(); } else if (entry == &ME_SAVESETUP_CLEANUP) @@ -3714,7 +3714,7 @@ static int32_t Menu_EntryOptionModify(MenuEntry_t *entry, int32_t newOption) } else if (entry == &ME_SOUND_MUSIC || entry == &ME_CDPLAYER_TRACK) { - ud.config.MusicToggle = newOption; + mus_enabled = newOption; if (newOption == 0) S_PauseMusic(true); @@ -3725,7 +3725,7 @@ static int32_t Menu_EntryOptionModify(MenuEntry_t *entry, int32_t newOption) } } else if (entry == &ME_SOUND_DUKETALK) - ud.config.VoiceToggle = (ud.config.VoiceToggle&~1) | newOption; + snd_speech = (snd_speech&~1) | newOption; else if (entry == &ME_MOUSESETUP_SMOOTH) CONTROL_SmoothMouse = ud.config.SmoothInput; else if (entry == &ME_JOYSTICKAXIS_ANALOG) @@ -4018,7 +4018,7 @@ static int32_t Menu_EntryOptionSource(MenuEntry_t *entry, int32_t currentValue) if (entry == &ME_GAMESETUP_WEAPSWITCH_PICKUP) return (ud.weaponswitch & 1) ? ((ud.weaponswitch & 4) ? 2 : 1) : 0; else if (entry == &ME_SOUND_DUKETALK) - return ud.config.VoiceToggle & 1; + return snd_speech & 1; else if (entry == &ME_NETOPTIONS_MONSTERS) return (ud.m_monsters_off ? g_skillCnt : ud.m_player_skill); @@ -4596,8 +4596,8 @@ static void Menu_AboutToStartDisplaying(Menu_t * m) break; case MENU_ADVSOUND: - soundrate = ud.config.MixRate; - soundvoices = ud.config.NumVoices; + soundrate = snd_mixrate; + soundvoices = snd_numvoices; break; default: @@ -5794,7 +5794,7 @@ static void M_RunMenu_CdPlayer(Menu_t *cm, MenuMenu_t *menu, const vec2_t origin const int32_t mousex = origin.x+(x<<15)-(4<<16); const int32_t mousey = origin.y+(y<<16)-(4<<16); - if (e == menu->currentEntry && ud.config.MusicToggle) + if (e == menu->currentEntry && mus_enabled) rotatesprite_fs(origin.x+(x<<15), origin.y+(y<<16), 32768, 0, CDPLAYER+1, 16, 0, 10); @@ -5806,7 +5806,7 @@ static void M_RunMenu_CdPlayer(Menu_t *cm, MenuMenu_t *menu, const vec2_t origin S_PlaySound(RR ? 341 : PISTOL_BODYHIT); - if (ud.config.MusicToggle) + if (mus_enabled) { S_StopMusic(); S_PlayRRMusic(2+menu->currentEntry); @@ -5839,9 +5839,9 @@ static void M_RunMenu_CdPlayer(Menu_t *cm, MenuMenu_t *menu, const vec2_t origin { if (!m_mousecaught && g_mouseClickState == MOUSE_RELEASED) { - ud.config.MusicToggle = !ud.config.MusicToggle; + mus_enabled = !mus_enabled; - if (ud.config.MusicToggle == 0) + if (mus_enabled == 0) S_PauseMusic(true); else { @@ -5853,7 +5853,7 @@ static void M_RunMenu_CdPlayer(Menu_t *cm, MenuMenu_t *menu, const vec2_t origin } } - if (ud.config.MusicToggle) + if (mus_enabled) rotatesprite_fs(origin.x+((MENU_MARGIN_CENTER-60)<<16), origin.y+(113<<16), 32768, 0, CDPLAYER+3, 16, 0, 10); else rotatesprite_fs(origin.x+((MENU_MARGIN_CENTER-60)<<16), origin.y+(113<<16), 32768, 0, CDPLAYER+2, 16, 0, 10); @@ -7109,9 +7109,9 @@ static void Menu_RunInput(Menu_t *cm) { I_AdvanceTriggerClear(); - ud.config.MusicToggle = !ud.config.MusicToggle; + mus_enabled = !mus_enabled; - if (ud.config.MusicToggle == 0) + if (mus_enabled == 0) S_PauseMusic(true); else { @@ -7142,7 +7142,7 @@ static void Menu_RunInput(Menu_t *cm) currentry = Menu_RunInput_Menu_Movement(menu, MM_Up); - if (ud.config.MusicToggle) + if (mus_enabled) { S_StopMusic(); S_PlayRRMusic(2+menu->currentEntry); @@ -7157,7 +7157,7 @@ static void Menu_RunInput(Menu_t *cm) currentry = Menu_RunInput_Menu_Movement(menu, MM_Down); - if (ud.config.MusicToggle) + if (mus_enabled) { S_StopMusic(); S_PlayRRMusic(2+menu->currentEntry); @@ -7169,7 +7169,7 @@ static void Menu_RunInput(Menu_t *cm) menu->currentEntry = 0; S_PlaySound(RR ? 335 : KICK_HIT); - if (ud.config.MusicToggle) + if (mus_enabled) { S_StopMusic(); S_PlayRRMusic(2+menu->currentEntry); @@ -7181,7 +7181,7 @@ static void Menu_RunInput(Menu_t *cm) menu->currentEntry = 1; S_PlaySound(RR ? 335 : KICK_HIT); - if (ud.config.MusicToggle) + if (mus_enabled) { S_StopMusic(); S_PlayRRMusic(2+menu->currentEntry); @@ -7193,7 +7193,7 @@ static void Menu_RunInput(Menu_t *cm) menu->currentEntry = 2; S_PlaySound(RR ? 335 : KICK_HIT); - if (ud.config.MusicToggle) + if (mus_enabled) { S_StopMusic(); S_PlayRRMusic(2+menu->currentEntry); @@ -7205,7 +7205,7 @@ static void Menu_RunInput(Menu_t *cm) menu->currentEntry = 3; S_PlaySound(RR ? 335 : KICK_HIT); - if (ud.config.MusicToggle) + if (mus_enabled) { S_StopMusic(); S_PlayRRMusic(2+menu->currentEntry); @@ -7217,7 +7217,7 @@ static void Menu_RunInput(Menu_t *cm) menu->currentEntry = 4; S_PlaySound(RR ? 335 : KICK_HIT); - if (ud.config.MusicToggle) + if (mus_enabled) { S_StopMusic(); S_PlayRRMusic(2+menu->currentEntry); @@ -7229,7 +7229,7 @@ static void Menu_RunInput(Menu_t *cm) menu->currentEntry = 5; S_PlaySound(RR ? 335 : KICK_HIT); - if (ud.config.MusicToggle) + if (mus_enabled) { S_StopMusic(); S_PlayRRMusic(2+menu->currentEntry); @@ -7241,7 +7241,7 @@ static void Menu_RunInput(Menu_t *cm) menu->currentEntry = 6; S_PlaySound(RR ? 335 : KICK_HIT); - if (ud.config.MusicToggle) + if (mus_enabled) { S_StopMusic(); S_PlayRRMusic(2+menu->currentEntry); @@ -7253,7 +7253,7 @@ static void Menu_RunInput(Menu_t *cm) menu->currentEntry = 7; S_PlaySound(RR ? 335 : KICK_HIT); - if (ud.config.MusicToggle) + if (mus_enabled) { S_StopMusic(); S_PlayRRMusic(2+menu->currentEntry); diff --git a/source/rr/src/osdcmds.cpp b/source/rr/src/osdcmds.cpp index c97c9fb04..92ef643ec 100644 --- a/source/rr/src/osdcmds.cpp +++ b/source/rr/src/osdcmds.cpp @@ -376,7 +376,7 @@ static int osdcmd_restartsound(osdcmdptr_t UNUSED(parm)) FX_StopAllSounds(); S_ClearSoundLocks(); - if (ud.config.MusicToggle) + if (mus_enabled) S_RestartMusic(); return OSDCMD_OK; diff --git a/source/rr/src/premap.cpp b/source/rr/src/premap.cpp index fe86005c9..382cd4d65 100644 --- a/source/rr/src/premap.cpp +++ b/source/rr/src/premap.cpp @@ -1870,7 +1870,7 @@ void G_NewGame(int volumeNum, int levelNum, int skillNum) G_HandleAsync(); - if (g_skillSoundVoice >= 0 && ud.config.SoundToggle) + if (g_skillSoundVoice >= 0 && snd_enabled) { while (FX_SoundActive(g_skillSoundVoice)) G_HandleAsync(); diff --git a/source/rr/src/savegame.cpp b/source/rr/src/savegame.cpp index 0de9064b7..27468e693 100644 --- a/source/rr/src/savegame.cpp +++ b/source/rr/src/savegame.cpp @@ -1881,7 +1881,7 @@ static void postloadplayer(int32_t savegamep) S_PlayLevelMusicOrNothing(musicIdx); } - if (ud.config.MusicToggle) + if (mus_enabled) S_PauseMusic(false); g_player[myconnectindex].ps->gm = MODE_GAME; @@ -1901,7 +1901,7 @@ static void postloadplayer(int32_t savegamep) for (SPRITES_OF(STAT_FX, i)) if (sprite[i].picnum == MUSICANDSFX) { - T2(i) = ud.config.SoundToggle; + T2(i) = snd_enabled; T1(i) = 0; } diff --git a/source/rr/src/screens.cpp b/source/rr/src/screens.cpp index 0c83abf0d..313d31cf7 100644 --- a/source/rr/src/screens.cpp +++ b/source/rr/src/screens.cpp @@ -2228,7 +2228,7 @@ void G_BonusScreen(int32_t bonusonly) videoClearScreen(0); G_DisplayMPResultsScreen(); - if (ud.config.MusicToggle) + if (mus_enabled) S_PlaySound(BONUSMUSIC); videoNextPage(); @@ -2272,7 +2272,7 @@ void G_BonusScreen(int32_t bonusonly) gametext_center_shade(192, "Press any key or button to continue", quotepulseshade); - if (ud.config.MusicToggle) + if (mus_enabled) S_PlaySound(BONUSMUSIC); } else @@ -2822,7 +2822,7 @@ void G_BonusScreenRRRA(int32_t bonusonly) videoClearScreen(0); G_DisplayMPResultsScreen(); - if (ud.config.MusicToggle) + if (mus_enabled) S_PlaySound(BONUSMUSIC); videoNextPage(); diff --git a/source/rr/src/sector.cpp b/source/rr/src/sector.cpp index 012404ece..9b0934425 100644 --- a/source/rr/src/sector.cpp +++ b/source/rr/src/sector.cpp @@ -3653,7 +3653,7 @@ void P_HandleSharedKeys(int playerNum) } else { - if (ud.config.MusicToggle) S_PauseMusic(false); + if (mus_enabled) S_PauseMusic(false); S_PauseSounds(false); diff --git a/source/rr/src/sounds.cpp b/source/rr/src/sounds.cpp index 398c88402..cd1ace3bd 100644 --- a/source/rr/src/sounds.cpp +++ b/source/rr/src/sounds.cpp @@ -52,14 +52,14 @@ void S_SoundStartup(void) initprintf("Initializing sound... "); - if (FX_Init(ud.config.NumVoices, ud.config.NumChannels, ud.config.MixRate, initdata) != FX_Ok) + if (FX_Init(snd_numvoices, snd_numchannels, snd_mixrate, initdata) != FX_Ok) { initprintf("failed! %s\n", FX_ErrorString(FX_Error)); return; } - initprintf("%d voices, %d channels, %d-bit %d Hz\n", ud.config.NumVoices, ud.config.NumChannels, - ud.config.NumBits, ud.config.MixRate); + initprintf("%d voices, %d channels, 16-bit %d Hz\n", snd_numvoices, snd_numchannels, + snd_mixrate); for (int i = 0; i <= g_highestSoundIdx; ++i) { @@ -75,10 +75,10 @@ void S_SoundStartup(void) S_PrecacheSounds(); - FX_SetVolume(ud.config.FXVolume); - S_MusicVolume(ud.config.MusicVolume); + snd_fxvolume.Callback(); + S_MusicVolume(mus_volume); - FX_SetReverseStereo(ud.config.ReverseStereo); + snd_reversestereo.Callback(); FX_SetCallBack(S_Callback); FX_SetPrintf(initprintf); } @@ -101,7 +101,7 @@ void S_MusicStartup(void) if (MUSIC_Init(0, 0) == MUSIC_Ok || MUSIC_Init(1, 0) == MUSIC_Ok) { - MUSIC_SetVolume(ud.config.MusicVolume); + MUSIC_SetVolume(mus_volume); return; } @@ -187,7 +187,7 @@ void S_MenuSound(void) static int S_PlayMusic(const char *fn, int loop) { - if (!ud.config.MusicToggle) + if (!mus_enabled) return 0; if (fn == NULL) @@ -242,7 +242,7 @@ static int S_PlayMusic(const char *fn, int loop) } else { - int MyMusicVoice = FX_Play(MyMusicPtr, MusicLen, 0, 0, 0, ud.config.MusicVolume, ud.config.MusicVolume, ud.config.MusicVolume, + int MyMusicVoice = FX_Play(MyMusicPtr, MusicLen, 0, 0, 0, mus_volume, mus_volume, mus_volume, FX_MUSIC_PRIORITY, 1.f, MUSIC_ID); if (MyMusicVoice <= FX_Ok) @@ -603,7 +603,7 @@ int S_PlaySound3D(int num, int spriteNum, const vec3_t *pos) { int32_t j; - if (!ud.config.SoundToggle) // check that the user returned -1, but only if -1 wasn't playing already (in which case, warn) + if (!snd_enabled) // check that the user returned -1, but only if -1 wasn't playing already (in which case, warn) return -1; int const sndNum = num; @@ -626,10 +626,10 @@ int S_PlaySound3D(int num, int spriteNum, const vec3_t *pos) { if ((g_netServer || ud.multimode > 1) && PN(spriteNum) == APLAYER && P_Get(spriteNum) != screenpeek) // other player sound { - if ((ud.config.VoiceToggle & 4) != 4) + if ((snd_speech & 4) != 4) return -1; } - else if ((ud.config.VoiceToggle & 1) != 1) + else if ((snd_speech & 1) != 1) return -1; // don't play if any Duke talk sounds are already playing @@ -742,7 +742,7 @@ int S_PlaySound(int num) { int sndnum; - if (!ud.config.SoundToggle) // check that the user returned -1, but only if -1 wasn't playing already (in which case, warn) + if (!snd_enabled) // check that the user returned -1, but only if -1 wasn't playing already (in which case, warn) return -1; sound_t & snd = g_sounds[num]; @@ -753,7 +753,7 @@ int S_PlaySound(int num) return -1; } - if ((!(ud.config.VoiceToggle & 1) && (snd.m & SF_TALK)) || ((snd.m & SF_ADULT) && ud.lockout) || !FX_VoiceAvailable(snd.pr)) + if ((!(snd_speech & 1) && (snd.m & SF_TALK)) || ((snd.m & SF_ADULT) && ud.lockout) || !FX_VoiceAvailable(snd.pr)) return -1; int const pitch = S_GetPitch(num); diff --git a/source/sw/src/config.cpp b/source/sw/src/config.cpp index 4759b92d6..0755f2464 100644 --- a/source/sw/src/config.cpp +++ b/source/sw/src/config.cpp @@ -66,12 +66,7 @@ int32_t NumberPlayers,CommPort,PortSpeed,IrqNumber,UartAddress; // // Sound variables // -int32_t FXDevice = 0; -int32_t MusicDevice = 0; -int32_t NumVoices = 32; -int32_t NumChannels = 2; -int32_t NumBits = 16; -int32_t MixRate = 44100; + int32_t UseMouse = 1, UseJoystick = 0; @@ -231,12 +226,6 @@ void CONFIG_SetDefaults(void) } ScreenBPP = 32; - FXDevice = 0; - MusicDevice = 0; - NumVoices = 32; - NumChannels = 2; - NumBits = 16; - MixRate = 44100; memcpy(&gs, &gs_defaults, sizeof(gs)); Bstrcpy(RTSName, DEFAULTRTSFILE); @@ -591,46 +580,7 @@ int32_t CONFIG_ReadSetup(void) if (scripthandle < 0) return -1; - SCRIPT_GetNumber(scripthandle, "Screen Setup", "ScreenMode",&ScreenMode); - SCRIPT_GetNumber(scripthandle, "Screen Setup", "ScreenWidth",&ScreenWidth); - SCRIPT_GetNumber(scripthandle, "Screen Setup", "ScreenHeight",&ScreenHeight); - SCRIPT_GetNumber(scripthandle, "Screen Setup", "ScreenBPP", &ScreenBPP); - if (ScreenBPP < 8) ScreenBPP = 8; - -#ifdef RENDERTYPEWIN - SCRIPT_GetNumber(scripthandle, "Screen Setup", "MaxRefreshFreq", (int32_t *)&maxrefreshfreq); -#endif - - SCRIPT_GetNumber(scripthandle, "Screen Setup", "GLTextureMode", &gltexfiltermode); - SCRIPT_GetNumber(scripthandle, "Screen Setup", "GLAnisotropy", &glanisotropy); - //SCRIPT_GetNumber(scripthandle, "Screen Setup", "GLUseTextureCompr", &glusetexcompr); - - SCRIPT_GetNumber(scripthandle, "Sound Setup", "FXDevice",&FXDevice); - SCRIPT_GetNumber(scripthandle, "Sound Setup", "MusicDevice",&MusicDevice); - SCRIPT_GetNumber(scripthandle, "Sound Setup", "FXVolume",&dummy); - gs.SoundVolume = dummy; - SCRIPT_GetNumber(scripthandle, "Sound Setup", "MusicVolume",&dummy); - gs.MusicVolume = dummy; - - SCRIPT_GetNumber(scripthandle, "Sound Setup", "NumVoices",&NumVoices); - SCRIPT_GetNumber(scripthandle, "Sound Setup", "NumChannels",&NumChannels); - SCRIPT_GetNumber(scripthandle, "Sound Setup", "NumBits",&NumBits); - SCRIPT_GetNumber(scripthandle, "Sound Setup", "MixRate",&MixRate); - SCRIPT_GetNumber(scripthandle, "Sound Setup", "ReverseStereo",&dummy); - gs.FlipStereo = dummy; - if (gs.FlipStereo) gs.FlipStereo = 1; - - SCRIPT_GetString(scripthandle, "Sound Setup", "WaveformTrackName", waveformtrackname); - if (waveformtrackname[0] != '\0') - memcpy(gs.WaveformTrackName, waveformtrackname, MAXWAVEFORMTRACKLENGTH); - - SCRIPT_GetNumber(scripthandle, "Setup", "ForceSetup",&ForceSetup); - SCRIPT_GetNumber(scripthandle, "Controls","UseMouse",&UseMouse); - SCRIPT_GetNumber(scripthandle, "Controls","UseJoystick",&UseJoystick); - SCRIPT_GetString(scripthandle, "Comm Setup", "RTSName",RTSName); - - SCRIPT_GetString(scripthandle, "Comm Setup","PlayerName",CommPlayerName); - + // What was here is no longer needed with a globally stored config that's being read automatically. ReadGameSetup(scripthandle); CONFIG_ReadKeys(scripthandle); @@ -661,33 +611,8 @@ void CONFIG_WriteSetup(void) if (scripthandle < 0) scripthandle = SCRIPT_Init(setupfilename); - SCRIPT_PutNumber(scripthandle, "Screen Setup", "ScreenWidth", ScreenWidth,FALSE,FALSE); - SCRIPT_PutNumber(scripthandle, "Screen Setup", "ScreenHeight",ScreenHeight,FALSE,FALSE); - SCRIPT_PutNumber(scripthandle, "Screen Setup", "ScreenMode",ScreenMode,FALSE,FALSE); - SCRIPT_PutNumber(scripthandle, "Screen Setup", "ScreenBPP",ScreenBPP,FALSE,FALSE); -#ifdef RENDERTYPEWIN - SCRIPT_PutNumber(scripthandle, "Screen Setup", "MaxRefreshFreq",maxrefreshfreq,FALSE,FALSE); -#endif - SCRIPT_PutNumber(scripthandle, "Screen Setup", "GLTextureMode",gltexfiltermode,FALSE,FALSE); - SCRIPT_PutNumber(scripthandle, "Screen Setup", "GLAnisotropy",glanisotropy,FALSE,FALSE); - //SCRIPT_PutNumber(scripthandle, "Screen Setup", "GLUseTextureCompr",glusetexcompr,FALSE,FALSE); + // What was here is no longer needed with a globally stored config that's being written automatically. - SCRIPT_PutNumber(scripthandle, "Sound Setup", "FXDevice", FXDevice, FALSE, FALSE); - SCRIPT_PutNumber(scripthandle, "Sound Setup", "MusicDevice", MusicDevice, FALSE, FALSE); - SCRIPT_PutNumber(scripthandle, "Sound Setup", "NumVoices", NumVoices, FALSE, FALSE); - SCRIPT_PutNumber(scripthandle, "Sound Setup", "NumChannels", NumChannels, FALSE, FALSE); - SCRIPT_PutNumber(scripthandle, "Sound Setup", "NumBits", NumBits, FALSE, FALSE); - SCRIPT_PutNumber(scripthandle, "Sound Setup", "MixRate", MixRate, FALSE, FALSE); - SCRIPT_PutNumber(scripthandle, "Sound Setup", "FXVolume",gs.SoundVolume,FALSE,FALSE); - SCRIPT_PutNumber(scripthandle, "Sound Setup", "MusicVolume",gs.MusicVolume,FALSE,FALSE); - dummy = gs.FlipStereo; - SCRIPT_PutNumber(scripthandle, "Sound Setup", "ReverseStereo",dummy,FALSE,FALSE); - SCRIPT_PutString(scripthandle, "Sound Setup", "WaveformTrackName", gs.WaveformTrackName); - - SCRIPT_PutNumber(scripthandle, "Setup", "ForceSetup",ForceSetup,FALSE,FALSE); - SCRIPT_PutNumber(scripthandle, "Controls","UseMouse",UseMouse,FALSE,FALSE); - SCRIPT_PutNumber(scripthandle, "Controls","UseJoystick",UseJoystick,FALSE,FALSE); - SCRIPT_PutNumber(scripthandle, "Controls","MouseSensitivity",gs.MouseSpeed,FALSE,FALSE); WriteGameSetup(scripthandle); diff --git a/source/sw/src/config.h b/source/sw/src/config.h index 5d09014c0..7f3192f96 100644 --- a/source/sw/src/config.h +++ b/source/sw/src/config.h @@ -46,17 +46,6 @@ extern int32_t ScreenBufferMode; extern int32_t VesaBufferMode; extern int32_t ForceSetup; -// sound externs -extern int32_t FXDevice; // Sound FX Card number -extern int32_t MusicDevice; // Music Card number -extern int32_t FXVolume; // FX Volume -extern int32_t MusicVolume; // Music Volume -extern int32_t NumVoices; // Number of voices -extern int32_t NumChannels; // Number of channels -extern int32_t NumBits; // Number of bits -extern int32_t MixRate; // Mixing rate -extern int32_t MidiPort; // Midi Port -extern int32_t ReverseStereo; // Reverse Stereo Channels // comm externs extern int32_t ComPort; diff --git a/source/sw/src/game.cpp b/source/sw/src/game.cpp index cc5675f0d..f885dbbb0 100644 --- a/source/sw/src/game.cpp +++ b/source/sw/src/game.cpp @@ -2113,7 +2113,7 @@ MenuLevel(void) DSPRINTF(ds,"MenuLevel..."); MONO_PRINT(ds); - if (gs.MusicOn) + if (mus_enabled) { PlaySong(NULL, RedBookSong[0], TRUE, FALSE); } @@ -2527,7 +2527,7 @@ BonusScreen(PLAYERp pp) totalclock = ototalclock = 0; limit = synctics; - if (gs.MusicOn) + if (mus_enabled) { PlaySong(voc[DIGI_ENDLEV].name, 3, TRUE, TRUE); } @@ -2845,7 +2845,7 @@ StatScreen(PLAYERp mpp) KEY_PRESSED(KEYSC_SPACE) = 0; KEY_PRESSED(KEYSC_ENTER) = 0; - if (gs.MusicOn) + if (mus_enabled) { PlaySong(voc[DIGI_ENDLEV].name, 3, TRUE, TRUE); } @@ -3075,7 +3075,7 @@ void InitRunLevel(void) extern int PlayClock; LoadGameOutsideMoveLoop = FALSE; // contains what is needed from calls below - if (gs.Ambient) + if (snd_ambience) StartAmbientSound(); SetCrosshair(); PlaySong(LevelSong, -1, TRUE, TRUE); @@ -3144,9 +3144,11 @@ void InitRunLevel(void) InitTimingVars(); SetRedrawScreen(Player + myconnectindex); - + + snd_reversestereo.Callback(); + snd_fxvolume.Callback(); FX_SetVolume(gs.SoundVolume); // Turn volume back up - if (gs.Ambient) + if (snd_ambience) StartAmbientSound(); } @@ -3157,7 +3159,7 @@ RunLevel(void) InitRunLevel(); FX_SetVolume(gs.SoundVolume); - SetSongVolume(gs.MusicVolume); + SetSongVolume(mus_volume); #if 0 waitforeverybody(); diff --git a/source/sw/src/menus.cpp b/source/sw/src/menus.cpp index 367686177..77b1ff290 100644 --- a/source/sw/src/menus.cpp +++ b/source/sw/src/menus.cpp @@ -2196,7 +2196,7 @@ MNU_InitMenus(void) slidersettings[sldr_mouse] = gs.MouseSpeed/(MOUSE_SENS_MAX_VALUE/SLDR_MOUSESENSEMAX); slidersettings[sldr_sndfxvolume] = gs.SoundVolume / (FX_VOL_MAX_VALUE/SLDR_SNDFXVOLMAX); - slidersettings[sldr_musicvolume] = gs.MusicVolume / (MUSIC_VOL_MAX_VALUE/SLDR_MUSICVOLMAX); + slidersettings[sldr_musicvolume] = mus_volume / (MUSIC_VOL_MAX_VALUE/SLDR_MUSICVOLMAX); slidersettings[sldr_scrsize] = gs.BorderNum; slidersettings[sldr_brightness] = gs.Brightness; slidersettings[sldr_bordertile] = gs.BorderTile; @@ -2227,14 +2227,14 @@ MNU_InitMenus(void) buttonsettings[btn_mouse_aim] = gs.MouseAimingType; buttonsettings[btn_mouse_invert] = gs.MouseInvert; - buttonsettings[btn_sound] = gs.FxOn; - buttonsettings[btn_music] = gs.MusicOn; - buttonsettings[btn_talking] = gs.Talking; + buttonsettings[btn_sound] = snd_enabled; + buttonsettings[btn_music] = mus_enabled; + buttonsettings[btn_talking] = snd_speech; buttonsettings[btn_voxels] = gs.Voxels; - buttonsettings[btn_ambience] = gs.Ambient; + buttonsettings[btn_ambience] = snd_ambience; buttonsettings[btn_playcd] = gs.PlayCD; - buttonsettings[btn_flipstereo] = gs.FlipStereo; + buttonsettings[btn_flipstereo] = snd_reversestereo; buttonsettings[btn_stats] = gs.Stats; slidersettings[sldr_gametype] = gs.NetGameType; @@ -3286,61 +3286,21 @@ MNU_TryMusicInit(void) SWBOOL MNU_MusicCheck(MenuItem *item) { - if (SW_SHAREWARE) - { - if (MusicDevice < 0 || !MusicInitialized) - { - SET(item->flags, mf_disabled); - } - else - { - RESET(item->flags, mf_disabled); - } - } - else - { - // Redbook audio stuff - //JBF - //if (!cdvalid) - // { - // SET(item->flags, mf_disabled); // Just don't let CD Redbook ever be invalid! - // } - //else - { - RESET(item->flags, mf_disabled); - } - } - + RESET(item->flags, mf_disabled); return TRUE; } SWBOOL MNU_FxCheck(MenuItem *item) { - if (FXDevice < 0 || !FxInitialized) - { - SET(item->flags, mf_disabled); - } - else - { - RESET(item->flags, mf_disabled); - } - + RESET(item->flags, mf_disabled); return TRUE; } SWBOOL MNU_MusicFxCheck(MenuItem *item) { - if (FXDevice < 0 && MusicDevice < 0) - { - SET(item->flags, mf_disabled); - } - else - { - RESET(item->flags, mf_disabled); - } - + RESET(item->flags, mf_disabled); return TRUE; } @@ -3432,22 +3392,22 @@ MNU_DoButton(MenuItem_p item, SWBOOL draw) if (!FxInitialized) break; - last_value = gs.FxOn; - gs.FxOn = state = buttonsettings[item->button]; - if (gs.FxOn != last_value) + last_value = snd_enabled; + snd_enabled = state = buttonsettings[item->button]; + if (snd_enabled != last_value) { - if (!gs.FxOn) + if (!snd_enabled) StopFX(); } break; case btn_music: - last_value = gs.MusicOn; - gs.MusicOn = state = buttonsettings[item->button]; - if (gs.MusicOn != last_value) + last_value = mus_enabled; + mus_enabled = state = buttonsettings[item->button]; + if (mus_enabled != last_value) { SWBOOL bak; - if (gs.MusicOn) + if (mus_enabled) { bak = DemoMode; PlaySong(LevelSong, RedBookSong[Level], TRUE, TRUE); @@ -3471,20 +3431,20 @@ MNU_DoButton(MenuItem_p item, SWBOOL draw) } break; case btn_talking: - gs.Talking = state = buttonsettings[item->button]; + snd_speech = state = buttonsettings[item->button]; break; case btn_playcd: last_value = gs.PlayCD; gs.PlayCD = state = buttonsettings[item->button]; break; case btn_ambience: - last_value = gs.Ambient; - gs.Ambient = state = buttonsettings[item->button]; - if (gs.Ambient != last_value) + last_value = snd_ambience; + snd_ambience = state = buttonsettings[item->button]; + if (snd_ambience != last_value) { if (!InMenuLevel) { - if (gs.Ambient) + if (snd_ambience) StartAmbientSound(); else StopAmbientSound(); @@ -3492,10 +3452,8 @@ MNU_DoButton(MenuItem_p item, SWBOOL draw) } break; case btn_flipstereo: - last_value = gs.FlipStereo; - gs.FlipStereo = state = buttonsettings[item->button]; - if (gs.FlipStereo != last_value) - FlipStereo(); + last_value = snd_reversestereo; + snd_reversestereo = state = buttonsettings[item->button]; break; case btn_shadows: gs.Shadows = state = buttonsettings[item->button]; @@ -3685,8 +3643,8 @@ MNU_DoSlider(short dir, MenuItem_p item, SWBOOL draw) offset = min(offset, short(SLDR_MUSICVOLMAX-1)); slidersettings[sldr_musicvolume] = offset; - gs.MusicVolume = MUSIC_MIN + (offset * VOL_MUL); - SetSongVolume(gs.MusicVolume); + mus_volume = MUSIC_MIN + (offset * VOL_MUL); + SetSongVolume(mus_volume); break; case sldr_scrsize: diff --git a/source/sw/src/save.cpp b/source/sw/src/save.cpp index 5ab20bc4c..de9af923a 100644 --- a/source/sw/src/save.cpp +++ b/source/sw/src/save.cpp @@ -1168,20 +1168,7 @@ int LoadGame(short save_num) MREAD(palette,sizeof(palette),1,fil); MREAD(palette_data,sizeof(palette_data),1,fil); - { - SWBOOL AmbBak = gs.Ambient; - SWBOOL MusicBak = gs.MusicOn; - SWBOOL FxBak = gs.FxOn; - short SndVolBak = gs.SoundVolume; - short MusVolBak = gs.MusicVolume; - MREAD(&gs,sizeof(gs),1,fil); - gs.MusicOn = MusicBak; - gs.FxOn = FxBak; - gs.Ambient = AmbBak; - gs.SoundVolume = SndVolBak; - gs.MusicVolume = MusVolBak; - } - + MREAD(&gs,sizeof(gs),1,fil); //COVERsetbrightness(gs.Brightness,(char *)palette_data); @@ -1292,10 +1279,10 @@ int LoadGame(short save_num) PlayingLevel = Level; PlaySong(LevelSong, RedBookSong[Level], TRUE, TRUE); - if (gs.Ambient) + if (snd_ambience) StartAmbientSound(); FX_SetVolume(gs.SoundVolume); - SetSongVolume(gs.MusicVolume); + SetSongVolume(mus_volume); TRAVERSE_CONNECT(i) { diff --git a/source/sw/src/serp.cpp b/source/sw/src/serp.cpp index 978f2361e..9fd192837 100644 --- a/source/sw/src/serp.cpp +++ b/source/sw/src/serp.cpp @@ -818,7 +818,7 @@ int DoDeathSpecial(short SpriteNum) DoMatchEverything(NULL, sp->lotag, ON); - if (!SW_SHAREWARE && gs.MusicOn && !alreadydid) + if (!SW_SHAREWARE && mus_enabled && !alreadydid) { PlaySong(0, RedBookSong[Level], TRUE, TRUE); alreadydid = TRUE; diff --git a/source/sw/src/settings.h b/source/sw/src/settings.h index c47816a3d..b97e03e0e 100644 --- a/source/sw/src/settings.h +++ b/source/sw/src/settings.h @@ -32,7 +32,7 @@ BEGIN_SW_NS typedef struct { int MouseSpeed; - int MusicVolume; + int mus_volume; int SoundVolume; int8_t BorderNum; int8_t Brightness; @@ -47,11 +47,6 @@ typedef struct SWBOOL Crosshair; SWBOOL AutoAim; SWBOOL Messages; - SWBOOL FxOn; - SWBOOL MusicOn; - SWBOOL Talking; - SWBOOL Ambient; - SWBOOL FlipStereo; // Net Options from Menus uint8_t NetGameType; // 0=DeathMatch [spawn], 1=Cooperative 2=DeathMatch [no spawn] uint8_t NetLevel; // 1-28 diff --git a/source/sw/src/sounds.cpp b/source/sw/src/sounds.cpp index db0c299df..321738618 100644 --- a/source/sw/src/sounds.cpp +++ b/source/sw/src/sounds.cpp @@ -410,7 +410,7 @@ extern short Level; SWBOOL PlaySong(char *song_file_name, int cdaudio_track, SWBOOL loop, SWBOOL restart) { - if (!gs.MusicOn) + if (!mus_enabled) { return FALSE; } @@ -553,7 +553,7 @@ StopSong(void) void PauseSong(SWBOOL pauseon) { - if (!gs.MusicOn) return; + if (!mus_enabled) return; if (SongType == SongTypeWave && SongVoice >= 0) { @@ -818,7 +818,7 @@ PlaySound(int num, int *x, int *y, int *z, Voc3D_Flags flags) if (Prediction) return -1; - if (!gs.FxOn) + if (!snd_enabled) return -1; PRODUCTION_ASSERT(num >= 0 && num < DIGI_MAX); @@ -833,7 +833,7 @@ PlaySound(int num, int *x, int *y, int *z, Voc3D_Flags flags) sp = &sprite[SoundSpriteNum]; } - if (gs.Ambient && TEST(flags,v3df_ambient) && !TEST(flags,v3df_nolookup)) // Look for invalid ambient numbers + if (snd_ambience && TEST(flags,v3df_ambient) && !TEST(flags,v3df_nolookup)) // Look for invalid ambient numbers { if (num < 0 || num > MAX_AMBIENT_SOUNDS) { @@ -856,7 +856,7 @@ PlaySound(int num, int *x, int *y, int *z, Voc3D_Flags flags) v3p->priority = 0; v3p->FX_Ok = FALSE; // Hasn't played yet - if (gs.Ambient && TEST(flags,v3df_ambient) && !TEST(flags,v3df_nolookup)) + if (snd_ambience && TEST(flags,v3df_ambient) && !TEST(flags,v3df_nolookup)) { v3p->maxtics = STD_RANDOM_RANGE(ambarray[num].maxtics); flags |= ambarray[num].ambient_flags; // Add to flags if any @@ -949,7 +949,7 @@ PlaySound(int num, int *x, int *y, int *z, Voc3D_Flags flags) } // Assign ambient priorities based on distance - if (gs.Ambient && TEST(flags, v3df_ambient)) + if (snd_ambience && TEST(flags, v3df_ambient)) { v3p->priority = v3p->vp->priority - (sound_dist / 26); priority = v3p->priority; @@ -1047,7 +1047,7 @@ void PlaySoundRTS(int rts_num) char *rtsptr; int voice=-1; - if (!RTS_IsInitialized() || !gs.FxOn) + if (!RTS_IsInitialized() || !snd_enabled) return; rtsptr = (char *)RTS_GetSound(rts_num - 1); @@ -1117,39 +1117,25 @@ LoadSong(const char *filename) return TRUE; } - -void FlipStereo(void) -{ - FX_SetReverseStereo(gs.FlipStereo); -} - void SoundStartup(void) { int32_t status; void *initdata = 0; - // if they chose None lets return - if (FXDevice < 0) - { - gs.FxOn = FALSE; - return; - } #ifdef MIXERTYPEWIN initdata = (void *) win_gethwnd(); #endif - //gs.FxOn = TRUE; + //snd_enabled = TRUE; - status = FX_Init(NumVoices, NumChannels, MixRate, initdata); + status = FX_Init(snd_numvoices, snd_numchannels, snd_mixrate, initdata); if (status == FX_Ok) { FxInitialized = TRUE; - FX_SetVolume(gs.SoundVolume); - - if (gs.FlipStereo) - FX_SetReverseStereo(!FX_GetReverseStereo()); + snd_fxvolume.Callback(); + snd_reversestereo.Callback(); } if (status != FX_Ok) { @@ -1172,12 +1158,6 @@ SoundShutdown(void) { int32_t status; - // if they chose None lets return - if (FXDevice < 0) - { - return; - } - if (!FxInitialized) return; @@ -1216,21 +1196,16 @@ void loadtmb(void) void MusicStartup(void) { // if they chose None lets return - if (MusicDevice < 0) - { - gs.MusicOn = FALSE; - return; - } if (MUSIC_Init(0, 0) == MUSIC_Ok || MUSIC_Init(1, 0) == MUSIC_Ok) { MusicInitialized = TRUE; - MUSIC_SetVolume(gs.MusicVolume); + MUSIC_SetVolume(mus_volume); } else { buildprintf("Music error: %s\n",MUSIC_ErrorString(MUSIC_ErrorCode)); - gs.MusicOn = FALSE; + mus_enabled = FALSE; } #if 0 @@ -1257,13 +1232,6 @@ MusicShutdown(void) { int32_t status; - // if they chose None lets return - if (MusicDevice < 0) - return; - - if (!MusicInitialized) - return; - StopSong(); status = MUSIC_Shutdown(); @@ -1580,7 +1548,7 @@ DoTimedSound(VOC3D_INFOp p) // Sound was bumped from active sounds list, try to play again. // Don't bother if voices are already maxed out. - if (FX_SoundsPlaying() < NumVoices) + if (FX_SoundsPlaying() < snd_numvoices) { if (p->flags & v3df_follow) { @@ -1831,10 +1799,10 @@ DoUpdateSounds3D(void) // again. // Don't bother if voices are already maxed out. // Sort looping vocs in order of priority and distance - //if (FX_SoundsPlaying() < NumVoices && dist <= 255) + //if (FX_SoundsPlaying() < snd_numvoices && dist <= 255) if (dist <= 255) { - for (i=0; ipriority >= TmpVocArray[i].priority) { @@ -1862,13 +1830,13 @@ DoUpdateSounds3D(void) // Only update these sounds 5x per second! Woo hoo!, aren't we optimized now? //if(MoveSkip8==0) // { - for (i=0; i= NumVoices || !p) break; + //if (FX_SoundsPlaying() >= snd_numvoices || !p) break; if (!p) break; ASSERT(p->num >= 0 && p->num < DIGI_MAX); diff --git a/source/sw/src/sounds.h b/source/sw/src/sounds.h index cf2eedc4f..791de9117 100644 --- a/source/sw/src/sounds.h +++ b/source/sw/src/sounds.h @@ -86,7 +86,6 @@ void UnInitSound(void); void InitFX(void); void InitMusic(void); void StopFX(void); -void FlipStereo(void); void StopSong(void); void PauseSong(SWBOOL pauseon); void StopSound(void); diff --git a/source/sw/src/sumo.cpp b/source/sw/src/sumo.cpp index 7beed8bba..4e0e7da5d 100644 --- a/source/sw/src/sumo.cpp +++ b/source/sw/src/sumo.cpp @@ -802,7 +802,7 @@ int DoSumoDeathMelt(short SpriteNum) u->ID = 0; DoMatchEverything(NULL, sp->lotag, ON); - if (!SW_SHAREWARE && gs.MusicOn && !alreadydid) + if (!SW_SHAREWARE && mus_enabled && !alreadydid) { PlaySong(0, RedBookSong[Level], TRUE, TRUE); alreadydid = TRUE; @@ -881,7 +881,7 @@ BossHealthMeter(void) if (i == 0 && !serpwasseen) { serpwasseen = TRUE; - if (!SW_SHAREWARE && gs.MusicOn) + if (!SW_SHAREWARE && mus_enabled) { PlaySong(0, 13, TRUE, TRUE); } @@ -889,7 +889,7 @@ BossHealthMeter(void) else if (i == 1 && !sumowasseen) { sumowasseen = TRUE; - if (!SW_SHAREWARE && gs.MusicOn) + if (!SW_SHAREWARE && mus_enabled) { PlaySong(0, 13, TRUE, TRUE); } @@ -897,7 +897,7 @@ BossHealthMeter(void) else if (i == 2 && !zillawasseen) { zillawasseen = TRUE; - if (!SW_SHAREWARE && gs.MusicOn) + if (!SW_SHAREWARE && mus_enabled) { PlaySong(0, 13, TRUE, TRUE); } diff --git a/source/sw/src/swconfig.cpp b/source/sw/src/swconfig.cpp index cacd95149..3d57dbcc5 100644 --- a/source/sw/src/swconfig.cpp +++ b/source/sw/src/swconfig.cpp @@ -166,19 +166,19 @@ void ReadGameSetup(int32_t scripthandle) dummy = -1; SCRIPT_GetNumber(scripthandle, "Options", "Talking",&dummy); - if (dummy != -1) gs.Talking = dummy; + if (dummy != -1) snd_speech = dummy; dummy = -1; SCRIPT_GetNumber(scripthandle, "Options", "Ambient",&dummy); - if (dummy != -1) gs.Ambient = dummy; + if (dummy != -1) snd_ambience = dummy; dummy = -1; SCRIPT_GetNumber(scripthandle, "Options", "FxOn",&dummy); - if (dummy != -1) gs.FxOn = dummy; + if (dummy != -1) snd_enabled = dummy; dummy = -1; SCRIPT_GetNumber(scripthandle, "Options", "MusicOn",&dummy); - if (dummy != -1) gs.MusicOn = dummy; + if (dummy != -1) mus_enabled = dummy; dummy = -1; SCRIPT_GetNumber(scripthandle, "Controls", "MouseAiming",&dummy); @@ -296,16 +296,16 @@ void WriteGameSetup(int32_t scripthandle) SCRIPT_PutNumber(scripthandle, "Options", "AutoAim",dummy,FALSE,FALSE); dummy = gs.Messages; SCRIPT_PutNumber(scripthandle, "Options", "Messages",dummy,FALSE,FALSE); - dummy = gs.Talking; + dummy = snd_speech; SCRIPT_PutNumber(scripthandle, "Options", "Talking",dummy,FALSE,FALSE); - dummy = gs.Ambient; + dummy = snd_ambience; SCRIPT_PutNumber(scripthandle, "Options", "Ambient",dummy,FALSE,FALSE); - dummy = gs.FxOn; + dummy = snd_enabled; SCRIPT_PutNumber(scripthandle, "Options", "FxOn",dummy,FALSE,FALSE); dummy = gs.MouseAimingType; SCRIPT_PutNumber(scripthandle, "Controls", "MouseAiming",dummy,FALSE,FALSE); - dummy = gs.MusicOn; + dummy = mus_enabled; SCRIPT_PutNumber(scripthandle, "Options", "MusicOn",dummy,FALSE,FALSE); dummy = gs.NetGameType; diff --git a/source/sw/src/zilla.cpp b/source/sw/src/zilla.cpp index 45c2952b0..a1530e963 100644 --- a/source/sw/src/zilla.cpp +++ b/source/sw/src/zilla.cpp @@ -777,7 +777,7 @@ int DoZillaDeathMelt(short SpriteNum) RESET(u->Flags, SPR_JUMPING|SPR_FALLING|SPR_MOVED); //DoMatchEverything(NULL, sp->lotag, ON); - if (!SW_SHAREWARE && gs.MusicOn && !alreadydid) + if (!SW_SHAREWARE && mus_enabled && !alreadydid) { PlaySong(0, RedBookSong[Level], TRUE, TRUE); alreadydid = TRUE;