Merge branch 'gpu_unai_plugin_update'
authornegativeExponent <negativeExponent@users.noreply.github.com>
Wed, 25 Sep 2019 02:53:17 +0000 (10:53 +0800)
committernegativeExponent <negativeExponent@users.noreply.github.com>
Wed, 25 Sep 2019 03:08:40 +0000 (11:08 +0800)
1  2 
frontend/libretro.c
frontend/libretro_core_options.h
frontend/main.c
maemo/main.c

diff --combined frontend/libretro.c
@@@ -78,6 -78,7 +78,7 @@@ static bool display_internal_fps = fals
  static unsigned frame_count = 0;
  static bool libretro_supports_bitmasks = false;
  static int show_advanced_gpu_peops_settings = -1;
+ static int show_advanced_gpu_unai_settings  = -1;
  
  static unsigned previous_width = 0;
  static unsigned previous_height = 0;
@@@ -134,16 -135,6 +135,16 @@@ static int snd_init(void){return 0;
  static void snd_finish(void){}
  static int snd_busy(void){return 0;}
  
 +#define GPU_PEOPS_ODD_EVEN_BIT         (1 << 0)
 +#define GPU_PEOPS_EXPAND_SCREEN_WIDTH  (1 << 1)
 +#define GPU_PEOPS_IGNORE_BRIGHTNESS    (1 << 2)
 +#define GPU_PEOPS_DISABLE_COORD_CHECK  (1 << 3)
 +#define GPU_PEOPS_LAZY_SCREEN_UPDATE   (1 << 6)
 +#define GPU_PEOPS_OLD_FRAME_SKIP       (1 << 7)
 +#define GPU_PEOPS_REPEATED_TRIANGLES   (1 << 8)
 +#define GPU_PEOPS_QUADS_WITH_TRIANGLES (1 << 9)
 +#define GPU_PEOPS_FAKE_BUSY_STATE      (1 << 10)
 +
  static void init_memcard(char *mcd_data)
  {
        unsigned off = 0;
@@@ -972,11 -963,11 +973,11 @@@ static struct retro_disk_control_callba
  #define PATH_MAX  4096
  #endif
  
 -static char base_dir[PATH_MAX];
 +static char base_dir[1024];
  
  static bool read_m3u(const char *file)
  {
 -      char line[PATH_MAX];
 +      char line[1024];
        char name[PATH_MAX];
        FILE *f = fopen(file, "r");
        if (!f)
@@@ -1333,7 -1324,7 +1334,7 @@@ size_t retro_get_memory_size(unsigned i
        if (id == RETRO_MEMORY_SAVE_RAM)
                return MCD_SIZE;
        else if (id == RETRO_MEMORY_SYSTEM_RAM)
 -              return 0x210000;
 +              return 0x200000;
        else
                return 0;
  }
@@@ -1433,6 -1424,7 +1434,7 @@@ static void update_variables(bool in_fl
        if (strcmp(var.value, "disabled") == 0) {
           pl_rearmed_cbs.gpu_peops.iUseDither = 0;
           pl_rearmed_cbs.gpu_peopsgl.bDrawDither = 0;
+          pl_rearmed_cbs.gpu_unai.dithering = 0;
  #ifdef __ARM_NEON__
           pl_rearmed_cbs.gpu_neon.allow_dithering = 0;
  #endif
        else if (strcmp(var.value, "enabled") == 0) {
           pl_rearmed_cbs.gpu_peops.iUseDither = 1;
           pl_rearmed_cbs.gpu_peopsgl.bDrawDither = 1;
+          pl_rearmed_cbs.gpu_unai.dithering = 1;
  #ifdef __ARM_NEON__
           pl_rearmed_cbs.gpu_neon.allow_dithering = 1;
  #endif
  
  #ifdef GPU_PEOPS
     var.value = "NULL";
 -   var.key = "pcsx_rearmed_gpu_peops_fix_0";
 +   var.key = "pcsx_rearmed_gpu_peops_odd_even_bit";
  
     if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
     {
        if (strcmp(var.value, "enabled") == 0)
 -         gpu_peops_fix |= (1 << 0);
 +         gpu_peops_fix |= GPU_PEOPS_ODD_EVEN_BIT;
     }
  
     var.value = "NULL";
 -   var.key = "pcsx_rearmed_gpu_peops_fix_1";
 +   var.key = "pcsx_rearmed_gpu_peops_expand_screen_width";
  
     if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
     {
        if (strcmp(var.value, "enabled") == 0)
 -         gpu_peops_fix |= (1 << 1);
 +         gpu_peops_fix |= GPU_PEOPS_EXPAND_SCREEN_WIDTH;
     }
  
     var.value = "NULL";
 -   var.key = "pcsx_rearmed_gpu_peops_fix_2";
 +   var.key = "pcsx_rearmed_gpu_peops_ignore_brightness";
  
     if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
     {
        if (strcmp(var.value, "enabled") == 0)
 -         gpu_peops_fix |= (1 << 2);
 +         gpu_peops_fix |= GPU_PEOPS_IGNORE_BRIGHTNESS;
     }
  
     var.value = "NULL";
 -   var.key = "pcsx_rearmed_gpu_peops_fix_3";
 +   var.key = "pcsx_rearmed_gpu_peops_disable_coord_check";
  
     if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
     {
        if (strcmp(var.value, "enabled") == 0)
 -         gpu_peops_fix |= (1 << 3);
 +         gpu_peops_fix |= GPU_PEOPS_DISABLE_COORD_CHECK;
     }
  
     var.value = "NULL";
 -   var.key = "pcsx_rearmed_gpu_peops_fix_6";
 +   var.key = "pcsx_rearmed_gpu_peops_lazy_screen_update";
  
     if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
     {
        if (strcmp(var.value, "enabled") == 0)
 -         gpu_peops_fix |= (1 << 6);
 +         gpu_peops_fix |= GPU_PEOPS_LAZY_SCREEN_UPDATE;
     }
  
     var.value = "NULL";
 -   var.key = "pcsx_rearmed_gpu_peops_fix_7";
 +   var.key = "pcsx_rearmed_gpu_peops_old_frame_skip";
  
     if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
     {
        if (strcmp(var.value, "enabled") == 0)
 -         gpu_peops_fix |= (1 << 7);
 +         gpu_peops_fix |= GPU_PEOPS_OLD_FRAME_SKIP;
     }
  
     var.value = "NULL";
 -   var.key = "pcsx_rearmed_gpu_peops_fix_8";
 +   var.key = "pcsx_rearmed_gpu_peops_repeated_triangles";
  
     if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
     {
        if (strcmp(var.value, "enabled") == 0)
 -         gpu_peops_fix |= (1 << 8);
 +         gpu_peops_fix |= GPU_PEOPS_REPEATED_TRIANGLES;
     }
  
     var.value = "NULL";
 -   var.key = "pcsx_rearmed_gpu_peops_fix_9";
 +   var.key = "pcsx_rearmed_gpu_peops_quads_with_triangles";
  
     if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
     {
        if (strcmp(var.value, "enabled") == 0)
 -         gpu_peops_fix |= (1 << 9);
 +         gpu_peops_fix |= GPU_PEOPS_QUADS_WITH_TRIANGLES;
     }
  
     var.value = "NULL";
 -   var.key = "pcsx_rearmed_gpu_peops_fix_10";
 +   var.key = "pcsx_rearmed_gpu_peops_fake_busy_state";
  
     if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
     {
        if (strcmp(var.value, "enabled") == 0)
 -         gpu_peops_fix |= (1 << 10);
 +         gpu_peops_fix |= GPU_PEOPS_FAKE_BUSY_STATE;
     }
  
     if (pl_rearmed_cbs.gpu_peops.dwActFixes != gpu_peops_fix)
        pl_rearmed_cbs.gpu_peops.dwActFixes = gpu_peops_fix;
  
  
 -    /* Show/hide core options */
 +   /* Show/hide core options */
  
     var.key = "pcsx_rearmed_show_gpu_peops_settings";
     var.value = NULL;
        {
           unsigned i;
           struct retro_core_option_display option_display;
 -         char gpu_peops_option[9][32] = {
 -            "pcsx_rearmed_gpu_peops_fix_0",
 -            "pcsx_rearmed_gpu_peops_fix_1",
 -            "pcsx_rearmed_gpu_peops_fix_2",
 -            "pcsx_rearmed_gpu_peops_fix_3",
 -            "pcsx_rearmed_gpu_peops_fix_6",
 -            "pcsx_rearmed_gpu_peops_fix_7",
 -            "pcsx_rearmed_gpu_peops_fix_8",
 -            "pcsx_rearmed_gpu_peops_fix_9",
 -            "pcsx_rearmed_gpu_peops_fix_10",
 +         char gpu_peops_option[9][45] = {
 +            "pcsx_rearmed_gpu_peops_odd_even_bit",
 +            "pcsx_rearmed_gpu_peops_expand_screen_width",
 +            "pcsx_rearmed_gpu_peops_ignore_brightness",
 +            "pcsx_rearmed_gpu_peops_disable_coord_check",
 +            "pcsx_rearmed_gpu_peops_lazy_screen_update",
 +            "pcsx_rearmed_gpu_peops_old_frame_skip",
 +            "pcsx_rearmed_gpu_peops_repeated_triangles",
 +            "pcsx_rearmed_gpu_peops_quads_with_triangles",
 +            "pcsx_rearmed_gpu_peops_fake_busy_state",
           };
  
           option_display.visible = show_advanced_gpu_peops_settings;
     }
  #endif
  
+ #ifdef GPU_UNAI
+    var.key = "pcsx_rearmed_gpu_unai_ilace_force";
+    var.value = NULL;
+    if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value)
+    {
+       if (strcmp(var.value, "disabled") == 0)
+          pl_rearmed_cbs.gpu_unai.ilace_force = 0;
+       else if (strcmp(var.value, "enabled") == 0)
+          pl_rearmed_cbs.gpu_unai.ilace_force = 1;
+    }
+    var.key = "pcsx_rearmed_gpu_unai_pixel_skip";
+    var.value = NULL;
+    if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value)
+    {
+       if (strcmp(var.value, "disabled") == 0)
+          pl_rearmed_cbs.gpu_unai.pixel_skip = 0;
+       else if (strcmp(var.value, "enabled") == 0)
+          pl_rearmed_cbs.gpu_unai.pixel_skip = 1;
+    }
+    var.key = "pcsx_rearmed_gpu_unai_lighting";
+    var.value = NULL;
+    if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value)
+    {
+       if (strcmp(var.value, "disabled") == 0)
+          pl_rearmed_cbs.gpu_unai.lighting = 0;
+       else if (strcmp(var.value, "enabled") == 0)
+          pl_rearmed_cbs.gpu_unai.lighting = 1;
+    }
+    var.key = "pcsx_rearmed_gpu_unai_fast_lighting";
+    var.value = NULL;
+    if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value)
+    {
+       if (strcmp(var.value, "disabled") == 0)
+          pl_rearmed_cbs.gpu_unai.fast_lighting = 0;
+       else if (strcmp(var.value, "enabled") == 0)
+          pl_rearmed_cbs.gpu_unai.fast_lighting = 1;
+    }
+    var.key = "pcsx_rearmed_gpu_unai_blending";
+    var.value = NULL;
+    if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value)
+    {
+       if (strcmp(var.value, "disabled") == 0)
+          pl_rearmed_cbs.gpu_unai.blending = 0;
+       else if (strcmp(var.value, "enabled") == 0)
+          pl_rearmed_cbs.gpu_unai.blending = 1;
+    }
+    var.key = "pcsx_rearmed_show_gpu_unai_settings";
+    var.value = NULL;
+    if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+    {
+       int show_advanced_gpu_unai_settings_prev = show_advanced_gpu_unai_settings;
+       show_advanced_gpu_unai_settings = 1;
+       if (strcmp(var.value, "disabled") == 0)
+          show_advanced_gpu_unai_settings = 0;
+       if (show_advanced_gpu_unai_settings != show_advanced_gpu_unai_settings_prev)
+       {
+          unsigned i;
+          struct retro_core_option_display option_display;
+          char gpu_unai_option[5][40] = {
+             "pcsx_rearmed_gpu_unai_blending",
+             "pcsx_rearmed_gpu_unai_lighting",
+             "pcsx_rearmed_gpu_unai_fast_lighting",
+             "pcsx_rearmed_gpu_unai_ilace_force",
+             "pcsx_rearmed_gpu_unai_pixel_skip",
+          };
+          option_display.visible = show_advanced_gpu_unai_settings;
+          for (i = 0; i < 5; i++)
+          {
+             option_display.key = gpu_unai_option[i];
+             environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY, &option_display);
+          }
+       }
+    }
+ #endif // GPU_UNAI
     if (in_flight) {
        // inform core things about possible config changes
        plugin_call_rearmed_cbs();
@@@ -2078,7 -2161,7 +2171,7 @@@ static bool find_any_bios(const char *d
                return false;
  
        while ((ent = readdir(dir))) {
 -              if (strncasecmp(ent->d_name, "scph", 4) != 0)
 +              if ((strncasecmp(ent->d_name, "scph", 4) != 0) && (strncasecmp(ent->d_name, "psx", 3) != 0))
                        continue;
  
                snprintf(path, path_size, "%s%c%s", dirpath, SLASH, ent->d_name);
@@@ -2140,11 -2223,10 +2233,11 @@@ static int init_memcards(void
  static void loadPSXBios(void)
  {
        const char *dir;
 -      char path[256];
 +      char path[PATH_MAX];
        unsigned useHLE = 0;
  
        const char *bios[] = {
 +              "PSXONPSP660", "psxonpsp660",
                "SCPH101", "scph101",
                "SCPH5501", "scph5501",
                "SCPH7001", "scph7001",
@@@ -2258,7 -2340,7 +2351,7 @@@ void retro_init(void
        cycle_multiplier = 200;
  #endif
        pl_rearmed_cbs.gpu_peops.iUseDither = 1;
 -   pl_rearmed_cbs.gpu_peops.dwActFixes = 1 << 7;
 +      pl_rearmed_cbs.gpu_peops.dwActFixes = GPU_PEOPS_OLD_FRAME_SKIP;
        spu_config.iUseFixedUpdates = 1;
  
        SaveFuncs.open = save_open;
  
  void retro_deinit(void)
  {
 +      ClosePlugins();
        SysClose();
  #ifdef _3DS
     linearFree(vout_buf);
@@@ -7,28 -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
   *   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",
@@@ -59,7 -45,7 +59,7 @@@
           { "1", NULL },
           { "2", NULL },
           { "3", NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "0",
     },
@@@ -69,8 -55,8 +69,8 @@@
        "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",
     },
@@@ -81,8 -67,8 +81,8 @@@
        {
           { "auto", "auto" },
           { "NTSC", "ntsc" },
 -         { "PAL", "pal" },
 -         { NULL, NULL},
 +         { "PAL",  "pal" },
 +         { NULL, NULL },
        },
        "auto",
     },
        "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",
     },
        "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",
     },
        "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",
     },
        "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",
     },
        "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",
     },{
        "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",
     },{
        "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",
     },{
        "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",
     },
        "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",
     },
        "Multitap 2",
        "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",
     },
           { "20", NULL },
           { "25", NULL },
           { "30", NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "0",
     },
        "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",
     },
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "enabled",
     },
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "enabled",
     },
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "enabled",
     },
     {
        "pcsx_rearmed_psxclock",
        "PSX CPU Clock",
 -      PSX_CLOCK_LABEL,
 +#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 */
  
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "disabled",
     },
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "disabled",
     },
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "disabled",
     },
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "enabled",
     },
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "disabled",
     },
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "disabled",
     },
     {
 -      "pcsx_rearmed_gpu_peops_fix_0",
 +      "pcsx_rearmed_gpu_peops_odd_even_bit",
        "(GPU) Odd/Even Bit Hack",
        "Needed for Chrono Cross.",
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "disabled",
     },
     {
 -      "pcsx_rearmed_gpu_peops_fix_1",
 +      "pcsx_rearmed_gpu_peops_expand_screen_width",
        "(GPU) Expand Screen Width",
        "Capcom fighting games",
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "disabled",
     },
     {
 -      "pcsx_rearmed_gpu_peops_fix_2",
 +      "pcsx_rearmed_gpu_peops_ignore_brightness",
        "(GPU) Ignore Brightness Color",
        "Black screens in Lunar Silver Star Story games",
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "disabled",
     },
     {
 -      "pcsx_rearmed_gpu_peops_fix_3",
 +      "pcsx_rearmed_gpu_peops_disable_coord_check",
        "(GPU) Disable Coordinate Check",
        "Compatibility mode",
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "disabled",
     },
     {
 -      "pcsx_rearmed_gpu_peops_fix_6",
 +      "pcsx_rearmed_gpu_peops_lazy_screen_update",
        "(GPU) Lazy Screen Update",
        "Pandemonium 2",
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "disabled",
     },
     {
 -      "pcsx_rearmed_gpu_peops_fix_7",
 +      "pcsx_rearmed_gpu_peops_old_frame_skip",
        "(GPU) Old Frame Skipping",
        "Skip every second frame",
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "enabled",
     },
     {
 -      "pcsx_rearmed_gpu_peops_fix_8",
 +      "pcsx_rearmed_gpu_peops_repeated_triangles",
        "(GPU) Repeated Flat Tex Triangles",
        "Needed by Star Wars: Dark Forces",
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "disabled",
     },
     {
 -      "pcsx_rearmed_gpu_peops_fix_9",
 +      "pcsx_rearmed_gpu_peops_quads_with_triangles",
        "(GPU) Draw Quads with Triangles",
        "Better g-colors, worse textures",
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "disabled",
     },
     {
 -      "pcsx_rearmed_gpu_peops_fix_10",
 +      "pcsx_rearmed_gpu_peops_fake_busy_state",
        "(GPU) Fake 'Gpu Busy' States",
        "Toggle busy flags after drawing",
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, 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 },
+          { NULL, NULL},
+       },
+       "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",
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "disabled",
     },
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "enabled",
     },
        "Sound Interpolation",
        NULL,
        {
 -         { "simple", NULL },
 -         { "gaussian", NULL },
 -         { "cubic", NULL },
 -         { "off", NULL },
 -         { NULL, NULL},
 +         { "simple",   "Simple" },
 +         { "gaussian", "Gaussian" },
 +         { "cubic",    "Cubic" },
 +         { "off",      "disabled" },
 +         { NULL, NULL },
        },
        "simple",
     },
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "disabled",
     },
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "disabled",
     },
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "disabled",
     },
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "enabled",
     },
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "enabled",
     },
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "disabled",
     },
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 +         { NULL, NULL },
        },
        "disabled",
     },
        {
           { "disabled", NULL },
           { "enabled",  NULL },
 -         { NULL, NULL},
 -      },
 -      "disabled",
 -   },
 -#endif /* DRC_DISABLE */
 -
 -   { 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 */
 -
 -struct retro_core_option_definition option_defs_tr[] = {
 -   {
 -      "pcsx_rearmed_frameskip",
 -      "Kare Atlama",
 -      "Görsel pürüzsüzlük pahasına performansı artırmak için ne kadar karenin atlanması gerektiÄŸini seçin.",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_bios",
 -      "BIOS Kullan",
 -      "Gerçek bios dosyasını (varsa) veya Ã¶ykünmüş bios'u (HLE) kullanmanızı saÄŸlar. Daha iyi uyumluluk için resmi bios dosyasını kullanmanız Ã¶nerilir.",
 -      {
 -         { "auto", "otomatik" },
 -         { "HLE", "hle" },
 -         { NULL, NULL},
 -      },
 -      "auto",
 -   },
 -   {
 -      "pcsx_rearmed_region",
 -      "Bölge",
 -      "Sistemin hangi bölgeden olduÄŸunu seçin. NTSC için 60 Hz, PAL için 50 Hz.",
 -      {
 -         { "auto", "otomatik" },
 -         { "NTSC", "ntsc" },
 -         { "PAL", "pal" },
 -         { NULL, NULL},
 -      },
 -      "auto",
 -   },
 -   {
 -      "pcsx_rearmed_memcard2",
 -      "Ä°kinci Bellek Kartını EtkinleÅŸtir (Paylaşılan)",
 -      "2. Hafıza kartı yuvasını etkinleÅŸtirin. Bu hafıza kartı tüm oyunlar arasında paylaşılır.",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_pad1type",
 -      "Kumanda 1 Tipi",
 -      "1. Oyuncu için kontrolör tipi",
 -      {
 -         { "standard", NULL },
 -         { "analog", NULL },
 -         { "dualshock", NULL },
 -         { "negcon", NULL },
 -         { "none", "hiçbiri" },
 -         { NULL, NULL},
 -      },
 -      "standard",
 -   },
 -   {
 -      "pcsx_rearmed_pad2type",
 -      "Kumanda 2 Tipi",
 -      "2. Oyuncu için kontrolör tipi",
 -      {
 -         { "standard", NULL },
 -         { "analog", NULL },
 -         { "dualshock", NULL },
 -         { "negcon", NULL },
 -         { "none", "hiçbiri" },
 -         { NULL, NULL},
 -      },
 -      "standard",
 -   },
 -   {
 -      "pcsx_rearmed_pad3type",
 -      "Kumanda 3 Tipi",
 -      "3. Oyuncu için kontrolör tipi",
 -      {
 -         { "standard", NULL },
 -         { "analog", NULL },
 -         { "dualshock", NULL },
 -         { "negcon", NULL },
 -         { "none", "hiçbiri" },
 -         { NULL, NULL},
 -      },
 -      "none",
 -   },
 -   {
 -      "pcsx_rearmed_pad4type",
 -      "Kumanda 4 Tipi",
 -      "4. Oyuncu için kontrolör tipi",
 -      {
 -         { "standard", NULL },
 -         { "analog", NULL },
 -         { "dualshock", NULL },
 -         { "negcon", NULL },
 -         { "none", "hiçbiri" },
 -         { NULL, NULL},
 -      },
 -      "none",
 -   },
 -   {
 -      "pcsx_rearmed_pad5type",
 -      "Kumanda 5 Tipi",
 -      "5. Oyuncu için kontrolör tipi",
 -      {
 -         { "standard", NULL },
 -         { "analog",  NULL },
 -         { "dualshock", NULL },
 -         { "negcon", NULL },
 -         { "none", "hiçbiri" },
 -         { NULL, NULL},
 -      },
 -      "none",
 -   },{
 -      "pcsx_rearmed_pad6type",
 -      "Kumanda 6 Tipi",
 -      "6. Oyuncu için kontrolör tipi",
 -      {
 -         { "standard", NULL },
 -         { "analog",  NULL },
 -         { "dualshock", NULL },
 -         { "negcon", NULL },
 -         { "none", "hiçbiri" },
 -         { NULL, NULL},
 -      },
 -      "none",
 -   },{
 -      "pcsx_rearmed_pad7type",
 -      "Kumanda 7 Tipi",
 -      "7. Oyuncu için kontrolör tipi",
 -      {
 -         { "standard", NULL },
 -         { "analog",  NULL },
 -         { "dualshock", NULL },
 -         { "negcon", NULL },
 -         { "none", "hiçbiri" },
 -         { NULL, NULL},
 -      },
 -      "none",
 -   },{
 -      "pcsx_rearmed_pad8type",
 -      "Kumanda 8 Tipi",
 -      "8. Oyuncu için kontrolör tipi",
 -      {
 -         { "standard", NULL },
 -         { "analog",  NULL },
 -         { "dualshock", NULL },
 -         { "negcon", NULL },
 -         { "none", "hiçbiri" },
 -         { NULL, NULL},
 -      },
 -      "none",
 -   },
 -   {
 -      "pcsx_rearmed_multitap1",
 -      "Multitap 1",
 -      "BaÄŸlantı noktası 1'deki multitap'ı etkinleÅŸtirir / devre dışı bırakır ve izin veren oyunlarda 5 oyuncuya kadar izin verir.",
 -      {
 -         { "auto", "otomatik" },
 -         { "disabled", NULL },
 -         { "enabled",  NULL },
 -         { NULL, NULL},
 -      },
 -      "auto",
 -   },
 -   {
 -      "pcsx_rearmed_multitap2",
 -      "Multitap 2",
 -      "BaÄŸlantı noktası 2'deki multitap'ı etkinleÅŸtirir/devre dışı bırakır ve izin veren oyunlarda 8 oyuncuya kadar izin verir. Bunun Ã§alışması için Multitap 1'in etkinleÅŸtirilmesi gerekir.",
 -      {
 -         { "auto", "otomatik" },
 -         { "disabled",  NULL },
 -         { "enabled",   NULL },
 -         { NULL, NULL},
 -      },
 -      "auto",
 -   },
 -   {
 -      "pcsx_rearmed_negcon_deadzone",
 -      "NegCon Twist Deadzone (Yüzdelik)",
 -      "Öykünülmüş neGcon kontrolörünün 'büküm' eylemini simüle ederken RetroPad sol analog Ã§ubuÄŸunun Ã¶lü bölgesini ayarlar. Sürüklenme/istenmeyen giriÅŸi ortadan kaldırmak için kullanılır.",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_negcon_response",
 -      "NegCon Twist Response",
 -      "Öykünülmüş neGcon kontrolörünün 'bükümünü' simule etmek için bir RetroPad sol analog Ã§ubuÄŸu kullanırken analog cevabını belirtir.",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_vibration",
 -      "TitreÅŸimi EtkinleÅŸtir",
 -      "TitreÅŸim Ã¶zelliklerini destekleyen kontrolörler için titreÅŸim geri bildirimini etkinleÅŸtirir.",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_dithering",
 -      "Dithering EtkinleÅŸtir",
 -      "Kapalı ise, PSX'in renk bantlarıyla mücadele etmek için uyguladığı renk taklidi düzenini devre dışı bırakır.",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -
 -#ifndef DRC_DISABLE
 -   {
 -      "pcsx_rearmed_drc",
 -      "Dinamik Yeniden Derleyici",
 -      "ÇekirdeÄŸin dinamik yeniden derleyici veya tercüman(daha yavaÅŸ) CPU talimatlarını kullanmasını saÄŸlar.",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_psxclock",
 -      "PSX CPU Saat Hızı",
 -      PSX_CLOCK_LABEL,
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -#endif /* DRC_DISABLE */
 -
 -#ifdef __ARM_NEON__
 -   {
 -      "pcsx_rearmed_neon_interlace_enable",
 -      "Interlacing Mode'u etkinleÅŸtir",
 -      "Sahte tarama Ã§izgileri efektini etkinleÅŸtirir.",
 -      {
           { NULL, NULL },
        },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_neon_enhancement_enable",
 -      "GeliÅŸtirilmiÅŸ Ã‡Ã¶zünürlük (YavaÅŸ)",
 -      "Düşük performans pahasına Ã§ift Ã§Ã¶zünürlükte iÅŸler.",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_neon_enhancement_no_main",
 -      "GeliÅŸtirilmiÅŸ Ã‡Ã¶zünürlük (Speed Hack)",
 -      "GeliÅŸtirilmiÅŸ Ã§Ã¶zünürlük seçeneÄŸi için hız aşırtma(bazı oyunlarda sorun Ã§Ä±kartabilir).",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -#endif /* __ARM_NEON__ */
 -
 -   {
 -      "pcsx_rearmed_duping_enable",
 -      "Frame Duping",
 -      "Yeni bir veri yoksa, bir hızlandırma, son kareyi yeniden Ã§izer/yeniden kullanır.",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_display_internal_fps",
 -      "Dahili FPS'yi görüntüle",
 -      "EtkinleÅŸtirildiÄŸinde ekranda saniye başına kareyi gösterir.",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -
 -   /* GPU PEOPS OPTIONS */
 -#ifdef DRC_DISABLE
 -   {
 -      "pcsx_rearmed_show_gpu_peops_settings",
 -      "GeliÅŸmiÅŸ GPU Ayarlarını Göster",
 -      "ÇeÅŸitli GPU düzeltmelerini etkinleÅŸtirin veya devre dışı bırakın. Ayarların etkili olması için core'un yeniden baÅŸlatılması gerekebilir. NOT: Bu ayarın etkili olabilmesi için Hızlı Menü’nün deÄŸiÅŸtirilmesi gerekir.",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_gpu_peops_fix_0",
 -      "(GPU) Odd/Even Bit Hack",
 -      "Chrono Cross için gerekli.",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_gpu_peops_fix_1",
 -      "(GPU) Ekran GeniÅŸliÄŸini GeniÅŸlet",
 -      "Capcom dövüş oyunları",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_gpu_peops_fix_2",
 -      "(GPU) Parlaklık Rengini Yoksay",
 -      "Lunar Silver Star Story oyunlarında siyah ekran",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_gpu_peops_fix_3",
 -      "(GPU) Koordinat Kontrolünü Devre Dışı Bırak",
 -      "Uyumluluk modu",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_gpu_peops_fix_6",
 -      "(GPU) Tembel Ekran Güncellemesi",
 -      "Pandemonium 2",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_gpu_peops_fix_7",
 -      "(GPU) Eski Ã‡erçeve Atlama",
 -      "Her ikinci kareyi atla",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_gpu_peops_fix_8",
 -      "(GPU) Tekrarlanan Düz Doku ÃœÃ§genleri",
 -      "Star Wars: Dark Forces için gerekli",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_gpu_peops_fix_9",
 -      "(GPU) ÃœÃ§genler ile Dörtlü Ã‡iz",
 -      "Daha iyi g renkler, daha kötü dokular",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_gpu_peops_fix_10",
 -      "(GPU) Sahte 'Gpu MeÅŸgul' Konumları",
 -      "Çizimden sonra meÅŸgul bayraklarını deÄŸiÅŸtir",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -#endif
 -
 -   {
 -      "pcsx_rearmed_show_bios_bootlogo",
 -      "Bios Bootlogo'yu Göster",
 -      "EtkinleÅŸtirildiÄŸinde, baÅŸlatırken veya sıfırlarken PlayStation logosunu gösterir. (Bazı oyunları bozabilir).",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_spu_reverb",
 -      "Ses Yankısı",
 -      "Ses yankı efektini etkinleÅŸtirir veya devre dışı bırakır.",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_spu_interpolation",
 -      "Ses Enterpolasyonu",
 -      NULL,
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_idiablofix",
 -      "Diablo Müzik Düzeltmesi",
 -      NULL,
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_pe2_fix",
 -      "Parasite Eve 2/Vandal Hearts 1/2 Düzeltmleri",
 -      NULL,
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_inuyasha_fix",
 -      "InuYasha Sengoku Battle Düzeltmesi",
 -      NULL,
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -
 -   /* ADVANCED OPTIONS */
 -   {
 -      "pcsx_rearmed_noxadecoding",
 -      "XA Kod Ã‡Ã¶zme",
 -      NULL,
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_nocdaudio",
 -      "CD Ses",
 -      NULL,
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -
 -#ifndef DRC_DISABLE
 -   {
 -      "pcsx_rearmed_nosmccheck",
 -      "(Speed Hack) SMC Kontrollerini Devre Dışı Bırak",
 -      "Yükleme sırasında Ã§Ã¶kmelere neden olabilir, hafıza kartını bozabilir.",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_gteregsunneeded",
 -      "(Speed Hack) GTE'nin Gereksiz OlduÄŸunu Varsayın",
 -      "Grafiksel bozukluklara neden olabilir.",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 -   },
 -   {
 -      "pcsx_rearmed_nogteflags",
 -      "(Speed Hack) GTE Bayraklarını Devredışı Bırakın",
 -      "Grafiksel bozukluklara neden olur.",
 -      {
 -         { NULL, NULL },
 -      },
 -      NULL
 +      "disabled",
     },
  #endif /* DRC_DISABLE */
  
 -   { NULL, NULL, NULL, { {0} }, NULL },
 +   { NULL, NULL, NULL, {{0}}, NULL },
  };
  
 -
  /*
   ********************************
   * 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 */
     NULL,           /* RETRO_LANGUAGE_VIETNAMESE */
     NULL,           /* RETRO_LANGUAGE_ARABIC */
     NULL,           /* RETRO_LANGUAGE_GREEK */
 -   option_defs_tr,  /* RETRO_LANGUAGE_TURKISH */
 +   option_defs_tr, /* RETRO_LANGUAGE_TURKISH */
  };
 +#endif
  
  /*
   ********************************
  */
  
  /* 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)
@@@ -739,9 -1305,8 +809,9 @@@ static INLINE void libretro_set_core_op
     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;
  
           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
     {
              }
  
              /* Build values string */
 -            if (num_values > 1)
 +            if (num_values > 0)
              {
                 size_t j;
  
diff --combined frontend/main.c
@@@ -130,6 -130,13 +130,13 @@@ void emu_set_default_config(void
        pl_rearmed_cbs.gpu_neon.enhancement_no_main = 0;
        pl_rearmed_cbs.gpu_peops.iUseDither = 0;
        pl_rearmed_cbs.gpu_peops.dwActFixes = 1<<7;
+       pl_rearmed_cbs.gpu_unai.ilace_force = 0;
+       pl_rearmed_cbs.gpu_unai.pixel_skip = 1;
+       pl_rearmed_cbs.gpu_unai.lighting = 1;
+       pl_rearmed_cbs.gpu_unai.fast_lighting = 1;
+       pl_rearmed_cbs.gpu_unai.blending = 1;
+       pl_rearmed_cbs.gpu_unai.dithering = 0;
+       // old gpu_unai config
        pl_rearmed_cbs.gpu_unai.abe_hack =
        pl_rearmed_cbs.gpu_unai.no_light =
        pl_rearmed_cbs.gpu_unai.no_blend = 0;
        spu_config.iVolume = 768;
        spu_config.iTempo = 0;
        spu_config.iUseThread = 1; // no effect if only 1 core is detected
 -#ifdef HAVE_PRE_ARMV7 /* XXX GPH hack */
 +#if defined(HAVE_PRE_ARMV7) && !defined(_3DS) /* XXX GPH hack */
        spu_config.iUseReverb = 0;
        spu_config.iUseInterpolation = 0;
        spu_config.iTempo = 1;
@@@ -870,7 -877,7 +877,7 @@@ static int _OpenPlugins(void) 
  
        if (Config.UseNet && !NetOpened) {
                netInfo info;
 -              char path[MAXPATHLEN];
 +              char path[MAXPATHLEN * 2];
                char dotdir[MAXPATHLEN];
  
                MAKE_PATH(dotdir, "/.pcsx/plugins/", NULL);
diff --combined maemo/main.c
index 50e129e,50e129e..0000000
deleted file mode 100644,100644
+++ /dev/null
@@@ -1,418 -1,418 +1,0 @@@
--/*
-- * (C) notaz, 2010-2011
-- *
-- * This work is licensed under the terms of the GNU GPLv2 or later.
-- * See the COPYING file in the top-level directory.
-- */
--
--#include <stdio.h>
--#include <string.h>
--#include <stdint.h>
--#include <unistd.h>
--
--#include "../frontend/main.h"
--#include "../frontend/menu.h"
--#include "../frontend/plugin.h"
--#include "../frontend/plugin_lib.h"
--#include "../libpcsxcore/misc.h"
--#include "../libpcsxcore/cdriso.h"
--#include "../libpcsxcore/new_dynarec/new_dynarec.h"
--#include "../plugins/dfinput/main.h"
--#include "../plugins/dfsound/spu_config.h"
--#include "maemo_common.h"
--
--extern int in_enable_vibration;
--extern int cycle_multiplier;
--extern int in_type1, in_type2;
--
--accel_option accelOptions;
--int ready_to_go, g_emu_want_quit, g_emu_resetting;
--int g_menuscreen_w, g_menuscreen_h;
--int g_scaler, soft_filter;
--int g_opts = 0;
--int g_maemo_opts;
--int cornerActions[4] = {0,0,0,0};
--int bKeepDisplayOn = FALSE;
--int bAutosaveOnExit = FALSE;
--char file_name[MAXPATHLEN];
--char keys_config_file[MAXPATHLEN] = "/opt/psx4m/keys";
--
--enum sched_action emu_action;
--void do_emu_action(void);
--
--static void ChangeWorkingDirectory(char *exe)
--{
--      char exepath[1024];
--      char *s;
--      snprintf(exepath, sizeof(exepath), "%s", exe);
--      s = strrchr(exepath, '/');
--      if (s != NULL) {
--              *s = '\0';
--              chdir(exepath);
--      }
--}
--
--void PrintHelp()
--{
--      printf("PCSX-ReARMed version %s for Maemo\n\n", PCSX_VERSION);
--
--      printf("Usage:\n");
--      printf("  pcsx [options] -cdfile FILE\n\n");
--
--      printf("Options:\n");
--      printf("  -help          : This help\n");
--      printf("  -disc VALUE    : Disc number for multi discs images\n");
--      printf("  -fullscreen    : Run fullscreen\n");
--      printf("  -frameskip     : Frameskip\n");
--      printf("                   -1=Auto (Default)\n");
--      printf("                    0=Disabled\n");
--      printf("                    1=Set to 1\n");
--      printf("                    ...\n");
--      printf("  -autosave      : Enable auto save on exit\n");
--      printf("  -accel         : Enable accelerometer\n");
--      printf("  -analog        : Use analog pad for accel\n");
--      printf("  -vibration     : Activate vibration\n");
--      printf("  -sens VALUE    : Set accelerometer sens [0-1000]\n");
--    printf("                   (Default 150)\n");
--      printf("  -ydef VALUE    : Set accelerometer y zero [0-1000]\n");
--    printf("                   (Default 500)\n");
--      printf("  -max VALUE     : Set accelerometer max value[0-1000]\n");
--    printf("                   (Default 500)\n");
--      printf("  -nosound       : No sound output\n");
--      printf("  -bdir PATH     : Set the bios path\n");
--      printf("  -pdir PATH     : Set the plugins path\n");
--      printf("  -bios          : Set the bios\n");
--      printf("  -cdda          : Disable CD Audio for a performance boost\n");
--      printf("  -xa            : Disables XA sound, which can sometimes\n");
--      printf("                   improve performance\n");
--      printf("  -sio           : SIO IRQ Always Enabled\n");
--      printf("  -spuirq        : SPU IRQ Always Enabled\n");
--      printf("  -fps           : Show fps\n");
--      printf("  -cpu           : Show CPU load\n");
--      printf("  -spu           : Show SPU channels\n");
--      printf("  -nofl          : Disable Frame Limiter\n");
--      printf("  -mcd1 FILE     : Set memory card 1 file\n");
--      printf("  -mcd2 FILE     : Set memory card 2 file\n");
--      printf("  -region VALUE  : Set PSX region\n");
--      printf("                   -1=Auto (Default)\n");
--      printf("                    0=NTSC\n");
--      printf("                    1=PAL\n");
--      printf("  -cpuclock VALUE: PSX CPU clock %% [1-500]\n");
--    printf("                   (Default 50)\n");
--      printf("  -displayon     : Prevent display from blanking\n");
--    printf("                   (Default disabled)\n");
--      printf("  -keys FILE     : File with keys configuration\n");
--    printf("                   (Default /opt/psx4m/keys)\n");
--      printf("  -corners VALUE : Define actions for click on the\n");
--    printf("                   display corners\n");
--    printf("                   VALUE is a four digit number, each number\n");
--    printf("                   represent a corner (topleft, topright,\n");
--    printf("                   bottomright and bottomleft\n");
--    printf("                   Actions:\n");
--    printf("                   0=No action\n");
--    printf("                   1=Save\n");
--    printf("                   2=Load\n");
--    printf("                   3=Change slot (+1)\n");
--    printf("                   4=Change slot (-1)\n");
--    printf("                   5=Quit\n");
--      printf("  -guncon        : Set the controller to guncon\n");
--      printf("  -gunnotrigger  : Don't trigger (shoot) when touching screen\n");
--    printf("                   0=Auto (Default)\n");
--    printf("                   1=On\n");
--    printf("                   2=Off\n");
--
--
--      printf("\nGPU Options:\n");
--      printf("  -gles          : Use the GLES plugin (gpu_gles.so)\n");
--      printf("  -oldgpu        : Use the peops plugin (gpu_peops.so)\n");
--      printf("  -unai          : Use the unai plugin (gpu_unai.so)\n");
--
--      printf("\nSound Options:\n");
--      printf("  -spu_reverb VALUE        : Enable/disable reverb [0/1]\n");
--    printf("                             (Default disabled)\n");
--      printf("  -spu_interpolation VALUE : Set interpolation mode\n");
--      printf("                             0=None (Default)\n");
--    printf("                             1=Simple\n");
--      printf("                             2=Gaussian\n");
--      printf("                             3=Cubic\n");
--
--      printf("\nNeon Options (default GPU):\n");
--      printf("  -enhance       : Enable graphic enhancement\n");
--
--      printf("\nGles Options:\n");
--      printf("  -gles_dithering VALUE : Enable/disable dithering [0/1]\n");
--    printf("                          (Default disabled)\n");
--      printf("  -gles_mask VALUE      : Enable/disable mask detect [0/1]\n");
--    printf("                          (Default disabled)\n");
--      printf("  -gles_filtering VALUE : Texture Filtering\n");
--      printf("                          0=None (Default)\n");
--      printf("                          1=Standard\n");
--      printf("                          2=Extended\n");
--      printf("                          3=Standard-sprites\n");
--      printf("                          4=Extended-sprites\n");
--      printf("                          5=Standard+sprites\n");
--      printf("                          6=Extended+sprites\n");
--      printf("  -gles_fbtex VALUE     : Framebuffer Textures\n");
--      printf("                          0=Emulated VRam (Default)\n");
--      printf("                          1=Black\n");
--      printf("                          2=Card\n");
--      printf("                          3=Card+soft\n");
--      printf("  -gles_vram VALUE      : Texture RAM size in MB [4-128]\n");
--    printf("                          (Default 64)\n");
--    printf("  -gles_fastmdec VALUE  : Enable/disable Fast Mdec [0/1]\n");
--    printf("                          (Default disabled)\n");
--    printf("  -gles_advblend VALUE  : Enable/disable Adv. Blend [0/1]\n");
--    printf("                          (Default disabled)\n");
--    printf("  -gles_opaque VALUE    : Enable/disable Opaque Pass [0/1]\n");
--    printf("                          (Default disabled)\n");
--}
--
--int main(int argc, char **argv)
--{
--      if (argc == 1 || (argc == 2 && (!strcmp(argv[1], "--help") || !strcmp(argv[1], "-help") || !strcmp(argv[1], "-h")))) {
--              PrintHelp();
--              return 0;
--      }
--
--      emu_core_preinit();
--      ChangeWorkingDirectory("c");
--      char file[MAXPATHLEN] = "";
--      char path[MAXPATHLEN];
--      const char *cdfile = NULL;
--      int loadst = 0;
--      int i;
--      int getst = -1;
--      int discNumber = 0;
--
--      g_menuscreen_w = 800;
--      g_menuscreen_h = 480;
--
--      strcpy(Config.Gpu, "builtin_gpu");
--      strcpy(Config.Spu, "builtin_spu");
--      strcpy(Config.BiosDir, "/home/user/MyDocs");
--      strcpy(Config.PluginsDir, "/opt/maemo/usr/games/plugins");
--      snprintf(Config.PatchesDir, sizeof(Config.PatchesDir), "/opt/maemo/usr/games" PATCHES_DIR);
--      Config.PsxAuto = 1;
--      pl_rearmed_cbs.frameskip = -1;
--      strcpy(Config.Bios, "HLE");
--      spu_config.iUseReverb = 1;
--      spu_config.iUseInterpolation = 1;
--      spu_config.idiablofix = 0;
--      in_type1 = PSE_PAD_TYPE_STANDARD;
--      in_type2 = PSE_PAD_TYPE_STANDARD;
--
--      accelOptions.sens     = 150;
--      accelOptions.y_def        = 500;
--      accelOptions.maxValue = 500.0;
--
--      // read command line options
--      for (i = 1; i < argc; i++) {
--                   if (!strcmp(argv[i], "-psxout")) Config.PsxOut = 1;
--              else if (!strcmp(argv[i], "-load")) loadst = atol(argv[++i]);
--              else if (!strcmp(argv[i], "-cdfile")) {
--                      char isofilename[MAXPATHLEN];
--                      if (i+1 >= argc) break;
--                      strncpy(isofilename, argv[++i], MAXPATHLEN);
--                      if (isofilename[0] != '/') {
--                              getcwd(path, MAXPATHLEN);
--                              if (strlen(path) + strlen(isofilename) + 1 < MAXPATHLEN) {
--                                      strcat(path, "/");
--                                      strcat(path, isofilename);
--                                      strcpy(isofilename, path);
--                              } else
--                                      isofilename[0] = 0;
--                      }
--                      cdfile = isofilename;
--              }
--              else if (!strcmp(argv[i],"-frameskip")) {
--                      int tv_reg = atol(argv[++i]);
--                      if (tv_reg < -1)
--                              pl_rearmed_cbs.frameskip = -1;
--                      else
--                              pl_rearmed_cbs.frameskip = tv_reg;
--              }
--              else if (!strcmp(argv[i],"-region")) {
--                      int psx_reg = atol(argv[++i]);
--                      if (psx_reg == 0 || psx_reg == 1){
--                              Config.PsxAuto = 0;
--                              Config.PsxType = psx_reg;
--                      }
--              }
--
--              else if (!strcmp(argv[i],"-get_sstatename")) getst = atol(argv[++i]);
--
--              else if (!strcmp(argv[i], "-fullscreen"))               g_maemo_opts |= 2;
--              else if (!strcmp(argv[i], "-accel"))                            g_maemo_opts |= 4;
--              else if (!strcmp(argv[i], "-nosound"))                  strcpy(Config.Spu, "spunull.so");
--              else if (!strcmp(argv[i], "-bdir"))                     sprintf(Config.BiosDir, "%s", argv[++i]);
--              else if (!strcmp(argv[i], "-pdir"))                             sprintf(Config.PluginsDir, "%s", argv[++i]);
--              else if (!strcmp(argv[i], "-bios"))                     sprintf(Config.Bios, "%s", argv[++i]);
--              else if (!strcmp(argv[i], "-gles"))                             { strcpy(Config.Gpu, "gpu_gles.so"); g_maemo_opts |= 8 ;}
--              else if (!strcmp(argv[i], "-oldgpu"))                   strcpy(Config.Gpu, "gpu_peops.so");
--              else if (!strcmp(argv[i], "-unai"))                         strcpy(Config.Gpu, "gpu_unai.so");
--              else if (!strcmp(argv[i], "-cdda"))             Config.Cdda = 1;
--              else if (!strcmp(argv[i], "-xa"))               Config.Xa = 1;
--              else if (!strcmp(argv[i], "-rcnt"))             Config.RCntFix = 1 ;
--              else if (!strcmp(argv[i], "-sio"))              Config.Sio = 1;
--              else if (!strcmp(argv[i], "-spuirq"))   Config.SpuIrq = 1;
--              else if (!strcmp(argv[i], "-vsync"))    Config.VSyncWA = 1;
--              else if (!strcmp(argv[i], "-fps"))                          g_opts |=OPT_SHOWFPS;
--              else if (!strcmp(argv[i], "-cpu"))                          g_opts |=OPT_SHOWCPU;
--              else if (!strcmp(argv[i], "-spu"))                          g_opts |=OPT_SHOWSPU;
--              else if (!strcmp(argv[i], "-nofl"))                     g_opts |=OPT_NO_FRAMELIM;
--              else if (!strcmp(argv[i], "-mcd1"))                 sprintf(Config.Mcd1, "%s", argv[++i]);
--              else if (!strcmp(argv[i], "-mcd2"))                 sprintf(Config.Mcd2, "%s", argv[++i]);
--
--              else if (!strcmp(argv[i], "-cpuclock"))                 cycle_multiplier = 10000 / atol(argv[++i]);
--              else if (!strcmp(argv[i], "-guncon"))               in_type1 = PSE_PAD_TYPE_GUNCON;
--              else if (!strcmp(argv[i], "-gunnotrigger"))             g_opts |= OPT_TSGUN_NOTRIGGER;
--              else if (!strcmp(argv[i], "-analog"))               in_type1 = PSE_PAD_TYPE_ANALOGPAD;
--              else if (!strcmp(argv[i], "-vibration"))                { in_type1 = PSE_PAD_TYPE_ANALOGPAD; in_enable_vibration = 1; }
--              else if (!strcmp(argv[i], "-sens"))                             accelOptions.sens = atol(argv[++i]);
--              else if (!strcmp(argv[i], "-ydef"))                             accelOptions.y_def = atol(argv[++i]);
--              else if (!strcmp(argv[i], "-max"))                                  accelOptions.maxValue = atol(argv[++i]);
--              else if (!strcmp(argv[i], "-displayon"))                    bKeepDisplayOn = TRUE;
--              else if (!strcmp(argv[i], "-keys"))                             sprintf(keys_config_file, "%s", argv[++i]);
--              else if (!strcmp(argv[i], "-autosave"))                     bAutosaveOnExit = TRUE;
--              else if (!strcmp(argv[i], "-disc"))                     discNumber = atol(argv[++i]);
--              else if (!strcmp(argv[i], "-corners")){
--                      int j = 0;
--                      i++;
--                      char num[2];
--                      for (j=0; j<strlen(argv[i]); j++){
--                              strncpy(num, argv[i] + j, 1);
--                              cornerActions[j] = atoi(num);
--                      }
--      }
--
--              else if (!strcmp(argv[i], "-spu_reverb"))               spu_config.iUseReverb = atol(argv[++i]);
--              else if (!strcmp(argv[i], "-spu_interpolation"))        spu_config.iUseInterpolation = atol(argv[++i]);
--
--              else if (!strcmp(argv[i], "-enhance"))                  pl_rearmed_cbs.gpu_neon.enhancement_enable = 1;
--              else if (!strcmp(argv[i], "-enhancehack"))              pl_rearmed_cbs.gpu_neon.enhancement_no_main = 1;
--
--              else if (!strcmp(argv[i], "-gles_dithering"))   pl_rearmed_cbs.gpu_peopsgl.bDrawDither = atol(argv[++i]);
--              else if (!strcmp(argv[i], "-gles_mask"))            pl_rearmed_cbs.gpu_peopsgl.iUseMask = atol(argv[++i]);
--              else if (!strcmp(argv[i], "-gles_filtering"))   pl_rearmed_cbs.gpu_peopsgl.iFilterType = atol(argv[++i]);
--              else if (!strcmp(argv[i], "-gles_fbtex"))           pl_rearmed_cbs.gpu_peopsgl.iFrameTexType = atol(argv[++i]);
--              else if (!strcmp(argv[i], "-gles_vram"))            pl_rearmed_cbs.gpu_peopsgl.iVRamSize = atol(argv[++i]);
--              else if (!strcmp(argv[i], "-gles_fastmdec"))    pl_rearmed_cbs.gpu_peopsgl.bUseFastMdec = atol(argv[++i]);
--        else if (!strcmp(argv[i], "-gles_advblend"))  pl_rearmed_cbs.gpu_peopsgl.bAdvancedBlend = atol(argv[++i]);
--        else if (!strcmp(argv[i], "-gles_opaque"))        pl_rearmed_cbs.gpu_peopsgl.bOpaquePass = atol(argv[++i]);
--
--              else {
--                      fprintf(stderr, "Unknown option: %s\n", argv[i]);
--                      return 1;
--              }
--      }
--      
--      pl_init();
--      if (emu_core_init() == -1)
--              return 1;
--      
--      if (cdfile) {
--              set_cd_image(cdfile);
--              strcpy(file_name, strrchr(cdfile,'/'));
--      }
--
--      if (LoadPlugins() == -1) {
--              SysMessage("Failed loading plugins!");
--              return 1;
--      }
--
--      if (discNumber > 0)
--              cdrIsoMultidiskSelect = discNumber - 1;
--
--      if (OpenPlugins() == -1) {
--              return 1;
--      }
--      plugin_call_rearmed_cbs();
--
--      CheckCdrom();
--
--      if (getst >= 0){
--              char fname[MAXPATHLEN];
--
--              get_state_filename(fname, sizeof(fname), getst);
--              printf("SAVESTATE: %s\n", fname);
--              if (cdrIsoMultidiskCount > 1){
--                      int i = 0;
--                      for (i=1; i<cdrIsoMultidiskCount; i++){
--                              cdrIsoMultidiskSelect = i;
--                              CdromId[0] = '\0';
--                              CdromLabel[0] = '\0';
--
--                              CDR_close();
--                              if (CDR_open() == 0){
--                                      CheckCdrom();
--                                      get_state_filename(fname, sizeof(fname), getst);
--                                      printf("SAVESTATE: %s\n", fname);
--                              }
--                      }
--              }
--              return 0;
--      }
--
--      SysReset();
--
--      if (file[0] != '\0') {
--              if (Load(file) != -1)
--                      ready_to_go = 1;
--      } else {
--              if (cdfile) {
--                      if (LoadCdrom() == -1) {
--                              ClosePlugins();
--                              printf(_("Could not load CD-ROM!\n"));
--                              return -1;
--                      }
--                      emu_on_new_cd(0);
--                      ready_to_go = 1;
--              }
--      }
--
--      if (!ready_to_go) {
--              printf ("something goes wrong, maybe you forgot -cdfile ? \n");
--              return 1;
--      }
--
--      if (cdrIsoMultidiskCount > 1)
--              printf ("Loaded a multidisc image: %i discs.\n", cdrIsoMultidiskCount);
--
--      // If a state has been specified, then load that
--      if (loadst) {
--              int ret = emu_load_state(loadst - 1);
--              printf("%s state %d\n", ret ? "Failed to load" : "Loaded", loadst);
--              state_slot = loadst - 1;
--      }
--
--      if (maemo_init(&argc, &argv))
--              return 1;
--
--      if (GPU_open != NULL) {
--              int ret = GPU_open(&gpuDisp, "PCSX", NULL);
--              if (ret){
--                      fprintf(stderr, "Warning: GPU_open returned %d\n", ret);
--                      gpuDisp=ret;
--              }
--      }
--
--      if (Config.HLE)
--              printf("Note: running without BIOS, expect compatibility problems\n");
--
--      dfinput_activate();
--      pl_timing_prepare(Config.PsxType);
--
--      while (1)
--      {
--              stop = 0;
--              emu_action = SACTION_NONE;
--
--              psxCpu->Execute();
--              if (emu_action != SACTION_NONE)
--                      do_emu_action();
--      }
--
--      maemo_finish();
--      return 0;
--}
--