From 052b5500264390293d015da4a6e0827e64b7f923 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Fri, 20 Oct 2023 17:32:00 +1100 Subject: [PATCH] emu/romload.cpp: Don't search parent device search path for software media. This was a piece of emergent behaviour in the original implementation of software media loading. It was preserved in the last big refactor of ROM loading, but it can be removed now to simplify the code. --- src/emu/romload.cpp | 37 +++++++++---------------------------- src/emu/romload.h | 4 ++-- 2 files changed, 11 insertions(+), 30 deletions(-) diff --git a/src/emu/romload.cpp b/src/emu/romload.cpp index 5b76dfeefde..f3a22527d24 100644 --- a/src/emu/romload.cpp +++ b/src/emu/romload.cpp @@ -712,7 +712,7 @@ void rom_load_manager::region_post_process(memory_region *region, bool invert) -------------------------------------------------*/ std::unique_ptr rom_load_manager::open_rom_file( - search_paths searchpath, + const std::vector &searchpath, const rom_entry *romp, std::vector &tried_file_names, bool from_list) @@ -730,13 +730,8 @@ std::unique_ptr rom_load_manager::open_rom_file( // attempt reading up the chain through the parents // it also automatically attempts any kind of load by checksum supported by the archives. - std::unique_ptr result; - for (const std::vector &paths : searchpath) - { - result = open_rom_file(paths, tried_file_names, has_crc, crc, ROM_GETNAME(romp), filerr); - if (result) - break; - } + std::unique_ptr result( + open_rom_file(searchpath, tried_file_names, has_crc, crc, ROM_GETNAME(romp), filerr)); // update counters m_romsloaded++; @@ -985,7 +980,7 @@ void rom_load_manager::copy_rom_data(memory_region ®ion, const rom_entry *rom -------------------------------------------------*/ void rom_load_manager::process_rom_entries( - search_paths searchpath, + const std::vector &searchpath, u8 bios, memory_region ®ion, const rom_entry *parent_region, @@ -1354,7 +1349,7 @@ void rom_load_manager::load_software_part_region(device_t &device, software_list m_romsloadedsize = 0; std::vector parents; - std::vector swsearch, disksearch, devsearch; + std::vector swsearch, disksearch; const software_info *const swinfo = swlist.find(std::string(swname)); if (swinfo) { @@ -1383,11 +1378,6 @@ void rom_load_manager::load_software_part_region(device_t &device, software_list // this is convenient for CD-only lists so you don't need an extra level of directories containing one file each disksearch.emplace_back(swlist.list_name()); - // for historical reasons, add the search path for the software list device's owner - const device_t *const listowner = swlist.owner(); - if (listowner) - devsearch = listowner->searchpath(); - // loop until we hit the end std::function next_parent; chd_file::open_parent_func open_parent; @@ -1436,10 +1426,7 @@ void rom_load_manager::load_software_part_region(device_t &device, software_list // now process the entries in the region if (ROMREGION_ISROMDATA(region)) { - if (devsearch.empty()) - process_rom_entries({ swsearch }, 0U, *memregion, region, region + 1, true); - else - process_rom_entries({ swsearch, devsearch }, 0U, *memregion, region, region + 1, true); + process_rom_entries(swsearch, 0U, *memregion, region, region + 1, true); } else if (ROMREGION_ISDISKDATA(region)) { @@ -1449,15 +1436,9 @@ void rom_load_manager::load_software_part_region(device_t &device, software_list next_parent = next_parent_software(parents); else next_parent = [] () { return nullptr; }; - if (devsearch.empty()) - open_parent = open_parent_disk(machine().options(), { swsearch, disksearch }, next_parent); - else - open_parent = open_parent_disk(machine().options(), { swsearch, disksearch, devsearch }, next_parent); + open_parent = open_parent_disk(machine().options(), { swsearch, disksearch }, next_parent); } - if (devsearch.empty()) - process_disk_entries({ swsearch, disksearch }, regiontag, region + 1, next_parent, open_parent); - else - process_disk_entries({ swsearch, disksearch, devsearch }, regiontag, region + 1, next_parent, open_parent); + process_disk_entries({ swsearch, disksearch }, regiontag, region + 1, next_parent, open_parent); } } @@ -1518,7 +1499,7 @@ void rom_load_manager::process_region_list() if (searchpath.empty()) searchpath = device.searchpath(); assert(!searchpath.empty()); - process_rom_entries({ searchpath }, device.system_bios(), *memregion, region, region + 1, false); + process_rom_entries(searchpath, device.system_bios(), *memregion, region, region + 1, false); } else if (ROMREGION_ISDISKDATA(region)) { diff --git a/src/emu/romload.h b/src/emu/romload.h index 001f27aba83..223598670e3 100644 --- a/src/emu/romload.h +++ b/src/emu/romload.h @@ -445,7 +445,7 @@ private: void display_rom_load_results(bool from_list); void region_post_process(memory_region *region, bool invert); std::unique_ptr open_rom_file( - search_paths searchpath, + const std::vector &searchpath, const rom_entry *romp, std::vector &tried_file_names, bool from_list); @@ -461,7 +461,7 @@ private: void fill_rom_data(memory_region ®ion, const rom_entry *romp); void copy_rom_data(memory_region ®ion, const rom_entry *romp); void process_rom_entries( - search_paths searchpath, + const std::vector &searchpath, u8 bios, memory_region ®ion, const rom_entry *parent_region,