Get rid of more strcmps

This commit is contained in:
twinaphex 2015-06-05 15:14:26 +02:00
parent 0a056da584
commit 7682a0d082
2 changed files with 271 additions and 228 deletions

View File

@ -20,6 +20,38 @@
extern "C" {
#endif
#define MENU_LABEL_LOG_VERBOSITY 0x6648c96dU
#define MENU_LABEL_AUDIO_VOLUME 0x502173aeU
#define MENU_LABEL_AUDIO_LATENCY 0x32695386U
#define MENU_LABEL_NETPLAY_DELAY_FRAMES 0x86b2c48dU
#define MENU_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE 0x6f9a9440U
#define MENU_LABEL_NETPLAY_IP_ADDRESS 0xac9a53ffU
#define MENU_LABEL_NETPLAY_MODE 0xc1cf6506U
#define MENU_LABEL_PAL60_ENABLE 0x62bc416eU
#define MENU_LABEL_SYSTEM_BGM_ENABLE 0x9287a1c5U
#define MENU_LABEL_FASTFORWARD_RATIO 0x3a0c2706U
#define MENU_LABEL_VIDEO_MONITOR_INDEX 0xb6fcdc9aU
#define MENU_LABEL_VIDEO_REFRESH_RATE_AUTO 0x9addb6cdU
#define MENU_LABEL_VIDEO_ROTATION 0x4ce6882bU
#define MENU_LABEL_VIDEO_SCALE 0x09835d63U
#define MENU_LABEL_VIDEO_SMOOTH 0x3aabbb35U
#define MENU_LABEL_VIDEO_CROP_OVERSCAN 0x861f7a2fU
#define MENU_LABEL_VIDEO_SCALE_INTEGER 0x65c4b090U
#define MENU_LABEL_AUDIO_RATE_CONTROL_DELTA 0xc8bde3cbU
#define MENU_LABEL_AUDIO_MAX_TIMING_SKEW 0x4c96f75cU
#define MENU_LABEL_INPUT_PLAYER1_JOYPAD_INDEX 0xfad6ab2fU
#define MENU_LABEL_INPUT_PLAYER2_JOYPAD_INDEX 0x3616e4d0U
#define MENU_LABEL_INPUT_PLAYER3_JOYPAD_INDEX 0x71571e71U
#define MENU_LABEL_INPUT_PLAYER4_JOYPAD_INDEX 0xac975812U
#define MENU_LABEL_INPUT_PLAYER5_JOYPAD_INDEX 0xe7d791b3U
#define MENU_LABEL_LIBRETRO_DIR_PATH 0x1af1eb72U
#define MENU_LABEL_AUDIO_DEVICE 0x2574eac6U
@ -71,6 +103,9 @@ extern "C" {
#define MENU_VALUE_HORIZONTAL_MENU 0x35761704U
#define MENU_VALUE_MAIN_MENU 0x1625971fU
#define MENU_VALUE_TRUE 0x7c9e9fe5U
#define MENU_VALUE_FALSE 0x0f6bcef0U
#define MENU_LABEL_CONTENT_ACTIONS 0xa0d76970U
#define MENU_LABEL_DETECT_CORE_LIST 0xaa07c341U
#define MENU_LABEL_LOAD_CONTENT 0x5745de1fU

View File

@ -2462,6 +2462,92 @@ static int setting_get_description_compare_label(uint32_t label_hash,
"This will take a performance hit, \n"
"so it is disabled by default.");
break;
case MENU_LABEL_LIBRETRO_DIR_PATH:
snprintf(s, len,
" -- Core Directory. \n"
" \n"
"A directory for where to search for \n"
"libretro core implementations.");
break;
case MENU_LABEL_VIDEO_REFRESH_RATE_AUTO:
snprintf(s, len,
" -- Refresh Rate Auto.\n"
" \n"
"The accurate refresh rate of our monitor (Hz).\n"
"This is used to calculate audio input rate with \n"
"the formula: \n"
" \n"
"audio_input_rate = game input rate * display \n"
"refresh rate / game refresh rate\n"
" \n"
"If the implementation does not report any \n"
"values, NTSC defaults will be assumed for \n"
"compatibility.\n"
" \n"
"This value should stay close to 60Hz to avoid \n"
"large pitch changes. If your monitor does \n"
"not run at 60Hz, or something close to it, \n"
"disable VSync, and leave this at its default.");
break;
case MENU_LABEL_VIDEO_ROTATION:
snprintf(s, len,
" -- Forces a certain rotation \n"
"of the screen.\n"
" \n"
"The rotation is added to rotations which\n"
"the libretro core sets (see Video Allow\n"
"Rotate).");
break;
case MENU_LABEL_VIDEO_SCALE:
snprintf(s, len,
" -- Fullscreen resolution.\n"
" \n"
"Resolution of 0 uses the \n"
"resolution of the environment.\n");
break;
case MENU_LABEL_FASTFORWARD_RATIO:
snprintf(s, len,
" -- Fastforward ratio."
" \n"
"The maximum rate at which content will\n"
"be run when using fast forward.\n"
" \n"
" (E.g. 5.0 for 60 fps content => 300 fps \n"
"cap).\n"
" \n"
"RetroArch will go to sleep to ensure that \n"
"the maximum rate will not be exceeded.\n"
"Do not rely on this cap to be perfectly \n"
"accurate.");
break;
case MENU_LABEL_VIDEO_MONITOR_INDEX:
snprintf(s, len,
" -- Which monitor to prefer.\n"
" \n"
"0 (default) means no particular monitor \n"
"is preferred, 1 and up (1 being first \n"
"monitor), suggests RetroArch to use that \n"
"particular monitor.");
break;
case MENU_LABEL_VIDEO_CROP_OVERSCAN:
snprintf(s, len,
" -- Forces cropping of overscanned \n"
"frames.\n"
" \n"
"Exact behavior of this option is \n"
"core-implementation specific.");
break;
case MENU_LABEL_VIDEO_SCALE_INTEGER:
snprintf(s, len,
" -- Only scales video in integer \n"
"steps.\n"
" \n"
"The base size depends on system-reported \n"
"geometry and aspect ratio.\n"
" \n"
"If Force Aspect is not set, X/Y will be \n"
"integer scaled independently.");
break;
default:
return -1;
}
@ -2490,15 +2576,7 @@ int setting_get_description(const char *label, char *s,
if (setting_get_description_compare_label(label_hash, settings, s, len) == 0)
return 0;
if (!strcmp(label, "libretro_dir_path"))
{
snprintf(s, len,
" -- Core Directory. \n"
" \n"
"A directory for where to search for \n"
"libretro core implementations.");
}
else if (!strcmp(label, "video_disable_composition"))
if (!strcmp(label, "video_disable_composition"))
{
snprintf(s, len,
"-- Forcibly disable composition.\n"
@ -2542,14 +2620,6 @@ int setting_get_description(const char *label, char *s,
" -- Load up a specific config file \n"
"based on the core being used.\n");
}
else if (!strcmp(label, "video_scale"))
{
snprintf(s, len,
" -- Fullscreen resolution.\n"
" \n"
"Resolution of 0 uses the \n"
"resolution of the environment.\n");
}
else if (!strcmp(label, "video_vsync"))
{
snprintf(s, len,
@ -2644,47 +2714,6 @@ int setting_get_description(const char *label, char *s,
"possible cost of latency and more video \n"
"stuttering.");
}
else if (!strcmp(label, "video_scale_integer"))
{
snprintf(s, len,
" -- Only scales video in integer \n"
"steps.\n"
" \n"
"The base size depends on system-reported \n"
"geometry and aspect ratio.\n"
" \n"
"If Force Aspect is not set, X/Y will be \n"
"integer scaled independently.");
}
else if (!strcmp(label, "video_crop_overscan"))
{
snprintf(s, len,
" -- Forces cropping of overscanned \n"
"frames.\n"
" \n"
"Exact behavior of this option is \n"
"core-implementation specific.");
}
else if (!strcmp(label, "video_monitor_index"))
{
snprintf(s, len,
" -- Which monitor to prefer.\n"
" \n"
"0 (default) means no particular monitor \n"
"is preferred, 1 and up (1 being first \n"
"monitor), suggests RetroArch to use that \n"
"particular monitor.");
}
else if (!strcmp(label, "video_rotation"))
{
snprintf(s, len,
" -- Forces a certain rotation \n"
"of the screen.\n"
" \n"
"The rotation is added to rotations which\n"
"the libretro core sets (see Video Allow\n"
"Rotate).");
}
else if (!strcmp(label, "audio_volume"))
{
snprintf(s, len,
@ -2702,22 +2731,6 @@ int setting_get_description(const char *label, char *s,
" \n"
"Might potentially lead to buggy games.");
}
else if (!strcmp(label, "fastforward_ratio"))
{
snprintf(s, len,
" -- Fastforward ratio."
" \n"
"The maximum rate at which content will\n"
"be run when using fast forward.\n"
" \n"
" (E.g. 5.0 for 60 fps content => 300 fps \n"
"cap).\n"
" \n"
"RetroArch will go to sleep to ensure that \n"
"the maximum rate will not be exceeded.\n"
"Do not rely on this cap to be perfectly \n"
"accurate.");
}
else if (!strcmp(label, "pause_nonactive"))
{
snprintf(s, len,
@ -2746,27 +2759,6 @@ int setting_get_description(const char *label, char *s,
"Uses a custom swap interval for VSync. Set this \n"
"to effectively halve monitor refresh rate.");
}
else if (!strcmp(label, "video_refresh_rate_auto"))
{
snprintf(s, len,
" -- Refresh Rate Auto.\n"
" \n"
"The accurate refresh rate of our monitor (Hz).\n"
"This is used to calculate audio input rate with \n"
"the formula: \n"
" \n"
"audio_input_rate = game input rate * display \n"
"refresh rate / game refresh rate\n"
" \n"
"If the implementation does not report any \n"
"values, NTSC defaults will be assumed for \n"
"compatibility.\n"
" \n"
"This value should stay close to 60Hz to avoid \n"
"large pitch changes. If your monitor does \n"
"not run at 60Hz, or something close to it, \n"
"disable VSync, and leave this at its default.");
}
else if (!strcmp(label, "savefile_directory"))
{
snprintf(s, len,
@ -3057,38 +3049,48 @@ static void general_read_handler(void *data)
{
rarch_setting_t *setting = (rarch_setting_t*)data;
settings_t *settings = config_get_ptr();
uint32_t hash = setting ? djb2_calculate(setting->name) : 0;
if (!setting)
return;
if (!strcmp(setting->name, "audio_rate_control_delta"))
switch (hash)
{
*setting->value.fraction = settings->audio.rate_control_delta;
if (*setting->value.fraction < 0.0005)
{
settings->audio.rate_control = false;
settings->audio.rate_control_delta = 0.0;
}
else
{
settings->audio.rate_control = true;
settings->audio.rate_control_delta = *setting->value.fraction;
}
case MENU_LABEL_AUDIO_RATE_CONTROL_DELTA:
*setting->value.fraction = settings->audio.rate_control_delta;
if (*setting->value.fraction < 0.0005)
{
settings->audio.rate_control = false;
settings->audio.rate_control_delta = 0.0;
}
else
{
settings->audio.rate_control = true;
settings->audio.rate_control_delta = *setting->value.fraction;
}
break;
case MENU_LABEL_AUDIO_MAX_TIMING_SKEW:
*setting->value.fraction = settings->audio.max_timing_skew;
break;
case MENU_LABEL_VIDEO_REFRESH_RATE_AUTO:
*setting->value.fraction = settings->video.refresh_rate;
break;
case MENU_LABEL_INPUT_PLAYER1_JOYPAD_INDEX:
*setting->value.integer = settings->input.joypad_map[0];
break;
case MENU_LABEL_INPUT_PLAYER2_JOYPAD_INDEX:
*setting->value.integer = settings->input.joypad_map[1];
break;
case MENU_LABEL_INPUT_PLAYER3_JOYPAD_INDEX:
*setting->value.integer = settings->input.joypad_map[2];
break;
case MENU_LABEL_INPUT_PLAYER4_JOYPAD_INDEX:
*setting->value.integer = settings->input.joypad_map[3];
break;
case MENU_LABEL_INPUT_PLAYER5_JOYPAD_INDEX:
*setting->value.integer = settings->input.joypad_map[4];
break;
}
else if (!strcmp(setting->name, "audio_max_timing_skew"))
*setting->value.fraction = settings->audio.max_timing_skew;
else if (!strcmp(setting->name, "video_refresh_rate_auto"))
*setting->value.fraction = settings->video.refresh_rate;
else if (!strcmp(setting->name, "input_player1_joypad_index"))
*setting->value.integer = settings->input.joypad_map[0];
else if (!strcmp(setting->name, "input_player2_joypad_index"))
*setting->value.integer = settings->input.joypad_map[1];
else if (!strcmp(setting->name, "input_player3_joypad_index"))
*setting->value.integer = settings->input.joypad_map[2];
else if (!strcmp(setting->name, "input_player4_joypad_index"))
*setting->value.integer = settings->input.joypad_map[3];
else if (!strcmp(setting->name, "input_player5_joypad_index"))
*setting->value.integer = settings->input.joypad_map[4];
}
static void general_write_handler(void *data)
@ -3099,6 +3101,8 @@ static void general_write_handler(void *data)
settings_t *settings = config_get_ptr();
driver_t *driver = driver_get_ptr();
global_t *global = global_get_ptr();
menu_list_t *menu_list = menu_list_get_ptr();
uint32_t hash = setting ? djb2_calculate(setting->name) : 0;
if (!setting)
return;
@ -3115,125 +3119,129 @@ static void general_write_handler(void *data)
rarch_cmd = setting->cmd_trigger.idx;
}
if (!strcmp(setting->name, "help"))
switch (hash)
{
menu_handle_t *menu = menu_driver_get_ptr();
case MENU_LABEL_HELP:
if (!menu_list)
return;
if (!menu || !menu->menu_list)
return;
if (*setting->value.boolean)
{
info.list = menu_list->menu_stack;
info.type = 0;
info.directory_ptr = 0;
strlcpy(info.label, "help", sizeof(info.label));
if (*setting->value.boolean)
{
info.list = menu->menu_list->menu_stack;
info.type = 0;
info.directory_ptr = 0;
strlcpy(info.label, "help", sizeof(info.label));
menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC);
setting_set_with_string_representation(setting, "false");
}
break;
case MENU_LABEL_AUDIO_MAX_TIMING_SKEW:
settings->audio.max_timing_skew = *setting->value.fraction;
break;
case MENU_LABEL_AUDIO_RATE_CONTROL_DELTA:
if (*setting->value.fraction < 0.0005)
{
settings->audio.rate_control = false;
settings->audio.rate_control_delta = 0.0;
}
else
{
settings->audio.rate_control = true;
settings->audio.rate_control_delta = *setting->value.fraction;
}
break;
case MENU_LABEL_VIDEO_REFRESH_RATE_AUTO:
if (driver->video && driver->video_data)
{
driver_set_refresh_rate(*setting->value.fraction);
menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC);
setting_set_with_string_representation(setting, "false");
}
}
else if (!strcmp(setting->name, "video_smooth"))
{
video_driver_set_filtering(1, settings->video.smooth);
}
else if (!strcmp(setting->name, "pal60_enable"))
{
if (*setting->value.boolean && global->console.screen.pal_enable)
rarch_cmd = EVENT_CMD_REINIT;
else
setting_set_with_string_representation(setting, "false");
}
else if (!strcmp(setting->name, "video_rotation"))
{
video_driver_set_rotation(
/* In case refresh rate update forced non-block video. */
rarch_cmd = EVENT_CMD_VIDEO_SET_BLOCKING_STATE;
}
break;
case MENU_LABEL_VIDEO_SCALE:
settings->video.scale = roundf(*setting->value.fraction);
if (!settings->video.fullscreen)
rarch_cmd = EVENT_CMD_REINIT;
break;
case MENU_LABEL_INPUT_PLAYER1_JOYPAD_INDEX:
settings->input.joypad_map[0] = *setting->value.integer;
break;
case MENU_LABEL_INPUT_PLAYER2_JOYPAD_INDEX:
settings->input.joypad_map[1] = *setting->value.integer;
break;
case MENU_LABEL_INPUT_PLAYER3_JOYPAD_INDEX:
settings->input.joypad_map[2] = *setting->value.integer;
break;
case MENU_LABEL_INPUT_PLAYER4_JOYPAD_INDEX:
settings->input.joypad_map[3] = *setting->value.integer;
break;
case MENU_LABEL_INPUT_PLAYER5_JOYPAD_INDEX:
settings->input.joypad_map[4] = *setting->value.integer;
break;
case MENU_LABEL_LOG_VERBOSITY:
global->verbosity = *setting->value.boolean;
global->has_set_verbosity = *setting->value.boolean;
break;
case MENU_LABEL_VIDEO_SMOOTH:
video_driver_set_filtering(1, settings->video.smooth);
break;
case MENU_LABEL_VIDEO_ROTATION:
video_driver_set_rotation(
(*setting->value.unsigned_integer +
global->system.rotation) % 4);
}
else if (!strcmp(setting->name, "system_bgm_enable"))
{
if (*setting->value.boolean)
{
break;
case MENU_LABEL_AUDIO_VOLUME:
audio_driver_set_volume_gain(db_to_gain(*setting->value.fraction));
break;
case MENU_LABEL_AUDIO_LATENCY:
rarch_cmd = EVENT_CMD_AUDIO_REINIT;
break;
case MENU_LABEL_PAL60_ENABLE:
if (*setting->value.boolean && global->console.screen.pal_enable)
rarch_cmd = EVENT_CMD_REINIT;
else
setting_set_with_string_representation(setting, "false");
break;
case MENU_LABEL_SYSTEM_BGM_ENABLE:
if (*setting->value.boolean)
{
#if defined(__CELLOS_LV2__) && (CELL_SDK_VERSION > 0x340000)
cellSysutilEnableBgmPlayback();
cellSysutilEnableBgmPlayback();
#endif
}
else
{
}
else
{
#if defined(__CELLOS_LV2__) && (CELL_SDK_VERSION > 0x340000)
cellSysutilDisableBgmPlayback();
cellSysutilDisableBgmPlayback();
#endif
}
}
else if (!strcmp(setting->name, "audio_volume"))
{
audio_driver_set_volume_gain(db_to_gain(*setting->value.fraction));
}
else if (!strcmp(setting->name, "audio_latency"))
rarch_cmd = EVENT_CMD_AUDIO_REINIT;
else if (!strcmp(setting->name, "audio_rate_control_delta"))
{
if (*setting->value.fraction < 0.0005)
{
settings->audio.rate_control = false;
settings->audio.rate_control_delta = 0.0;
}
else
{
settings->audio.rate_control = true;
settings->audio.rate_control_delta = *setting->value.fraction;
}
}
else if (!strcmp(setting->name, "audio_max_timing_skew"))
settings->audio.max_timing_skew = *setting->value.fraction;
else if (!strcmp(setting->name, "video_refresh_rate_auto"))
{
if (driver->video && driver->video_data)
{
driver_set_refresh_rate(*setting->value.fraction);
/* In case refresh rate update forced non-block video. */
rarch_cmd = EVENT_CMD_VIDEO_SET_BLOCKING_STATE;
}
}
else if (!strcmp(setting->name, "video_scale"))
{
settings->video.scale = roundf(*setting->value.fraction);
if (!settings->video.fullscreen)
rarch_cmd = EVENT_CMD_REINIT;
}
else if (!strcmp(setting->name, "input_player1_joypad_index"))
settings->input.joypad_map[0] = *setting->value.integer;
else if (!strcmp(setting->name, "input_player2_joypad_index"))
settings->input.joypad_map[1] = *setting->value.integer;
else if (!strcmp(setting->name, "input_player3_joypad_index"))
settings->input.joypad_map[2] = *setting->value.integer;
else if (!strcmp(setting->name, "input_player4_joypad_index"))
settings->input.joypad_map[3] = *setting->value.integer;
else if (!strcmp(setting->name, "input_player5_joypad_index"))
settings->input.joypad_map[4] = *setting->value.integer;
}
break;
case MENU_LABEL_NETPLAY_IP_ADDRESS:
#ifdef HAVE_NETPLAY
else if (!strcmp(setting->name, "netplay_ip_address"))
global->has_set_netplay_ip_address = (setting->value.string[0] != '\0');
else if (!strcmp(setting->name, "netplay_mode"))
{
if (!global->netplay_is_client)
*global->netplay_server = '\0';
global->has_set_netplay_mode = true;
}
else if (!strcmp(setting->name, "netplay_spectator_mode_enable"))
{
if (global->netplay_is_spectate)
*global->netplay_server = '\0';
}
else if (!strcmp(setting->name, "netplay_delay_frames"))
global->has_set_netplay_delay_frames = (global->netplay_sync_frames > 0);
global->has_set_netplay_ip_address = (setting->value.string[0] != '\0');
#endif
else if (!strcmp(setting->name, "log_verbosity"))
{
global->verbosity = *setting->value.boolean;
global->has_set_verbosity = *setting->value.boolean;
break;
case MENU_LABEL_NETPLAY_MODE:
#ifdef HAVE_NETPLAY
if (!global->netplay_is_client)
*global->netplay_server = '\0';
global->has_set_netplay_mode = true;
#endif
break;
case MENU_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE:
#ifdef HAVE_NETPLAY
if (global->netplay_is_spectate)
*global->netplay_server = '\0';
#endif
break;
case MENU_LABEL_NETPLAY_DELAY_FRAMES:
#ifdef HAVE_NETPLAY
global->has_set_netplay_delay_frames = (global->netplay_sync_frames > 0);
#endif
break;
}
if (rarch_cmd || setting->cmd_trigger.triggered)