Merge pull request #178 from GTechAlpha/rp_fix_sw_fb
[pcsx_rearmed.git] / frontend / libretro.c
index 70dc171..92bf1b9 100644 (file)
@@ -131,24 +131,26 @@ static void init_memcard(char *mcd_data)
        }
 }
 
-static void vout_set_mode(int w, int h, int raw_w, int raw_h, int bpp)
+static void set_vout_fb()
 {
-       vout_width = w;
-       vout_height = h;
-
   struct retro_framebuffer fb = {0};
 
   fb.width           = vout_width;
   fb.height          = vout_height;
   fb.access_flags    = RETRO_MEMORY_ACCESS_WRITE;
 
-  vout_buf_ptr = vout_buf;
-
   if (environ_cb(RETRO_ENVIRONMENT_GET_CURRENT_SOFTWARE_FRAMEBUFFER, &fb) && fb.format == RETRO_PIXEL_FORMAT_RGB565)
-  {
-     vout_buf_ptr  = (uint16_t*)fb.data;
-  }
+     vout_buf_ptr = (uint16_t*)fb.data;
+  else
+     vout_buf_ptr = vout_buf;
+}
 
+static void vout_set_mode(int w, int h, int raw_w, int raw_h, int bpp)
+{
+  vout_width = w;
+  vout_height = h;
+
+  set_vout_fb();
 }
 
 #ifndef FRONTEND_SUPPORTS_RGB565
@@ -1575,6 +1577,8 @@ void retro_run(void)
        video_cb((vout_fb_dirty || !vout_can_dupe || !duping_enable) ? vout_buf_ptr : NULL,
                vout_width, vout_height, vout_width * 2);
        vout_fb_dirty = 0;
+
+    set_vout_fb();
 }
 
 static bool try_use_bios(const char *path)
@@ -1619,7 +1623,7 @@ static bool find_any_bios(const char *dirpath, char *path, size_t path_size)
                if (strncasecmp(ent->d_name, "scph", 4) != 0)
                        continue;
 
-               snprintf(path, path_size, "%s/%s", dirpath, ent->d_name);
+               snprintf(path, path_size, "%s%c%s", dirpath, SLASH, ent->d_name);
                ret = try_use_bios(path);
                if (ret)
                        break;
@@ -1639,7 +1643,10 @@ static void check_system_specs(void)
 
 void retro_init(void)
 {
-       const char *bios[] = { "SCPH101", "SCPH7001", "SCPH5501", "SCPH1001" };
+       const char *bios[] = {
+               "SCPH101", "SCPH7001", "SCPH5501", "SCPH1001",
+               "scph101", "scph7001", "scph5501", "scph1001"
+       };
        const char *dir;
        char path[256];
        int i, ret;
@@ -1689,7 +1696,7 @@ void retro_init(void)
                snprintf(Config.BiosDir, sizeof(Config.BiosDir), "%s", dir);
 
                for (i = 0; i < sizeof(bios) / sizeof(bios[0]); i++) {
-                       snprintf(path, sizeof(path), "%s/%s.bin", dir, bios[i]);
+                       snprintf(path, sizeof(path), "%s%c%s.bin", dir, SLASH, bios[i]);
                        found_bios = try_use_bios(path);
                        if (found_bios)
                                break;