summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/mame/drivers/hh_tms1k.cpp40
-rw-r--r--src/mame/layout/esoccer.lay45
2 files changed, 83 insertions, 2 deletions
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 @@
<!-- define elements -->
+ <element name="digit" defstate="0">
+ <led7seg><color red="1.0" green="0.2" blue="0.23" /></led7seg>
+ </element>
+
<element name="led" defstate="0">
<disk state="0"><color red="0.2" green="0.04" blue="0.046" /></disk>
<disk state="1"><color red="1.0" green="0.2" blue="0.23" /></disk>
@@ -14,7 +18,46 @@
<view name="Internal Layout">
<bounds left="0" right="100" top="0" bottom="100" />
- <bezel name="0.0" element="led"><bounds x="1" y="1" width="1" height="1" /></bezel>
+ <bezel name="digit8" element="digit"><bounds x="0" y="0" width="10" height="15" /></bezel>
+ <bezel name="digit9" element="digit"><bounds x="20" y="0" width="10" height="15" /></bezel>
+
+ <bezel name="0.0" element="led"><bounds x="0" y="20" width="1" height="1" /></bezel>
+ <bezel name="0.1" element="led"><bounds x="1" y="20" width="1" height="1" /></bezel>
+ <bezel name="0.2" element="led"><bounds x="2" y="20" width="1" height="1" /></bezel>
+
+ <bezel name="1.0" element="led"><bounds x="0" y="21" width="1" height="1" /></bezel>
+ <bezel name="1.1" element="led"><bounds x="1" y="21" width="1" height="1" /></bezel>
+ <bezel name="1.2" element="led"><bounds x="2" y="21" width="1" height="1" /></bezel>
+ <bezel name="1.3" element="led"><bounds x="3" y="21" width="1" height="1" /></bezel>
+
+ <bezel name="2.0" element="led"><bounds x="0" y="22" width="1" height="1" /></bezel>
+ <bezel name="2.1" element="led"><bounds x="1" y="22" width="1" height="1" /></bezel>
+ <bezel name="2.2" element="led"><bounds x="2" y="22" width="1" height="1" /></bezel>
+ <bezel name="2.3" element="led"><bounds x="3" y="22" width="1" height="1" /></bezel>
+
+ <bezel name="3.0" element="led"><bounds x="0" y="23" width="1" height="1" /></bezel>
+ <bezel name="3.1" element="led"><bounds x="1" y="23" width="1" height="1" /></bezel>
+ <bezel name="3.2" element="led"><bounds x="2" y="23" width="1" height="1" /></bezel>
+ <bezel name="3.3" element="led"><bounds x="3" y="23" width="1" height="1" /></bezel>
+
+ <bezel name="4.0" element="led"><bounds x="0" y="24" width="1" height="1" /></bezel>
+ <bezel name="4.1" element="led"><bounds x="1" y="24" width="1" height="1" /></bezel>
+ <bezel name="4.2" element="led"><bounds x="2" y="24" width="1" height="1" /></bezel>
+ <bezel name="4.3" element="led"><bounds x="3" y="24" width="1" height="1" /></bezel>
+
+ <bezel name="5.0" element="led"><bounds x="0" y="25" width="1" height="1" /></bezel>
+ <bezel name="5.1" element="led"><bounds x="1" y="25" width="1" height="1" /></bezel>
+ <bezel name="5.2" element="led"><bounds x="2" y="25" width="1" height="1" /></bezel>
+ <bezel name="5.3" element="led"><bounds x="3" y="25" width="1" height="1" /></bezel>
+
+ <bezel name="6.0" element="led"><bounds x="0" y="26" width="1" height="1" /></bezel>
+ <bezel name="6.1" element="led"><bounds x="1" y="26" width="1" height="1" /></bezel>
+ <bezel name="6.2" element="led"><bounds x="2" y="26" width="1" height="1" /></bezel>
+ <bezel name="6.3" element="led"><bounds x="3" y="26" width="1" height="1" /></bezel>
+
+ <bezel name="7.0" element="led"><bounds x="0" y="27" width="1" height="1" /></bezel>
+ <bezel name="7.1" element="led"><bounds x="1" y="27" width="1" height="1" /></bezel>
+ <bezel name="7.2" element="led"><bounds x="2" y="27" width="1" height="1" /></bezel>
</view>
</mamelayout>