From b15bd727c2326e6fe10a92cc08b2eff778c97727 Mon Sep 17 00:00:00 2001 From: NoHomoBoi <36680385+KiritoDv@users.noreply.github.com> Date: Sat, 13 Jun 2020 02:16:00 -0500 Subject: [PATCH] Added sfx and env volume settings --- include/text_options_strings.h.in | 4 +++- src/audio/external.c | 4 ++-- src/audio/external.h | 2 +- src/game/options_menu.c | 8 ++++++-- src/pc/configfile.c | 4 ++++ src/pc/configfile.h | 2 ++ src/pc/pc_main.c | 4 +++- 7 files changed, 21 insertions(+), 7 deletions(-) diff --git a/include/text_options_strings.h.in b/include/text_options_strings.h.in index 03e1f753..7b68f0c4 100644 --- a/include/text_options_strings.h.in +++ b/include/text_options_strings.h.in @@ -107,7 +107,9 @@ #define TEXT_OPT_NEAREST _("Nearest") #define TEXT_OPT_LINEAR _("Linear") #define TEXT_OPT_MVOLUME _("Master Volume") -#define TEXT_OPT_TMUSIC _("Music Volume") +#define TEXT_OPT_MUSIC_VOLUME _("Music Volume") +#define TEXT_OPT_SFX_VOLUME _("Sfx Volume") +#define TEXT_OPT_ENV_VOLUME _("Env Volume") #define TEXT_OPT_VSYNC _("Vertical Sync") #define TEXT_OPT_DOUBLE _("Double") #define TEXT_RESET_WINDOW _("Reset Window") diff --git a/src/audio/external.c b/src/audio/external.c index 9f28ec32..b0ebbb99 100644 --- a/src/audio/external.c +++ b/src/audio/external.c @@ -2062,8 +2062,8 @@ void play_dialog_sound(u8 dialogID) { #endif } -void setBackgroundMusicVolume(s32 volume){ - func_8031D838(SEQ_PLAYER_LEVEL, 0, volume); +void setSequencePlayerVolume(s32 player, s32 volume){ + func_8031D838(player, 0, volume); } void play_music(u8 player, u16 seqArgs, u16 fadeTimer) { diff --git a/src/audio/external.h b/src/audio/external.h index ef902a51..4d763f35 100644 --- a/src/audio/external.h +++ b/src/audio/external.h @@ -37,7 +37,7 @@ void sound_banks_disable(u8 player, u16 bankMask); void sound_banks_enable(u8 player, u16 bankMask); void func_80320A4C(u8 bankIndex, u8 arg1); void play_dialog_sound(u8 dialogID); -void setBackgroundMusicVolume(s32 volume); +void setSequencePlayerVolume(s32 player, s32 volume); void play_music(u8 player, u16 seqArgs, u16 fadeTimer); void stop_background_music(u16 seqId); void fadeout_background_music(u16 arg0, u16 fadeOut); diff --git a/src/game/options_menu.c b/src/game/options_menu.c index 660a6d4f..3c084c49 100644 --- a/src/game/options_menu.c +++ b/src/game/options_menu.c @@ -85,8 +85,10 @@ static const u8 optsVideoStr[][32] = { }; static const u8 optsAudioStr[][32] = { - { TEXT_OPT_MVOLUME }, - { TEXT_OPT_TMUSIC }, + { TEXT_OPT_MVOLUME }, + { TEXT_OPT_MUSIC_VOLUME }, + { TEXT_OPT_SFX_VOLUME }, + { TEXT_OPT_ENV_VOLUME }, }; static const u8 optsCheatsStr[][64] = { @@ -261,6 +263,8 @@ static struct Option optsVideo[] = { static struct Option optsAudio[] = { DEF_OPT_SCROLL( optsAudioStr[0], &configMasterVolume, 0, MAX_VOLUME, 1 ), DEF_OPT_SCROLL( optsAudioStr[1], &configMusicVolume, 0, MAX_VOLUME, 1), + DEF_OPT_SCROLL( optsAudioStr[2], &configSfxVolume, 0, MAX_VOLUME, 1), + DEF_OPT_SCROLL( optsAudioStr[3], &configEnvVolume, 0, MAX_VOLUME, 1), }; static struct Option optsCheats[] = { diff --git a/src/pc/configfile.c b/src/pc/configfile.c index 6a6b6bd4..2a85b7a6 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -52,6 +52,8 @@ ConfigWindow configWindow = { unsigned int configFiltering = 1; // 0=force nearest, 1=linear, (TODO) 2=three-point unsigned int configMasterVolume = MAX_VOLUME; // 0 - MAX_VOLUME unsigned int configMusicVolume = MAX_VOLUME; +unsigned int configSfxVolume = MAX_VOLUME; +unsigned int configEnvVolume = MAX_VOLUME; // Keyboard mappings (VK_ values, by default keyboard/gamepad/mouse) unsigned int configKeyA[MAX_BINDS] = { 0x0026, 0x1000, 0x1103 }; @@ -101,6 +103,8 @@ static const struct ConfigOption options[] = { {.name = "texture_filtering", .type = CONFIG_TYPE_UINT, .uintValue = &configFiltering}, {.name = "master_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configMasterVolume}, {.name = "music_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configMusicVolume}, + {.name = "sfx_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configSfxVolume}, + {.name = "env_volume", .type = CONFIG_TYPE_UINT, .uintValue = &configEnvVolume}, {.name = "key_a", .type = CONFIG_TYPE_BIND, .uintValue = configKeyA}, {.name = "key_b", .type = CONFIG_TYPE_BIND, .uintValue = configKeyB}, {.name = "key_start", .type = CONFIG_TYPE_BIND, .uintValue = configKeyStart}, diff --git a/src/pc/configfile.h b/src/pc/configfile.h index 0c2960f8..45025141 100644 --- a/src/pc/configfile.h +++ b/src/pc/configfile.h @@ -22,6 +22,8 @@ extern ConfigWindow configWindow; extern unsigned int configFiltering; extern unsigned int configMasterVolume; extern unsigned int configMusicVolume; +extern unsigned int configSfxVolume; +extern unsigned int configEnvVolume; extern unsigned int configKeyA[]; extern unsigned int configKeyB[]; extern unsigned int configKeyStart[]; diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index 8843930f..05bb4aaf 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -74,7 +74,9 @@ void produce_one_frame(void) { gfx_start_frame(); - setBackgroundMusicVolume((s32)configMusicVolume); + setSequencePlayerVolume(SEQ_PLAYER_LEVEL, (s32)configMusicVolume); + setSequencePlayerVolume(SEQ_PLAYER_SFX, (s32)configSfxVolume); + setSequencePlayerVolume(SEQ_PLAYER_ENV, (s32)configEnvVolume); game_loop_one_iteration(); thread6_rumble_loop(NULL);