From: notaz Date: Fri, 14 Jul 2023 19:50:13 +0000 (+0300) Subject: libretro: look for openbios X-Git-Tag: r24~247 X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=378428ac9a7248ce2a538f9798abf37549ed91c0;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 4477183a..6b5256c0 100644 --- a/frontend/libretro.c +++ b/frontend/libretro.c @@ -2805,23 +2805,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; @@ -3136,3 +3149,5 @@ void SysDLog(const char *fmt, ...) if (log_cb) log_cb(RETRO_LOG_DEBUG, "%s", msg); } + +// vim:sw=3:ts=3:expandtab