diff options
Diffstat (limited to 'src/emu/diimage.cpp')
-rw-r--r-- | src/emu/diimage.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp index 2ef638d461a..92e09ecdbbb 100644 --- a/src/emu/diimage.cpp +++ b/src/emu/diimage.cpp @@ -96,7 +96,8 @@ device_image_interface::device_image_interface(const machine_config &mconfig, de m_create_format(0), m_create_args(nullptr), m_user_loadable(true), - m_is_loading(false) + m_is_loading(false), + m_is_reset_and_loading(false) { } @@ -1217,7 +1218,10 @@ void device_image_interface::reset_and_load(const std::string &path) device().machine().schedule_hard_reset(); // and record the new load - device().machine().options().image_options()[instance_name()] = path; + device().machine().options().image_option(instance_name()).specify(path); + + // record that we're reset and loading + m_is_reset_and_loading = true; } @@ -1301,9 +1305,10 @@ void device_image_interface::update_names() if (brief_name == nullptr) brief_name = device_brieftypename(image_type()); + m_canonical_instance_name = string_format("%s%d", inst_name, index + 1); if (count > 1) { - m_instance_name = string_format("%s%d", inst_name, index + 1); + m_instance_name = m_canonical_instance_name; m_brief_instance_name = string_format("%s%d", brief_name, index + 1); } else @@ -1454,11 +1459,11 @@ std::string device_image_interface::software_get_default_slot(const char *defaul { std::string result; - auto iter = device().mconfig().options().image_options().find(instance_name()); - if (iter != device().mconfig().options().image_options().end() && !iter->second.empty()) + const std::string &image_name(device().mconfig().options().image_option(instance_name()).value()); + if (!image_name.empty()) { result.assign(default_card_slot); - const software_part *swpart = find_software_item(iter->second, true); + const software_part *swpart = find_software_item(image_name, true); if (swpart != nullptr) { const char *slot = swpart->feature("slot"); |