diff options
| author | 2017-06-11 00:51:47 +1000 | |
|---|---|---|
| committer | 2017-06-11 00:52:01 +1000 | |
| commit | 5e9030939e2dcfee4395950cae22c3486bc77ede (patch) | |
| tree | 99e9f8b48cb2ac6c39f8af047046519e907a77d1 /src/emu/validity.cpp | |
| parent | 867aea06f5cb85078e97a8ed635aaeb3c1beca2b (diff) | |
fix the missing default subslot devices on slot card validation
Diffstat (limited to 'src/emu/validity.cpp')
| -rw-r--r-- | src/emu/validity.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/emu/validity.cpp b/src/emu/validity.cpp index 995b024b059..86020e7719c 100644 --- a/src/emu/validity.cpp +++ b/src/emu/validity.cpp @@ -1841,14 +1841,33 @@ void validity_checker::validate_devices() 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(), 0); + 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 != nullptr) + if (additions) (*additions)(*m_current_config, card, card); + + for (device_slot_interface &subslot : slot_interface_iterator(*card)) + { + if (subslot.default_option() && *subslot.default_option()) + { + 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); + } + } + } + for (device_t &card_dev : device_iterator(*card)) card_dev.config_complete(); validate_roms(*card); |
