diff --git a/file_io.cpp b/file_io.cpp index baaafae..27865ac 100644 --- a/file_io.cpp +++ b/file_io.cpp @@ -1085,6 +1085,8 @@ int ScanDirectory(char* path, int mode, const char *extension, int options, cons char *altname = neogeo_get_altname(full_path, &dext); if (altname) { + if (altname == (char*)-1) continue; + dext.de.d_type = DT_REG; memcpy(dext.altname, altname, sizeof(dext.altname)); } diff --git a/support/neogeo/loader.cpp b/support/neogeo/loader.cpp index 0ae9149..b4ae2bb 100644 --- a/support/neogeo/loader.cpp +++ b/support/neogeo/loader.cpp @@ -471,6 +471,7 @@ struct rom_info { char name[256]; char altname[256]; + char hide; }; static rom_info roms[1000]; @@ -505,6 +506,10 @@ static int xml_scan(XMLEvent evt, const XMLNode* node, SXML_CHAR* text, const in memset(roms[rom_cnt].altname, 0, sizeof(roms[rom_cnt].altname)); strncpy(roms[rom_cnt].altname, node->attributes[i].value, sizeof(roms[rom_cnt].altname) - 1); } + else if (!strcasecmp(node->attributes[i].name, "hide")) + { + roms[rom_cnt].hide = 1; + } } rom_cnt++; } @@ -638,6 +643,7 @@ char *neogeo_get_altname(char *path, direntext_t *de) char *p = strcasestr(roms[i].name, full_path); if (p) { + if (roms[i].hide) return (char*)-1; if(p == roms[i].name) return roms[i].altname; sprintf(full_path, "%s (%s)", roms[i].altname, de->altname); @@ -646,6 +652,7 @@ char *neogeo_get_altname(char *path, direntext_t *de) } else if (!strcasecmp(de->altname, roms[i].name)) { + if (roms[i].hide) return (char*)-1; return roms[i].altname; } }