summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2017-02-19 10:34:38 +1100
committer Vas Crabb <vas@vastheman.com>2017-02-19 11:40:54 +1100
commitbc1065a31123dfc70c0f1e1da7d1395e6daa8d07 (patch)
tree7453fa22cbdf675bcce62e1d52456870cd9f5bfe
parent2acad1f854dc256ef5ae7f62814b9445ad816446 (diff)
Revert "Make "requirement" field in softlists actually work (MT 6464)"
This reverts commit 17af0f9c661e0855607703faf66c1e807e888d82.
-rw-r--r--src/emu/diimage.cpp47
-rw-r--r--src/emu/softlist_dev.cpp2
-rw-r--r--src/frontend/mame/mameopts.cpp4
3 files changed, 16 insertions, 37 deletions
diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp
index 72b761fbb91..e4977f2de3d 100644
--- a/src/emu/diimage.cpp
+++ b/src/emu/diimage.cpp
@@ -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)
{
const char* path = options.value(instance_name());
- if (*path != 0 && m_software_part_ptr == nullptr)
+ if (*path != 0)
{
set_init_phase();
if (load_internal(path, false, 0, nullptr, true) == image_init_result::PASS)
{
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;
}
@@ -1447,7 +1429,7 @@ bool device_image_interface::load_software_part(const std::string &identifier, c
#ifdef UNUSED_VARIABLE
// 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
// check compatibility
@@ -1476,8 +1458,7 @@ bool device_image_interface::load_software_part(const std::string &identifier, c
if (req_image != nullptr)
{
req_image->set_init_phase();
- if (req_image->load_software(requirement) != image_init_result::PASS)
- result = false;
+ req_image->load(requirement);
}
}
}
@@ -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
{
- 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
- const char *slot = m_software_part_ptr->feature("slot");
- return (slot != nullptr) ? slot : default_card_slot;
+ result.assign(default_card_slot);
+ const software_part *swpart = find_software_item(path, true);
+ if (swpart != nullptr)
+ {
+ const char *slot = swpart->feature("slot");
+ if (slot != nullptr)
+ result.assign(slot);
+ }
}
-
- // necessary for image file creation???
- if (*device().mconfig().options().value(instance_name()) != '\0')
- return default_card_slot;
-
- return std::string();
+ return result;
}
//----------------------------------------------------------------------------
diff --git a/src/emu/softlist_dev.cpp b/src/emu/softlist_dev.cpp
index db3aeb28e9d..039f8852e69 100644
--- a/src/emu/softlist_dev.cpp
+++ b/src/emu/softlist_dev.cpp
@@ -379,7 +379,7 @@ device_image_interface *software_list_device::find_mountable_image(const machine
{
// mount only if not already mounted
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 &image;
}
}
diff --git a/src/frontend/mame/mameopts.cpp b/src/frontend/mame/mameopts.cpp
index 9fc75861e2b..01312820cce 100644
--- a/src/frontend/mame/mameopts.cpp
+++ b/src/frontend/mame/mameopts.cpp
@@ -83,10 +83,6 @@ void mame_options::update_slot_options(emu_options &options, const software_part
return;
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
for (device_slot_interface &slot : slot_interface_iterator(config.root_device()))
{