From: notaz Date: Fri, 14 Jul 2023 19:50:13 +0000 (+0300) Subject: libretro: look for openbios X-Git-Tag: r24l~302 X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=de36a5369040b8a76db02d263ed8bb717ebf9157;p=pcsx_rearmed.git libretro: look for openbios Lowest priority since it still has lower compatibility and lightrec has problems with it. libretro/pcsx_rearmed#708 --- diff --git a/frontend/libretro.c b/frontend/libretro.c index 60fff5df..e4772848 100644 --- a/frontend/libretro.c +++ b/frontend/libretro.c @@ -2807,23 +2807,36 @@ 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" }; DIR *dir; struct dirent *ent; bool ret = false; + size_t i; dir = opendir(dirpath); if (dir == NULL) return false; - while ((ent = readdir(dir))) + for (i = 0; sizeof(substrings) / sizeof(substrings[0]); i++) { - if ((strncasecmp(ent->d_name, "scph", 4) != 0) && (strncasecmp(ent->d_name, "psx", 3) != 0)) - continue; - - snprintf(path, path_size, "%s%c%s", dirpath, SLASH, ent->d_name); - ret = try_use_bios(path); - if (ret) - break; + const char *substr = substrings[i]; + size_t len = strlen(substr); + rewinddir(dir); + while ((ent = readdir(dir))) + { + if ((strncasecmp(ent->d_name, substr, len) != 0)) + continue; + if (strstr(ent->d_name, "unirom")) + continue; + + snprintf(path, path_size, "%s%c%s", dirpath, SLASH, ent->d_name); + ret = try_use_bios(path); + if (ret) + { + closedir(dir); + return ret; + } + } } closedir(dir); return ret; @@ -3138,3 +3151,5 @@ void SysDLog(const char *fmt, ...) if (log_cb) log_cb(RETRO_LOG_DEBUG, "%s", msg); } + +// vim:sw=3:ts=3:expandtab