X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=common%2Femu.c;h=3443c98fbc486cbc9b98c94131d1b4abc25675e9;hb=609d0c070d716f8043dc92d04cdf48fc8535fb0b;hp=88d80b7e9c742bdeb00b826e0281114c7e8df70b;hpb=7a5f9593629010d1cc9e7f9046aad0654412479e;p=libpicofe.git diff --git a/common/emu.c b/common/emu.c index 88d80b7..3443c98 100644 --- a/common/emu.c +++ b/common/emu.c @@ -785,44 +785,53 @@ char *emu_get_save_fname(int load, int is_sram, int slot) if (is_sram) { - romfname_ext(saveFname, (PicoAHW & PAHW_MCD) ? "brm"PATH_SEP : "srm"PATH_SEP, - (PicoAHW & PAHW_MCD) ? ".brm" : ".srm"); - if (load) { - if (try_ropen_file(saveFname)) return saveFname; - // try in current dir.. - romfname_ext(saveFname, NULL, (PicoAHW & PAHW_MCD) ? ".brm" : ".srm"); - if (try_ropen_file(saveFname)) return saveFname; - return NULL; // give up - } + strcpy(ext, (PicoAHW & PAHW_MCD) ? ".brm" : ".srm"); + romfname_ext(saveFname, (PicoAHW & PAHW_MCD) ? "brm"PATH_SEP : "srm"PATH_SEP, ext); + if (!load) + return saveFname; + + if (try_ropen_file(saveFname)) + return saveFname; + + romfname_ext(saveFname, NULL, ext); + if (try_ropen_file(saveFname)) + return saveFname; } else { + const char *ext_main = (currentConfig.EmuOpt & EOPT_GZIP_SAVES) ? ".mds.gz" : ".mds"; + const char *ext_othr = (currentConfig.EmuOpt & EOPT_GZIP_SAVES) ? ".mds" : ".mds.gz"; ext[0] = 0; - if(slot > 0 && slot < 10) sprintf(ext, ".%i", slot); - strcat(ext, (currentConfig.EmuOpt & EOPT_GZIP_SAVES) ? ".mds.gz" : ".mds"); + if (slot > 0 && slot < 10) + sprintf(ext, ".%i", slot); + strcat(ext, ext_main); + + if (!load) { + romfname_ext(saveFname, "mds" PATH_SEP, ext); + return saveFname; + } + else { + romfname_ext(saveFname, "mds" PATH_SEP, ext); + if (try_ropen_file(saveFname)) + return saveFname; - romfname_ext(saveFname, "mds" PATH_SEP, ext); - if (load) { - if (try_ropen_file(saveFname)) return saveFname; romfname_ext(saveFname, NULL, ext); - if (try_ropen_file(saveFname)) return saveFname; - // no gzipped states, search for non-gzipped - if (currentConfig.EmuOpt & EOPT_GZIP_SAVES) - { - ext[0] = 0; - if(slot > 0 && slot < 10) sprintf(ext, ".%i", slot); - strcat(ext, ".mds"); - - romfname_ext(saveFname, "mds"PATH_SEP, ext); - if (try_ropen_file(saveFname)) return saveFname; - romfname_ext(saveFname, NULL, ext); - if (try_ropen_file(saveFname)) return saveFname; - } - return NULL; + if (try_ropen_file(saveFname)) + return saveFname; + + // try the other ext + ext[0] = 0; + if (slot > 0 && slot < 10) + sprintf(ext, ".%i", slot); + strcat(ext, ext_othr); + + romfname_ext(saveFname, "mds"PATH_SEP, ext); + if (try_ropen_file(saveFname)) + return saveFname; } } - return saveFname; + return NULL; } int emu_check_save_file(int slot)