diff options
Diffstat (limited to 'src/emu/validity.cpp')
-rw-r--r-- | src/emu/validity.cpp | 69 |
1 files changed, 33 insertions, 36 deletions
diff --git a/src/emu/validity.cpp b/src/emu/validity.cpp index 86020e7719c..c31052f9982 100644 --- a/src/emu/validity.cpp +++ b/src/emu/validity.cpp @@ -1834,54 +1834,51 @@ void validity_checker::validate_devices() // if it's a slot, iterate over possible cards (don't recurse, or you'll stack infinite tee connectors) device_slot_interface *const slot = dynamic_cast<device_slot_interface *>(&device); - if (slot && !slot->fixed()) + if (slot != nullptr) { for (auto &option : slot->option_list()) { - if (option.second->selectable()) - { - std::string const card_tag(util::string_format("_%s", option.second->name())); - device_t *const card = m_current_config->device_add(&slot->device(), card_tag.c_str(), option.second->devtype(), option.second->clock()); + std::string const card_tag(util::string_format("_%s", option.second->name())); + device_t *const card = m_current_config->device_add(&slot->device(), card_tag.c_str(), option.second->devtype(), option.second->clock()); - const char *const def_bios = option.second->default_bios(); - if (def_bios) - device_t::static_set_default_bios_tag(*card, def_bios); - machine_config_constructor const additions = option.second->machine_config(); - if (additions) - (*additions)(*m_current_config, card, card); + const char *const def_bios = option.second->default_bios(); + if (def_bios) + device_t::static_set_default_bios_tag(*card, def_bios); + machine_config_constructor const additions = option.second->machine_config(); + if (additions) + (*additions)(*m_current_config, card, card); - for (device_slot_interface &subslot : slot_interface_iterator(*card)) + for (device_slot_interface &subslot : slot_interface_iterator(*card)) + { + if (subslot.fixed()) { - if (subslot.default_option() && *subslot.default_option()) + device_slot_option const *const suboption = subslot.option(subslot.default_option()); + if (suboption) { - device_slot_option const *const suboption = subslot.option(subslot.default_option()); - if (suboption) - { - device_t *const sub_card = m_current_config->device_add(&subslot.device(), suboption->name(), suboption->devtype(), suboption->clock()); - const char *const sub_bios = suboption->default_bios(); - if (sub_bios) - device_t::static_set_default_bios_tag(*sub_card, sub_bios); - machine_config_constructor const sub_additions = suboption->machine_config(); - if (sub_additions) - (*sub_additions)(*m_current_config, sub_card, sub_card); - } + device_t *const sub_card = m_current_config->device_add(&subslot.device(), suboption->name(), suboption->devtype(), suboption->clock()); + const char *const sub_bios = suboption->default_bios(); + if (sub_bios) + device_t::static_set_default_bios_tag(*sub_card, sub_bios); + machine_config_constructor const sub_additions = suboption->machine_config(); + if (sub_additions) + (*sub_additions)(*m_current_config, sub_card, sub_card); } } + } - for (device_t &card_dev : device_iterator(*card)) - card_dev.config_complete(); - validate_roms(*card); - - for (device_t &card_dev : device_iterator(*card)) - { - m_current_device = &card_dev; - card_dev.findit(true); - card_dev.validity_check(*this); - m_current_device = nullptr; - } + for (device_t &card_dev : device_iterator(*card)) + card_dev.config_complete(); + validate_roms(*card); - m_current_config->device_remove(&slot->device(), card_tag.c_str()); + for (device_t &card_dev : device_iterator(*card)) + { + m_current_device = &card_dev; + card_dev.findit(true); + card_dev.validity_check(*this); + m_current_device = nullptr; } + + m_current_config->device_remove(&slot->device(), card_tag.c_str()); } } } |