summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/mame/drivers/hh_cop400.cpp24
-rw-r--r--src/mame/drivers/hh_pic16.cpp196
-rw-r--r--src/mame/drivers/hh_sm510.cpp2
-rw-r--r--src/mame/drivers/hh_tms1k.cpp2
-rw-r--r--src/mame/layout/matchme.lay135
-rw-r--r--src/mame/mame.lst1
6 files changed, 335 insertions, 25 deletions
diff --git a/src/mame/drivers/hh_cop400.cpp b/src/mame/drivers/hh_cop400.cpp
index 143eff54e51..4658204ac7f 100644
--- a/src/mame/drivers/hh_cop400.cpp
+++ b/src/mame/drivers/hh_cop400.cpp
@@ -72,7 +72,7 @@ public:
int m_sk; // MCU SK line state
u16 m_inp_mux; // multiplexed inputs mask
- u16 read_inputs(int columns);
+ u16 read_inputs(int columns, u16 colmask = ~0);
// display common
int m_display_wait; // led/lamp off-delay in milliseconds (default 33ms)
@@ -221,10 +221,10 @@ void hh_cop400_state::display_matrix(int maxx, int maxy, u32 setx, u32 sety, boo
// generic input handlers
-u16 hh_cop400_state::read_inputs(int columns)
+u16 hh_cop400_state::read_inputs(int columns, u16 colmask)
{
// active low
- u16 ret = ~0;
+ u16 ret = ~0 & colmask;
// read selected input rows
for (int i = 0; i < columns; i++)
@@ -282,7 +282,7 @@ WRITE8_MEMBER(ctstein_state::write_l)
READ8_MEMBER(ctstein_state::read_l)
{
// L4-L7: multiplexed inputs
- return read_inputs(3) << 4 | 0xf;
+ return read_inputs(3, 0xf) << 4 | 0xf;
}
// config
@@ -393,7 +393,7 @@ WRITE8_MEMBER(h2hbaskb_state::write_l)
READ8_MEMBER(h2hbaskb_state::read_in)
{
// IN: multiplexed inputs
- return (read_inputs(4) & 7) | (m_inp_matrix[4]->read() & 8);
+ return read_inputs(4, 7) | (m_inp_matrix[4]->read() & 8);
}
// config
@@ -795,7 +795,7 @@ WRITE8_MEMBER(lchicken_state::write_g)
READ8_MEMBER(lchicken_state::read_g)
{
// G0-G3: multiplexed inputs
- return read_inputs(4) & m_g;
+ return read_inputs(4, m_g);
}
WRITE_LINE_MEMBER(lchicken_state::write_so)
@@ -928,7 +928,7 @@ WRITE8_MEMBER(funjacks_state::write_g)
READ8_MEMBER(funjacks_state::read_l)
{
// L4,L5: multiplexed inputs
- return (read_inputs(3) & 0x30) | m_l;
+ return read_inputs(3, 0x30) | m_l;
}
READ8_MEMBER(funjacks_state::read_g)
@@ -1138,7 +1138,7 @@ WRITE8_MEMBER(mdallas_state::write_g)
READ8_MEMBER(mdallas_state::read_in)
{
// IN: multiplexed inputs
- return read_inputs(6) & 0xf;
+ return read_inputs(6, 0xf);
}
// config
@@ -1364,7 +1364,7 @@ READ8_MEMBER(lightfgt_state::read_g)
{
// G: multiplexed inputs
m_inp_mux = m_d << 1 | m_so;
- return read_inputs(5);
+ return read_inputs(5, 0xf);
}
// config
@@ -1458,13 +1458,13 @@ WRITE8_MEMBER(bship82_state::write_d)
READ8_MEMBER(bship82_state::read_l)
{
// L: multiplexed inputs
- return read_inputs(4) & 0xff;
+ return read_inputs(4, 0xff);
}
READ8_MEMBER(bship82_state::read_in)
{
// IN: multiplexed inputs
- return read_inputs(4) >> 8 & 0xf;
+ return read_inputs(4, 0xf00) >> 8;
}
WRITE_LINE_MEMBER(bship82_state::write_so)
@@ -1641,7 +1641,7 @@ WRITE8_MEMBER(qkracer_state::write_l)
READ8_MEMBER(qkracer_state::read_in)
{
// IN: multiplexed inputs
- return read_inputs(5) & 0xf;
+ return read_inputs(5, 0xf);
}
WRITE_LINE_MEMBER(qkracer_state::write_sk)
diff --git a/src/mame/drivers/hh_pic16.cpp b/src/mame/drivers/hh_pic16.cpp
index 8607192872f..1bd057aa97d 100644
--- a/src/mame/drivers/hh_pic16.cpp
+++ b/src/mame/drivers/hh_pic16.cpp
@@ -13,6 +13,7 @@
@033 1655A 1979, Toytronic Football (newer)
@036 1655A 1979, Ideal Maniac
@043 1655A 1979, Caprice Pro-Action Baseball
+ @049 1655A 1980, Kingsford Match Me(?)/Mini Match Me
@051 1655A 1979, Tandy Electronic Basketball
@053 1655A 1979, Atari Touch Me
@0?? 1655A 1979, Tiger Half Court Computer Basketball/Sears Electronic Basketball (custom label)
@@ -20,6 +21,7 @@
*081 1655A 19??, Ramtex Space Invaders/Block Buster
@094 1655A 1980, GAF Melody Madness
@110 1650A 1979, Tiger/Tandy Rocket Pinball
+ *123 1655A? 1980, Kingsford Match Me/Mini Match Me
@133 1650A 1981, U.S. Games Programmable Baseball/Tandy 2-Player Baseball
@144 1650A 1981, U.S. Games/Tandy 2-Player Football
*192 1650 19??, <unknown> phone dialer (have dump)
@@ -55,6 +57,7 @@
#include "leboom.lh" // clickable
#include "maniac.lh" // clickable
#include "melodym.lh" // clickable
+#include "matchme.lh" // clickable
#include "rockpin.lh"
#include "tbaskb.lh"
#include "touchme.lh" // clickable
@@ -95,7 +98,8 @@ public:
u8 m_d; // " D
u16 m_inp_mux; // multiplexed inputs mask
- u16 read_inputs(int columns);
+ u16 read_inputs(int columns, u16 colmask = ~0);
+ u8 read_rotated_inputs(int columns, u8 rowmask = ~0);
// display common
int m_display_wait; // led/lamp off-delay in milliseconds (default 33ms)
@@ -242,10 +246,10 @@ void hh_pic16_state::display_matrix(int maxx, int maxy, u32 setx, u32 sety, bool
// generic input handlers
-u16 hh_pic16_state::read_inputs(int columns)
+u16 hh_pic16_state::read_inputs(int columns, u16 colmask)
{
// active low
- u16 ret = ~0;
+ u16 ret = ~0 & colmask;
// read selected input rows
for (int i = 0; i < columns; i++)
@@ -255,6 +259,20 @@ u16 hh_pic16_state::read_inputs(int columns)
return ret;
}
+u8 hh_pic16_state::read_rotated_inputs(int columns, u8 rowmask)
+{
+ u8 ret = 0;
+ u16 colmask = (1 << columns) - 1;
+
+ // read selected input columns
+ for (int i = 0; i < 8; i++)
+ if (1 << i & rowmask && ~m_inp_matrix[i]->read() & ~m_inp_mux & colmask)
+ ret |= 1 << i;
+
+ // active low
+ return ~ret & rowmask;
+}
+
/***************************************************************************
@@ -307,7 +325,7 @@ void touchme_state::update_speaker()
READ8_MEMBER(touchme_state::read_a)
{
// A: multiplexed inputs
- return read_inputs(3) & 0xf;
+ return read_inputs(3, 0xf);
}
WRITE8_MEMBER(touchme_state::write_b)
@@ -350,7 +368,7 @@ static INPUT_PORTS_START( touchme )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Green Button")
PORT_START("IN.2") // B2 port A
- PORT_CONFNAME( 0x07, 0x01^0x07, "Game Select")
+ PORT_CONFNAME( 0x07, 0x01^0x07, "Game Select" )
PORT_CONFSETTING( 0x01^0x07, "1" )
PORT_CONFSETTING( 0x02^0x07, "2" )
PORT_CONFSETTING( 0x04^0x07, "3" )
@@ -523,7 +541,7 @@ WRITE8_MEMBER(melodym_state::write_b)
READ8_MEMBER(melodym_state::read_c)
{
// C0-C4: multiplexed inputs
- return read_inputs(5) | 0xe0;
+ return read_inputs(5, 0x1f) | 0xe0;
}
WRITE8_MEMBER(melodym_state::write_c)
@@ -704,6 +722,154 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Kingsford Match Me
+ * PIC 1655A-049
+ * 8 lamps, 1-bit sound
+
+ Known releases:
+ - USA(1): Match Me/Mini Match Me(latter is the handheld version, same game)
+ - USA(2): Me Too, published by Talbot
+
+ Known revisions:
+ - PIC 1655A-049 (this one, dumped from a Mini Match Me)
+ - PIC 1655A-123 (seen in Match Me and Mini Match Me)
+
+***************************************************************************/
+
+class matchme_state : public hh_pic16_state
+{
+public:
+ matchme_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_pic16_state(mconfig, type, tag)
+ { }
+
+ DECLARE_WRITE8_MEMBER(write_b);
+ DECLARE_WRITE8_MEMBER(write_c);
+ DECLARE_READ8_MEMBER(read_c);
+
+ void set_clock();
+ DECLARE_INPUT_CHANGED_MEMBER(speed_switch);
+
+protected:
+ virtual void machine_reset() override;
+};
+
+// handlers
+
+WRITE8_MEMBER(matchme_state::write_b)
+{
+ // B0-B7: lamps
+ display_matrix(8, 1, data, 1);
+}
+
+READ8_MEMBER(matchme_state::read_c)
+{
+ // C0-C3: multiplexed inputs from C4-C6
+ m_inp_mux = m_c >> 4 & 7;
+ u8 lo = read_inputs(3, 0xf);
+
+ // C4-C6: multiplexed inputs from C0-C3
+ m_inp_mux = m_c & 0xf;
+ u8 hi = read_rotated_inputs(4, 7);
+
+ return lo | hi << 4 | 0x80;
+}
+
+WRITE8_MEMBER(matchme_state::write_c)
+{
+ // C0-C6: input mux
+ m_c = data;
+
+ // C7: speaker out + RTCC pin
+ m_speaker->level_w(data >> 7 & 1);
+ m_maincpu->set_input_line(PIC16C5x_RTCC, data >> 7 & 1);
+}
+
+// config
+
+static INPUT_PORTS_START( matchme )
+ PORT_START("IN.0") // C4 port C
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) // purple
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) // pink
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) // yellow
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) // blue
+
+ PORT_START("IN.1") // C5 port C
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON5 ) // red
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON6 ) // cyan
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON7 ) // orange
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON8 ) // green
+
+ PORT_START("IN.2") // C6 port C
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START )
+ PORT_BIT( 0x02, 0x02, IPT_SPECIAL ) PORT_CONDITION("FAKE", 0x03, EQUALS, 0x03) // Last/Auto
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON10 ) PORT_NAME("Long")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN.3") // port A
+ PORT_CONFNAME( 0x07, 0x00^0x07, "Game" )
+ PORT_CONFSETTING( 0x00^0x07, "1" )
+ PORT_CONFSETTING( 0x01^0x07, "2" )
+ PORT_CONFSETTING( 0x02^0x07, "3" )
+ PORT_CONFSETTING( 0x04^0x07, "4" )
+ PORT_CONFNAME( 0x08, 0x08, DEF_STR( Difficulty ) )
+ PORT_CONFSETTING( 0x08, "Amateur" ) // AMR
+ PORT_CONFSETTING( 0x00, "Professional" ) // PRO
+
+ PORT_START("IN.4") // another fake
+ PORT_CONFNAME( 0x01, 0x00, "Speed" ) PORT_CHANGED_MEMBER(DEVICE_SELF, matchme_state, speed_switch, nullptr)
+ PORT_CONFSETTING( 0x00, DEF_STR( Low ) )
+ PORT_CONFSETTING( 0x01, DEF_STR( High ) )
+
+ PORT_START("FAKE") // Last/Auto are electronically the same button
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("Last")
+ PORT_CONFNAME( 0x02, 0x02, "Music" )
+ PORT_CONFSETTING( 0x02, "Manual" )
+ PORT_CONFSETTING( 0x00, "Auto" )
+INPUT_PORTS_END
+
+INPUT_CHANGED_MEMBER(matchme_state::speed_switch)
+{
+ set_clock();
+}
+
+void matchme_state::set_clock()
+{
+ // MCU clock is ~1.2MHz by default (R=18K, C=15pF), high speed setting adds a
+ // 10pF cap to speed it up by about 7.5%.
+ m_maincpu->set_unscaled_clock((m_inp_matrix[4]->read() & 1) ? 1300000 : 1200000);
+}
+
+void matchme_state::machine_reset()
+{
+ hh_pic16_state::machine_reset();
+ set_clock();
+}
+
+static MACHINE_CONFIG_START( matchme )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", PIC1655, 1200000) // see set_clock
+ MCFG_PIC16C5x_READ_A_CB(IOPORT("IN.3"))
+ MCFG_PIC16C5x_WRITE_B_CB(WRITE8(matchme_state, write_b))
+ MCFG_PIC16C5x_READ_C_CB(READ8(matchme_state, read_c))
+ MCFG_PIC16C5x_WRITE_C_CB(WRITE8(matchme_state, write_c))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_pic16_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_matchme)
+
+ /* 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
+
+
+
+
+
+/***************************************************************************
+
Lakeside Le Boom
* PIC 1655A-061
* 1 led, 1-bit sound with RC circuit for volume decay
@@ -764,7 +930,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(leboom_state::speaker_decay_sim)
READ8_MEMBER(leboom_state::read_a)
{
// A: multiplexed inputs
- return read_inputs(6) & 0xf;
+ return read_inputs(6, 0xf);
}
WRITE8_MEMBER(leboom_state::write_b)
@@ -894,7 +1060,7 @@ void tbaskb_state::prepare_display()
READ8_MEMBER(tbaskb_state::read_a)
{
// A2: skill switch, A3: multiplexed inputs
- return m_inp_matrix[5]->read() | read_inputs(5) | 3;
+ return m_inp_matrix[5]->read() | read_inputs(5, 8) | 3;
}
WRITE8_MEMBER(tbaskb_state::write_b)
@@ -1119,7 +1285,7 @@ void hccbaskb_state::prepare_display()
READ8_MEMBER(hccbaskb_state::read_a)
{
// A2: skill switch, A3: multiplexed inputs
- return m_inp_matrix[5]->read() | read_inputs(5) | 3;
+ return m_inp_matrix[5]->read() | read_inputs(5, 8) | 3;
}
WRITE8_MEMBER(hccbaskb_state::write_b)
@@ -1237,7 +1403,7 @@ void ttfball_state::prepare_display()
READ8_MEMBER(ttfball_state::read_a)
{
// A3: multiplexed inputs, A0-A2: other inputs
- return m_inp_matrix[5]->read() | read_inputs(5);
+ return m_inp_matrix[5]->read() | read_inputs(5, 8);
}
WRITE8_MEMBER(ttfball_state::write_b)
@@ -1490,7 +1656,7 @@ void us2pfball_state::prepare_display()
READ8_MEMBER(us2pfball_state::read_a)
{
// A0,A1: multiplexed inputs, A4-A7: other inputs
- return (read_inputs(4) & 3) | (m_inp_matrix[4]->read() & 0xf0) | 0x0c;
+ return read_inputs(4, 3) | (m_inp_matrix[4]->read() & 0xf0) | 0x0c;
}
WRITE8_MEMBER(us2pfball_state::write_a)
@@ -1616,6 +1782,12 @@ ROM_START( maniac )
ROM_END
+ROM_START( matchme )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "pic_1655a-049", 0x0000, 0x0400, CRC(fa3f4805) SHA1(57cbac18baa201927e99cd69cc2ffda4d2e642bb) )
+ROM_END
+
+
ROM_START( leboom )
ROM_REGION( 0x0400, "maincpu", 0 )
ROM_LOAD( "pic_1655a-061", 0x0000, 0x0400, CRC(5880eea1) SHA1(e3795b347fd5df9de084da36e33f6b70fbc0b0ae) )
@@ -1673,6 +1845,8 @@ CONS( 1980, melodym, 0, 0, melodym, melodym, melodym_state, 0, "GA
CONS( 1979, maniac, 0, 0, maniac, maniac, maniac_state, 0, "Ideal", "Maniac", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1980, matchme, 0, 0, matchme, matchme, matchme_state, 0, "Kingsford", "Match Me", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+
CONS( 1980, leboom, 0, 0, leboom, leboom, leboom_state, 0, "Lakeside", "Le Boom", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK )
CONS( 1979, tbaskb, 0, 0, tbaskb, tbaskb, tbaskb_state, 0, "Tandy Radio Shack", "Electronic Basketball (Tandy)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/hh_sm510.cpp b/src/mame/drivers/hh_sm510.cpp
index b6f1b0a3b51..006a46dd5a6 100644
--- a/src/mame/drivers/hh_sm510.cpp
+++ b/src/mame/drivers/hh_sm510.cpp
@@ -4795,7 +4795,7 @@ CONS( 1983, gnw_mario, 0, 0, gnw_mario, gnw_mario, gnw_mario_stat
CONS( 1982, gnw_dkjr, 0, 0, gnw_dkjr, gnw_dkjr, gnw_dkjr_state, 0, "Nintendo", "Game & Watch: Donkey Kong Jr. (new wide screen)", MACHINE_SUPPORTS_SAVE )
CONS( 1983, gnw_mariocm, 0, 0, gnw_mariocm, gnw_mariocm, gnw_mariocm_state, 0, "Nintendo", "Game & Watch: Mario's Cement Factory (new wide screen)", MACHINE_SUPPORTS_SAVE )
-CONS( 1986, gnw_smb, 0, 0, gnw_smb, gnw_smb, gnw_smb_state, 0, "Nintendo", "Game & Watch: Super Mario Bros.", MACHINE_SUPPORTS_SAVE )
+CONS( 1986, gnw_smb, 0, 0, gnw_smb, gnw_smb, gnw_smb_state, 0, "Nintendo", "Game & Watch: Super Mario Bros.", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
CONS( 1984, gnw_boxing, 0, 0, gnw_boxing, gnw_boxing, gnw_boxing_state, 0, "Nintendo", "Game & Watch: Boxing", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp
index 4e0b71b436f..c4b2df63e62 100644
--- a/src/mame/drivers/hh_tms1k.cpp
+++ b/src/mame/drivers/hh_tms1k.cpp
@@ -1848,7 +1848,7 @@ static INPUT_PORTS_START( quizwizc )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Slow Forward")
PORT_START("IN.5") // R5
- PORT_CONFNAME( 0x02, 0x00, "Game Select")
+ PORT_CONFNAME( 0x02, 0x00, "Game Select" )
PORT_CONFSETTING( 0x00, "1" )
PORT_CONFSETTING( 0x02, "2" )
PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
diff --git a/src/mame/layout/matchme.lay b/src/mame/layout/matchme.lay
new file mode 100644
index 00000000000..e420abefe7e
--- /dev/null
+++ b/src/mame/layout/matchme.lay
@@ -0,0 +1,135 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+
+<!-- define elements -->
+
+ <element name="disk_grey"><disk><color red="0.6" green="0.6" blue="0.6" /></disk></element>
+
+ <element name="mask" defstate="0"><disk state="0"><color red="0" green="0" blue="0" /></disk></element>
+ <element name="dummy"><text string=" "></text></element>
+
+ <element name="disk_1"><disk><color red="0.9" green="0.3" blue="1.0" /></disk></element>
+ <element name="disk_2"><disk><color red="1.0" green="0.4" blue="0.4" /></disk></element>
+ <element name="disk_3"><disk><color red="1.0" green="1.0" blue="0.4" /></disk></element>
+ <element name="disk_4"><disk><color red="0.3" green="0.3" blue="1.0" /></disk></element>
+ <element name="disk_5"><disk><color red="1.0" green="0.1" blue="0.15" /></disk></element>
+ <element name="disk_6"><disk><color red="0.3" green="0.9" blue="1.0" /></disk></element>
+ <element name="disk_7"><disk><color red="1.0" green="0.7" blue="0.3" /></disk></element>
+ <element name="disk_8"><disk><color red="0.1" green="1.0" blue="0.5" /></disk></element>
+
+ <element name="button" defstate="0">
+ <disk><color red="0.0" green="0.0" blue="0.0" /></disk>
+ <disk state="0">
+ <color red="0.8" green="0.5" blue="0.1" />
+ <bounds x="0.2" y="0.2" width="0.6" height="0.6" />
+ </disk>
+ <disk state="1">
+ <color red="0.8" green="0.45" blue="0.1" />
+ <bounds x="0.28" y="0.28" width="0.44" height="0.44" />
+ </disk>
+ </element>
+
+ <element name="text_last">
+ <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
+ <text string="LAST"><color red="0.1" green="0.1" blue="0.1" /></text>
+ </element>
+ <element name="text_start">
+ <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
+ <text string="START"><color red="0.1" green="0.1" blue="0.1" /></text>
+ </element>
+ <element name="text_long">
+ <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
+ <text string="LONG"><color red="0.1" green="0.1" blue="0.1" /></text>
+ </element>
+
+ <element name="text_1">
+ <disk><color red="0.6" green="0.6" blue="0.6" /></disk>
+ <text string="1"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_2">
+ <disk><color red="0.6" green="0.6" blue="0.6" /></disk>
+ <text string="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_3">
+ <disk><color red="0.6" green="0.6" blue="0.6" /></disk>
+ <text string="3"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_4">
+ <disk><color red="0.6" green="0.6" blue="0.6" /></disk>
+ <text string="4"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_5">
+ <disk><color red="0.6" green="0.6" blue="0.6" /></disk>
+ <text string="5"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_6">
+ <disk><color red="0.6" green="0.6" blue="0.6" /></disk>
+ <text string="6"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_7">
+ <disk><color red="0.6" green="0.6" blue="0.6" /></disk>
+ <text string="7"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_8">
+ <disk><color red="0.6" green="0.6" blue="0.6" /></disk>
+ <text string="8"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+
+
+<!-- build screen -->
+
+ <view name="Internal Layout">
+ <bounds left="4" right="16" top="4" bottom="16" />
+
+ <!-- middle part -->
+
+ <bezel element="disk_grey"><bounds x="6.75" y="6.75" width="6.5" height="6.5" /></bezel>
+
+ <bezel element="text_1"><bounds x="8.6785" y="12.3369" width="0.5" height="0.5" /></bezel>
+ <bezel element="text_2"><bounds x="7.1631" y="10.8215" width="0.5" height="0.5" /></bezel>
+ <bezel element="text_3"><bounds x="7.1631" y="8.6785" width="0.5" height="0.5" /></bezel>
+ <bezel element="text_4"><bounds x="8.6785" y="7.1631" width="0.5" height="0.5" /></bezel>
+ <bezel element="text_5"><bounds x="10.8215" y="7.1631" width="0.5" height="0.5" /></bezel>
+ <bezel element="text_6"><bounds x="12.3369" y="8.6785" width="0.5" height="0.5" /></bezel>
+ <bezel element="text_7"><bounds x="12.3369" y="10.8215" width="0.5" height="0.5" /></bezel>
+ <bezel element="text_8"><bounds x="10.8215" y="12.3369" width="0.5" height="0.5" /></bezel>
+
+ <bezel element="button" inputtag="FAKE" inputmask="0x01"><bounds x="8.0" y="11" width="0.5" height="0.5" /></bezel>
+ <bezel element="button" inputtag="IN.2" inputmask="0x01"><bounds x="9.75" y="11.9" width="0.5" height="0.5" /></bezel>
+ <bezel element="button" inputtag="IN.2" inputmask="0x04"><bounds x="11.5" y="11" width="0.5" height="0.5" /></bezel>
+
+ <bezel element="text_last"><bounds x="7.6" y="11.55" width="1.3" height="0.29" /></bezel>
+ <bezel element="text_start"><bounds x="9.35" y="12.45" width="1.3" height="0.29" /></bezel>
+ <bezel element="text_long"><bounds x="11.1" y="11.55" width="1.3" height="0.29" /></bezel>
+
+ <!-- button lamps -->
+
+ <bezel element="disk_1"><bounds x="6.8366" y="13.3694" width="2.5" height="2.5" /></bezel>
+ <bezel element="disk_2"><bounds x="4.1306" y="10.6634" width="2.5" height="2.5" /></bezel>
+ <bezel element="disk_3"><bounds x="4.1306" y="6.8366" width="2.5" height="2.5" /></bezel>
+ <bezel element="disk_4"><bounds x="6.8366" y="4.1306" width="2.5" height="2.5" /></bezel>
+ <bezel element="disk_5"><bounds x="10.6634" y="4.1306" width="2.5" height="2.5" /></bezel>
+ <bezel element="disk_6"><bounds x="13.3694" y="6.8366" width="2.5" height="2.5" /></bezel>
+ <bezel element="disk_7"><bounds x="13.3694" y="10.6634" width="2.5" height="2.5" /></bezel>
+ <bezel element="disk_8"><bounds x="10.6634" y="13.3694" width="2.5" height="2.5" /></bezel>
+
+ <bezel element="dummy" inputtag="IN.0" inputmask="0x01"><bounds x="6.8366" y="13.3694" width="2.5" height="2.5" /></bezel>
+ <bezel element="dummy" inputtag="IN.0" inputmask="0x02"><bounds x="4.1306" y="10.6634" width="2.5" height="2.5" /></bezel>
+ <bezel element="dummy" inputtag="IN.0" inputmask="0x04"><bounds x="4.1306" y="6.8366" width="2.5" height="2.5" /></bezel>
+ <bezel element="dummy" inputtag="IN.0" inputmask="0x08"><bounds x="6.8366" y="4.1306" width="2.5" height="2.5" /></bezel>
+ <bezel element="dummy" inputtag="IN.1" inputmask="0x01"><bounds x="10.6634" y="4.1306" width="2.5" height="2.5" /></bezel>
+ <bezel element="dummy" inputtag="IN.1" inputmask="0x02"><bounds x="13.3694" y="6.8366" width="2.5" height="2.5" /></bezel>
+ <bezel element="dummy" inputtag="IN.1" inputmask="0x04"><bounds x="13.3694" y="10.6634" width="2.5" height="2.5" /></bezel>
+ <bezel element="dummy" inputtag="IN.1" inputmask="0x08"><bounds x="10.6634" y="13.3694" width="2.5" height="2.5" /></bezel>
+
+ <bezel name="0.0" element="mask"><bounds x="6.8366" y="13.3694" width="2.5" height="2.5" /><color alpha="0.4" /></bezel>
+ <bezel name="0.1" element="mask"><bounds x="4.1306" y="10.6634" width="2.5" height="2.5" /><color alpha="0.4" /></bezel>
+ <bezel name="0.2" element="mask"><bounds x="4.1306" y="6.8366" width="2.5" height="2.5" /><color alpha="0.4" /></bezel>
+ <bezel name="0.3" element="mask"><bounds x="6.8366" y="4.1306" width="2.5" height="2.5" /><color alpha="0.4" /></bezel>
+ <bezel name="0.4" element="mask"><bounds x="10.6634" y="4.1306" width="2.5" height="2.5" /><color alpha="0.4" /></bezel>
+ <bezel name="0.5" element="mask"><bounds x="13.3694" y="6.8366" width="2.5" height="2.5" /><color alpha="0.4" /></bezel>
+ <bezel name="0.6" element="mask"><bounds x="13.3694" y="10.6634" width="2.5" height="2.5" /><color alpha="0.4" /></bezel>
+ <bezel name="0.7" element="mask"><bounds x="10.6634" y="13.3694" width="2.5" height="2.5" /><color alpha="0.4" /></bezel>
+
+ </view>
+</mamelayout>
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 20f88313214..a20d03faabf 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -14726,6 +14726,7 @@ hccbaskb // Tiger Electronics
leboom // Lakeside
maniac // Ideal
melodym // GAF
+matchme // Kingsford
pabball // Caprice
rockpin // Tiger Electronics
tbaskb // Tandy Radio Shack