Merge branch 'gpu_unai_plugin_update'
[pcsx_rearmed.git] / frontend / libretro.c
index 919fabb..785213b 100644 (file)
@@ -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;
@@ -963,11 +973,11 @@ static struct retro_disk_control_callback disk_control = {
 #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)
@@ -1324,7 +1334,7 @@ size_t retro_get_memory_size(unsigned id)
        if (id == RETRO_MEMORY_SAVE_RAM)
                return MCD_SIZE;
        else if (id == RETRO_MEMORY_SYSTEM_RAM)
-               return 0x210000;
+               return 0x200000;
        else
                return 0;
 }
@@ -1636,91 +1646,91 @@ static void update_variables(bool in_flight)
 
 #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;
@@ -1737,16 +1747,16 @@ static void update_variables(bool in_flight)
       {
          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;
@@ -2161,7 +2171,7 @@ static bool find_any_bios(const char *dirpath, char *path, size_t path_size)
                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);
@@ -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",
@@ -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;
@@ -2358,6 +2369,7 @@ void retro_init(void)
 
 void retro_deinit(void)
 {
+       ClosePlugins();
        SysClose();
 #ifdef _3DS
    linearFree(vout_buf);