diff options
| author | 2014-05-04 21:38:11 +0000 | |
|---|---|---|
| committer | 2014-05-04 21:38:11 +0000 | |
| commit | 962bf9df8b53013c56f91b2323bc915b7ca77e21 (patch) | |
| tree | f6ac47e751b1650696f3016c30c00e3ceb7074c8 | |
| parent | 2ca54e049fe31d7776a17260ddc9d10347060188 (diff) | |
More work on pong doubles. Working again (if enabled).
| -rw-r--r-- | nl_examples/tdice.c | 67 | ||||
| -rw-r--r-- | src/emu/netlist/analog/nld_solver.c | 13 | ||||
| -rw-r--r-- | src/emu/netlist/devices/nld_legacy.c | 16 | ||||
| -rw-r--r-- | src/emu/netlist/nl_dice_compat.h | 16 | ||||
| -rw-r--r-- | src/emu/netlist/nl_setup.c | 6 | ||||
| -rw-r--r-- | src/mame/drivers/pong.c | 14 |
6 files changed, 98 insertions, 34 deletions
diff --git a/nl_examples/tdice.c b/nl_examples/tdice.c index 3b513f215e0..16736d1e68e 100644 --- a/nl_examples/tdice.c +++ b/nl_examples/tdice.c @@ -2,8 +2,12 @@ // copyright-holders:DICE Team,couriersud /* * Changelog: - * - Original version imported from DICE + * - Added discrete paddle potentiometers (couriersud) * - Changes made to run in MAME (couriersud) + * - Original version imported from DICE + * + * TODO: + * - implement trimmers * * The MAME team has asked for and received written confirmation from the * author of DICE to use, modify and redistribute code under @@ -68,11 +72,11 @@ static Mono555Desc a3_555_desc(K_OHM(100.0), U_FARAD(0.1)); -static Mono555Desc a10_555_desc(K_OHM(70.0), U_FARAD(0.1)); -static Mono555Desc b10_555_desc(K_OHM(70.0), U_FARAD(0.1)); +static Mono555Desc a10_555_desc(K_OHM(70.0), U_FARAD(0.1)); // actually 56k + 50k trimmer +static Mono555Desc b10_555_desc(K_OHM(70.0), U_FARAD(0.1)); // actually 56k + 50k trimmer -static Mono555Desc b9a_555_desc(K_OHM(70.0), U_FARAD(0.1)); -static Mono555Desc b9b_555_desc(K_OHM(70.0), U_FARAD(0.1)); +static Mono555Desc b9a_555_desc(K_OHM(70.0), U_FARAD(0.1)); // actually 56k + 50k trimmer +static Mono555Desc b9b_555_desc(K_OHM(70.0), U_FARAD(0.1)); // actually 56k + 50k trimmer static Mono555Desc f5_555_desc(K_OHM(330.0), U_FARAD(4.7)); static Mono555Desc g5_555_desc(K_OHM(220.0), U_FARAD(1.0)); @@ -137,6 +141,18 @@ CIRCUIT_LAYOUT( pongdoubles ) //CHIP("B10", 555_Mono, &b10_555_desc) CHIP_555_Mono(B10, &b10_555_desc) + // NETLIST - analog start + POT(B10_POT, RES_K(1)) // This is a guess!! + PARAM(B10_POT.DIALLOG, 1) // Log Dial ... + RES(B10_RPRE, 470) + + NET_C(B10_POT.1, V5) + NET_C(B10_POT.3, GND) + NET_C(B10_POT.2, B10_RPRE.1) + NET_C(B10_RPRE.2, B10.5) + // NETLIST - analog end + + CHIP("C10", 7404) CHIP("A7", 7493) CHIP("B8", 7400) @@ -144,7 +160,19 @@ CIRCUIT_LAYOUT( pongdoubles ) //CHIP("A10", 555_Mono, &a10_555_desc) CHIP_555_Mono(A10, &a10_555_desc) - CHIP("A9", 7493) + + // NETLIST - analog start + POT(A10_POT, RES_K(1)) // This is a guess!! + PARAM(A10_POT.DIALLOG, 1) // Log Dial ... + RES(A10_RPRE, 470) + + NET_C(A10_POT.1, V5) + NET_C(A10_POT.3, GND) + NET_C(A10_POT.2, A10_RPRE.1) + NET_C(A10_RPRE.2, A10.5) + // NETLIST - analog end + + CHIP("A9", 7493) CHIP("H4", 7474) @@ -208,9 +236,32 @@ CIRCUIT_LAYOUT( pongdoubles ) //CHIP("B9A", 555_Mono, &b9a_555_desc) CHIP_555_Mono(B9A, &b9a_555_desc) + + // NETLIST - analog start + POT(B9A_POT, RES_K(1)) // This is a guess!! + PARAM(B9A_POT.DIALLOG, 1) // Log Dial ... + RES(B9A_RPRE, 470) + + NET_C(B9A_POT.1, V5) + NET_C(B9A_POT.3, GND) + NET_C(B9A_POT.2, B9A_RPRE.1) + NET_C(B9A_RPRE.2, B9A.5) + // NETLIST - analog end + //CHIP("B9B", 555_Mono, &b9b_555_desc) CHIP_555_Mono(B9B, &b9b_555_desc) + // NETLIST - analog start + POT(B9B_POT, RES_K(1)) // This is a guess!! + PARAM(B9B_POT.DIALLOG, 1) // Log Dial ... + RES(B9B_RPRE, 470) + + NET_C(B9B_POT.1, V5) + NET_C(B9B_POT.3, GND) + NET_C(B9B_POT.2, B9B_RPRE.1) + NET_C(B9B_RPRE.2, B9B.5) + // NETLIST - analog end + CHIP_SERIES_RC(C33, &c33_desc) #if 0 @@ -235,11 +286,11 @@ CIRCUIT_LAYOUT( pongdoubles ) #endif //CHIP("COIN", COIN_INPUT) - CHIP_INPUT(COIN) + CHIP_INPUT_ACTIVE_LOW(COIN) //CHIP("LATCH", LATCH) CHIP_LATCH(LATCH) //CHIP("START", START_INPUT) - CHIP_INPUT(START) + CHIP_INPUT_ACTIVE_HIGH(START) //CHIP("DIPSW1", DIPSWITCH, &dipswitch1_desc) SWITCH2(DIPSW1) SWITCH2(DIPSW2) diff --git a/src/emu/netlist/analog/nld_solver.c b/src/emu/netlist/analog/nld_solver.c index 2e5d8042af0..cbd83f11d46 100644 --- a/src/emu/netlist/analog/nld_solver.c +++ b/src/emu/netlist/analog/nld_solver.c @@ -841,17 +841,18 @@ ATTR_COLD void NETLIB_NAME(solver)::post_start() m_mat_solvers.add(ms); - SOLVER_VERBOSE_OUT(("%d ==> %d nets %s\n", i, groups[i].count(), (*groups[i].first())->m_head->name().cstr())); - SOLVER_VERBOSE_OUT((" has %s elements\n", ms->is_dynamic() ? "dynamic" : "no dynamic")); - SOLVER_VERBOSE_OUT((" has %s elements\n", ms->is_timestep() ? "timestep" : "no timestep")); + netlist().log("Solver %s", ms->name().cstr()); + netlist().log(" # %d ==> %d nets %s", i, groups[i].count(), (*(*groups[i].first())->m_core_terms.first())->name().cstr()); + netlist().log(" has %s elements", ms->is_dynamic() ? "dynamic" : "no dynamic"); + netlist().log(" has %s elements", ms->is_timestep() ? "timestep" : "no timestep"); for (int j=0; j<groups[i].count(); j++) { - SOLVER_VERBOSE_OUT(("Net %d: %s\n", j, groups[i][j]->name().cstr())); + netlist().log("Net %d: %s", j, groups[i][j]->name().cstr()); netlist_net_t *n = groups[i][j]; for (int k = 0; k < n->m_core_terms.count(); k++) { - ATTR_UNUSED netlist_core_terminal_t *p = n->m_core_terms[k]; - SOLVER_VERBOSE_OUT((" %s\n", p->name().cstr())); + const netlist_core_terminal_t *p = n->m_core_terms[k]; + netlist().log(" %s", p->name().cstr()); } } } diff --git a/src/emu/netlist/devices/nld_legacy.c b/src/emu/netlist/devices/nld_legacy.c index 7c3faa58117..46c7d4c2024 100644 --- a/src/emu/netlist/devices/nld_legacy.c +++ b/src/emu/netlist/devices/nld_legacy.c @@ -22,14 +22,14 @@ NETLIB_RESET(nicRSFF) NETLIB_UPDATE(nicRSFF) { - if (INPLOGIC(m_S)) + if (!INPLOGIC(m_S)) + { + OUTLOGIC(m_Q, 1, NLTIME_FROM_NS(20)); + OUTLOGIC(m_QQ, 0, NLTIME_FROM_NS(20)); + } + else if (!INPLOGIC(m_R)) { - OUTLOGIC(m_Q, 1, NLTIME_FROM_NS(10)); - OUTLOGIC(m_QQ, 0, NLTIME_FROM_NS(10)); - } - else if (INPLOGIC(m_R)) - { - OUTLOGIC(m_Q, 0, NLTIME_FROM_NS(10)); - OUTLOGIC(m_QQ, 1, NLTIME_FROM_NS(10)); + OUTLOGIC(m_Q, 0, NLTIME_FROM_NS(20)); + OUTLOGIC(m_QQ, 1, NLTIME_FROM_NS(20)); } } diff --git a/src/emu/netlist/nl_dice_compat.h b/src/emu/netlist/nl_dice_compat.h index a63ac5b1b9a..4e5d4f7e766 100644 --- a/src/emu/netlist/nl_dice_compat.h +++ b/src/emu/netlist/nl_dice_compat.h @@ -62,16 +62,22 @@ public: ALIAS(_name.2, _name ## _R.2) \ ALIAS(_name.1, _name ## _C.1) -#define CHIP_INPUT(_name) \ +#define CHIP_INPUT_ACTIVE_LOW(_name) \ SWITCH2(_name ## _SW) \ - NET_C(_name ## _SW.2, V5) \ - NET_CSTR(# _name "_SW.1", "GND") \ + NET_C(_name ## _SW.1, V5) \ + NET_CSTR(# _name "_SW.2", "GND") \ ALIAS(_name.1, _name ## _SW.Q) +#define CHIP_INPUT_ACTIVE_HIGH(_name) \ + SWITCH2(_name ## _SW) \ + NET_C(_name ## _SW.2, V5) \ + NET_CSTR(# _name "_SW.1", "GND") \ + ALIAS(_name.1, _name ## _SW.Q) + #define CHIP_LATCH(_name) \ NETDEV_RSFF(_name) \ - ALIAS(_name.1, _name.S) \ - ALIAS(_name.2, _name.R) \ + ALIAS(_name.1, _name.R) \ + ALIAS(_name.2, _name.S) \ ALIAS(_name.3, _name.QQ) diff --git a/src/emu/netlist/nl_setup.c b/src/emu/netlist/nl_setup.c index 3c6d07452b7..456b1ec3bec 100644 --- a/src/emu/netlist/nl_setup.c +++ b/src/emu/netlist/nl_setup.c @@ -393,7 +393,7 @@ nld_base_d_to_a_proxy *netlist_setup_t::get_d_a_proxy(netlist_output_t &out) { // create a new one ... proxy = new nld_d_to_a_proxy(out); - pstring x = pstring::sprintf("proxy_da_%d", m_proxy_cnt); + pstring x = pstring::sprintf("proxy_da_%s_%d", out.name().cstr(), m_proxy_cnt); m_proxy_cnt++; register_dev(proxy, x); @@ -423,7 +423,7 @@ void netlist_setup_t::connect_input_output(netlist_input_t &in, netlist_output_t if (out.isFamily(netlist_terminal_t::ANALOG) && in.isFamily(netlist_terminal_t::LOGIC)) { nld_a_to_d_proxy *proxy = new nld_a_to_d_proxy(in); - pstring x = pstring::sprintf("proxy_ad_%d", m_proxy_cnt); + pstring x = pstring::sprintf("proxy_ad_%s_%d", in.name().cstr(), m_proxy_cnt); m_proxy_cnt++; register_dev(proxy, x); @@ -456,7 +456,7 @@ void netlist_setup_t::connect_terminal_input(netlist_terminal_t &term, netlist_i { NL_VERBOSE_OUT(("connect_terminal_input: connecting proxy\n")); nld_a_to_d_proxy *proxy = new nld_a_to_d_proxy(inp); - pstring x = pstring::sprintf("proxy_da_%d", m_proxy_cnt); + pstring x = pstring::sprintf("proxy_ad_%s_%d", inp.name().cstr(), m_proxy_cnt); m_proxy_cnt++; register_dev(proxy, x); diff --git a/src/mame/drivers/pong.c b/src/mame/drivers/pong.c index 6c76788bd08..520b3aefee2 100644 --- a/src/mame/drivers/pong.c +++ b/src/mame/drivers/pong.c @@ -830,13 +830,17 @@ INPUT_PORTS_END #if PONGD static INPUT_PORTS_START( pongd ) -#if 0 PORT_START( "PADDLE0" ) /* fake input port for player 1 paddle */ PORT_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_SENSITIVITY(2) PORT_KEYDELTA(100) PORT_CENTERDELTA(0) NETLIST_ANALOG_PORT_CHANGED("maincpu", "pot0") PORT_START( "PADDLE1" ) /* fake input port for player 2 paddle */ PORT_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_SENSITIVITY(2) PORT_KEYDELTA(100) PORT_CENTERDELTA(0) PORT_PLAYER(2) NETLIST_ANALOG_PORT_CHANGED("maincpu", "pot1") -#endif + + PORT_START( "PADDLE2" ) /* fake input port for player 3 paddle */ + PORT_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_SENSITIVITY(2) PORT_KEYDELTA(100) PORT_CENTERDELTA(0) PORT_PLAYER(3) NETLIST_ANALOG_PORT_CHANGED("maincpu", "pot2") + + PORT_START( "PADDLE3" ) /* fake input port for player 4 paddle */ + PORT_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_SENSITIVITY(2) PORT_KEYDELTA(100) PORT_CENTERDELTA(0) PORT_PLAYER(4) NETLIST_ANALOG_PORT_CHANGED("maincpu", "pot3") PORT_START("IN0") /* fake as well */ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) NETLIST_LOGIC_PORT_CHANGED("maincpu", "coinsw") @@ -931,9 +935,11 @@ static MACHINE_CONFIG_START( pongd, pong_state ) MCFG_NETLIST_ANALOG_INPUT_MULT_OFFSET(1.0 / 100.0 * RES_K(50), RES_K(56) ) MCFG_NETLIST_ANALOG_INPUT("maincpu", "vr1", "ic_a9_R.R") MCFG_NETLIST_ANALOG_INPUT_MULT_OFFSET(1.0 / 100.0 * RES_K(50), RES_K(56) ) - MCFG_NETLIST_ANALOG_INPUT("maincpu", "pot0", "ic_b9_POT.DIAL") - MCFG_NETLIST_ANALOG_INPUT("maincpu", "pot1", "ic_a9_POT.DIAL") #endif + MCFG_NETLIST_ANALOG_INPUT("maincpu", "pot0", "A10_POT.DIAL") + MCFG_NETLIST_ANALOG_INPUT("maincpu", "pot1", "B10_POT.DIAL") + MCFG_NETLIST_ANALOG_INPUT("maincpu", "pot2", "B9B_POT.DIAL") + MCFG_NETLIST_ANALOG_INPUT("maincpu", "pot3", "B9A_POT.DIAL") MCFG_NETLIST_LOGIC_INPUT("maincpu", "sw1a", "DIPSW1.POS", 0, 0x01) MCFG_NETLIST_LOGIC_INPUT("maincpu", "sw1b", "DIPSW2.POS", 0, 0x01) MCFG_NETLIST_LOGIC_INPUT("maincpu", "coinsw", "COIN_SW.POS", 0, 0x01) |
