diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp
index f049e9c1f4b..79a3d0c87d1 100644
--- a/src/mame/drivers/hh_tms1k.cpp
+++ b/src/mame/drivers/hh_tms1k.cpp
@@ -1633,6 +1633,10 @@ MACHINE_CONFIG_END
* TMS1000NL MP0158 (die label same)
* 2 7seg LEDs, 30 other LEDs, 1-bit sound
+ known releases:
+ - USA: Electronic Soccer, 2 versions (green bezel, transparent bezel)
+ - Germany: Fussball, with skill switch
+
***************************************************************************/
class esoccer_state : public hh_tms1k_state
@@ -1652,25 +1656,59 @@ public:
void esoccer_state::prepare_display()
{
+ // R8,R9 are 7segs
+ m_display_segmask[8] = m_display_segmask[9] = 0x7f;
+ display_matrix(7, 10, m_o, m_r);
}
WRITE16_MEMBER(esoccer_state::write_r)
{
+ // R0-R2: input mux
+ m_inp_mux = data & 7;
+
+ // R10: speaker out
+ m_speaker->level_w(data >> 10 & 1);
+
+ // R0-R9: led select
+ m_r = data;
+ prepare_display();
}
WRITE16_MEMBER(esoccer_state::write_o)
{
+ // O0-O6: led state
+ m_o = data;
+ prepare_display();
}
READ8_MEMBER(esoccer_state::read_k)
{
- return 0;
+ // K: multiplexed inputs
+ return read_inputs(3);
}
// config
static INPUT_PORTS_START( esoccer )
+ PORT_START("IN.0") // R0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY
+
+ PORT_START("IN.1") // R1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_16WAY
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_16WAY
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY
+
+ PORT_START("IN.2") // R2
+ PORT_CONFNAME( 0x03, 0x01, "Players" )
+ PORT_CONFSETTING( 0x01, "1" ) // Auto
+ PORT_CONFSETTING( 0x02, "2" ) // Manual
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
INPUT_PORTS_END
static MACHINE_CONFIG_START( esoccer, esoccer_state )
diff --git a/src/mame/layout/esoccer.lay b/src/mame/layout/esoccer.lay
index 9d3e4d2766a..eda9a9c9546 100644
--- a/src/mame/layout/esoccer.lay
+++ b/src/mame/layout/esoccer.lay
@@ -3,6 +3,10 @@
+
+
+
+
@@ -14,7 +18,46 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+