diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index 40dd691502..7e12e4b4be 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -1951,6 +1951,9 @@ void menu_populate_entries(void *data, unsigned menu_type) file_list_clear(rgui->selection_buf); file_list_push(rgui->selection_buf, "Mute Audio", RGUI_SETTINGS_AUDIO_MUTE, 0); file_list_push(rgui->selection_buf, "Rate Control Delta", RGUI_SETTINGS_AUDIO_CONTROL_RATE_DELTA, 0); +#ifdef __CELLOS_LV2__ + file_list_push(rgui->selection_buf, "System BGM Control", RGUI_SETTINGS_CUSTOM_BGM_CONTROL_ENABLE, 0); +#endif #ifdef _XBOX1 file_list_push(rgui->selection_buf, "Volume Level", RGUI_SETTINGS_AUDIO_VOLUME_LEVEL, 0); #endif diff --git a/frontend/menu/menu_common.h b/frontend/menu/menu_common.h index 27b0bea7d9..50284dc101 100644 --- a/frontend/menu/menu_common.h +++ b/frontend/menu/menu_common.h @@ -140,6 +140,7 @@ typedef enum RGUI_SETTINGS_AUDIO_MUTE, RGUI_SETTINGS_AUDIO_CONTROL_RATE_DELTA, RGUI_SETTINGS_AUDIO_VOLUME_LEVEL, + RGUI_SETTINGS_CUSTOM_BGM_CONTROL_ENABLE, RGUI_SETTINGS_RSOUND_SERVER_IP_ADDRESS, RGUI_SETTINGS_ZIP_EXTRACT, RGUI_SETTINGS_DEBUG_TEXT, diff --git a/frontend/menu/menu_settings.c b/frontend/menu/menu_settings.c index 2969eaa4d3..60837eea2e 100644 --- a/frontend/menu/menu_settings.c +++ b/frontend/menu/menu_settings.c @@ -27,6 +27,14 @@ #include "../../config.h" #endif +#if defined(__CELLOS_LV2__) +#include + +#if (CELL_SDK_VERSION > 0x340000) +#include +#endif +#endif + #ifdef GEKKO #define MAX_GAMMA_SETTING 2 @@ -1521,6 +1529,29 @@ int menu_set_settings(void *data, unsigned setting, unsigned action) #endif } break; + case RGUI_SETTINGS_CUSTOM_BGM_CONTROL_ENABLE: + switch (action) + { + case RGUI_ACTION_OK: +#if (CELL_SDK_VERSION > 0x340000) + if (g_extern.lifecycle_state & (1ULL << MODE_AUDIO_CUSTOM_BGM_ENABLE)) + g_extern.lifecycle_state &= ~(1ULL << MODE_AUDIO_CUSTOM_BGM_ENABLE); + else + g_extern.lifecycle_state |= (1ULL << MODE_AUDIO_CUSTOM_BGM_ENABLE); + if (g_extern.lifecycle_state & (1ULL << MODE_AUDIO_CUSTOM_BGM_ENABLE)) + cellSysutilEnableBgmPlayback(); + else + cellSysutilDisableBgmPlayback(); + +#endif + break; + case RGUI_ACTION_START: +#if (CELL_SDK_VERSION > 0x340000) + g_extern.lifecycle_state |= (1ULL << MODE_AUDIO_CUSTOM_BGM_ENABLE); +#endif + break; + } + break; default: break; } @@ -1855,10 +1886,12 @@ void menu_set_settings_label(char *type_str, size_t type_str_size, unsigned *w, (g_extern.lifecycle_state & (1ULL << MODE_VIDEO_SOFT_FILTER_ENABLE)) ? "ON" : "OFF"); break; #endif + case RGUI_SETTINGS_CUSTOM_BGM_CONTROL_ENABLE: + strlcpy(type_str, (g_extern.lifecycle_state & (1ULL << MODE_AUDIO_CUSTOM_BGM_ENABLE)) ? "ON" : "OFF", sizeof(type_str)); + break; default: type_str[0] = 0; *w = 0; break; } } - diff --git a/frontend/menu/rmenu.c b/frontend/menu/rmenu.c index 516a1540d8..4f19e2aed3 100644 --- a/frontend/menu/rmenu.c +++ b/frontend/menu/rmenu.c @@ -1517,8 +1517,6 @@ static int set_setting_action(void *data, uint8_t menu_type, unsigned switchvalu case SETTING_ENABLE_CUSTOM_BGM: switch (action) { - case RGUI_ACTION_LEFT: - case RGUI_ACTION_RIGHT: case RGUI_ACTION_OK: #if (CELL_SDK_VERSION > 0x340000) if (g_extern.lifecycle_state & (1ULL << MODE_AUDIO_CUSTOM_BGM_ENABLE))