diff --git a/src/emu/netlist/analog/nld_twoterm.c b/src/emu/netlist/analog/nld_twoterm.c index d2d4be8e4f8..c11cea1a4aa 100644 --- a/src/emu/netlist/analog/nld_twoterm.c +++ b/src/emu/netlist/analog/nld_twoterm.c @@ -185,6 +185,7 @@ NETLIB_START(POT2) register_param("R", m_R, 1.0 / netlist().gmin()); register_param("DIAL", m_Dial, 0.5); + register_param("REVERSE", m_Reverse, 0); register_param("DIALLOG", m_DialIsLog, 0); } @@ -202,8 +203,11 @@ NETLIB_UPDATE(POT2) NETLIB_UPDATE_PARAM(POT2) { nl_double v = m_Dial.Value(); + if (m_DialIsLog.Value()) v = (exp(v) - 1.0) / (exp(1.0) - 1.0); + if (m_Reverse.Value()) + v = 1.0 - v; // FIXME: Only attached nets should be brought up to current time //netlist().solver()->update_to_current_time(); // bring up current time diff --git a/src/emu/netlist/analog/nld_twoterm.h b/src/emu/netlist/analog/nld_twoterm.h index 2f59cc92c9f..991e646a1ad 100644 --- a/src/emu/netlist/analog/nld_twoterm.h +++ b/src/emu/netlist/analog/nld_twoterm.h @@ -172,6 +172,7 @@ NETLIB_DEVICE_WITH_PARAMS(POT2, netlist_param_double_t m_R; netlist_param_double_t m_Dial; netlist_param_logic_t m_DialIsLog; + netlist_param_logic_t m_Reverse; ); diff --git a/src/emu/netlist/devices/net_lib.c b/src/emu/netlist/devices/net_lib.c index cac537c8b13..6d2167f9bb6 100644 --- a/src/emu/netlist/devices/net_lib.c +++ b/src/emu/netlist/devices/net_lib.c @@ -132,6 +132,7 @@ void nl_initialize_factory(netlist_factory_t &factory) ENTRY(NE555, NE555, "-") ENTRY(r2r_dac, R2R_DAC, "+VIN,R,N") ENTRY(4020_dip, CD_4020_DIP, "-") + ENTRY(4016_dip, CD_4016_DIP, "-") ENTRY(4066_dip, CD_4066_DIP, "-") ENTRY(7400_dip, TTL_7400_DIP, "-") ENTRY(7402_dip, TTL_7402_DIP, "-") diff --git a/src/emu/netlist/devices/nld_4066.c b/src/emu/netlist/devices/nld_4066.c index 760dc2d76ef..f512fdd598d 100644 --- a/src/emu/netlist/devices/nld_4066.c +++ b/src/emu/netlist/devices/nld_4066.c @@ -10,6 +10,7 @@ NETLIB_START(4066) { register_input("CTL", m_control); register_sub(m_R, "R"); + m_base_r = 270.0; } NETLIB_RESET(4066) @@ -23,17 +24,31 @@ NETLIB_UPDATE(4066) nl_double low = 0.45 * sup; nl_double high = 0.55 * sup; nl_double in = INPANALOG(m_control) - m_supply.get()->vss(); - nl_double rON = 270.0 * 5.0 / sup; + nl_double rON = m_base_r * 5.0 / sup; + nl_double R = -1.0; if (in < low) { - m_R.set_R(1.0 / netlist().gmin()); - m_R.update_dev(); + R = 1.0 / netlist().gmin(); } else if (in > high) { - m_R.set_R(rON); - m_R.update_dev(); + R = rON; + } + if (R > 0.0) + { + // We only need to update the net first if this is a time stepping net + if (1) // m_R.m_P.net().as_analog().solver()->is_timestep()) + { + m_R.update_dev(); + m_R.set_R(R); + m_R.m_P.schedule_after(NLTIME_FROM_NS(1)); + } + else + { + m_R.set_R(R); + m_R.update_dev(); + } } } @@ -47,6 +62,8 @@ NETLIB_START(4066_dip) register_sub(m_C, "C"); register_sub(m_D, "D"); + m_A.m_base_r = m_B.m_base_r = m_C.m_base_r = m_D.m_base_r = 270; + register_subalias("1", m_A.m_R.m_P); register_subalias("2", m_A.m_R.m_N); register_subalias("3", m_B.m_R.m_P); @@ -81,3 +98,21 @@ NETLIB_UPDATE(4066_dip) m_C.update_dev(); m_D.update_dev(); } + +NETLIB_START(4016_dip) +{ + NETLIB_NAME(4066_dip)::start(); + + m_A.m_base_r = m_B.m_base_r = m_C.m_base_r = m_D.m_base_r = 1000.0; +} + +NETLIB_RESET(4016_dip) +{ + NETLIB_NAME(4066_dip)::reset(); +} + +NETLIB_UPDATE(4016_dip) +{ + /* only called during startup */ + NETLIB_NAME(4066_dip)::update(); +} diff --git a/src/emu/netlist/devices/nld_4066.h b/src/emu/netlist/devices/nld_4066.h index 23e9afdd5b2..63bb7b764e3 100644 --- a/src/emu/netlist/devices/nld_4066.h +++ b/src/emu/netlist/devices/nld_4066.h @@ -30,6 +30,9 @@ #define CD_4066_DIP(_name) \ NET_REGISTER_DEV(4066_dip, _name) +#define CD_4016_DIP(_name) \ + NET_REGISTER_DEV(4016_dip, _name) + NETLIB_SUBDEVICE(4066, NETLIB_LOGIC_FAMILY(CD4000) public: @@ -38,6 +41,7 @@ public: NETLIB_NAME(R) m_R; netlist_state_tm_supply; + netlist_state_t m_base_r; ); NETLIB_DEVICE(4066_dip, @@ -50,4 +54,7 @@ NETLIB_DEVICE(4066_dip, NETLIB_NAME(vdd_vss) m_supply; ); +NETLIB_DEVICE_DERIVED(4016_dip, 4066_dip, +); + #endif /* NLD_4066_H_ */ diff --git a/src/emu/netlist/devices/nld_7474.c b/src/emu/netlist/devices/nld_7474.c index a56207dc8f9..d04238c0d7e 100644 --- a/src/emu/netlist/devices/nld_7474.c +++ b/src/emu/netlist/devices/nld_7474.c @@ -85,8 +85,8 @@ NETLIB_RESET(7474sub) m_nextD = 0; /* FIXME: required by pong doubles - need a mechanism to set this from netlist */ - m_Q.initial(1); - m_QQ.initial(1); + //m_Q.initial(1); + //m_QQ.initial(1); } NETLIB_START(7474_dip) diff --git a/src/emu/netlist/nl_config.h b/src/emu/netlist/nl_config.h index 100cd9bd31d..4398e992fe1 100644 --- a/src/emu/netlist/nl_config.h +++ b/src/emu/netlist/nl_config.h @@ -36,6 +36,7 @@ * */ +// FIXME: breakout doesn't like this #define USE_DEACTIVE_DEVICE (0) #define USE_TRUTHTABLE (0) diff --git a/src/mame/drivers/nl_breakout.c b/src/mame/drivers/nl_breakout.c index e321de16268..f6049f0bccf 100644 --- a/src/mame/drivers/nl_breakout.c +++ b/src/mame/drivers/nl_breakout.c @@ -169,6 +169,14 @@ CIRCUIT_LAYOUT( breakout ) SWITCH(S1_3) SWITCH(S1_4) + SWITCH2(COIN1) // Coin 1 + SWITCH2(COIN2) // Coin 2 + + SWITCH(START1) // Start 1 + SWITCH(START2) // Start 2 + + SWITCH(SERVE) // Start 2 + SWITCH(S2) // Cocktail SWITCH(S3) // 2 Plays / 25c SWITCH2(S4) // Three Balls / 5 Balls @@ -313,17 +321,17 @@ CIRCUIT_LAYOUT( breakout ) CHIP_LATCH(LATCH) //CHIP("COIN1", COIN_INPUT) - CHIP_INPUT_ACTIVE_LOW(COIN1) + //CHIP_INPUT_ACTIVE_LOW(COIN1) //CHIP("COIN2", COIN_INPUT) - CHIP_INPUT_ACTIVE_LOW(COIN2) + //CHIP_INPUT_ACTIVE_LOW(COIN2) //CHIP("START", START_INPUT) - CHIP_INPUT_ACTIVE_LOW(START1) - CHIP_INPUT_ACTIVE_HIGH(START2) + //CHIP_INPUT_ACTIVE_LOW(START1) + //CHIP_INPUT_ACTIVE_HIGH(START2) //CHIP("SERVE", BUTTONS1_INPUT) - CHIP_INPUT_ACTIVE_LOW(SERVE) // Active low? + //CHIP_INPUT_ACTIVE_LOW(SERVE) // Active low? //TODO: start 2 @@ -1186,10 +1194,15 @@ CIRCUIT_LAYOUT( breakout ) //Cabinet type // Coin Circuit - CONNECTION("COIN1", 1, "F9", 13) + CONNECTION("COIN1", 2, "F9", 13) + CONNECTION("COIN1", 1, "F9", 11) + NET_C(COIN1.Q, GND) + + //CONNECTION(CSW1, "F9", 11) + CONNECTION(CSW1, "COIN1", 1) - CONNECTION(CSW1, "F9", 11) //CONNECTION("F9", 10, "F9", 13) //TODO: causes lots of bouncing, commented out since this trace is not implemented in gotcha + CONNECTION("F9", 10, "COIN1", 2) //TODO: causes lots of bouncing, commented out since this trace is not implemented in gotcha CONNECTION(V64, "H7", 12) CONNECTION(V64, "H7", 13) @@ -1228,12 +1241,17 @@ CIRCUIT_LAYOUT( breakout ) CONNECTION("J9", 6, "L9", 4) //COIN2 circuit - CONNECTION("COIN2", 1, "F9", 1) + //CONNECTION("COIN2", 1, "F9", 1) //CONNECTION(GNDD, "F9", 1) //TODO: coin2 not implemented - CONNECTION(CSW2, "F9", 3) + CONNECTION("COIN2", 2, "F9", 1) + CONNECTION("COIN2", 1, "F9", 3) + NET_C(COIN2.Q, GND) + + CONNECTION(CSW2, "COIN2", 1) CONNECTION(CSW2, "H9", 10) CONNECTION("F9", 4, "H9", 12) + CONNECTION("F9", 4, "COIN2", 2) CONNECTION(V64_n, "H9", 11) CONNECTION(V64_n, "H9", 3) CONNECTION(P, "H9", 13) @@ -1256,8 +1274,13 @@ CIRCUIT_LAYOUT( breakout ) CONNECTION("E9", 8, "H1", 2) //Start2 Input + //Start1 Input + RES(R58, RES_K(1)) //CONNECTION("START", 2, "E9", 11) - CONNECTION("START2", 1, "E9", 11) + NET_C(START2.2, GND) + NET_C(R58.1, V5) + NET_C(START2.1, R58.2, E9.11) + CONNECTION("E9", 10, "E8", 12) CONNECTION(P, "E8", 10) CONNECTION(V64I, "E8", 11) @@ -1270,8 +1293,11 @@ CIRCUIT_LAYOUT( breakout ) CONNECTION("E7", 13, "E8", 13) //Start1 Input + RES(R57, RES_K(1)) //CONNECTION("START", 1, "E9", 3) - CONNECTION("START1", 1, "E9", 3) + NET_C(START1.2, GND) + NET_C(R57.1, V5) + NET_C(START1.1, R57.2, E9.3) CONNECTION("E9", 4, "E8", 2) CONNECTION(P, "E8", 4) CONNECTION(V64_d, "E8", 3) @@ -1308,6 +1334,12 @@ CIRCUIT_LAYOUT( breakout ) CONNECTION(EGL_n, "D6", 2) //Serve + + RES(R30, RES_K(1)) + NET_C(SERVE.2, GND) + NET_C(SERVE.1, R30.2) + NET_C(R30.1, V5) + CONNECTION(H64, "J3", 6) CONNECTION(H32, "J3", 5) CONNECTION("J3", 4, "L4", 13) @@ -1682,15 +1714,31 @@ CIRCUIT_LAYOUT( breakout ) #endif // POTS - POT2(POTP1, RES_K(6)) // 5k - PARAM(POTP1, 0) // Log Dial ... + POT2(POTP1, RES_K(5)) // 5k + PARAM(POTP1.DIALLOG, 1) // Log Dial ... + PARAM(POTP1.REVERSE, 1) // Log Dial ... + NET_C(POTP1.1, V5) + + POT2(POTP2, RES_K(5)) // 5k + PARAM(POTP2.DIALLOG, 1) // Log Dial ... + PARAM(POTP2.REVERSE, 1) // Log Dial ... + NET_C(POTP2.1, V5) + RES(R33, 47) - NET_C(POTP1.1, V5) - //NET_C(POTP1.3, GND) - NET_C(POTP1.2, R33.1) + CD_4016_DIP(D9) + NET_C(D9.7, GND) + NET_C(D9.14, V5) + + CONNECTION(P2_CONDITIONAL_dash, "D9", 6) + NET_C(D9.12, E9.8) + NET_C(D9.8, POTP2.2) // Connect P2 dial here + NET_C(D9.11, POTP1.2) + + NET_C(D9.9, D9.10, R33.1) NET_C(R33.2, C9.6) + NET_C(GND, D9.1, D9.2, D9.13, D9.3, D9.4, D9.5) CIRCUIT_LAYOUT_END #endif diff --git a/src/mame/drivers/pong.c b/src/mame/drivers/pong.c index d216cc0dbd7..44505e17c54 100644 --- a/src/mame/drivers/pong.c +++ b/src/mame/drivers/pong.c @@ -244,16 +244,12 @@ static INPUT_PORTS_START( pongd ) INPUT_PORTS_END static INPUT_PORTS_START( breakout ) -#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_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_SENSITIVITY(1) PORT_KEYDELTA(200) PORT_CENTERDELTA(0) NETLIST_ANALOG_PORT_CHANGED("maincpu", "pot1") 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( "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_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_SENSITIVITY(1) PORT_KEYDELTA(200) PORT_CENTERDELTA(0) PORT_PLAYER(2) NETLIST_ANALOG_PORT_CHANGED("maincpu", "pot2") PORT_START("IN0") /* fake as well */ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) NETLIST_LOGIC_PORT_CHANGED("maincpu", "coinsw1") @@ -262,11 +258,18 @@ static INPUT_PORTS_START( breakout ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 ) NETLIST_LOGIC_PORT_CHANGED("maincpu", "startsw2") PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) NETLIST_LOGIC_PORT_CHANGED("maincpu", "servesw") -#if 0 - PORT_DIPNAME( 0x06, 0x00, "Game Won" ) PORT_DIPLOCATION("SW1A:1,SW1B:1") PORT_CHANGED_MEMBER(DEVICE_SELF, pong_state, input_changed, IC_SWITCH) - PORT_DIPSETTING( 0x00, "11" ) - PORT_DIPSETTING( 0x06, "15" ) + PORT_START("DIPS") + PORT_DIPNAME( 0x01, 0x00, "Balls" ) PORT_DIPLOCATION("SW4:1") NETLIST_LOGIC_PORT_CHANGED("maincpu", "sw4") + PORT_DIPSETTING( 0x00, "3" ) + PORT_DIPSETTING( 0x01, "5" ) + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW3:1") NETLIST_LOGIC_PORT_CHANGED("maincpu", "sw3") + PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:1") NETLIST_LOGIC_PORT_CHANGED("maincpu", "sw2") + PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Upright ) ) +#if 0 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Antenna") NETLIST_LOGIC_PORT_CHANGED("maincpu", "antenna") PORT_START("VR1") @@ -326,12 +329,16 @@ static MACHINE_CONFIG_START( breakout, breakout_state ) MCFG_NETLIST_LOGIC_INPUT("maincpu", "sw1a", "sw1a.POS", 0, 0x01) MCFG_NETLIST_LOGIC_INPUT("maincpu", "sw1b", "sw1b.POS", 0, 0x01) #endif - MCFG_NETLIST_ANALOG_INPUT("maincpu", "pot0", "POTP1.DIAL") - MCFG_NETLIST_LOGIC_INPUT("maincpu", "coinsw1", "COIN1_SW.POS", 0, 0x01) - MCFG_NETLIST_LOGIC_INPUT("maincpu", "coinsw2", "COIN2_SW.POS", 0, 0x01) - MCFG_NETLIST_LOGIC_INPUT("maincpu", "startsw1", "START1_SW.POS", 0, 0x01) - MCFG_NETLIST_LOGIC_INPUT("maincpu", "startsw2", "START2_SW.POS", 0, 0x01) - MCFG_NETLIST_LOGIC_INPUT("maincpu", "servesw", "SERVE_SW.POS", 0, 0x01) + MCFG_NETLIST_ANALOG_INPUT("maincpu", "pot1", "POTP1.DIAL") + MCFG_NETLIST_ANALOG_INPUT("maincpu", "pot2", "POTP2.DIAL") + MCFG_NETLIST_LOGIC_INPUT("maincpu", "coinsw1", "COIN1.POS", 0, 0x01) + MCFG_NETLIST_LOGIC_INPUT("maincpu", "coinsw2", "COIN2.POS", 0, 0x01) + MCFG_NETLIST_LOGIC_INPUT("maincpu", "startsw1", "START1.POS", 0, 0x01) + MCFG_NETLIST_LOGIC_INPUT("maincpu", "startsw2", "START2.POS", 0, 0x01) + MCFG_NETLIST_LOGIC_INPUT("maincpu", "servesw", "SERVE.POS", 0, 0x01) + MCFG_NETLIST_LOGIC_INPUT("maincpu", "sw4", "S4.POS", 0, 0x01) + MCFG_NETLIST_LOGIC_INPUT("maincpu", "sw3", "S3.POS", 0, 0x01) + MCFG_NETLIST_LOGIC_INPUT("maincpu", "sw2", "S2.POS", 0, 0x01) #if 0 MCFG_NETLIST_LOGIC_INPUT("maincpu", "antenna", "antenna.IN", 0, 0x01) #endif diff --git a/src/mess/drivers/hh_cop400.c b/src/mess/drivers/hh_cop400.c index 868ba2902d4..67fa4c0d6ba 100644 --- a/src/mess/drivers/hh_cop400.c +++ b/src/mess/drivers/hh_cop400.c @@ -13,7 +13,7 @@ // internal artwork #include "einvaderc.lh" // test-layout(but still playable) -#include "lightfgt.lh" +#include "lightfgt.lh" // clickable //#include "hh_cop400_test.lh" // common test-layout - use external artwork @@ -342,9 +342,21 @@ MACHINE_CONFIG_END /*************************************************************************** - Milton Bradley Lightfight + Milton Bradley (Electronic) Lightfight * COP421L MCU labeled /B119 COP421L-HLA/N * LED matrix, 1bit sound + + Xbox-shaped electronic game for 2 or more players, with long diagonal buttons + next to each outer LED. The main object of the game is to pinpoint a light + by pressing 2 buttons. To start, press a skill-level button(P2 button 7/8/9) + after selecting a game mode(P1 button 6-10). + + The game variations are: + 1: LightFight + 2: NightFight + 3: RiteSite + 4: QuiteBrite + 5: RightLight ***************************************************************************/ @@ -401,11 +413,9 @@ WRITE_LINE_MEMBER(lightfgt_state::write_sk) READ8_MEMBER(lightfgt_state::read_g) { - return 0xf; - // G: multiplexed inputs m_inp_mux = (m_so | m_d << 1) ^ 0x1f; - return read_inputs(5); + return read_inputs(5) ^ 0xf; } @@ -413,16 +423,40 @@ READ8_MEMBER(lightfgt_state::read_g) static INPUT_PORTS_START( lightfgt ) PORT_START("IN.0") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON6 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) // note: button 1 is on the left side from player perspective + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON10 ) PORT_COCKTAIL + + PORT_START("IN.1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON9 ) PORT_COCKTAIL + + PORT_START("IN.2") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON8 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_COCKTAIL + + PORT_START("IN.3") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON9 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON4 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_COCKTAIL + + PORT_START("IN.4") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON10 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON5 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_COCKTAIL INPUT_PORTS_END static MACHINE_CONFIG_START( lightfgt, lightfgt_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", COP421, 1000000) // approximation - RC osc. R=82K to +6V, C=56pf to GND(-6V) + MCFG_CPU_ADD("maincpu", COP421, 950000) // approximation - RC osc. R=82K to +6V, C=56pf to GND(-6V) MCFG_COP400_CONFIG(COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, COP400_MICROBUS_DISABLED) // guessed MCFG_COP400_WRITE_SO_CB(WRITELINE(lightfgt_state, write_so)) MCFG_COP400_WRITE_SK_CB(WRITELINE(lightfgt_state, write_sk)) @@ -464,6 +498,7 @@ ROM_END -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -CONS( 1981, einvaderc, einvader, 0, einvaderc, einvaderc, driver_device, 0, "Entex", "Space Invader (Entex, COP444)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING ) -CONS( 1981, lightfgt, 0, 0, lightfgt, lightfgt, driver_device, 0, "Milton Bradley", "Lightfight", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ +CONS( 1981, einvaderc, einvader, 0, einvaderc, einvaderc, driver_device, 0, "Entex", "Space Invader (Entex, COP444)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING ) + +CONS( 1981, lightfgt, 0, 0, lightfgt, lightfgt, driver_device, 0, "Milton Bradley", "Lightfight", GAME_SUPPORTS_SAVE ) diff --git a/src/mess/drivers/vt240.c b/src/mess/drivers/vt240.c index f14845b6c46..eebf91dfd63 100644 --- a/src/mess/drivers/vt240.c +++ b/src/mess/drivers/vt240.c @@ -15,6 +15,7 @@ 0x0071: RAM fill to 0x00 0x1c8f: UPD7220 + // vt240: x2212 nvram at E56 ****************************************************************************/ #include "emu.h" @@ -267,6 +268,35 @@ ROM_START( mc7105 ) ROM_LOAD16_BYTE( "032.bin", 0x10001, 0x8000, CRC(e81d93c4) SHA1(982412a7a6e65d6f6b4f66bd093e54ee16f31384)) ROM_END +/* ROM definition */ +ROM_START( vt240 ) + ROM_REGION( 0x10000, "charcpu", ROMREGION_ERASEFF ) + ROM_LOAD( "23-008e6-00.e100", 0x0000, 0x8000, CRC(ebc8a2fe) SHA1(70838175f8302fdc0dee79b2403fa95e6d989206)) + + ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF ) + ROM_DEFAULT_BIOS( "vt240" ) + ROM_SYSTEM_BIOS( 0, "vt240o", "VT240 older" ) + ROMX_LOAD( "23-004e6-00.e22", 0x00000, 0x8000, CRC(EBA10FEF) SHA1(C0EE4D8E4EEB70066F03F3D17A7E2F2BD0B5F8AD), ROM_SKIP(1) | ROM_BIOS(1)) + ROMX_LOAD( "23-005e6-00.e21", 0x00001, 0x8000, CRC(558D0285) SHA1(E96A49BF9D55D8AB879D9B39AA380368C5C9ADE0), ROM_SKIP(1) | ROM_BIOS(1)) + ROMX_LOAD( "23-006e6-00.e20", 0x10000, 0x8000, CRC(79C11D82) SHA1(5A6FE5B75B6504A161F2C9B148C0FE9F19770837), ROM_SKIP(1) | ROM_BIOS(1)) + ROMX_LOAD( "23-007e6-00.e19", 0x10001, 0x8000, CRC(D18A2AB8) SHA1(37F448A332FC50298007ED39C8BF1AB1EB6D4CAE), ROM_SKIP(1) | ROM_BIOS(1)) + ROM_SYSTEM_BIOS( 1, "vt240", "VT240 newer" ) + ROMX_LOAD( "23-056e6.e22", 0x00000, 0x8000, CRC(C46E13C3) SHA1(0F2801FA7483D1F97708143CD81AE0816BF9A435), ROM_SKIP(1) | ROM_BIOS(2)) + ROMX_LOAD( "23-057e6.e21", 0x00001, 0x8000, CRC(7CE9DCE9) SHA1(5A105E5BDCA13910B3B79CC23567CE2DC36B844D), ROM_SKIP(1) | ROM_BIOS(2)) + ROMX_LOAD( "23-058e6.e20", 0x10000, 0x8000, CRC(D2A56B90) SHA1(39CBB26134D7D8BA308DF3A93228918A5945B45F), ROM_SKIP(1) | ROM_BIOS(2)) + ROMX_LOAD( "23-059e6.e19", 0x10001, 0x8000, CRC(F8393346) SHA1(1E28DAF1B7F2BDABC47CE2F6FA99EF038B275A29), ROM_SKIP(1) | ROM_BIOS(2)) + + ROM_REGION( 0x1000, "proms", ROMREGION_ERASEFF ) + ROM_LOAD( "23-351a1.e149", 0x0000, 0x0020, NO_DUMP) // 82s123; DRAM RAS/CAS Timing PROM + ROM_LOAD( "23-352a1.e187", 0x0020, 0x0020, NO_DUMP) // 82s123; "CT0" Timing PROM + ROM_LOAD( "23-369a1.e53", 0x0040, 0x0020, NO_DUMP) // 82s123; ROM and RAM mapping PROM + ROM_LOAD( "23-370a1.e188", 0x0060, 0x0020, NO_DUMP) // 82s123; "CT1" Timing PROM + ROM_LOAD( "23-994a9.e74", 0x0100, 0x0200, NO_DUMP) // 82s131; T11 Interrupt Encoder PROM + + ROM_REGION( 0x1000, "pals", 0 ) + ROM_LOAD( "23-087j5.e182.e183.jed", 0x0000, 0x1000, NO_DUMP ) // PAL16L8ACN; "Logic Unit" Character Pattern Related +ROM_END + /* Driver */ DRIVER_INIT_MEMBER(vt240_state,vt240) { @@ -283,7 +313,7 @@ DRIVER_INIT_MEMBER(vt240_state,vt240) ROM[0x15e] = 0x00; } -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -//COMP( 1983, vt240, 0, 0, vt220, vt220, driver_device, 0, "Digital Equipment Corporation", "VT240", GAME_NOT_WORKING | GAME_NO_SOUND) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1983, vt240, 0, 0, mc7105, vt240, vt240_state, vt240, "Digital Equipment Corporation", "VT240", GAME_NOT_WORKING | GAME_NO_SOUND) //COMP( 1983, vt241, 0, 0, vt220, vt220, driver_device, 0, "Digital Equipment Corporation", "VT241", GAME_NOT_WORKING | GAME_NO_SOUND) COMP( 1983, mc7105, 0, 0, mc7105, vt240, vt240_state, vt240, "Elektronika", "MC7105", GAME_NOT_WORKING | GAME_NO_SOUND) diff --git a/src/mess/layout/lightfgt.lay b/src/mess/layout/lightfgt.lay index 20cd9801eb4..cd0a06b9e51 100644 --- a/src/mess/layout/lightfgt.lay +++ b/src/mess/layout/lightfgt.lay @@ -4,52 +4,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mess/mess.lst b/src/mess/mess.lst index 2b84b709fd8..3fde7a755be 100644 --- a/src/mess/mess.lst +++ b/src/mess/mess.lst @@ -1662,7 +1662,7 @@ vt520 // 1994 Digital Equipment Corporation //vt525 vk100 // 1980 Digital Equipment Corporation dectalk // 1983 Digital Equipment Corporation -//vt240 // 1983 Digital Equipment Corporation +vt240 // 1983 Digital Equipment Corporation //vt241 mc7105 // Elektronika MC7105 rainbow100a // 1982 DEC Rainbow 100-A