X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=frontend%2Flibretro.c;h=5a44e43e0d15f16080e5cfc36d20cdae99774f78;hb=44e76f8ad4944acfc109baf89beda7b723f8a209;hp=a30a1ab2e13e5b796d6f8db895926b3451623754;hpb=f3746eea2d69d08948522600b99388618ec46f1b;p=pcsx_rearmed.git diff --git a/frontend/libretro.c b/frontend/libretro.c index a30a1ab2..5a44e43e 100644 --- a/frontend/libretro.c +++ b/frontend/libretro.c @@ -98,6 +98,7 @@ static bool show_advanced_gpu_peops_settings = true; static bool show_advanced_gpu_unai_settings = true; #endif static float mouse_sensitivity = 1.0f; +static unsigned int disk_current_index; typedef enum { @@ -1070,14 +1071,24 @@ static void save_close(void *file) bool retro_serialize(void *data, size_t size) { - int ret = SaveState(data); + int ret; + CdromFrontendId = disk_current_index; + ret = SaveState(data); return ret == 0 ? true : false; } +static bool disk_set_image_index(unsigned int index); + bool retro_unserialize(const void *data, size_t size) { - int ret = LoadState(data); - return ret == 0 ? true : false; + int ret; + CdromFrontendId = -1; + ret = LoadState(data); + if (ret) + return false; + if (CdromFrontendId != -1 && CdromFrontendId != disk_current_index) + disk_set_image_index(CdromFrontendId); + return true; } /* cheats */ @@ -1143,7 +1154,6 @@ finish: static unsigned int disk_initial_index; static char disk_initial_path[PATH_MAX]; static bool disk_ejected; -static unsigned int disk_current_index; static unsigned int disk_count; static struct disks_state { @@ -2283,8 +2293,10 @@ static void update_variables(bool in_flight) { if (strcmp(var.value, "game") == 0) pl_rearmed_cbs.screen_centering_type = 1; - else if (strcmp(var.value, "manual") == 0) + else if (strcmp(var.value, "borderless") == 0) pl_rearmed_cbs.screen_centering_type = 2; + else if (strcmp(var.value, "manual") == 0) + pl_rearmed_cbs.screen_centering_type = 3; else // auto pl_rearmed_cbs.screen_centering_type = 0; }