boxart: ignore disks with invalid ip_meta. sanitize disk id chars

This commit is contained in:
Flyinghead 2022-07-29 10:48:39 +02:00
parent 55600c40a9
commit a6ac753c64
1 changed files with 13 additions and 0 deletions

View File

@ -94,6 +94,16 @@ void OfflineScraper::scrape(GameBoxart& item)
disc->ReadSectors(disc->GetBaseFAD(), 1, sector, sizeof(sector));
ip_meta_t diskId;
memcpy(&diskId, sector, sizeof(diskId));
// Sanity check
if (memcmp(diskId.hardware_id, "SEGA SEGAKATANA ", sizeof(diskId.hardware_id))
|| memcmp(diskId.maker_id, "SEGA ENTERPRISES", sizeof(diskId.maker_id)))
{
WARN_LOG(COMMON, "Invalid IP META for disk %s", item.gamePath.c_str());
item.scraped = true;
item.uniqueId.clear();
item.searchName.clear();
return;
}
if (item.boxartPath.empty())
{
@ -122,6 +132,9 @@ void OfflineScraper::scrape(GameBoxart& item)
delete disc;
item.uniqueId = trim_trailing_ws(std::string(diskId.product_number, sizeof(diskId.product_number)));
for (char& c : item.uniqueId)
if (!std::isprint(c))
c = ' ';
item.searchName = trim_trailing_ws(std::string(diskId.software_name, sizeof(diskId.software_name)));
if (item.searchName.empty())