mirror of
https://github.com/libretro/RetroArch
synced 2025-01-30 12:32:52 +00:00
Allow help messages to be translated too
This commit is contained in:
parent
761f9cd7ea
commit
9649ffeedc
@ -747,3 +747,14 @@ const char *menu_hash_to_str_de(uint32_t hash)
|
||||
|
||||
return "null";
|
||||
}
|
||||
|
||||
int menu_hash_get_help_de(uint32_t hash, char *s, size_t len)
|
||||
{
|
||||
switch (hash)
|
||||
{
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -29,3 +29,14 @@ const char *menu_hash_to_str_es(uint32_t hash)
|
||||
|
||||
return "null";
|
||||
}
|
||||
|
||||
int menu_hash_get_help_es(uint32_t hash, char *s, size_t len)
|
||||
{
|
||||
switch (hash)
|
||||
{
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -543,3 +543,14 @@ const char *menu_hash_to_str_fr(uint32_t hash)
|
||||
|
||||
return "null";
|
||||
}
|
||||
|
||||
int menu_hash_get_help_fr(uint32_t hash, char *s, size_t len)
|
||||
{
|
||||
switch (hash)
|
||||
{
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -29,3 +29,14 @@ const char *menu_hash_to_str_it(uint32_t hash)
|
||||
|
||||
return "null";
|
||||
}
|
||||
|
||||
int menu_hash_get_help_it(uint32_t hash, char *s, size_t len)
|
||||
{
|
||||
switch (hash)
|
||||
{
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -746,3 +746,14 @@ const char *menu_hash_to_str_nl(uint32_t hash)
|
||||
|
||||
return "null";
|
||||
}
|
||||
|
||||
int menu_hash_get_help_nl(uint32_t hash, char *s, size_t len)
|
||||
{
|
||||
switch (hash)
|
||||
{
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -511,3 +511,14 @@ const char *menu_hash_to_str_pt(uint32_t hash)
|
||||
|
||||
return "null";
|
||||
}
|
||||
|
||||
int menu_hash_get_help_pt(uint32_t hash, char *s, size_t len)
|
||||
{
|
||||
switch (hash)
|
||||
{
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include <string.h>
|
||||
|
||||
#include "../menu_hash.h"
|
||||
#include "../../configuration.h"
|
||||
|
||||
static const char *menu_hash_to_str_us_label(uint32_t hash)
|
||||
{
|
||||
@ -1309,3 +1310,951 @@ const char *menu_hash_to_str_us(uint32_t hash)
|
||||
|
||||
return "null";
|
||||
}
|
||||
|
||||
int menu_hash_get_help_us(uint32_t hash, char *s, size_t len)
|
||||
{
|
||||
uint32_t driver_hash = 0;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
switch (hash)
|
||||
{
|
||||
case MENU_LABEL_INPUT_DRIVER:
|
||||
driver_hash = menu_hash_calculate(settings->input.driver);
|
||||
|
||||
switch (driver_hash)
|
||||
{
|
||||
case MENU_LABEL_INPUT_DRIVER_UDEV:
|
||||
snprintf(s, len,
|
||||
"udev Input driver. \n"
|
||||
" \n"
|
||||
"This driver can run without X. \n"
|
||||
" \n"
|
||||
"It uses the recent evdev joypad API \n"
|
||||
"for joystick support. It supports \n"
|
||||
"hotplugging and force feedback (if \n"
|
||||
"supported by device). \n"
|
||||
" \n"
|
||||
"The driver reads evdev events for keyboard \n"
|
||||
"support. It also supports keyboard callback, \n"
|
||||
"mice and touchpads. \n"
|
||||
" \n"
|
||||
"By default in most distros, /dev/input nodes \n"
|
||||
"are root-only (mode 600). You can set up a udev \n"
|
||||
"rule which makes these accessible to non-root."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_INPUT_DRIVER_LINUXRAW:
|
||||
snprintf(s, len,
|
||||
"linuxraw Input driver. \n"
|
||||
" \n"
|
||||
"This driver requires an active TTY. Keyboard \n"
|
||||
"events are read directly from the TTY which \n"
|
||||
"makes it simpler, but not as flexible as udev. \n" "Mice, etc, are not supported at all. \n"
|
||||
" \n"
|
||||
"This driver uses the older joystick API \n"
|
||||
"(/dev/input/js*).");
|
||||
break;
|
||||
default:
|
||||
snprintf(s, len,
|
||||
"Input driver.\n"
|
||||
" \n"
|
||||
"Depending on video driver, it might \n"
|
||||
"force a different input driver.");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case MENU_LABEL_LOAD_CONTENT:
|
||||
snprintf(s, len,
|
||||
"Load Content. \n"
|
||||
"Browse for content. \n"
|
||||
" \n"
|
||||
"To load content, you need a \n"
|
||||
"libretro core to use, and a \n"
|
||||
"content file. \n"
|
||||
" \n"
|
||||
"To control where the menu starts \n"
|
||||
" to browse for content, set \n"
|
||||
"Browser Directory. If not set, \n"
|
||||
"it will start in root. \n"
|
||||
" \n"
|
||||
"The browser will filter out \n"
|
||||
"extensions for the last core set \n"
|
||||
"in 'Core', and use that core when \n"
|
||||
"content is loaded."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_CORE_LIST:
|
||||
snprintf(s, len,
|
||||
"Load Core. \n"
|
||||
" \n"
|
||||
"Browse for a libretro core \n"
|
||||
"implementation. Where the browser \n"
|
||||
"starts depends on your Core Directory \n"
|
||||
"path. If blank, it will start in root. \n"
|
||||
" \n"
|
||||
"If Core Directory is a directory, the menu \n"
|
||||
"will use that as top folder. If Core \n"
|
||||
"Directory is a full path, it will start \n"
|
||||
"in the folder where the file is.");
|
||||
break;
|
||||
case MENU_LABEL_LOAD_CONTENT_HISTORY:
|
||||
snprintf(s, len,
|
||||
"Loading content from history. \n"
|
||||
" \n"
|
||||
"As content is loaded, content and libretro \n"
|
||||
"core combinations are saved to history. \n"
|
||||
" \n"
|
||||
"The history is saved to a file in the same \n"
|
||||
"directory as the RetroArch config file. If \n"
|
||||
"no config file was loaded in startup, history \n"
|
||||
"will not be saved or loaded, and will not exist \n"
|
||||
"in the main menu."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_DRIVER:
|
||||
driver_hash = menu_hash_calculate(settings->video.driver);
|
||||
|
||||
switch (driver_hash)
|
||||
{
|
||||
case MENU_LABEL_VIDEO_DRIVER_GL:
|
||||
snprintf(s, len,
|
||||
"OpenGL Video driver. \n"
|
||||
" \n"
|
||||
"This driver allows libretro GL cores to \n"
|
||||
"be used in addition to software-rendered \n"
|
||||
"core implementations.\n"
|
||||
" \n"
|
||||
"Performance for software-rendered and \n"
|
||||
"libretro GL core implementations is \n"
|
||||
"dependent on your graphics card's \n"
|
||||
"underlying GL driver).");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_DRIVER_SDL2:
|
||||
snprintf(s, len,
|
||||
"SDL 2 Video driver.\n"
|
||||
" \n"
|
||||
"This is an SDL 2 software-rendered video \n"
|
||||
"driver.\n"
|
||||
" \n"
|
||||
"Performance for software-rendered libretro \n"
|
||||
"core implementations is dependent \n"
|
||||
"on your platform SDL implementation.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_DRIVER_SDL1:
|
||||
snprintf(s, len,
|
||||
"SDL Video driver.\n"
|
||||
" \n"
|
||||
"This is an SDL 1.2 software-rendered video \n"
|
||||
"driver.\n"
|
||||
" \n"
|
||||
"Performance is considered to be suboptimal. \n"
|
||||
"Consider using it only as a last resort.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_DRIVER_D3D:
|
||||
snprintf(s, len,
|
||||
"Direct3D Video driver. \n"
|
||||
" \n"
|
||||
"Performance for software-rendered cores \n"
|
||||
"is dependent on your graphic card's \n"
|
||||
"underlying D3D driver).");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_DRIVER_EXYNOS:
|
||||
snprintf(s, len,
|
||||
"Exynos-G2D Video Driver. \n"
|
||||
" \n"
|
||||
"This is a low-level Exynos video driver. \n"
|
||||
"Uses the G2D block in Samsung Exynos SoC \n"
|
||||
"for blit operations. \n"
|
||||
" \n"
|
||||
"Performance for software rendered cores \n"
|
||||
"should be optimal.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_DRIVER_SUNXI:
|
||||
snprintf(s, len,
|
||||
"Sunxi-G2D Video Driver. \n"
|
||||
" \n"
|
||||
"This is a low-level Sunxi video driver. \n"
|
||||
"Uses the G2D block in Allwinner SoCs.");
|
||||
break;
|
||||
default:
|
||||
snprintf(s, len,
|
||||
"Current Video driver.");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case MENU_LABEL_AUDIO_DSP_PLUGIN:
|
||||
snprintf(s, len,
|
||||
"Audio DSP plugin.\n"
|
||||
" Processes audio before it's sent to \n"
|
||||
"the driver."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_AUDIO_RESAMPLER_DRIVER:
|
||||
driver_hash = menu_hash_calculate(settings->audio.resampler);
|
||||
|
||||
switch (driver_hash)
|
||||
{
|
||||
case MENU_LABEL_AUDIO_RESAMPLER_DRIVER_SINC:
|
||||
snprintf(s, len,
|
||||
"Windowed SINC implementation.");
|
||||
break;
|
||||
case MENU_LABEL_AUDIO_RESAMPLER_DRIVER_CC:
|
||||
snprintf(s, len,
|
||||
"Convoluted Cosine implementation.");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_SHADER_PRESET:
|
||||
snprintf(s, len,
|
||||
"Load Shader Preset. \n"
|
||||
" \n"
|
||||
" Load a "
|
||||
#ifdef HAVE_CG
|
||||
"Cg"
|
||||
#endif
|
||||
#ifdef HAVE_GLSL
|
||||
#ifdef HAVE_CG
|
||||
"/"
|
||||
#endif
|
||||
"GLSL"
|
||||
#endif
|
||||
#ifdef HAVE_HLSL
|
||||
#if defined(HAVE_CG) || defined(HAVE_HLSL)
|
||||
"/"
|
||||
#endif
|
||||
"HLSL"
|
||||
#endif
|
||||
" preset directly. \n"
|
||||
"The menu shader menu is updated accordingly. \n"
|
||||
" \n"
|
||||
"If the CGP uses scaling methods which are not \n"
|
||||
"simple, (i.e. source scaling, same scaling \n"
|
||||
"factor for X/Y), the scaling factor displayed \n"
|
||||
"in the menu might not be correct."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_SHADER_SCALE_PASS:
|
||||
snprintf(s, len,
|
||||
"Scale for this pass. \n"
|
||||
" \n"
|
||||
"The scale factor accumulates, i.e. 2x \n"
|
||||
"for first pass and 2x for second pass \n"
|
||||
"will give you a 4x total scale. \n"
|
||||
" \n"
|
||||
"If there is a scale factor for last \n"
|
||||
"pass, the result is stretched to \n"
|
||||
"screen with the filter specified in \n"
|
||||
"'Default Filter'. \n"
|
||||
" \n"
|
||||
"If 'Don't Care' is set, either 1x \n"
|
||||
"scale or stretch to fullscreen will \n"
|
||||
"be used depending if it's not the last \n"
|
||||
"pass or not."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_SHADER_NUM_PASSES:
|
||||
snprintf(s, len,
|
||||
"Shader Passes. \n"
|
||||
" \n"
|
||||
"RetroArch allows you to mix and match various \n"
|
||||
"shaders with arbitrary shader passes, with \n"
|
||||
"custom hardware filters and scale factors. \n"
|
||||
" \n"
|
||||
"This option specifies the number of shader \n"
|
||||
"passes to use. If you set this to 0, and use \n"
|
||||
"Apply Shader Changes, you use a 'blank' shader. \n"
|
||||
" \n"
|
||||
"The Default Filter option will affect the \n"
|
||||
"stretching filter.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_SHADER_PARAMETERS:
|
||||
snprintf(s, len,
|
||||
"Shader Parameters. \n"
|
||||
" \n"
|
||||
"Modifies current shader directly. Will not be \n"
|
||||
"saved to CGP/GLSLP preset file.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_SHADER_PRESET_PARAMETERS:
|
||||
snprintf(s, len,
|
||||
"Shader Preset Parameters. \n"
|
||||
" \n"
|
||||
"Modifies shader preset currently in menu."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_SHADER_PASS:
|
||||
snprintf(s, len,
|
||||
"Path to shader. \n"
|
||||
" \n"
|
||||
"All shaders must be of the same \n"
|
||||
"type (i.e. CG, GLSL or HLSL). \n"
|
||||
" \n"
|
||||
"Set Shader Directory to set where \n"
|
||||
"the browser starts to look for \n"
|
||||
"shaders."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_CONFIG_SAVE_ON_EXIT:
|
||||
snprintf(s, len,
|
||||
"Saves config to disk on exit.\n"
|
||||
"Useful for menu as settings can be\n"
|
||||
"modified. Overwrites the config.\n"
|
||||
" \n"
|
||||
"#include's and comments are not \n"
|
||||
"preserved. \n"
|
||||
" \n"
|
||||
"By design, the config file is \n"
|
||||
"considered immutable as it is \n"
|
||||
"likely maintained by the user, \n"
|
||||
"and should not be overwritten \n"
|
||||
"behind the user's back."
|
||||
#if defined(RARCH_CONSOLE) || defined(RARCH_MOBILE)
|
||||
"\nThis is not not the case on \n"
|
||||
"consoles however, where \n"
|
||||
"looking at the config file \n"
|
||||
"manually isn't really an option."
|
||||
#endif
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_SHADER_FILTER_PASS:
|
||||
snprintf(s, len,
|
||||
"Hardware filter for this pass. \n"
|
||||
" \n"
|
||||
"If 'Don't Care' is set, 'Default \n"
|
||||
"Filter' will be used."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_AUTOSAVE_INTERVAL:
|
||||
snprintf(s, len,
|
||||
"Autosaves the non-volatile SRAM \n"
|
||||
"at a regular interval.\n"
|
||||
" \n"
|
||||
"This is disabled by default unless set \n"
|
||||
"otherwise. The interval is measured in \n"
|
||||
"seconds. \n"
|
||||
" \n"
|
||||
"A value of 0 disables autosave.");
|
||||
break;
|
||||
case MENU_LABEL_INPUT_BIND_DEVICE_TYPE:
|
||||
snprintf(s, len,
|
||||
"Input Device Type. \n"
|
||||
" \n"
|
||||
"Picks which device type to use. This is \n"
|
||||
"relevant for the libretro core itself."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_LIBRETRO_LOG_LEVEL:
|
||||
snprintf(s, len,
|
||||
"Sets log level for libretro cores \n"
|
||||
"(GET_LOG_INTERFACE). \n"
|
||||
" \n"
|
||||
" If a log level issued by a libretro \n"
|
||||
" core is below libretro_log level, it \n"
|
||||
" is ignored.\n"
|
||||
" \n"
|
||||
" DEBUG logs are always ignored unless \n"
|
||||
" verbose mode is activated (--verbose).\n"
|
||||
" \n"
|
||||
" DEBUG = 0\n"
|
||||
" INFO = 1\n"
|
||||
" WARN = 2\n"
|
||||
" ERROR = 3"
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_STATE_SLOT_INCREASE:
|
||||
case MENU_LABEL_STATE_SLOT_DECREASE:
|
||||
snprintf(s, len,
|
||||
"State slots.\n"
|
||||
" \n"
|
||||
" With slot set to 0, save state name is *.state \n"
|
||||
" (or whatever defined on commandline).\n"
|
||||
"When slot is != 0, path will be (path)(d), \n"
|
||||
"where (d) is slot number.");
|
||||
break;
|
||||
case MENU_LABEL_SHADER_APPLY_CHANGES:
|
||||
snprintf(s, len,
|
||||
"Apply Shader Changes. \n"
|
||||
" \n"
|
||||
"After changing shader settings, use this to \n"
|
||||
"apply changes. \n"
|
||||
" \n"
|
||||
"Changing shader settings is a somewhat \n"
|
||||
"expensive operation so it has to be \n"
|
||||
"done explicitly. \n"
|
||||
" \n"
|
||||
"When you apply shaders, the menu shader \n"
|
||||
"settings are saved to a temporary file (either \n"
|
||||
"menu.cgp or menu.glslp) and loaded. The file \n"
|
||||
"persists after RetroArch exits. The file is \n"
|
||||
"saved to Shader Directory."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_INPUT_BIND_DEVICE_ID:
|
||||
snprintf(s, len,
|
||||
"Input Device. \n"
|
||||
" \n"
|
||||
"Picks which gamepad to use for user N. \n"
|
||||
"The name of the pad is available."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_MENU_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggles menu.");
|
||||
break;
|
||||
case MENU_LABEL_GRAB_MOUSE_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggles mouse grab.\n"
|
||||
" \n"
|
||||
"When mouse is grabbed, RetroArch hides the \n"
|
||||
"mouse, and keeps the mouse pointer inside \n"
|
||||
"the window to allow relative mouse input to \n"
|
||||
"work better.");
|
||||
break;
|
||||
case MENU_LABEL_DISK_NEXT:
|
||||
snprintf(s, len,
|
||||
"Cycles through disk images. Use after \n"
|
||||
"ejecting. \n"
|
||||
" \n"
|
||||
" Complete by toggling eject again.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_FILTER:
|
||||
#ifdef HAVE_FILTERS_BUILTIN
|
||||
snprintf(s, len,
|
||||
"CPU-based video filter.");
|
||||
#else
|
||||
snprintf(s, len,
|
||||
"CPU-based video filter.\n"
|
||||
" \n"
|
||||
"Path to a dynamic library.");
|
||||
#endif
|
||||
break;
|
||||
case MENU_LABEL_AUDIO_DEVICE:
|
||||
snprintf(s, len,
|
||||
"Override the default audio device \n"
|
||||
"the audio driver uses.\n"
|
||||
"This is driver dependent. E.g.\n"
|
||||
#ifdef HAVE_ALSA
|
||||
" \n"
|
||||
"ALSA wants a PCM device."
|
||||
#endif
|
||||
#ifdef HAVE_OSS
|
||||
" \n"
|
||||
"OSS wants a path (e.g. /dev/dsp)."
|
||||
#endif
|
||||
#ifdef HAVE_JACK
|
||||
" \n"
|
||||
"JACK wants portnames (e.g. system:playback1\n"
|
||||
",system:playback_2)."
|
||||
#endif
|
||||
#ifdef HAVE_RSOUND
|
||||
" \n"
|
||||
"RSound wants an IP address to an RSound \n"
|
||||
"server."
|
||||
#endif
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_DISK_EJECT_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggles eject for disks.\n"
|
||||
" \n"
|
||||
"Used for multiple-disk content.");
|
||||
break;
|
||||
case MENU_LABEL_ENABLE_HOTKEY:
|
||||
snprintf(s, len,
|
||||
"Enable other hotkeys.\n"
|
||||
" \n"
|
||||
" If this hotkey is bound to either keyboard, \n"
|
||||
"joybutton or joyaxis, all other hotkeys will \n"
|
||||
"be disabled unless this hotkey is also held \n"
|
||||
"at the same time. \n"
|
||||
" \n"
|
||||
"This is useful for RETRO_KEYBOARD centric \n"
|
||||
"implementations which query a large area of \n"
|
||||
"the keyboard, where it is not desirable that \n"
|
||||
"hotkeys get in the way.");
|
||||
break;
|
||||
case MENU_LABEL_REWIND_ENABLE:
|
||||
snprintf(s, len,
|
||||
"Enable rewinding.\n"
|
||||
" \n"
|
||||
"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;
|
||||
case MENU_LABEL_AUDIO_VOLUME:
|
||||
snprintf(s, len,
|
||||
"Audio volume, expressed in dB.\n"
|
||||
" \n"
|
||||
" 0 dB is normal volume. No gain will be applied.\n"
|
||||
"Gain can be controlled in runtime with Input\n"
|
||||
"Volume Up / Input Volume Down.");
|
||||
break;
|
||||
case MENU_LABEL_AUDIO_RATE_CONTROL_DELTA:
|
||||
snprintf(s, len,
|
||||
"Audio rate control.\n"
|
||||
" \n"
|
||||
"Setting this to 0 disables rate control.\n"
|
||||
"Any other value controls audio rate control \n"
|
||||
"delta.\n"
|
||||
" \n"
|
||||
"Defines how much input rate can be adjusted \n"
|
||||
"dynamically.\n"
|
||||
" \n"
|
||||
" Input rate is defined as: \n"
|
||||
" input rate * (1.0 +/- (rate control delta))");
|
||||
break;
|
||||
case MENU_LABEL_AUDIO_MAX_TIMING_SKEW:
|
||||
snprintf(s, len,
|
||||
"Maximum audio timing skew.\n"
|
||||
" \n"
|
||||
"Defines the maximum change in input rate.\n"
|
||||
"You may want to increase this to enable\n"
|
||||
"very large changes in timing, for example\n"
|
||||
"running PAL cores on NTSC displays, at the\n"
|
||||
"cost of inaccurate audio pitch.\n"
|
||||
" \n"
|
||||
" Input rate is defined as: \n"
|
||||
" input rate * (1.0 +/- (max timing skew))");
|
||||
break;
|
||||
case MENU_LABEL_OVERLAY_NEXT:
|
||||
snprintf(s, len,
|
||||
"Toggles to next overlay.\n"
|
||||
" \n"
|
||||
"Wraps around.");
|
||||
break;
|
||||
case MENU_LABEL_LOG_VERBOSITY:
|
||||
snprintf(s, len,
|
||||
"Enable or disable verbosity level \n"
|
||||
"of frontend.");
|
||||
break;
|
||||
case MENU_LABEL_VOLUME_UP:
|
||||
snprintf(s, len,
|
||||
"Increases audio volume.");
|
||||
break;
|
||||
case MENU_LABEL_VOLUME_DOWN:
|
||||
snprintf(s, len,
|
||||
"Decreases audio volume.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_DISABLE_COMPOSITION:
|
||||
snprintf(s, len,
|
||||
"Forcibly disable composition.\n"
|
||||
"Only valid on Windows Vista/7 for now.");
|
||||
break;
|
||||
case MENU_LABEL_PERFCNT_ENABLE:
|
||||
snprintf(s, len,
|
||||
"Enable or disable frontend \n"
|
||||
"performance counters.");
|
||||
break;
|
||||
case MENU_LABEL_SYSTEM_DIRECTORY:
|
||||
snprintf(s, len,
|
||||
"System Directory. \n"
|
||||
" \n"
|
||||
"Sets the 'system' directory.\n"
|
||||
"Cores can query for this\n"
|
||||
"directory to load BIOSes, \n"
|
||||
"system-specific configs, etc.");
|
||||
break;
|
||||
case MENU_LABEL_SAVESTATE_AUTO_SAVE:
|
||||
snprintf(s, len,
|
||||
"Automatically saves a savestate at the \n"
|
||||
"end of RetroArch's lifetime.\n"
|
||||
" \n"
|
||||
"RetroArch will automatically load any savestate\n"
|
||||
"with this path on startup if 'Auto Load State\n"
|
||||
"is enabled.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_THREADED:
|
||||
snprintf(s, len,
|
||||
"Use threaded video driver.\n"
|
||||
" \n"
|
||||
"Using this might improve performance at \n"
|
||||
"possible cost of latency and more video \n"
|
||||
"stuttering.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_VSYNC:
|
||||
snprintf(s, len,
|
||||
"Video V-Sync.\n");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_HARD_SYNC:
|
||||
snprintf(s, len,
|
||||
"Attempts to hard-synchronize \n"
|
||||
"CPU and GPU.\n"
|
||||
" \n"
|
||||
"Can reduce latency at cost of \n"
|
||||
"performance.");
|
||||
break;
|
||||
case MENU_LABEL_REWIND_GRANULARITY:
|
||||
snprintf(s, len,
|
||||
"Rewind granularity.\n"
|
||||
" \n"
|
||||
" When rewinding defined number of \n"
|
||||
"frames, you can rewind several frames \n"
|
||||
"at a time, increasing the rewinding \n"
|
||||
"speed.");
|
||||
break;
|
||||
case MENU_LABEL_SCREENSHOT:
|
||||
snprintf(s, len,
|
||||
"Take screenshot.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_FRAME_DELAY:
|
||||
snprintf(s, len,
|
||||
"Sets how many milliseconds to delay\n"
|
||||
"after VSync before running the core.\n"
|
||||
"\n"
|
||||
"Can reduce latency at cost of\n"
|
||||
"higher risk of stuttering.\n"
|
||||
" \n"
|
||||
"Maximum is 15.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_HARD_SYNC_FRAMES:
|
||||
snprintf(s, len,
|
||||
"Sets how many frames CPU can \n"
|
||||
"run ahead of GPU when using 'GPU \n"
|
||||
"Hard Sync'.\n"
|
||||
" \n"
|
||||
"Maximum is 3.\n"
|
||||
" \n"
|
||||
" 0: Syncs to GPU immediately.\n"
|
||||
" 1: Syncs to previous frame.\n"
|
||||
" 2: Etc ...");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_BLACK_FRAME_INSERTION:
|
||||
snprintf(s, len,
|
||||
"Inserts a black frame inbetween \n"
|
||||
"frames.\n"
|
||||
" \n"
|
||||
"Useful for 120 Hz monitors who want to \n"
|
||||
"play 60 Hz material with eliminated \n"
|
||||
"ghosting.\n"
|
||||
" \n"
|
||||
"Video refresh rate should still be \n"
|
||||
"configured as if it is a 60 Hz monitor \n"
|
||||
"(divide refresh rate by 2).");
|
||||
break;
|
||||
case MENU_LABEL_RGUI_SHOW_START_SCREEN:
|
||||
snprintf(s, len,
|
||||
"Show startup screen in menu.\n"
|
||||
"Is automatically set to false when seen\n"
|
||||
"for the first time.\n"
|
||||
" \n"
|
||||
"This is only updated in config if\n"
|
||||
"'Save Configuration on Exit' is enabled.\n");
|
||||
break;
|
||||
case MENU_LABEL_CORE_SPECIFIC_CONFIG:
|
||||
snprintf(s, len,
|
||||
"Load up a specific config file \n"
|
||||
"based on the core being used.\n");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_FULLSCREEN:
|
||||
snprintf(s, len, "Toggles fullscreen.");
|
||||
break;
|
||||
case MENU_LABEL_BLOCK_SRAM_OVERWRITE:
|
||||
snprintf(s, len,
|
||||
"Block SRAM from being overwritten \n"
|
||||
"when loading save states.\n"
|
||||
" \n"
|
||||
"Might potentially lead to buggy games.");
|
||||
break;
|
||||
case MENU_LABEL_PAUSE_NONACTIVE:
|
||||
snprintf(s, len,
|
||||
"Pause gameplay when window focus \n"
|
||||
"is lost.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_GPU_SCREENSHOT:
|
||||
snprintf(s, len,
|
||||
"Screenshots output of GPU shaded \n"
|
||||
"material if available.");
|
||||
break;
|
||||
case MENU_LABEL_SCREENSHOT_DIRECTORY:
|
||||
snprintf(s, len,
|
||||
"Screenshot Directory. \n"
|
||||
" \n"
|
||||
"Directory to dump screenshots to."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_SWAP_INTERVAL:
|
||||
snprintf(s, len,
|
||||
"VSync Swap Interval.\n"
|
||||
" \n"
|
||||
"Uses a custom swap interval for VSync. Set this \n"
|
||||
"to effectively halve monitor refresh rate.");
|
||||
break;
|
||||
case MENU_LABEL_SAVEFILE_DIRECTORY:
|
||||
snprintf(s, len,
|
||||
"Savefile Directory. \n"
|
||||
" \n"
|
||||
"Save all save files (*.srm) to this \n"
|
||||
"directory. This includes related files like \n"
|
||||
".bsv, .rt, .psrm, etc...\n"
|
||||
" \n"
|
||||
"This will be overridden by explicit command line\n"
|
||||
"options.");
|
||||
break;
|
||||
case MENU_LABEL_SAVESTATE_DIRECTORY:
|
||||
snprintf(s, len,
|
||||
"Savestate Directory. \n"
|
||||
" \n"
|
||||
"Save all save states (*.state) to this \n"
|
||||
"directory.\n"
|
||||
" \n"
|
||||
"This will be overridden by explicit command line\n"
|
||||
"options.");
|
||||
break;
|
||||
case MENU_LABEL_ASSETS_DIRECTORY:
|
||||
snprintf(s, len,
|
||||
"Assets Directory. \n"
|
||||
" \n"
|
||||
" This location is queried by default when \n"
|
||||
"menu interfaces try to look for loadable \n"
|
||||
"assets, etc.");
|
||||
break;
|
||||
case MENU_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY:
|
||||
snprintf(s, len,
|
||||
"Dynamic Wallpapers Directory. \n"
|
||||
" \n"
|
||||
" The place to store wallpapers that will \n"
|
||||
"be loaded dynamically by the menu depending \n"
|
||||
"on context.");
|
||||
break;
|
||||
case MENU_LABEL_SLOWMOTION_RATIO:
|
||||
snprintf(s, len,
|
||||
"Slowmotion ratio."
|
||||
" \n"
|
||||
"When slowmotion, content will slow\n"
|
||||
"down by factor.");
|
||||
break;
|
||||
case MENU_LABEL_INPUT_AXIS_THRESHOLD:
|
||||
snprintf(s, len,
|
||||
"Defines axis threshold.\n"
|
||||
" \n"
|
||||
"How far an axis must be tilted to result\n"
|
||||
"in a button press.\n"
|
||||
" Possible values are [0.0, 1.0].");
|
||||
break;
|
||||
case MENU_LABEL_INPUT_TURBO_PERIOD:
|
||||
snprintf(s, len,
|
||||
"Turbo period.\n"
|
||||
" \n"
|
||||
"Describes speed of which turbo-enabled\n"
|
||||
"buttons toggle."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_INPUT_AUTODETECT_ENABLE:
|
||||
snprintf(s, len,
|
||||
"Enable input auto-detection.\n"
|
||||
" \n"
|
||||
"Will attempt to auto-configure \n"
|
||||
"joypads, Plug-and-Play style.");
|
||||
break;
|
||||
case MENU_LABEL_CAMERA_ALLOW:
|
||||
snprintf(s, len,
|
||||
"Allow or disallow camera access by \n"
|
||||
"cores.");
|
||||
break;
|
||||
case MENU_LABEL_LOCATION_ALLOW:
|
||||
snprintf(s, len,
|
||||
"Allow or disallow location services \n"
|
||||
"access by cores.");
|
||||
break;
|
||||
case MENU_LABEL_TURBO:
|
||||
snprintf(s, len,
|
||||
"Turbo enable.\n"
|
||||
" \n"
|
||||
"Holding the turbo while pressing another \n"
|
||||
"button will let the button enter a turbo \n"
|
||||
"mode where the button state is modulated \n"
|
||||
"with a periodic signal. \n"
|
||||
" \n"
|
||||
"The modulation stops when the button \n"
|
||||
"itself (not turbo button) is released.");
|
||||
break;
|
||||
case MENU_LABEL_OSK_ENABLE:
|
||||
snprintf(s, len,
|
||||
"Enable/disable on-screen keyboard.");
|
||||
break;
|
||||
case MENU_LABEL_AUDIO_MUTE:
|
||||
snprintf(s, len,
|
||||
"Mute/unmute audio.");
|
||||
break;
|
||||
case MENU_LABEL_REWIND:
|
||||
snprintf(s, len,
|
||||
"Hold button down to rewind.\n"
|
||||
" \n"
|
||||
"Rewind must be enabled.");
|
||||
break;
|
||||
case MENU_LABEL_EXIT_EMULATOR:
|
||||
snprintf(s, len,
|
||||
"Key to exit RetroArch cleanly."
|
||||
#if !defined(RARCH_MOBILE) && !defined(RARCH_CONSOLE)
|
||||
"\nKilling it in any hard way (SIGKILL, \n"
|
||||
"etc) will terminate without saving\n"
|
||||
"RAM, etc. On Unix-likes,\n"
|
||||
"SIGINT/SIGTERM allows\n"
|
||||
"a clean deinitialization."
|
||||
#endif
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_LOAD_STATE:
|
||||
snprintf(s, len,
|
||||
"Loads state.");
|
||||
break;
|
||||
case MENU_LABEL_SAVE_STATE:
|
||||
snprintf(s, len,
|
||||
"Saves state.");
|
||||
break;
|
||||
case MENU_LABEL_NETPLAY_FLIP_PLAYERS:
|
||||
snprintf(s, len,
|
||||
"Netplay flip users.");
|
||||
break;
|
||||
case MENU_LABEL_CHEAT_INDEX_PLUS:
|
||||
snprintf(s, len,
|
||||
"Increment cheat index.\n");
|
||||
break;
|
||||
case MENU_LABEL_CHEAT_INDEX_MINUS:
|
||||
snprintf(s, len,
|
||||
"Decrement cheat index.\n");
|
||||
break;
|
||||
case MENU_LABEL_SHADER_PREV:
|
||||
snprintf(s, len,
|
||||
"Applies previous shader in directory.");
|
||||
break;
|
||||
case MENU_LABEL_SHADER_NEXT:
|
||||
snprintf(s, len,
|
||||
"Applies next shader in directory.");
|
||||
break;
|
||||
case MENU_LABEL_RESET:
|
||||
snprintf(s, len,
|
||||
"Reset the content.\n");
|
||||
break;
|
||||
case MENU_LABEL_PAUSE_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggle between paused and non-paused state.");
|
||||
break;
|
||||
case MENU_LABEL_CHEAT_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggle cheat index.\n");
|
||||
break;
|
||||
case MENU_LABEL_HOLD_FAST_FORWARD:
|
||||
snprintf(s, len,
|
||||
"Hold for fast-forward. Releasing button \n"
|
||||
"disables fast-forward.");
|
||||
break;
|
||||
case MENU_LABEL_SLOWMOTION:
|
||||
snprintf(s, len,
|
||||
"Hold for slowmotion.");
|
||||
break;
|
||||
case MENU_LABEL_FRAME_ADVANCE:
|
||||
snprintf(s, len,
|
||||
"Frame advance when content is paused.");
|
||||
break;
|
||||
case MENU_LABEL_MOVIE_RECORD_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggle between recording and not.");
|
||||
break;
|
||||
case MENU_LABEL_L_X_PLUS:
|
||||
case MENU_LABEL_L_X_MINUS:
|
||||
case MENU_LABEL_L_Y_PLUS:
|
||||
case MENU_LABEL_L_Y_MINUS:
|
||||
case MENU_LABEL_R_X_PLUS:
|
||||
case MENU_LABEL_R_X_MINUS:
|
||||
case MENU_LABEL_R_Y_PLUS:
|
||||
case MENU_LABEL_R_Y_MINUS:
|
||||
snprintf(s, len,
|
||||
"Axis for analog stick (DualShock-esque).\n"
|
||||
" \n"
|
||||
"Bound as usual, however, if a real analog \n"
|
||||
"axis is bound, it can be read as a true analog.\n"
|
||||
" \n"
|
||||
"Positive X axis is right. \n"
|
||||
"Positive Y axis is down.");
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -60,6 +60,44 @@ const char *menu_hash_to_str(uint32_t hash)
|
||||
return menu_hash_to_str_us(hash);
|
||||
}
|
||||
|
||||
int menu_hash_get_help(uint32_t hash, char *s, size_t len)
|
||||
{
|
||||
int ret = -1;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
if (!settings)
|
||||
return -1;
|
||||
|
||||
switch (settings->user_language)
|
||||
{
|
||||
case RETRO_LANGUAGE_FRENCH:
|
||||
ret = menu_hash_get_help_fr(hash, s, len);
|
||||
break;
|
||||
case RETRO_LANGUAGE_GERMAN:
|
||||
ret = menu_hash_get_help_de(hash, s, len);
|
||||
break;
|
||||
case RETRO_LANGUAGE_SPANISH:
|
||||
ret = menu_hash_get_help_es(hash, s, len);
|
||||
break;
|
||||
case RETRO_LANGUAGE_ITALIAN:
|
||||
ret = menu_hash_get_help_it(hash, s, len);
|
||||
break;
|
||||
case RETRO_LANGUAGE_PORTUGUESE:
|
||||
ret = menu_hash_get_help_pt(hash, s, len);
|
||||
break;
|
||||
case RETRO_LANGUAGE_DUTCH:
|
||||
ret = menu_hash_get_help_nl(hash, s, len);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (ret == 0)
|
||||
return ret;
|
||||
|
||||
return menu_hash_get_help_us(hash, s, len);
|
||||
}
|
||||
|
||||
uint32_t menu_hash_calculate(const char *s)
|
||||
{
|
||||
return djb2_calculate(s);
|
||||
|
@ -903,22 +903,28 @@ extern "C" {
|
||||
#define MENU_VALUE_PORT 0x7c8ad52aU
|
||||
|
||||
const char *menu_hash_to_str_de(uint32_t hash);
|
||||
|
||||
const char *menu_hash_to_str_en(uint32_t hash);
|
||||
int menu_hash_get_help_de(uint32_t hash, char *s, size_t len);
|
||||
|
||||
const char *menu_hash_to_str_es(uint32_t hash);
|
||||
int menu_hash_get_help_es(uint32_t hash, char *s, size_t len);
|
||||
|
||||
const char *menu_hash_to_str_fr(uint32_t hash);
|
||||
int menu_hash_get_help_fr(uint32_t hash, char *s, size_t len);
|
||||
|
||||
const char *menu_hash_to_str_it(uint32_t hash);
|
||||
int menu_hash_get_help_it(uint32_t hash, char *s, size_t len);
|
||||
|
||||
const char *menu_hash_to_str_nl(uint32_t hash);
|
||||
int menu_hash_get_help_nl(uint32_t hash, char *s, size_t len);
|
||||
|
||||
const char *menu_hash_to_str_pt(uint32_t hash);
|
||||
int menu_hash_get_help_pt(uint32_t hash, char *s, size_t len);
|
||||
|
||||
const char *menu_hash_to_str_us(uint32_t hash);
|
||||
int menu_hash_get_help_us(uint32_t hash, char *s, size_t len);
|
||||
|
||||
const char *menu_hash_to_str(uint32_t hash);
|
||||
int menu_hash_get_help(uint32_t hash, char *s, size_t len);
|
||||
|
||||
uint32_t menu_hash_calculate(const char *s);
|
||||
|
||||
|
@ -2018,954 +2018,6 @@ static rarch_setting_t setting_string_setting_options(enum setting_type type,
|
||||
return result;
|
||||
}
|
||||
|
||||
static int setting_get_description_compare_label(uint32_t label_hash,
|
||||
settings_t *settings, char *s, size_t len)
|
||||
{
|
||||
uint32_t driver_hash = 0;
|
||||
|
||||
switch (label_hash)
|
||||
{
|
||||
case MENU_LABEL_INPUT_DRIVER:
|
||||
driver_hash = menu_hash_calculate(settings->input.driver);
|
||||
|
||||
switch (driver_hash)
|
||||
{
|
||||
case MENU_LABEL_INPUT_DRIVER_UDEV:
|
||||
snprintf(s, len,
|
||||
"udev Input driver. \n"
|
||||
" \n"
|
||||
"This driver can run without X. \n"
|
||||
" \n"
|
||||
"It uses the recent evdev joypad API \n"
|
||||
"for joystick support. It supports \n"
|
||||
"hotplugging and force feedback (if \n"
|
||||
"supported by device). \n"
|
||||
" \n"
|
||||
"The driver reads evdev events for keyboard \n"
|
||||
"support. It also supports keyboard callback, \n"
|
||||
"mice and touchpads. \n"
|
||||
" \n"
|
||||
"By default in most distros, /dev/input nodes \n"
|
||||
"are root-only (mode 600). You can set up a udev \n"
|
||||
"rule which makes these accessible to non-root."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_INPUT_DRIVER_LINUXRAW:
|
||||
snprintf(s, len,
|
||||
"linuxraw Input driver. \n"
|
||||
" \n"
|
||||
"This driver requires an active TTY. Keyboard \n"
|
||||
"events are read directly from the TTY which \n"
|
||||
"makes it simpler, but not as flexible as udev. \n" "Mice, etc, are not supported at all. \n"
|
||||
" \n"
|
||||
"This driver uses the older joystick API \n"
|
||||
"(/dev/input/js*).");
|
||||
break;
|
||||
default:
|
||||
snprintf(s, len,
|
||||
"Input driver.\n"
|
||||
" \n"
|
||||
"Depending on video driver, it might \n"
|
||||
"force a different input driver.");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case MENU_LABEL_LOAD_CONTENT:
|
||||
snprintf(s, len,
|
||||
"Load Content. \n"
|
||||
"Browse for content. \n"
|
||||
" \n"
|
||||
"To load content, you need a \n"
|
||||
"libretro core to use, and a \n"
|
||||
"content file. \n"
|
||||
" \n"
|
||||
"To control where the menu starts \n"
|
||||
" to browse for content, set \n"
|
||||
"Browser Directory. If not set, \n"
|
||||
"it will start in root. \n"
|
||||
" \n"
|
||||
"The browser will filter out \n"
|
||||
"extensions for the last core set \n"
|
||||
"in 'Core', and use that core when \n"
|
||||
"content is loaded."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_CORE_LIST:
|
||||
snprintf(s, len,
|
||||
"Load Core. \n"
|
||||
" \n"
|
||||
"Browse for a libretro core \n"
|
||||
"implementation. Where the browser \n"
|
||||
"starts depends on your Core Directory \n"
|
||||
"path. If blank, it will start in root. \n"
|
||||
" \n"
|
||||
"If Core Directory is a directory, the menu \n"
|
||||
"will use that as top folder. If Core \n"
|
||||
"Directory is a full path, it will start \n"
|
||||
"in the folder where the file is.");
|
||||
break;
|
||||
case MENU_LABEL_LOAD_CONTENT_HISTORY:
|
||||
snprintf(s, len,
|
||||
"Loading content from history. \n"
|
||||
" \n"
|
||||
"As content is loaded, content and libretro \n"
|
||||
"core combinations are saved to history. \n"
|
||||
" \n"
|
||||
"The history is saved to a file in the same \n"
|
||||
"directory as the RetroArch config file. If \n"
|
||||
"no config file was loaded in startup, history \n"
|
||||
"will not be saved or loaded, and will not exist \n"
|
||||
"in the main menu."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_DRIVER:
|
||||
driver_hash = menu_hash_calculate(settings->video.driver);
|
||||
|
||||
switch (driver_hash)
|
||||
{
|
||||
case MENU_LABEL_VIDEO_DRIVER_GL:
|
||||
snprintf(s, len,
|
||||
"OpenGL Video driver. \n"
|
||||
" \n"
|
||||
"This driver allows libretro GL cores to \n"
|
||||
"be used in addition to software-rendered \n"
|
||||
"core implementations.\n"
|
||||
" \n"
|
||||
"Performance for software-rendered and \n"
|
||||
"libretro GL core implementations is \n"
|
||||
"dependent on your graphics card's \n"
|
||||
"underlying GL driver).");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_DRIVER_SDL2:
|
||||
snprintf(s, len,
|
||||
"SDL 2 Video driver.\n"
|
||||
" \n"
|
||||
"This is an SDL 2 software-rendered video \n"
|
||||
"driver.\n"
|
||||
" \n"
|
||||
"Performance for software-rendered libretro \n"
|
||||
"core implementations is dependent \n"
|
||||
"on your platform SDL implementation.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_DRIVER_SDL1:
|
||||
snprintf(s, len,
|
||||
"SDL Video driver.\n"
|
||||
" \n"
|
||||
"This is an SDL 1.2 software-rendered video \n"
|
||||
"driver.\n"
|
||||
" \n"
|
||||
"Performance is considered to be suboptimal. \n"
|
||||
"Consider using it only as a last resort.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_DRIVER_D3D:
|
||||
snprintf(s, len,
|
||||
"Direct3D Video driver. \n"
|
||||
" \n"
|
||||
"Performance for software-rendered cores \n"
|
||||
"is dependent on your graphic card's \n"
|
||||
"underlying D3D driver).");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_DRIVER_EXYNOS:
|
||||
snprintf(s, len,
|
||||
"Exynos-G2D Video Driver. \n"
|
||||
" \n"
|
||||
"This is a low-level Exynos video driver. \n"
|
||||
"Uses the G2D block in Samsung Exynos SoC \n"
|
||||
"for blit operations. \n"
|
||||
" \n"
|
||||
"Performance for software rendered cores \n"
|
||||
"should be optimal.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_DRIVER_SUNXI:
|
||||
snprintf(s, len,
|
||||
"Sunxi-G2D Video Driver. \n"
|
||||
" \n"
|
||||
"This is a low-level Sunxi video driver. \n"
|
||||
"Uses the G2D block in Allwinner SoCs.");
|
||||
break;
|
||||
default:
|
||||
snprintf(s, len,
|
||||
"Current Video driver.");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case MENU_LABEL_AUDIO_DSP_PLUGIN:
|
||||
snprintf(s, len,
|
||||
"Audio DSP plugin.\n"
|
||||
" Processes audio before it's sent to \n"
|
||||
"the driver."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_AUDIO_RESAMPLER_DRIVER:
|
||||
driver_hash = menu_hash_calculate(settings->audio.resampler);
|
||||
|
||||
switch (driver_hash)
|
||||
{
|
||||
case MENU_LABEL_AUDIO_RESAMPLER_DRIVER_SINC:
|
||||
snprintf(s, len,
|
||||
"Windowed SINC implementation.");
|
||||
break;
|
||||
case MENU_LABEL_AUDIO_RESAMPLER_DRIVER_CC:
|
||||
snprintf(s, len,
|
||||
"Convoluted Cosine implementation.");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_SHADER_PRESET:
|
||||
snprintf(s, len,
|
||||
"Load Shader Preset. \n"
|
||||
" \n"
|
||||
" Load a "
|
||||
#ifdef HAVE_CG
|
||||
"Cg"
|
||||
#endif
|
||||
#ifdef HAVE_GLSL
|
||||
#ifdef HAVE_CG
|
||||
"/"
|
||||
#endif
|
||||
"GLSL"
|
||||
#endif
|
||||
#ifdef HAVE_HLSL
|
||||
#if defined(HAVE_CG) || defined(HAVE_HLSL)
|
||||
"/"
|
||||
#endif
|
||||
"HLSL"
|
||||
#endif
|
||||
" preset directly. \n"
|
||||
"The menu shader menu is updated accordingly. \n"
|
||||
" \n"
|
||||
"If the CGP uses scaling methods which are not \n"
|
||||
"simple, (i.e. source scaling, same scaling \n"
|
||||
"factor for X/Y), the scaling factor displayed \n"
|
||||
"in the menu might not be correct."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_SHADER_SCALE_PASS:
|
||||
snprintf(s, len,
|
||||
"Scale for this pass. \n"
|
||||
" \n"
|
||||
"The scale factor accumulates, i.e. 2x \n"
|
||||
"for first pass and 2x for second pass \n"
|
||||
"will give you a 4x total scale. \n"
|
||||
" \n"
|
||||
"If there is a scale factor for last \n"
|
||||
"pass, the result is stretched to \n"
|
||||
"screen with the filter specified in \n"
|
||||
"'Default Filter'. \n"
|
||||
" \n"
|
||||
"If 'Don't Care' is set, either 1x \n"
|
||||
"scale or stretch to fullscreen will \n"
|
||||
"be used depending if it's not the last \n"
|
||||
"pass or not."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_SHADER_NUM_PASSES:
|
||||
snprintf(s, len,
|
||||
"Shader Passes. \n"
|
||||
" \n"
|
||||
"RetroArch allows you to mix and match various \n"
|
||||
"shaders with arbitrary shader passes, with \n"
|
||||
"custom hardware filters and scale factors. \n"
|
||||
" \n"
|
||||
"This option specifies the number of shader \n"
|
||||
"passes to use. If you set this to 0, and use \n"
|
||||
"Apply Shader Changes, you use a 'blank' shader. \n"
|
||||
" \n"
|
||||
"The Default Filter option will affect the \n"
|
||||
"stretching filter.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_SHADER_PARAMETERS:
|
||||
snprintf(s, len,
|
||||
"Shader Parameters. \n"
|
||||
" \n"
|
||||
"Modifies current shader directly. Will not be \n"
|
||||
"saved to CGP/GLSLP preset file.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_SHADER_PRESET_PARAMETERS:
|
||||
snprintf(s, len,
|
||||
"Shader Preset Parameters. \n"
|
||||
" \n"
|
||||
"Modifies shader preset currently in menu."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_SHADER_PASS:
|
||||
snprintf(s, len,
|
||||
"Path to shader. \n"
|
||||
" \n"
|
||||
"All shaders must be of the same \n"
|
||||
"type (i.e. CG, GLSL or HLSL). \n"
|
||||
" \n"
|
||||
"Set Shader Directory to set where \n"
|
||||
"the browser starts to look for \n"
|
||||
"shaders."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_CONFIG_SAVE_ON_EXIT:
|
||||
snprintf(s, len,
|
||||
"Saves config to disk on exit.\n"
|
||||
"Useful for menu as settings can be\n"
|
||||
"modified. Overwrites the config.\n"
|
||||
" \n"
|
||||
"#include's and comments are not \n"
|
||||
"preserved. \n"
|
||||
" \n"
|
||||
"By design, the config file is \n"
|
||||
"considered immutable as it is \n"
|
||||
"likely maintained by the user, \n"
|
||||
"and should not be overwritten \n"
|
||||
"behind the user's back."
|
||||
#if defined(RARCH_CONSOLE) || defined(RARCH_MOBILE)
|
||||
"\nThis is not not the case on \n"
|
||||
"consoles however, where \n"
|
||||
"looking at the config file \n"
|
||||
"manually isn't really an option."
|
||||
#endif
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_SHADER_FILTER_PASS:
|
||||
snprintf(s, len,
|
||||
"Hardware filter for this pass. \n"
|
||||
" \n"
|
||||
"If 'Don't Care' is set, 'Default \n"
|
||||
"Filter' will be used."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_AUTOSAVE_INTERVAL:
|
||||
snprintf(s, len,
|
||||
"Autosaves the non-volatile SRAM \n"
|
||||
"at a regular interval.\n"
|
||||
" \n"
|
||||
"This is disabled by default unless set \n"
|
||||
"otherwise. The interval is measured in \n"
|
||||
"seconds. \n"
|
||||
" \n"
|
||||
"A value of 0 disables autosave.");
|
||||
break;
|
||||
case MENU_LABEL_INPUT_BIND_DEVICE_TYPE:
|
||||
snprintf(s, len,
|
||||
"Input Device Type. \n"
|
||||
" \n"
|
||||
"Picks which device type to use. This is \n"
|
||||
"relevant for the libretro core itself."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_LIBRETRO_LOG_LEVEL:
|
||||
snprintf(s, len,
|
||||
"Sets log level for libretro cores \n"
|
||||
"(GET_LOG_INTERFACE). \n"
|
||||
" \n"
|
||||
" If a log level issued by a libretro \n"
|
||||
" core is below libretro_log level, it \n"
|
||||
" is ignored.\n"
|
||||
" \n"
|
||||
" DEBUG logs are always ignored unless \n"
|
||||
" verbose mode is activated (--verbose).\n"
|
||||
" \n"
|
||||
" DEBUG = 0\n"
|
||||
" INFO = 1\n"
|
||||
" WARN = 2\n"
|
||||
" ERROR = 3"
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_STATE_SLOT_INCREASE:
|
||||
case MENU_LABEL_STATE_SLOT_DECREASE:
|
||||
snprintf(s, len,
|
||||
"State slots.\n"
|
||||
" \n"
|
||||
" With slot set to 0, save state name is *.state \n"
|
||||
" (or whatever defined on commandline).\n"
|
||||
"When slot is != 0, path will be (path)(d), \n"
|
||||
"where (d) is slot number.");
|
||||
break;
|
||||
case MENU_LABEL_SHADER_APPLY_CHANGES:
|
||||
snprintf(s, len,
|
||||
"Apply Shader Changes. \n"
|
||||
" \n"
|
||||
"After changing shader settings, use this to \n"
|
||||
"apply changes. \n"
|
||||
" \n"
|
||||
"Changing shader settings is a somewhat \n"
|
||||
"expensive operation so it has to be \n"
|
||||
"done explicitly. \n"
|
||||
" \n"
|
||||
"When you apply shaders, the menu shader \n"
|
||||
"settings are saved to a temporary file (either \n"
|
||||
"menu.cgp or menu.glslp) and loaded. The file \n"
|
||||
"persists after RetroArch exits. The file is \n"
|
||||
"saved to Shader Directory."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_INPUT_BIND_DEVICE_ID:
|
||||
snprintf(s, len,
|
||||
"Input Device. \n"
|
||||
" \n"
|
||||
"Picks which gamepad to use for user N. \n"
|
||||
"The name of the pad is available."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_MENU_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggles menu.");
|
||||
break;
|
||||
case MENU_LABEL_GRAB_MOUSE_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggles mouse grab.\n"
|
||||
" \n"
|
||||
"When mouse is grabbed, RetroArch hides the \n"
|
||||
"mouse, and keeps the mouse pointer inside \n"
|
||||
"the window to allow relative mouse input to \n"
|
||||
"work better.");
|
||||
break;
|
||||
case MENU_LABEL_DISK_NEXT:
|
||||
snprintf(s, len,
|
||||
"Cycles through disk images. Use after \n"
|
||||
"ejecting. \n"
|
||||
" \n"
|
||||
" Complete by toggling eject again.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_FILTER:
|
||||
#ifdef HAVE_FILTERS_BUILTIN
|
||||
snprintf(s, len,
|
||||
"CPU-based video filter.");
|
||||
#else
|
||||
snprintf(s, len,
|
||||
"CPU-based video filter.\n"
|
||||
" \n"
|
||||
"Path to a dynamic library.");
|
||||
#endif
|
||||
break;
|
||||
case MENU_LABEL_AUDIO_DEVICE:
|
||||
snprintf(s, len,
|
||||
"Override the default audio device \n"
|
||||
"the audio driver uses.\n"
|
||||
"This is driver dependent. E.g.\n"
|
||||
#ifdef HAVE_ALSA
|
||||
" \n"
|
||||
"ALSA wants a PCM device."
|
||||
#endif
|
||||
#ifdef HAVE_OSS
|
||||
" \n"
|
||||
"OSS wants a path (e.g. /dev/dsp)."
|
||||
#endif
|
||||
#ifdef HAVE_JACK
|
||||
" \n"
|
||||
"JACK wants portnames (e.g. system:playback1\n"
|
||||
",system:playback_2)."
|
||||
#endif
|
||||
#ifdef HAVE_RSOUND
|
||||
" \n"
|
||||
"RSound wants an IP address to an RSound \n"
|
||||
"server."
|
||||
#endif
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_DISK_EJECT_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggles eject for disks.\n"
|
||||
" \n"
|
||||
"Used for multiple-disk content.");
|
||||
break;
|
||||
case MENU_LABEL_ENABLE_HOTKEY:
|
||||
snprintf(s, len,
|
||||
"Enable other hotkeys.\n"
|
||||
" \n"
|
||||
" If this hotkey is bound to either keyboard, \n"
|
||||
"joybutton or joyaxis, all other hotkeys will \n"
|
||||
"be disabled unless this hotkey is also held \n"
|
||||
"at the same time. \n"
|
||||
" \n"
|
||||
"This is useful for RETRO_KEYBOARD centric \n"
|
||||
"implementations which query a large area of \n"
|
||||
"the keyboard, where it is not desirable that \n"
|
||||
"hotkeys get in the way.");
|
||||
break;
|
||||
case MENU_LABEL_REWIND_ENABLE:
|
||||
snprintf(s, len,
|
||||
"Enable rewinding.\n"
|
||||
" \n"
|
||||
"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;
|
||||
case MENU_LABEL_AUDIO_VOLUME:
|
||||
snprintf(s, len,
|
||||
"Audio volume, expressed in dB.\n"
|
||||
" \n"
|
||||
" 0 dB is normal volume. No gain will be applied.\n"
|
||||
"Gain can be controlled in runtime with Input\n"
|
||||
"Volume Up / Input Volume Down.");
|
||||
break;
|
||||
case MENU_LABEL_AUDIO_RATE_CONTROL_DELTA:
|
||||
snprintf(s, len,
|
||||
"Audio rate control.\n"
|
||||
" \n"
|
||||
"Setting this to 0 disables rate control.\n"
|
||||
"Any other value controls audio rate control \n"
|
||||
"delta.\n"
|
||||
" \n"
|
||||
"Defines how much input rate can be adjusted \n"
|
||||
"dynamically.\n"
|
||||
" \n"
|
||||
" Input rate is defined as: \n"
|
||||
" input rate * (1.0 +/- (rate control delta))");
|
||||
break;
|
||||
case MENU_LABEL_AUDIO_MAX_TIMING_SKEW:
|
||||
snprintf(s, len,
|
||||
"Maximum audio timing skew.\n"
|
||||
" \n"
|
||||
"Defines the maximum change in input rate.\n"
|
||||
"You may want to increase this to enable\n"
|
||||
"very large changes in timing, for example\n"
|
||||
"running PAL cores on NTSC displays, at the\n"
|
||||
"cost of inaccurate audio pitch.\n"
|
||||
" \n"
|
||||
" Input rate is defined as: \n"
|
||||
" input rate * (1.0 +/- (max timing skew))");
|
||||
break;
|
||||
case MENU_LABEL_OVERLAY_NEXT:
|
||||
snprintf(s, len,
|
||||
"Toggles to next overlay.\n"
|
||||
" \n"
|
||||
"Wraps around.");
|
||||
break;
|
||||
case MENU_LABEL_LOG_VERBOSITY:
|
||||
snprintf(s, len,
|
||||
"Enable or disable verbosity level \n"
|
||||
"of frontend.");
|
||||
break;
|
||||
case MENU_LABEL_VOLUME_UP:
|
||||
snprintf(s, len,
|
||||
"Increases audio volume.");
|
||||
break;
|
||||
case MENU_LABEL_VOLUME_DOWN:
|
||||
snprintf(s, len,
|
||||
"Decreases audio volume.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_DISABLE_COMPOSITION:
|
||||
snprintf(s, len,
|
||||
"Forcibly disable composition.\n"
|
||||
"Only valid on Windows Vista/7 for now.");
|
||||
break;
|
||||
case MENU_LABEL_PERFCNT_ENABLE:
|
||||
snprintf(s, len,
|
||||
"Enable or disable frontend \n"
|
||||
"performance counters.");
|
||||
break;
|
||||
case MENU_LABEL_SYSTEM_DIRECTORY:
|
||||
snprintf(s, len,
|
||||
"System Directory. \n"
|
||||
" \n"
|
||||
"Sets the 'system' directory.\n"
|
||||
"Cores can query for this\n"
|
||||
"directory to load BIOSes, \n"
|
||||
"system-specific configs, etc.");
|
||||
break;
|
||||
case MENU_LABEL_SAVESTATE_AUTO_SAVE:
|
||||
snprintf(s, len,
|
||||
"Automatically saves a savestate at the \n"
|
||||
"end of RetroArch's lifetime.\n"
|
||||
" \n"
|
||||
"RetroArch will automatically load any savestate\n"
|
||||
"with this path on startup if 'Auto Load State\n"
|
||||
"is enabled.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_THREADED:
|
||||
snprintf(s, len,
|
||||
"Use threaded video driver.\n"
|
||||
" \n"
|
||||
"Using this might improve performance at \n"
|
||||
"possible cost of latency and more video \n"
|
||||
"stuttering.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_VSYNC:
|
||||
snprintf(s, len,
|
||||
"Video V-Sync.\n");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_HARD_SYNC:
|
||||
snprintf(s, len,
|
||||
"Attempts to hard-synchronize \n"
|
||||
"CPU and GPU.\n"
|
||||
" \n"
|
||||
"Can reduce latency at cost of \n"
|
||||
"performance.");
|
||||
break;
|
||||
case MENU_LABEL_REWIND_GRANULARITY:
|
||||
snprintf(s, len,
|
||||
"Rewind granularity.\n"
|
||||
" \n"
|
||||
" When rewinding defined number of \n"
|
||||
"frames, you can rewind several frames \n"
|
||||
"at a time, increasing the rewinding \n"
|
||||
"speed.");
|
||||
break;
|
||||
case MENU_LABEL_SCREENSHOT:
|
||||
snprintf(s, len,
|
||||
"Take screenshot.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_FRAME_DELAY:
|
||||
snprintf(s, len,
|
||||
"Sets how many milliseconds to delay\n"
|
||||
"after VSync before running the core.\n"
|
||||
"\n"
|
||||
"Can reduce latency at cost of\n"
|
||||
"higher risk of stuttering.\n"
|
||||
" \n"
|
||||
"Maximum is 15.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_HARD_SYNC_FRAMES:
|
||||
snprintf(s, len,
|
||||
"Sets how many frames CPU can \n"
|
||||
"run ahead of GPU when using 'GPU \n"
|
||||
"Hard Sync'.\n"
|
||||
" \n"
|
||||
"Maximum is 3.\n"
|
||||
" \n"
|
||||
" 0: Syncs to GPU immediately.\n"
|
||||
" 1: Syncs to previous frame.\n"
|
||||
" 2: Etc ...");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_BLACK_FRAME_INSERTION:
|
||||
snprintf(s, len,
|
||||
"Inserts a black frame inbetween \n"
|
||||
"frames.\n"
|
||||
" \n"
|
||||
"Useful for 120 Hz monitors who want to \n"
|
||||
"play 60 Hz material with eliminated \n"
|
||||
"ghosting.\n"
|
||||
" \n"
|
||||
"Video refresh rate should still be \n"
|
||||
"configured as if it is a 60 Hz monitor \n"
|
||||
"(divide refresh rate by 2).");
|
||||
break;
|
||||
case MENU_LABEL_RGUI_SHOW_START_SCREEN:
|
||||
snprintf(s, len,
|
||||
"Show startup screen in menu.\n"
|
||||
"Is automatically set to false when seen\n"
|
||||
"for the first time.\n"
|
||||
" \n"
|
||||
"This is only updated in config if\n"
|
||||
"'Save Configuration on Exit' is enabled.\n");
|
||||
break;
|
||||
case MENU_LABEL_CORE_SPECIFIC_CONFIG:
|
||||
snprintf(s, len,
|
||||
"Load up a specific config file \n"
|
||||
"based on the core being used.\n");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_FULLSCREEN:
|
||||
snprintf(s, len, "Toggles fullscreen.");
|
||||
break;
|
||||
case MENU_LABEL_BLOCK_SRAM_OVERWRITE:
|
||||
snprintf(s, len,
|
||||
"Block SRAM from being overwritten \n"
|
||||
"when loading save states.\n"
|
||||
" \n"
|
||||
"Might potentially lead to buggy games.");
|
||||
break;
|
||||
case MENU_LABEL_PAUSE_NONACTIVE:
|
||||
snprintf(s, len,
|
||||
"Pause gameplay when window focus \n"
|
||||
"is lost.");
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_GPU_SCREENSHOT:
|
||||
snprintf(s, len,
|
||||
"Screenshots output of GPU shaded \n"
|
||||
"material if available.");
|
||||
break;
|
||||
case MENU_LABEL_SCREENSHOT_DIRECTORY:
|
||||
snprintf(s, len,
|
||||
"Screenshot Directory. \n"
|
||||
" \n"
|
||||
"Directory to dump screenshots to."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_SWAP_INTERVAL:
|
||||
snprintf(s, len,
|
||||
"VSync Swap Interval.\n"
|
||||
" \n"
|
||||
"Uses a custom swap interval for VSync. Set this \n"
|
||||
"to effectively halve monitor refresh rate.");
|
||||
break;
|
||||
case MENU_LABEL_SAVEFILE_DIRECTORY:
|
||||
snprintf(s, len,
|
||||
"Savefile Directory. \n"
|
||||
" \n"
|
||||
"Save all save files (*.srm) to this \n"
|
||||
"directory. This includes related files like \n"
|
||||
".bsv, .rt, .psrm, etc...\n"
|
||||
" \n"
|
||||
"This will be overridden by explicit command line\n"
|
||||
"options.");
|
||||
break;
|
||||
case MENU_LABEL_SAVESTATE_DIRECTORY:
|
||||
snprintf(s, len,
|
||||
"Savestate Directory. \n"
|
||||
" \n"
|
||||
"Save all save states (*.state) to this \n"
|
||||
"directory.\n"
|
||||
" \n"
|
||||
"This will be overridden by explicit command line\n"
|
||||
"options.");
|
||||
break;
|
||||
case MENU_LABEL_ASSETS_DIRECTORY:
|
||||
snprintf(s, len,
|
||||
"Assets Directory. \n"
|
||||
" \n"
|
||||
" This location is queried by default when \n"
|
||||
"menu interfaces try to look for loadable \n"
|
||||
"assets, etc.");
|
||||
break;
|
||||
case MENU_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY:
|
||||
snprintf(s, len,
|
||||
"Dynamic Wallpapers Directory. \n"
|
||||
" \n"
|
||||
" The place to store wallpapers that will \n"
|
||||
"be loaded dynamically by the menu depending \n"
|
||||
"on context.");
|
||||
break;
|
||||
case MENU_LABEL_SLOWMOTION_RATIO:
|
||||
snprintf(s, len,
|
||||
"Slowmotion ratio."
|
||||
" \n"
|
||||
"When slowmotion, content will slow\n"
|
||||
"down by factor.");
|
||||
break;
|
||||
case MENU_LABEL_INPUT_AXIS_THRESHOLD:
|
||||
snprintf(s, len,
|
||||
"Defines axis threshold.\n"
|
||||
" \n"
|
||||
"How far an axis must be tilted to result\n"
|
||||
"in a button press.\n"
|
||||
" Possible values are [0.0, 1.0].");
|
||||
break;
|
||||
case MENU_LABEL_INPUT_TURBO_PERIOD:
|
||||
snprintf(s, len,
|
||||
"Turbo period.\n"
|
||||
" \n"
|
||||
"Describes speed of which turbo-enabled\n"
|
||||
"buttons toggle."
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_INPUT_AUTODETECT_ENABLE:
|
||||
snprintf(s, len,
|
||||
"Enable input auto-detection.\n"
|
||||
" \n"
|
||||
"Will attempt to auto-configure \n"
|
||||
"joypads, Plug-and-Play style.");
|
||||
break;
|
||||
case MENU_LABEL_CAMERA_ALLOW:
|
||||
snprintf(s, len,
|
||||
"Allow or disallow camera access by \n"
|
||||
"cores.");
|
||||
break;
|
||||
case MENU_LABEL_LOCATION_ALLOW:
|
||||
snprintf(s, len,
|
||||
"Allow or disallow location services \n"
|
||||
"access by cores.");
|
||||
break;
|
||||
case MENU_LABEL_TURBO:
|
||||
snprintf(s, len,
|
||||
"Turbo enable.\n"
|
||||
" \n"
|
||||
"Holding the turbo while pressing another \n"
|
||||
"button will let the button enter a turbo \n"
|
||||
"mode where the button state is modulated \n"
|
||||
"with a periodic signal. \n"
|
||||
" \n"
|
||||
"The modulation stops when the button \n"
|
||||
"itself (not turbo button) is released.");
|
||||
break;
|
||||
case MENU_LABEL_OSK_ENABLE:
|
||||
snprintf(s, len,
|
||||
"Enable/disable on-screen keyboard.");
|
||||
break;
|
||||
case MENU_LABEL_AUDIO_MUTE:
|
||||
snprintf(s, len,
|
||||
"Mute/unmute audio.");
|
||||
break;
|
||||
case MENU_LABEL_REWIND:
|
||||
snprintf(s, len,
|
||||
"Hold button down to rewind.\n"
|
||||
" \n"
|
||||
"Rewind must be enabled.");
|
||||
break;
|
||||
case MENU_LABEL_EXIT_EMULATOR:
|
||||
snprintf(s, len,
|
||||
"Key to exit RetroArch cleanly."
|
||||
#if !defined(RARCH_MOBILE) && !defined(RARCH_CONSOLE)
|
||||
"\nKilling it in any hard way (SIGKILL, \n"
|
||||
"etc) will terminate without saving\n"
|
||||
"RAM, etc. On Unix-likes,\n"
|
||||
"SIGINT/SIGTERM allows\n"
|
||||
"a clean deinitialization."
|
||||
#endif
|
||||
);
|
||||
break;
|
||||
case MENU_LABEL_LOAD_STATE:
|
||||
snprintf(s, len,
|
||||
"Loads state.");
|
||||
break;
|
||||
case MENU_LABEL_SAVE_STATE:
|
||||
snprintf(s, len,
|
||||
"Saves state.");
|
||||
break;
|
||||
case MENU_LABEL_NETPLAY_FLIP_PLAYERS:
|
||||
snprintf(s, len,
|
||||
"Netplay flip users.");
|
||||
break;
|
||||
case MENU_LABEL_CHEAT_INDEX_PLUS:
|
||||
snprintf(s, len,
|
||||
"Increment cheat index.\n");
|
||||
break;
|
||||
case MENU_LABEL_CHEAT_INDEX_MINUS:
|
||||
snprintf(s, len,
|
||||
"Decrement cheat index.\n");
|
||||
break;
|
||||
case MENU_LABEL_SHADER_PREV:
|
||||
snprintf(s, len,
|
||||
"Applies previous shader in directory.");
|
||||
break;
|
||||
case MENU_LABEL_SHADER_NEXT:
|
||||
snprintf(s, len,
|
||||
"Applies next shader in directory.");
|
||||
break;
|
||||
case MENU_LABEL_RESET:
|
||||
snprintf(s, len,
|
||||
"Reset the content.\n");
|
||||
break;
|
||||
case MENU_LABEL_PAUSE_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggle between paused and non-paused state.");
|
||||
break;
|
||||
case MENU_LABEL_CHEAT_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggle cheat index.\n");
|
||||
break;
|
||||
case MENU_LABEL_HOLD_FAST_FORWARD:
|
||||
snprintf(s, len,
|
||||
"Hold for fast-forward. Releasing button \n"
|
||||
"disables fast-forward.");
|
||||
break;
|
||||
case MENU_LABEL_SLOWMOTION:
|
||||
snprintf(s, len,
|
||||
"Hold for slowmotion.");
|
||||
break;
|
||||
case MENU_LABEL_FRAME_ADVANCE:
|
||||
snprintf(s, len,
|
||||
"Frame advance when content is paused.");
|
||||
break;
|
||||
case MENU_LABEL_MOVIE_RECORD_TOGGLE:
|
||||
snprintf(s, len,
|
||||
"Toggle between recording and not.");
|
||||
break;
|
||||
case MENU_LABEL_L_X_PLUS:
|
||||
case MENU_LABEL_L_X_MINUS:
|
||||
case MENU_LABEL_L_Y_PLUS:
|
||||
case MENU_LABEL_L_Y_MINUS:
|
||||
case MENU_LABEL_R_X_PLUS:
|
||||
case MENU_LABEL_R_X_MINUS:
|
||||
case MENU_LABEL_R_Y_PLUS:
|
||||
case MENU_LABEL_R_Y_MINUS:
|
||||
snprintf(s, len,
|
||||
"Axis for analog stick (DualShock-esque).\n"
|
||||
" \n"
|
||||
"Bound as usual, however, if a real analog \n"
|
||||
"axis is bound, it can be read as a true analog.\n"
|
||||
" \n"
|
||||
"Positive X axis is right. \n"
|
||||
"Positive Y axis is down.");
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* setting_get_description:
|
||||
* @label : identifier label of setting
|
||||
@ -2981,10 +2033,9 @@ static int setting_get_description_compare_label(uint32_t label_hash,
|
||||
int setting_get_description(const char *label, char *s,
|
||||
size_t len)
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
uint32_t label_hash = menu_hash_calculate(label);
|
||||
|
||||
if (setting_get_description_compare_label(label_hash, settings, s, len) == 0)
|
||||
if (menu_hash_get_help(label_hash, s, len) == 0)
|
||||
return 0;
|
||||
|
||||
strlcpy(s, "No information is available.", len);
|
||||
|
Loading…
x
Reference in New Issue
Block a user