diff options
author | 2023-10-20 17:32:00 +1100 | |
---|---|---|
committer | 2023-10-20 17:32:00 +1100 | |
commit | 052b5500264390293d015da4a6e0827e64b7f923 (patch) | |
tree | d88e890df28586348187a420edc18e591d4cb76f /src | |
parent | a9519ebcd8cbf9cd48454828cac96c3d5b735376 (diff) |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/emu/romload.cpp | 37 | ||||
-rw-r--r-- | 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<emu_file> rom_load_manager::open_rom_file( - search_paths searchpath, + const std::vector<std::string> &searchpath, const rom_entry *romp, std::vector<std::string> &tried_file_names, bool from_list) @@ -730,13 +730,8 @@ std::unique_ptr<emu_file> 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<emu_file> result; - for (const std::vector<std::string> &paths : searchpath) - { - result = open_rom_file(paths, tried_file_names, has_crc, crc, ROM_GETNAME(romp), filerr); - if (result) - break; - } + std::unique_ptr<emu_file> 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<std::string> &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<const software_info *> parents; - std::vector<std::string> swsearch, disksearch, devsearch; + std::vector<std::string> 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<const rom_entry * ()> 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<emu_file> open_rom_file( - search_paths searchpath, + const std::vector<std::string> &searchpath, const rom_entry *romp, std::vector<std::string> &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<std::string> &searchpath, u8 bios, memory_region ®ion, const rom_entry *parent_region, |