diff --git a/core/hw/naomi/gdcartridge.cpp b/core/hw/naomi/gdcartridge.cpp index 3f5b96f59..cdd00354f 100644 --- a/core/hw/naomi/gdcartridge.cpp +++ b/core/hw/naomi/gdcartridge.cpp @@ -502,26 +502,17 @@ void GDCartridge::device_start(LoadProgress *progress, std::vector *digest) catch (const FlycastException& e) { WARN_LOG(NAOMI, "Opening chd failed: %s", e.what()); - try { - gdrom = std::unique_ptr(OpenDisc(gdrom_path + ".gdi", digest)); - } - catch (const FlycastException& e) + if (gdrom_parent_name != nullptr) { - if (gdrom_parent_name != nullptr) - { - std::string gdrom_parent_path = hostfs::storage().getSubPath(parent, std::string(gdrom_parent_name) + "/" + gdrom_name); - try { - gdrom = std::unique_ptr(OpenDisc(gdrom_parent_path + ".chd", digest)); - } catch (const FlycastException& e) { - WARN_LOG(NAOMI, "Opening parent chd failed: %s", e.what()); - try { - gdrom = std::unique_ptr(OpenDisc(gdrom_parent_path + ".gdi", digest)); - } catch (const FlycastException& e) {} - } + std::string gdrom_parent_path = hostfs::storage().getSubPath(parent, std::string(gdrom_parent_name) + "/" + gdrom_name); + try { + gdrom = std::unique_ptr(OpenDisc(gdrom_parent_path + ".chd", digest)); + } catch (const FlycastException& e) { + WARN_LOG(NAOMI, "Opening parent chd failed: %s", e.what()); } - if (gdrom == nullptr) - throw NaomiCartException("Naomi GDROM: Cannot open " + gdrom_path + ".chd or " + gdrom_path + ".gdi"); } + if (gdrom == nullptr) + throw NaomiCartException("Naomi GDROM: Cannot open " + gdrom_path + ".chd"); } // primary volume descriptor diff --git a/core/hw/naomi/naomi_cart.cpp b/core/hw/naomi/naomi_cart.cpp index 4b70e1899..ae0757297 100644 --- a/core/hw/naomi/naomi_cart.cpp +++ b/core/hw/naomi/naomi_cart.cpp @@ -81,12 +81,7 @@ static bool loadBios(const char *filename, Archive *child_archive, Archive *pare for (int romid = 0; bios->blobs[romid].filename != nullptr; romid++) { - if (region == -1) - { - region = bios->blobs[romid].region; - config::Region.override(region); - } - else if (bios->blobs[romid].region != (u32)region) + if (region != -1 && bios->blobs[romid].region != (u32)region) continue; std::unique_ptr file; @@ -119,6 +114,8 @@ static bool loadBios(const char *filename, Archive *child_archive, Archive *pare md5.add(biosData + bios->blobs[romid].offset, bios->blobs[romid].length); DEBUG_LOG(NAOMI, "Mapped %s: %x bytes at %07x", bios->blobs[romid].filename, read, bios->blobs[romid].offset); found_region = true; + if (region == -1) + config::Region.override(bios->blobs[romid].region); } break; case EepromBE16: