summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Sandro Ronco <sandro.ronco@gmx.com>2016-10-28 21:38:26 +0200
committer Sandro Ronco <sandro.ronco@gmx.com>2016-10-28 21:38:26 +0200
commit1746a9f058e6ff888d87df9eb5aacd98f4077c5a (patch)
tree63d233ecf85272466f66a863aba6c8ebeede31d8
parent6184bba010924c145ceb086cc918a8d77e46583e (diff)
Moved Saitek RISC 2500 into a separate driver and added internal layout and inputs.
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/mame/drivers/mmodular.cpp46
-rw-r--r--src/mame/drivers/risc2500.cpp315
-rw-r--r--src/mame/layout/risc2500.lay534
4 files changed, 850 insertions, 46 deletions
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index 0344b1e004e..8684b2194e3 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -1948,6 +1948,7 @@ files {
MAME_DIR .. "src/mame/drivers/glasgow.cpp",
MAME_DIR .. "src/mame/drivers/mephisto.cpp",
MAME_DIR .. "src/mame/drivers/mmodular.cpp",
+ MAME_DIR .. "src/mame/drivers/risc2500.cpp",
MAME_DIR .. "src/mame/drivers/stratos.cpp",
}
diff --git a/src/mame/drivers/mmodular.cpp b/src/mame/drivers/mmodular.cpp
index 05b9b5de63c..1a950119055 100644
--- a/src/mame/drivers/mmodular.cpp
+++ b/src/mame/drivers/mmodular.cpp
@@ -24,7 +24,6 @@
misc non-modular/non-68K boards
- RISC 2500 (Skeleton, does not work, and not sure the same internal chessboard connections are used)
Academy 65C02 4.9152mhz
Monte Carlo IV, Mega IV and any others not listed above have correct ROM/RAM and maybe LCD, not much else for now
@@ -81,7 +80,6 @@ Bit 5+6 LED 1-8 enable
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "cpu/m6502/m65c02.h"
-#include "cpu/arm/arm.h"
#include "sound/beep.h"
//#include "machine/mos6551.h"
#include "video/hd44780.h"
@@ -180,8 +178,6 @@ public:
DECLARE_WRITE16_MEMBER(write_unknown2);
DECLARE_READ32_MEMBER(read_unknown3_32);
DECLARE_READ16_MEMBER(read_unknown3);
- DECLARE_READ32_MEMBER(read_1800000);
- DECLARE_WRITE32_MEMBER(write_1000000);
DECLARE_DRIVER_INIT(polgar);
DECLARE_MACHINE_START(polgar);
DECLARE_MACHINE_RESET(polgar);
@@ -192,7 +188,6 @@ public:
DECLARE_MACHINE_RESET(monteciv);
DECLARE_MACHINE_START(diablo68);
DECLARE_MACHINE_START(van16);
- DECLARE_MACHINE_START(risc);
DECLARE_MACHINE_RESET(academy);
DECLARE_PALETTE_INIT(chess_lcd);
TIMER_DEVICE_CALLBACK_MEMBER(cause_nmi);
@@ -957,16 +952,6 @@ READ16_MEMBER(polgar_state::read_unknown3)
}
-READ32_MEMBER(polgar_state::read_1800000)
-{
- logerror("Read from RISC2500 1800000\n");
- return 0;
-}
-
-WRITE32_MEMBER(polgar_state::write_1000000)
-{
- logerror("Write to RISC2500 1000000\n");
-}
TIMER_DEVICE_CALLBACK_MEMBER(polgar_state::timer_update_irq6)
{
@@ -1000,11 +985,6 @@ MACHINE_START_MEMBER(polgar_state,van32)
}
-MACHINE_START_MEMBER(polgar_state,risc)
-{
-}
-
-
void polgar_state::common_chess_start()
{
}
@@ -1179,14 +1159,6 @@ static ADDRESS_MAP_START(alm32_mem, AS_PROGRAM, 32, polgar_state )
ADDRESS_MAP_END
-static ADDRESS_MAP_START(risc_mem, AS_PROGRAM, 32, polgar_state )
-
- AM_RANGE( 0x02000000, 0x0201ffff ) AM_ROM AM_REGION("maincpu", 0) // AM_MIRROR(0x2000000)
- AM_RANGE( 0x01000000, 0x01000003 ) AM_WRITE(write_1000000 )
- AM_RANGE( 0x01800000, 0x01800003 ) AM_READ(read_1800000 )
- AM_RANGE( 0x00000000, 0x0001ffff ) AM_RAM
-
- ADDRESS_MAP_END
static ADDRESS_MAP_START(van16_mem, AS_PROGRAM, 16, polgar_state )
@@ -1639,18 +1611,6 @@ static MACHINE_CONFIG_START( van32, polgar_state )
MACHINE_CONFIG_END
-static MACHINE_CONFIG_START( risc, polgar_state )
- MCFG_CPU_ADD("maincpu", ARM, 14000000)
- MCFG_CPU_PROGRAM_MAP(risc_mem)
- MCFG_MACHINE_START_OVERRIDE(polgar_state,risc)
- MCFG_MACHINE_RESET_OVERRIDE(polgar_state,van16)
- //MCFG_TIMER_DRIVER_ADD_PERIODIC("artwork_timer", polgar_state, mboard_update_artwork, attotime::from_hz(120))
-
- MCFG_FRAGMENT_ADD( chess_common )
-// MCFG_NVRAM_ADD_0FILL("nvram")
-
-MACHINE_CONFIG_END
-
static MACHINE_CONFIG_START( gen32, polgar_state )
MCFG_CPU_ADD("maincpu", M68030, XTAL_33_333MHz)
MCFG_CPU_PROGRAM_MAP(gen32_mem)
@@ -1799,11 +1759,6 @@ ROM_START( van32 )
ROM_END
-ROM_START( risc )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD("s2500.bin", 0x000000, 0x20000, CRC(7a707e82) SHA1(87187fa58117a442f3abd30092cfcc2a4d7c7efc))
-ROM_END
-
ROM_START( gen32 )
ROM_REGION32_BE( 0x40000, "maincpu", 0 )
ROM_LOAD("gen32_4.bin", 0x00000, 0x40000,CRC(6CC4DA88) SHA1(EA72ACF9C67ED17C6AC8DE56A165784AA629C4A1))
@@ -1859,7 +1814,6 @@ DRIVER_INIT_MEMBER(polgar_state,polgar)
CONS( 1991, diablo68, 0, 0, diablo68, sfortea, driver_device, 0, "Novag", "Novag Diablo 68000 Chess Computer", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
CONS( 1991, van16, 0, 0, van16, van16, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Vancouver 68000", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
CONS( 1991, van32, van16, 0, van32, van32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Vancouver 68020", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
- CONS( 1992, risc, 0, 0, risc, van16, driver_device, 0, "Saitek", "RISC2500", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
CONS( 1993, gen32, van16, 0, gen32, gen32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Genius030 V4.00", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
CONS( 1993, gen32_41, van16, 0, gen32, gen32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Genius030 V4.01", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
CONS( 1994, berlinp, van16, 0, bpl32, bpl32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Berlin Pro 68020", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/risc2500.cpp b/src/mame/drivers/risc2500.cpp
new file mode 100644
index 00000000000..a148a9b93ab
--- /dev/null
+++ b/src/mame/drivers/risc2500.cpp
@@ -0,0 +1,315 @@
+// license:BSD-3-Clause
+// copyright-holders:Sandro Ronco
+/******************************************************************************
+
+ Saitek RISC 2500
+
+ TODO:
+ - sound
+
+******************************************************************************/
+
+
+#include "emu.h"
+#include "cpu/arm/arm.h"
+#include "machine/ram.h"
+#include "machine/nvram.h"
+
+#include "risc2500.lh"
+
+
+class risc2500_state : public driver_device
+{
+public:
+ risc2500_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_ram(*this, "ram"),
+ m_nvram(*this, "nvram"),
+ m_inputs(*this, "P%u", 0)
+ { }
+
+ DECLARE_READ32_MEMBER(p1000_r);
+ DECLARE_WRITE32_MEMBER(p1000_w);
+ DECLARE_READ32_MEMBER(disable_boot_rom);
+ TIMER_CALLBACK_MEMBER(disable_boot_rom);
+
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+ uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ DECLARE_INPUT_CHANGED_MEMBER(on_button);
+ void install_boot_rom();
+
+private:
+ required_device<cpu_device> m_maincpu;
+ required_device<ram_device> m_ram;
+ required_device<nvram_device> m_nvram;
+ required_ioport_array<8> m_inputs;
+
+ uint32_t m_p1000;
+ uint16_t m_vram_addr;
+ uint8_t m_vram[0x100];
+};
+
+
+void risc2500_state::install_boot_rom()
+{
+ m_maincpu->space(AS_PROGRAM).install_rom(0x00000000, 0x001ffff, memregion("maincpu")->base());
+}
+
+uint32_t risc2500_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ for(int c=0; c<12; c++)
+ {
+ // 12 characters 5 x 7
+ for(int x=0; x<5; x++)
+ {
+ uint8_t gfx = BITSWAP8(m_vram[c*5 + x], 6,5,0,1,2,3,4,7);
+
+ for(int y=0; y<7; y++)
+ bitmap.pix16(y, 71 - (c*6 + x)) = (gfx >> (y + 1)) & 1;
+ }
+
+ // LCD digits and symbols
+ int data_addr = 0x40 + c * 5;
+ uint16_t data = ((m_vram[data_addr + 1] & 0x3) << 5) | ((m_vram[data_addr + 2] & 0x7) << 2) | (m_vram[data_addr + 4] & 0x3);
+ data = BITSWAP8(data, 7,3,0,1,4,6,5,2) | ((m_vram[data_addr - 1] & 0x04) ? 0x80 : 0);
+
+ output().set_digit_value(c, data);
+ output().set_indexed_value("sym", c, BIT(m_vram[data_addr + 1], 2));
+ }
+
+ output().set_indexed_value("sym", 12, BIT(m_vram[0x63], 0));
+ output().set_indexed_value("sym", 13, BIT(m_vram[0x4a], 0));
+
+ return 0;
+}
+
+INPUT_CHANGED_MEMBER(risc2500_state::on_button)
+{
+ if (newval)
+ {
+ install_boot_rom();
+ m_maincpu->reset();
+ }
+}
+
+static INPUT_PORTS_START( risc2500 )
+ PORT_START("P0")
+ PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // H1
+ PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // G1
+ PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // F1
+ PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // E1
+ PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // D1
+ PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // C1
+ PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // B1
+ PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // A1
+ PORT_BIT(0x40000000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Pawn")
+ PORT_BIT(0x80000000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("BACK")
+
+ PORT_START("P1")
+ PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // H2
+ PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // G2
+ PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // F2
+ PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // E2
+ PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // D2
+ PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // C2
+ PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // B2
+ PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // A2
+ PORT_BIT(0x40000000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Knight")
+ PORT_BIT(0x80000000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER) PORT_NAME("ENTER")
+
+ PORT_START("P2")
+ PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // H3
+ PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // G3
+ PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // F3
+ PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // E3
+ PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // D3
+ PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // C3
+ PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // B3
+ PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // A3
+ PORT_BIT(0x40000000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Bishop")
+ PORT_BIT(0x80000000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DOWN) PORT_NAME("DOWN")
+
+ PORT_START("P3")
+ PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // H4
+ PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // G4
+ PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // F4
+ PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // E4
+ PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // D4
+ PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // C4
+ PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // B4
+ PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // A4
+ PORT_BIT(0x40000000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Rook")
+ PORT_BIT(0x80000000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_UP) PORT_NAME("UP")
+
+ PORT_START("P4")
+ PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // H5
+ PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // G5
+ PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // F5
+ PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // E5
+ PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // D5
+ PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // C5
+ PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // B5
+ PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // A5
+ PORT_BIT(0x40000000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Queen")
+ PORT_BIT(0x80000000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("MENU")
+
+ PORT_START("P5")
+ PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // H6
+ PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // G6
+ PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // F6
+ PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // E6
+ PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // D6
+ PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // C6
+ PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // B6
+ PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // A6
+ PORT_BIT(0x40000000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("King")
+ PORT_BIT(0x80000000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("PLAY")
+
+ PORT_START("P6")
+ PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // H7
+ PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // G7
+ PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // F7
+ PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // E7
+ PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // D7
+ PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // C7
+ PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // B7
+ PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // A7
+ PORT_BIT(0x40000000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_RIGHT) PORT_NAME("RIGHT")
+ PORT_BIT(0x80000000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_NAME("NEW GAME")
+
+ PORT_START("P7")
+ PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // H8
+ PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // G8
+ PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // F8
+ PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // E8
+ PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // D8
+ PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // C8
+ PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // B8
+ PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_IMPULSE(10) // A8
+ PORT_BIT(0x40000000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_LEFT) PORT_NAME("LEFT")
+ PORT_BIT(0x80000000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_NAME("OFF")
+
+ PORT_START("RESET")
+ PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("ON") PORT_CHANGED_MEMBER(DEVICE_SELF, risc2500_state, on_button, 0)
+INPUT_PORTS_END
+
+
+READ32_MEMBER(risc2500_state::p1000_r)
+{
+ uint32_t data = 0;
+
+ for(int i=0; i<8; i++)
+ {
+ if (m_p1000 & (1 << i))
+ data |= m_inputs[i]->read();
+ }
+
+ return data;
+}
+
+WRITE32_MEMBER(risc2500_state::p1000_w)
+{
+ if ((data & 0xff000000) == 0x01000000) // VRAM address
+ {
+ if (data & 0x80)
+ m_vram_addr = (m_vram_addr & ~0x40) | (data & 0x01 ? 0x40 : 0);
+ else
+ m_vram_addr = (m_vram_addr & 0x40) | (data & 0xff);
+ }
+ else if (data & 0x04000000) // VRAM write
+ {
+ if (!(data & 0x08000000))
+ m_vram[m_vram_addr++ & 0x7f] = data & 0xff;
+ }
+ else if (data & 0x80000000) // Vertical LED
+ {
+ for(int i=0; i<8; i++)
+ output().set_led_value(i, BIT(data, i));
+ }
+ else if (data & 0x40000000) // Horizontal LED
+ {
+ for(int i=0; i<8; i++)
+ output().set_led_value(8 + i, BIT(data, i));
+ }
+ else if ((data & 0xff000000) == 0x08000000) // Power OFF
+ {
+ memset(m_vram, 0, sizeof(m_vram));
+ }
+
+ m_p1000 = data;
+}
+
+READ32_MEMBER(risc2500_state::disable_boot_rom)
+{
+ machine().scheduler().timer_set(m_maincpu->cycles_to_attotime(10), timer_expired_delegate(FUNC(risc2500_state::disable_boot_rom), this));
+ return 0;
+}
+
+TIMER_CALLBACK_MEMBER(risc2500_state::disable_boot_rom)
+{
+ m_maincpu->space(AS_PROGRAM).install_ram(0x00000000, m_ram->size() - 1, m_ram->pointer());
+}
+
+void risc2500_state::machine_start()
+{
+ m_nvram->set_base(m_ram->pointer(), m_ram->size());
+
+ save_item(NAME(m_p1000));
+ save_item(NAME(m_vram_addr));
+ save_item(NAME(m_vram));
+}
+
+void risc2500_state::machine_reset()
+{
+ m_p1000 = 0;
+ m_vram_addr = 0;
+
+ install_boot_rom();
+}
+
+static ADDRESS_MAP_START(risc2500_mem, AS_PROGRAM, 32, risc2500_state )
+ AM_RANGE( 0x00000000, 0x0001ffff ) AM_RAM
+ AM_RANGE( 0x01800000, 0x01800003 ) AM_READ(disable_boot_rom)
+ AM_RANGE( 0x01000000, 0x01000003 ) AM_READWRITE(p1000_r, p1000_w)
+ AM_RANGE( 0x02000000, 0x0201ffff ) AM_ROM AM_REGION("maincpu", 0)
+ADDRESS_MAP_END
+
+
+static MACHINE_CONFIG_START( risc2500, risc2500_state )
+ MCFG_CPU_ADD("maincpu", ARM, 14000000) // VY86C010
+ MCFG_CPU_PROGRAM_MAP(risc2500_mem)
+ MCFG_ARM_COPRO(ARM_COPRO_TYPE_VL86C020)
+ MCFG_CPU_PERIODIC_INT_DRIVER(risc2500_state, irq1_line_hold, 250)
+
+ MCFG_SCREEN_ADD("screen", LCD)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(12*6+1, 7)
+ MCFG_SCREEN_VISIBLE_AREA(0, 12*6, 0, 7-1)
+ MCFG_SCREEN_UPDATE_DRIVER(risc2500_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEFAULT_LAYOUT(layout_risc2500)
+
+ MCFG_PALETTE_ADD_MONOCHROME("palette")
+
+ MCFG_RAM_ADD("ram")
+ MCFG_RAM_DEFAULT_SIZE("2M")
+ MCFG_RAM_EXTRA_OPTIONS("128K, 256K, 512K, 1M, 2M")
+
+ MCFG_NVRAM_ADD_NO_FILL("nvram")
+MACHINE_CONFIG_END
+
+
+/* ROM definitions */
+
+ROM_START( risc )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD("s2500.bin", 0x000000, 0x20000, CRC(7a707e82) SHA1(87187fa58117a442f3abd30092cfcc2a4d7c7efc))
+ROM_END
+
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
+CONS( 1992, risc, 0, 0, risc2500, risc2500, driver_device, 0, "Saitek", "RISC 2500", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/layout/risc2500.lay b/src/mame/layout/risc2500.lay
new file mode 100644
index 00000000000..b571da46d1b
--- /dev/null
+++ b/src/mame/layout/risc2500.lay
@@ -0,0 +1,534 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+<!-- define elements -->
+ <script>
+ local layout = {}
+ local board
+ local first_sq
+ local enpassant -- en passant possible on next move
+ local enpassant_pos -- position of the piece to be removed
+
+ local port_tags = { ":P7", ":P6", ":P5", ":P4", ":P3", ":P2", ":P1", ":P0" }
+ local port_values = { }
+ local ports
+
+ local function change_piece_state(pos, new_state)
+ board[pos.y][pos.x] = new_state
+ machine:outputs():set_indexed_value("pos", (pos.y * 10) + pos.x, new_state)
+ end
+
+ local function move_piece(from, to)
+ if board[from.y][from.x] == 0 then
+ return 0
+ end
+
+ -- ignores move on the same position
+ if from.y == to.y and from.x == to.x then
+ change_piece_state(to, board[to.y][to.x])
+ return 1
+ end
+
+ -- en passant
+ if enpassant and board[to.y][to.x] == 0 and board[from.y][from.x] == 12 and from.y == 4 and to.y == 3 and from.x ~= to.x and board[to.y + 1][to.x] == 6 then
+ enpassant_pos = {x = to.x, y = to.y + 1}
+ elseif enpassant and board[to.y][to.x] == 0 and board[from.y][from.x] == 6 and from.y == 5 and to.y == 6 and from.x ~= to.x and board[to.y - 1][to.x] == 12 then
+ enpassant_pos = {x = to.x, y = to.y - 1}
+ end
+ if board[to.y][to.x] == 0 and from.x == to.x and ((board[from.y][from.x] == 6 and from.y == 2 and to.y == 4) or
+ (board[from.y][from.x] == 12 and from.y == 7 and to.y == 5)) then
+ enpassant = true
+ else
+ enpassant = false
+ end
+
+ -- promotion
+ if (to.y == 8 and board[from.y][from.x] == 6) or (to.y == 1 and board[from.y][from.x] == 12) then
+ change_piece_state(to, board[from.y][from.x] - 4) -- TODO: make this configurable
+ else
+ change_piece_state(to, board[from.y][from.x])
+ end
+
+ change_piece_state(from, 0)
+ return 1
+ end
+
+ function layout.reset()
+ board =
+ {{ 3, 5, 4, 2, 1, 4, 5, 3 },
+ { 6, 6, 6, 6, 6, 6, 6, 6 },
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 12,12,12,12,12,12,12,12 },
+ { 9,11,10, 8, 7,10,11, 9 }}
+
+ for y, row in ipairs(board) do
+ for x, cell in ipairs(row) do
+ change_piece_state({x = x, y = y}, board[y][x])
+ end
+ end
+ ports = machine:ioport().ports
+ first_sq = nil
+ enpassant = false
+ enpassant_pos = nil
+ end
+
+ function layout.frame()
+ local value = ports[":RESET"]:read()
+ if value &amp; 0x01 == 0x01 then
+ layout.reset()
+ return
+ end
+
+ for y, tag in ipairs(port_tags) do
+ local port = ports[tag]
+ if not port then
+ return
+ end
+ local newvalue = port:read()
+ if port_values[y] ~= newvalue then
+ port_values[y] = newvalue
+ for x = 8, 1, -1 do
+ if newvalue &amp; 1 == 1 then
+ if enpassant_pos and enpassant_pos.x == x and enpassant_pos.y == y then
+ change_piece_state(enpassant_pos, 0)
+ enpassant = false
+ enpassant_pos = nil
+ return
+ end
+
+ if not first_sq then
+ if board[y][x] ~= 0 then
+ first_sq = {x = x, y = y}
+ machine:outputs():set_indexed_value("pos", (y * 10) + x, board[y][x] | 0x10)
+ end
+ else
+ if move_piece(first_sq, {x = x, y = y}) == 1 then
+ first_sq = nil
+ end
+ end
+ return
+ end
+ newvalue = newvalue >> 1
+ end
+ end
+ end
+ end
+
+ return layout, "risc2500"
+ </script>
+
+ <element name="digit" defstate="0">
+ <led7seg>
+ <color red="1.0" green="1.0" blue="1.0" />
+ </led7seg>
+ </element>
+ <element name="led" defstate="1">
+ <rect state="0">
+ <color red="0.95" green="0.0" blue="0.0" />
+ </rect>
+ <rect state="1">
+ <color red="0.20" green="0.0" blue="0.0" />
+ </rect>
+ </element>
+ <element name="button" defstate="0">
+ <rect state="0">
+ <bounds x="0.0" y="0.0" width="1.0" height="1.0" />
+ <color red="0.0" green="0.0" blue="0.0" />
+ </rect>
+ <rect state="1">
+ <bounds x="0.0" y="0.0" width="1.0" height="1.0" />
+ <color red="0.4" green="0.4" blue="0.4" />
+ </rect>
+ </element>
+
+ <element name="hl" defstate="0">
+ <text string=" ">
+ <bounds x="0.0" y="0.0" width="1.0" height="1.0" />
+ <color red="1.0" green="1.0" blue="1.0" />
+ </text>
+ <rect state="1">
+ <bounds x="0.12" y="0.12" width="0.76" height="0.76" />
+ <color red="1.0" green="1.0" blue="1.0" />
+ </rect>
+ </element>
+
+ <element name="text_1"> <text string="1"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_2"> <text string="2"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_3"> <text string="3"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_4"> <text string="4"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_5"> <text string="5"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_6"> <text string="6"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_7"> <text string="7"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_8"> <text string="8"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_a"> <text string="A"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_b"> <text string="B"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_c"> <text string="C"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_d"> <text string="D"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_e"> <text string="E"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_f"> <text string="F"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_g"> <text string="G"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_h"> <text string="H"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_on"> <text string="ON" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_off"> <text string="OFF" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_newgame"> <text string="NEW GAME" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_play"> <text string="PLAY" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_back"> <text string="BACK" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_left"> <text string="&#x2190;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_right"> <text string="&#x2192;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_menu"> <text string="MENU" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_up"> <text string="&#x2191;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_down"> <text string="&#x2193;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_enter"> <text string="ENTER" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_p1"> <text string="&#x265a;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_p2"> <text string="&#x265b;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_p3"> <text string="&#x265c;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_p4"> <text string="&#x265d;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_p5"> <text string="&#x265e;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_p6"> <text string="&#x265f;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="sym_colon"> <text string=":" state="1"> <color red="1.0" green="1.0" blue="1.0" /></text> </element>
+ <element name="sym_left"> <text string="&#x2190;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="sym_right"> <text string="&#x2192;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="sym_p1"> <text string="&#x265a;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="sym_p2"> <text string="&#x265b;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="sym_p3"> <text string="&#x265c;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="sym_p4"> <text string="&#x265d;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="sym_p5"> <text string="&#x265e;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="sym_p6"> <text string="&#x265f;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="sym_black"> <text string="&#x25cf;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="sym_white"> <text string="&#x25cb;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="white"><rect><color red="1" green="1" blue="1" /></rect></element>
+ <element name="black"><rect><color red="0" green="0" blue="0" /></rect></element>
+ <element name="background"><rect><color red="0.63" green="0.63" blue="0.63" /></rect></element>
+
+ <element name="piece" defstate="0">
+ <text string="&#x265a;" state="1"><color red="0.27" green="0.25" blue="0.25" /></text>
+ <text string="&#x265b;" state="2"><color red="0.27" green="0.25" blue="0.25" /></text>
+ <text string="&#x265c;" state="3"><color red="0.27" green="0.25" blue="0.25" /></text>
+ <text string="&#x265d;" state="4"><color red="0.27" green="0.25" blue="0.25" /></text>
+ <text string="&#x265e;" state="5"><color red="0.27" green="0.25" blue="0.25" /></text>
+ <text string="&#x265f;" state="6"><color red="0.27" green="0.25" blue="0.25" /></text>
+
+ <text string="&#x265a;" state="7"><color red="0.71" green="0.7" blue="0.69" /></text>
+ <text string="&#x265b;" state="8"><color red="0.71" green="0.7" blue="0.69" /></text>
+ <text string="&#x265c;" state="9"><color red="0.71" green="0.7" blue="0.69" /></text>
+ <text string="&#x265d;" state="10"><color red="0.71" green="0.7" blue="0.69" /></text>
+ <text string="&#x265e;" state="11"><color red="0.71" green="0.7" blue="0.69" /></text>
+ <text string="&#x265f;" state="12"><color red="0.71" green="0.7" blue="0.69" /></text>
+
+ <!-- selected pieces -->
+ <disk state="17"> <color red="1.00" green="0.25" blue="1.00" /> </disk>
+ <disk state="18"> <color red="1.00" green="0.25" blue="1.00" /> </disk>
+ <disk state="19"> <color red="1.00" green="0.25" blue="1.00" /> </disk>
+ <disk state="20"> <color red="1.00" green="0.25" blue="1.00" /> </disk>
+ <disk state="21"> <color red="1.00" green="0.25" blue="1.00" /> </disk>
+ <disk state="22"> <color red="1.00" green="0.25" blue="1.00" /> </disk>
+ <disk state="23"> <color red="1.00" green="0.25" blue="1.00" /> </disk>
+ <disk state="24"> <color red="1.00" green="0.25" blue="1.00" /> </disk>
+ <disk state="25"> <color red="1.00" green="0.25" blue="1.00" /> </disk>
+ <disk state="26"> <color red="1.00" green="0.25" blue="1.00" /> </disk>
+ <disk state="27"> <color red="1.00" green="0.25" blue="1.00" /> </disk>
+ <disk state="28"> <color red="1.00" green="0.25" blue="1.00" /> </disk>
+
+ <text string="&#x265a;" state="17"><color red="0.27" green="0.25" blue="0.25" /></text>
+ <text string="&#x265b;" state="18"><color red="0.27" green="0.25" blue="0.25" /></text>
+ <text string="&#x265c;" state="19"><color red="0.27" green="0.25" blue="0.25" /></text>
+ <text string="&#x265d;" state="20"><color red="0.27" green="0.25" blue="0.25" /></text>
+ <text string="&#x265e;" state="21"><color red="0.27" green="0.25" blue="0.25" /></text>
+ <text string="&#x265f;" state="22"><color red="0.27" green="0.25" blue="0.25" /></text>
+
+ <text string="&#x265a;" state="23"><color red="0.71" green="0.7" blue="0.69" /></text>
+ <text string="&#x265b;" state="24"><color red="0.71" green="0.7" blue="0.69" /></text>
+ <text string="&#x265c;" state="25"><color red="0.71" green="0.7" blue="0.69" /></text>
+ <text string="&#x265d;" state="26"><color red="0.71" green="0.7" blue="0.69" /></text>
+ <text string="&#x265e;" state="27"><color red="0.71" green="0.7" blue="0.69" /></text>
+ <text string="&#x265f;" state="28"><color red="0.71" green="0.7" blue="0.69" /></text>
+ </element>
+
+<!-- build screen -->
+ <view name="Internal Layout">
+
+ <bezel element="background"><bounds x="0" y="0" width="95" height="90" /></bezel>
+ <bezel element="background"><bounds x="95" y="16" width="60" height="74" /></bezel>
+ <bezel element="background"><bounds x="95" y="0" width="60" height="4" /></bezel>
+ <bezel element="background"><bounds x="125" y="0" width="30" height="20" /></bezel>
+
+ <bezel element="white"><bounds x="8" y="3" width="80" height="80" /></bezel>
+ <bezel element="black"><bounds x="8" y="13" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="8" y="33" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="8" y="53" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="8" y="73" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="18" y="3" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="18" y="23" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="18" y="43" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="18" y="63" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="28" y="13" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="28" y="33" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="28" y="53" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="28" y="73" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="38" y="3" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="38" y="23" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="38" y="43" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="38" y="63" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="48" y="13" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="48" y="33" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="48" y="53" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="48" y="73" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="58" y="3" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="58" y="23" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="58" y="43" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="58" y="63" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="68" y="13" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="68" y="33" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="68" y="53" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="68" y="73" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="78" y="3" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="78" y="23" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="78" y="43" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="78" y="63" width="10" height="10" /></bezel>
+
+ <bezel element="text_8" ><bounds x="5" y="7" width="2" height="2" /></bezel>
+ <bezel element="text_7" ><bounds x="5" y="17" width="2" height="2" /></bezel>
+ <bezel element="text_6" ><bounds x="5" y="27" width="2" height="2" /></bezel>
+ <bezel element="text_5" ><bounds x="5" y="37" width="2" height="2" /></bezel>
+ <bezel element="text_4" ><bounds x="5" y="47" width="2" height="2" /></bezel>
+ <bezel element="text_3" ><bounds x="5" y="57" width="2" height="2" /></bezel>
+ <bezel element="text_2" ><bounds x="5" y="67" width="2" height="2" /></bezel>
+ <bezel element="text_1" ><bounds x="5" y="77" width="2" height="2" /></bezel>
+ <bezel element="text_a" ><bounds x="12" y="84" width="2" height="2" /></bezel>
+ <bezel element="text_b" ><bounds x="22" y="84" width="2" height="2" /></bezel>
+ <bezel element="text_c" ><bounds x="32" y="84" width="2" height="2" /></bezel>
+ <bezel element="text_d" ><bounds x="42" y="84" width="2" height="2" /></bezel>
+ <bezel element="text_e" ><bounds x="52" y="84" width="2" height="2" /></bezel>
+ <bezel element="text_f" ><bounds x="62" y="84" width="2" height="2" /></bezel>
+ <bezel element="text_g" ><bounds x="72" y="84" width="2" height="2" /></bezel>
+ <bezel element="text_h" ><bounds x="82" y="84" width="2" height="2" /></bezel>
+
+ <bezel name="led0" element="led"><bounds x="2" y="77.5" width="2" height="1" /></bezel>
+ <bezel name="led1" element="led"><bounds x="2" y="67.5" width="2" height="1" /></bezel>
+ <bezel name="led2" element="led"><bounds x="2" y="57.5" width="2" height="1" /></bezel>
+ <bezel name="led3" element="led"><bounds x="2" y="47.5" width="2" height="1" /></bezel>
+ <bezel name="led4" element="led"><bounds x="2" y="37.5" width="2" height="1" /></bezel>
+ <bezel name="led5" element="led"><bounds x="2" y="27.5" width="2" height="1" /></bezel>
+ <bezel name="led6" element="led"><bounds x="2" y="17.5" width="2" height="1" /></bezel>
+ <bezel name="led7" element="led"><bounds x="2" y="7.5" width="2" height="1" /></bezel>
+ <bezel name="led8" element="led"><bounds x="12.5" y="87" width="1" height="2" /></bezel>
+ <bezel name="led9" element="led"><bounds x="22.5" y="87" width="1" height="2" /></bezel>
+ <bezel name="led10" element="led"><bounds x="32.5" y="87" width="1" height="2" /></bezel>
+ <bezel name="led11" element="led"><bounds x="42.5" y="87" width="1" height="2" /></bezel>
+ <bezel name="led12" element="led"><bounds x="52.5" y="87" width="1" height="2" /></bezel>
+ <bezel name="led13" element="led"><bounds x="62.5" y="87" width="1" height="2" /></bezel>
+ <bezel name="led14" element="led"><bounds x="72.5" y="87" width="1" height="2" /></bezel>
+ <bezel name="led15" element="led"><bounds x="82.5" y="87" width="1" height="2" /></bezel>
+
+ <bezel element="hl" inputtag="P0" inputmask="0x01"><bounds x="78" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P0" inputmask="0x02"><bounds x="68" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P0" inputmask="0x04"><bounds x="58" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P0" inputmask="0x08"><bounds x="48" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P0" inputmask="0x10"><bounds x="38" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P0" inputmask="0x20"><bounds x="28" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P0" inputmask="0x40"><bounds x="18" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P0" inputmask="0x80"><bounds x="8" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="P1" inputmask="0x01"><bounds x="78" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P1" inputmask="0x02"><bounds x="68" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P1" inputmask="0x04"><bounds x="58" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P1" inputmask="0x08"><bounds x="48" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P1" inputmask="0x10"><bounds x="38" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P1" inputmask="0x20"><bounds x="28" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P1" inputmask="0x40"><bounds x="18" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P1" inputmask="0x80"><bounds x="8" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="P2" inputmask="0x01"><bounds x="78" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P2" inputmask="0x02"><bounds x="68" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P2" inputmask="0x04"><bounds x="58" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P2" inputmask="0x08"><bounds x="48" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P2" inputmask="0x10"><bounds x="38" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P2" inputmask="0x20"><bounds x="28" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P2" inputmask="0x40"><bounds x="18" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P2" inputmask="0x80"><bounds x="8" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="P3" inputmask="0x01"><bounds x="78" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P3" inputmask="0x02"><bounds x="68" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P3" inputmask="0x04"><bounds x="58" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P3" inputmask="0x08"><bounds x="48" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P3" inputmask="0x10"><bounds x="38" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P3" inputmask="0x20"><bounds x="28" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P3" inputmask="0x40"><bounds x="18" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P3" inputmask="0x80"><bounds x="8" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="P4" inputmask="0x01"><bounds x="78" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P4" inputmask="0x02"><bounds x="68" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P4" inputmask="0x04"><bounds x="58" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P4" inputmask="0x08"><bounds x="48" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P4" inputmask="0x10"><bounds x="38" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P4" inputmask="0x20"><bounds x="28" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P4" inputmask="0x40"><bounds x="18" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P4" inputmask="0x80"><bounds x="8" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="P5" inputmask="0x01"><bounds x="78" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P5" inputmask="0x02"><bounds x="68" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P5" inputmask="0x04"><bounds x="58" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P5" inputmask="0x08"><bounds x="48" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P5" inputmask="0x10"><bounds x="38" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P5" inputmask="0x20"><bounds x="28" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P5" inputmask="0x40"><bounds x="18" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P5" inputmask="0x80"><bounds x="8" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="P6" inputmask="0x01"><bounds x="78" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P6" inputmask="0x02"><bounds x="68" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P6" inputmask="0x04"><bounds x="58" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P6" inputmask="0x08"><bounds x="48" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P6" inputmask="0x10"><bounds x="38" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P6" inputmask="0x20"><bounds x="28" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P6" inputmask="0x40"><bounds x="18" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P6" inputmask="0x80"><bounds x="8" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="P7" inputmask="0x01"><bounds x="78" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P7" inputmask="0x02"><bounds x="68" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P7" inputmask="0x04"><bounds x="58" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P7" inputmask="0x08"><bounds x="48" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P7" inputmask="0x10"><bounds x="38" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P7" inputmask="0x20"><bounds x="28" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="P7" inputmask="0x40"><bounds x="18" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="P7" inputmask="0x80"><bounds x="8" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel name="pos81" element="piece" ><bounds x="8" y="73" width="10" height="10" /></bezel>
+ <bezel name="pos82" element="piece" ><bounds x="18" y="73" width="10" height="10" /></bezel>
+ <bezel name="pos83" element="piece" ><bounds x="28" y="73" width="10" height="10" /></bezel>
+ <bezel name="pos84" element="piece" ><bounds x="38" y="73" width="10" height="10" /></bezel>
+ <bezel name="pos85" element="piece" ><bounds x="48" y="73" width="10" height="10" /></bezel>
+ <bezel name="pos86" element="piece" ><bounds x="58" y="73" width="10" height="10" /></bezel>
+ <bezel name="pos87" element="piece" ><bounds x="68" y="73" width="10" height="10" /></bezel>
+ <bezel name="pos88" element="piece" ><bounds x="78" y="73" width="10" height="10" /></bezel>
+ <bezel name="pos71" element="piece" ><bounds x="8" y="63" width="10" height="10" /></bezel>
+ <bezel name="pos72" element="piece" ><bounds x="18" y="63" width="10" height="10" /></bezel>
+ <bezel name="pos73" element="piece" ><bounds x="28" y="63" width="10" height="10" /></bezel>
+ <bezel name="pos74" element="piece" ><bounds x="38" y="63" width="10" height="10" /></bezel>
+ <bezel name="pos75" element="piece" ><bounds x="48" y="63" width="10" height="10" /></bezel>
+ <bezel name="pos76" element="piece" ><bounds x="58" y="63" width="10" height="10" /></bezel>
+ <bezel name="pos77" element="piece" ><bounds x="68" y="63" width="10" height="10" /></bezel>
+ <bezel name="pos78" element="piece" ><bounds x="78" y="63" width="10" height="10" /></bezel>
+ <bezel name="pos61" element="piece" ><bounds x="8" y="53" width="10" height="10" /></bezel>
+ <bezel name="pos62" element="piece" ><bounds x="18" y="53" width="10" height="10" /></bezel>
+ <bezel name="pos63" element="piece" ><bounds x="28" y="53" width="10" height="10" /></bezel>
+ <bezel name="pos64" element="piece" ><bounds x="38" y="53" width="10" height="10" /></bezel>
+ <bezel name="pos65" element="piece" ><bounds x="48" y="53" width="10" height="10" /></bezel>
+ <bezel name="pos66" element="piece" ><bounds x="58" y="53" width="10" height="10" /></bezel>
+ <bezel name="pos67" element="piece" ><bounds x="68" y="53" width="10" height="10" /></bezel>
+ <bezel name="pos68" element="piece" ><bounds x="78" y="53" width="10" height="10" /></bezel>
+ <bezel name="pos51" element="piece" ><bounds x="8" y="43" width="10" height="10" /></bezel>
+ <bezel name="pos52" element="piece" ><bounds x="18" y="43" width="10" height="10" /></bezel>
+ <bezel name="pos53" element="piece" ><bounds x="28" y="43" width="10" height="10" /></bezel>
+ <bezel name="pos54" element="piece" ><bounds x="38" y="43" width="10" height="10" /></bezel>
+ <bezel name="pos55" element="piece" ><bounds x="48" y="43" width="10" height="10" /></bezel>
+ <bezel name="pos56" element="piece" ><bounds x="58" y="43" width="10" height="10" /></bezel>
+ <bezel name="pos57" element="piece" ><bounds x="68" y="43" width="10" height="10" /></bezel>
+ <bezel name="pos58" element="piece" ><bounds x="78" y="43" width="10" height="10" /></bezel>
+ <bezel name="pos41" element="piece" ><bounds x="8" y="33" width="10" height="10" /></bezel>
+ <bezel name="pos42" element="piece" ><bounds x="18" y="33" width="10" height="10" /></bezel>
+ <bezel name="pos43" element="piece" ><bounds x="28" y="33" width="10" height="10" /></bezel>
+ <bezel name="pos44" element="piece" ><bounds x="38" y="33" width="10" height="10" /></bezel>
+ <bezel name="pos45" element="piece" ><bounds x="48" y="33" width="10" height="10" /></bezel>
+ <bezel name="pos46" element="piece" ><bounds x="58" y="33" width="10" height="10" /></bezel>
+ <bezel name="pos47" element="piece" ><bounds x="68" y="33" width="10" height="10" /></bezel>
+ <bezel name="pos48" element="piece" ><bounds x="78" y="33" width="10" height="10" /></bezel>
+ <bezel name="pos31" element="piece" ><bounds x="8" y="23" width="10" height="10" /></bezel>
+ <bezel name="pos32" element="piece" ><bounds x="18" y="23" width="10" height="10" /></bezel>
+ <bezel name="pos33" element="piece" ><bounds x="28" y="23" width="10" height="10" /></bezel>
+ <bezel name="pos34" element="piece" ><bounds x="38" y="23" width="10" height="10" /></bezel>
+ <bezel name="pos35" element="piece" ><bounds x="48" y="23" width="10" height="10" /></bezel>
+ <bezel name="pos36" element="piece" ><bounds x="58" y="23" width="10" height="10" /></bezel>
+ <bezel name="pos37" element="piece" ><bounds x="68" y="23" width="10" height="10" /></bezel>
+ <bezel name="pos38" element="piece" ><bounds x="78" y="23" width="10" height="10" /></bezel>
+ <bezel name="pos21" element="piece" ><bounds x="8" y="13" width="10" height="10" /></bezel>
+ <bezel name="pos22" element="piece" ><bounds x="18" y="13" width="10" height="10" /></bezel>
+ <bezel name="pos23" element="piece" ><bounds x="28" y="13" width="10" height="10" /></bezel>
+ <bezel name="pos24" element="piece" ><bounds x="38" y="13" width="10" height="10" /></bezel>
+ <bezel name="pos25" element="piece" ><bounds x="48" y="13" width="10" height="10" /></bezel>
+ <bezel name="pos26" element="piece" ><bounds x="58" y="13" width="10" height="10" /></bezel>
+ <bezel name="pos27" element="piece" ><bounds x="68" y="13" width="10" height="10" /></bezel>
+ <bezel name="pos28" element="piece" ><bounds x="78" y="13" width="10" height="10" /></bezel>
+ <bezel name="pos11" element="piece" ><bounds x="8" y="3" width="10" height="10" /></bezel>
+ <bezel name="pos12" element="piece" ><bounds x="18" y="3" width="10" height="10" /></bezel>
+ <bezel name="pos13" element="piece" ><bounds x="28" y="3" width="10" height="10" /></bezel>
+ <bezel name="pos14" element="piece" ><bounds x="38" y="3" width="10" height="10" /></bezel>
+ <bezel name="pos15" element="piece" ><bounds x="48" y="3" width="10" height="10" /></bezel>
+ <bezel name="pos16" element="piece" ><bounds x="58" y="3" width="10" height="10" /></bezel>
+ <bezel name="pos17" element="piece" ><bounds x="68" y="3" width="10" height="10" /></bezel>
+ <bezel name="pos18" element="piece" ><bounds x="78" y="3" width="10" height="10" /></bezel>
+
+
+ <!-- LCD panel -->
+ <screen index="0"><bounds x="95" y="4.5" width="30" height="4" /></screen>
+
+ <bezel name="digit11" element="digit" ><bounds x="95.9" y="9" width="1.6" height="3" /></bezel>
+ <bezel name="digit10" element="digit" ><bounds x="98.35" y="9" width="1.6" height="3" /></bezel>
+ <bezel name="digit9" element="digit" ><bounds x="100.8" y="9" width="1.6" height="3" /></bezel>
+ <bezel name="digit8" element="digit" ><bounds x="103.25" y="9" width="1.6" height="3" /></bezel>
+ <bezel name="digit7" element="digit" ><bounds x="105.7" y="9" width="1.6" height="3" /></bezel>
+ <bezel name="digit6" element="digit" ><bounds x="108.15" y="9" width="1.6" height="3" /></bezel>
+ <bezel name="digit5" element="digit" ><bounds x="110.6" y="9" width="1.6" height="3" /></bezel>
+ <bezel name="digit4" element="digit" ><bounds x="113.05" y="9" width="1.6" height="3" /></bezel>
+ <bezel name="digit3" element="digit" ><bounds x="115.5" y="9" width="1.6" height="3" /></bezel>
+ <bezel name="digit2" element="digit" ><bounds x="117.95" y="9" width="1.6" height="3" /></bezel>
+ <bezel name="digit1" element="digit" ><bounds x="120.4" y="9" width="1.6" height="3" /></bezel>
+ <bezel name="digit0" element="digit" ><bounds x="122.85" y="9" width="1.6" height="3" /></bezel>
+ <bezel name="sym12" element="sym_colon" ><bounds x="107.0" y="9" width="1.5" height="3" /></bezel>
+ <bezel name="sym13" element="sym_colon" ><bounds x="119.2" y="9" width="1.5" height="3" /></bezel>
+
+ <bezel name="sym1" element="sym_right" > <bounds x="121.60" y="12.7" width="3" height="3" /></bezel>
+ <bezel name="sym2" element="sym_p6" > <bounds x="116.60" y="12.5" width="5" height="3" /></bezel>
+ <bezel name="sym3" element="sym_p5" > <bounds x="113.75" y="12.5" width="4" height="3" /></bezel>
+ <bezel name="sym4" element="sym_p4" > <bounds x="110.88" y="12.5" width="4" height="3" /></bezel>
+ <bezel name="sym6" element="sym_p3" > <bounds x="108.00" y="12.5" width="4" height="3" /></bezel>
+ <bezel name="sym7" element="sym_p2" > <bounds x="105.13" y="12.5" width="4" height="3" /></bezel>
+ <bezel name="sym8" element="sym_p1" > <bounds x="102.25" y="12.5" width="4" height="3" /></bezel>
+ <bezel name="sym9" element="sym_white" > <bounds x="99.00" y="12.5" width="4" height="3" /></bezel>
+ <bezel name="sym10" element="sym_black" > <bounds x="99.90" y="13.0" width="2.2" height="2.2" /></bezel>
+ <bezel name="sym11" element="sym_left" > <bounds x="95.40" y="12.7" width="3" height="3" /></bezel>
+
+
+ <!-- right side -->
+ <bezel element="text_on" ><bounds x="96" y="37" width="8" height="2" /></bezel>
+ <bezel element="text_off" ><bounds x="107" y="37" width="8" height="2" /></bezel>
+ <bezel element="text_newgame" ><bounds x="118" y="37" width="8" height="2" /></bezel>
+ <bezel element="text_play" ><bounds x="129" y="37" width="8" height="2" /></bezel>
+ <bezel element="text_back" ><bounds x="140" y="37" width="8" height="2" /></bezel>
+
+ <bezel element="text_left" ><bounds x="96" y="52" width="7" height="3" /></bezel>
+ <bezel element="text_right" ><bounds x="105" y="52" width="7" height="3" /></bezel>
+ <bezel element="text_menu" ><bounds x="114" y="52" width="7" height="2" /></bezel>
+ <bezel element="text_up" ><bounds x="123" y="51" width="7" height="3" /></bezel>
+ <bezel element="text_down" ><bounds x="132" y="51" width="7" height="3" /></bezel>
+ <bezel element="text_enter" ><bounds x="141" y="52" width="7" height="2" /></bezel>
+
+ <bezel element="text_p1" ><bounds x="96" y="65" width="7" height="5" /></bezel>
+ <bezel element="text_p2" ><bounds x="105" y="65" width="7" height="5" /></bezel>
+ <bezel element="text_p3" ><bounds x="114" y="65" width="7" height="5" /></bezel>
+ <bezel element="text_p4" ><bounds x="123" y="65" width="7" height="5" /></bezel>
+ <bezel element="text_p5" ><bounds x="132" y="65" width="7" height="5" /></bezel>
+ <bezel element="text_p6" ><bounds x="141" y="65" width="7" height="5" /></bezel>
+
+ <bezel element="button" inputtag="RESET" inputmask="0x00000001"><bounds x="96" y="40" width="8" height="2" /></bezel>
+ <bezel element="button" inputtag="P7" inputmask="0x80000000"><bounds x="107" y="40" width="8" height="2" /></bezel>
+ <bezel element="button" inputtag="P6" inputmask="0x80000000"><bounds x="118" y="40" width="8" height="2" /></bezel>
+ <bezel element="button" inputtag="P5" inputmask="0x80000000"><bounds x="129" y="40" width="8" height="2" /></bezel>
+ <bezel element="button" inputtag="P0" inputmask="0x80000000"><bounds x="140" y="40" width="8" height="2" /></bezel>
+
+ <bezel element="button" inputtag="P7" inputmask="0x40000000"><bounds x="96" y="55" width="7" height="2" /></bezel>
+ <bezel element="button" inputtag="P6" inputmask="0x40000000"><bounds x="105" y="55" width="7" height="2" /></bezel>
+ <bezel element="button" inputtag="P4" inputmask="0x80000000"><bounds x="114" y="55" width="7" height="2" /></bezel>
+ <bezel element="button" inputtag="P3" inputmask="0x80000000"><bounds x="123" y="55" width="7" height="2" /></bezel>
+ <bezel element="button" inputtag="P2" inputmask="0x80000000"><bounds x="132" y="55" width="7" height="2" /></bezel>
+ <bezel element="button" inputtag="P1" inputmask="0x80000000"><bounds x="141" y="55" width="7" height="2" /></bezel>
+
+ <bezel element="button" inputtag="P5" inputmask="0x40000000"><bounds x="96" y="70" width="7" height="2" /></bezel>
+ <bezel element="button" inputtag="P4" inputmask="0x40000000"><bounds x="105" y="70" width="7" height="2" /></bezel>
+ <bezel element="button" inputtag="P3" inputmask="0x40000000"><bounds x="114" y="70" width="7" height="2" /></bezel>
+ <bezel element="button" inputtag="P2" inputmask="0x40000000"><bounds x="123" y="70" width="7" height="2" /></bezel>
+ <bezel element="button" inputtag="P1" inputmask="0x40000000"><bounds x="132" y="70" width="7" height="2" /></bezel>
+ <bezel element="button" inputtag="P0" inputmask="0x40000000"><bounds x="141" y="70" width="7" height="2" /></bezel>
+ </view>
+</mamelayout>