Update
[pcsx_rearmed.git] / frontend / libretro_core_options.h
index 66f1b0c..46f7f8f 100644 (file)
@@ -7,6 +7,28 @@
 #include <libretro.h>
 #include <retro_inline.h>
 
+#ifndef HAVE_NO_LANGEXTRA
+#include "libretro_core_options_intl.h"
+#endif
+
+/*
+ ********************************
+ * VERSION: 1.3
+ ********************************
+ *
+ * - 1.3: Move translations to libretro_core_options_intl.h
+ *        - libretro_core_options_intl.h includes BOM and utf-8
+ *          fix for MSVC 2010-2013
+ *        - Added HAVE_NO_LANGEXTRA flag to disable translations
+ *          on platforms/compilers without BOM support
+ * - 1.2: Use core options v1 interface when
+ *        RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION is >= 1
+ *        (previously required RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION == 1)
+ * - 1.1: Support generation of core options v0 retro_core_option_value
+ *        arrays containing options with a single value
+ * - 1.0: First commit
+*/
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -27,14 +49,6 @@ extern "C" {
  *   frontend language definition
  */
 
-#ifdef HAVE_PRE_ARMV7
-#define PSX_CLOCK_DEFAULT "50"
-#define PSX_CLOCK_LABEL "Overclock or underclock the PSX clock. Default is 50"
-#else
-#define PSX_CLOCK_DEFAULT "57"
-#define PSX_CLOCK_LABEL "Overclock or underclock the PSX clock. Default is 57"
-#endif
-
 struct retro_core_option_definition option_defs_us[] = {
    {
       "pcsx_rearmed_frameskip",
@@ -45,7 +59,7 @@ struct retro_core_option_definition option_defs_us[] = {
          { "1", NULL },
          { "2", NULL },
          { "3", NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
       "0",
    },
@@ -55,8 +69,8 @@ struct retro_core_option_definition option_defs_us[] = {
       "Allows you to use real bios file (if available) or emulated bios (HLE). Its recommended to use official bios file for better compatibility.",
       {
          { "auto", "auto" },
-         { "HLE", "hle" },
-         { NULL, NULL},
+         { "HLE",  "hle" },
+         { NULL, NULL },
       },
       "auto",
    },
@@ -67,33 +81,33 @@ struct retro_core_option_definition option_defs_us[] = {
       {
          { "auto", "auto" },
          { "NTSC", "ntsc" },
-         { "PAL", "pal" },
-         { NULL, NULL},
+         { "PAL",  "pal" },
+         { NULL, NULL },
       },
       "auto",
    },
    {
       "pcsx_rearmed_memcard2",
-      "Enable second memory card (shared)",
-      "Enabled the memory card slot 2. This is shared amongs all games.",
+      "Enable Second Memory Card (Shared)",
+      "Enabled the memory card slot 2. This memory card is shared amongst all games.",
       {
-         { "disable",  NULL },
+         { "disabled", NULL },
          { "enabled",  NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
-      "disable",
+      "disabled",
    },
    {
       "pcsx_rearmed_pad1type",
       "Pad 1 Type",
       "Pad type for player 1",
       {
-         { "standard", NULL },
-         { "analog", NULL },
+         { "standard",  NULL },
+         { "analog",    NULL },
          { "dualshock", NULL },
-         { "negcon", NULL },
-         { "none", NULL },
-         { NULL, NULL},
+         { "negcon",    NULL },
+         { "none",      NULL },
+         { NULL, NULL },
       },
       "standard",
    },
@@ -102,12 +116,12 @@ struct retro_core_option_definition option_defs_us[] = {
       "Pad 2 Type",
       "Pad type for player 2",
       {
-         { "standard", NULL },
-         { "analog", NULL },
+         { "standard",  NULL },
+         { "analog",    NULL },
          { "dualshock", NULL },
-         { "negcon", NULL },
-         { "none", NULL },
-         { NULL, NULL},
+         { "negcon",    NULL },
+         { "none",      NULL },
+         { NULL, NULL },
       },
       "standard",
    },
@@ -116,12 +130,12 @@ struct retro_core_option_definition option_defs_us[] = {
       "Pad 3 Type",
       "Pad type for player 3",
       {
-         { "standard", NULL },
-         { "analog", NULL },
+         { "standard",  NULL },
+         { "analog",    NULL },
          { "dualshock", NULL },
-         { "negcon", NULL },
-         { "none", NULL },
-         { NULL, NULL},
+         { "negcon",    NULL },
+         { "none",      NULL },
+         { NULL, NULL },
       },
       "none",
    },
@@ -130,12 +144,12 @@ struct retro_core_option_definition option_defs_us[] = {
       "Pad 4 Type",
       "Pad type for player 4",
       {
-         { "standard", NULL },
-         { "analog", NULL },
+         { "standard",  NULL },
+         { "analog",    NULL },
          { "dualshock", NULL },
-         { "negcon", NULL },
-         { "none", NULL },
-         { NULL, NULL},
+         { "negcon",    NULL },
+         { "none",      NULL },
+         { NULL, NULL },
       },
       "none",
    },
@@ -144,12 +158,12 @@ struct retro_core_option_definition option_defs_us[] = {
       "Pad 5 Type",
       "Pad type for player 5",
       {
-         { "standard", NULL },
-         { "analog",  NULL },
+         { "standard",  NULL },
+         { "analog",    NULL },
          { "dualshock", NULL },
-         { "negcon", NULL },
-         { "none", NULL },
-         { NULL, NULL},
+         { "negcon",    NULL },
+         { "none",      NULL },
+         { NULL, NULL },
       },
       "none",
    },{
@@ -157,12 +171,12 @@ struct retro_core_option_definition option_defs_us[] = {
       "Pad 6 Type",
       "Pad type for player 6",
       {
-         { "standard", NULL },
-         { "analog",  NULL },
+         { "standard",  NULL },
+         { "analog",    NULL },
          { "dualshock", NULL },
-         { "negcon", NULL },
-         { "none", NULL },
-         { NULL, NULL},
+         { "negcon",    NULL },
+         { "none",      NULL },
+         { NULL, NULL },
       },
       "none",
    },{
@@ -170,12 +184,12 @@ struct retro_core_option_definition option_defs_us[] = {
       "Pad 7 Type",
       "Pad type for player 7",
       {
-         { "standard", NULL },
-         { "analog",  NULL },
+         { "standard",  NULL },
+         { "analog",    NULL },
          { "dualshock", NULL },
-         { "negcon", NULL },
-         { "none", NULL },
-         { NULL, NULL},
+         { "negcon",    NULL },
+         { "none",      NULL },
+         { NULL, NULL },
       },
       "none",
    },{
@@ -183,12 +197,12 @@ struct retro_core_option_definition option_defs_us[] = {
       "Pad 8 Type",
       "Pad type for player 8",
       {
-         { "standard", NULL },
-         { "analog",  NULL },
+         { "standard",  NULL },
+         { "analog",    NULL },
          { "dualshock", NULL },
-         { "negcon", NULL },
-         { "none", NULL },
-         { NULL, NULL},
+         { "negcon",    NULL },
+         { "none",      NULL },
+         { NULL, NULL },
       },
       "none",
    },
@@ -197,28 +211,28 @@ struct retro_core_option_definition option_defs_us[] = {
       "Multitap 1",
       "Enables/Disables multitap on port 1, allowing upto 5 players in games that permit it.",
       {
-         { "auto", NULL },
+         { "auto",     NULL },
          { "disabled", NULL },
          { "enabled",  NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
       "auto",
    },
    {
       "pcsx_rearmed_multitap2",
       "Multitap 2",
-      "Enables/Disables multitap on port 2, allowing upto 8 players in games that permit it. Multitap 1 has to be enabled for this to work.",
+      "Enables/Disables multitap on port 2, allowing up to 8 players in games that permit it. Multitap 1 has to be enabled for this to work.",
       {
-         { "auto", NULL },
-         { "disabled",  NULL },
-         { "enabled",   NULL },
-         { NULL, NULL},
+         { "auto",     NULL },
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL },
       },
       "auto",
    },
    {
       "pcsx_rearmed_negcon_deadzone",
-      "NegCon Twist Deadzone (percent)",
+      "NegCon Twist Deadzone (Percent)",
       "Sets the deadzone of the RetroPad left analog stick when simulating the 'twist' action of emulated neGcon Controllers. Used to eliminate drift/unwanted input.",
       {
          { "0",  NULL },
@@ -228,7 +242,7 @@ struct retro_core_option_definition option_defs_us[] = {
          { "20", NULL },
          { "25", NULL },
          { "30", NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
       "0",
    },
@@ -237,21 +251,21 @@ struct retro_core_option_definition option_defs_us[] = {
       "NegCon Twist Response",
       "Specifies the analog response when using a RetroPad left analog stick to simulate the 'twist' action of emulated neGcon Controllers.",
       {
-         { "linear", NULL },
+         { "linear",    NULL },
          { "quadratic", NULL },
-         { "cubic", NULL },
-         { NULL, NULL},
+         { "cubic",     NULL },
+         { NULL, NULL },
       },
       "linear",
    },
    {
       "pcsx_rearmed_vibration",
       "Enable Vibration",
-      "Enables Vibration feedback for controllers that supports vibration features.",
+      "Enables vibration feedback for controllers that supports vibration features.",
       {
          { "disabled", NULL },
          { "enabled",  NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
       "enabled",
    },
@@ -262,136 +276,148 @@ struct retro_core_option_definition option_defs_us[] = {
       {
          { "disabled", NULL },
          { "enabled",  NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
+#ifdef HAVE_LIBNX
+         "disabled",
+#else
       "enabled",
+#endif
    },
 
 #ifndef DRC_DISABLE
    {
       "pcsx_rearmed_drc",
-      "Dynamic recompiler",
-      "Enables core to use dynamic recompiler or interpreter (slower) cpu instructions.",
+      "Dynamic Recompiler",
+      "Enables core to use dynamic recompiler or interpreter (slower) CPU instructions.",
       {
          { "disabled", NULL },
          { "enabled",  NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
       "enabled",
    },
    {
       "pcsx_rearmed_psxclock",
-      "PSX CPU clock",
-      PSX_CLOCK_LABEL,
+      "PSX CPU Clock",
+#ifdef HAVE_PRE_ARMV7
+      "Overclock or underclock the PSX clock. Default is 50",
+#else
+      "Overclock or underclock the PSX clock. Default is 57",
+#endif
       {
-         { "30", NULL },
-         { "31", NULL },
-         { "32", NULL },
-         { "33", NULL },
-         { "34", NULL },
-         { "35", NULL },
-         { "36", NULL },
-         { "37", NULL },
-         { "38", NULL },
-         { "39", NULL },
-         { "40", NULL },
-         { "41", NULL },
-         { "42", NULL },
-         { "43", NULL },
-         { "44", NULL },
-         { "45", NULL },
-         { "46", NULL },
-         { "47", NULL },
-         { "48", NULL },
-         { "49", NULL },
-         { "50", NULL },
-         { "51", NULL },
-         { "52", NULL },
-         { "53", NULL },
-         { "54", NULL },
-         { "55", NULL },
-         { "56", NULL },
-         { "57", NULL },
-         { "58", NULL },
-         { "59", NULL },
-         { "60", NULL },
-         { "61", NULL },
-         { "62", NULL },
-         { "63", NULL },
-         { "64", NULL },
-         { "65", NULL },
-         { "66", NULL },
-         { "67", NULL },
-         { "68", NULL },
-         { "69", NULL },
-         { "70", NULL },
-         { "71", NULL },
-         { "72", NULL },
-         { "73", NULL },
-         { "74", NULL },
-         { "75", NULL },
-         { "76", NULL },
-         { "77", NULL },
-         { "78", NULL },
-         { "79", NULL },
-         { "80", NULL },
-         { "81", NULL },
-         { "82", NULL },
-         { "83", NULL },
-         { "84", NULL },
-         { "85", NULL },
-         { "86", NULL },
-         { "87", NULL },
-         { "88", NULL },
-         { "89", NULL },
-         { "90", NULL },
-         { "91", NULL },
-         { "92", NULL },
-         { "93", NULL },
-         { "94", NULL },
-         { "95", NULL },
-         { "96", NULL },
-         { "97", NULL },
-         { "98", NULL },
-         { "99", NULL },
+         { "30",  NULL },
+         { "31",  NULL },
+         { "32",  NULL },
+         { "33",  NULL },
+         { "34",  NULL },
+         { "35",  NULL },
+         { "36",  NULL },
+         { "37",  NULL },
+         { "38",  NULL },
+         { "39",  NULL },
+         { "40",  NULL },
+         { "41",  NULL },
+         { "42",  NULL },
+         { "43",  NULL },
+         { "44",  NULL },
+         { "45",  NULL },
+         { "46",  NULL },
+         { "47",  NULL },
+         { "48",  NULL },
+         { "49",  NULL },
+         { "50",  NULL },
+         { "51",  NULL },
+         { "52",  NULL },
+         { "53",  NULL },
+         { "54",  NULL },
+         { "55",  NULL },
+         { "56",  NULL },
+         { "57",  NULL },
+         { "58",  NULL },
+         { "59",  NULL },
+         { "60",  NULL },
+         { "61",  NULL },
+         { "62",  NULL },
+         { "63",  NULL },
+         { "64",  NULL },
+         { "65",  NULL },
+         { "66",  NULL },
+         { "67",  NULL },
+         { "68",  NULL },
+         { "69",  NULL },
+         { "70",  NULL },
+         { "71",  NULL },
+         { "72",  NULL },
+         { "73",  NULL },
+         { "74",  NULL },
+         { "75",  NULL },
+         { "76",  NULL },
+         { "77",  NULL },
+         { "78",  NULL },
+         { "79",  NULL },
+         { "80",  NULL },
+         { "81",  NULL },
+         { "82",  NULL },
+         { "83",  NULL },
+         { "84",  NULL },
+         { "85",  NULL },
+         { "86",  NULL },
+         { "87",  NULL },
+         { "88",  NULL },
+         { "89",  NULL },
+         { "90",  NULL },
+         { "91",  NULL },
+         { "92",  NULL },
+         { "93",  NULL },
+         { "94",  NULL },
+         { "95",  NULL },
+         { "96",  NULL },
+         { "97",  NULL },
+         { "98",  NULL },
+         { "99",  NULL },
          { "100", NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
-      PSX_CLOCK_DEFAULT,
+#ifdef HAVE_PRE_ARMV7
+      "50",
+#else
+      "57",
+#endif
    },
 #endif /* DRC_DISABLE */
 
 #ifdef __ARM_NEON__
    {
       "pcsx_rearmed_neon_interlace_enable",
-      "Enable interlacing mode(s)",
+      "Enable Interlacing Mode",
       "Enables fake scanlines effect.",
       {
          { "disabled", NULL },
          { "enabled",  NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
       "disabled",
    },
    {
       "pcsx_rearmed_neon_enhancement_enable",
-      "Enhanced resolution (slow)",
-      "Renders in double resolution at the cost of lower performance",
+      "Enhanced Resolution (Slow)",
+      "Renders in double resolution at the cost of lower performance.",
       {
          { "disabled", NULL },
          { "enabled",  NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
       "disabled",
    },
    {
       "pcsx_rearmed_neon_enhancement_no_main",
-      "Enhanced resolution speed hack",
+      "Enhanced Resolution (Speed Hack)",
       "Speed hack for Enhanced resolution option (glitches some games).",
       {
          { "disabled", NULL },
          { "enabled",  NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
       "disabled",
    },
@@ -399,12 +425,12 @@ struct retro_core_option_definition option_defs_us[] = {
 
    {
       "pcsx_rearmed_duping_enable",
-      "Frame duping",
+      "Frame Duping",
       "A speedup, redraws/reuses the last frame if there was no new data.",
       {
          { "disabled", NULL },
          { "enabled",  NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
       "enabled",
    },
@@ -412,6 +438,134 @@ struct retro_core_option_definition option_defs_us[] = {
       "pcsx_rearmed_display_internal_fps",
       "Display Internal FPS",
       "Shows an on-screen frames per second counter when enabled.",
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL },
+      },
+      "disabled",
+   },
+
+   /* GPU PEOPS OPTIONS */
+#ifdef GPU_PEOPS
+   {
+      "pcsx_rearmed_show_gpu_peops_settings",
+      "Advanced GPU P.E.Op.S. Settings",
+      "Shows or hides advanced GPU plugin settings. NOTE: Quick Menu must be toggled for this setting to take effect.",
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL },
+      },
+      "disabled",
+   },
+   {
+      "pcsx_rearmed_gpu_peops_odd_even_bit",
+      "(GPU) Odd/Even Bit Hack",
+      "Needed for Chrono Cross.",
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL },
+      },
+      "disabled",
+   },
+   {
+      "pcsx_rearmed_gpu_peops_expand_screen_width",
+      "(GPU) Expand Screen Width",
+      "Capcom fighting games",
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL },
+      },
+      "disabled",
+   },
+   {
+      "pcsx_rearmed_gpu_peops_ignore_brightness",
+      "(GPU) Ignore Brightness Color",
+      "Black screens in Lunar Silver Star Story games",
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL },
+      },
+      "disabled",
+   },
+   {
+      "pcsx_rearmed_gpu_peops_disable_coord_check",
+      "(GPU) Disable Coordinate Check",
+      "Compatibility mode",
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL },
+      },
+      "disabled",
+   },
+   {
+      "pcsx_rearmed_gpu_peops_lazy_screen_update",
+      "(GPU) Lazy Screen Update",
+      "Pandemonium 2",
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL },
+      },
+      "disabled",
+   },
+   {
+      "pcsx_rearmed_gpu_peops_old_frame_skip",
+      "(GPU) Old Frame Skipping",
+      "Skip every second frame",
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL },
+      },
+      "enabled",
+   },
+   {
+      "pcsx_rearmed_gpu_peops_repeated_triangles",
+      "(GPU) Repeated Flat Tex Triangles",
+      "Needed by Star Wars: Dark Forces",
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL },
+      },
+      "disabled",
+   },
+   {
+      "pcsx_rearmed_gpu_peops_quads_with_triangles",
+      "(GPU) Draw Quads with Triangles",
+      "Better g-colors, worse textures",
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL },
+      },
+      "disabled",
+   },
+   {
+      "pcsx_rearmed_gpu_peops_fake_busy_state",
+      "(GPU) Fake 'Gpu Busy' States",
+      "Toggle busy flags after drawing",
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL },
+      },
+      "disabled",
+   },
+#endif
+
+    /* GPU UNAI Advanced Options */
+#ifdef GPU_UNAI
+   {
+      "pcsx_rearmed_show_gpu_unai_settings",
+      "Advance GPU UNAI/PCSX4All Settings",
+      "Shows or hides advanced gpu settings. A core restart might be needed for settings to take effect. NOTE: Quick Menu must be toggled for this setting to take effect.",
       {
          { "disabled", NULL },
          { "enabled",  NULL },
@@ -419,14 +573,71 @@ struct retro_core_option_definition option_defs_us[] = {
       },
       "disabled",
    },
+   {
+      "pcsx_rearmed_gpu_unai_blending",
+      "(GPU) Enable Blending",
+      NULL,
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL},
+      },
+      "enabled",
+   },
+   {
+      "pcsx_rearmed_gpu_unai_lighting",
+      "(GPU) Enable Lighting",
+      NULL,
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL},
+      },
+      "enabled",
+   },
+   {
+      "pcsx_rearmed_gpu_unai_fast_lighting",
+      "(GPU) Enable Fast Lighting",
+      NULL,
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL},
+      },
+      "enabled",
+   },
+   {
+      "pcsx_rearmed_gpu_unai_ilace_force",
+      "(GPU) Enable Forced Interlace",
+      NULL,
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL},
+      },
+      "disabled",
+   },
+   {
+      "pcsx_rearmed_gpu_unai_pixel_skip",
+      "(GPU) Enable Pixel Skip",
+      NULL,
+      {
+         { "disabled", NULL },
+         { "enabled",  NULL },
+         { NULL, NULL},
+      },
+      "disabled",
+   },
+#endif /* GPU UNAI Advanced Settings */
+
    {
       "pcsx_rearmed_show_bios_bootlogo",
       "Show Bios Bootlogo",
-      "When enabled, shows the playstation logo when starting or resetting. (Breaks some games).",
+      "When enabled, shows the PlayStation logo when starting or resetting. (Breaks some games).",
       {
          { "disabled", NULL },
          { "enabled",  NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
       "disabled",
    },
@@ -437,20 +648,20 @@ struct retro_core_option_definition option_defs_us[] = {
       {
          { "disabled", NULL },
          { "enabled",  NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
       "enabled",
    },
    {
       "pcsx_rearmed_spu_interpolation",
-      "Sound: Interpolation",
+      "Sound Interpolation",
       NULL,
       {
-         { "simple", NULL },
-         { "gaussian", NULL },
-         { "cubic", NULL },
-         { "off", NULL },
-         { NULL, NULL},
+         { "simple",   "Simple" },
+         { "gaussian", "Gaussian" },
+         { "cubic",    "Cubic" },
+         { "off",      "disabled" },
+         { NULL, NULL },
       },
       "simple",
    },
@@ -461,7 +672,7 @@ struct retro_core_option_definition option_defs_us[] = {
       {
          { "disabled", NULL },
          { "enabled",  NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
       "disabled",
    },
@@ -472,7 +683,7 @@ struct retro_core_option_definition option_defs_us[] = {
       {
          { "disabled", NULL },
          { "enabled",  NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
       "disabled",
    },
@@ -483,7 +694,7 @@ struct retro_core_option_definition option_defs_us[] = {
       {
          { "disabled", NULL },
          { "enabled",  NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
       "disabled",
    },
@@ -496,7 +707,7 @@ struct retro_core_option_definition option_defs_us[] = {
       {
          { "disabled", NULL },
          { "enabled",  NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
       "enabled",
    },
@@ -507,7 +718,7 @@ struct retro_core_option_definition option_defs_us[] = {
       {
          { "disabled", NULL },
          { "enabled",  NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
       "enabled",
    },
@@ -520,7 +731,7 @@ struct retro_core_option_definition option_defs_us[] = {
       {
          { "disabled", NULL },
          { "enabled",  NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
       "disabled",
    },
@@ -531,7 +742,7 @@ struct retro_core_option_definition option_defs_us[] = {
       {
          { "disabled", NULL },
          { "enabled",  NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
       "disabled",
    },
@@ -542,57 +753,22 @@ struct retro_core_option_definition option_defs_us[] = {
       {
          { "disabled", NULL },
          { "enabled",  NULL },
-         { NULL, NULL},
+         { NULL, NULL },
       },
       "disabled",
    },
 #endif /* DRC_DISABLE */
 
-   { NULL, NULL, NULL, { NULL, NULL }, NULL },
+   { NULL, NULL, NULL, {{0}}, NULL },
 };
 
-/* RETRO_LANGUAGE_JAPANESE */
-
-/* RETRO_LANGUAGE_FRENCH */
-
-/* RETRO_LANGUAGE_SPANISH */
-
-/* RETRO_LANGUAGE_GERMAN */
-
-/* RETRO_LANGUAGE_ITALIAN */
-
-/* RETRO_LANGUAGE_DUTCH */
-
-/* RETRO_LANGUAGE_PORTUGUESE_BRAZIL */
-
-/* RETRO_LANGUAGE_PORTUGUESE_PORTUGAL */
-
-/* RETRO_LANGUAGE_RUSSIAN */
-
-/* RETRO_LANGUAGE_KOREAN */
-
-/* RETRO_LANGUAGE_CHINESE_TRADITIONAL */
-
-/* RETRO_LANGUAGE_CHINESE_SIMPLIFIED */
-
-/* RETRO_LANGUAGE_ESPERANTO */
-
-/* RETRO_LANGUAGE_POLISH */
-
-/* RETRO_LANGUAGE_VIETNAMESE */
-
-/* RETRO_LANGUAGE_ARABIC */
-
-/* RETRO_LANGUAGE_GREEK */
-
-/* RETRO_LANGUAGE_TURKISH */
-
 /*
  ********************************
  * Language Mapping
  ********************************
 */
 
+#ifndef HAVE_NO_LANGEXTRA
 struct retro_core_option_definition *option_defs_intl[RETRO_LANGUAGE_LAST] = {
    option_defs_us, /* RETRO_LANGUAGE_ENGLISH */
    NULL,           /* RETRO_LANGUAGE_JAPANESE */
@@ -612,8 +788,9 @@ struct retro_core_option_definition *option_defs_intl[RETRO_LANGUAGE_LAST] = {
    NULL,           /* RETRO_LANGUAGE_VIETNAMESE */
    NULL,           /* RETRO_LANGUAGE_ARABIC */
    NULL,           /* RETRO_LANGUAGE_GREEK */
-   NULL,           /* RETRO_LANGUAGE_TURKISH */
+   option_defs_tr, /* RETRO_LANGUAGE_TURKISH */
 };
+#endif
 
 /*
  ********************************
@@ -622,7 +799,8 @@ struct retro_core_option_definition *option_defs_intl[RETRO_LANGUAGE_LAST] = {
 */
 
 /* Handles configuration/setting of core options.
- * Should only be called inside retro_set_environment().
+ * Should be called as early as possible - ideally inside
+ * retro_set_environment(), and no later than retro_load_game()
  * > We place the function body in the header to avoid the
  *   necessity of adding more .c files (i.e. want this to
  *   be as painless as possible for core devs)
@@ -635,8 +813,9 @@ static INLINE void libretro_set_core_options(retro_environment_t environ_cb)
    if (!environ_cb)
       return;
 
-   if (environ_cb(RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION, &version) && (version == 1))
+   if (environ_cb(RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION, &version) && (version >= 1))
    {
+#ifndef HAVE_NO_LANGEXTRA
       struct retro_core_options_intl core_options_intl;
       unsigned language = 0;
 
@@ -648,6 +827,9 @@ static INLINE void libretro_set_core_options(retro_environment_t environ_cb)
          core_options_intl.local = option_defs_intl[language];
 
       environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL, &core_options_intl);
+#else
+      environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS, &option_defs_us);
+#endif
    }
    else
    {
@@ -692,7 +874,7 @@ static INLINE void libretro_set_core_options(retro_environment_t environ_cb)
 
          /* Skip options that are irrelevant when using the
           * old style core options interface */
-         if ((strcmp(key, "fceumm_advance_sound_options") == 0))
+         if ((strcmp(key, "pcsx_rearmed_show_gpu_peops_settings") == 0))
             continue;
 
          if (desc)
@@ -717,7 +899,7 @@ static INLINE void libretro_set_core_options(retro_environment_t environ_cb)
             }
 
             /* Build values string */
-            if (num_values > 1)
+            if (num_values > 0)
             {
                size_t j;