From eca2c09fdd436302cf516f6608b0f3a44761db0f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 22 Aug 2012 16:59:12 +0200 Subject: [PATCH] (Xbox 1 RMenu) Add sound volume level setting --- audio/dsound.c | 13 ++++++++----- console/rarch_console_config.c | 4 +++- console/rarch_console_settings.c | 1 + console/rmenu/rmenu.c | 31 +++++++++++++++++++++++++++++-- console/rmenu/rmenu.h | 3 +++ general.h | 1 + 6 files changed, 45 insertions(+), 8 deletions(-) diff --git a/audio/dsound.c b/audio/dsound.c index 370e6d8f88..8a5a92c392 100644 --- a/audio/dsound.c +++ b/audio/dsound.c @@ -354,11 +354,14 @@ static void *dsound_init(const char *device, unsigned rate, unsigned latency) IDirectSoundBuffer_SetVolume(ds->dsb, DSBVOLUME_MAX); #ifdef _XBOX - dsmb.dwMixBinCount = 8; - dsmb.lpMixBinVolumePairs = dsmbvp; - - IDirectSoundBuffer_SetHeadroom(ds->dsb, DSBHEADROOM_MIN); - IDirectSoundBuffer_SetMixBins(ds->dsb, &dsmb); + if(g_console.sound_volume_level == 1) + { + dsmb.dwMixBinCount = 8; + dsmb.lpMixBinVolumePairs = dsmbvp; + + IDirectSoundBuffer_SetHeadroom(ds->dsb, DSBHEADROOM_MIN); + IDirectSoundBuffer_SetMixBins(ds->dsb, &dsmb); + } #endif IDirectSoundBuffer_SetCurrentPosition(ds->dsb, 0); diff --git a/console/rarch_console_config.c b/console/rarch_console_config.c index e6b4605a1b..a0cc4d1d9e 100644 --- a/console/rarch_console_config.c +++ b/console/rarch_console_config.c @@ -104,7 +104,8 @@ void rarch_config_load(const char * conf_name, const char * libretro_dir_path, c #endif CONFIG_GET_BOOL_CONSOLE(gamma_correction, "gamma_correction"); #ifdef _XBOX1 - CONFIG_GET_INT_CONSOLE(flicker_filter, "fliker_filter"); + CONFIG_GET_INT_CONSOLE(flicker_filter, "flicker_filter"); + CONFIG_GET_INT_CONSOLE(sound_volume_level, "sound_volume_level"); #endif CONFIG_GET_BOOL_CONSOLE(soft_display_filter_enable, "soft_display_filter_enable"); CONFIG_GET_STRING_CONSOLE(default_rom_startup_dir, "default_rom_startup_dir"); @@ -167,6 +168,7 @@ void rarch_config_save(const char * conf_name) config_set_bool(conf, "soft_display_filter_enable", g_console.soft_display_filter_enable); #ifdef _XBOX1 config_set_int(conf, "flicker_filter", g_console.flicker_filter); + config_set_int(conf, "sound_volume_level", g_console.sound_volume_level); #endif config_set_bool(conf, "throttle_enable", g_console.throttle_enable); config_set_bool(conf, "triple_buffering_enable", g_console.triple_buffering_enable); diff --git a/console/rarch_console_settings.c b/console/rarch_console_settings.c index b2b41d4098..cb17593e7c 100644 --- a/console/rarch_console_settings.c +++ b/console/rarch_console_settings.c @@ -416,6 +416,7 @@ void rarch_settings_set_default (const input_driver_t *input) g_console.gamma_correction = DEFAULT_GAMMA; #ifdef _XBOX1 g_console.flicker_filter = 1; + g_console.sound_volume_level = 0; #endif g_console.soft_display_filter_enable = true; #ifdef HAVE_ZLIB diff --git a/console/rmenu/rmenu.c b/console/rmenu/rmenu.c index ec4e5fbde5..0973427cbd 100644 --- a/console/rmenu/rmenu.c +++ b/console/rmenu/rmenu.c @@ -358,10 +358,20 @@ static void populate_setting_item(unsigned i, item *current_item) snprintf(current_item->text, sizeof(current_item->text), "Mute Audio"); snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_extern.audio_data.mute ? "ON" : "OFF"); if(g_extern.audio_data.mute) - snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Audio Mute] feature is set to 'ON'. The game audio will be muted."); + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Audio Mute] is set to 'ON'. The game audio will be muted."); else - snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Audio Mute] feature is set to 'OFF'."); + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Audio Mute] is set to 'OFF'."); break; +#ifdef _XBOX1 + case SETTING_EMU_AUDIO_SOUND_VOLUME_LEVEL: + snprintf(current_item->text, sizeof(current_item->text), "Volume Level"); + snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_console.sound_volume_level ? "Loud" : "Normal"); + if(g_extern.audio_data.mute) + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Volume Level] is set to 'Loud'"); + else + snprintf(current_item->comment, sizeof(current_item->comment), "INFO - [Volume Level' is set to 'Normal'."); + break; +#endif case SETTING_ENABLE_CUSTOM_BGM: snprintf(current_item->text, sizeof(current_item->text), "Custom BGM Option"); snprintf(current_item->setting_text, sizeof(current_item->setting_text), g_console.custom_bgm_enable ? "ON" : "OFF"); @@ -1314,6 +1324,23 @@ static void set_setting_action(menu *current_menu, unsigned switchvalue, uint64_ if(input & (1 << RMENU_DEVICE_NAV_START)) rarch_settings_default(S_DEF_AUDIO_MUTE); break; +#ifdef _XBOX1 + case SETTING_EMU_AUDIO_SOUND_VOLUME_LEVEL: + if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) + { + g_console.sound_volume_level = !g_console.sound_volume_level; + if(g_console.info_msg_enable) + rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + } + + if(input & (1 << RMENU_DEVICE_NAV_START)) + { + g_console.sound_volume_level = 0; + if(g_console.info_msg_enable) + rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + } + break; +#endif case SETTING_ENABLE_CUSTOM_BGM: if((input & (1 << RMENU_DEVICE_NAV_LEFT)) || (input & (1 << RMENU_DEVICE_NAV_RIGHT)) || (input & (1 << RMENU_DEVICE_NAV_B))) { diff --git a/console/rmenu/rmenu.h b/console/rmenu/rmenu.h index 75f0528be9..78616721ee 100644 --- a/console/rmenu/rmenu.h +++ b/console/rmenu/rmenu.h @@ -166,6 +166,9 @@ enum SETTING_EMU_DEFAULT_ALL, SETTING_EMU_REWIND_ENABLED, SETTING_EMU_VIDEO_DEFAULT_ALL, +#ifdef _XBOX1 + SETTING_EMU_AUDIO_SOUND_VOLUME_LEVEL, +#endif SETTING_EMU_AUDIO_MUTE, SETTING_EMU_AUDIO_DEFAULT_ALL, SETTING_PATH_DEFAULT_ROM_DIRECTORY, diff --git a/general.h b/general.h index e3bd50ac06..a735ca42dc 100644 --- a/general.h +++ b/general.h @@ -214,6 +214,7 @@ struct console_settings #endif #ifdef _XBOX1 unsigned flicker_filter; + unsigned sound_volume_level; #endif bool soft_display_filter_enable; bool initialize_rarch_enable;