From 8e4e897f1d992f8d10b881b8c73753ce1e4a6aed Mon Sep 17 00:00:00 2001 From: hap Date: Fri, 9 Feb 2018 19:36:43 +0100 Subject: New working clone added ------------------ Coleco Head to Head Hockey (TMS1000 version) [hap, Sean Riddle] --- src/mame/drivers/hh_cop400.cpp | 100 ++++++++++++------------ src/mame/drivers/hh_tms1k.cpp | 170 +++++++++++++++++++++++++++++++++++++++-- src/mame/layout/h2hbaskb.lay | 139 --------------------------------- src/mame/layout/h2hbaskbc.lay | 139 +++++++++++++++++++++++++++++++++ src/mame/layout/h2hhockey.lay | 114 +++++++++++++-------------- src/mame/layout/h2hhockeyc.lay | 129 +++++++++++++++++++++++++++++++ src/mame/layout/h2hsoccer.lay | 133 -------------------------------- src/mame/layout/h2hsoccerc.lay | 133 ++++++++++++++++++++++++++++++++ src/mame/mame.lst | 7 +- 9 files changed, 676 insertions(+), 388 deletions(-) delete mode 100644 src/mame/layout/h2hbaskb.lay create mode 100644 src/mame/layout/h2hbaskbc.lay create mode 100644 src/mame/layout/h2hhockeyc.lay delete mode 100644 src/mame/layout/h2hsoccer.lay create mode 100644 src/mame/layout/h2hsoccerc.lay diff --git a/src/mame/drivers/hh_cop400.cpp b/src/mame/drivers/hh_cop400.cpp index 27c40aa9fe1..c64148690f7 100644 --- a/src/mame/drivers/hh_cop400.cpp +++ b/src/mame/drivers/hh_cop400.cpp @@ -6,7 +6,7 @@ mostly LED electronic games/toys. TODO: - - why does h2hbaskb(and clones) need a workaround on writing L pins? + - why does h2hbaskbc(and clones) need a workaround on writing L pins? - plus1: which sensor position is which colour? - vidchal: Add screen and gun cursor with brightness detection callback, and softwarelist for the video tapes. We'd also need a VHS player device. @@ -32,9 +32,9 @@ #include "einvaderc.lh" #include "funjacks.lh" // clickable #include "funrlgl.lh" -#include "h2hbaskb.lh" -#include "h2hhockey.lh" -#include "h2hsoccer.lh" +#include "h2hbaskbc.lh" +#include "h2hhockeyc.lh" +#include "h2hsoccerc.lh" #include "lchicken.lh" // clickable #include "lightfgt.lh" // clickable #include "mdallas.lh" @@ -346,16 +346,16 @@ MACHINE_CONFIG_END the same, only differing on game time. The PCB is pre-configured on G1+IN2 and IN3 to select the game. - An earlier revision of this runs on TMS1000. 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 label is a *. + 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 *. ***************************************************************************/ -class h2hbaskb_state : public hh_cop400_state +class h2hbaskbc_state : public hh_cop400_state { public: - h2hbaskb_state(const machine_config &mconfig, device_type type, const char *tag) + h2hbaskbc_state(const machine_config &mconfig, device_type type, const char *tag) : hh_cop400_state(mconfig, type, tag) { } @@ -363,27 +363,27 @@ public: DECLARE_WRITE8_MEMBER(write_g); DECLARE_WRITE8_MEMBER(write_l); DECLARE_READ8_MEMBER(read_in); - void h2hsoccer(machine_config &config); - void h2hbaskb(machine_config &config); - void h2hhockey(machine_config &config); + void h2hsoccerc(machine_config &config); + void h2hbaskbc(machine_config &config); + void h2hhockeyc(machine_config &config); }; // handlers -WRITE8_MEMBER(h2hbaskb_state::write_d) +WRITE8_MEMBER(h2hbaskbc_state::write_d) { // D: led select m_d = data & 0xf; } -WRITE8_MEMBER(h2hbaskb_state::write_g) +WRITE8_MEMBER(h2hbaskbc_state::write_g) { // G: led select, input mux m_inp_mux = data; m_g = data & 0xf; } -WRITE8_MEMBER(h2hbaskb_state::write_l) +WRITE8_MEMBER(h2hbaskbc_state::write_l) { // D2,D3 double as multiplexer u16 mask = ((m_d >> 2 & 1) * 0x00ff) | ((m_d >> 3 & 1) * 0xff00); @@ -398,7 +398,7 @@ WRITE8_MEMBER(h2hbaskb_state::write_l) display_matrix(7, 16, 0, 0); } -READ8_MEMBER(h2hbaskb_state::read_in) +READ8_MEMBER(h2hbaskbc_state::read_in) { // IN: multiplexed inputs return read_inputs(4, 7) | (m_inp_matrix[4]->read() & 8); @@ -406,7 +406,7 @@ READ8_MEMBER(h2hbaskb_state::read_in) // config -static INPUT_PORTS_START( h2hbaskb ) +static INPUT_PORTS_START( h2hbaskbc ) PORT_START("IN.0") // G0 port IN PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_16WAY PORT_NAME("P1 Pass CW") // clockwise PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_16WAY PORT_NAME("P1 Pass CCW") // counter-clockwise @@ -437,8 +437,8 @@ static INPUT_PORTS_START( h2hbaskb ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) INPUT_PORTS_END -static INPUT_PORTS_START( h2hhockey ) - PORT_INCLUDE( h2hbaskb ) +static INPUT_PORTS_START( h2hhockeyc ) + PORT_INCLUDE( h2hbaskbc ) PORT_MODIFY("IN.3") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL PORT_NAME("P2 Goalie Right") @@ -448,26 +448,26 @@ static INPUT_PORTS_START( h2hhockey ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SPECIAL ) INPUT_PORTS_END -static INPUT_PORTS_START( h2hsoccer ) - PORT_INCLUDE( h2hhockey ) +static INPUT_PORTS_START( h2hsoccerc ) + PORT_INCLUDE( h2hhockeyc ) PORT_MODIFY("IN.1") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL ) INPUT_PORTS_END -MACHINE_CONFIG_START(h2hbaskb_state::h2hbaskb) +MACHINE_CONFIG_START(h2hbaskbc_state::h2hbaskbc) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", COP420, 850000) // approximation - RC osc. R=43K, C=101pF MCFG_COP400_CONFIG(COP400_CKI_DIVISOR_8, COP400_CKO_OSCILLATOR_OUTPUT, false) // guessed - MCFG_COP400_WRITE_D_CB(WRITE8(h2hbaskb_state, write_d)) - MCFG_COP400_WRITE_G_CB(WRITE8(h2hbaskb_state, write_g)) - MCFG_COP400_WRITE_L_CB(WRITE8(h2hbaskb_state, write_l)) - MCFG_COP400_READ_IN_CB(READ8(h2hbaskb_state, read_in)) + MCFG_COP400_WRITE_D_CB(WRITE8(h2hbaskbc_state, write_d)) + MCFG_COP400_WRITE_G_CB(WRITE8(h2hbaskbc_state, write_g)) + MCFG_COP400_WRITE_L_CB(WRITE8(h2hbaskbc_state, write_l)) + MCFG_COP400_READ_IN_CB(READ8(h2hbaskbc_state, read_in)) MCFG_COP400_WRITE_SO_CB(DEVWRITELINE("speaker", speaker_sound_device, level_w)) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_cop400_state, display_decay_tick, attotime::from_msec(1)) - MCFG_DEFAULT_LAYOUT(layout_h2hbaskb) + MCFG_DEFAULT_LAYOUT(layout_h2hbaskbc) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -475,16 +475,16 @@ MACHINE_CONFIG_START(h2hbaskb_state::h2hbaskb) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END -MACHINE_CONFIG_DERIVED(h2hbaskb_state::h2hhockey, h2hbaskb) +MACHINE_CONFIG_DERIVED(h2hbaskbc_state::h2hhockeyc, h2hbaskbc) /* basic machine hardware */ - MCFG_DEFAULT_LAYOUT(layout_h2hhockey) + MCFG_DEFAULT_LAYOUT(layout_h2hhockeyc) MACHINE_CONFIG_END -MACHINE_CONFIG_DERIVED(h2hbaskb_state::h2hsoccer, h2hbaskb) +MACHINE_CONFIG_DERIVED(h2hbaskbc_state::h2hsoccerc, h2hbaskbc) /* basic machine hardware */ - MCFG_DEFAULT_LAYOUT(layout_h2hsoccer) + MCFG_DEFAULT_LAYOUT(layout_h2hsoccerc) MACHINE_CONFIG_END @@ -1831,17 +1831,17 @@ ROM_START( ctstein ) ROM_END -ROM_START( h2hbaskb ) +ROM_START( h2hbaskbc ) ROM_REGION( 0x0400, "maincpu", 0 ) ROM_LOAD( "cop420l-nmy", 0x0000, 0x0400, CRC(87152509) SHA1(acdb869b65d49b3b9855a557ed671cbbb0f61e2c) ) ROM_END -ROM_START( h2hhockey ) // dumped from Basketball +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( h2hsoccer ) // dumped from Basketball +ROM_START( h2hsoccerc ) // dumped from Basketball ROM_REGION( 0x0400, "maincpu", 0 ) ROM_LOAD( "cop420l-nmy", 0x0000, 0x0400, CRC(87152509) SHA1(acdb869b65d49b3b9855a557ed671cbbb0f61e2c) ) ROM_END @@ -1917,30 +1917,30 @@ ROM_END -// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS -CONS( 1979, ctstein, 0, 0, ctstein, ctstein, ctstein_state, 0, "Castle Toy", "Einstein (Castle Toy)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +// YEAR NAME PARENT COMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1979, ctstein, 0, 0, ctstein, ctstein, ctstein_state, 0, "Castle Toy", "Einstein (Castle Toy)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1980, h2hbaskb, 0, 0, h2hbaskb, h2hbaskb, h2hbaskb_state, 0, "Coleco", "Head to Head: Electronic Basketball (COP420L version)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, h2hhockey, h2hbaskb, 0, h2hhockey, h2hhockey, h2hbaskb_state, 0, "Coleco", "Head to Head: Electronic Hockey (COP420L version)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, h2hsoccer, h2hbaskb, 0, h2hsoccer, h2hsoccer, h2hbaskb_state, 0, "Coleco", "Head to Head: Electronic Soccer (COP420L version)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, h2hbaskbc, 0, 0, h2hbaskbc, h2hbaskbc, h2hbaskbc_state, 0, "Coleco", "Head to Head: Electronic Basketball (COP420L version)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, h2hhockeyc, h2hhockey, 0, h2hhockeyc, h2hhockeyc, h2hbaskbc_state, 0, "Coleco", "Head to Head: Electronic Hockey (COP420L version)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, h2hsoccerc, 0, 0, h2hsoccerc, h2hsoccerc, h2hbaskbc_state, 0, "Coleco", "Head to Head: Electronic Soccer (COP420L version)", MACHINE_SUPPORTS_SAVE ) -CONS( 1981, einvaderc, einvader, 0, einvaderc, einvaderc, einvaderc_state, 0, "Entex", "Space Invader (Entex, COP444L version)", MACHINE_SUPPORTS_SAVE ) +CONS( 1981, einvaderc, einvader, 0, einvaderc, einvaderc, einvaderc_state, 0, "Entex", "Space Invader (Entex, COP444L version)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, unkeinv, 0, 0, unkeinv, unkeinv, unkeinv_state, 0, "Gordon Barlow Design", "unknown electronic Space Invaders game (patent)", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, unkeinv, 0, 0, unkeinv, unkeinv, unkeinv_state, 0, "Gordon Barlow Design", "unknown electronic Space Invaders game (patent)", MACHINE_SUPPORTS_SAVE ) -CONS( 1980, lchicken, 0, 0, lchicken, lchicken, lchicken_state, 0, "LJN", "I Took a Lickin' From a Chicken", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_MECHANICAL ) +CONS( 1980, lchicken, 0, 0, lchicken, lchicken, lchicken_state, 0, "LJN", "I Took a Lickin' From a Chicken", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_MECHANICAL ) -CONS( 1979, funjacks, 0, 0, funjacks, funjacks, funjacks_state, 0, "Mattel", "Funtronics: Jacks", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, funrlgl, 0, 0, funrlgl, funrlgl, funrlgl_state, 0, "Mattel", "Funtronics: Red Light Green Light", MACHINE_SUPPORTS_SAVE ) -CONS( 1981, mdallas, 0, 0, mdallas, mdallas, mdallas_state, 0, "Mattel", "Dalla$ (J.R. handheld)", MACHINE_SUPPORTS_SAVE ) // *** +CONS( 1979, funjacks, 0, 0, funjacks, funjacks, funjacks_state, 0, "Mattel", "Funtronics: Jacks", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, funrlgl, 0, 0, funrlgl, funrlgl, funrlgl_state, 0, "Mattel", "Funtronics: Red Light Green Light", MACHINE_SUPPORTS_SAVE ) +CONS( 1981, mdallas, 0, 0, mdallas, mdallas, mdallas_state, 0, "Mattel", "Dalla$ (J.R. handheld)", MACHINE_SUPPORTS_SAVE ) // *** -CONS( 1980, plus1, 0, 0, plus1, plus1, plus1_state, 0, "Milton Bradley", "Plus One", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_CONTROLS ) // *** -CONS( 1981, lightfgt, 0, 0, lightfgt, lightfgt, lightfgt_state, 0, "Milton Bradley", "Electronic Lightfight - The Games of Dueling Lights", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1982, bship82, bship, 0, bship82, bship82, bship82_state, 0, "Milton Bradley", "Electronic Battleship (1982 version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // *** +CONS( 1980, plus1, 0, 0, plus1, plus1, plus1_state, 0, "Milton Bradley", "Plus One", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_CONTROLS ) // *** +CONS( 1981, lightfgt, 0, 0, lightfgt, lightfgt, lightfgt_state, 0, "Milton Bradley", "Electronic Lightfight - The Games of Dueling Lights", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1982, bship82, bship, 0, bship82, bship82, bship82_state, 0, "Milton Bradley", "Electronic Battleship (1982 version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // *** -CONS( 1978, qkracer, 0, 0, qkracer, qkracer, qkracer_state, 0, "National Semiconductor", "QuizKid Racer (COP420 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +CONS( 1978, qkracer, 0, 0, qkracer, qkracer, qkracer_state, 0, "National Semiconductor", "QuizKid Racer (COP420 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -CONS( 1987, vidchal, 0, 0, vidchal, vidchal, vidchal_state, 0, "Select Merchandise", "Video Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +CONS( 1987, vidchal, 0, 0, vidchal, vidchal, vidchal_state, 0, "Select Merchandise", "Video Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // ***: As far as MAME is concerned, the game is emulated fine. But for it to be playable, it requires interaction // with other, unemulatable, things eg. game board/pieces, playing cards, pen & paper, etc. diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp index 4a2984d7e37..6f2b33cc9b3 100644 --- a/src/mame/drivers/hh_tms1k.cpp +++ b/src/mame/drivers/hh_tms1k.cpp @@ -70,7 +70,7 @@ @MP3300 TMS1000 1979, Milton Bradley Simon (Rev F) @MP3301A TMS1000 1979, Milton Bradley Big Trak *MP3320A TMS1000 1980, Coleco Head to Head: Electronic Basketball - *MP3321A TMS1000 1980, Coleco Head to Head: Electronic Hockey + @MP3321A TMS1000 1980, Coleco Head to Head: Electronic Hockey @M32001 TMS1000 1981, Coleco Quiz Wiz Challenger (note: MP3398, MP3399, M3200x?) *M32018 TMS1000 1990, unknown device (have decap/dump) M32045B TMS1000 1983, Chrysler Electronic Voice Alert (11-function) -> eva.cpp @@ -143,6 +143,7 @@ - finish bshipb SN76477 sound - improve elecbowl driver - is alphie(patent) the same as the final version? + - h2hhockey R9 timing is wrong: passing seems too slow, and in-game clock too fast ***************************************************************************/ @@ -201,6 +202,7 @@ #include "h2hbaseb.lh" #include "h2hboxing.lh" #include "h2hfootb.lh" +#include "h2hhockey.lh" #include "horseran.lh" #include "lostreas.lh" // clickable #include "matchnum.lh" // clickable @@ -1064,7 +1066,7 @@ MACHINE_CONFIG_END /*************************************************************************** - Coleco Zodiac - The Astrology Computer + Coleco Zodiac - The Astrology Computer (model 2110) * TMS1100 MP3435 (no decap) * 8-digit 7seg display, 12 other LEDs, 1-bit sound @@ -1242,7 +1244,7 @@ MACHINE_CONFIG_END /*************************************************************************** - Coleco Electronic Quarterback + Coleco Electronic Quarterback (model 2120) * TMS1100NLL MP3415 (die label same) * 9-digit LED grid, 1-bit sound @@ -1357,7 +1359,7 @@ MACHINE_CONFIG_END /*************************************************************************** - Coleco Head to Head: Electronic Football + Coleco Head to Head: Electronic Football (model 2140) * TMS1100NLLE (rev. E!) MP3460 (die label same) * 2*SN75492N LED display drivers, 9-digit LED grid, 1-bit sound @@ -1475,7 +1477,150 @@ MACHINE_CONFIG_END /*************************************************************************** - Coleco Head to Head: Electronic Baseball + Coleco Head to Head: Electronic Hockey (model 2160) + * TMS1000NLL E MP3321A (die label 1000E MP3321A) + * 2-digit 7seg LED display, LED grid display, 1-bit sound + + Unlike the COP420 version(see hh_cop400.cpp driver), each game has its own MCU. + +***************************************************************************/ + +class h2hhockey_state : public hh_tms1k_state +{ +public: + h2hhockey_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_tms1k_state(mconfig, type, tag), + m_cap_empty_timer(*this, "cap_empty") + { } + + required_device m_cap_empty_timer; + TIMER_DEVICE_CALLBACK_MEMBER(cap_empty_callback); + bool m_cap; + + void prepare_display(); + DECLARE_WRITE16_MEMBER(write_r); + DECLARE_WRITE16_MEMBER(write_o); + DECLARE_READ8_MEMBER(read_k); + void h2hhockey(machine_config &config); + +protected: + virtual void machine_start() override; +}; + +// handlers + +TIMER_DEVICE_CALLBACK_MEMBER(h2hhockey_state::cap_empty_callback) +{ + if (~m_r & 0x200) + m_cap = false; +} + +void h2hhockey_state::prepare_display() +{ + // R6,R7 are commons for R0-R5 + u16 sel = 0; + if (m_r & 0x40) sel |= (m_r & 0x3f); + if (m_r & 0x80) sel |= (m_r & 0x3f) << 6; + + set_display_segmask(0xc0, 0x7f); + display_matrix(7, 6+6, m_o, sel); +} + +WRITE16_MEMBER(h2hhockey_state::write_r) +{ + // R0-R3: input mux + m_inp_mux = (data & 0xf); + + // R8: speaker out + m_speaker->level_w(data >> 8 & 1); + + // R9: K8 and 15uF cap to V- (used as timer) + if (data & 0x200) + m_cap = true; + else if (m_r & 0x200) // falling edge + m_cap_empty_timer->adjust(attotime::from_msec(28)); // not accurate + + // R0-R7: led select + m_r = data; + prepare_display(); +} + +WRITE16_MEMBER(h2hhockey_state::write_o) +{ + // O1-O7: led data + m_o = data >> 1 & 0x7f; + prepare_display(); +} + +READ8_MEMBER(h2hhockey_state::read_k) +{ + // K1-K4: multiplexed inputs, K8: R9 and capacitor + return (read_inputs(4) & 7) | (m_cap ? 8 : 0); +} + +// config + +static INPUT_PORTS_START( h2hhockey ) + PORT_START("IN.0") // R0 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY PORT_NAME("P1 Pass CW") // clockwise + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY PORT_NAME("P1 Pass CCW") // counter-clockwise + PORT_CONFNAME( 0x04, 0x00, DEF_STR( Players ) ) + PORT_CONFSETTING( 0x00, "1" ) + PORT_CONFSETTING( 0x04, "2" ) + + PORT_START("IN.1") // R1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Shoot") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START ) PORT_NAME("Start/Display") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.2") // R2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_16WAY PORT_NAME("P2 Defense Right") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_16WAY PORT_NAME("P2 Defense Left") + PORT_CONFNAME( 0x04, 0x00, DEF_STR( Difficulty ) ) + PORT_CONFSETTING( 0x00, "1" ) + PORT_CONFSETTING( 0x04, "2" ) + + PORT_START("IN.3") // R3 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL PORT_NAME("P2 Goalie Right") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Goalie Left") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) +INPUT_PORTS_END + +void h2hhockey_state::machine_start() +{ + hh_tms1k_state::machine_start(); + + // zerofill/register for savestates + m_cap = false; + save_item(NAME(m_cap)); +} + +MACHINE_CONFIG_START(h2hhockey_state::h2hhockey) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", TMS1000, 375000) // approximation - RC osc. R=43K, C=100pF + MCFG_TMS1XXX_READ_K_CB(READ8(h2hhockey_state, read_k)) + MCFG_TMS1XXX_WRITE_R_CB(WRITE16(h2hhockey_state, write_r)) + MCFG_TMS1XXX_WRITE_O_CB(WRITE16(h2hhockey_state, write_o)) + + MCFG_TIMER_DRIVER_ADD("cap_empty", h2hhockey_state, cap_empty_callback) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_h2hhockey) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + + + +/*************************************************************************** + + Coleco Head to Head: Electronic Baseball (model 2180) * PCB labels Coleco rev C 73891/2 * TMS1170NLN MP1525-N2 (die label MP1525) * 9-digit cyan VFD display, and other LEDs behind bezel, 1-bit sound @@ -1614,7 +1759,7 @@ MACHINE_CONFIG_END /*************************************************************************** - Coleco Head to Head: Electronic Boxing + Coleco Head to Head: Electronic Boxing (model 2190) * TMS1100NLL M34018-N2 (die label M34018) * 2-digit 7seg LED display, LED grid display, 1-bit sound @@ -8643,6 +8788,7 @@ WRITE16_MEMBER(ss7in1_state::write_o) READ8_MEMBER(ss7in1_state::read_k) { + // K: multiplexed inputs return read_inputs(4); } @@ -9421,6 +9567,17 @@ ROM_START( h2hfootb ) ROM_END +ROM_START( h2hhockey ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp3321a", 0x0000, 0x0400, CRC(e974e604) SHA1(ed740c98ce96ad70ee5237eccae1f54a75ad8100) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_h2hhockey_output.pla", 0, 365, CRC(9d1a91e1) SHA1(96303eb22375129b0dfbfcd823c8ca5b919511bc) ) +ROM_END + + ROM_START( h2hbaseb ) ROM_REGION( 0x0800, "maincpu", 0 ) ROM_LOAD( "mp1525", 0x0000, 0x0800, CRC(b5d6bf9b) SHA1(2cc9f35f077c1209c46d16ec853af87e4725c2fd) ) @@ -10164,6 +10321,7 @@ CONS( 1978, amaztron, 0, 0, amaztron, amaztron, amaztron_state, 0, COMP( 1979, zodiac, 0, 0, zodiac, zodiac, zodiac_state, 0, "Coleco", "Zodiac - The Astrology Computer", MACHINE_SUPPORTS_SAVE ) CONS( 1978, cqback, 0, 0, cqback, cqback, cqback_state, 0, "Coleco", "Electronic Quarterback", MACHINE_SUPPORTS_SAVE ) CONS( 1980, h2hfootb, 0, 0, h2hfootb, h2hfootb, h2hfootb_state, 0, "Coleco", "Head to Head: Electronic Football", MACHINE_SUPPORTS_SAVE ) +CONS( 1980, h2hhockey, 0, 0, h2hhockey, h2hhockey, h2hhockey_state, 0, "Coleco", "Head to Head: Electronic Hockey (TMS1000 version)", MACHINE_SUPPORTS_SAVE ) CONS( 1980, h2hbaseb, 0, 0, h2hbaseb, h2hbaseb, h2hbaseb_state, 0, "Coleco", "Head to Head: Electronic Baseball", MACHINE_SUPPORTS_SAVE ) CONS( 1981, h2hboxing, 0, 0, h2hboxing, h2hboxing, h2hboxing_state, 0, "Coleco", "Head to Head: Electronic Boxing", MACHINE_SUPPORTS_SAVE ) CONS( 1981, quizwizc, 0, 0, quizwizc, quizwizc, quizwizc_state, 0, "Coleco", "Quiz Wiz Challenger", MACHINE_SUPPORTS_SAVE ) // *** diff --git a/src/mame/layout/h2hbaskb.lay b/src/mame/layout/h2hbaskb.lay deleted file mode 100644 index a4d2c9e019c..00000000000 --- a/src/mame/layout/h2hbaskb.lay +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/mame/layout/h2hbaskbc.lay b/src/mame/layout/h2hbaskbc.lay new file mode 100644 index 00000000000..a4d2c9e019c --- /dev/null +++ b/src/mame/layout/h2hbaskbc.lay @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/h2hhockey.lay b/src/mame/layout/h2hhockey.lay index ab54c6e4cf2..ac67e33f840 100644 --- a/src/mame/layout/h2hhockey.lay +++ b/src/mame/layout/h2hhockey.lay @@ -39,8 +39,8 @@ - - + + @@ -49,81 +49,81 @@ - + - - - - - + + + + + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/h2hhockeyc.lay b/src/mame/layout/h2hhockeyc.lay new file mode 100644 index 00000000000..ab54c6e4cf2 --- /dev/null +++ b/src/mame/layout/h2hhockeyc.lay @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/h2hsoccer.lay b/src/mame/layout/h2hsoccer.lay deleted file mode 100644 index 569eb129d59..00000000000 --- a/src/mame/layout/h2hsoccer.lay +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/mame/layout/h2hsoccerc.lay b/src/mame/layout/h2hsoccerc.lay new file mode 100644 index 00000000000..569eb129d59 --- /dev/null +++ b/src/mame/layout/h2hsoccerc.lay @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 13e8fe3e27f..4929abf3823 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -14681,9 +14681,9 @@ ctstein // Castle Toy einvaderc // Entex funjacks // Mattel funrlgl // Mattel -h2hbaskb // Coleco -h2hhockey // Coleco -h2hsoccer // Coleco +h2hbaskbc // Coleco +h2hhockeyc // Coleco +h2hsoccerc // Coleco lchicken // LJN lightfgt // Milton Bradley mdallas // Mattel @@ -14843,6 +14843,7 @@ gpoker // Gakken h2hbaseb // Coleco h2hboxing // Coleco h2hfootb // Coleco +h2hhockey // Coleco horseran // Mattel lostreas // Parker Bros matchnum // A-One LSI -- cgit v1.2.3