diff --git a/Makefile.common b/Makefile.common
index fcf90a92d9..498be0f888 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -284,7 +284,8 @@ OBJ += intl/msg_hash_de.o \
intl/msg_hash_ru.o \
intl/msg_hash_vn.o \
intl/msg_hash_chs.o \
- intl/msg_hash_cht.o
+ intl/msg_hash_cht.o \
+ intl/msg_hash_ar.o
endif
diff --git a/gfx/font_driver.c b/gfx/font_driver.c
index fd54e019fa..c020dfa5d4 100644
--- a/gfx/font_driver.c
+++ b/gfx/font_driver.c
@@ -470,14 +470,255 @@ static bool font_init_first(
return false;
}
+#ifdef HAVE_LANGEXTRA
+
+/* ACII: 0xxxxxxx (c & 0x80) == 0x00
+ * other start: 11xxxxxx (c & 0xC0) == 0xC0
+ * other cont: 10xxxxxx (c & 0xC0) == 0x80
+ * Neutral :
+ * 0020 - 002F : 001xxxxx (c & 0xE0) == 0x20
+ * Arabic:
+ * 0600 - 07FF : 11011xxx (c & 0xF8) == 0xD8 (2 bytes)
+ * 0800 - 08FF : 11100000 101000xx c == 0xE0 && (c1 & 0xAC) == 0xA0 (3 bytes) */
+
+/* clang-format off */
+#define IS_ASCII(p) ((*(p)&0x80) == 0x00)
+#define IS_MBSTART(p) ((*(p)&0xC0) == 0xC0)
+#define IS_MBCONT(p) ((*(p)&0xC0) == 0x80)
+#define IS_DIR_NEUTRAL(p) ((*(p)&0xE0) == 0x20)
+#define IS_ARABIC0(p) ((*(p)&0xF8) == 0xD8)
+#define IS_ARABIC1(p) ((*(p) == 0xE0) && ((*((p) + 1) & 0xAC) == 0xA0))
+#define IS_ARABIC(p) (IS_ARABIC0(p) || IS_ARABIC1(p))
+#define IS_RTL(p) IS_ARABIC(p)
+
+/* 0x0620 to 0x064F */
+static const unsigned arabic_shape_map[0x50 - 0x20][0x4] = {
+ { 0 }, /* 0x0620 */
+ { 0xFE80 },
+ { 0xFE81, 0xFE82 },
+ { 0xFE83, 0xFE84 },
+ { 0xFE85, 0xFE86 },
+ { 0xFE87, 0xFE88 },
+ { 0xFE89, 0xFE8A, 0xFE8B, 0xFE8C },
+ { 0xFE8D, 0xFE8E },
+
+ { 0xFE8F, 0xFE90, 0xFE91, 0xFE92 },
+ { 0xFE93, 0xFE94 },
+ { 0xFE95, 0xFE96, 0xFE97, 0xFE98 },
+ { 0xFE99, 0xFE9A, 0xFE9B, 0xFE9C },
+ { 0xFE9D, 0xFE9E, 0xFE9F, 0xFEA0 },
+ { 0xFEA1, 0xFEA2, 0xFEA3, 0xFEA4 },
+ { 0xFEA5, 0xFEA6, 0xFEA7, 0xFEA8 },
+ { 0xFEA9, 0xFEAA },
+
+ { 0xFEAB, 0xFEAC }, /* 0x0630 */
+ { 0xFEAD, 0xFEAE },
+ { 0xFEAF, 0xFEB0 },
+ { 0xFEB1, 0xFEB2, 0xFEB3, 0xFEB4 },
+ { 0xFEB5, 0xFEB6, 0xFEB7, 0xFEB8 },
+ { 0xFEB9, 0xFEBA, 0xFEBB, 0xFEBC },
+ { 0xFEBD, 0xFEBE, 0xFEBF, 0xFEC0 },
+ { 0xFEC1, 0xFEC2, 0xFEC3, 0xFEC4 },
+ { 0xFEC5, 0xFEC6, 0xFEC7, 0xFEC8 },
+
+ { 0xFEC9, 0xFECA, 0xFECB, 0xFECC },
+ { 0xFECD, 0xFECE, 0xFECF, 0xFED0 },
+ { 0 },
+ { 0 },
+ { 0 },
+ { 0 },
+ { 0 },
+ { 0 },
+
+ { 0xFED1, 0xFED2, 0xFED3, 0xFED4 }, /* 0x0640 */
+ { 0xFED5, 0xFED6, 0xFED7, 0xFED8 },
+ { 0xFED9, 0xFEDA, 0xFEDB, 0xFEDC },
+ { 0xFEDD, 0xFEDE, 0xFEDF, 0xFEE0 },
+ { 0xFEE1, 0xFEE2, 0xFEE3, 0xFEE4 },
+ { 0xFEE5, 0xFEE6, 0xFEE7, 0xFEE8 },
+ { 0xFEE9, 0xFEEA, 0xFEEB, 0xFEEC },
+ { 0xFEED, 0xFEEE },
+
+ { 0xFEEF, 0xFEF0, 0xFBE8, 0xFBE9 },
+ { 0xFEF1, 0xFEF2, 0xFEF3, 0xFEF4 },
+};
+/* clang-format on */
+
+static INLINE unsigned font_get_replacement(const char* src, const char* start)
+{
+ if ((*src & 0xFC) == 0xD8) /* 0x0600 to 0x06FF */
+ {
+ int lookup;
+ unsigned result;
+ bool prev_connected = false;
+ bool next_connected = false;
+ unsigned char id = (src[0] << 6) | (src[1] & 0x3F);
+ const char* prev1 = src - 2;
+ const char* prev2 = src - 4;
+
+ if (id < 0x21 || id > 0x4A)
+ return 0;
+
+ if(prev2 < start)
+ {
+ prev2 = NULL;
+ if(prev1 < start)
+ prev1 = NULL;
+ }
+
+ if (prev1 && (*prev1 & 0xFC) == 0xD8)
+ {
+ unsigned char prev1_id = 0;
+
+ if (prev1)
+ prev1_id = (prev1[0] << 6) | (prev1[1] & 0x3F);
+
+ if (prev1_id == 0x44)
+ {
+ unsigned char prev2_id = 0;
+
+ if (prev2)
+ prev2_id = (prev2[0] << 6) | (prev2[1] & 0x3F);
+
+ if (prev2_id > 0x20 || prev2_id < 0x50)
+ prev_connected = !!arabic_shape_map[prev2_id - 0x20][2];
+
+ switch (id)
+ {
+ case 0x22:
+ return 0xFEF5 + prev_connected;
+ case 0x23:
+ return 0xFEF7 + prev_connected;
+ case 0x25:
+ return 0xFEF9 + prev_connected;
+ case 0x27:
+ return 0xFEFB + prev_connected;
+ }
+ }
+ if (prev1_id > 0x20 || prev1_id < 0x50)
+ prev_connected = !!arabic_shape_map[prev1_id - 0x20][2];
+ }
+
+ if ((src[2] & 0xFC) == 0xD8)
+ {
+ unsigned char next_id = (src[2] << 6) | (src[3] & 0x3F);
+
+ if (next_id > 0x20 || next_id < 0x50)
+ next_connected = true;
+ }
+
+ result = arabic_shape_map[id - 0x20][prev_connected | (next_connected << 1)];
+
+ if (result)
+ return result;
+
+ return arabic_shape_map[id - 0x20][prev_connected];
+ }
+
+ return 0;
+}
+
+static char* font_driver_reshape_msg(const char* msg)
+{
+ /* worst case transformations are 2 bytes to 4 bytes */
+ char* buffer = (char*)malloc((strlen(msg) * 2) + 1);
+ const char* src = msg;
+ char* dst = buffer;
+ bool reverse = false;
+
+ while (*src || reverse)
+ {
+ if (reverse)
+ {
+ src--;
+ while (IS_MBCONT(src))
+ src--;
+
+ if (IS_RTL(src) || IS_DIR_NEUTRAL(src))
+ {
+ unsigned replacement = font_get_replacement(src, msg);
+ if (replacement)
+ {
+ if (replacement < 0x80)
+ *dst++ = replacement;
+ else if (replacement < 0x8000)
+ {
+ *dst++ = 0xC0 | (replacement >> 6);
+ *dst++ = 0x80 | (replacement & 0x3F);
+ }
+ else if (replacement < 0x10000)
+ {
+ /* merged glyphs */
+ if ((replacement >= 0xFEF5) && (replacement <= 0xFEFC))
+ src -= 2;
+
+ *dst++ = 0xE0 | (replacement >> 12);
+ *dst++ = 0x80 | ((replacement >> 6) & 0x3F);
+ *dst++ = 0x80 | (replacement & 0x3F);
+ }
+ else
+ {
+ *dst++ = 0xF0 | (replacement >> 18);
+ *dst++ = 0x80 | ((replacement >> 12) & 0x3F);
+ *dst++ = 0x80 | ((replacement >> 6) & 0x3F);
+ *dst++ = 0x80 | (replacement & 0x3F);
+ }
+
+ continue;
+ }
+
+ *dst++ = *src++;
+ while (IS_MBCONT(src))
+ *dst++ = *src++;
+ src--;
+
+ while (IS_MBCONT(src))
+ src--;
+ }
+ else
+ {
+ reverse = false;
+ src++;
+ while (IS_MBCONT(src) || IS_RTL(src) || IS_DIR_NEUTRAL(src))
+ src++;
+ }
+ }
+ else
+ {
+ if (IS_RTL(src))
+ {
+ reverse = true;
+ while (IS_MBCONT(src) || IS_RTL(src) || IS_DIR_NEUTRAL(src))
+ src++;
+ }
+ else
+ *dst++ = *src++;
+ }
+ }
+
+ *dst = '\0';
+
+ return buffer;
+}
+#endif
+
void font_driver_render_msg(
video_frame_info_t *video_info,
void *font_data,
const char *msg, const void *params)
{
font_data_t *font = (font_data_t*)(font_data ? font_data : video_font_driver);
+
if (font && font->renderer && font->renderer->render_msg)
+ {
+#ifdef HAVE_LANGEXTRA
+ char* new_msg = font_driver_reshape_msg(msg);
+ font->renderer->render_msg(video_info, font->renderer_data, new_msg, params);
+ free(new_msg);
+#else
font->renderer->render_msg(video_info, font->renderer_data, msg, params);
+#endif
+ }
}
void font_driver_bind_block(void *font_data, void *block)
diff --git a/griffin/griffin.c b/griffin/griffin.c
index 2cfe446c80..dad50dc0a9 100644
--- a/griffin/griffin.c
+++ b/griffin/griffin.c
@@ -995,6 +995,7 @@ RETROARCH
#include "../intl/msg_hash_vn.c"
#include "../intl/msg_hash_chs.c"
#include "../intl/msg_hash_cht.c"
+#include "../intl/msg_hash_ar.c"
#endif
#include "../intl/msg_hash_us.c"
diff --git a/intl/msg_hash_ar.c b/intl/msg_hash_ar.c
new file mode 100644
index 0000000000..37675d467b
--- /dev/null
+++ b/intl/msg_hash_ar.c
@@ -0,0 +1,2089 @@
+/* RetroArch - A frontend for libretro.
+ * Copyright (C) 2011-2017 - Daniel De Matteis
+ * Copyright (C) 2016-2017 - Brad Parker
+ *
+ * RetroArch is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Found-
+ * ation, either version 3 of the License, or (at your option) any later version.
+ *
+ * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with RetroArch.
+ * If not, see .
+ */
+
+#include
+#include
+#include
+
+#include
+#include
+
+#include "../msg_hash.h"
+#include "../configuration.h"
+#include "../verbosity.h"
+
+#if defined(_MSC_VER) && !defined(_XBOX)
+/* https://support.microsoft.com/en-us/kb/980263 */
+#pragma execution_character_set("utf-8")
+#pragma warning(disable: 4566)
+#endif
+
+int menu_hash_get_help_ar_enum(enum msg_hash_enums msg, char *s, size_t len)
+{
+ uint32_t driver_hash = 0;
+ settings_t *settings = config_get_ptr();
+
+ if (msg == MENU_ENUM_LABEL_CONNECT_NETPLAY_ROOM)
+ {
+ snprintf(s, len,
+ "TODO/FIXME - Fill in message here."
+ );
+ return 0;
+ }
+ if (msg <= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_END &&
+ msg >= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN)
+ {
+ unsigned idx = msg - MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN;
+
+ switch (idx)
+ {
+ case RARCH_FAST_FORWARD_KEY:
+ snprintf(s, len,
+ "Toggles between fast-forwarding and \n"
+ "normal speed."
+ );
+ break;
+ case RARCH_FAST_FORWARD_HOLD_KEY:
+ snprintf(s, len,
+ "Hold for fast-forward. \n"
+ " \n"
+ "Releasing button disables fast-forward."
+ );
+ break;
+ case RARCH_PAUSE_TOGGLE:
+ snprintf(s, len,
+ "Toggle between paused and non-paused state.");
+ break;
+ case RARCH_FRAMEADVANCE:
+ snprintf(s, len,
+ "Frame advance when content is paused.");
+ break;
+ case RARCH_SHADER_NEXT:
+ snprintf(s, len,
+ "Applies next shader in directory.");
+ break;
+ case RARCH_SHADER_PREV:
+ snprintf(s, len,
+ "Applies previous shader in directory.");
+ break;
+ case RARCH_CHEAT_INDEX_PLUS:
+ case RARCH_CHEAT_INDEX_MINUS:
+ case RARCH_CHEAT_TOGGLE:
+ snprintf(s, len,
+ "Cheats.");
+ break;
+ case RARCH_RESET:
+ snprintf(s, len,
+ "Reset the content.");
+ break;
+ case RARCH_SCREENSHOT:
+ snprintf(s, len,
+ "Take screenshot.");
+ break;
+ case RARCH_MUTE:
+ snprintf(s, len,
+ "Mute/unmute audio.");
+ break;
+ case RARCH_OSK:
+ snprintf(s, len,
+ "Toggles onscreen keyboard.");
+ break;
+ case RARCH_NETPLAY_GAME_WATCH:
+ snprintf(s, len,
+ "Netplay toggle play/spectate mode.");
+ break;
+ case RARCH_SLOWMOTION:
+ snprintf(s, len,
+ "Hold for slowmotion.");
+ break;
+ case RARCH_ENABLE_HOTKEY:
+ snprintf(s, len,
+ "Enable other hotkeys. \n"
+ " \n"
+ "If this hotkey is bound to either\n"
+ "a keyboard, joybutton or joyaxis, \n"
+ "all other hotkeys will be enabled only \n"
+ "if this one is held at the same time. \n"
+ " \n"
+ "Alternatively, all hotkeys for keyboard \n"
+ "could be disabled by the user.");
+ break;
+ case RARCH_VOLUME_UP:
+ snprintf(s, len,
+ "Increases audio volume.");
+ break;
+ case RARCH_VOLUME_DOWN:
+ snprintf(s, len,
+ "Decreases audio volume.");
+ break;
+ case RARCH_OVERLAY_NEXT:
+ snprintf(s, len,
+ "Switches to next overlay. Wraps around.");
+ break;
+ case RARCH_DISK_EJECT_TOGGLE:
+ snprintf(s, len,
+ "Toggles eject for disks. \n"
+ " \n"
+ "Used for multiple-disk content. ");
+ break;
+ case RARCH_DISK_NEXT:
+ case RARCH_DISK_PREV:
+ snprintf(s, len,
+ "Cycles through disk images. Use after ejecting. \n"
+ " \n"
+ "Complete by toggling eject again.");
+ break;
+ case RARCH_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 RARCH_GAME_FOCUS_TOGGLE:
+ snprintf(s, len,
+ "Toggles game focus.\n"
+ " \n"
+ "When a game has focus, RetroArch will both disable \n"
+ "hotkeys and keep/warp the mouse pointer inside the window.");
+ break;
+ case RARCH_MENU_TOGGLE:
+ snprintf(s, len, "Toggles menu.");
+ break;
+ case RARCH_LOAD_STATE_KEY:
+ snprintf(s, len,
+ "Loads state.");
+ break;
+ case RARCH_FULLSCREEN_TOGGLE_KEY:
+ snprintf(s, len,
+ "Toggles fullscreen.");
+ break;
+ case RARCH_QUIT_KEY:
+ snprintf(s, len,
+ "Key to exit RetroArch cleanly. \n"
+ " \n"
+ "Killing it in any hard way (SIGKILL, etc.) will \n"
+ "terminate RetroArch without saving RAM, etc."
+#ifdef __unix__
+ "\nOn Unix-likes, SIGINT/SIGTERM allows a clean \n"
+ "deinitialization."
+#endif
+ "");
+ break;
+ case RARCH_STATE_SLOT_PLUS:
+ case RARCH_STATE_SLOT_MINUS:
+ snprintf(s, len,
+ "State slots. \n"
+ " \n"
+ "With slot set to 0, save state name is \n"
+ "*.state (or whatever defined on commandline). \n"
+ " \n"
+ "When slot is not 0, path will be , \n"
+ "where is slot number.");
+ break;
+ case RARCH_SAVE_STATE_KEY:
+ snprintf(s, len,
+ "Saves state.");
+ break;
+ case RARCH_REWIND:
+ snprintf(s, len,
+ "Hold button down to rewind. \n"
+ " \n"
+ "Rewinding must be enabled.");
+ break;
+ case RARCH_MOVIE_RECORD_TOGGLE:
+ snprintf(s, len,
+ "Toggle between recording and not.");
+ break;
+ default:
+ if (string_is_empty(s))
+ strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len);
+ break;
+ }
+
+ return 0;
+ }
+
+ switch (msg)
+ {
+ case MENU_ENUM_LABEL_ACCOUNTS_RETRO_ACHIEVEMENTS:
+ snprintf(s, len, "Login details for your \n"
+ "Retro Achievements account. \n"
+ " \n"
+ "Visit retroachievements.org and sign up \n"
+ "for a free account. \n"
+ " \n"
+ "After you are done registering, you need \n"
+ "to input the username and password into \n"
+ "RetroArch.");
+ break;
+ case MENU_ENUM_LABEL_CHEEVOS_USERNAME:
+ snprintf(s, len, "Username for your Retro Achievements account.");
+ break;
+ case MENU_ENUM_LABEL_CHEEVOS_PASSWORD:
+ snprintf(s, len, "Password for your Retro Achievements account.");
+ break;
+ case MENU_ENUM_LABEL_USER_LANGUAGE:
+ snprintf(s, len, "Localizes the menu and all onscreen messages \n"
+ "according to the language you have selected \n"
+ "here. \n"
+ " \n"
+ "Requires a restart for the changes \n"
+ "to take effect. \n"
+ " \n"
+ "Note: not all languages might be currently \n"
+ "implemented. \n"
+ " \n"
+ "In case a language is not implemented, \n"
+ "we fallback to English.");
+ break;
+ case MENU_ENUM_LABEL_VIDEO_FONT_PATH:
+ snprintf(s, len, "Change the font that is used \n"
+ "for the Onscreen Display text.");
+ break;
+ case MENU_ENUM_LABEL_GAME_SPECIFIC_OPTIONS:
+ snprintf(s, len, "Automatically load content-specific core options.");
+ break;
+ case MENU_ENUM_LABEL_AUTO_OVERRIDES_ENABLE:
+ snprintf(s, len, "Automatically load override configurations.");
+ break;
+ case MENU_ENUM_LABEL_AUTO_REMAPS_ENABLE:
+ snprintf(s, len, "Automatically load input remapping files.");
+ break;
+ case MENU_ENUM_LABEL_SORT_SAVESTATES_ENABLE:
+ snprintf(s, len, "Sort save states in folders \n"
+ "named after the libretro core used.");
+ break;
+ case MENU_ENUM_LABEL_SORT_SAVEFILES_ENABLE:
+ snprintf(s, len, "Sort save files in folders \n"
+ "named after the libretro core used.");
+ break;
+ case MENU_ENUM_LABEL_RESUME_CONTENT:
+ snprintf(s, len, "Exits from the menu and returns back \n"
+ "to the content.");
+ break;
+ case MENU_ENUM_LABEL_RESTART_CONTENT:
+ snprintf(s, len, "Restarts the content from the beginning.");
+ break;
+ case MENU_ENUM_LABEL_CLOSE_CONTENT:
+ snprintf(s, len, "Closes the content and unloads it from \n"
+ "memory.");
+ break;
+ case MENU_ENUM_LABEL_UNDO_LOAD_STATE:
+ snprintf(s, len, "If a state was loaded, content will \n"
+ "go back to the state prior to loading.");
+ break;
+ case MENU_ENUM_LABEL_UNDO_SAVE_STATE:
+ snprintf(s, len, "If a state was overwritten, it will \n"
+ "roll back to the previous save state.");
+ break;
+ case MENU_ENUM_LABEL_TAKE_SCREENSHOT:
+ snprintf(s, len, "Create a screenshot. \n"
+ " \n"
+ "The screenshot will be stored inside the \n"
+ "Screenshot Directory.");
+ break;
+ case MENU_ENUM_LABEL_ADD_TO_FAVORITES:
+ snprintf(s, len, "Add the entry to your Favorites.");
+ break;
+ case MENU_ENUM_LABEL_RUN:
+ snprintf(s, len, "Start the content.");
+ break;
+ case MENU_ENUM_LABEL_INFORMATION:
+ snprintf(s, len, "Show additional metadata information \n"
+ "about the content.");
+ break;
+ case MENU_ENUM_LABEL_FILE_BROWSER_CONFIG:
+ snprintf(s, len, "Configuration file.");
+ break;
+ case MENU_ENUM_LABEL_FILE_BROWSER_COMPRESSED_ARCHIVE:
+ snprintf(s, len, "Compressed archive file.");
+ break;
+ case MENU_ENUM_LABEL_FILE_BROWSER_RECORD_CONFIG:
+ snprintf(s, len, "Recording configuration file.");
+ break;
+ case MENU_ENUM_LABEL_FILE_BROWSER_CURSOR:
+ snprintf(s, len, "Database cursor file.");
+ break;
+ case MENU_ENUM_LABEL_FILE_CONFIG:
+ snprintf(s, len, "Configuration file.");
+ break;
+ case MENU_ENUM_LABEL_SCAN_THIS_DIRECTORY:
+ snprintf(s, len,
+ "Select this to scan the current directory \n"
+ "for content.");
+ break;
+ case MENU_ENUM_LABEL_USE_THIS_DIRECTORY:
+ snprintf(s, len,
+ "Select this to set this as the directory.");
+ break;
+ case MENU_ENUM_LABEL_CONTENT_DATABASE_DIRECTORY:
+ snprintf(s, len,
+ "Content Database Directory. \n"
+ " \n"
+ "Path to content database \n"
+ "directory.");
+ break;
+ case MENU_ENUM_LABEL_THUMBNAILS_DIRECTORY:
+ snprintf(s, len,
+ "Thumbnails Directory. \n"
+ " \n"
+ "To store thumbnail files.");
+ break;
+ case MENU_ENUM_LABEL_LIBRETRO_INFO_PATH:
+ snprintf(s, len,
+ "Core Info Directory. \n"
+ " \n"
+ "A directory for where to search \n"
+ "for libretro core information.");
+ break;
+ case MENU_ENUM_LABEL_PLAYLIST_DIRECTORY:
+ snprintf(s, len,
+ "Playlist Directory. \n"
+ " \n"
+ "Save all playlist files to this \n"
+ "directory.");
+ break;
+ case MENU_ENUM_LABEL_DUMMY_ON_CORE_SHUTDOWN:
+ snprintf(s, len,
+ "Some cores might have \n"
+ "a shutdown feature. \n"
+ " \n"
+ "If this option is left disabled, \n"
+ "selecting the shutdown procedure \n"
+ "would trigger RetroArch being shut \n"
+ "down. \n"
+ " \n"
+ "Enabling this option will load a \n"
+ "dummy core instead so that we remain \n"
+ "inside the menu and RetroArch won't \n"
+ "shutdown.");
+ break;
+ case MENU_ENUM_LABEL_CHECK_FOR_MISSING_FIRMWARE:
+ snprintf(s, len,
+ "Some cores might need \n"
+ "firmware or bios files. \n"
+ " \n"
+ "If this option is disabled, \n"
+ "it will try to load even if such \n"
+ "firmware is missing. \n");
+ break;
+ case MENU_ENUM_LABEL_PARENT_DIRECTORY:
+ snprintf(s, len,
+ "Go back to the parent directory.");
+ break;
+ case MENU_ENUM_LABEL_FILE_BROWSER_SHADER_PRESET:
+ snprintf(s, len,
+ "Shader preset file.");
+ break;
+ case MENU_ENUM_LABEL_FILE_BROWSER_SHADER:
+ snprintf(s, len,
+ "Shader file.");
+ break;
+ case MENU_ENUM_LABEL_FILE_BROWSER_REMAP:
+ snprintf(s, len,
+ "Remap controls file.");
+ break;
+ case MENU_ENUM_LABEL_FILE_BROWSER_CHEAT:
+ snprintf(s, len,
+ "Cheat file.");
+ break;
+ case MENU_ENUM_LABEL_FILE_BROWSER_OVERLAY:
+ snprintf(s, len,
+ "Overlay file.");
+ break;
+ case MENU_ENUM_LABEL_FILE_BROWSER_RDB:
+ snprintf(s, len,
+ "Database file.");
+ break;
+ case MENU_ENUM_LABEL_FILE_BROWSER_FONT:
+ snprintf(s, len,
+ "TrueType font file.");
+ break;
+ case MENU_ENUM_LABEL_FILE_BROWSER_PLAIN_FILE:
+ snprintf(s, len,
+ "Plain file.");
+ break;
+ case MENU_ENUM_LABEL_FILE_BROWSER_MOVIE_OPEN:
+ snprintf(s, len,
+ "Video. \n"
+ " \n"
+ "Select it to open this file with the \n"
+ "video player.");
+ break;
+ case MENU_ENUM_LABEL_FILE_BROWSER_MUSIC_OPEN:
+ snprintf(s, len,
+ "Music. \n"
+ " \n"
+ "Select it to open this file with the \n"
+ "music player.");
+ break;
+ case MENU_ENUM_LABEL_FILE_BROWSER_IMAGE:
+ snprintf(s, len,
+ "Image file.");
+ break;
+ case MENU_ENUM_LABEL_FILE_BROWSER_IMAGE_OPEN_WITH_VIEWER:
+ snprintf(s, len,
+ "Image. \n"
+ " \n"
+ "Select it to open this file with the \n"
+ "image viewer.");
+ break;
+ case MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION:
+ snprintf(s, len,
+ "Libretro core. \n"
+ " \n"
+ "Selecting this will associate this core \n"
+ "to the game.");
+ break;
+ case MENU_ENUM_LABEL_FILE_BROWSER_CORE:
+ snprintf(s, len,
+ "Libretro core. \n"
+ " \n"
+ "Select this file to have RetroArch load this core.");
+ break;
+ case MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY:
+ snprintf(s, len,
+ "Directory. \n"
+ " \n"
+ "Select it to open this directory.");
+ break;
+ case MENU_ENUM_LABEL_CACHE_DIRECTORY:
+ snprintf(s, len,
+ "Cache Directory. \n"
+ " \n"
+ "Content decompressed by RetroArch will be \n"
+ "temporarily extracted to this directory.");
+ break;
+ case MENU_ENUM_LABEL_HISTORY_LIST_ENABLE:
+ snprintf(s, len,
+ "If enabled, every content loaded \n"
+ "in RetroArch will be automatically \n"
+ "added to the recent history list.");
+ break;
+ case MENU_ENUM_LABEL_RGUI_BROWSER_DIRECTORY:
+ snprintf(s, len,
+ "File Browser Directory. \n"
+ " \n"
+ "Sets start directory for menu file browser.");
+ break;
+ case MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR:
+ snprintf(s, len,
+ "Influence how input polling is done inside \n"
+ "RetroArch. \n"
+ " \n"
+ "Early - Input polling is performed before \n"
+ "the frame is processed. \n"
+ "Normal - Input polling is performed when \n"
+ "polling is requested. \n"
+ "Late - Input polling is performed on \n"
+ "first input state request per frame.\n"
+ " \n"
+ "Setting it to 'Early' or 'Late' can result \n"
+ "in less latency, \n"
+ "depending on your configuration.\n\n"
+ "Will be ignored when using netplay."
+ );
+ break;
+ case MENU_ENUM_LABEL_INPUT_DESCRIPTOR_HIDE_UNBOUND:
+ snprintf(s, len,
+ "Hide input descriptors that were not set \n"
+ "by the core.");
+ break;
+ case MENU_ENUM_LABEL_VIDEO_REFRESH_RATE:
+ snprintf(s, len,
+ "Video refresh rate of your monitor. \n"
+ "Used to calculate a suitable audio input rate.");
+ break;
+ case MENU_ENUM_LABEL_VIDEO_FORCE_SRGB_DISABLE:
+ snprintf(s, len,
+ "Forcibly disable sRGB FBO support. Some Intel \n"
+ "OpenGL drivers on Windows have video problems \n"
+ "with sRGB FBO support enabled.");
+ break;
+ case MENU_ENUM_LABEL_AUDIO_ENABLE:
+ snprintf(s, len,
+ "Enable audio output.");
+ break;
+ case MENU_ENUM_LABEL_AUDIO_SYNC:
+ snprintf(s, len,
+ "Synchronize audio (recommended).");
+ break;
+ case MENU_ENUM_LABEL_AUDIO_LATENCY:
+ snprintf(s, len,
+ "Desired audio latency in milliseconds. \n"
+ "Might not be honored if the audio driver \n"
+ "can't provide given latency.");
+ break;
+ case MENU_ENUM_LABEL_VIDEO_ALLOW_ROTATE:
+ snprintf(s, len,
+ "Allow cores to set rotation. If false, \n"
+ "rotation requests are honored, but ignored.\n\n"
+ "Used for setups where one manually rotates \n"
+ "the monitor.");
+ break;
+ case MENU_ENUM_LABEL_INPUT_DESCRIPTOR_LABEL_SHOW:
+ snprintf(s, len,
+ "Show the input descriptors set by the core \n"
+ "instead of the default ones.");
+ break;
+ case MENU_ENUM_LABEL_CONTENT_HISTORY_SIZE:
+ snprintf(s, len,
+ "Number of entries that will be kept in \n"
+ "content history playlist.");
+ break;
+ case MENU_ENUM_LABEL_VIDEO_WINDOWED_FULLSCREEN:
+ snprintf(s, len,
+ "To use windowed mode or not when going \n"
+ "fullscreen.");
+ break;
+ case MENU_ENUM_LABEL_VIDEO_FONT_SIZE:
+ snprintf(s, len,
+ "Font size for on-screen messages.");
+ break;
+ case MENU_ENUM_LABEL_SAVESTATE_AUTO_INDEX:
+ snprintf(s, len,
+ "Automatically increment slot index on each save, \n"
+ "generating multiple savestate files. \n"
+ "When the content is loaded, state slot will be \n"
+ "set to the highest existing value (last savestate).");
+ break;
+ case MENU_ENUM_LABEL_FPS_SHOW:
+ snprintf(s, len,
+ "Enables displaying the current frames \n"
+ "per second.");
+ break;
+ case MENU_ENUM_LABEL_VIDEO_FONT_ENABLE:
+ snprintf(s, len,
+ "Show and/or hide onscreen messages.");
+ break;
+ case MENU_ENUM_LABEL_VIDEO_MESSAGE_POS_X:
+ case MENU_ENUM_LABEL_VIDEO_MESSAGE_POS_Y:
+ snprintf(s, len,
+ "Offset for where messages will be placed \n"
+ "onscreen. Values are in range [0.0, 1.0].");
+ break;
+ case MENU_ENUM_LABEL_INPUT_OVERLAY_ENABLE:
+ snprintf(s, len,
+ "Enable or disable the current overlay.");
+ break;
+ case MENU_ENUM_LABEL_INPUT_OVERLAY_HIDE_IN_MENU:
+ snprintf(s, len,
+ "Hide the current overlay from appearing \n"
+ "inside the menu.");
+ break;
+ case MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS:
+ snprintf(s, len,
+ "Show keyboard/controller button presses on \n"
+ "the onscreen overlay.");
+ break;
+ case MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT:
+ snprintf(s, len,
+ "Select the port to listen for controller input \n"
+ "to display on the onscreen overlay.");
+ break;
+ case MENU_ENUM_LABEL_OVERLAY_PRESET:
+ snprintf(s, len,
+ "Path to input overlay.");
+ break;
+ case MENU_ENUM_LABEL_OVERLAY_OPACITY:
+ snprintf(s, len,
+ "Overlay opacity.");
+ break;
+ case MENU_ENUM_LABEL_INPUT_BIND_TIMEOUT:
+ snprintf(s, len,
+ "Input bind timer timeout (in seconds). \n"
+ "Amount of seconds to wait until proceeding \n"
+ "to the next bind.");
+ break;
+ case MENU_ENUM_LABEL_OVERLAY_SCALE:
+ snprintf(s, len,
+ "Overlay scale.");
+ break;
+ case MENU_ENUM_LABEL_AUDIO_OUTPUT_RATE:
+ snprintf(s, len,
+ "Audio output samplerate.");
+ break;
+ case MENU_ENUM_LABEL_VIDEO_SHARED_CONTEXT:
+ snprintf(s, len,
+ "Set to true if hardware-rendered cores \n"
+ "should get their private context. \n"
+ "Avoids having to assume hardware state changes \n"
+ "inbetween frames."
+ );
+ break;
+ case MENU_ENUM_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_ENUM_LABEL_VALUE_MENU_ENUM_CONTROLS_PROLOG:
+ snprintf(s, len,
+ "You can use the following controls below \n"
+ "on either your gamepad or keyboard in order\n"
+ "to control the menu: \n"
+ " \n"
+ );
+ break;
+ case MENU_ENUM_LABEL_WELCOME_TO_RETROARCH:
+ snprintf(s, len,
+ "Welcome to RetroArch\n"
+ );
+ break;
+ case MENU_ENUM_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING_DESC: {
+ /* Work around C89 limitations */
+ char u[501];
+ const char *t =
+ "RetroArch relies on an unique form of\n"
+ "audio/video synchronization where it needs to be\n"
+ "calibrated against the refresh rate of your\n"
+ "display for best performance results.\n"
+ " \n"
+ "If you experience any audio crackling or video\n"
+ "tearing, usually it means that you need to\n"
+ "calibrate the settings. Some choices below:\n"
+ " \n";
+ snprintf(u, sizeof(u), /* can't inline this due to the printf arguments */
+ "a) Go to '%s' -> '%s', and enable\n"
+ "'Threaded Video'. Refresh rate will not matter\n"
+ "in this mode, framerate will be higher,\n"
+ "but video might be less smooth.\n"
+ "b) Go to '%s' -> '%s', and look at\n"
+ "'%s'. Let it run for\n"
+ "2048 frames, then press 'OK'.",
+ msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SETTINGS),
+ msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS),
+ msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SETTINGS),
+ msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS),
+ msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO));
+ strlcpy(s, t, len);
+ strlcat(s, u, len);
+ }
+ break;
+ case MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC:
+ snprintf(s, len,
+ "To scan for content, go to '%s' and\n"
+ "select either '%s' or %s'.\n"
+ " \n"
+ "Files will be compared to database entries.\n"
+ "If there is a match, it will add an entry\n"
+ "to a collection.\n"
+ " \n"
+ "You can then easily access this content by\n"
+ "going to '%s' ->\n"
+ "'%s'\n"
+ "instead of having to go through the\n"
+ "filebrowser everytime.\n"
+ " \n"
+ "NOTE: Content for some cores might still not be\n"
+ "scannable.",
+ msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ADD_CONTENT_LIST),
+ msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SCAN_DIRECTORY),
+ msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SCAN_FILE),
+ msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST),
+ msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CONTENT_COLLECTION_LIST)
+ );
+ break;
+ case MENU_ENUM_LABEL_VALUE_EXTRACTING_PLEASE_WAIT:
+ snprintf(s, len,
+ "Welcome to RetroArch\n"
+ "\n"
+ "Extracting assets, please wait.\n"
+ "This might take a while...\n"
+ );
+ break;
+ case MENU_ENUM_LABEL_INPUT_DRIVER:
+ if (settings)
+ driver_hash = msg_hash_calculate(settings->arrays.input_driver);
+
+ switch (driver_hash) {
+ case MENU_LABEL_INPUT_DRIVER_UDEV:
+ snprintf(s, len,
+ "udev Input driver. \n"
+ " \n"
+ "It uses the recent evdev joypad API \n"
+ "for joystick support. It supports \n"
+ "hotplugging and force feedback. \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_ENUM_LABEL_LOAD_CONTENT_LIST:
+ snprintf(s, len,
+ "Load Content. \n"
+ "Browse for content. \n"
+ " \n"
+ "To load content, you need a \n"
+ "'Core' to use, and a content file. \n"
+ " \n"
+ "To control where the menu starts \n"
+ "to browse for content, set \n"
+ "'File Browser Directory'. \n"
+ "If not set, it will start in root. \n"
+ " \n"
+ "The browser will filter out \n"
+ "extensions for the last core set \n"
+ "in 'Load Core', and use that core \n"
+ "when content is loaded."
+ );
+ break;
+ case MENU_ENUM_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_ENUM_LABEL_VIDEO_DRIVER:
+ snprintf(s, len,
+ "Current Video driver.");
+
+ if (string_is_equal(settings->arrays.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).");
+ }
+ else if (string_is_equal(settings->arrays.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.");
+ }
+ else if (string_is_equal(settings->arrays.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.");
+ }
+ else if (string_is_equal(settings->arrays.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).");
+ }
+ else if (string_is_equal(settings->arrays.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.");
+ }
+ else if (string_is_equal(settings->arrays.video_driver, "drm"))
+ {
+ snprintf(s, len,
+ "Plain DRM Video Driver. \n"
+ " \n"
+ "This is a low-level video driver using. \n"
+ "libdrm for hardware scaling using \n"
+ "GPU overlays.");
+ }
+ else if (string_is_equal(settings->arrays.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;
+ case MENU_ENUM_LABEL_AUDIO_DSP_PLUGIN:
+ snprintf(s, len,
+ "Audio DSP plugin.\n"
+ " Processes audio before it's sent to \n"
+ "the driver."
+ );
+ break;
+ case MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER:
+ if (settings)
+ driver_hash = msg_hash_calculate(settings->arrays.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;
+ default:
+ if (string_is_empty(s))
+ strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len);
+ break;
+ }
+ break;
+ case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET:
+ snprintf(s, len,
+ "Load Shader Preset. \n"
+ " \n"
+ " Load a shader 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_ENUM_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_ENUM_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_ENUM_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_ENUM_LABEL_VIDEO_SHADER_PRESET_PARAMETERS:
+ snprintf(s, len,
+ "Shader Preset Parameters. \n"
+ " \n"
+ "Modifies shader preset currently in menu."
+ );
+ break;
+ case MENU_ENUM_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_ENUM_LABEL_CONFIGURATION_SETTINGS:
+ snprintf(s, len,
+ "Determines how configuration files \n"
+ "are loaded and prioritized.");
+ break;
+ case MENU_ENUM_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_ENUM_LABEL_CONFIRM_ON_EXIT:
+ snprintf(s, len, "Are you sure you want to quit?");
+ break;
+ case MENU_ENUM_LABEL_SHOW_HIDDEN_FILES:
+ snprintf(s, len, "Show hidden files\n"
+ "and folders.");
+ break;
+ case MENU_ENUM_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_ENUM_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_ENUM_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_ENUM_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_ENUM_LABEL_STATE_SLOT_INCREASE:
+ case MENU_ENUM_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_ENUM_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_ENUM_LABEL_SHADER_WATCH_FOR_CHANGES:
+ snprintf(s, len,
+ "Watch shader files for new changes. \n"
+ " \n"
+ "After saving changes to a shader on disk, \n"
+ "it will automatically be recompiled \n"
+ "and applied to the running content."
+ );
+ break;
+ case MENU_ENUM_LABEL_MENU_TOGGLE:
+ snprintf(s, len,
+ "Toggles menu.");
+ break;
+ case MENU_ENUM_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_ENUM_LABEL_GAME_FOCUS_TOGGLE:
+ snprintf(s, len,
+ "Toggles game focus.\n"
+ " \n"
+ "When a game has focus, RetroArch will both disable \n"
+ "hotkeys and keep/warp the mouse pointer inside the window.");
+ break;
+ case MENU_ENUM_LABEL_DISK_NEXT:
+ snprintf(s, len,
+ "Cycles through disk images. Use after \n"
+ "ejecting. \n"
+ " \n"
+ " Complete by toggling eject again.");
+ break;
+ case MENU_ENUM_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_ENUM_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_ENUM_LABEL_DISK_EJECT_TOGGLE:
+ snprintf(s, len,
+ "Toggles eject for disks.\n"
+ " \n"
+ "Used for multiple-disk content.");
+ break;
+ case MENU_ENUM_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_ENUM_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_ENUM_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_ENUM_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_ENUM_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_ENUM_LABEL_VIDEO_SCALE:
+ snprintf(s, len,
+ "Fullscreen resolution.\n"
+ " \n"
+ "Resolution of 0 uses the \n"
+ "resolution of the environment.\n");
+ break;
+ case MENU_ENUM_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_ENUM_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_ENUM_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_ENUM_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_ENUM_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_ENUM_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_ENUM_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_ENUM_LABEL_OVERLAY_NEXT:
+ snprintf(s, len,
+ "Toggles to next overlay.\n"
+ " \n"
+ "Wraps around.");
+ break;
+ case MENU_ENUM_LABEL_LOG_VERBOSITY:
+ snprintf(s, len,
+ "Enable or disable verbosity level \n"
+ "of frontend.");
+ break;
+ case MENU_ENUM_LABEL_VOLUME_UP:
+ snprintf(s, len,
+ "Increases audio volume.");
+ break;
+ case MENU_ENUM_LABEL_VOLUME_DOWN:
+ snprintf(s, len,
+ "Decreases audio volume.");
+ break;
+ case MENU_ENUM_LABEL_VIDEO_DISABLE_COMPOSITION:
+ snprintf(s, len,
+ "Forcibly disable composition.\n"
+ "Only valid on Windows Vista/7 for now.");
+ break;
+ case MENU_ENUM_LABEL_PERFCNT_ENABLE:
+ snprintf(s, len,
+ "Enable or disable frontend \n"
+ "performance counters.");
+ break;
+ case MENU_ENUM_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_ENUM_LABEL_SAVESTATE_AUTO_SAVE:
+ case MENU_ENUM_LABEL_SAVESTATE_AUTO_LOAD:
+ 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_ENUM_LABEL_VIDEO_THREADED:
+ snprintf(s, len,
+ "Use threaded video driver.\n"
+ " \n"
+ "Using this might improve performance at the \n"
+ "possible cost of latency and more video \n"
+ "stuttering.");
+ break;
+ case MENU_ENUM_LABEL_VIDEO_VSYNC:
+ snprintf(s, len,
+ "Video V-Sync.\n");
+ break;
+ case MENU_ENUM_LABEL_VIDEO_HARD_SYNC:
+ snprintf(s, len,
+ "Attempts to hard-synchronize \n"
+ "CPU and GPU.\n"
+ " \n"
+ "Can reduce latency at the cost of \n"
+ "performance.");
+ break;
+ case MENU_ENUM_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_ENUM_LABEL_SCREENSHOT:
+ snprintf(s, len,
+ "Take screenshot.");
+ break;
+ case MENU_ENUM_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 the cost of\n"
+ "higher risk of stuttering.\n"
+ " \n"
+ "Maximum is 15.");
+ break;
+ case MENU_ENUM_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_ENUM_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_ENUM_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_ENUM_LABEL_VIDEO_FULLSCREEN:
+ snprintf(s, len, "Toggles fullscreen.");
+ break;
+ case MENU_ENUM_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_ENUM_LABEL_PAUSE_NONACTIVE:
+ snprintf(s, len,
+ "Pause gameplay when window focus \n"
+ "is lost.");
+ break;
+ case MENU_ENUM_LABEL_VIDEO_GPU_SCREENSHOT:
+ snprintf(s, len,
+ "Screenshots output of GPU shaded \n"
+ "material if available.");
+ break;
+ case MENU_ENUM_LABEL_SCREENSHOT_DIRECTORY:
+ snprintf(s, len,
+ "Screenshot Directory. \n"
+ " \n"
+ "Directory to dump screenshots to."
+ );
+ break;
+ case MENU_ENUM_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_ENUM_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_ENUM_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_ENUM_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_ENUM_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY:
+ snprintf(s, len,
+ "Dynamic Wallpapers Directory. \n"
+ " \n"
+ " The place to store backgrounds that will \n"
+ "be loaded dynamically by the menu depending \n"
+ "on context.");
+ break;
+ case MENU_ENUM_LABEL_SLOWMOTION_RATIO:
+ snprintf(s, len,
+ "Slowmotion ratio."
+ " \n"
+ "When slowmotion, content will slow\n"
+ "down by factor.");
+ break;
+ case MENU_ENUM_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_ENUM_LABEL_INPUT_TURBO_PERIOD:
+ snprintf(s, len,
+ "Turbo period.\n"
+ " \n"
+ "Describes the period of which turbo-enabled\n"
+ "buttons toggle.\n"
+ " \n"
+ "Numbers are described in frames."
+ );
+ break;
+ case MENU_ENUM_LABEL_INPUT_DUTY_CYCLE:
+ snprintf(s, len,
+ "Duty cycle.\n"
+ " \n"
+ "Describes how long the period of a turbo-enabled\n"
+ "should be.\n"
+ " \n"
+ "Numbers are described in frames."
+ );
+ break;
+ case MENU_ENUM_LABEL_INPUT_TOUCH_ENABLE:
+ snprintf(s, len, "Enable touch support.");
+ break;
+ case MENU_ENUM_LABEL_INPUT_PREFER_FRONT_TOUCH:
+ snprintf(s, len, "Use front instead of back touch.");
+ break;
+ case MENU_ENUM_LABEL_MOUSE_ENABLE:
+ snprintf(s, len, "Enable mouse input inside the menu.");
+ break;
+ case MENU_ENUM_LABEL_POINTER_ENABLE:
+ snprintf(s, len, "Enable touch input inside the menu.");
+ break;
+ case MENU_ENUM_LABEL_MENU_WALLPAPER:
+ snprintf(s, len, "Path to an image to set as the background.");
+ break;
+ case MENU_ENUM_LABEL_NAVIGATION_WRAPAROUND:
+ snprintf(s, len,
+ "Wrap-around to beginning and/or end \n"
+ "if boundary of list is reached \n"
+ "horizontally and/or vertically.");
+ break;
+ case MENU_ENUM_LABEL_PAUSE_LIBRETRO:
+ snprintf(s, len,
+ "If disabled, the game will keep \n"
+ "running in the background when we are in the \n"
+ "menu.");
+ break;
+ case MENU_ENUM_LABEL_SUSPEND_SCREENSAVER_ENABLE:
+ snprintf(s, len,
+ "Suspends the screensaver. Is a hint that \n"
+ "does not necessarily have to be \n"
+ "honored by the video driver.");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_MODE:
+ snprintf(s, len,
+ "Netplay client mode for the current user. \n"
+ "Will be 'Server' mode if disabled.");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_DELAY_FRAMES:
+ snprintf(s, len,
+ "The amount of delay frames to use for netplay. \n"
+ " \n"
+ "Increasing this value will increase \n"
+ "performance, but introduce more latency.");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_PUBLIC_ANNOUNCE:
+ snprintf(s, len,
+ "Whether to announce netplay games publicly. \n"
+ " \n"
+ "If set to false, clients must manually connect \n"
+ "rather than using the public lobby.");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_START_AS_SPECTATOR:
+ snprintf(s, len,
+ "Whether to start netplay in spectator mode. \n"
+ " \n"
+ "If set to true, netplay will be in spectator mode \n"
+ "on start. It's always possible to change mode \n"
+ "later.");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_ALLOW_SLAVES:
+ snprintf(s, len,
+ "Whether to allow connections in slave mode. \n"
+ " \n"
+ "Slave-mode clients require very little processing \n"
+ "power on either side, but will suffer \n"
+ "significantly from network latency.");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_REQUIRE_SLAVES:
+ snprintf(s, len,
+ "Whether to disallow connections not in slave mode. \n"
+ " \n"
+ "Not recommended except for very fast networks \n"
+ "with very weak machines. \n");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_STATELESS_MODE:
+ snprintf(s, len,
+ "Whether to run netplay in a mode not requiring\n"
+ "save states. \n"
+ " \n"
+ "If set to true, a very fast network is required,\n"
+ "but no rewinding is performed, so there will be\n"
+ "no netplay jitter.\n");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_CHECK_FRAMES:
+ snprintf(s, len,
+ "The frequency in frames with which netplay \n"
+ "will verify that the host and client are in \n"
+ "sync. \n"
+ " \n"
+ "With most cores, this value will have no \n"
+ "visible effect and can be ignored. With \n"
+ "nondeterminstic cores, this value determines \n"
+ "how often the netplay peers will be brought \n"
+ "into sync. With buggy cores, setting this \n"
+ "to any non-zero value will cause severe \n"
+ "performance issues. Set to zero to perform \n"
+ "no checks. This value is only used on the \n"
+ "netplay host. \n");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_INPUT_LATENCY_FRAMES_MIN:
+ snprintf(s, len,
+ "The number of frames of input latency for \n"
+ "netplay to use to hide network latency. \n"
+ " \n"
+ "When in netplay, this option delays local \n"
+ "input, so that the frame being run is \n"
+ "closer to the frames being received from \n"
+ "the network. This reduces jitter and makes \n"
+ "netplay less CPU-intensive, but at the \n"
+ "price of noticeable input lag. \n");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE:
+ snprintf(s, len,
+ "The range of frames of input latency that \n"
+ "may be used by netplay to hide network \n"
+ "latency. \n"
+ "\n"
+ "If set, netplay will adjust the number of \n"
+ "frames of input latency dynamically to \n"
+ "balance CPU time, input latency and \n"
+ "network latency. This reduces jitter and \n"
+ "makes netplay less CPU-intensive, but at \n"
+ "the price of unpredictable input lag. \n");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_NAT_TRAVERSAL:
+ snprintf(s, len,
+ "When hosting, attempt to listen for\n"
+ "connections from the public internet, using\n"
+ "UPnP or similar technologies to escape LANs. \n");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_USE_MITM_SERVER:
+ snprintf(s, len,
+ "When hosting a netplay session, relay connection through a \n"
+ "man-in-the-middle server \n"
+ "to get around firewalls or NAT/UPnP issues. \n");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_MITM_SERVER:
+ snprintf(s, len,
+ "Specifies the man-in-the-middle server \n"
+ "to use for netplay. A server that is \n"
+ "located closer to you may have less latency. \n");
+ break;
+ case MENU_ENUM_LABEL_VIDEO_MAX_SWAPCHAIN_IMAGES:
+ snprintf(s, len,
+ "Maximum amount of swapchain images. This \n"
+ "can tell the video driver to use a specific \n"
+ "video buffering mode. \n"
+ " \n"
+ "Single buffering - 1\n"
+ "Double buffering - 2\n"
+ "Triple buffering - 3\n"
+ " \n"
+ "Setting the right buffering mode can have \n"
+ "a big impact on latency.");
+ break;
+ case MENU_ENUM_LABEL_VIDEO_SMOOTH:
+ snprintf(s, len,
+ "Smoothens picture with bilinear filtering. \n"
+ "Should be disabled if using shaders.");
+ break;
+ case MENU_ENUM_LABEL_TIMEDATE_ENABLE:
+ snprintf(s, len,
+ "Shows current date and/or time inside menu.");
+ break;
+ case MENU_ENUM_LABEL_BATTERY_LEVEL_ENABLE:
+ snprintf(s, len,
+ "Shows current battery level inside menu.");
+ break;
+ case MENU_ENUM_LABEL_CORE_ENABLE:
+ snprintf(s, len,
+ "Shows current core inside menu.");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_ENABLE_HOST:
+ snprintf(s, len,
+ "Enables Netplay in host (server) mode.");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_ENABLE_CLIENT:
+ snprintf(s, len,
+ "Enables Netplay in client mode.");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_DISCONNECT:
+ snprintf(s, len,
+ "Disconnects an active Netplay connection.");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_LAN_SCAN_SETTINGS:
+ snprintf(s, len,
+ "Search for and connect to netplay hosts on the local network.");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_SETTINGS:
+ snprintf(s, len,
+ "Setting related to Netplay.");
+ break;
+ case MENU_ENUM_LABEL_DYNAMIC_WALLPAPER:
+ snprintf(s, len,
+ "Dynamically load a new background \n"
+ "depending on context.");
+ break;
+ case MENU_ENUM_LABEL_CORE_UPDATER_BUILDBOT_URL:
+ snprintf(s, len,
+ "URL to core updater directory on the \n"
+ "Libretro buildbot.");
+ break;
+ case MENU_ENUM_LABEL_BUILDBOT_ASSETS_URL:
+ snprintf(s, len,
+ "URL to assets updater directory on the \n"
+ "Libretro buildbot.");
+ break;
+ case MENU_ENUM_LABEL_INPUT_REMAP_BINDS_ENABLE:
+ snprintf(s, len,
+ "if enabled, overrides the input binds \n"
+ "with the remapped binds set for the \n"
+ "current core.");
+ break;
+ case MENU_ENUM_LABEL_OVERLAY_DIRECTORY:
+ snprintf(s, len,
+ "Overlay Directory. \n"
+ " \n"
+ "Defines a directory where overlays are \n"
+ "kept for easy access.");
+ break;
+ case MENU_ENUM_LABEL_INPUT_MAX_USERS:
+ snprintf(s, len,
+ "Maximum amount of users supported by \n"
+ "RetroArch.");
+ break;
+ case MENU_ENUM_LABEL_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE:
+ snprintf(s, len,
+ "After downloading, automatically extract \n"
+ "archives that the downloads are contained \n"
+ "inside.");
+ break;
+ case MENU_ENUM_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE:
+ snprintf(s, len,
+ "Filter files being shown by \n"
+ "supported extensions.");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_NICKNAME:
+ snprintf(s, len,
+ "The username of the person running RetroArch. \n"
+ "This will be used for playing online games.");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_TCP_UDP_PORT:
+ snprintf(s, len,
+ "The port of the host IP address. \n"
+ "Can be either a TCP or UDP port.");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE:
+ snprintf(s, len,
+ "Enable or disable spectator mode for \n"
+ "the user during netplay.");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_IP_ADDRESS:
+ snprintf(s, len,
+ "The address of the host to connect to.");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_PASSWORD:
+ snprintf(s, len,
+ "The password for connecting to the netplay \n"
+ "host. Used only in host mode.");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_SPECTATE_PASSWORD:
+ snprintf(s, len,
+ "The password for connecting to the netplay \n"
+ "host with only spectator privileges. Used \n"
+ "only in host mode.");
+ break;
+ case MENU_ENUM_LABEL_STDIN_CMD_ENABLE:
+ snprintf(s, len,
+ "Enable stdin command interface.");
+ break;
+ case MENU_ENUM_LABEL_UI_COMPANION_START_ON_BOOT:
+ snprintf(s, len,
+ "Start User Interface companion driver \n"
+ "on boot (if available).");
+ break;
+ case MENU_ENUM_LABEL_MENU_DRIVER:
+ snprintf(s, len, "Menu driver to use.");
+ break;
+ case MENU_ENUM_LABEL_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO:
+ snprintf(s, len,
+ "Gamepad button combination to toggle menu. \n"
+ " \n"
+ "0 - None \n"
+ "1 - Press L + R + Y + D-Pad Down \n"
+ "simultaneously. \n"
+ "2 - Press L3 + R3 simultaneously. \n"
+ "3 - Press Start + Select simultaneously.");
+ break;
+ case MENU_ENUM_LABEL_INPUT_ALL_USERS_CONTROL_MENU:
+ snprintf(s, len, "Allows any user to control the menu. \n"
+ " \n"
+ "When disabled, only user 1 can control the menu.");
+ break;
+ case MENU_ENUM_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_ENUM_LABEL_CAMERA_ALLOW:
+ snprintf(s, len,
+ "Allow or disallow camera access by \n"
+ "cores.");
+ break;
+ case MENU_ENUM_LABEL_LOCATION_ALLOW:
+ snprintf(s, len,
+ "Allow or disallow location services \n"
+ "access by cores.");
+ break;
+ case MENU_ENUM_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_ENUM_LABEL_OSK_ENABLE:
+ snprintf(s, len,
+ "Enable/disable on-screen keyboard.");
+ break;
+ case MENU_ENUM_LABEL_AUDIO_MUTE:
+ snprintf(s, len,
+ "Mute/unmute audio.");
+ break;
+ case MENU_ENUM_LABEL_REWIND:
+ snprintf(s, len,
+ "Hold button down to rewind.\n"
+ " \n"
+ "Rewind must be enabled.");
+ break;
+ case MENU_ENUM_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_ENUM_LABEL_LOAD_STATE:
+ snprintf(s, len,
+ "Loads state.");
+ break;
+ case MENU_ENUM_LABEL_SAVE_STATE:
+ snprintf(s, len,
+ "Saves state.");
+ break;
+ case MENU_ENUM_LABEL_NETPLAY_GAME_WATCH:
+ snprintf(s, len,
+ "Netplay toggle play/spectate mode.");
+ break;
+ case MENU_ENUM_LABEL_CHEAT_INDEX_PLUS:
+ snprintf(s, len,
+ "Increment cheat index.\n");
+ break;
+ case MENU_ENUM_LABEL_CHEAT_INDEX_MINUS:
+ snprintf(s, len,
+ "Decrement cheat index.\n");
+ break;
+ case MENU_ENUM_LABEL_SHADER_PREV:
+ snprintf(s, len,
+ "Applies previous shader in directory.");
+ break;
+ case MENU_ENUM_LABEL_SHADER_NEXT:
+ snprintf(s, len,
+ "Applies next shader in directory.");
+ break;
+ case MENU_ENUM_LABEL_RESET:
+ snprintf(s, len,
+ "Reset the content.\n");
+ break;
+ case MENU_ENUM_LABEL_PAUSE_TOGGLE:
+ snprintf(s, len,
+ "Toggle between paused and non-paused state.");
+ break;
+ case MENU_ENUM_LABEL_CHEAT_TOGGLE:
+ snprintf(s, len,
+ "Toggle cheat index.\n");
+ break;
+ case MENU_ENUM_LABEL_HOLD_FAST_FORWARD:
+ snprintf(s, len,
+ "Hold for fast-forward. Releasing button \n"
+ "disables fast-forward.");
+ break;
+ case MENU_ENUM_LABEL_SLOWMOTION:
+ snprintf(s, len,
+ "Hold for slowmotion.");
+ break;
+ case MENU_ENUM_LABEL_FRAME_ADVANCE:
+ snprintf(s, len,
+ "Frame advance when content is paused.");
+ break;
+ case MENU_ENUM_LABEL_MOVIE_RECORD_TOGGLE:
+ snprintf(s, len,
+ "Toggle between recording and not.");
+ break;
+ case MENU_ENUM_LABEL_L_X_PLUS:
+ case MENU_ENUM_LABEL_L_X_MINUS:
+ case MENU_ENUM_LABEL_L_Y_PLUS:
+ case MENU_ENUM_LABEL_L_Y_MINUS:
+ case MENU_ENUM_LABEL_R_X_PLUS:
+ case MENU_ENUM_LABEL_R_X_MINUS:
+ case MENU_ENUM_LABEL_R_Y_PLUS:
+ case MENU_ENUM_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;
+ case MENU_ENUM_LABEL_VALUE_WHAT_IS_A_CORE_DESC:
+ snprintf(s, len,
+ "RetroArch by itself does nothing. \n"
+ " \n"
+ "To make it do things, you need to \n"
+ "load a program into it. \n"
+ "\n"
+ "We call such a program 'Libretro core', \n"
+ "or 'core' in short. \n"
+ " \n"
+ "To load a core, select one from\n"
+ "'Load Core'.\n"
+ " \n"
+#ifdef HAVE_NETWORKING
+ "You can obtain cores in several ways: \n"
+ "* Download them by going to\n"
+ "'%s' -> '%s'.\n"
+ "* Manually move them over to\n"
+ "'%s'.",
+ msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ONLINE_UPDATER),
+ msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_UPDATER_LIST),
+ msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LIBRETRO_DIR_PATH)
+#else
+ "You can obtain cores by\n"
+ "manually moving them over to\n"
+ "'%s'.",
+ msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LIBRETRO_DIR_PATH)
+#endif
+ );
+ break;
+ case MENU_ENUM_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD_DESC:
+ snprintf(s, len,
+ "You can change the virtual gamepad overlay\n"
+ "by going to '%s' -> '%s'."
+ " \n"
+ "From there you can change the overlay,\n"
+ "change the size and opacity of the buttons, etc.\n"
+ " \n"
+ "NOTE: By default, virtual gamepad overlays are\n"
+ "hidden when in the menu.\n"
+ "If you'd like to change this behavior,\n"
+ "you can set '%s' to false.",
+ msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SETTINGS),
+ msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OVERLAY_SETTINGS),
+ msg_hash_to_str(MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU)
+ );
+ break;
+ case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_ENABLE:
+ snprintf(s, len,
+ "Enables a background color for the OSD.");
+ break;
+ case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_RED:
+ snprintf(s, len,
+ "Sets the red value of the OSD background color. Valid values are between 0 and 255.");
+ break;
+ case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_GREEN:
+ snprintf(s, len,
+ "Sets the green value of the OSD background color. Valid values are between 0 and 255.");
+ break;
+ case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_BLUE:
+ snprintf(s, len,
+ "Sets the blue value of the OSD background color. Valid values are between 0 and 255.");
+ break;
+ case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_OPACITY:
+ snprintf(s, len,
+ "Sets the opacity of the OSD background color. Valid values are between 0.0 and 1.0.");
+ break;
+ case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_RED:
+ snprintf(s, len,
+ "Sets the red value of the OSD text color. Valid values are between 0 and 255.");
+ break;
+ case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_GREEN:
+ snprintf(s, len,
+ "Sets the green value of the OSD text color. Valid values are between 0 and 255.");
+ break;
+ case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_BLUE:
+ snprintf(s, len,
+ "Sets the blue value of the OSD text color. Valid values are between 0 and 255.");
+ break;
+ default:
+ if (string_is_empty(s))
+ strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len);
+ return -1;
+ }
+
+ return 0;
+}
+
+#ifdef HAVE_MENU
+static const char *menu_hash_to_str_ar_label_enum(enum msg_hash_enums msg)
+{
+ if (msg <= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_END &&
+ msg >= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN)
+ {
+ static char hotkey_lbl[128] = {0};
+ unsigned idx = msg - MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN;
+ snprintf(hotkey_lbl, sizeof(hotkey_lbl), "input_hotkey_binds_%d", idx);
+ return hotkey_lbl;
+ }
+
+ switch (msg)
+ {
+#include "msg_hash_lbl.h"
+ default:
+#if 0
+ RARCH_LOG("Unimplemented: [%d]\n", msg);
+#endif
+ break;
+ }
+
+ return "null";
+}
+#endif
+
+const char *msg_hash_to_str_ar(enum msg_hash_enums msg) {
+#ifdef HAVE_MENU
+ const char *ret = menu_hash_to_str_ar_label_enum(msg);
+
+ if (ret && !string_is_equal(ret, "null"))
+ return ret;
+#endif
+
+ switch (msg) {
+#include "msg_hash_ar.h"
+ default:
+#if 0
+ RARCH_LOG("Unimplemented: [%d]\n", msg);
+ {
+ RARCH_LOG("[%d] : %s\n", msg - 1, msg_hash_to_str(((enum msg_hash_enums)(msg - 1))));
+ }
+#endif
+ break;
+ }
+
+ return "null";
+}
diff --git a/intl/msg_hash_ar.h b/intl/msg_hash_ar.h
new file mode 100644
index 0000000000..1c8028c465
--- /dev/null
+++ b/intl/msg_hash_ar.h
@@ -0,0 +1,3417 @@
+MSG_HASH(
+ MSG_COMPILER,
+ "Compiler"
+ )
+MSG_HASH(
+ MSG_UNKNOWN_COMPILER,
+ "Unknown compiler"
+ )
+MSG_HASH(
+ MSG_DEVICE_DISCONNECTED_FROM_PORT,
+ "Device disconnected from port"
+ )
+MSG_HASH(
+ MSG_UNKNOWN_NETPLAY_COMMAND_RECEIVED,
+ "Unknown netplay command received"
+ )
+MSG_HASH(
+ MSG_FILE_ALREADY_EXISTS_SAVING_TO_BACKUP_BUFFER,
+ "File already exists. Saving to backup buffer"
+ )
+MSG_HASH(
+ MSG_GOT_CONNECTION_FROM,
+ "Got connection from: \"%s\""
+ )
+MSG_HASH(
+ MSG_GOT_CONNECTION_FROM_NAME,
+ "Got connection from: \"%s (%s)\""
+ )
+MSG_HASH(
+ MSG_PUBLIC_ADDRESS,
+ "Public address"
+ )
+MSG_HASH(
+ MSG_NO_ARGUMENTS_SUPPLIED_AND_NO_MENU_BUILTIN,
+ "No arguments supplied and no menu builtin, displaying help..."
+ )
+MSG_HASH(
+ MSG_SETTING_DISK_IN_TRAY,
+ "Setting disk in tray"
+ )
+MSG_HASH(
+ MSG_WAITING_FOR_CLIENT,
+ "Waiting for client ..."
+ )
+MSG_HASH(
+ MSG_NETPLAY_YOU_HAVE_LEFT_THE_GAME,
+ "You have left the game"
+ )
+MSG_HASH(
+ MSG_NETPLAY_YOU_HAVE_JOINED_AS_PLAYER_N,
+ "You have joined as player %u"
+ )
+MSG_HASH(
+ MSG_NETPLAY_YOU_HAVE_JOINED_WITH_INPUT_DEVICES_S,
+ "You have joined with input devices %.*s"
+ )
+MSG_HASH(
+ MSG_NETPLAY_PLAYER_S_LEFT,
+ "Player %.*s has left the game"
+ )
+MSG_HASH(
+ MSG_NETPLAY_S_HAS_JOINED_AS_PLAYER_N,
+ "%2$.*1$s has joined as player %3$u"
+ )
+MSG_HASH(
+ MSG_NETPLAY_S_HAS_JOINED_WITH_INPUT_DEVICES_S,
+ "%2$.*1$s has joined with input devices %4$.*3$s"
+ )
+MSG_HASH(
+ MSG_NETPLAY_NOT_RETROARCH,
+ "A netplay connection attempt failed because the peer is not running RetroArch, or is running an old version of RetroArch."
+ )
+MSG_HASH(
+ MSG_NETPLAY_OUT_OF_DATE,
+ "The netplay peer is running an old version of RetroArch. Cannot connect."
+ )
+MSG_HASH(
+ MSG_NETPLAY_DIFFERENT_VERSIONS,
+ "WARNING: A netplay peer is running a different version of RetroArch. If problems occur, use the same version."
+ )
+MSG_HASH(
+ MSG_NETPLAY_DIFFERENT_CORES,
+ "A netplay peer is running a different core. Cannot connect."
+ )
+MSG_HASH(
+ MSG_NETPLAY_DIFFERENT_CORE_VERSIONS,
+ "WARNING: A netlpay peer is running a different version of the core. If problems occur, use the same version."
+ )
+MSG_HASH(
+ MSG_NETPLAY_ENDIAN_DEPENDENT,
+ "This core does not support inter-architecture netplay between these systems"
+ )
+MSG_HASH(
+ MSG_NETPLAY_PLATFORM_DEPENDENT,
+ "This core does not support inter-architecture netplay"
+ )
+MSG_HASH(
+ MSG_NETPLAY_ENTER_PASSWORD,
+ "Enter netplay server password:"
+ )
+MSG_HASH(
+ MSG_NETPLAY_INCORRECT_PASSWORD,
+ "Incorrect password"
+ )
+MSG_HASH(
+ MSG_NETPLAY_SERVER_NAMED_HANGUP,
+ "\"%s\" has disconnected"
+ )
+MSG_HASH(
+ MSG_NETPLAY_SERVER_HANGUP,
+ "A netplay client has disconnected"
+ )
+MSG_HASH(
+ MSG_NETPLAY_CLIENT_HANGUP,
+ "Netplay disconnected"
+ )
+MSG_HASH(
+ MSG_NETPLAY_CANNOT_PLAY_UNPRIVILEGED,
+ "You do not have permission to play"
+ )
+MSG_HASH(
+ MSG_NETPLAY_CANNOT_PLAY_NO_SLOTS,
+ "There are no free player slots"
+ )
+MSG_HASH(
+ MSG_NETPLAY_CANNOT_PLAY_NOT_AVAILABLE,
+ "The input devices requested are not available"
+ )
+MSG_HASH(
+ MSG_NETPLAY_CANNOT_PLAY,
+ "Cannot switch to play mode"
+ )
+MSG_HASH(
+ MSG_NETPLAY_PEER_PAUSED,
+ "Netplay peer \"%s\" paused"
+ )
+MSG_HASH(
+ MSG_NETPLAY_CHANGED_NICK,
+ "Your nickname changed to \"%s\""
+ )
+MSG_HASH(
+ MENU_ENUM_SUBLABEL_VIDEO_SHARED_CONTEXT,
+ "Give hardware-rendered cores their own private context. Avoids having to assume hardware state changes inbetween frames."
+ )
+MSG_HASH(
+ MENU_ENUM_SUBLABEL_MENU_SETTINGS,
+ "Adjusts menu screen appearance settings."
+ )
+MSG_HASH(
+ MENU_ENUM_SUBLABEL_VIDEO_HARD_SYNC,
+ "Hard-synchronize the CPU and GPU. Reduces latency at the cost of performance."
+ )
+MSG_HASH(
+ MENU_ENUM_SUBLABEL_VIDEO_THREADED,
+ "Improves performance at the cost of latency and more video stuttering. Use only if you cannot obtain full speed otherwise."
+ )
+MSG_HASH(
+ MSG_AUDIO_VOLUME,
+ "Audio volume"
+ )
+MSG_HASH(
+ MSG_AUTODETECT,
+ "Autodetect"
+ )
+MSG_HASH(
+ MSG_AUTOLOADING_SAVESTATE_FROM,
+ "Auto-loading savestate from"
+ )
+MSG_HASH(
+ MSG_CAPABILITIES,
+ "Capabilities"
+ )
+MSG_HASH(
+ MSG_CONNECTING_TO_NETPLAY_HOST,
+ "Connecting to netplay host"
+ )
+MSG_HASH(
+ MSG_CONNECTING_TO_PORT,
+ "Connecting to port"
+ )
+MSG_HASH(
+ MSG_CONNECTION_SLOT,
+ "Connection slot"
+ )
+MSG_HASH(
+ MSG_SORRY_UNIMPLEMENTED_CORES_DONT_DEMAND_CONTENT_NETPLAY,
+ "Sorry, unimplemented: cores that don't demand content cannot participate in netplay."
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_PASSWORD,
+ "Password"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_SETTINGS,
+ "Accounts Cheevos"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_ACCOUNTS_CHEEVOS_USERNAME,
+ "Username"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_ACCOUNTS_LIST,
+ "Accounts"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_ACCOUNTS_LIST_END,
+ "Accounts List Endpoint"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_ACCOUNTS_RETRO_ACHIEVEMENTS,
+ "RetroAchievements"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_LIST,
+ "Achievement List"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_LIST_HARDCORE,
+ "Achievement List (Hardcore)"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_ADD_CONTENT_LIST,
+ "Scan Content"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CONFIGURATIONS_LIST,
+ "ملفات التكوين"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_ADD_TAB,
+ "Import content"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_NETPLAY_TAB,
+ "Netplay Rooms"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_ASK_ARCHIVE,
+ "Ask"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_ASSETS_DIRECTORY,
+ "Assets"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUDIO_BLOCK_FRAMES,
+ "Block Frames"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUDIO_DEVICE,
+ "Audio Device"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUDIO_DRIVER,
+ "Audio Driver"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUDIO_DSP_PLUGIN,
+ "Audio DSP Plugin"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUDIO_ENABLE,
+ "Audio Enable"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUDIO_FILTER_DIR,
+ "Audio Filter"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_TURBO_DEADZONE_LIST,
+ "Turbo/Deadzone"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUDIO_LATENCY,
+ "Audio Latency (ms)"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUDIO_MAX_TIMING_SKEW,
+ "Audio Maximum Timing Skew"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUDIO_MUTE,
+ "Audio Mute"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUDIO_OUTPUT_RATE,
+ "Audio Output Rate (Hz)"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUDIO_RATE_CONTROL_DELTA,
+ "Dynamic Audio Rate Control"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUDIO_RESAMPLER_DRIVER,
+ "Audio Resampler Driver"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUDIO_SETTINGS,
+ "Audio"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUDIO_SYNC,
+ "Audio Sync"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME,
+ "Audio Volume Level (dB)"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUDIO_WASAPI_EXCLUSIVE_MODE,
+ "WASAPI Exclusive Mode"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUDIO_WASAPI_FLOAT_FORMAT,
+ "WASAPI Float Format"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUDIO_WASAPI_SH_BUFFER_LENGTH,
+ "WASAPI Shared Buffer Length"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUTOSAVE_INTERVAL,
+ "SaveRAM Autosave Interval"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUTO_OVERRIDES_ENABLE,
+ "Load Override Files Automatically"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUTO_REMAPS_ENABLE,
+ "Load Remap Files Automatically"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_AUTO_SHADERS_ENABLE,
+ "Load Shader Presets Automatically"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK,
+ "Back"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_CONFIRM,
+ "Confirm"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_INFO,
+ "Info"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_QUIT,
+ "Quit"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_DOWN,
+ "Scroll Down"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_UP,
+ "Scroll Up"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_START,
+ "Start"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_KEYBOARD,
+ "Toggle Keyboard"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_MENU,
+ "Toggle Menu"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS,
+ "Basic menu controls"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_CONFIRM,
+ "Confirm/OK"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_INFO,
+ "Info"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_QUIT,
+ "Quit"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_SCROLL_UP,
+ "Scroll Up"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_START,
+ "Defaults"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_TOGGLE_KEYBOARD,
+ "Toggle Keyboard"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BASIC_MENU_ENUM_CONTROLS_TOGGLE_MENU,
+ "Toggle Menu"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BLOCK_SRAM_OVERWRITE,
+ "Don't overwrite SaveRAM on loading savestate"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BLUETOOTH_ENABLE,
+ "Bluetooth Enable"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_BUILDBOT_ASSETS_URL,
+ "Buildbot Assets URL"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CACHE_DIRECTORY,
+ "Cache"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CAMERA_ALLOW,
+ "Allow Camera"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CAMERA_DRIVER,
+ "Camera Driver"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CHEAT,
+ "Cheat"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_CHANGES,
+ "Apply Changes"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CHEAT_DATABASE_PATH,
+ "Cheat File"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CHEAT_FILE,
+ "Cheat File"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CHEAT_FILE_LOAD,
+ "Load Cheat File"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CHEAT_FILE_SAVE_AS,
+ "Save Cheat File As"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CHEAT_NUM_PASSES,
+ "Cheat Passes"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CHEEVOS_DESCRIPTION,
+ "Description"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CHEEVOS_HARDCORE_MODE_ENABLE,
+ "Achievements Hardcore Mode"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CHEEVOS_LEADERBOARDS_ENABLE,
+ "Leaderboards"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CHEEVOS_BADGES_ENABLE,
+ "Achievement Badges"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CHEEVOS_LOCKED_ACHIEVEMENTS,
+ "Locked Achievements:"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CHEEVOS_LOCKED_ENTRY,
+ "Locked"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CHEEVOS_SETTINGS,
+ "RetroAchievements"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CHEEVOS_TEST_UNOFFICIAL,
+ "Test Unofficial Achievements"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CHEEVOS_UNLOCKED_ACHIEVEMENTS,
+ "Unlocked Achievements:"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CHEEVOS_UNLOCKED_ENTRY,
+ "Unlocked"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CHEEVOS_UNLOCKED_ENTRY_HARDCORE,
+ "Hardcore"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CHEEVOS_VERBOSE_ENABLE,
+ "Achievements Verbose Mode"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT,
+ "Close Content"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CONFIG,
+ "Config"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CONFIGURATIONS,
+ "تحميل ملف التكوين"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CONFIGURATION_SETTINGS,
+ "ملفات التكوين"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CONFIG_SAVE_ON_EXIT,
+ "Save Configuration on Exit"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CONTENT_COLLECTION_LIST,
+ "Collections"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CONTENT_DATABASE_DIRECTORY,
+ "Database"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CONTENT_DIR,
+ "Content"
+ )
+MSG_HASH(
+ MENU_ENUM_LABEL_VALUE_CONTENT_HISTORY_SIZE,
+ "History List Size")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE,
+ "Allow to remove entries")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CONTENT_SETTINGS,
+ "القائمة السريعة")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_ASSETS_DIR,
+ "Downloads")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_ASSETS_DIRECTORY,
+ "Downloads")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_CHEAT_OPTIONS,
+ "Cheats")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_COUNTERS,
+ "Core Counters")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_ENABLE,
+ "Show core name")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_INFORMATION,
+ "Core Information")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_INFO_AUTHORS,
+ "Authors")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_INFO_CATEGORIES,
+ "Categories")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_INFO_CORE_LABEL,
+ "Core label")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_INFO_CORE_NAME,
+ "Core name")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_INFO_FIRMWARE,
+ "Firmware(s)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_INFO_LICENSES,
+ "License(s)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_INFO_PERMISSIONS,
+ "Permissions")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_INFO_SUPPORTED_EXTENSIONS,
+ "Supported extensions")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_INFO_SYSTEM_MANUFACTURER,
+ "System manufacturer")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_INFO_SYSTEM_NAME,
+ "System name")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS,
+ "Controls")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_LIST,
+ "تحميل الكور")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_OPTIONS,
+ "Options")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_SETTINGS,
+ "Core")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_SET_SUPPORTS_NO_CONTENT_ENABLE,
+ "Start a Core Automatically")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE,
+ "Automatically extract downloaded archive")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_UPDATER_BUILDBOT_URL,
+ "Buildbot Cores URL")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_UPDATER_LIST,
+ "Core Updater")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CORE_UPDATER_SETTINGS,
+ "Updater")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CPU_ARCHITECTURE,
+ "CPU Architecture:")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CPU_CORES,
+ "CPU Cores:")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CURSOR_DIRECTORY,
+ "Cursor")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CURSOR_MANAGER,
+ "Cursor Manager")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CUSTOM_RATIO,
+ "Custom Ratio")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER,
+ "Database Manager")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION,
+ "Database Selection")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY,
+ "Remove")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES,
+ "Start directory")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
+ "")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
+ "")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_NONE,
+ "")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_NOT_FOUND,
+ "Directory not found.")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_SETTINGS,
+ "Directory")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS,
+ "Disk Cycle Tray Status")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_IMAGE_APPEND,
+ "Disk Image Append")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_INDEX,
+ "Disk Index")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DISK_OPTIONS,
+ "Disk Control")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DONT_CARE,
+ "Don't care")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST,
+ "Downloads")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DOWNLOAD_CORE,
+ "Download Core...")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DOWNLOAD_CORE_CONTENT,
+ "Content Downloader")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DPI_OVERRIDE_ENABLE,
+ "DPI Override Enable")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DPI_OVERRIDE_VALUE,
+ "DPI Override")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DRIVER_SETTINGS,
+ "Driver")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DUMMY_ON_CORE_SHUTDOWN,
+ "Load Dummy on Core Shutdown")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CHECK_FOR_MISSING_FIRMWARE,
+ "Check for Missing Firmware Before Loading")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPER,
+ "Dynamic Background")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPERS_DIRECTORY,
+ "Dynamic Backgrounds")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_CHEEVOS_ENABLE,
+ "Enable Achievements")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_ENTRY_HOVER_COLOR,
+ "Menu entry hover color")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_ENTRY_NORMAL_COLOR,
+ "Menu entry normal color")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_FALSE,
+ "False")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_FASTFORWARD_RATIO,
+ "Maximum Run Speed")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES_TAB,
+ "Favorites")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_FPS_SHOW,
+ "Display Framerate")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_FRAME_THROTTLE_ENABLE,
+ "Limit Maximum Run Speed")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_FRAME_THROTTLE_SETTINGS,
+ "Frame Throttle")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_FRONTEND_COUNTERS,
+ "Frontend Counters")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS,
+ "Load Content-Specific Core Options Automatically")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_CREATE,
+ "Create game-options file")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_IN_USE,
+ "Game-options file")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_HELP,
+ "مساعدة")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING,
+ "Audio/Video Troubleshooting")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD,
+ "Changing Virtual Gamepad Overlay")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_HELP_CONTROLS,
+ "Basic Menu Controls")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_HELP_LIST,
+ "مساعدة")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_HELP_LOADING_CONTENT,
+ "Loading Content")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT,
+ "Scanning For Content")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_HELP_WHAT_IS_A_CORE,
+ "What Is A Core?")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_HISTORY_LIST_ENABLE,
+ "History List Enable")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_HISTORY_TAB,
+ "History")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_HORIZONTAL_MENU,
+ "Horizontal Menu")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_IMAGES_TAB,
+ "Image")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INFORMATION,
+ "معلومات")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INFORMATION_LIST,
+ "معلومات")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_ADC_TYPE,
+ "Analog To Digital Type")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_ALL_USERS_CONTROL_MENU,
+ "All Users Control Menu")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X,
+ "Left Analog X")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_MINUS,
+ "Left analog X- (left)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_PLUS,
+ "Left analog X+ (right)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y,
+ "Left Analog Y")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_MINUS,
+ "Left analog Y- (up)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_PLUS,
+ "Left analog Y+ (down)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X,
+ "Right Analog X")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_MINUS,
+ "Right analog X- (left)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_PLUS,
+ "Right analog X+ (right)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y,
+ "Right Analog Y")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_MINUS,
+ "Right analog Y- (up)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_PLUS,
+ "Right analog Y+ (down)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_TRIGGER,
+ "Gun Trigger")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_RELOAD,
+ "Gun Reload")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_A,
+ "Gun Aux A")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_B,
+ "Gun Aux B")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_AUX_C,
+ "Gun Aux C")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_START,
+ "Gun Start")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_SELECT,
+ "Gun Select")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_UP,
+ "Gun D-pad Up")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_DOWN,
+ "Gun D-pad Down")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_LEFT,
+ "Gun D-pad Left")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_LIGHTGUN_DPAD_RIGHT,
+ "Gun D-pad Right")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_AUTODETECT_ENABLE,
+ "Autoconfig Enable")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_AXIS_THRESHOLD,
+ "Analog Stick Deadzone")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_INPUT_SWAP_OK_CANCEL,
+ "Menu Swap OK & Cancel Buttons")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_BIND_ALL,
+ "Bind All")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_BIND_DEFAULT_ALL,
+ "Bind Default All")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_BIND_TIMEOUT,
+ "Bind Timeout")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_DESCRIPTOR_HIDE_UNBOUND,
+ "Hide Unbound Core Input Descriptors")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_DESCRIPTOR_LABEL_SHOW,
+ "Display Input Descriptor Labels")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_INDEX,
+ "Device Index")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_DEVICE_TYPE,
+ "Device Type")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_INDEX,
+ "Mouse Index")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_DRIVER,
+ "Input Driver")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_DUTY_CYCLE,
+ "Duty Cycle")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_HOTKEY_BINDS,
+ "Input Hotkey Binds")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_ICADE_ENABLE,
+ "Keyboard Gamepad Mapping Enable")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_A,
+ "A button (right)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_B,
+ "B button (down)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_DOWN,
+ "Down D-pad")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L2,
+ "L2 button (trigger)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L3,
+ "L3 button (thumb)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L,
+ "L button (shoulder)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_LEFT,
+ "Left D-pad")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R2,
+ "R2 button (trigger)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R3,
+ "R3 button (thumb)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R,
+ "R button (shoulder)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_RIGHT,
+ "Right D-pad")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_SELECT,
+ "Select button")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_START,
+ "Start button")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_UP,
+ "Up D-pad")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_X,
+ "X button (top)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_Y,
+ "Y button (left)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_KEY,
+ "(Key: %s)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_LEFT,
+ "Mouse 1")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_RIGHT,
+ "Mouse 2")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_MIDDLE,
+ "Mouse 3")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_BUTTON4,
+ "Mouse 4")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_BUTTON5,
+ "Mouse 5")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_WHEEL_UP,
+ "Wheel Up")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_WHEEL_DOWN,
+ "Wheel Down")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_HORIZ_WHEEL_UP,
+ "Wheel Left")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_MOUSE_HORIZ_WHEEL_DOWN,
+ "Wheel Right")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE,
+ "Keyboard Gamepad Mapping Type")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_MAX_USERS,
+ "Max Users")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO,
+ "Menu Toggle Gamepad Combo")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_MINUS,
+ "Cheat index -")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_PLUS,
+ "Cheat index +")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_TOGGLE,
+ "Cheat toggle")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_EJECT_TOGGLE,
+ "Disk eject toggle")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_NEXT,
+ "Disk next")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_PREV,
+ "Disk prev")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY,
+ "Enable hotkeys")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_HOLD_KEY,
+ "Fast forward hold")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_KEY,
+ "Fast forward toggle")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE,
+ "Frameadvance")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY,
+ "Fullscreen toggle")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_GRAB_MOUSE_TOGGLE,
+ "Grab mouse toggle")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_GAME_FOCUS_TOGGLE,
+ "Game focus toggle")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY,
+ "Load state")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE,
+ "Menu toggle")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_MOVIE_RECORD_TOGGLE,
+ "Movie record toggle")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE,
+ "Audio mute toggle")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH,
+ "Netplay toggle play/spectate mode")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_OSK,
+ "On-screen keyboard toggle")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_OVERLAY_NEXT,
+ "Overlay next")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE,
+ "Pause toggle")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY,
+ "Quit RetroArch")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_RESET,
+ "Reset game")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND,
+ "Rewind")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY,
+ "Save state")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_SCREENSHOT,
+ "Take screenshot")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_NEXT,
+ "Next shader")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_PREV,
+ "Previous shader")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION,
+ "Slow motion")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_MINUS,
+ "Savestate slot -")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_PLUS,
+ "Savestate slot +")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_DOWN,
+ "Volume -")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP,
+ "Volume +")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_ENABLE,
+ "Display Overlay")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU,
+ "Hide Overlay In Menu")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS,
+ "Show Inputs On Overlay")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT,
+ "Show Inputs Listen Port")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR,
+ "Poll Type Behavior")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_EARLY,
+ "Early")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_LATE,
+ "Late")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_NORMAL,
+ "Normal")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_PREFER_FRONT_TOUCH,
+ "Prefer Front Touch")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_REMAPPING_DIRECTORY,
+ "Input Remapping")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_REMAP_BINDS_ENABLE,
+ "Remap Binds Enable")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_SAVE_AUTOCONFIG,
+ "Save Autoconfig")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_SETTINGS,
+ "Input")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_SMALL_KEYBOARD_ENABLE,
+ "Small Keyboard Enable")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_TOUCH_ENABLE,
+ "Touch Enable")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_TURBO_ENABLE,
+ "Turbo enable")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_TURBO_PERIOD,
+ "Turbo Period")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INPUT_USER_BINDS,
+ "Input User %u Binds")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_INTERNAL_STORAGE_STATUS,
+ "Internal storage status")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_JOYPAD_AUTOCONFIG_DIR,
+ "Input Autoconfig")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_JOYPAD_DRIVER,
+ "Joypad Driver")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LAKKA_SERVICES,
+ "Services")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_CHINESE_SIMPLIFIED,
+ "Chinese (Simplified)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_CHINESE_TRADITIONAL,
+ "Chinese (Traditional)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_DUTCH,
+ "Dutch")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_ENGLISH,
+ "English")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_ESPERANTO,
+ "Esperanto")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_FRENCH,
+ "French")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_GERMAN,
+ "German")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_ITALIAN,
+ "Italian")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_JAPANESE,
+ "Japanese")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_KOREAN,
+ "Korean")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_POLISH,
+ "Polish")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_PORTUGUESE_BRAZIL,
+ "Portuguese (Brazil)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_PORTUGUESE_PORTUGAL,
+ "Portuguese (Portugal)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_RUSSIAN,
+ "Russian")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_SPANISH,
+ "Spanish")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_VIETNAMESE,
+ "Vietnamese")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LANG_ARABIC,
+ "عربى")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LEFT_ANALOG,
+ "Left Analog")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LIBRETRO_DIR_PATH,
+ "Core")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LIBRETRO_INFO_PATH,
+ "Core Info")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LIBRETRO_LOG_LEVEL,
+ "Core Logging Level")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR,
+ "Linear")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE,
+ "Load Archive")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY,
+ "Load Recent")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST,
+ "تحميل المحتوى")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_STATE,
+ "Load State")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LOCATION_ALLOW,
+ "Allow Location")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LOCATION_DRIVER,
+ "Location Driver")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS,
+ "Logging")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_LOG_VERBOSITY,
+ "Logging Verbosity")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MAIN_MENU,
+ "القائمة الرئيسية")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MANAGEMENT,
+ "Database Settings")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME,
+ "Menu Color Theme")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_BLUE,
+ "Blue")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_BLUE_GREY,
+ "Blue Grey")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_DARK_BLUE,
+ "Dark Blue")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_GREEN,
+ "Green")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_NVIDIA_SHIELD,
+ "Shield")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_RED,
+ "Red")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_YELLOW,
+ "Yellow")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_FOOTER_OPACITY,
+ "Footer Opacity")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_HEADER_OPACITY,
+ "Header Opacity")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_DRIVER,
+ "Menu Driver")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_ENUM_THROTTLE_FRAMERATE,
+ "Throttle Menu Framerate")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS,
+ "Settings")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_LINEAR_FILTER,
+ "Menu Linear Filter")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_HORIZONTAL_ANIMATION,
+ "Horizontal Animation")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_SETTINGS,
+ "Appearance")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER,
+ "Background")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER_OPACITY,
+ "Background opacity")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MISSING,
+ "Missing")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MORE,
+ "...")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MOUSE_ENABLE,
+ "Mouse Support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MULTIMEDIA_SETTINGS,
+ "Multimedia")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_MUSIC_TAB,
+ "Music")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE,
+ "Filter unknown extensions")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NAVIGATION_WRAPAROUND,
+ "Navigation Wrap-Around")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NEAREST,
+ "Nearest")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY,
+ "Netplay")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_ALLOW_SLAVES,
+ "Allow Slave-Mode Clients")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_CHECK_FRAMES,
+ "Netplay Check Frames")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_INPUT_LATENCY_FRAMES_MIN,
+ "Input Latency Frames")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_INPUT_LATENCY_FRAMES_RANGE,
+ "Input Latency Frames Range")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_DELAY_FRAMES,
+ "Netplay Delay Frames")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_DISCONNECT,
+ "Disconnect from netplay host")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE,
+ "Netplay Enable")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE_CLIENT,
+ "Connect to netplay host")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_ENABLE_HOST,
+ "Start netplay host")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_DISABLE_HOST,
+ "Stop netplay host")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_IP_ADDRESS,
+ "Server Address")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_LAN_SCAN_SETTINGS,
+ "Scan local network")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_MODE,
+ "Netplay Client Enable")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_NICKNAME,
+ "Username")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_PASSWORD,
+ "Server Password")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_PUBLIC_ANNOUNCE,
+ "Publicly Announce Netplay")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_REQUEST_DEVICE_I,
+ "Request Device %u")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_REQUIRE_SLAVES,
+ "Disallow Non-Slave-Mode Clients")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_SETTINGS,
+ "Netplay settings")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_ANALOG,
+ "Analog Input Sharing")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_ANALOG_MAX,
+ "Max")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_ANALOG_AVERAGE,
+ "Average")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_DIGITAL,
+ "Digital Input Sharing")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_DIGITAL_OR,
+ "Share")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_DIGITAL_XOR,
+ "Grapple")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_DIGITAL_VOTE,
+ "Vote")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_NONE,
+ "None")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_SHARE_NO_PREFERENCE,
+ "No preference")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_START_AS_SPECTATOR,
+ "Netplay Spectator Mode")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_STATELESS_MODE,
+ "Netplay Stateless Mode")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_SPECTATE_PASSWORD,
+ "Server Spectate-Only Password")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_SPECTATOR_MODE_ENABLE,
+ "Netplay Spectator Enable")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_TCP_UDP_PORT,
+ "Netplay TCP Port")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETPLAY_NAT_TRAVERSAL,
+ "Netplay NAT Traversal")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETWORK_CMD_ENABLE,
+ "Network Commands")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETWORK_CMD_PORT,
+ "Network Command Port")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETWORK_INFORMATION,
+ "Network Information")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETWORK_REMOTE_ENABLE,
+ "Network Gamepad")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETWORK_REMOTE_PORT,
+ "Network Remote Base Port")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NETWORK_SETTINGS,
+ "Network")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NO,
+ "No")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NONE,
+ "None")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE,
+ "N/A")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_ACHIEVEMENTS_TO_DISPLAY,
+ "No achievements to display.")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_CORE,
+ "No Core")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_CORES_AVAILABLE,
+ "No cores available.")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_CORE_INFORMATION_AVAILABLE,
+ "No core information available.")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_CORE_OPTIONS_AVAILABLE,
+ "No core options available.")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_ENTRIES_TO_DISPLAY,
+ "No entries to display.")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_HISTORY_AVAILABLE,
+ "No history available.")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE,
+ "No information is available.")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_ITEMS,
+ "No items.")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_NETPLAY_HOSTS_FOUND,
+ "No netplay hosts found.")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_NETWORKS_FOUND,
+ "No networks found.")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_PERFORMANCE_COUNTERS,
+ "No performance counters.")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_PLAYLISTS,
+ "No playlists.")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_PLAYLIST_ENTRIES_AVAILABLE,
+ "No playlist entries available.")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_SETTINGS_FOUND,
+ "No settings found.")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_NO_SHADER_PARAMETERS,
+ "No shader parameters.")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_OFF,
+ "OFF")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_ON,
+ "ON")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_ONLINE,
+ "Online")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_ONLINE_UPDATER,
+ "التحديث عبر الانترنت")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_ONSCREEN_DISPLAY_SETTINGS,
+ "Onscreen Display")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_ONSCREEN_OVERLAY_SETTINGS,
+ "Onscreen Overlay")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_ONSCREEN_NOTIFICATIONS_SETTINGS,
+ "Onscreen Notifications")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_OPEN_ARCHIVE,
+ "Browse Archive")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_OPTIONAL,
+ "Optional")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_OVERLAY,
+ "Overlay")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_OVERLAY_AUTOLOAD_PREFERRED,
+ "Autoload Preferred Overlay")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_OVERLAY_DIRECTORY,
+ "Overlay")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_OVERLAY_OPACITY,
+ "Overlay Opacity")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_OVERLAY_PRESET,
+ "Overlay Preset")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_OVERLAY_SCALE,
+ "Overlay Scale")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_OVERLAY_SETTINGS,
+ "Onscreen Overlay")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_PAL60_ENABLE,
+ "Use PAL60 Mode")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_PARENT_DIRECTORY,
+ "Parent directory")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_PAUSE_LIBRETRO,
+ "Pause when menu activated")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_PAUSE_NONACTIVE,
+ "Don't run in background")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_PERFCNT_ENABLE,
+ "Performance Counters")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLISTS_TAB,
+ "Playlists")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_DIRECTORY,
+ "Playlist")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_PLAYLIST_SETTINGS,
+ "Playlists")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_POINTER_ENABLE,
+ "Touch Support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_PORT,
+ "Port")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_PRESENT,
+ "Present")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_PRIVACY_SETTINGS,
+ "Privacy")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_QUIT_RETROARCH,
+ "إنهاء البرنامج")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ANALOG,
+ "Analog supported")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_BBFC_RATING,
+ "BBFC Rating")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_CERO_RATING,
+ "CERO Rating")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_COOP,
+ "Co-op supported")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_CRC32,
+ "CRC32")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_DESCRIPTION,
+ "Description")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_DEVELOPER,
+ "Developer")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_EDGE_MAGAZINE_ISSUE,
+ "Edge Magazine Issue")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_EDGE_MAGAZINE_RATING,
+ "Edge Magazine Rating")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_EDGE_MAGAZINE_REVIEW,
+ "Edge Magazine Review")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ELSPA_RATING,
+ "ELSPA Rating")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ENHANCEMENT_HW,
+ "Enhancement Hardware")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ESRB_RATING,
+ "ESRB Rating")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_FAMITSU_MAGAZINE_RATING,
+ "Famitsu Magazine Rating")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_FRANCHISE,
+ "Franchise")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_GENRE,
+ "Genre")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_MD5,
+ "MD5")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_NAME,
+ "Name")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ORIGIN,
+ "Origin")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_PEGI_RATING,
+ "PEGI Rating")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_PUBLISHER,
+ "Publisher")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_RELEASE_MONTH,
+ "Releasedate Month")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_RELEASE_YEAR,
+ "Releasedate Year")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_RUMBLE,
+ "Rumble supported")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_SERIAL,
+ "Serial")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_SHA1,
+ "SHA1")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_START_CONTENT,
+ "Start Content")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_TGDB_RATING,
+ "TGDB Rating")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_REBOOT,
+ "Reboot")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RECORDING_CONFIG_DIRECTORY,
+ "Recording Config")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RECORDING_OUTPUT_DIRECTORY,
+ "Recording Output")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RECORDING_SETTINGS,
+ "Recording")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RECORD_CONFIG,
+ "Load Recording Config...")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RECORD_DRIVER,
+ "Record Driver")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RECORD_ENABLE,
+ "Enable Recording")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RECORD_PATH,
+ "Save Output Recording as...")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RECORD_USE_OUTPUT_DIRECTORY,
+ "Save Recordings in Output Dir")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_REMAP_FILE,
+ "Remap File")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_REMAP_FILE_LOAD,
+ "Load Remap File")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_REMAP_FILE_SAVE_CORE,
+ "Save Core Remap File")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_REMAP_FILE_SAVE_GAME,
+ "Save Game Remap File")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_REMAP_FILE_REMOVE_CORE,
+ "Delete Core Remap File")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_REMAP_FILE_REMOVE_GAME,
+ "Delete Game Remap File")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_REQUIRED,
+ "Required")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RESTART_CONTENT,
+ "Restart")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RESTART_RETROARCH,
+ "Restart RetroArch")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RESUME,
+ "Resume")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RESUME_CONTENT,
+ "Resume")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RETROKEYBOARD,
+ "RetroKeyboard")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RETROPAD,
+ "RetroPad")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RETROPAD_WITH_ANALOG,
+ "RetroPad w/ Analog")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RETRO_ACHIEVEMENTS_SETTINGS,
+ "Achievements")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_REWIND_ENABLE,
+ "Rewind Enable")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_REWIND_GRANULARITY,
+ "Rewind Granularity")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_REWIND_SETTINGS,
+ "Rewind")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY,
+ "File Browser")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RGUI_CONFIG_DIRECTORY,
+ "Config")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RGUI_SHOW_START_SCREEN,
+ "Display Start Screen")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RIGHT_ANALOG,
+ "Right Analog")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_FAVORITES,
+ "Add to Favorites")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_FAVORITES_PLAYLIST,
+ "Add to Favorites")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RUN,
+ "Run")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_RUN_MUSIC,
+ "Run")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SAMBA_ENABLE,
+ "SAMBA Enable")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVEFILE_DIRECTORY,
+ "Savefile")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_INDEX,
+ "Save State Auto Index")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_LOAD,
+ "Auto Load State")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVESTATE_AUTO_SAVE,
+ "Auto Save State")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVESTATE_DIRECTORY,
+ "Savestate")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVESTATE_THUMBNAIL_ENABLE,
+ "Savestate Thumbnails")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG,
+ "Save Current Configuration")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CORE,
+ "Save Core Overrides")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_GAME,
+ "Save Game Overrides")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVE_NEW_CONFIG,
+ "Save New Configuration")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVE_STATE,
+ "Save State")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVING_SETTINGS,
+ "Saving")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SCAN_DIRECTORY,
+ "Scan Directory")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SCAN_FILE,
+ "Scan File")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SCAN_THIS_DIRECTORY,
+ "")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SCREENSHOT_DIRECTORY,
+ "Screenshot")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SCREEN_RESOLUTION,
+ "Screen Resolution")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SEARCH,
+ "Search")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SECONDS,
+ "seconds")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SETTINGS,
+ "Settings")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SETTINGS_TAB,
+ "Settings")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER,
+ "Shader")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_APPLY_CHANGES,
+ "Apply Changes")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_OPTIONS,
+ "Shaders")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON,
+ "Ribbon")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_RIBBON_SIMPLIFIED,
+ "Ribbon (simplified)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SIMPLE_SNOW,
+ "Simple Snow")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SHADER_PIPELINE_SNOW,
+ "Snow")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SHOW_ADVANCED_SETTINGS,
+ "Show Advanced Settings")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SHOW_HIDDEN_FILES,
+ "Show Hidden Files and Folders")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SHUTDOWN,
+ "Shutdown")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SLOWMOTION_RATIO,
+ "Slow-Motion Ratio")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SORT_SAVEFILES_ENABLE,
+ "Sort Saves In Folders")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SORT_SAVESTATES_ENABLE,
+ "Sort Savestates In Folders")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVESTATES_IN_CONTENT_DIR_ENABLE,
+ "Write Savestates to Content Dir")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SAVEFILES_IN_CONTENT_DIR_ENABLE,
+ "Write Saves to Content Dir")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEMFILES_IN_CONTENT_DIR_ENABLE,
+ "System Files are in Content Dir")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SCREENSHOTS_IN_CONTENT_DIR_ENABLE,
+ "Write Screenshots to Content Dir")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SSH_ENABLE,
+ "SSH Enable")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_START_CORE,
+ "Start Core")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_START_NET_RETROPAD,
+ "Start Remote RetroPad")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_START_VIDEO_PROCESSOR,
+ "Start Video Processor")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_STATE_SLOT,
+ "State Slot")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_STATUS,
+ "Status")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_STDIN_CMD_ENABLE,
+ "stdin Commands")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SUPPORTED_CORES,
+ "Suggested cores")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SUSPEND_SCREENSAVER_ENABLE,
+ "Suspend Screensaver")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_BGM_ENABLE,
+ "System BGM Enable")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_DIRECTORY,
+ "System/BIOS")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFORMATION,
+ "System Information")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_7ZIP_SUPPORT,
+ "7zip support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_ALSA_SUPPORT,
+ "ALSA support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_BUILD_DATE,
+ "Build date")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CG_SUPPORT,
+ "Cg support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_COCOA_SUPPORT,
+ "Cocoa support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_COMMAND_IFACE_SUPPORT,
+ "Command interface support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CORETEXT_SUPPORT,
+ "CoreText support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CPU_FEATURES,
+ "CPU Features")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_DPI,
+ "Display metric DPI")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_HEIGHT,
+ "Display metric height (mm)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_WIDTH,
+ "Display metric width (mm)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DSOUND_SUPPORT,
+ "DirectSound support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_WASAPI_SUPPORT,
+ "WASAPI support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DYLIB_SUPPORT,
+ "Dynamic library support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_DYNAMIC_SUPPORT,
+ "Dynamic run-time loading of libretro library")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_EGL_SUPPORT,
+ "EGL support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FBO_SUPPORT,
+ "OpenGL/Direct3D render-to-texture (multi-pass shaders) support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FFMPEG_SUPPORT,
+ "FFmpeg support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FREETYPE_SUPPORT,
+ "FreeType support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_IDENTIFIER,
+ "Frontend identifier")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_NAME,
+ "Frontend name")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_OS,
+ "Frontend OS")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_GIT_VERSION,
+ "Git version")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_GLSL_SUPPORT,
+ "GLSL support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_HLSL_SUPPORT,
+ "HLSL support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_JACK_SUPPORT,
+ "JACK support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_KMS_SUPPORT,
+ "KMS/EGL support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LAKKA_VERSION,
+ "Lakka Version")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBRETRODB_SUPPORT,
+ "LibretroDB support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBUSB_SUPPORT,
+ "Libusb support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_LIBXML2_SUPPORT,
+ "libxml2 XML parsing support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_NETPLAY_SUPPORT,
+ "Netplay (peer-to-peer) support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_NETWORK_COMMAND_IFACE_SUPPORT,
+ "Network Command interface support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_NETWORK_REMOTE_SUPPORT,
+ "Network Gamepad support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENAL_SUPPORT,
+ "OpenAL support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENGLES_SUPPORT,
+ "OpenGL ES support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENGL_SUPPORT,
+ "OpenGL support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENSL_SUPPORT,
+ "OpenSL support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OPENVG_SUPPORT,
+ "OpenVG support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OSS_SUPPORT,
+ "OSS support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_OVERLAY_SUPPORT,
+ "Overlay support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE,
+ "Power source")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGED,
+ "Charged")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGING,
+ "Charging")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_DISCHARGING,
+ "Discharging")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_NO_SOURCE,
+ "No source")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_PULSEAUDIO_SUPPORT,
+ "PulseAudio support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_PYTHON_SUPPORT,
+ "Python (script support in shaders) support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RBMP_SUPPORT,
+ "BMP support (RBMP)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RETRORATING_LEVEL,
+ "RetroRating level")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RJPEG_SUPPORT,
+ "JPEG support (RJPEG)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_ROARAUDIO_SUPPORT,
+ "RoarAudio support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RPNG_SUPPORT,
+ "PNG support (RPNG)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RSOUND_SUPPORT,
+ "RSound support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RTGA_SUPPORT,
+ "TGA support (RTGA)")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SDL2_SUPPORT,
+ "SDL2 support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SDL_IMAGE_SUPPORT,
+ "SDL image support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SDL_SUPPORT,
+ "SDL1.2 support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_SLANG_SUPPORT,
+ "Slang support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_THREADING_SUPPORT,
+ "Threading support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_UDEV_SUPPORT,
+ "Udev support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_V4L2_SUPPORT,
+ "Video4Linux2 support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_VIDEO_CONTEXT_DRIVER,
+ "Video context driver")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_VULKAN_SUPPORT,
+ "Vulkan support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_WAYLAND_SUPPORT,
+ "Wayland support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_X11_SUPPORT,
+ "X11 support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_XAUDIO2_SUPPORT,
+ "XAudio2 support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_XVIDEO_SUPPORT,
+ "XVideo support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_ZLIB_SUPPORT,
+ "Zlib support")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT,
+ "Take Screenshot")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_THREADED_DATA_RUNLOOP_ENABLE,
+ "Threaded tasks")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_THUMBNAILS,
+ "Thumbnails")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_THUMBNAILS_DIRECTORY,
+ "Thumbnails")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_THUMBNAILS_UPDATER_LIST,
+ "Thumbnails Updater")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_BOXARTS,
+ "Boxarts")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_SCREENSHOTS,
+ "Screenshots")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_TITLE_SCREENS,
+ "Title Screens")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_TIMEDATE_ENABLE,
+ "Show date / time")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_TITLE_COLOR,
+ "Menu title color")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_TRUE,
+ "True")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_UI_COMPANION_ENABLE,
+ "UI Companion Enable")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_UI_COMPANION_START_ON_BOOT,
+ "UI Companion Start On Boot")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_UI_MENUBAR_ENABLE,
+ "Menubar")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_UNABLE_TO_READ_COMPRESSED_FILE,
+ "Unable to read compressed file.")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_UNDO_LOAD_STATE,
+ "Undo Load State")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_UNDO_SAVE_STATE,
+ "Undo Save State")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_UNKNOWN,
+ "Unknown")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_UPDATER_SETTINGS,
+ "Updater")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_UPDATE_ASSETS,
+ "Update Assets")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_UPDATE_AUTOCONFIG_PROFILES,
+ "Update Joypad Profiles")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_UPDATE_CG_SHADERS,
+ "Update Cg Shaders")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_UPDATE_CHEATS,
+ "Update Cheats")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_UPDATE_CORE_INFO_FILES,
+ "Update Core Info Files")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_UPDATE_DATABASES,
+ "Update Databases")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_UPDATE_GLSL_SHADERS,
+ "Update GLSL Shaders")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_UPDATE_LAKKA,
+ "Update Lakka")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_UPDATE_OVERLAYS,
+ "Update Overlays")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_UPDATE_SLANG_SHADERS,
+ "Update Slang Shaders")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_USER,
+ "User")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_KEYBOARD,
+ "Kbd")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_USER_INTERFACE_SETTINGS,
+ "User Interface")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_USER_LANGUAGE,
+ "Language")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_USER_SETTINGS,
+ "User")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER,
+ "Use Builtin Image Viewer")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_USE_BUILTIN_PLAYER,
+ "Use Builtin Media Player")
+MSG_HASH(MENU_ENUM_LABEL_VALUE_USE_THIS_DIRECTORY,
+ "