X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=frontend%2Flibretro.c;h=4d29e1652fa2ce5d0dbbcaa2e5b0b40f734f1721;hb=d512faf7162c167d4ad34c5d13601697c6205ae1;hp=2f758a6c8de15fde480fb10b3af4a773d1f27646;hpb=9165d434d935746da54484381ebbee754e899680;p=pcsx_rearmed.git diff --git a/frontend/libretro.c b/frontend/libretro.c index 2f758a6c..4d29e165 100644 --- a/frontend/libretro.c +++ b/frontend/libretro.c @@ -870,7 +870,7 @@ void retro_get_system_info(struct retro_system_info *info) memset(info, 0, sizeof(*info)); info->library_name = "PCSX-ReARMed"; info->library_version = "r23l" GIT_VERSION; - info->valid_extensions = "bin|cue|img|mdf|pbp|toc|cbn|m3u|chd"; + info->valid_extensions = "bin|cue|img|mdf|pbp|toc|cbn|m3u|chd|iso|exe"; info->need_fullpath = true; } @@ -1471,6 +1471,8 @@ bool retro_load_game(const struct retro_game_info *info) size_t i; unsigned int cd_index = 0; bool is_m3u = (strcasestr(info->path, ".m3u") != NULL); + bool is_exe = (strcasestr(info->path, ".exe") != NULL); + int ret; struct retro_input_descriptor desc[] = { #define JOYP(port) \ @@ -1664,7 +1666,7 @@ bool retro_load_game(const struct retro_game_info *info) plugin_call_rearmed_cbs(); /* dfinput_activate(); */ - if (CheckCdrom() == -1) + if (!is_exe && CheckCdrom() == -1) { log_cb(RETRO_LOG_INFO, "unsupported/invalid CD image: %s\n", info->path); return false; @@ -1672,9 +1674,13 @@ bool retro_load_game(const struct retro_game_info *info) SysReset(); - if (LoadCdrom() == -1) + if (is_exe) + ret = Load(info->path); + else + ret = LoadCdrom(); + if (ret != 0) { - log_cb(RETRO_LOG_INFO, "could not load CD\n"); + log_cb(RETRO_LOG_INFO, "could not load %s (%d)\n", is_exe ? "exe" : "CD", ret); return false; } emu_on_new_cd(0); @@ -2720,6 +2726,8 @@ void retro_run(void) { rebootemu = 0; SysReset(); + if (Config.HLE) + LoadCdrom(); } print_internal_fps(); @@ -2817,7 +2825,7 @@ static bool try_use_bios(const char *path) static bool find_any_bios(const char *dirpath, char *path, size_t path_size) { - static const char *substrings[] = { "scph", "psx", "openbios" }; + static const char *substrings[] = { "scph", "ps", "openbios" }; DIR *dir; struct dirent *ent; bool ret = false;