From c14db5e7ab0f290ed478a1fd1dcb1fcc1b5848ca Mon Sep 17 00:00:00 2001 From: couriersud Date: Wed, 1 May 2019 22:35:01 +0200 Subject: netlist: add more defines to nltool -v --version output - breakout: update notes - 9316: switch to output array - ppmf: fix a warning - nlid_system.h: remove useless brackets. --- src/lib/netlist/devices/nld_9316.cpp | 19 +++++--------- src/lib/netlist/devices/nlid_system.h | 47 ++++++++++++++++++----------------- src/lib/netlist/nl_base.cpp | 7 +++--- src/lib/netlist/plib/ppmf.h | 4 +-- src/mame/machine/nl_breakout.cpp | 15 +++++------ 5 files changed, 42 insertions(+), 50 deletions(-) diff --git a/src/lib/netlist/devices/nld_9316.cpp b/src/lib/netlist/devices/nld_9316.cpp index e054f22c3a7..88d56e50ae3 100644 --- a/src/lib/netlist/devices/nld_9316.cpp +++ b/src/lib/netlist/devices/nld_9316.cpp @@ -25,10 +25,7 @@ namespace netlist , m_LOADQ(*this, "LOADQ") , m_ENP(*this, "ENP") , m_CLRQ(*this, "CLRQ") - , m_A(*this, "A", NETLIB_DELEGATE(9316, abcd)) - , m_B(*this, "B", NETLIB_DELEGATE(9316, abcd)) - , m_C(*this, "C", NETLIB_DELEGATE(9316, abcd)) - , m_D(*this, "D", NETLIB_DELEGATE(9316, abcd)) + , m_ABCD(*this, {{"A", "B", "C", "D"}}, NETLIB_DELEGATE(9316, abcd)) , m_Q(*this, {{ "QA", "QB", "QC", "QD" }}) , m_cnt(*this, "m_cnt", 0) , m_abcd(*this, "m_abcd", 0) @@ -61,8 +58,8 @@ namespace netlist m_CLK.inactivate(); if (!CLRQ && (m_cnt>0)) { + update_outputs_all(0, NLTIME_FROM_NS(36)); m_cnt = 0; - update_outputs_all(m_cnt, NLTIME_FROM_NS(36)); } } m_RC.push(m_ent && (m_cnt == MAXCNT), NLTIME_FROM_NS(27)); @@ -79,7 +76,7 @@ namespace netlist NETLIB_HANDLERI(abcd) { - m_abcd = static_cast((m_D() << 3) | (m_C() << 2) | (m_B() << 1) | (m_A() << 0)); + m_abcd = static_cast((m_ABCD[0]() << 0) | (m_ABCD[1]() << 1) | (m_ABCD[2]() << 2) | (m_ABCD[3]() << 3)); } logic_input_t m_CLK; @@ -92,22 +89,18 @@ namespace netlist logic_input_t m_ENP; logic_input_t m_CLRQ; - logic_input_t m_A; - logic_input_t m_B; - logic_input_t m_C; - logic_input_t m_D; - + object_array_t m_ABCD; object_array_t m_Q; /* counter state */ - state_var m_cnt; + state_var m_cnt; /* cached pins */ state_var_u8 m_abcd; state_var_sig m_loadq; state_var_sig m_ent; nld_power_pins m_power_pins; - void update_outputs_all(unsigned cnt, netlist_time out_delay) noexcept + void update_outputs_all(uint8_t cnt, netlist_time out_delay) noexcept { m_Q[0].push((cnt >> 0) & 1, out_delay); m_Q[1].push((cnt >> 1) & 1, out_delay); diff --git a/src/lib/netlist/devices/nlid_system.h b/src/lib/netlist/devices/nlid_system.h index 3bb651106b2..3ae553fc2ec 100644 --- a/src/lib/netlist/devices/nlid_system.h +++ b/src/lib/netlist/devices/nlid_system.h @@ -171,32 +171,33 @@ namespace devices m_inc[0] = netlist_time::from_double(1.0 / (m_freq() * 2.0)); connect(m_feedback, m_Q); + + netlist_time base = netlist_time::from_double(1.0 / (m_freq()*2.0)); + std::vector pat(plib::psplit(m_pattern(),",")); + m_off = netlist_time::from_double(m_offset()); + + std::array pati = { 0 }; + + m_size = static_cast(pat.size()); + netlist_time::mult_type total = 0; + for (unsigned i=0; i pat(plib::psplit(m_pattern(),",")); - m_off = netlist_time::from_double(m_offset()); - - std::array pati = { 0 }; - - m_size = static_cast(pat.size()); - netlist_time::mult_type total = 0; - for (unsigned i=0; i(pat[i]); - pati[i] = plib::pstonum(pat[i]); - total += pati[i]; - } - netlist_time ttotal = netlist_time::zero(); - auto sm1 = static_cast(m_size - 1); - for (unsigned i=0; i < sm1; i++) - { - m_inc[i] = base * pati[i]; - ttotal += m_inc[i]; - } - m_inc[sm1] = base * total - ttotal; + // FIXME: use pstonum_ne + //pati[i] = plib::pstonum(pat[i]); + pati[i] = plib::pstonum(pat[i]); + total += pati[i]; } + netlist_time ttotal = netlist_time::zero(); + auto sm1 = static_cast(m_size - 1); + for (unsigned i=0; i < sm1; i++) + { + m_inc[i] = base * pati[i]; + ttotal += m_inc[i]; + } + m_inc[sm1] = base * total - ttotal; + } + NETLIB_UPDATEI(); NETLIB_RESETI(); //NETLIB_UPDATE_PARAMI(); diff --git a/src/lib/netlist/nl_base.cpp b/src/lib/netlist/nl_base.cpp index c23776f8219..6bba075ebff 100644 --- a/src/lib/netlist/nl_base.cpp +++ b/src/lib/netlist/nl_base.cpp @@ -270,6 +270,9 @@ void netlist_state_t::compile_defines(std::vector> & defs.push_back(ENTRY(HAS_OPENMP)); defs.push_back(ENTRY(USE_OPENMP)); + defs.push_back(ENTRY(PPMF_TYPE)); + defs.push_back(ENTRY(PHAS_PMF_INTERNAL)); + #undef ENTRY } @@ -474,7 +477,7 @@ void netlist_t::print_stats() const log().verbose("Total time {1:15}", total_time); // FIXME: clang complains about unreachable code without - if (USE_QUEUE_STATS || (!USE_QUEUE_STATS && m_stats)) + if (USE_QUEUE_STATS || (USE_QUEUE_STATS && m_stats)) { /* Only one serialization should be counted in total time */ /* But two are contained in m_stat_mainloop */ @@ -704,9 +707,7 @@ void detail::net_t::process(const T mask, netlist_sig_t sig) if ((p.terminal_state() & mask)) { auto g(stats->m_stat_total_time.guard()); - //p.device().m_stat_total_time.start(); p.m_delegate(); - //p.device().m_stat_total_time.stop(); } } } diff --git a/src/lib/netlist/plib/ppmf.h b/src/lib/netlist/plib/ppmf.h index 9c5329cccde..d31b238cf6d 100644 --- a/src/lib/netlist/plib/ppmf.h +++ b/src/lib/netlist/plib/ppmf.h @@ -252,10 +252,10 @@ namespace plib { pmfp(MemberFunctionType mftp, O *object) : pmfp_base() { - this->set(mftp, object); + this->set_base(mftp, object); + m_obj = reinterpret_cast(object); } - template void set(MemberFunctionType mftp, O *object) { diff --git a/src/mame/machine/nl_breakout.cpp b/src/mame/machine/nl_breakout.cpp index c38a67db63f..d6da5118387 100644 --- a/src/mame/machine/nl_breakout.cpp +++ b/src/mame/machine/nl_breakout.cpp @@ -7,11 +7,12 @@ * - Start2 works (Couriersud) * - Added discrete paddle potentiometers (Couriersud) * - Changes made to run in MAME (Couriersud) + * - Added bonus game dip switch (Couriersud) + * - Added discrete startup latch * - Original version imported from DICE * * TODO: - * - implement discrete startup latch - * - implement bonus game dip switch + * - lamp triacs? * * The MAME team has asked for and received written confirmation from the * author of DICE to use, modify and redistribute code under: @@ -1572,7 +1573,7 @@ CIRCUIT_LAYOUT( breakout ) RES(R51, RES_K(3.9)) RES(R52, RES_K(3.9)) -#if (SLOW_BUT_ACCURATE) +#if (0 && SLOW_BUT_ACCURATE) DIODE(CR6, "1N914") NET_C(E2.11, CR6.K) @@ -1584,15 +1585,11 @@ CIRCUIT_LAYOUT( breakout ) PARAM(CR6.ROFF, 1) NET_C(R41.1, R42.1, R43.1, R51.1, R52.1) #endif -#if 1 + CONNECTION("R51", 2, PLAYFIELD) CONNECTION("R43", 2, BSYNC) CONNECTION("R52", 2, SCORE) -#else - CONNECTION("R51", 2, "V5", Q) - CONNECTION("R43", 2, "V5", Q) - CONNECTION("R52", 2, "V5", Q) -#endif + NET_C(R41.2, B9.3) NET_C(R42.2, V5) -- cgit v1.2.3