diff options
Diffstat (limited to 'src/mame/drivers/hh_cop400.cpp')
-rw-r--r-- | src/mame/drivers/hh_cop400.cpp | 325 |
1 files changed, 163 insertions, 162 deletions
diff --git a/src/mame/drivers/hh_cop400.cpp b/src/mame/drivers/hh_cop400.cpp index 66f827f7fbd..ac2871d1a2d 100644 --- a/src/mame/drivers/hh_cop400.cpp +++ b/src/mame/drivers/hh_cop400.cpp @@ -11,7 +11,7 @@ - vidchal: Add screen and gun cursor with brightness detection callback, and softwarelist for the video tapes. We'd also need a VHS player device. The emulated lightgun itself appears to be working fine(eg. add a 30hz - timer to IN.3 to score +100) + timer to IN3 to score +100) ***************************************************************************/ @@ -22,6 +22,7 @@ #include "sound/spkrdev.h" #include "sound/dac.h" #include "sound/volt_reg.h" +//#include "rendlay.h" #include "screen.h" #include "speaker.h" @@ -47,8 +48,8 @@ class hh_cop400_state : public driver_device { public: - hh_cop400_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), + hh_cop400_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_inp_matrix(*this, "IN.%u", 0), m_out_x(*this, "%u.%u", 0U, 0U), @@ -77,7 +78,6 @@ public: u16 m_inp_mux; // multiplexed inputs mask u16 read_inputs(int columns, u16 colmask = ~0); - virtual DECLARE_INPUT_CHANGED_MEMBER(reset_button); // display common int m_display_wait; // led/lamp off-delay in milliseconds (default 33ms) @@ -239,22 +239,14 @@ u16 hh_cop400_state::read_inputs(int columns, u16 colmask) return ret; } -INPUT_CHANGED_MEMBER(hh_cop400_state::reset_button) -{ - // when an input is directly wired to MCU reset pin - m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE); -} - /*************************************************************************** - Minidrivers (subclass, I/O, Inputs, Machine Config, ROM Defs) + Minidrivers (subclass, I/O, Inputs, Machine Config) ***************************************************************************/ -namespace { - /*************************************************************************** Castle Toy Einstein @@ -269,8 +261,8 @@ namespace { class ctstein_state : public hh_cop400_state { public: - ctstein_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_cop400_state(mconfig, type, tag) + ctstein_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_cop400_state(mconfig, type, tag) { } DECLARE_WRITE8_MEMBER(write_g); @@ -339,13 +331,6 @@ void ctstein_state::ctstein(machine_config &config) SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25); } -// roms - -ROM_START( ctstein ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "cop421-nez_n", 0x0000, 0x0400, CRC(16148e03) SHA1(b2b74891d36813d9a1eefd56a925054997c4b7f7) ) // 2nd half empty -ROM_END - @@ -363,15 +348,14 @@ ROM_END An earlier revision of this runs on TMS1000, see hh_tms1k.cpp driver. Model numbers are the same. From the outside, an easy way to spot the difference is the Start/Display button: TMS1000 version button label is D, COP420 one is a *. - The COP420 version also plays much slower. ***************************************************************************/ class h2hbaskbc_state : public hh_cop400_state { public: - h2hbaskbc_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_cop400_state(mconfig, type, tag) + h2hbaskbc_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_cop400_state(mconfig, type, tag) { } DECLARE_WRITE8_MEMBER(write_d); @@ -473,8 +457,8 @@ INPUT_PORTS_END void h2hbaskbc_state::h2hbaskbc(machine_config &config) { /* basic machine hardware */ - COP420(config, m_maincpu, 1000000); // approximation - RC osc. R=43K, C=101pF - m_maincpu->set_config(COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, false); // guessed + COP420(config, m_maincpu, 850000); // approximation - RC osc. R=43K, C=101pF + m_maincpu->set_config(COP400_CKI_DIVISOR_8, COP400_CKO_OSCILLATOR_OUTPUT, false); // guessed m_maincpu->write_d().set(FUNC(h2hbaskbc_state::write_d)); m_maincpu->write_g().set(FUNC(h2hbaskbc_state::write_g)); m_maincpu->write_l().set(FUNC(h2hbaskbc_state::write_l)); @@ -501,16 +485,6 @@ void h2hbaskbc_state::h2hsoccerc(machine_config &config) config.set_default_layout(layout_h2hsoccerc); } -// roms - -ROM_START( h2hbaskbc ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "cop420l-nmy", 0x0000, 0x0400, CRC(87152509) SHA1(acdb869b65d49b3b9855a557ed671cbbb0f61e2c) ) -ROM_END - -#define rom_h2hhockeyc rom_h2hbaskbc // dumped from Basketball -#define rom_h2hsoccerc rom_h2hbaskbc // " - @@ -529,8 +503,8 @@ ROM_END class einvaderc_state : public hh_cop400_state { public: - einvaderc_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_cop400_state(mconfig, type, tag) + einvaderc_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_cop400_state(mconfig, type, tag) { } void prepare_display(); @@ -620,7 +594,7 @@ void einvaderc_state::einvaderc(machine_config &config) screen.set_svg_region("svg"); screen.set_refresh_hz(50); screen.set_size(913, 1080); - screen.set_visarea_full(); + screen.set_visarea(0, 913-1, 0, 1080-1); TIMER(config, "display_decay").configure_periodic(FUNC(hh_cop400_state::display_decay_tick), attotime::from_msec(1)); config.set_default_layout(layout_einvaderc); @@ -630,16 +604,6 @@ void einvaderc_state::einvaderc(machine_config &config) SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25); } -// roms - -ROM_START( einvaderc ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "copl444-hrz_n_inv_ii", 0x0000, 0x0800, CRC(76400f38) SHA1(0e92ab0517f7b7687293b189d30d57110df20fe0) ) - - ROM_REGION( 80636, "svg", 0) - ROM_LOAD( "einvaderc.svg", 0, 80636, CRC(a52d0166) SHA1(f69397ebcc518701f30a47b4d62e5a700825375a) ) -ROM_END - @@ -661,8 +625,8 @@ ROM_END class unkeinv_state : public hh_cop400_state { public: - unkeinv_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_cop400_state(mconfig, type, tag) + unkeinv_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_cop400_state(mconfig, type, tag) { } void prepare_display(); @@ -671,7 +635,7 @@ public: DECLARE_WRITE8_MEMBER(write_l); DECLARE_READ8_MEMBER(read_l); - DECLARE_INPUT_CHANGED_MEMBER(position_changed) { prepare_display(); } + DECLARE_INPUT_CHANGED_MEMBER(position_changed); void unkeinv(machine_config &config); }; @@ -730,6 +694,11 @@ READ8_MEMBER(unkeinv_state::read_l) // config +INPUT_CHANGED_MEMBER(unkeinv_state::position_changed) +{ + prepare_display(); +} + static INPUT_PORTS_START( unkeinv ) PORT_START("IN.0") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) @@ -758,13 +727,6 @@ void unkeinv_state::unkeinv(machine_config &config) SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25); } -// roms - -ROM_START( unkeinv ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "cop421_us4345764", 0x0000, 0x0400, CRC(0068c3a3) SHA1(4e5fd566a5a26c066cc14623a9bd01e109ebf797) ) // typed in from patent US4345764, good print quality -ROM_END - @@ -787,8 +749,8 @@ ROM_END class lchicken_state : public hh_cop400_state { public: - lchicken_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_cop400_state(mconfig, type, tag) + lchicken_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_cop400_state(mconfig, type, tag) { } u8 m_motor_pos; @@ -807,22 +769,8 @@ protected: virtual void machine_start() override; }; -void lchicken_state::machine_start() -{ - hh_cop400_state::machine_start(); - - // zerofill, register for savestates - m_motor_pos = 0; - save_item(NAME(m_motor_pos)); -} - // handlers -CUSTOM_INPUT_MEMBER(lchicken_state::motor_switch) -{ - return m_motor_pos > 0xe8; // approximation -} - TIMER_DEVICE_CALLBACK_MEMBER(lchicken_state::motor_sim_tick) { if (~m_inp_mux & 8) @@ -900,6 +848,20 @@ static INPUT_PORTS_START( lchicken ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, lchicken_state, motor_switch, nullptr) INPUT_PORTS_END +CUSTOM_INPUT_MEMBER(lchicken_state::motor_switch) +{ + return m_motor_pos > 0xe8; // approximation +} + +void lchicken_state::machine_start() +{ + hh_cop400_state::machine_start(); + + // zerofill, register for savestates + m_motor_pos = 0; + save_item(NAME(m_motor_pos)); +} + void lchicken_state::lchicken(machine_config &config) { /* basic machine hardware */ @@ -921,13 +883,6 @@ void lchicken_state::lchicken(machine_config &config) SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25); } -// roms - -ROM_START( lchicken ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "cop421-njc_n", 0x0000, 0x0400, CRC(319e7985) SHA1(9714327518f65ebefe38ac7911bed2b9b9c77307) ) -ROM_END - @@ -943,8 +898,8 @@ ROM_END class funjacks_state : public hh_cop400_state { public: - funjacks_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_cop400_state(mconfig, type, tag) + funjacks_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_cop400_state(mconfig, type, tag) { } DECLARE_WRITE8_MEMBER(write_d); @@ -1035,13 +990,6 @@ void funjacks_state::funjacks(machine_config &config) SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25); } -// roms - -ROM_START( funjacks ) - ROM_REGION( 0x0200, "maincpu", 0 ) - ROM_LOAD( "cop410l_b_ngs", 0x0000, 0x0200, CRC(863368ea) SHA1(f116cc27ae721b3a3e178fa13765808bdc275663) ) -ROM_END - @@ -1061,13 +1009,15 @@ ROM_END class funrlgl_state : public hh_cop400_state { public: - funrlgl_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_cop400_state(mconfig, type, tag) + funrlgl_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_cop400_state(mconfig, type, tag) { } DECLARE_WRITE8_MEMBER(write_d); DECLARE_WRITE8_MEMBER(write_l); DECLARE_WRITE8_MEMBER(write_g); + + DECLARE_INPUT_CHANGED_MEMBER(reset_button); void funrlgl(machine_config &config); }; @@ -1106,9 +1056,15 @@ static INPUT_PORTS_START( funrlgl ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("RESET") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_cop400_state, reset_button, nullptr) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, funrlgl_state, reset_button, nullptr) INPUT_PORTS_END +INPUT_CHANGED_MEMBER(funrlgl_state::reset_button) +{ + // middle button is directly tied to MCU reset pin + m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE); +} + void funrlgl_state::funrlgl(machine_config &config) { /* basic machine hardware */ @@ -1128,13 +1084,6 @@ void funrlgl_state::funrlgl(machine_config &config) SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25); } -// roms - -ROM_START( funrlgl ) - ROM_REGION( 0x0200, "maincpu", 0 ) - ROM_LOAD( "cop410l_b_nhz", 0x0000, 0x0200, CRC(4065c3ce) SHA1(f0bc8125d922949e0d7ab1ba89c805a836d20e09) ) -ROM_END - @@ -1152,8 +1101,8 @@ ROM_END class mdallas_state : public hh_cop400_state { public: - mdallas_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_cop400_state(mconfig, type, tag) + mdallas_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_cop400_state(mconfig, type, tag) { } void prepare_display(); @@ -1270,13 +1219,6 @@ void mdallas_state::mdallas(machine_config &config) SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25); } -// roms - -ROM_START( mdallas ) - ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "copl444l-hyn_n", 0x0000, 0x0800, CRC(7848b78c) SHA1(778d24512180892f58c49df3c72ca77b2618d63b) ) -ROM_END - @@ -1295,8 +1237,8 @@ ROM_END class plus1_state : public hh_cop400_state { public: - plus1_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_cop400_state(mconfig, type, tag) + plus1_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_cop400_state(mconfig, type, tag) { } DECLARE_WRITE8_MEMBER(write_d); @@ -1358,13 +1300,6 @@ void plus1_state::plus1(machine_config &config) SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25); } -// roms - -ROM_START( plus1 ) - ROM_REGION( 0x0200, "maincpu", 0 ) - ROM_LOAD( "cop410l_b_nne", 0x0000, 0x0200, CRC(d861b80c) SHA1(4652f8ee0dd4c3c48b625285bb4f094d96434071) ) -ROM_END - @@ -1392,8 +1327,8 @@ ROM_END class lightfgt_state : public hh_cop400_state { public: - lightfgt_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_cop400_state(mconfig, type, tag) + lightfgt_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_cop400_state(mconfig, type, tag) { } void prepare_display(); @@ -1494,13 +1429,6 @@ void lightfgt_state::lightfgt(machine_config &config) SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25); } -// roms - -ROM_START( lightfgt ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "cop421l-hla_n", 0x0000, 0x0400, CRC(aceb2d65) SHA1(2328cbb195faf93c575f3afa3a1fe0079180edd7) ) -ROM_END - @@ -1517,8 +1445,8 @@ ROM_END class bship82_state : public hh_cop400_state { public: - bship82_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_cop400_state(mconfig, type, tag) + bship82_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_cop400_state(mconfig, type, tag) { } DECLARE_WRITE8_MEMBER(write_d); @@ -1652,19 +1580,13 @@ void bship82_state::bship82(machine_config &config) /* sound hardware */ SPEAKER(config, "mono").front_center(); - DAC_4BIT_BINARY_WEIGHTED_SIGN_MAGNITUDE(config, "dac").add_route(ALL_OUTPUTS, "mono", 0.125); // see above - voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); + DAC_4BIT_BINARY_WEIGHTED_SIGN_MAGNITUDE(config, "dac", 0).add_route(ALL_OUTPUTS, "mono", 0.125); // see above + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); + vref.set_output(5.0); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); } -// roms - -ROM_START( bship82 ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "cop420-jwe_n", 0x0000, 0x0400, CRC(5ea8111a) SHA1(34931463b806b48dce4f8ae2361512510bae0ebf) ) -ROM_END - @@ -1682,8 +1604,8 @@ ROM_END class qkracer_state : public hh_cop400_state { public: - qkracer_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_cop400_state(mconfig, type, tag) + qkracer_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_cop400_state(mconfig, type, tag) { } void prepare_display(); @@ -1792,13 +1714,6 @@ void qkracer_state::qkracer(machine_config &config) /* no sound! */ } -// roms - -ROM_START( qkracer ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "cop420-npg_n", 0x0000, 0x0400, CRC(17f8e538) SHA1(23d1a1819e6ba552d8da83da2948af1cf5b13d5b) ) -ROM_END - @@ -1823,8 +1738,8 @@ ROM_END class vidchal_state : public hh_cop400_state { public: - vidchal_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_cop400_state(mconfig, type, tag) + vidchal_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_cop400_state(mconfig, type, tag) { } void prepare_display(); @@ -1870,7 +1785,7 @@ static INPUT_PORTS_START( vidchal ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_F1) PORT_NAME("Light Sensor") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) // TODO: light sensor INPUT_PORTS_END void vidchal_state::vidchal(machine_config &config) @@ -1889,33 +1804,119 @@ void vidchal_state::vidchal(machine_config &config) /* sound hardware */ SPEAKER(config, "mono").front_center(); - DAC_4BIT_BINARY_WEIGHTED_SIGN_MAGNITUDE(config, "dac").add_route(ALL_OUTPUTS, "mono", 0.125); // unknown DAC - voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); + DAC_4BIT_BINARY_WEIGHTED_SIGN_MAGNITUDE(config, "dac", 0).add_route(ALL_OUTPUTS, "mono", 0.125); // unknown DAC + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); + vref.set_output(5.0); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); } -// roms -ROM_START( vidchal ) - ROM_REGION( 0x0400, "maincpu", 0 ) - ROM_LOAD( "cop420-tdx_n", 0x0000, 0x0400, CRC(c9bd041c) SHA1(ab0dcaf4741620fa4c28ab75337a23d646af7626) ) -ROM_END -} // anonymous namespace - /*************************************************************************** Game driver(s) ***************************************************************************/ +ROM_START( ctstein ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "cop421-nez_n", 0x0000, 0x0400, CRC(16148e03) SHA1(b2b74891d36813d9a1eefd56a925054997c4b7f7) ) // 2nd half empty +ROM_END + + +ROM_START( h2hbaskbc ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "cop420l-nmy", 0x0000, 0x0400, CRC(87152509) SHA1(acdb869b65d49b3b9855a557ed671cbbb0f61e2c) ) +ROM_END + +ROM_START( h2hhockeyc ) // dumped from Basketball + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "cop420l-nmy", 0x0000, 0x0400, CRC(87152509) SHA1(acdb869b65d49b3b9855a557ed671cbbb0f61e2c) ) +ROM_END + +ROM_START( h2hsoccerc ) // dumped from Basketball + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "cop420l-nmy", 0x0000, 0x0400, CRC(87152509) SHA1(acdb869b65d49b3b9855a557ed671cbbb0f61e2c) ) +ROM_END + + +ROM_START( einvaderc ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "copl444-hrz_n_inv_ii", 0x0000, 0x0800, CRC(76400f38) SHA1(0e92ab0517f7b7687293b189d30d57110df20fe0) ) + + ROM_REGION( 80636, "svg", 0) + ROM_LOAD( "einvaderc.svg", 0, 80636, CRC(a52d0166) SHA1(f69397ebcc518701f30a47b4d62e5a700825375a) ) +ROM_END + + +ROM_START( unkeinv ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "cop421_us4345764", 0x0000, 0x0400, CRC(0068c3a3) SHA1(4e5fd566a5a26c066cc14623a9bd01e109ebf797) ) // typed in from patent US4345764, good print quality +ROM_END + + +ROM_START( lchicken ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "cop421-njc_n", 0x0000, 0x0400, CRC(319e7985) SHA1(9714327518f65ebefe38ac7911bed2b9b9c77307) ) +ROM_END + + +ROM_START( funjacks ) + ROM_REGION( 0x0200, "maincpu", 0 ) + ROM_LOAD( "cop410l_b_ngs", 0x0000, 0x0200, CRC(863368ea) SHA1(f116cc27ae721b3a3e178fa13765808bdc275663) ) +ROM_END + + +ROM_START( funrlgl ) + ROM_REGION( 0x0200, "maincpu", 0 ) + ROM_LOAD( "cop410l_b_nhz", 0x0000, 0x0200, CRC(4065c3ce) SHA1(f0bc8125d922949e0d7ab1ba89c805a836d20e09) ) +ROM_END + + +ROM_START( mdallas ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "copl444l-hyn_n", 0x0000, 0x0800, CRC(7848b78c) SHA1(778d24512180892f58c49df3c72ca77b2618d63b) ) +ROM_END + + +ROM_START( plus1 ) + ROM_REGION( 0x0200, "maincpu", 0 ) + ROM_LOAD( "cop410l_b_nne", 0x0000, 0x0200, CRC(d861b80c) SHA1(4652f8ee0dd4c3c48b625285bb4f094d96434071) ) +ROM_END + + +ROM_START( lightfgt ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "cop421l-hla_n", 0x0000, 0x0400, CRC(aceb2d65) SHA1(2328cbb195faf93c575f3afa3a1fe0079180edd7) ) +ROM_END + + +ROM_START( bship82 ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "cop420-jwe_n", 0x0000, 0x0400, CRC(5ea8111a) SHA1(34931463b806b48dce4f8ae2361512510bae0ebf) ) +ROM_END + + +ROM_START( qkracer ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "cop420-npg_n", 0x0000, 0x0400, CRC(17f8e538) SHA1(23d1a1819e6ba552d8da83da2948af1cf5b13d5b) ) +ROM_END + + +ROM_START( vidchal ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "cop420-tdx_n", 0x0000, 0x0400, CRC(c9bd041c) SHA1(ab0dcaf4741620fa4c28ab75337a23d646af7626) ) +ROM_END + + + // YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS CONS( 1979, ctstein, 0, 0, ctstein, ctstein, ctstein_state, empty_init, "Castle Toy", "Einstein (Castle Toy)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1980, h2hbaskbc, h2hbaskb, 0, h2hbaskbc, h2hbaskbc, h2hbaskbc_state, empty_init, "Coleco", "Head to Head: Electronic Basketball (COP420L version)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, h2hbaskbc, 0, 0, h2hbaskbc, h2hbaskbc, h2hbaskbc_state, empty_init, "Coleco", "Head to Head: Electronic Basketball (COP420L version)", MACHINE_SUPPORTS_SAVE ) CONS( 1980, h2hhockeyc, h2hhockey, 0, h2hhockeyc, h2hhockeyc, h2hbaskbc_state, empty_init, "Coleco", "Head to Head: Electronic Hockey (COP420L version)", MACHINE_SUPPORTS_SAVE ) CONS( 1980, h2hsoccerc, 0, 0, h2hsoccerc, h2hsoccerc, h2hbaskbc_state, empty_init, "Coleco", "Head to Head: Electronic Soccer (COP420L version)", MACHINE_SUPPORTS_SAVE ) |