HLE: Merge HLE BIOS improvements from upstream
[pcsx_rearmed.git] / frontend / libretro.c
index 92cc9e6..992da60 100644 (file)
@@ -76,6 +76,9 @@ static bool display_internal_fps = false;
 static unsigned frame_count = 0;
 static bool libretro_supports_bitmasks = false;
 
+static unsigned previous_width = 0;
+static unsigned previous_height = 0;
+
 static int plugins_opened;
 static int is_pal_mode;
 
@@ -180,11 +183,17 @@ static void vout_set_mode(int w, int h, int raw_w, int raw_h, int bpp)
   vout_width = w;
   vout_height = h;
 
+       if (previous_width != vout_width || previous_height != vout_height)
+       {
+               previous_width = vout_width;
+               previous_height = vout_height;
+
        SysPrintf("setting mode width: %d height %d\n", vout_width, vout_height);
 
        struct retro_system_av_info info;
        retro_get_system_av_info(&info);
        environ_cb(RETRO_ENVIRONMENT_SET_GEOMETRY, &info.geometry);
+       }
 
   set_vout_fb();
 }
@@ -1355,6 +1364,8 @@ void *retro_get_memory_data(unsigned id)
 {
        if (id == RETRO_MEMORY_SAVE_RAM)
                return Mcd1Data;
+       else if (id == RETRO_MEMORY_SYSTEM_RAM)
+               return psxM;
        else
                return NULL;
 }
@@ -1363,6 +1374,8 @@ 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;
        else
                return 0;
 }
@@ -1814,7 +1827,7 @@ void retro_run(void)
                        // Query digital inputs
                        //
                        // > Pad-Up
-                       if (ret & (1 < RETRO_DEVICE_ID_JOYPAD_UP))
+                       if (ret & (1 << RETRO_DEVICE_ID_JOYPAD_UP))
                                in_keystate[i] |= (1 << DKEY_UP);
                        // > Pad-Right
                        if (ret & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT))