Revert "Make "requirement" field in softlists actually work (MT 6464)"

This reverts commit 17af0f9c66.
This commit is contained in:
Vas Crabb 2017-02-19 10:34:38 +11:00
parent 2acad1f854
commit bc1065a311
3 changed files with 16 additions and 37 deletions

View File

@ -1153,31 +1153,13 @@ image_init_result device_image_interface::load_software(const std::string &softw
bool device_image_interface::open_image_file(emu_options &options) bool device_image_interface::open_image_file(emu_options &options)
{ {
const char* path = options.value(instance_name()); const char* path = options.value(instance_name());
if (*path != 0 && m_software_part_ptr == nullptr) if (*path != 0)
{ {
set_init_phase(); set_init_phase();
if (load_internal(path, false, 0, nullptr, true) == image_init_result::PASS) if (load_internal(path, false, 0, nullptr, true) == image_init_result::PASS)
{ {
if (software_entry()==nullptr) return true; if (software_entry()==nullptr) return true;
} }
else
m_software_part_ptr = find_software_item(path, true);
// if we're loading from a software list, check requirements
if (m_software_part_ptr != nullptr)
{
const char *requirement = m_software_part_ptr->feature("requirement");
if (requirement != nullptr)
{
const software_part *req_swpart = find_software_item(requirement, false);
if (req_swpart != nullptr)
{
device_image_interface *req_image = software_list_device::find_mountable_image(device().mconfig(), *req_swpart);
if (req_image != nullptr)
req_image->m_software_part_ptr = req_swpart;
}
}
}
} }
return false; return false;
} }
@ -1447,7 +1429,7 @@ bool device_image_interface::load_software_part(const std::string &identifier, c
#ifdef UNUSED_VARIABLE #ifdef UNUSED_VARIABLE
// Tell the world which part we actually loaded // Tell the world which part we actually loaded
std::string full_sw_name = string_format("%s:%s:%s", swlist->list_name(), swpart->info().shortname(), swpart->name()); std::string full_sw_name = string_format("%s:%s:%s", swlist.list_name(), swpart->info().shortname(), swpart->name());
#endif #endif
// check compatibility // check compatibility
@ -1476,8 +1458,7 @@ bool device_image_interface::load_software_part(const std::string &identifier, c
if (req_image != nullptr) if (req_image != nullptr)
{ {
req_image->set_init_phase(); req_image->set_init_phase();
if (req_image->load_software(requirement) != image_init_result::PASS) req_image->load(requirement);
result = false;
} }
} }
} }
@ -1492,18 +1473,20 @@ bool device_image_interface::load_software_part(const std::string &identifier, c
std::string device_image_interface::software_get_default_slot(const char *default_card_slot) const std::string device_image_interface::software_get_default_slot(const char *default_card_slot) const
{ {
if (m_software_part_ptr != nullptr) const char *path = device().mconfig().options().value(instance_name());
std::string result;
if (*path != '\0')
{ {
// use slot value if available result.assign(default_card_slot);
const char *slot = m_software_part_ptr->feature("slot"); const software_part *swpart = find_software_item(path, true);
return (slot != nullptr) ? slot : default_card_slot; if (swpart != nullptr)
{
const char *slot = swpart->feature("slot");
if (slot != nullptr)
result.assign(slot);
}
} }
return result;
// necessary for image file creation???
if (*device().mconfig().options().value(instance_name()) != '\0')
return default_card_slot;
return std::string();
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------

View File

@ -379,7 +379,7 @@ device_image_interface *software_list_device::find_mountable_image(const machine
{ {
// mount only if not already mounted // mount only if not already mounted
const char *option = mconfig.options().value(image.brief_instance_name()); const char *option = mconfig.options().value(image.brief_instance_name());
if (*option == '\0' && !image.filename() && image.part_entry() == nullptr) if (*option == '\0' && !image.filename())
return ℑ return ℑ
} }
} }

View File

@ -83,10 +83,6 @@ void mame_options::update_slot_options(emu_options &options, const software_part
return; return;
machine_config config(*cursystem, options); machine_config config(*cursystem, options);
// preopen all images (this allows slots to be assigned for all required software)
for (device_image_interface &image : image_interface_iterator(config.root_device()))
image.open_image_file(options);
// iterate through all slot devices // iterate through all slot devices
for (device_slot_interface &slot : slot_interface_iterator(config.root_device())) for (device_slot_interface &slot : slot_interface_iterator(config.root_device()))
{ {