diff --git a/src/emu/netlist/nl_base.c b/src/emu/netlist/nl_base.c index 16b4c88bcf3..0e1fee5778e 100644 --- a/src/emu/netlist/nl_base.c +++ b/src/emu/netlist/nl_base.c @@ -167,7 +167,7 @@ ATTR_COLD void netlist_base_t::start() for (tagmap_devices_t::entry_t *entry = m_devices.first(); entry != NULL; entry = m_devices.next(entry)) { netlist_device_t *dev = entry->object(); - dev->init(*this, entry->tag().cstr()); + dev->start_dev(); } } @@ -373,13 +373,13 @@ ATTR_COLD netlist_setup_t &netlist_device_t::setup() ATTR_COLD void netlist_device_t::init(netlist_base_t &anetlist, const pstring &name) { netlist_core_device_t::init(anetlist, name); - start(); } ATTR_COLD void netlist_device_t::register_sub(netlist_device_t &dev, const pstring &name) { dev.init(netlist(), this->name() + "." + name); + dev.start_dev(); } ATTR_COLD void netlist_device_t::register_subalias(const pstring &name, netlist_core_terminal_t &term) diff --git a/src/emu/netlist/nl_base.h b/src/emu/netlist/nl_base.h index bb5025be111..6c54000c9e2 100644 --- a/src/emu/netlist/nl_base.h +++ b/src/emu/netlist/nl_base.h @@ -899,8 +899,6 @@ public: ATTR_COLD virtual ~netlist_core_device_t(); ATTR_COLD virtual void init(netlist_base_t &anetlist, const pstring &name); - - ATTR_HOT virtual void update_param() {} ATTR_HOT inline void update_dev() @@ -911,6 +909,10 @@ public: update(); #endif } + ATTR_HOT inline void start_dev() + { + start(); + } ATTR_HOT const netlist_sig_t INPLOGIC_PASSIVE(netlist_logic_input_t &inp); diff --git a/src/emu/netlist/nl_setup.c b/src/emu/netlist/nl_setup.c index c25af942325..e190acd4f68 100644 --- a/src/emu/netlist/nl_setup.c +++ b/src/emu/netlist/nl_setup.c @@ -59,6 +59,7 @@ netlist_setup_t::~netlist_setup_t() // FIXME: Move to netlist ... netlist_device_t *netlist_setup_t::register_dev(netlist_device_t *dev, const pstring &name) { + dev->init(netlist(), name); if (!(netlist().m_devices.add(name, dev, false)==TMERR_NONE)) netlist().error("Error adding %s to device list\n", name.cstr()); return dev; @@ -364,8 +365,8 @@ nld_base_d_to_a_proxy *netlist_setup_t::get_d_a_proxy(netlist_output_t &out) pstring x = pstring::sprintf("proxy_da_%d", m_proxy_cnt); m_proxy_cnt++; - proxy->init(netlist(), x); register_dev(proxy, x); + proxy->start_dev(); #if 1 /* connect all existing terminals to new net */ @@ -396,8 +397,8 @@ void netlist_setup_t::connect_input_output(netlist_input_t &in, netlist_output_t pstring x = pstring::sprintf("proxy_ad_%d", m_proxy_cnt); m_proxy_cnt++; - proxy->init(netlist(), x); register_dev(proxy, x); + proxy->start_dev(); proxy->m_Q.net().register_con(in); out.net().register_con(proxy->m_I); @@ -429,8 +430,8 @@ void netlist_setup_t::connect_terminal_input(netlist_terminal_t &term, netlist_i pstring x = pstring::sprintf("proxy_da_%d", m_proxy_cnt); m_proxy_cnt++; - proxy->init(netlist(), x); register_dev(proxy, x); + proxy->start_dev(); connect_terminals(term, proxy->m_I);