New game added

-----------------
Castle Toy Tactix [hap, Sean Riddle, Kevin Horton]
This commit is contained in:
hap 2015-08-05 17:54:26 +02:00
parent 195ff0fd7b
commit b6e1d3d986
6 changed files with 393 additions and 45 deletions

View File

@ -26,6 +26,7 @@
// uCOM-43 products: 2000x8 ROM, RAM size custom, supports full instruction set
const device_type NEC_D553 = &device_creator<upd553_cpu_device>; // 42-pin PMOS, 35 pins for I/O, Open Drain output, 96x4 RAM
const device_type NEC_D557L = &device_creator<upd557l_cpu_device>; // 28-pin PMOS, 21 pins for I/O, Open Drain output, 96x4 RAM
const device_type NEC_D650 = &device_creator<upd650_cpu_device>; // 42-pin CMOS, 35 pins for I/O, push-pull output, 96x4 RAM
// uCOM-44 products: 1000x8 ROM, 64x4 RAM, does not support external interrupt
@ -61,6 +62,10 @@ upd553_cpu_device::upd553_cpu_device(const machine_config &mconfig, const char *
: ucom4_cpu_device(mconfig, NEC_D553, "uPD553", tag, owner, clock, NEC_UCOM43, 3 /* stack levels */, 11 /* prg width */, ADDRESS_MAP_NAME(program_2k), 7 /* data width */, ADDRESS_MAP_NAME(data_96x4), "upd553", __FILE__)
{ }
upd557l_cpu_device::upd557l_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: ucom4_cpu_device(mconfig, NEC_D557L, "uPD557L", tag, owner, clock, NEC_UCOM43, 3, 11, ADDRESS_MAP_NAME(program_2k), 7, ADDRESS_MAP_NAME(data_96x4), "upd557l", __FILE__)
{ }
upd650_cpu_device::upd650_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: ucom4_cpu_device(mconfig, NEC_D650, "uPD650", tag, owner, clock, NEC_UCOM43, 3, 11, ADDRESS_MAP_NAME(program_2k), 7, ADDRESS_MAP_NAME(data_96x4), "upd650", __FILE__)
{ }
@ -207,6 +212,90 @@ void ucom4_cpu_device::device_reset()
//-------------------------------------------------
// i/o handling
//-------------------------------------------------
// default:
// A,B are inputs, C,D are input/output, E,F,G,H,I are output
UINT8 ucom4_cpu_device::input_r(int index)
{
index &= 0xf;
UINT8 inp = 0;
switch (index)
{
case NEC_UCOM4_PORTA: inp = m_read_a(index, 0xff); break;
case NEC_UCOM4_PORTB: inp = m_read_b(index, 0xff); break;
case NEC_UCOM4_PORTC: inp = m_read_c(index, 0xff) | m_port_out[index]; break;
case NEC_UCOM4_PORTD: inp = m_read_d(index, 0xff) | m_port_out[index]; break;
default:
logerror("%s read from unknown port %c at $%03X\n", tag(), 'A' + index, m_prev_pc);
break;
}
return inp & 0xf;
}
void ucom4_cpu_device::output_w(int index, UINT8 data)
{
index &= 0xf;
data &= 0xf;
switch (index)
{
case NEC_UCOM4_PORTC: m_write_c(index, data, 0xff); break;
case NEC_UCOM4_PORTD: m_write_d(index, data, 0xff); break;
case NEC_UCOM4_PORTE: m_write_e(index, data, 0xff); break;
case NEC_UCOM4_PORTF: m_write_f(index, data, 0xff); break;
case NEC_UCOM4_PORTG: m_write_g(index, data, 0xff); break;
case NEC_UCOM4_PORTH: m_write_h(index, data, 0xff); break;
case NEC_UCOM4_PORTI: m_write_i(index, data & 7, 0xff); break;
default:
logerror("%s write to unknown port %c = $%X at $%03X\n", tag(), 'A' + index, data, m_prev_pc);
break;
}
m_port_out[index] = data;
}
// uPD557L:
// ports B,H,I are stripped, port G is reduced to 1 pin
UINT8 upd557l_cpu_device::input_r(int index)
{
index &= 0xf;
if (index == NEC_UCOM4_PORTB)
logerror("%s read from unknown port %c at $%03X\n", tag(), 'A' + index, m_prev_pc);
else
return ucom4_cpu_device::input_r(index);
return 0;
}
void upd557l_cpu_device::output_w(int index, UINT8 data)
{
index &= 0xf;
data &= 0xf;
if (index == NEC_UCOM4_PORTH || index == NEC_UCOM4_PORTI)
logerror("%s write to unknown port %c = $%X at $%03X\n", tag(), 'A' + index, data, m_prev_pc);
else
{
// only G0 for port G
if (index == NEC_UCOM4_PORTG)
data &= 1;
ucom4_cpu_device::output_w(index, data);
}
}
//-------------------------------------------------
// interrupt
//-------------------------------------------------

View File

@ -207,6 +207,9 @@ protected:
devcb_write8 m_write_h;
devcb_write8 m_write_i;
virtual UINT8 input_r(int index);
virtual void output_w(int index, UINT8 data);
// misc internal helpers
void increment_pc();
void fetch_arg();
@ -216,8 +219,6 @@ protected:
void ram_w(UINT8 data);
void pop_stack();
void push_stack();
virtual UINT8 input_r(int index);
virtual void output_w(int index, UINT8 data);
bool check_op_43();
TIMER_CALLBACK_MEMBER( simple_timer_cb );
@ -318,6 +319,17 @@ public:
};
class upd557l_cpu_device : public ucom4_cpu_device
{
public:
upd557l_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
protected:
virtual UINT8 input_r(int index);
virtual void output_w(int index, UINT8 data);
};
class upd650_cpu_device : public ucom4_cpu_device
{
public:
@ -334,6 +346,7 @@ public:
extern const device_type NEC_D553;
extern const device_type NEC_D557L;
extern const device_type NEC_D650;
extern const device_type NEC_D552;

View File

@ -34,48 +34,9 @@ void ucom4_cpu_device::push_stack()
m_stack[0] = m_pc;
}
UINT8 ucom4_cpu_device::input_r(int index)
{
index &= 0xf;
UINT8 inp = 0xf;
switch (index)
{
case NEC_UCOM4_PORTA: inp = m_read_a(index, 0xff); break;
case NEC_UCOM4_PORTB: inp = m_read_b(index, 0xff); break;
case NEC_UCOM4_PORTC: inp = m_read_c(index, 0xff) | m_port_out[index]; break;
case NEC_UCOM4_PORTD: inp = m_read_d(index, 0xff) | m_port_out[index]; break;
default:
logerror("%s read from unknown port %c at $%03X\n", tag(), 'A' + index, m_prev_pc);
break;
}
return inp & 0xf;
}
void ucom4_cpu_device::output_w(int index, UINT8 data)
{
index &= 0xf;
data &= 0xf;
switch (index)
{
case NEC_UCOM4_PORTC: m_write_c(index, data, 0xff); break;
case NEC_UCOM4_PORTD: m_write_d(index, data, 0xff); break;
case NEC_UCOM4_PORTE: m_write_e(index, data, 0xff); break;
case NEC_UCOM4_PORTF: m_write_f(index, data, 0xff); break;
case NEC_UCOM4_PORTG: m_write_g(index, data, 0xff); break;
case NEC_UCOM4_PORTH: m_write_h(index, data, 0xff); break;
case NEC_UCOM4_PORTI: m_write_i(index, data & 7, 0xff); break;
default:
logerror("%s write to unknown port %c = $%X at $%03X\n", tag(), 'A' + index, data & 0xf, m_prev_pc);
break;
}
m_port_out[index] = data;
}
// basic instruction set
void ucom4_cpu_device::op_illegal()
{
@ -83,9 +44,6 @@ void ucom4_cpu_device::op_illegal()
}
// basic instruction set
// Load
void ucom4_cpu_device::op_li()

View File

@ -2263,6 +2263,7 @@ bmsoccer // Bambino
bmsafari // Bambino
splasfgt // Bambino
bcclimbr // Bandai
tactix // Castle Toy
invspace // Epoch
efball // Epoch
galaxy2 // Epoch

View File

@ -44,6 +44,8 @@
@209 uPD553C 1982, Tomy Caveman (TN-12)
@258 uPD553C 1984, Tomy Alien Chase (TN-16)
@512 uPD557LC 1980, Castle Toy Tactix
*060 uPD650C 1979, Mattel Computer Gin
*085 uPD650C 1980, Roland TR-808
*127 uPD650C 198?, Sony OA-S1100 Typecorder (subcpu, have dump)
@ -52,6 +54,11 @@
(* denotes not yet emulated by MAME, @ denotes it's in this driver)
TODO:
- games that rely on the fact that faster/longer strobed elements appear brighter:
tactix(player 2)
***************************************************************************/
#include "includes/hh_ucom4.h"
@ -59,6 +66,7 @@
// internal artwork
#include "efball.lh"
#include "mvbfree.lh"
#include "tactix.lh" // clickable
#include "hh_ucom4_test.lh" // common test-layout - use external artwork
@ -956,6 +964,125 @@ MACHINE_CONFIG_END
/***************************************************************************
Castle Toy Tactix
* NEC uCOM-43 MCU, labeled D557LC 512
* 16 LEDs behind buttons
Tactix is similar to Merlin, for 1 or 2 players. In 2-player mode, simply
don't press the Comp Turn button. The four included minigames are:
1: Capture (reversi)
2: Jump-Off (peg solitaire)
3: Triple Play (3 in a row)
4: Concentration (memory)
note: MAME external artwork is not needed for this game
***************************************************************************/
class tactix_state : public hh_ucom4_state
{
public:
tactix_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_ucom4_state(mconfig, type, tag)
{ }
DECLARE_WRITE8_MEMBER(leds_w);
DECLARE_WRITE8_MEMBER(speaker_w);
DECLARE_WRITE8_MEMBER(input_w);
DECLARE_READ8_MEMBER(input_r);
};
// handlers
WRITE8_MEMBER(tactix_state::leds_w)
{
// D,F: 4*4 led matrix
m_port[offset] = data;
display_matrix(4, 4, m_port[NEC_UCOM4_PORTD], m_port[NEC_UCOM4_PORTF]);
}
WRITE8_MEMBER(tactix_state::speaker_w)
{
// G0: speaker out
m_speaker->level_w(data & 1);
}
WRITE8_MEMBER(tactix_state::input_w)
{
// C,E0: input mux
m_port[offset] = data;
m_inp_mux = (m_port[NEC_UCOM4_PORTE] << 4 & 0x10) | m_port[NEC_UCOM4_PORTC];
}
READ8_MEMBER(tactix_state::input_r)
{
// A: multiplexed inputs
return read_inputs(5);
}
// config
static INPUT_PORTS_START( tactix )
PORT_START("IN.0") // C0 port A
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("Button 1")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Button 5")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Button 9")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Z) PORT_NAME("Button 13")
PORT_START("IN.1") // C1 port A
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("Button 2")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("Button 6")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Button 10")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_X) PORT_NAME("Button 14")
PORT_START("IN.2") // C2 port A
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("Button 3")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Button 7")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_NAME("Button 11")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("Button 15")
PORT_START("IN.3") // C3 port A
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_NAME("Button 4")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Button 8")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("Button 12")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("Button 16")
PORT_START("IN.4") // E0 port A
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) //todo..
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8)
INPUT_PORTS_END
static MACHINE_CONFIG_START( tactix, tactix_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", NEC_D557L, 400000) // approximation
MCFG_UCOM4_READ_A_CB(READ8(tactix_state, input_r))
MCFG_UCOM4_WRITE_C_CB(WRITE8(tactix_state, input_w))
MCFG_UCOM4_WRITE_D_CB(WRITE8(tactix_state, leds_w))
MCFG_UCOM4_WRITE_E_CB(WRITE8(tactix_state, input_w))
MCFG_UCOM4_WRITE_F_CB(WRITE8(tactix_state, leds_w))
MCFG_UCOM4_WRITE_G_CB(WRITE8(tactix_state, speaker_w))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_tactix)
/* no video! */
/* 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
/***************************************************************************
Epoch Invader From Space (manufactured in Japan)
@ -2319,6 +2446,12 @@ ROM_START( bcclimbr )
ROM_END
ROM_START( tactix )
ROM_REGION( 0x0800, "maincpu", 0 )
ROM_LOAD( "d557lc-512", 0x0000, 0x0800, CRC(1df738cb) SHA1(15a5de28a3c03e6894d29c56b5b424983569ccf2) )
ROM_END
ROM_START( invspace )
ROM_REGION( 0x0400, "maincpu", 0 )
ROM_LOAD( "d552c-054", 0x0000, 0x0400, CRC(913d9c13) SHA1(f20edb5458e54d2f6d4e45e5d59efd87e05a6f3f) )
@ -2401,6 +2534,8 @@ CONS( 1980, splasfgt, 0, 0, splasfgt, splasfgt, driver_device, 0, "Bambin
CONS( 1982, bcclimbr, 0, 0, bcclimbr, bcclimbr, driver_device, 0, "Bandai", "Crazy Climber (Bandai)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
CONS( 1980, tactix, 0, 0, tactix, tactix, driver_device, 0, "Castle Toy", "Tactix", MACHINE_SUPPORTS_SAVE )
CONS( 1980, invspace, 0, 0, invspace, invspace, driver_device, 0, "Epoch", "Invader From Space", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
CONS( 1980, efball, 0, 0, efball, efball, driver_device, 0, "Epoch", "Electronic Football (Epoch)", MACHINE_SUPPORTS_SAVE )
CONS( 1981, galaxy2, 0, 0, galaxy2, galaxy2, driver_device, 0, "Epoch", "Galaxy II", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )

152
src/mess/layout/tactix.lay Normal file
View File

@ -0,0 +1,152 @@
<?xml version="1.0"?>
<mamelayout version="2">
<!-- define elements -->
<element name="static_white"><rect><color red="0.95" green="0.95" blue="0.97" /></rect></element>
<element name="disk_grey"><disk><color red="0.65" green="0.65" blue="0.67" /></disk></element>
<element name="disk_blue"><disk><color red="0.06" green="0.4" blue="0.85" /></disk></element>
<element name="disk_yellow"><disk><color red="0.80" green="0.85" blue="0.3" /></disk></element>
<element name="button" defstate="0">
<text state="0" string=" "><color red="0.0" green="0.0" blue="0.0" /></text>
<text state="1" string=" "><color red="0.0" green="0.0" blue="0.0" /></text>
<disk state="1">
<bounds x="0.04" y="0.04" width="0.92" height="0.92"/>
<color red="0.30" green="0.31" blue="0.32" />
</disk>
</element>
<element name="led" defstate="0">
<disk>
<bounds x="0" y="0" width="1" height="1" />
<color red="0.0" green="0.0" blue="0.0" />
</disk>
<disk state="0">
<bounds x="0.1" y="0.1" width="0.8" height="0.8" />
<color red="0.2" green="0.03" blue="0.05" />
</disk>
<disk state="1">
<bounds x="0.1" y="0.1" width="0.8" height="0.8" />
<color red="1.0" green="0.15" blue="0.25" />
</disk>
</element>
<element name="t1"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="1"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="t2"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="2"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="t3"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="3"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="t4"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="4"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="t5"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="5"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="t6"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="6"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="t7"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="7"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="t8"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="8"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="t9"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="9"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="t10"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="10"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="t11"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="11"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="t12"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="12"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="t13"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="13"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="t14"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="14"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="t15"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="15"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="t16"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="16"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="t_comp"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="COMP"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="t_turn"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="TURN"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="t_new"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="NEW"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="t_game"><rect><color red="0.06" green="0.4" blue="0.85" /></rect><text string="GAME"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<!-- build screen -->
<view name="Internal Layout">
<bounds left="7.15" right="20" top="7.15" bottom="20" />
<bezel element="static_white">
<bounds left="0" right="30" top="0" bottom="30" />
</bezel>
<!-- bezel -->
<bezel element="disk_grey"><bounds x="7.55" y="7.55" width="12.05" height="12.05" /></bezel>
<bezel element="disk_blue"><bounds x="7.8" y="7.8" width="11.55" height="11.55" /></bezel>
<bezel element="t1"><bounds x="10" y="11.25" width="1.15" height="0.5" /></bezel>
<bezel element="t2"><bounds x="12" y="11.25" width="1.15" height="0.5" /></bezel>
<bezel element="t3"><bounds x="14" y="11.25" width="1.15" height="0.5" /></bezel>
<bezel element="t4"><bounds x="16" y="11.25" width="1.15" height="0.5" /></bezel>
<bezel element="t5"><bounds x="10" y="13.25" width="1.15" height="0.5" /></bezel>
<bezel element="t6"><bounds x="12" y="13.25" width="1.15" height="0.5" /></bezel>
<bezel element="t7"><bounds x="14" y="13.25" width="1.15" height="0.5" /></bezel>
<bezel element="t8"><bounds x="16" y="13.25" width="1.15" height="0.5" /></bezel>
<bezel element="t9"><bounds x="10" y="15.25" width="1.15" height="0.5" /></bezel>
<bezel element="t10"><bounds x="12" y="15.25" width="1.15" height="0.5" /></bezel>
<bezel element="t11"><bounds x="14" y="15.25" width="1.15" height="0.5" /></bezel>
<bezel element="t12"><bounds x="16" y="15.25" width="1.15" height="0.5" /></bezel>
<bezel element="t13"><bounds x="10" y="17.25" width="1.15" height="0.5" /></bezel>
<bezel element="t14"><bounds x="12" y="17.25" width="1.15" height="0.5" /></bezel>
<bezel element="t15"><bounds x="14" y="17.25" width="1.15" height="0.5" /></bezel>
<bezel element="t16"><bounds x="16" y="17.25" width="1.15" height="0.5" /></bezel>
<bezel element="t_comp"><bounds x="7.95" y="12.32" width="1.55" height="0.5" /></bezel>
<bezel element="t_turn"><bounds x="7.95" y="14.175" width="1.55" height="0.5" /></bezel>
<bezel element="disk_yellow"><bounds x="8.15" y="12.925" width="1.15" height="1.15" /></bezel>
<bezel element="t_new"><bounds x="17.65" y="12.32" width="1.55" height="0.5" /></bezel>
<bezel element="t_game"><bounds x="17.65" y="14.175" width="1.55" height="0.5" /></bezel>
<bezel element="disk_yellow"><bounds x="17.85" y="12.925" width="1.15" height="1.15" /></bezel>
<!-- leds -->
<bezel name="3.0" element="led"><bounds x="10" y="10" width="1.15" height="1.15" /></bezel>
<bezel name="3.1" element="led"><bounds x="12" y="10" width="1.15" height="1.15" /></bezel>
<bezel name="3.2" element="led"><bounds x="14" y="10" width="1.15" height="1.15" /></bezel>
<bezel name="3.3" element="led"><bounds x="16" y="10" width="1.15" height="1.15" /></bezel>
<bezel name="2.0" element="led"><bounds x="10" y="12" width="1.15" height="1.15" /></bezel>
<bezel name="2.1" element="led"><bounds x="12" y="12" width="1.15" height="1.15" /></bezel>
<bezel name="2.2" element="led"><bounds x="14" y="12" width="1.15" height="1.15" /></bezel>
<bezel name="2.3" element="led"><bounds x="16" y="12" width="1.15" height="1.15" /></bezel>
<bezel name="1.0" element="led"><bounds x="10" y="14" width="1.15" height="1.15" /></bezel>
<bezel name="1.1" element="led"><bounds x="12" y="14" width="1.15" height="1.15" /></bezel>
<bezel name="1.2" element="led"><bounds x="14" y="14" width="1.15" height="1.15" /></bezel>
<bezel name="1.3" element="led"><bounds x="16" y="14" width="1.15" height="1.15" /></bezel>
<bezel name="0.0" element="led"><bounds x="10" y="16" width="1.15" height="1.15" /></bezel>
<bezel name="0.1" element="led"><bounds x="12" y="16" width="1.15" height="1.15" /></bezel>
<bezel name="0.2" element="led"><bounds x="14" y="16" width="1.15" height="1.15" /></bezel>
<bezel name="0.3" element="led"><bounds x="16" y="16" width="1.15" height="1.15" /></bezel>
<!-- button highlights -->
<bezel element="button" inputtag="IN.0" inputmask="0x01"><bounds x="10" y="10" width="1.15" height="1.15" /><color alpha="0.6" /></bezel>
<bezel element="button" inputtag="IN.0" inputmask="0x02"><bounds x="10" y="12" width="1.15" height="1.15" /><color alpha="0.6" /></bezel>
<bezel element="button" inputtag="IN.0" inputmask="0x04"><bounds x="10" y="14" width="1.15" height="1.15" /><color alpha="0.6" /></bezel>
<bezel element="button" inputtag="IN.0" inputmask="0x08"><bounds x="10" y="16" width="1.15" height="1.15" /><color alpha="0.6" /></bezel>
<bezel element="button" inputtag="IN.1" inputmask="0x01"><bounds x="12" y="10" width="1.15" height="1.15" /><color alpha="0.6" /></bezel>
<bezel element="button" inputtag="IN.1" inputmask="0x02"><bounds x="12" y="12" width="1.15" height="1.15" /><color alpha="0.6" /></bezel>
<bezel element="button" inputtag="IN.1" inputmask="0x04"><bounds x="12" y="14" width="1.15" height="1.15" /><color alpha="0.6" /></bezel>
<bezel element="button" inputtag="IN.1" inputmask="0x08"><bounds x="12" y="16" width="1.15" height="1.15" /><color alpha="0.6" /></bezel>
<bezel element="button" inputtag="IN.2" inputmask="0x01"><bounds x="14" y="10" width="1.15" height="1.15" /><color alpha="0.6" /></bezel>
<bezel element="button" inputtag="IN.2" inputmask="0x02"><bounds x="14" y="12" width="1.15" height="1.15" /><color alpha="0.6" /></bezel>
<bezel element="button" inputtag="IN.2" inputmask="0x04"><bounds x="14" y="14" width="1.15" height="1.15" /><color alpha="0.6" /></bezel>
<bezel element="button" inputtag="IN.2" inputmask="0x08"><bounds x="14" y="16" width="1.15" height="1.15" /><color alpha="0.6" /></bezel>
<bezel element="button" inputtag="IN.3" inputmask="0x01"><bounds x="16" y="10" width="1.15" height="1.15" /><color alpha="0.6" /></bezel>
<bezel element="button" inputtag="IN.3" inputmask="0x02"><bounds x="16" y="12" width="1.15" height="1.15" /><color alpha="0.6" /></bezel>
<bezel element="button" inputtag="IN.3" inputmask="0x04"><bounds x="16" y="14" width="1.15" height="1.15" /><color alpha="0.6" /></bezel>
<bezel element="button" inputtag="IN.3" inputmask="0x08"><bounds x="16" y="16" width="1.15" height="1.15" /><color alpha="0.6" /></bezel>
<!-- todo
<bezel element="button" inputtag="IN.4" inputmask="0x01"><bounds x="8.15" y="12.925" width="1.15" height="1.15" /><color alpha="0.6" /></bezel>
<bezel element="button" inputtag="IN.4" inputmask="0x01"><bounds x="17.85" y="12.925" width="1.15" height="1.15" /><color alpha="0.6" /></bezel>
-->
</view>
</mamelayout>