summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2019-06-27 12:44:46 +1000
committer Vas Crabb <vas@vastheman.com>2019-06-27 12:44:46 +1000
commit90508cc3edfc85dbc21bfbc263fd5837914cdbda (patch)
tree7ac44d5354534f13168e6da775efbdd837024399
parent1b969a8acbc754384deb08b835af7d4964611f64 (diff)
Revert "Revert preliminary sensorboard emulation to give it more time to stabilise before appearing in a release. (nw)"
This reverts commit edb62679cda981c24afc3b718297f8e8ee6fb7d4. Reverting the revert to avoid a mess when merging to master.
-rw-r--r--scripts/src/machine.lua30
-rw-r--r--scripts/target/mame/arcade.lua3
-rw-r--r--scripts/target/mame/mess.lua8
-rw-r--r--src/devices/machine/sensorboard.cpp701
-rw-r--r--src/devices/machine/sensorboard.h129
-rw-r--r--src/devices/video/pwm.cpp11
-rw-r--r--src/mame/drivers/ave_arb.cpp81
-rw-r--r--src/mame/drivers/cking_master.cpp103
-rw-r--r--src/mame/drivers/cxg_ch2001.cpp101
-rw-r--r--src/mame/layout/ave_arb.lay533
-rw-r--r--src/mame/layout/ck_master.lay451
-rw-r--r--src/mame/layout/cxg_ch2001.lay561
-rw-r--r--src/mame/layout/risc2500.lay26
13 files changed, 1917 insertions, 821 deletions
diff --git a/scripts/src/machine.lua b/scripts/src/machine.lua
index c34c317fc0e..58f24b5647e 100644
--- a/scripts/src/machine.lua
+++ b/scripts/src/machine.lua
@@ -60,6 +60,8 @@ files {
MAME_DIR .. "src/devices/imagedev/snapquik.cpp",
MAME_DIR .. "src/devices/imagedev/snapquik.h",
}
+
+
---------------------------------------------------
--
--@src/devices/machine/akiko.h,MACHINES["AKIKO"] = true
@@ -2663,25 +2665,37 @@ end
---------------------------------------------------
--
---@src/devices/machine/serflash.h,MACHINES["SERFLASH"] = true
+--@src/devices/machine/sda2006.h,MACHINES["SDA2006"] = true
---------------------------------------------------
-if (MACHINES["SERFLASH"]~=null) then
+if (MACHINES["SDA2006"]~=null) then
files {
- MAME_DIR .. "src/devices/machine/serflash.cpp",
- MAME_DIR .. "src/devices/machine/serflash.h",
+ MAME_DIR .. "src/devices/machine/sda2006.cpp",
+ MAME_DIR .. "src/devices/machine/sda2006.h",
}
end
---------------------------------------------------
--
---@src/devices/machine/sda2006.h,MACHINES["SDA2006"] = true
+--@src/devices/machine/sensorboard.h,MACHINES["SENSORBOARD"] = true
---------------------------------------------------
-if (MACHINES["SDA2006"]~=null) then
+if (MACHINES["SENSORBOARD"]~=null) then
files {
- MAME_DIR .. "src/devices/machine/sda2006.cpp",
- MAME_DIR .. "src/devices/machine/sda2006.h",
+ MAME_DIR .. "src/devices/machine/sensorboard.cpp",
+ MAME_DIR .. "src/devices/machine/sensorboard.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/serflash.h,MACHINES["SERFLASH"] = true
+---------------------------------------------------
+
+if (MACHINES["SERFLASH"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/serflash.cpp",
+ MAME_DIR .. "src/devices/machine/serflash.h",
}
end
diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua
index 02f3b0da184..420336e7139 100644
--- a/scripts/target/mame/arcade.lua
+++ b/scripts/target/mame/arcade.lua
@@ -588,8 +588,9 @@ MACHINES["SATURN"] = true
MACHINES["SCC68070"] = true
MACHINES["SCSI"] = true
MACHINES["SCUDSP"] = true
---MACHINES["SECFLASH"] = true
MACHINES["SDA2006"] = true
+--MACHINES["SECFLASH"] = true
+--MACHINES["SENSORBOARD"] = true
MACHINES["SERFLASH"] = true
MACHINES["SMC91C9X"] = true
MACHINES["SEGA_SCU"] = true
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index 8efe7a53747..12d7d59afea 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -599,6 +599,7 @@ MACHINES["SCC2698B"] = true
MACHINES["SCUDSP"] = true
MACHINES["SECFLASH"] = true
MACHINES["SEIBU_COP"] = true
+MACHINES["SENSORBOARD"] = true
--MACHINES["SERFLASH"] = true
MACHINES["SMC91C9X"] = true
MACHINES["SMIOC"] = true
@@ -1051,6 +1052,7 @@ function linkProjects_mame_mess(_target, _subtarget)
"at",
"atari",
"att",
+ "ave",
"bally",
"bandai",
"banctec",
@@ -1713,6 +1715,11 @@ files {
MAME_DIR .. "src/mame/drivers/unixpc.cpp",
}
+createMESSProjects(_target, _subtarget, "ave")
+files {
+ MAME_DIR .. "src/mame/drivers/ave_arb.cpp",
+}
+
createMESSProjects(_target, _subtarget, "bally")
files {
MAME_DIR .. "src/mame/drivers/astrohome.cpp",
@@ -1885,7 +1892,6 @@ createMESSProjects(_target, _subtarget, "chess")
files {
MAME_DIR .. "src/mame/machine/chessbase.cpp",
MAME_DIR .. "src/mame/includes/chessbase.h",
- MAME_DIR .. "src/mame/drivers/ave_arb.cpp",
MAME_DIR .. "src/mame/machine/fidelbase.cpp",
MAME_DIR .. "src/mame/includes/fidelbase.h",
diff --git a/src/devices/machine/sensorboard.cpp b/src/devices/machine/sensorboard.cpp
new file mode 100644
index 00000000000..4c2c2f6702a
--- /dev/null
+++ b/src/devices/machine/sensorboard.cpp
@@ -0,0 +1,701 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+/*
+
+Generic sensorboard device, meant for tracking pieces, primarily made for
+electronic chessboards. It supports buttons, magnets, and inductive sensors
+(latter is not emulated in any driver yet but the device is ready for it).
+
+Concept/idea by Ralph Schaefer, but his code got removed from MAME when he
+couldn't be reached for source relicensing. This device is made from scratch.
+It uses similar I/O methods as before: MAME keeps track of sensor clicks and
+whereabouts of board pieces, and the GUI is in a layout file. This means it
+can be made to look completely different with external artwork.
+
+This device 'steals' the Shift and Ctrl keys, so don't use them in the driver.
+But if you must, these inputs can be disabled with set_mod_enable(false).
+In here, they're used for forcing sensor/piece inputs (a normal click activates
+both at the same time).
+
+If you use this device in a slot, or add multiple of them, make sure to override
+the outputs with custom_output() to avoid collisions.
+
+
+TODO:
+- dynamically generate input defs instead of all those PORT_CONDITION, input ports
+ need to be in the class first instead of static
+- increase board size when needed, theoretical maximum is 16*16, and even larger
+ if input ports are modernized in MAME core
+
+*/
+
+#include "emu.h"
+#include "machine/sensorboard.h"
+
+
+DEFINE_DEVICE_TYPE(SENSORBOARD, sensorboard_device, "sensorboard", "Sensorboard")
+
+//-------------------------------------------------
+// constructor
+//-------------------------------------------------
+
+sensorboard_device::sensorboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, SENSORBOARD, tag, owner, clock),
+ m_out_piece(*this, "piece_%c%u", 0U + 'a', 1U),
+ m_out_pui(*this, "piece_ui%u", 0U),
+ m_out_count(*this, "count_ui%u", 0U),
+ m_inp_rank(*this, "RANK.%u", 1),
+ m_inp_ui(*this, "UI"),
+ m_custom_init_cb(*this),
+ m_custom_sensor_cb(*this),
+ m_custom_spawn_cb(*this),
+ m_custom_output_cb(*this)
+{
+ m_sensordelay = attotime::from_msec(75);
+ m_magnets = false;
+ m_inductive = false;
+ m_ui_enabled = 3;
+ memset(m_inistate, 0, ARRAY_LENGTH(m_inistate));
+ memset(m_spawnstate, 0, ARRAY_LENGTH(m_spawnstate));
+}
+
+
+
+//-------------------------------------------------
+// device_start / reset
+//-------------------------------------------------
+
+void sensorboard_device::device_start()
+{
+ // resolve handlers
+ m_custom_init_cb.resolve_safe(0);
+ m_custom_sensor_cb.resolve_safe(0);
+ m_custom_spawn_cb.resolve();
+ m_custom_output_cb.resolve();
+
+ if (m_custom_output_cb.isnull())
+ {
+ m_out_piece.resolve();
+ m_out_pui.resolve();
+ m_out_count.resolve();
+ }
+
+ for (int i = 0; i < m_maxspawn; i++)
+ m_spawnstate[i] = i + 1;
+
+ // custom init (meant for setting m_inistate)
+ m_custom_init_cb();
+ memcpy(m_curstate, m_inistate, m_height * m_width);
+ memcpy(m_history[0], m_curstate, m_height * m_width);
+
+ // output spawn icons (done only once)
+ for (int i = 0; i < m_maxspawn; i++)
+ {
+ if (m_custom_output_cb.isnull())
+ m_out_pui[i + 1] = m_spawnstate[i];
+ else
+ m_custom_output_cb(i + 0x101, m_spawnstate[i]);
+ }
+
+ m_undotimer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(sensorboard_device::undo_tick),this));
+ m_sensortimer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(sensorboard_device::sensor_off),this));
+ cancel_sensor();
+
+ u16 wmask = ~((1 << m_width) - 1);
+ u16 hmask = ~((1 << m_height) - 1);
+ m_bs_mask = hmask << 16 | wmask;
+ m_ss_mask = ~((1 << m_maxspawn) - 1);
+
+ m_uselect = 0;
+ m_upointer = 0;
+ m_ufirst = 0;
+ m_ulast = 0;
+ m_usize = ARRAY_LENGTH(m_history);
+
+ // register for savestates
+ save_item(NAME(m_history));
+ save_item(NAME(m_curstate));
+ save_item(NAME(m_inistate));
+ save_item(NAME(m_spawnstate));
+
+ save_item(NAME(m_magnets));
+ save_item(NAME(m_inductive));
+ save_item(NAME(m_width));
+ save_item(NAME(m_height));
+ save_item(NAME(m_bs_mask));
+ save_item(NAME(m_ss_mask));
+ save_item(NAME(m_maxspawn));
+ save_item(NAME(m_maxid));
+ save_item(NAME(m_hand));
+ save_item(NAME(m_handpos));
+ save_item(NAME(m_droppos));
+ save_item(NAME(m_sensorpos));
+ save_item(NAME(m_ui_enabled));
+ save_item(NAME(m_uselect));
+ save_item(NAME(m_upointer));
+ save_item(NAME(m_ufirst));
+ save_item(NAME(m_ulast));
+ save_item(NAME(m_usize));
+ save_item(NAME(m_sensordelay));
+}
+
+void sensorboard_device::init_preset(u8 preset)
+{
+ // called at driver machine config
+ m_magnets = (preset != CHESS_BUTTONS);
+ m_inductive = (preset == CHESS_INDUCTIVE);
+ set_size(8, 8);
+ set_spawnpoints(12);
+
+ // 1 = white pawn 7 = black pawn
+ // 2 = white knight 8 = black knight
+ // 3 = white bishop 9 = black bishop
+ // 4 = white rook 10 = black rook
+ // 5 = white queen 11 = black queen
+ // 6 = white king 12 = black king
+
+ // initial board state
+ write_init(0, 0, 4);
+ write_init(7, 0, 4);
+ write_init(1, 0, 2);
+ write_init(6, 0, 2);
+ write_init(2, 0, 3);
+ write_init(5, 0, 3);
+ write_init(3, 0, 5);
+ write_init(4, 0, 6);
+
+ for (int x = 0; x < 8; x++)
+ {
+ write_init(x, 1, 1);
+ write_init(x, 6, 7);
+ write_init(x, 7, read_init(x, 0) + 6);
+ }
+
+ if (m_inductive)
+ {
+ set_sensordelay(attotime::never);
+ set_max_id(0xff);
+ }
+
+ // note that for inductive boards, 2 additional callbacks are needed:
+ // custom_init() for reassigning the piece ids for initial board state
+ // custom_spawn() for checking if a piece is available and reassigning the piece id
+}
+
+void sensorboard_device::device_reset()
+{
+ cancel_sensor();
+ cancel_hand();
+ refresh();
+}
+
+
+
+//-------------------------------------------------
+// public handlers
+//-------------------------------------------------
+
+u8 sensorboard_device::read_sensor(u8 x, u8 y)
+{
+ if (x >= m_width || y >= m_height)
+ return 0;
+
+ u8 live_state = BIT(m_inp_rank[y]->read(), x);
+ int pos = (y << 4 & 0xf0) | (x & 0x0f);
+
+ if (m_magnets || m_inductive)
+ {
+ u8 piece = read_piece(x, y);
+ u8 state = (piece != 0 && pos != m_handpos && pos != m_droppos) ? 1 : 0;
+
+ // piece recognition: return piece id
+ if (m_inductive)
+ return (state) ? piece : 0;
+
+ // invert state if sensor is forced
+ else
+ return state ^ (m_inp_ui->read() & live_state);
+ }
+ else
+ {
+ // buttons are blocked
+ if (m_inp_ui->read() & 2)
+ return 0;
+
+ // buttons are forced
+ if (m_sensordelay == attotime::never || m_inp_ui->read() & 1)
+ return live_state;
+
+ return (pos == m_sensorpos) ? 1 : 0;
+ }
+}
+
+u16 sensorboard_device::read_file(u8 x, bool reverse)
+{
+ if (m_inductive || x >= m_width)
+ return 0;
+
+ // read whole file(column) at once
+ u16 data = 0;
+ for (int y = 0; y < m_height; y++)
+ data = data << 1 | read_sensor(x, (reverse) ? y : (m_height - 1 - y));
+
+ return data;
+}
+
+u16 sensorboard_device::read_rank(u8 y, bool reverse)
+{
+ if (m_inductive || y >= m_height)
+ return 0;
+
+ // read whole rank(row) at once
+ u16 data = 0;
+ for (int x = 0; x < m_width; x++)
+ data = data << 1 | read_sensor((reverse) ? x : (m_width - 1 - x), y);
+
+ return data;
+}
+
+void sensorboard_device::refresh()
+{
+ bool custom_out = !m_custom_output_cb.isnull();
+
+ // output hand piece
+ if (custom_out)
+ m_custom_output_cb(0x100, m_hand);
+ else
+ m_out_pui[0] = m_hand;
+
+ // output board state
+ for (int x = 0; x < m_width; x++)
+ for (int y = 0; y < m_height; y++)
+ {
+ u8 piece = read_piece(x, y);
+ int pos = (y << 4 & 0xf0) | (x & 0x0f);
+
+ // selected piece: m_maxid + piece id
+ if (piece != 0 && pos == m_handpos)
+ piece += m_maxid;
+
+ if (custom_out)
+ m_custom_output_cb(pos, piece);
+ else
+ m_out_piece[x][y] = piece;
+ }
+
+ // set new move on board state change
+ if (memcmp(m_curstate, m_history[m_upointer], m_width * m_height))
+ {
+ m_upointer = (m_upointer + 1) % m_usize;
+ m_ulast = m_upointer;
+ memcpy(m_history[m_upointer], m_curstate, m_height * m_width);
+
+ // overflow
+ if (m_ufirst == m_ulast)
+ m_ufirst = (m_ufirst + 1) % m_usize;
+ }
+
+ // output undo counter
+ u32 last = m_ulast;
+ u32 p = m_upointer;
+
+ if (last < m_ufirst)
+ last += m_usize;
+ if (p < m_ufirst)
+ p += m_usize;
+
+ u32 c0 = p - m_ufirst;
+ u32 c1 = last - m_ufirst;
+
+ if (custom_out)
+ {
+ m_custom_output_cb(0x200, c0);
+ m_custom_output_cb(0x201, c1);
+ }
+ else
+ {
+ m_out_count[0] = c0;
+ m_out_count[1] = c1;
+ }
+}
+
+void sensorboard_device::cancel_hand()
+{
+ // remove piece from hand (but don't remove it from the board)
+ m_hand = 0;
+ m_handpos = -1;
+}
+
+void sensorboard_device::remove_hand()
+{
+ // remove piece from hand, and if original place was board, remove it from there
+ m_hand = 0;
+ if (m_handpos != -1)
+ {
+ write_piece(m_handpos & 0xf, m_handpos >> 4 & 0xf, 0);
+ m_handpos = -1;
+ }
+}
+
+bool sensorboard_device::drop_piece(u8 x, u8 y)
+{
+ // drop piece from hand onto the board
+ u8 piece = m_hand;
+ if (piece != 0)
+ {
+ remove_hand();
+ write_piece(x, y, piece);
+
+ // magnet boards: delay when capturing a piece
+ if (m_sensordelay != attotime::never)
+ m_droppos = (y << 4 & 0xf0) | (x & 0x0f);
+ }
+
+ return piece != 0;
+}
+
+bool sensorboard_device::pickup_piece(u8 x, u8 y)
+{
+ // pick up piece from board, place in hand
+ u8 piece = read_piece(x, y);
+ if (piece != 0)
+ {
+ m_hand = piece;
+ m_handpos = (y << 4 & 0xf0) | (x & 0x0f);
+ }
+
+ return piece != 0;
+}
+
+
+
+//-------------------------------------------------
+// input handlers (internal use)
+//-------------------------------------------------
+
+void sensorboard_device::cancel_sensor()
+{
+ m_sensortimer->adjust(attotime::never);
+ m_sensorpos = m_droppos = -1;
+}
+
+INPUT_CHANGED_MEMBER(sensorboard_device::sensor)
+{
+ if (!newval)
+ return;
+
+ if (m_sensorpos != -1 || m_inp_ui->read() & 1)
+ return;
+
+ u8 pos = (u8)(uintptr_t)param;
+ u8 x = pos & 0xf;
+ u8 y = pos >> 4 & 0xf;
+ if (x >= m_width || y >= m_height)
+ return;
+
+ // click delay
+ if (m_sensordelay != attotime::never && (m_magnets || m_inductive || ~m_inp_ui->read() & 2))
+ {
+ m_sensorpos = pos;
+ m_sensortimer->adjust(m_sensordelay);
+ }
+
+ // optional custom handling:
+ // return d0 = block drop piece
+ // return d1 = block pick up piece
+ u8 custom = m_custom_sensor_cb(pos);
+
+ // drop piece
+ if (m_hand != 0)
+ {
+ if (~custom & 1)
+ drop_piece(x, y);
+ }
+
+ // pick up piece
+ else if (~custom & 2)
+ pickup_piece(x, y);
+
+ refresh();
+}
+
+INPUT_CHANGED_MEMBER(sensorboard_device::ui_spawn)
+{
+ if (!newval)
+ return;
+
+ u8 pos = (u8)(uintptr_t)param;
+ if (pos >= m_maxspawn)
+ return;
+
+ cancel_sensor();
+ m_hand = pos;
+ m_handpos = -1;
+
+ // optional callback to change piece id
+ if (!m_custom_spawn_cb.isnull())
+ m_hand = m_custom_spawn_cb(pos);
+
+ refresh();
+}
+
+INPUT_CHANGED_MEMBER(sensorboard_device::ui_hand)
+{
+ if (!newval)
+ return;
+
+ cancel_sensor();
+ remove_hand();
+ refresh();
+}
+
+TIMER_CALLBACK_MEMBER(sensorboard_device::undo_tick)
+{
+ if (m_ufirst == m_ulast)
+ return;
+
+ u32 last = m_ulast;
+ u32 p = m_upointer;
+
+ if (last < m_ufirst)
+ last += m_usize;
+ if (p < m_ufirst)
+ p += m_usize;
+
+ switch (param)
+ {
+ case 0:
+ p = m_ufirst;
+ break;
+ case 1:
+ if (p > m_ufirst)
+ p--;
+ break;
+ case 2:
+ if (p < last)
+ p++;
+ break;
+ case 3:
+ p = last;
+ break;
+ }
+
+ p %= m_usize;
+ if (p == m_upointer)
+ return;
+
+ cancel_sensor();
+ cancel_hand();
+
+ // set current state to undo point
+ memcpy(m_curstate, m_history[p], m_height * m_width);
+ m_upointer = p;
+ refresh();
+
+ // schedule next timeout
+ if (m_inp_ui->read() & 0x78)
+ m_undotimer->adjust(attotime::from_msec(500), param);
+}
+
+INPUT_CHANGED_MEMBER(sensorboard_device::ui_undo)
+{
+ u8 select = (u8)(uintptr_t)param;
+
+ if (newval)
+ {
+ m_uselect = select;
+ m_undotimer->adjust(attotime::zero, select);
+ }
+ else if ((m_inp_ui->read() & 0x78) == 0 || select == m_uselect)
+ m_undotimer->adjust(attotime::never);
+}
+
+INPUT_CHANGED_MEMBER(sensorboard_device::ui_init)
+{
+ if (!newval)
+ return;
+
+ u8 select = (u8)(uintptr_t)param;
+ cancel_sensor();
+ cancel_hand();
+
+ // clear board
+ memset(m_curstate, 0, m_height * m_width);
+
+ // reset to initial position
+ if (select)
+ memcpy(m_curstate, m_inistate, m_height * m_width);
+
+ refresh();
+}
+
+
+
+//-------------------------------------------------
+// input_ports - device-specific input ports
+//-------------------------------------------------
+
+static INPUT_PORTS_START( sensorboard )
+ PORT_START("RANK.1")
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<16 | 1<<0, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x00) PORT_NAME("Board Sensor A1")
+ PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<16 | 1<<1, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x01) PORT_NAME("Board Sensor B1")
+ PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<16 | 1<<2, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x02) PORT_NAME("Board Sensor C1")
+ PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<16 | 1<<3, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x03) PORT_NAME("Board Sensor D1")
+ PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<16 | 1<<4, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x04) PORT_NAME("Board Sensor E1")
+ PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<16 | 1<<5, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x05) PORT_NAME("Board Sensor F1")
+ PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<16 | 1<<6, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x06) PORT_NAME("Board Sensor G1")
+ PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<16 | 1<<7, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x07) PORT_NAME("Board Sensor H1")
+ PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<16 | 1<<8, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x08) PORT_NAME("Board Sensor I1")
+ PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<16 | 1<<9, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x09) PORT_NAME("Board Sensor J1")
+
+ PORT_START("RANK.2")
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<17 | 1<<0, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x10) PORT_NAME("Board Sensor A2")
+ PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<17 | 1<<1, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x11) PORT_NAME("Board Sensor B2")
+ PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<17 | 1<<2, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x12) PORT_NAME("Board Sensor C2")
+ PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<17 | 1<<3, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x13) PORT_NAME("Board Sensor D2")
+ PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<17 | 1<<4, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x14) PORT_NAME("Board Sensor E2")
+ PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<17 | 1<<5, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x15) PORT_NAME("Board Sensor F2")
+ PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<17 | 1<<6, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x16) PORT_NAME("Board Sensor G2")
+ PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<17 | 1<<7, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x17) PORT_NAME("Board Sensor H2")
+ PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<17 | 1<<8, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x18) PORT_NAME("Board Sensor I2")
+ PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<17 | 1<<9, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x19) PORT_NAME("Board Sensor J2")
+
+ PORT_START("RANK.3")
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<18 | 1<<0, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x20) PORT_NAME("Board Sensor A3")
+ PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<18 | 1<<1, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x21) PORT_NAME("Board Sensor B3")
+ PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<18 | 1<<2, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x22) PORT_NAME("Board Sensor C3")
+ PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<18 | 1<<3, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x23) PORT_NAME("Board Sensor D3")
+ PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<18 | 1<<4, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x24) PORT_NAME("Board Sensor E3")
+ PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<18 | 1<<5, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x25) PORT_NAME("Board Sensor F3")
+ PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<18 | 1<<6, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x26) PORT_NAME("Board Sensor G3")
+ PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<18 | 1<<7, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x27) PORT_NAME("Board Sensor H3")
+ PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<18 | 1<<8, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x28) PORT_NAME("Board Sensor I3")
+ PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<18 | 1<<9, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x29) PORT_NAME("Board Sensor J3")
+
+ PORT_START("RANK.4")
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<19 | 1<<0, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x30) PORT_NAME("Board Sensor A4")
+ PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<19 | 1<<1, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x31) PORT_NAME("Board Sensor B4")
+ PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<19 | 1<<2, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x32) PORT_NAME("Board Sensor C4")
+ PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<19 | 1<<3, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x33) PORT_NAME("Board Sensor D4")
+ PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<19 | 1<<4, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x34) PORT_NAME("Board Sensor E4")
+ PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<19 | 1<<5, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x35) PORT_NAME("Board Sensor F4")
+ PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<19 | 1<<6, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x36) PORT_NAME("Board Sensor G4")
+ PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<19 | 1<<7, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x37) PORT_NAME("Board Sensor H4")
+ PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<19 | 1<<8, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x38) PORT_NAME("Board Sensor I4")
+ PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<19 | 1<<9, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x39) PORT_NAME("Board Sensor J4")
+
+ PORT_START("RANK.5")
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<20 | 1<<0, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x40) PORT_NAME("Board Sensor A5")
+ PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<20 | 1<<1, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x41) PORT_NAME("Board Sensor B5")
+ PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<20 | 1<<2, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x42) PORT_NAME("Board Sensor C5")
+ PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<20 | 1<<3, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x43) PORT_NAME("Board Sensor D5")
+ PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<20 | 1<<4, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x44) PORT_NAME("Board Sensor E5")
+ PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<20 | 1<<5, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x45) PORT_NAME("Board Sensor F5")
+ PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<20 | 1<<6, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x46) PORT_NAME("Board Sensor G5")
+ PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<20 | 1<<7, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x47) PORT_NAME("Board Sensor H5")
+ PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<20 | 1<<8, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x48) PORT_NAME("Board Sensor I5")
+ PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<20 | 1<<9, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x49) PORT_NAME("Board Sensor J5")
+
+ PORT_START("RANK.6")
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<21 | 1<<0, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x50) PORT_NAME("Board Sensor A6")
+ PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<21 | 1<<1, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x51) PORT_NAME("Board Sensor B6")
+ PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<21 | 1<<2, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x52) PORT_NAME("Board Sensor C6")
+ PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<21 | 1<<3, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x53) PORT_NAME("Board Sensor D6")
+ PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<21 | 1<<4, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x54) PORT_NAME("Board Sensor E6")
+ PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<21 | 1<<5, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x55) PORT_NAME("Board Sensor F6")
+ PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<21 | 1<<6, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x56) PORT_NAME("Board Sensor G6")
+ PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<21 | 1<<7, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x57) PORT_NAME("Board Sensor H6")
+ PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<21 | 1<<8, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x58) PORT_NAME("Board Sensor I6")
+ PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<21 | 1<<9, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x59) PORT_NAME("Board Sensor J6")
+
+ PORT_START("RANK.7")
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<22 | 1<<0, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x60) PORT_NAME("Board Sensor A7")
+ PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<22 | 1<<1, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x61) PORT_NAME("Board Sensor B7")
+ PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<22 | 1<<2, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x62) PORT_NAME("Board Sensor C7")
+ PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<22 | 1<<3, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x63) PORT_NAME("Board Sensor D7")
+ PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<22 | 1<<4, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x64) PORT_NAME("Board Sensor E7")
+ PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<22 | 1<<5, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x65) PORT_NAME("Board Sensor F7")
+ PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<22 | 1<<6, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x66) PORT_NAME("Board Sensor G7")
+ PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<22 | 1<<7, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x67) PORT_NAME("Board Sensor H7")
+ PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<22 | 1<<8, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x68) PORT_NAME("Board Sensor I7")
+ PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<22 | 1<<9, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x69) PORT_NAME("Board Sensor J7")
+
+ PORT_START("RANK.8")
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<23 | 1<<0, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x70) PORT_NAME("Board Sensor A8")
+ PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<23 | 1<<1, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x71) PORT_NAME("Board Sensor B8")
+ PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<23 | 1<<2, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x72) PORT_NAME("Board Sensor C8")
+ PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<23 | 1<<3, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x73) PORT_NAME("Board Sensor D8")
+ PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<23 | 1<<4, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x74) PORT_NAME("Board Sensor E8")
+ PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<23 | 1<<5, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x75) PORT_NAME("Board Sensor F8")
+ PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<23 | 1<<6, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x76) PORT_NAME("Board Sensor G8")
+ PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<23 | 1<<7, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x77) PORT_NAME("Board Sensor H8")
+ PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<23 | 1<<8, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x78) PORT_NAME("Board Sensor I8")
+ PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<23 | 1<<9, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x79) PORT_NAME("Board Sensor J8")
+
+ PORT_START("RANK.9")
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<24 | 1<<0, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x80) PORT_NAME("Board Sensor A9")
+ PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<24 | 1<<1, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x81) PORT_NAME("Board Sensor B9")
+ PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<24 | 1<<2, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x82) PORT_NAME("Board Sensor C9")
+ PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<24 | 1<<3, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x83) PORT_NAME("Board Sensor D9")
+ PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<24 | 1<<4, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x84) PORT_NAME("Board Sensor E9")
+ PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<24 | 1<<5, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x85) PORT_NAME("Board Sensor F9")
+ PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<24 | 1<<6, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x86) PORT_NAME("Board Sensor G9")
+ PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<24 | 1<<7, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x87) PORT_NAME("Board Sensor H9")
+ PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<24 | 1<<8, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x88) PORT_NAME("Board Sensor I9")
+ PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<24 | 1<<9, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x89) PORT_NAME("Board Sensor J9")
+
+ PORT_START("RANK.10")
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<25 | 1<<0, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x90) PORT_NAME("Board Sensor A10")
+ PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<25 | 1<<1, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x91) PORT_NAME("Board Sensor B10")
+ PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<25 | 1<<2, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x92) PORT_NAME("Board Sensor C10")
+ PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<25 | 1<<3, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x93) PORT_NAME("Board Sensor D10")
+ PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<25 | 1<<4, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x94) PORT_NAME("Board Sensor E10")
+ PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<25 | 1<<5, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x95) PORT_NAME("Board Sensor F10")
+ PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<25 | 1<<6, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x96) PORT_NAME("Board Sensor G10")
+ PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<25 | 1<<7, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x97) PORT_NAME("Board Sensor H10")
+ PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<25 | 1<<8, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x98) PORT_NAME("Board Sensor I10")
+ PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("BS_CHECK", 1<<25 | 1<<9, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, sensor, 0x99) PORT_NAME("Board Sensor J10")
+
+ PORT_START("SPAWN")
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("SS_CHECK", 1<<0, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_spawn, 1) PORT_NAME("Spawn Piece 1")
+ PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("SS_CHECK", 1<<1, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_spawn, 2) PORT_NAME("Spawn Piece 2")
+ PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("SS_CHECK", 1<<2, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_spawn, 3) PORT_NAME("Spawn Piece 3")
+ PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("SS_CHECK", 1<<3, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_spawn, 4) PORT_NAME("Spawn Piece 4")
+ PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("SS_CHECK", 1<<4, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_spawn, 5) PORT_NAME("Spawn Piece 5")
+ PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("SS_CHECK", 1<<5, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_spawn, 6) PORT_NAME("Spawn Piece 6")
+ PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("SS_CHECK", 1<<6, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_spawn, 7) PORT_NAME("Spawn Piece 7")
+ PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("SS_CHECK", 1<<7, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_spawn, 8) PORT_NAME("Spawn Piece 8")
+ PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("SS_CHECK", 1<<8, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_spawn, 9) PORT_NAME("Spawn Piece 9")
+ PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("SS_CHECK", 1<<9, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_spawn, 10) PORT_NAME("Spawn Piece 10")
+ PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("SS_CHECK", 1<<10, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_spawn, 11) PORT_NAME("Spawn Piece 11")
+ PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("SS_CHECK", 1<<11, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_spawn, 12) PORT_NAME("Spawn Piece 12")
+ PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("SS_CHECK", 1<<12, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_spawn, 13) PORT_NAME("Spawn Piece 13")
+ PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("SS_CHECK", 1<<13, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_spawn, 14) PORT_NAME("Spawn Piece 14")
+ PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("SS_CHECK", 1<<14, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_spawn, 15) PORT_NAME("Spawn Piece 15")
+ PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("SS_CHECK", 1<<15, EQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_spawn, 16) PORT_NAME("Spawn Piece 16")
+
+ PORT_START("UI")
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("UI_CHECK", 1, NOTEQUALS, 0) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("Modifier Force Sensor") // hold while clicking to force sensor (ignore piece)
+ PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("UI_CHECK", 1, NOTEQUALS, 0) PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_NAME("Modifier Force Piece") // hold while clicking to force piece (ignore sensor)
+ PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("UI_CHECK", 2, NOTEQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_hand, 0) PORT_NAME("Remove Piece")
+ PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("UI_CHECK", 2, NOTEQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_undo, 0) PORT_NAME("Undo Buffer First")
+ PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("UI_CHECK", 2, NOTEQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_undo, 1) PORT_NAME("Undo Buffer Previous")
+ PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("UI_CHECK", 2, NOTEQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_undo, 2) PORT_NAME("Undo Buffer Next")
+ PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("UI_CHECK", 2, NOTEQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_undo, 3) PORT_NAME("Undo Buffer Last")
+ PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("UI_CHECK", 2, NOTEQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_init, 0) PORT_NAME("Board Clear")
+ PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CONDITION("UI_CHECK", 2, NOTEQUALS, 0) PORT_CHANGED_MEMBER(DEVICE_SELF, sensorboard_device, ui_init, 1) PORT_NAME("Board Reset")
+
+ PORT_START("BS_CHECK") // board size (internal use)
+ PORT_BIT( 0xffffffff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sensorboard_device, check_bs_mask, nullptr)
+
+ PORT_START("SS_CHECK") // spawn size (internal use)
+ PORT_BIT( 0xffffffff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sensorboard_device, check_ss_mask, nullptr)
+
+ PORT_START("UI_CHECK") // UI enabled (internal use)
+ PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, sensorboard_device, check_ui_enabled, nullptr)
+INPUT_PORTS_END
+
+ioport_constructor sensorboard_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME(sensorboard);
+}
diff --git a/src/devices/machine/sensorboard.h b/src/devices/machine/sensorboard.h
new file mode 100644
index 00000000000..ae0384f922d
--- /dev/null
+++ b/src/devices/machine/sensorboard.h
@@ -0,0 +1,129 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+/*
+
+ Generic sensorboard device
+
+*/
+
+#ifndef MAME_MACHINE_SENSORBOARD_H
+#define MAME_MACHINE_SENSORBOARD_H
+
+#pragma once
+
+class sensorboard_device : public device_t
+{
+public:
+ sensorboard_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
+
+ enum
+ {
+ CHESS_BUTTONS = 0,
+ CHESS_MAGNETS,
+ CHESS_INDUCTIVE
+ };
+
+ // configuration helpers
+ sensorboard_device &set_preset(u8 preset) { init_preset(preset); return *this; } // device has presets for chess boards
+ sensorboard_device &set_size(u8 width, u8 height) { m_width = width; m_height = height; return *this; } // board dimensions, max 10 * 10
+ sensorboard_device &set_spawnpoints(u8 i) { m_maxspawn = i; m_maxid = i; return *this; } // number of piece spawnpoints, max 16
+ sensorboard_device &set_max_id(u8 i) { m_maxid = i; return *this; } // maximum piece id (if larger than set_spawnpoints)
+ sensorboard_device &set_sensordelay(attotime delay) { m_sensordelay = delay; return *this; } // delay when activating a sensor (like PORT_IMPULSE), set to attotime::never to disable
+ sensorboard_device &set_ui_enable(bool b) { if (!b) m_maxspawn = 0; m_ui_enabled = (b) ? 3 : 0; return *this; } // enable UI inputs
+ sensorboard_device &set_mod_enable(bool b) { if (b) m_ui_enabled |= 1; else m_ui_enabled &= 2; return *this; } // enable modifier keys
+
+ auto custom_init() { return m_custom_init_cb.bind(); }
+ auto custom_sensor() { return m_custom_sensor_cb.bind(); } // x = offset & 0xf, y = offset >> 4 & 0xf
+ auto custom_spawn() { return m_custom_spawn_cb.bind(); } // spawnpoint/piece = offset, retval = new piece id
+ auto custom_output() { return m_custom_output_cb.bind(); } // pos = offset(A8 for ui/board, A9 for count), id = data
+
+ // read sensors
+ u8 read_sensor(u8 x, u8 y);
+ u16 read_file(u8 x, bool reverse = false);
+ u16 read_rank(u8 y, bool reverse = false);
+
+ // handle board state
+ u8 read_piece(u8 x, u8 y) { return m_curstate[y * m_width + x]; }
+ void write_piece(u8 x, u8 y, u8 id) { m_curstate[y * m_width + x] = id; }
+ u8 read_init(u8 x, u8 y) { return m_inistate[y * m_width + x]; }
+ void write_init(u8 x, u8 y, u8 id) { m_inistate[y * m_width + x] = id; } // for setting initial board state
+
+ void refresh();
+
+ // handle pieces
+ void cancel_hand();
+ void remove_hand();
+ bool drop_piece(u8 x, u8 y);
+ bool pickup_piece(u8 x, u8 y);
+
+ // internal input handlers
+ DECLARE_INPUT_CHANGED_MEMBER(sensor);
+ DECLARE_INPUT_CHANGED_MEMBER(ui_spawn);
+ DECLARE_INPUT_CHANGED_MEMBER(ui_hand);
+ DECLARE_INPUT_CHANGED_MEMBER(ui_undo);
+ DECLARE_INPUT_CHANGED_MEMBER(ui_init);
+
+ DECLARE_CUSTOM_INPUT_MEMBER(check_bs_mask) { return m_bs_mask; }
+ DECLARE_CUSTOM_INPUT_MEMBER(check_ss_mask) { return m_ss_mask; }
+ DECLARE_CUSTOM_INPUT_MEMBER(check_ui_enabled) { return m_ui_enabled; }
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_post_load() override { refresh(); }
+
+ virtual ioport_constructor device_input_ports() const override;
+
+private:
+ output_finder<0x10, 0x10> m_out_piece;
+ output_finder<0x20+1> m_out_pui;
+ output_finder<2> m_out_count;
+ required_ioport_array<10> m_inp_rank;
+ required_ioport m_inp_ui;
+
+ devcb_read_line m_custom_init_cb;
+ devcb_read8 m_custom_sensor_cb;
+ devcb_read8 m_custom_spawn_cb;
+ devcb_write16 m_custom_output_cb;
+
+ u8 m_history[1000][0x100];
+ u8 m_curstate[0x100];
+ u8 m_inistate[0x100];
+ u8 m_spawnstate[0x20];
+
+ bool m_magnets;
+ bool m_inductive;
+ u8 m_width;
+ u8 m_height;
+ u32 m_bs_mask;
+ u32 m_ss_mask;
+ u8 m_maxspawn;
+ u8 m_maxid;
+ u8 m_hand;
+ int m_handpos;
+ int m_droppos;
+ int m_sensorpos;
+ u8 m_ui_enabled;
+
+ u8 m_uselect;
+ u32 m_upointer;
+ u32 m_ufirst;
+ u32 m_ulast;
+ u32 m_usize;
+
+ emu_timer *m_undotimer;
+ TIMER_CALLBACK_MEMBER(undo_tick);
+
+ attotime m_sensordelay;
+ emu_timer *m_sensortimer;
+ void cancel_sensor();
+ TIMER_CALLBACK_MEMBER(sensor_off) { cancel_sensor(); }
+
+ void init_preset(u8 preset);
+};
+
+
+DECLARE_DEVICE_TYPE(SENSORBOARD, sensorboard_device)
+
+#endif // MAME_MACHINE_SENSORBOARD_H
diff --git a/src/devices/video/pwm.cpp b/src/devices/video/pwm.cpp
index 80f52c7bb86..b949c83e9a4 100644
--- a/src/devices/video/pwm.cpp
+++ b/src/devices/video/pwm.cpp
@@ -73,15 +73,18 @@ ALLOW_SAVE_TYPE(attotime); // m_acc
void pwm_display_device::device_start()
{
// resolve handlers
- m_out_x.resolve();
- m_out_a.resolve();
- m_out_digit.resolve();
-
bool cb1 = m_output_x_cb.resolve_safe();
bool cb2 = m_output_a_cb.resolve_safe();
bool cb3 = m_output_digit_cb.resolve_safe();
m_external_output = cb1 || cb2 || cb3;
+ if (!m_external_output)
+ {
+ m_out_x.resolve();
+ m_out_a.resolve();
+ m_out_digit.resolve();
+ }
+
// initialize
std::fill_n(m_rowdata, ARRAY_LENGTH(m_rowdata), 0);
std::fill_n(m_rowdata_prev, ARRAY_LENGTH(m_rowdata_prev), 0);
diff --git a/src/mame/drivers/ave_arb.cpp b/src/mame/drivers/ave_arb.cpp
index 6a3742bbe4e..d09991ade35 100644
--- a/src/mame/drivers/ave_arb.cpp
+++ b/src/mame/drivers/ave_arb.cpp
@@ -10,6 +10,7 @@ by Chafitz, and in Germany by Sandy Electronic.
TODO:
- verify gms40 module memory layout
+- need to add checkers pieces and custom initial position when Avelan gets dumped
*******************************************************************************
@@ -41,10 +42,10 @@ running at 16MHz.
******************************************************************************/
#include "emu.h"
-#include "includes/chessbase.h"
-
#include "cpu/m6502/m6502.h"
#include "cpu/m6502/m65c02.h"
+#include "video/pwm.h"
+#include "machine/sensorboard.h"
#include "machine/6522via.h"
#include "machine/nvram.h"
#include "sound/dac.h"
@@ -60,19 +61,22 @@ running at 16MHz.
namespace {
-class arb_state : public chessbase_state
+class arb_state : public driver_device
{
public:
arb_state(const machine_config &mconfig, device_type type, const char *tag) :
- chessbase_state(mconfig, type, tag),
+ driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
+ m_display(*this, "display"),
+ m_board(*this, "board"),
m_via(*this, "via"),
m_dac(*this, "dac"),
- m_cart(*this, "cartslot")
+ m_cart(*this, "cartslot"),
+ m_inputs(*this, "IN.%u", 0)
{ }
// halt button is tied to NMI, reset button to RESET(but only if halt button is held)
- void update_reset() { m_maincpu->set_input_line(INPUT_LINE_RESET, (m_inp_matrix[9]->read() == 3) ? ASSERT_LINE : CLEAR_LINE); }
+ void update_reset() { m_maincpu->set_input_line(INPUT_LINE_RESET, (m_inputs[1]->read() == 3) ? ASSERT_LINE : CLEAR_LINE); }
DECLARE_INPUT_CHANGED_MEMBER(reset_button) { update_reset(); }
DECLARE_INPUT_CHANGED_MEMBER(halt_button) { m_maincpu->set_input_line(M6502_NMI_LINE, newval ? ASSERT_LINE : CLEAR_LINE); update_reset(); }
@@ -80,12 +84,18 @@ public:
void arb(machine_config &config);
void v2(machine_config &config);
+protected:
+ virtual void machine_start() override;
+
private:
// devices/pointers
required_device<cpu_device> m_maincpu;
+ required_device<pwm_display_device> m_display;
+ required_device<sensorboard_device> m_board;
required_device<via6522_device> m_via;
required_device<dac_bit_interface> m_dac;
optional_device<generic_slot_device> m_cart;
+ required_ioport_array<2> m_inputs;
// address maps
void main_map(address_map &map);
@@ -101,8 +111,32 @@ private:
DECLARE_WRITE8_MEMBER(leds_w);
DECLARE_WRITE8_MEMBER(control_w);
DECLARE_READ8_MEMBER(input_r);
+
+ u16 m_inp_mux;
+ u16 m_led_select;
+ u8 m_led_group;
+ u8 m_led_latch;
+ u16 m_led_data;
};
+void arb_state::machine_start()
+{
+ // zerofill
+ m_inp_mux = 0;
+ m_led_select = 0;
+ m_led_group = 0;
+ m_led_latch = 0;
+ m_led_data = 0;
+
+ // register for savestates
+ save_item(NAME(m_inp_mux));
+ save_item(NAME(m_led_select));
+ save_item(NAME(m_led_group));
+ save_item(NAME(m_led_latch));
+ save_item(NAME(m_led_data));
+}
+
+
/******************************************************************************
Devices, I/O
@@ -137,11 +171,11 @@ void arb_state::update_display()
{
// 12 led column data lines via 3 7475
u16 mask = 0;
- mask |= (m_led_select & 1) ? 0xf00 : 0;
- mask |= (m_led_select & 2) ? 0x0ff : 0;
+ mask |= (m_led_group & 1) ? 0xf00 : 0;
+ mask |= (m_led_group & 2) ? 0x0ff : 0;
m_led_data = (m_led_data & ~mask) | ((m_led_latch << 8 | m_led_latch) & mask);
- display_matrix(12, 9+1, m_led_data, m_inp_mux | 0x200);
+ m_display->matrix(m_led_select | 0x200, m_led_data);
}
WRITE8_MEMBER(arb_state::leds_w)
@@ -155,10 +189,11 @@ WRITE8_MEMBER(arb_state::control_w)
{
// PB0-PB3: 74145 A-D
// 74145 0-8: input mux, led row select
- m_inp_mux = 1 << (data & 0xf) & 0x1ff;
+ m_inp_mux = data & 0xf;
+ m_led_select = 1 << (data & 0xf) & 0x1ff;
// PB4,PB5: led group select
- m_led_select = data >> 4 & 3;
+ m_led_group = data >> 4 & 3;
update_display();
// PB7: speaker out
@@ -167,8 +202,15 @@ WRITE8_MEMBER(arb_state::control_w)
READ8_MEMBER(arb_state::input_r)
{
+ u8 data = 0;
+
// PA0-PA7: multiplexed inputs
- return ~read_inputs(9);
+ if (m_inp_mux < 8)
+ data = m_board->read_file(m_inp_mux);
+ else if (m_inp_mux < 9)
+ data = m_inputs[m_inp_mux - 8]->read();
+
+ return ~data;
}
@@ -199,9 +241,7 @@ void arb_state::v2_map(address_map &map)
******************************************************************************/
static INPUT_PORTS_START( arb )
- PORT_INCLUDE( generic_cb_magnets )
-
- PORT_START("IN.8")
+ PORT_START("IN.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_7) PORT_NAME("Hint / Black")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_CODE(KEYCODE_6) PORT_NAME("Variable / Clear / White / 6")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_CODE(KEYCODE_5) PORT_NAME("Monitor / Take Back / King / 5")
@@ -211,7 +251,7 @@ static INPUT_PORTS_START( arb )
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_CODE(KEYCODE_1) PORT_NAME("Change Level / Knight / 1")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_CODE(KEYCODE_0) PORT_NAME("New Game / Options / Pawn / 0")
- PORT_START("IN.9")
+ PORT_START("IN.1")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_F2) PORT_NAME("Reset") PORT_CHANGED_MEMBER(DEVICE_SELF, arb_state, reset_button, nullptr)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_CODE(KEYCODE_F2) PORT_NAME("Halt") PORT_CHANGED_MEMBER(DEVICE_SELF, arb_state, halt_button, nullptr)
INPUT_PORTS_END
@@ -236,7 +276,10 @@ void arb_state::v2(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- TIMER(config, "display_decay").configure_periodic(FUNC(arb_state::display_decay_tick), attotime::from_msec(1));
+ SENSORBOARD(config, m_board).set_preset(sensorboard_device::CHESS_MAGNETS);
+
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(9+1, 12);
config.set_default_layout(layout_ave_arb);
/* sound hardware */
@@ -288,5 +331,5 @@ ROM_END
******************************************************************************/
/* YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS */
-CONS( 1980, arb, 0, 0, arb, arb, arb_state, empty_init, "AVE Micro Systems", "Auto Response Board", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
-CONS( 2012, arbv2, arb, 0, v2, arb, arb_state, empty_init, "hack (Steve Braid)", "ARB V2 Sargon 4.0", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1980, arb, 0, 0, arb, arb, arb_state, empty_init, "AVE Micro Systems", "Auto Response Board", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 2012, arbv2, arb, 0, v2, arb, arb_state, empty_init, "hack (Steve Braid)", "ARB V2 Sargon 4.0", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/cking_master.cpp b/src/mame/drivers/cking_master.cpp
index 72339d54c5b..5b59f299599 100644
--- a/src/mame/drivers/cking_master.cpp
+++ b/src/mame/drivers/cking_master.cpp
@@ -19,6 +19,7 @@ TODO:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "video/pwm.h"
+#include "machine/sensorboard.h"
#include "machine/bankdev.h"
#include "machine/timer.h"
#include "sound/dac.h"
@@ -38,6 +39,7 @@ public:
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_display(*this, "display"),
+ m_board(*this, "board"),
m_irq_on(*this, "irq_on"),
m_dac(*this, "dac"),
m_mainmap(*this, "mainmap"),
@@ -56,10 +58,11 @@ private:
// devices/pointers
required_device<cpu_device> m_maincpu;
required_device<pwm_display_device> m_display;
+ required_device<sensorboard_device> m_board;
required_device<timer_device> m_irq_on;
required_device<dac_2bit_binary_weighted_ones_complement_device> m_dac;
required_device<address_map_bank_device> m_mainmap;
- required_ioport_array<10> m_inputs;
+ required_ioport_array<2> m_inputs;
// periodic interrupts
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); }
@@ -75,7 +78,7 @@ private:
u8 input_r();
void control_w(u8 data);
- u8 m_inp_mux;
+ u16 m_inp_mux;
};
void master_state::machine_start()
@@ -109,8 +112,14 @@ void master_state::control_w(u8 data)
u8 master_state::input_r()
{
+ u8 data = 0;
+
// d0-d7: multiplexed inputs
- u8 data = (m_inp_mux < 10) ? m_inputs[m_inp_mux]->read() : 0;
+ if (m_inp_mux < 8)
+ data = m_board->read_file(m_inp_mux, true);
+ else if (m_inp_mux < 10)
+ data = m_inputs[m_inp_mux - 8]->read();
+
return ~data;
}
@@ -178,86 +187,6 @@ void master_state::main_trampoline(address_map &map)
static INPUT_PORTS_START( master )
PORT_START("IN.0")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
-
- PORT_START("IN.1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
-
- PORT_START("IN.2")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
-
- PORT_START("IN.3")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
-
- PORT_START("IN.4")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
-
- PORT_START("IN.5")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
-
- PORT_START("IN.6")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
-
- PORT_START("IN.7")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
-
- PORT_START("IN.8")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("Change Position")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("Clear Board")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("New Game")
@@ -267,7 +196,7 @@ static INPUT_PORTS_START( master )
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_NAME("Rook")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_START("IN.9")
+ PORT_START("IN.1")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_NAME("Bishop")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_9) PORT_NAME("Knight")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_0) PORT_NAME("Pawn")
@@ -296,13 +225,15 @@ void master_state::master(machine_config &config)
m_irq_on->set_start_delay(irq_period - attotime::from_nsec(22870)); // active for 22.87us
TIMER(config, "irq_off").configure_periodic(FUNC(master_state::irq_off<INPUT_LINE_IRQ0>), irq_period);
+ SENSORBOARD(config, m_board).set_preset(sensorboard_device::CHESS_BUTTONS);
+
/* video hardware */
PWM_DISPLAY(config, m_display).set_size(9, 2);
config.set_default_layout(layout_ck_master);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- DAC_2BIT_BINARY_WEIGHTED_ONES_COMPLEMENT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
+ DAC_2BIT_BINARY_WEIGHTED_ONES_COMPLEMENT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.125);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
@@ -328,4 +259,4 @@ ROM_END
******************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-CONS( 1984, ckmaster, 0, 0, master, master, master_state, init_master, "Chess King", "Master (Chess King)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1984, ckmaster, 0, 0, master, master, master_state, init_master, "Chess King", "Master (Chess King)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/cxg_ch2001.cpp b/src/mame/drivers/cxg_ch2001.cpp
index 1509e3bf93a..26719662095 100644
--- a/src/mame/drivers/cxg_ch2001.cpp
+++ b/src/mame/drivers/cxg_ch2001.cpp
@@ -13,6 +13,7 @@ CXG Chess 2001 overview:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "video/pwm.h"
+#include "machine/sensorboard.h"
#include "machine/timer.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
@@ -31,6 +32,7 @@ public:
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_display(*this, "display"),
+ m_board(*this, "board"),
m_irq_on(*this, "irq_on"),
m_dac(*this, "dac"),
m_speaker_off(*this, "speaker_off"),
@@ -47,10 +49,11 @@ private:
// devices/pointers
required_device<cpu_device> m_maincpu;
required_device<pwm_display_device> m_display;
+ required_device<sensorboard_device> m_board;
required_device<timer_device> m_irq_on;
required_device<dac_bit_interface> m_dac;
required_device<timer_device> m_speaker_off;
- required_ioport_array<10> m_inputs;
+ required_ioport_array<2> m_inputs;
// periodic interrupts
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); }
@@ -66,7 +69,7 @@ private:
DECLARE_WRITE8_MEMBER(leds_w);
DECLARE_READ8_MEMBER(input_r);
- u8 m_inp_mux;
+ u16 m_inp_mux;
};
void ch2001_state::machine_start()
@@ -107,8 +110,14 @@ WRITE8_MEMBER(ch2001_state::leds_w)
READ8_MEMBER(ch2001_state::input_r)
{
+ u8 data = 0;
+
// d0-d7: multiplexed inputs
- u8 data = (m_inp_mux < 10) ? m_inputs[m_inp_mux]->read() : 0;
+ if (m_inp_mux < 8)
+ data = m_board->read_file(m_inp_mux, true);
+ else if (m_inp_mux < 10)
+ data = m_inputs[m_inp_mux - 8]->read();
+
return ~data;
}
@@ -134,86 +143,6 @@ void ch2001_state::main_map(address_map &map)
static INPUT_PORTS_START( ch2001 )
PORT_START("IN.0")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
-
- PORT_START("IN.1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
-
- PORT_START("IN.2")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
-
- PORT_START("IN.3")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
-
- PORT_START("IN.4")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
-
- PORT_START("IN.5")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
-
- PORT_START("IN.6")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
-
- PORT_START("IN.7")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
-
- PORT_START("IN.8")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Black")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("King")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("Queen")
@@ -223,7 +152,7 @@ static INPUT_PORTS_START( ch2001 )
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Pawn")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_NAME("White")
- PORT_START("IN.9")
+ PORT_START("IN.1")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("Set up")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("New Game")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_U) PORT_NAME("Take Back")
@@ -251,6 +180,8 @@ void ch2001_state::ch2001(machine_config &config)
m_irq_on->set_start_delay(irq_period - attotime::from_nsec(18300)); // active for 18.3us
TIMER(config, "irq_off").configure_periodic(FUNC(ch2001_state::irq_off<INPUT_LINE_IRQ0>), irq_period);
+ SENSORBOARD(config, m_board).set_preset(sensorboard_device::CHESS_MAGNETS);
+
/* video hardware */
PWM_DISPLAY(config, m_display).set_size(10, 8);
config.set_default_layout(layout_cxg_ch2001);
@@ -283,4 +214,4 @@ ROM_END
******************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-CONS( 1984, ch2001, 0, 0, ch2001, ch2001, ch2001_state, empty_init, "CXG", "Chess 2001", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
+CONS( 1984, ch2001, 0, 0, ch2001, ch2001, ch2001_state, empty_init, "CXG", "Chess 2001", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/layout/ave_arb.lay b/src/mame/layout/ave_arb.lay
index 99c5e158b96..7606bef0bdd 100644
--- a/src/mame/layout/ave_arb.lay
+++ b/src/mame/layout/ave_arb.lay
@@ -3,6 +3,10 @@
<!-- define elements -->
+ <element name="black"><rect><color red="0.17" green="0.15" blue="0.15" /></rect></element>
+ <element name="white"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element>
+ <element name="disk_black"><disk><color red="0.17" green="0.15" blue="0.15" /></disk></element>
+
<element name="led" defstate="0">
<disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk>
<disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk>
@@ -26,21 +30,6 @@
<disk state="1"><color red="0.34" green="0.3" blue="0.3" /></disk>
</element>
- <element name="hl" defstate="0">
- <text string=" ">
- <bounds x="0.0" y="0.0" width="1.0" height="1.0" />
- <color red="0.0" green="0.0" blue="0.0" />
- </text>
- <disk 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" />
- </disk>
- </element>
-
- <element name="black"><rect><color red="0.17" green="0.15" blue="0.15" /></rect></element>
- <element name="white"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element>
- <element name="disk_black"><disk><color red="0.17" green="0.15" blue="0.15" /></disk></element>
-
<element name="text_1">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="1"><color red="0.01" green="0.01" blue="0.01" /></text>
@@ -146,12 +135,307 @@
<element name="text_r43"><text string="Change Board" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+<!-- sb board -->
+
+ <element name="cblack"><rect><color red="0.5" green="0.37" blue="0.3" /></rect></element>
+ <element name="cwhite"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element>
+
+ <element name="hlbb" defstate="0">
+ <text string=" "><bounds x="0" y="0" width="1" height="1" /></text>
+ <disk state="1">
+ <bounds x="0.12" y="0.12" width="0.76" height="0.76" />
+ <color red="0" green="0" blue="0" />
+ </disk>
+ </element>
+
+ <element name="piece" defstate="0">
+ <image file="chess/wp.png" state="1"/>
+ <image file="chess/wn.png" state="2"/>
+ <image file="chess/wb.png" state="3"/>
+ <image file="chess/wr.png" state="4"/>
+ <image file="chess/wq.png" state="5"/>
+ <image file="chess/wk.png" state="6"/>
+
+ <image file="chess/bp.png" state="7"/>
+ <image file="chess/bn.png" state="8"/>
+ <image file="chess/bb.png" state="9"/>
+ <image file="chess/br.png" state="10"/>
+ <image file="chess/bq.png" state="11"/>
+ <image file="chess/bk.png" state="12"/>
+
+ <!-- selected pieces -->
+ <image file="chess/wp.png" state="13"><color alpha="0.5" /></image>
+ <image file="chess/wn.png" state="14"><color alpha="0.5" /></image>
+ <image file="chess/wb.png" state="15"><color alpha="0.5" /></image>
+ <image file="chess/wr.png" state="16"><color alpha="0.5" /></image>
+ <image file="chess/wq.png" state="17"><color alpha="0.5" /></image>
+ <image file="chess/wk.png" state="18"><color alpha="0.5" /></image>
+
+ <image file="chess/bp.png" state="19"><color alpha="0.5" /></image>
+ <image file="chess/bn.png" state="20"><color alpha="0.5" /></image>
+ <image file="chess/bb.png" state="21"><color alpha="0.5" /></image>
+ <image file="chess/br.png" state="22"><color alpha="0.5" /></image>
+ <image file="chess/bq.png" state="23"><color alpha="0.5" /></image>
+ <image file="chess/bk.png" state="24"><color alpha="0.5" /></image>
+ </element>
+
+ <group name="sb_board">
+ <bounds x="0" y="0" width="80" height="80" />
+
+ <!-- squares (avoid seams) -->
+ <bezel element="cwhite"><bounds x="0" y="0" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="10" y="0" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="20" y="0" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="30" y="0" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="40" y="0" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="50" y="0" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="60" y="0" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="70" y="0" width="10" height="11" /></bezel>
+
+ <bezel element="cblack"><bounds x="0" y="10" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="10" y="10" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="20" y="10" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="30" y="10" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="40" y="10" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="50" y="10" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="60" y="10" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="70" y="10" width="10" height="11" /></bezel>
+
+ <bezel element="cwhite"><bounds x="0" y="20" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="10" y="20" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="20" y="20" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="30" y="20" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="40" y="20" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="50" y="20" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="60" y="20" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="70" y="20" width="10" height="11" /></bezel>
+
+ <bezel element="cblack"><bounds x="0" y="30" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="10" y="30" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="20" y="30" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="30" y="30" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="40" y="30" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="50" y="30" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="60" y="30" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="70" y="30" width="10" height="11" /></bezel>
+
+ <bezel element="cwhite"><bounds x="0" y="40" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="10" y="40" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="20" y="40" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="30" y="40" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="40" y="40" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="50" y="40" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="60" y="40" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="70" y="40" width="10" height="11" /></bezel>
+
+ <bezel element="cblack"><bounds x="0" y="50" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="10" y="50" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="20" y="50" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="30" y="50" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="40" y="50" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="50" y="50" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="60" y="50" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="70" y="50" width="10" height="11" /></bezel>
+
+ <bezel element="cwhite"><bounds x="0" y="60" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="10" y="60" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="20" y="60" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="30" y="60" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="40" y="60" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="50" y="60" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="60" y="60" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="70" y="60" width="10" height="11" /></bezel>
+
+ <bezel element="cblack"><bounds x="0" y="70" width="11" height="10" /></bezel>
+ <bezel element="cwhite"><bounds x="10" y="70" width="11" height="10" /></bezel>
+ <bezel element="cblack"><bounds x="20" y="70" width="11" height="10" /></bezel>
+ <bezel element="cwhite"><bounds x="30" y="70" width="11" height="10" /></bezel>
+ <bezel element="cblack"><bounds x="40" y="70" width="11" height="10" /></bezel>
+ <bezel element="cwhite"><bounds x="50" y="70" width="11" height="10" /></bezel>
+ <bezel element="cblack"><bounds x="60" y="70" width="11" height="10" /></bezel>
+ <bezel element="cwhite"><bounds x="70" y="70" width="10" height="10" /></bezel>
+
+ <!-- leds -->
+ <repeat count="8">
+ <param name="y" start="8.3" increment="10" />
+ <param name="i2" start="7" increment="-1" />
+
+ <repeat count="8">
+ <param name="x" start="8.3" increment="10" />
+ <param name="i1" start="0" increment="1" />
+ <bezel name="~i1~.~i2~" element="led"><bounds x="~x~" y="~y~" width="1.5" height="1.5" /></bezel>
+ </repeat>
+ </repeat>
+
+ <!-- sensors, pieces -->
+ <repeat count="8">
+ <param name="y" start="0" increment="10" />
+ <param name="i" start="8" increment="-1" />
+
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x80"><bounds x="70" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+
+ <bezel name="piece_a~i~" element="piece"><bounds x="0" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_b~i~" element="piece"><bounds x="10" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_c~i~" element="piece"><bounds x="20" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_d~i~" element="piece"><bounds x="30" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_e~i~" element="piece"><bounds x="40" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_f~i~" element="piece"><bounds x="50" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_g~i~" element="piece"><bounds x="60" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_h~i~" element="piece"><bounds x="70" y="~y~" width="10" height="10" /></bezel>
+ </repeat>
+ </group>
+
+
+<!-- sb ui -->
+
+ <element name="hlub" defstate="0">
+ <rect state="1"><color red="0" green="0" blue="0" /></rect>
+ </element>
+
+ <element name="text_uit1"><text string="S.BOARD"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uit2"><text string="INTERFACE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uib1"><text string="BOARD:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uib2">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="RESET"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uib3">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="CLEAR"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uis1"><text string="SPAWN:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uih1"><text string="HAND:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uih2">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="REMOVE"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uiu1"><text string="UNDO:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uiu2a">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string=" &lt;&lt;"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uiu2b">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string=" &lt; "><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uiu2c">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string=" &gt;"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uiu2d">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string=" &gt;&gt;"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uiu3a" defstate="0">
+ <simplecounter maxstate="999" digits="1" align="2">
+ <color red="0.81" green="0.8" blue="0.79" />
+ </simplecounter>
+ </element>
+ <element name="text_uiu3b"><text string="/"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uiu3c" defstate="0">
+ <simplecounter maxstate="999" digits="1" align="1">
+ <color red="0.81" green="0.8" blue="0.79" />
+ </simplecounter>
+ </element>
+
+ <group name="sb_ui">
+ <bounds x="0" y="0" width="10" height="80" />
+ <bezel element="cblack"><bounds x="0" y="0" width="10" height="1" /></bezel>
+ <bezel element="cblack"><bounds x="0" y="7" width="10" height="1" /></bezel>
+ <bezel element="cblack"><bounds x="0" y="79" width="10" height="1" /></bezel>
+ <bezel element="text_uit1"><bounds x="0" y="2" width="10" height="2" /></bezel>
+ <bezel element="text_uit2"><bounds x="0" y="4" width="10" height="2" /></bezel>
+
+ <!-- board -->
+ <bezel element="text_uib1"><bounds x="0" y="9" width="10" height="2" /></bezel>
+ <bezel element="cwhite"><bounds x="1" y="11.5" width="8" height="2.5" /></bezel>
+ <bezel element="cwhite"><bounds x="1" y="15" width="8" height="2.5" /></bezel>
+
+ <bezel element="text_uib2"><bounds x="1.5" y="11.75" width="7" height="2" /></bezel>
+ <bezel element="text_uib3"><bounds x="1.5" y="15.25" width="7" height="2" /></bezel>
+
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x100"><bounds x="1" y="11.5" width="8" height="2.5" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x80"><bounds x="1" y="15" width="8" height="2.5" /><color alpha="0.25" /></bezel>
+
+ <!-- spawn -->
+ <bezel element="text_uis1"><bounds x="0" y="20.5" width="10" height="2" /></bezel>
+ <bezel element="cwhite"><bounds x="1" y="23" width="8" height="12" /></bezel>
+ <bezel element="cwhite"><bounds x="1" y="36" width="8" height="12" /></bezel>
+
+ <bezel name="piece_ui1" element="piece"><bounds x="1" y="23" width="4" height="4" /></bezel>
+ <bezel name="piece_ui2" element="piece"><bounds x="1" y="27" width="4" height="4" /></bezel>
+ <bezel name="piece_ui3" element="piece"><bounds x="1" y="31" width="4" height="4" /></bezel>
+ <bezel name="piece_ui4" element="piece"><bounds x="5" y="23" width="4" height="4" /></bezel>
+ <bezel name="piece_ui5" element="piece"><bounds x="5" y="27" width="4" height="4" /></bezel>
+ <bezel name="piece_ui6" element="piece"><bounds x="5" y="31" width="4" height="4" /></bezel>
+ <bezel name="piece_ui7" element="piece"><bounds x="1" y="36" width="4" height="4" /></bezel>
+ <bezel name="piece_ui8" element="piece"><bounds x="1" y="40" width="4" height="4" /></bezel>
+ <bezel name="piece_ui9" element="piece"><bounds x="1" y="44" width="4" height="4" /></bezel>
+ <bezel name="piece_ui10" element="piece"><bounds x="5" y="36" width="4" height="4" /></bezel>
+ <bezel name="piece_ui11" element="piece"><bounds x="5" y="40" width="4" height="4" /></bezel>
+ <bezel name="piece_ui12" element="piece"><bounds x="5" y="44" width="4" height="4" /></bezel>
+
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0001"><bounds x="1" y="23" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0002"><bounds x="1" y="27" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0004"><bounds x="1" y="31" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0008"><bounds x="5" y="23" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0010"><bounds x="5" y="27" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0020"><bounds x="5" y="31" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0040"><bounds x="1" y="36" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0080"><bounds x="1" y="40" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0100"><bounds x="1" y="44" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0200"><bounds x="5" y="36" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0400"><bounds x="5" y="40" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0800"><bounds x="5" y="44" width="4" height="4" /><color alpha="0.25" /></bezel>
+
+ <!-- hand -->
+ <bezel element="text_uih1"><bounds x="0" y="51" width="10" height="2" /></bezel>
+ <bezel element="cblack"><bounds x="1" y="53.5" width="8" height="6" /></bezel>
+ <bezel name="piece_ui0" element="piece"><bounds x="2" y="53.5" width="6" height="6" /></bezel>
+
+ <bezel element="cwhite"><bounds x="1" y="60.5" width="8" height="2.5" /></bezel>
+ <bezel element="text_uih2"><bounds x="1.5" y="60.75" width="7" height="2" /></bezel>
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x04"><bounds x="1" y="60.5" width="8" height="2.5" /><color alpha="0.25" /></bezel>
+
+ <!-- undo -->
+ <bezel element="text_uiu1"><bounds x="0" y="66" width="10" height="2" /></bezel>
+ <bezel element="cwhite"><bounds x="1" y="68.5" width="1.7" height="6" /></bezel>
+ <bezel element="cwhite"><bounds x="3.1" y="68.5" width="1.7" height="6" /></bezel>
+ <bezel element="cwhite"><bounds x="5.2" y="68.5" width="1.7" height="6" /></bezel>
+ <bezel element="cwhite"><bounds x="7.3" y="68.5" width="1.7" height="6" /></bezel>
+ <bezel element="text_uiu2a"><bounds x="1" y="69.5" width="1.7" height="4" /></bezel>
+ <bezel element="text_uiu2b"><bounds x="3.1" y="69.5" width="1.7" height="4" /></bezel>
+ <bezel element="text_uiu2c"><bounds x="5.2" y="69.5" width="1.7" height="4" /></bezel>
+ <bezel element="text_uiu2d"><bounds x="7.3" y="69.5" width="1.7" height="4" /></bezel>
+
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x08"><bounds x="1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x10"><bounds x="3.1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x20"><bounds x="5.2" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x40"><bounds x="7.3" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
+
+ <bezel name="count_ui0" element="text_uiu3a"><bounds x="0" y="75" width="4" height="2" /></bezel>
+ <bezel name="count_ui1" element="text_uiu3c"><bounds x="6" y="75" width="4" height="2" /></bezel>
+ <bezel element="text_uiu3b"><bounds x="4" y="75" width="2" height="2" /></bezel>
+ </group>
+
+
<!-- build screen -->
<view name="Internal Layout">
- <bounds left="-2" right="106.5" top="-2" bottom="88" />
+ <bounds left="-14" right="106.5" top="-2" bottom="88" />
+
+ <bezel element="white"><bounds x="-2" y="-2" width="90" height="90" /></bezel>
+ <bezel element="black"><bounds x="2" y="2" width="82" height="82" /></bezel>
+ <group ref="sb_board"><bounds x="3" y="3" width="80" height="80" /></group>
- <bezel element="white"><bounds x="-2.5" y="-2.5" width="90.5" height="91" /></bezel>
+ <group ref="sb_ui"><bounds x="-13" y="3" width="10" height="80" /></group>
<!-- chessboard coords -->
@@ -173,199 +457,6 @@
<bezel element="text_g"><bounds x="67" y="85" width="2" height="2" /></bezel>
<bezel element="text_h"><bounds x="77" y="85" width="2" height="2" /></bezel>
- <!-- chessboard bezel -->
-
- <bezel element="black"><bounds x="2" y="2" width="82" height="82" /></bezel>
- <bezel element="white"><bounds x="3" y="3" width="80" height="80" /></bezel>
-
- <bezel element="black"><bounds x="13" y="2.5" width="10" height="10.5" /></bezel>
- <bezel element="black"><bounds x="33" y="2.5" width="10" height="10.5" /></bezel>
- <bezel element="black"><bounds x="53" y="2.5" width="10" height="10.5" /></bezel>
- <bezel element="black"><bounds x="73" y="2.5" width="10.5" height="10.5" /></bezel>
-
- <bezel element="black"><bounds x="2.5" y="13" width="10.5" height="10" /></bezel>
- <bezel element="black"><bounds x="23" y="13" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="43" y="13" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="63" y="13" width="10" height="10" /></bezel>
-
- <bezel element="black"><bounds x="13" y="23" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="33" y="23" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="53" y="23" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="73" y="23" width="10.5" height="10" /></bezel>
-
- <bezel element="black"><bounds x="2.5" y="33" width="10.5" height="10" /></bezel>
- <bezel element="black"><bounds x="23" y="33" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="43" y="33" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="63" y="33" width="10" height="10" /></bezel>
-
- <bezel element="black"><bounds x="13" y="43" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="33" y="43" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="53" y="43" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="73" y="43" width="10.5" height="10" /></bezel>
-
- <bezel element="black"><bounds x="2.5" y="53" width="10.5" height="10" /></bezel>
- <bezel element="black"><bounds x="23" y="53" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="43" y="53" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="63" y="53" width="10" height="10" /></bezel>
-
- <bezel element="black"><bounds x="13" y="63" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="33" y="63" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="53" y="63" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="73" y="63" width="10.5" height="10" /></bezel>
-
- <bezel element="black"><bounds x="2.5" y="73" width="10.5" height="10.5" /></bezel>
- <bezel element="black"><bounds x="23" y="73" width="10" height="10.5" /></bezel>
- <bezel element="black"><bounds x="43" y="73" width="10" height="10.5" /></bezel>
- <bezel element="black"><bounds x="63" y="73" width="10" height="10.5" /></bezel>
-
- <!-- chessboard leds -->
-
- <bezel name="0.7" element="led"><bounds x="11.3" y="11.3" width="1.5" height="1.5" /></bezel>
- <bezel name="1.7" element="led"><bounds x="21.3" y="11.3" width="1.5" height="1.5" /></bezel>
- <bezel name="2.7" element="led"><bounds x="31.3" y="11.3" width="1.5" height="1.5" /></bezel>
- <bezel name="3.7" element="led"><bounds x="41.3" y="11.3" width="1.5" height="1.5" /></bezel>
- <bezel name="4.7" element="led"><bounds x="51.3" y="11.3" width="1.5" height="1.5" /></bezel>
- <bezel name="5.7" element="led"><bounds x="61.3" y="11.3" width="1.5" height="1.5" /></bezel>
- <bezel name="6.7" element="led"><bounds x="71.3" y="11.3" width="1.5" height="1.5" /></bezel>
- <bezel name="7.7" element="led"><bounds x="81.3" y="11.3" width="1.5" height="1.5" /></bezel>
-
- <bezel name="0.6" element="led"><bounds x="11.3" y="21.3" width="1.5" height="1.5" /></bezel>
- <bezel name="1.6" element="led"><bounds x="21.3" y="21.3" width="1.5" height="1.5" /></bezel>
- <bezel name="2.6" element="led"><bounds x="31.3" y="21.3" width="1.5" height="1.5" /></bezel>
- <bezel name="3.6" element="led"><bounds x="41.3" y="21.3" width="1.5" height="1.5" /></bezel>
- <bezel name="4.6" element="led"><bounds x="51.3" y="21.3" width="1.5" height="1.5" /></bezel>
- <bezel name="5.6" element="led"><bounds x="61.3" y="21.3" width="1.5" height="1.5" /></bezel>
- <bezel name="6.6" element="led"><bounds x="71.3" y="21.3" width="1.5" height="1.5" /></bezel>
- <bezel name="7.6" element="led"><bounds x="81.3" y="21.3" width="1.5" height="1.5" /></bezel>
-
- <bezel name="0.5" element="led"><bounds x="11.3" y="31.3" width="1.5" height="1.5" /></bezel>
- <bezel name="1.5" element="led"><bounds x="21.3" y="31.3" width="1.5" height="1.5" /></bezel>
- <bezel name="2.5" element="led"><bounds x="31.3" y="31.3" width="1.5" height="1.5" /></bezel>
- <bezel name="3.5" element="led"><bounds x="41.3" y="31.3" width="1.5" height="1.5" /></bezel>
- <bezel name="4.5" element="led"><bounds x="51.3" y="31.3" width="1.5" height="1.5" /></bezel>
- <bezel name="5.5" element="led"><bounds x="61.3" y="31.3" width="1.5" height="1.5" /></bezel>
- <bezel name="6.5" element="led"><bounds x="71.3" y="31.3" width="1.5" height="1.5" /></bezel>
- <bezel name="7.5" element="led"><bounds x="81.3" y="31.3" width="1.5" height="1.5" /></bezel>
-
- <bezel name="0.4" element="led"><bounds x="11.3" y="41.3" width="1.5" height="1.5" /></bezel>
- <bezel name="1.4" element="led"><bounds x="21.3" y="41.3" width="1.5" height="1.5" /></bezel>
- <bezel name="2.4" element="led"><bounds x="31.3" y="41.3" width="1.5" height="1.5" /></bezel>
- <bezel name="3.4" element="led"><bounds x="41.3" y="41.3" width="1.5" height="1.5" /></bezel>
- <bezel name="4.4" element="led"><bounds x="51.3" y="41.3" width="1.5" height="1.5" /></bezel>
- <bezel name="5.4" element="led"><bounds x="61.3" y="41.3" width="1.5" height="1.5" /></bezel>
- <bezel name="6.4" element="led"><bounds x="71.3" y="41.3" width="1.5" height="1.5" /></bezel>
- <bezel name="7.4" element="led"><bounds x="81.3" y="41.3" width="1.5" height="1.5" /></bezel>
-
- <bezel name="0.3" element="led"><bounds x="11.3" y="51.3" width="1.5" height="1.5" /></bezel>
- <bezel name="1.3" element="led"><bounds x="21.3" y="51.3" width="1.5" height="1.5" /></bezel>
- <bezel name="2.3" element="led"><bounds x="31.3" y="51.3" width="1.5" height="1.5" /></bezel>
- <bezel name="3.3" element="led"><bounds x="41.3" y="51.3" width="1.5" height="1.5" /></bezel>
- <bezel name="4.3" element="led"><bounds x="51.3" y="51.3" width="1.5" height="1.5" /></bezel>
- <bezel name="5.3" element="led"><bounds x="61.3" y="51.3" width="1.5" height="1.5" /></bezel>
- <bezel name="6.3" element="led"><bounds x="71.3" y="51.3" width="1.5" height="1.5" /></bezel>
- <bezel name="7.3" element="led"><bounds x="81.3" y="51.3" width="1.5" height="1.5" /></bezel>
-
- <bezel name="0.2" element="led"><bounds x="11.3" y="61.3" width="1.5" height="1.5" /></bezel>
- <bezel name="1.2" element="led"><bounds x="21.3" y="61.3" width="1.5" height="1.5" /></bezel>
- <bezel name="2.2" element="led"><bounds x="31.3" y="61.3" width="1.5" height="1.5" /></bezel>
- <bezel name="3.2" element="led"><bounds x="41.3" y="61.3" width="1.5" height="1.5" /></bezel>
- <bezel name="4.2" element="led"><bounds x="51.3" y="61.3" width="1.5" height="1.5" /></bezel>
- <bezel name="5.2" element="led"><bounds x="61.3" y="61.3" width="1.5" height="1.5" /></bezel>
- <bezel name="6.2" element="led"><bounds x="71.3" y="61.3" width="1.5" height="1.5" /></bezel>
- <bezel name="7.2" element="led"><bounds x="81.3" y="61.3" width="1.5" height="1.5" /></bezel>
-
- <bezel name="0.1" element="led"><bounds x="11.3" y="71.3" width="1.5" height="1.5" /></bezel>
- <bezel name="1.1" element="led"><bounds x="21.3" y="71.3" width="1.5" height="1.5" /></bezel>
- <bezel name="2.1" element="led"><bounds x="31.3" y="71.3" width="1.5" height="1.5" /></bezel>
- <bezel name="3.1" element="led"><bounds x="41.3" y="71.3" width="1.5" height="1.5" /></bezel>
- <bezel name="4.1" element="led"><bounds x="51.3" y="71.3" width="1.5" height="1.5" /></bezel>
- <bezel name="5.1" element="led"><bounds x="61.3" y="71.3" width="1.5" height="1.5" /></bezel>
- <bezel name="6.1" element="led"><bounds x="71.3" y="71.3" width="1.5" height="1.5" /></bezel>
- <bezel name="7.1" element="led"><bounds x="81.3" y="71.3" width="1.5" height="1.5" /></bezel>
-
- <bezel name="0.0" element="led"><bounds x="11.3" y="81.3" width="1.5" height="1.5" /></bezel>
- <bezel name="1.0" element="led"><bounds x="21.3" y="81.3" width="1.5" height="1.5" /></bezel>
- <bezel name="2.0" element="led"><bounds x="31.3" y="81.3" width="1.5" height="1.5" /></bezel>
- <bezel name="3.0" element="led"><bounds x="41.3" y="81.3" width="1.5" height="1.5" /></bezel>
- <bezel name="4.0" element="led"><bounds x="51.3" y="81.3" width="1.5" height="1.5" /></bezel>
- <bezel name="5.0" element="led"><bounds x="61.3" y="81.3" width="1.5" height="1.5" /></bezel>
- <bezel name="6.0" element="led"><bounds x="71.3" y="81.3" width="1.5" height="1.5" /></bezel>
- <bezel name="7.0" element="led"><bounds x="81.3" y="81.3" width="1.5" height="1.5" /></bezel>
-
- <!-- chessboard sensors -->
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x80"><bounds x="3" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x80"><bounds x="13" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x80"><bounds x="23" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x80"><bounds x="33" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x80"><bounds x="43" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x80"><bounds x="53" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x80"><bounds x="63" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x80"><bounds x="73" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x40"><bounds x="3" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x40"><bounds x="13" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x40"><bounds x="23" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x40"><bounds x="33" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x40"><bounds x="43" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x40"><bounds x="53" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x40"><bounds x="63" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x40"><bounds x="73" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x20"><bounds x="3" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x20"><bounds x="13" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x20"><bounds x="23" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x20"><bounds x="33" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x20"><bounds x="43" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x20"><bounds x="53" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x20"><bounds x="63" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x20"><bounds x="73" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x10"><bounds x="3" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x10"><bounds x="13" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x10"><bounds x="23" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x10"><bounds x="33" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x10"><bounds x="43" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x10"><bounds x="53" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x10"><bounds x="63" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x10"><bounds x="73" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x08"><bounds x="3" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x08"><bounds x="13" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x08"><bounds x="23" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x08"><bounds x="33" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x08"><bounds x="43" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x08"><bounds x="53" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x08"><bounds x="63" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x08"><bounds x="73" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x04"><bounds x="3" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x04"><bounds x="13" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x04"><bounds x="23" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x04"><bounds x="33" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x04"><bounds x="43" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x04"><bounds x="53" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x04"><bounds x="63" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x04"><bounds x="73" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x02"><bounds x="3" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x02"><bounds x="13" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x02"><bounds x="23" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x02"><bounds x="33" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x02"><bounds x="43" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x02"><bounds x="53" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x02"><bounds x="63" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x02"><bounds x="73" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x01"><bounds x="3" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x01"><bounds x="13" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x01"><bounds x="23" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x01"><bounds x="33" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x01"><bounds x="43" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x01"><bounds x="53" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x01"><bounds x="63" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x01"><bounds x="73" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
-
<!-- right side -->
<bezel element="text_l0"><bounds x="88.6" y="22.65" width="2.5" height="1.5" /></bezel>
@@ -421,17 +512,17 @@
<bezel name="9.9" element="led2"><bounds x="91" y="60.25" width="1.5" height="1.5" /></bezel>
<bezel name="9.8" element="led2"><bounds x="91" y="63.25" width="1.5" height="1.5" /></bezel>
- <bezel element="bt" inputtag="IN.9" inputmask="0x01"><bounds x="95" y="13" width="2" height="2" /></bezel>
- <bezel element="bt" inputtag="IN.9" inputmask="0x02"><bounds x="95" y="17" width="2" height="2" /></bezel>
-
- <bezel element="bt" inputtag="IN.8" inputmask="0x80"><bounds x="95" y="22.5" width="2" height="2" /></bezel>
- <bezel element="bt" inputtag="IN.8" inputmask="0x40"><bounds x="95" y="25.5" width="2" height="2" /></bezel>
- <bezel element="bt" inputtag="IN.8" inputmask="0x20"><bounds x="95" y="28.5" width="2" height="2" /></bezel>
- <bezel element="bt" inputtag="IN.8" inputmask="0x10"><bounds x="95" y="31.5" width="2" height="2" /></bezel>
- <bezel element="bt" inputtag="IN.8" inputmask="0x08"><bounds x="95" y="34.5" width="2" height="2" /></bezel>
- <bezel element="bt" inputtag="IN.8" inputmask="0x04"><bounds x="95" y="37.5" width="2" height="2" /></bezel>
- <bezel element="bt" inputtag="IN.8" inputmask="0x02"><bounds x="95" y="43" width="2" height="2" /></bezel>
- <bezel element="bt" inputtag="IN.8" inputmask="0x01"><bounds x="95" y="46" width="2" height="2" /></bezel>
+ <bezel element="bt" inputtag="IN.1" inputmask="0x01"><bounds x="95" y="13" width="2" height="2" /></bezel>
+ <bezel element="bt" inputtag="IN.1" inputmask="0x02"><bounds x="95" y="17" width="2" height="2" /></bezel>
+
+ <bezel element="bt" inputtag="IN.0" inputmask="0x80"><bounds x="95" y="22.5" width="2" height="2" /></bezel>
+ <bezel element="bt" inputtag="IN.0" inputmask="0x40"><bounds x="95" y="25.5" width="2" height="2" /></bezel>
+ <bezel element="bt" inputtag="IN.0" inputmask="0x20"><bounds x="95" y="28.5" width="2" height="2" /></bezel>
+ <bezel element="bt" inputtag="IN.0" inputmask="0x10"><bounds x="95" y="31.5" width="2" height="2" /></bezel>
+ <bezel element="bt" inputtag="IN.0" inputmask="0x08"><bounds x="95" y="34.5" width="2" height="2" /></bezel>
+ <bezel element="bt" inputtag="IN.0" inputmask="0x04"><bounds x="95" y="37.5" width="2" height="2" /></bezel>
+ <bezel element="bt" inputtag="IN.0" inputmask="0x02"><bounds x="95" y="43" width="2" height="2" /></bezel>
+ <bezel element="bt" inputtag="IN.0" inputmask="0x01"><bounds x="95" y="46" width="2" height="2" /></bezel>
</view>
</mamelayout>
diff --git a/src/mame/layout/ck_master.lay b/src/mame/layout/ck_master.lay
index 0801c5a1f9b..04e66d9674b 100644
--- a/src/mame/layout/ck_master.lay
+++ b/src/mame/layout/ck_master.lay
@@ -3,6 +3,9 @@
<!-- define elements -->
+ <element name="black"><rect><color red="0.17" green="0.15" blue="0.15" /></rect></element>
+ <element name="white"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element>
+
<element name="led" defstate="0">
<disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk>
<disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk>
@@ -12,16 +15,6 @@
<disk state="0"><color red="0.015" green="0.1" blue="0.01" /></disk>
</element>
- <element name="hl" defstate="0">
- <text string=" ">
- <bounds x="0.0" y="0.0" width="1.0" height="1.0" />
- <color red="0.0" green="0.0" blue="0.0" />
- </text>
- <disk 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" />
- </disk>
- </element>
<element name="hlb" defstate="0">
<text string=" ">
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
@@ -33,9 +26,6 @@
</rect>
</element>
- <element name="black"><rect><color red="0.17" green="0.15" blue="0.15" /></rect></element>
- <element name="white"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element>
-
<element name="text_l1">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="CHANGE POSITION"><color red="0.17" green="0.15" blue="0.15" /></text>
@@ -91,10 +81,294 @@
</element>
+<!-- sb board -->
+
+ <element name="cblack"><rect><color red="0.41" green="0.4" blue="0.39" /></rect></element>
+ <element name="cwhite"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element>
+
+ <element name="hlbb" defstate="0">
+ <text string=" "><bounds x="0" y="0" width="1" height="1" /></text>
+ <disk state="1">
+ <bounds x="0.12" y="0.12" width="0.76" height="0.76" />
+ <color red="0" green="0" blue="0" />
+ </disk>
+ </element>
+
+ <element name="piece" defstate="0">
+ <image file="chess/wp.png" state="1"/>
+ <image file="chess/wn.png" state="2"/>
+ <image file="chess/wb.png" state="3"/>
+ <image file="chess/wr.png" state="4"/>
+ <image file="chess/wq.png" state="5"/>
+ <image file="chess/wk.png" state="6"/>
+
+ <image file="chess/bp.png" state="7"/>
+ <image file="chess/bn.png" state="8"/>
+ <image file="chess/bb.png" state="9"/>
+ <image file="chess/br.png" state="10"/>
+ <image file="chess/bq.png" state="11"/>
+ <image file="chess/bk.png" state="12"/>
+
+ <!-- selected pieces -->
+ <image file="chess/wp.png" state="13"><color alpha="0.5" /></image>
+ <image file="chess/wn.png" state="14"><color alpha="0.5" /></image>
+ <image file="chess/wb.png" state="15"><color alpha="0.5" /></image>
+ <image file="chess/wr.png" state="16"><color alpha="0.5" /></image>
+ <image file="chess/wq.png" state="17"><color alpha="0.5" /></image>
+ <image file="chess/wk.png" state="18"><color alpha="0.5" /></image>
+
+ <image file="chess/bp.png" state="19"><color alpha="0.5" /></image>
+ <image file="chess/bn.png" state="20"><color alpha="0.5" /></image>
+ <image file="chess/bb.png" state="21"><color alpha="0.5" /></image>
+ <image file="chess/br.png" state="22"><color alpha="0.5" /></image>
+ <image file="chess/bq.png" state="23"><color alpha="0.5" /></image>
+ <image file="chess/bk.png" state="24"><color alpha="0.5" /></image>
+ </element>
+
+ <group name="sb_board">
+ <bounds x="0" y="0" width="80" height="80" />
+
+ <!-- squares (avoid seams) -->
+ <bezel element="cwhite"><bounds x="0" y="0" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="10" y="0" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="20" y="0" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="30" y="0" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="40" y="0" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="50" y="0" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="60" y="0" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="70" y="0" width="10" height="11" /></bezel>
+
+ <bezel element="cblack"><bounds x="0" y="10" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="10" y="10" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="20" y="10" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="30" y="10" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="40" y="10" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="50" y="10" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="60" y="10" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="70" y="10" width="10" height="11" /></bezel>
+
+ <bezel element="cwhite"><bounds x="0" y="20" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="10" y="20" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="20" y="20" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="30" y="20" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="40" y="20" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="50" y="20" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="60" y="20" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="70" y="20" width="10" height="11" /></bezel>
+
+ <bezel element="cblack"><bounds x="0" y="30" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="10" y="30" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="20" y="30" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="30" y="30" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="40" y="30" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="50" y="30" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="60" y="30" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="70" y="30" width="10" height="11" /></bezel>
+
+ <bezel element="cwhite"><bounds x="0" y="40" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="10" y="40" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="20" y="40" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="30" y="40" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="40" y="40" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="50" y="40" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="60" y="40" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="70" y="40" width="10" height="11" /></bezel>
+
+ <bezel element="cblack"><bounds x="0" y="50" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="10" y="50" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="20" y="50" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="30" y="50" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="40" y="50" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="50" y="50" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="60" y="50" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="70" y="50" width="10" height="11" /></bezel>
+
+ <bezel element="cwhite"><bounds x="0" y="60" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="10" y="60" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="20" y="60" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="30" y="60" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="40" y="60" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="50" y="60" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="60" y="60" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="70" y="60" width="10" height="11" /></bezel>
+
+ <bezel element="cblack"><bounds x="0" y="70" width="11" height="10" /></bezel>
+ <bezel element="cwhite"><bounds x="10" y="70" width="11" height="10" /></bezel>
+ <bezel element="cblack"><bounds x="20" y="70" width="11" height="10" /></bezel>
+ <bezel element="cwhite"><bounds x="30" y="70" width="11" height="10" /></bezel>
+ <bezel element="cblack"><bounds x="40" y="70" width="11" height="10" /></bezel>
+ <bezel element="cwhite"><bounds x="50" y="70" width="11" height="10" /></bezel>
+ <bezel element="cblack"><bounds x="60" y="70" width="11" height="10" /></bezel>
+ <bezel element="cwhite"><bounds x="70" y="70" width="10" height="10" /></bezel>
+
+ <!-- sensors, pieces -->
+ <repeat count="8">
+ <param name="y" start="0" increment="10" />
+ <param name="i" start="8" increment="-1" />
+
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x80"><bounds x="70" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+
+ <bezel name="piece_a~i~" element="piece"><bounds x="0" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_b~i~" element="piece"><bounds x="10" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_c~i~" element="piece"><bounds x="20" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_d~i~" element="piece"><bounds x="30" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_e~i~" element="piece"><bounds x="40" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_f~i~" element="piece"><bounds x="50" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_g~i~" element="piece"><bounds x="60" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_h~i~" element="piece"><bounds x="70" y="~y~" width="10" height="10" /></bezel>
+ </repeat>
+ </group>
+
+
+<!-- sb ui -->
+
+ <element name="hlub" defstate="0">
+ <rect state="1"><color red="0" green="0" blue="0" /></rect>
+ </element>
+
+ <element name="text_uit1"><text string="S.BOARD"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uit2"><text string="INTERFACE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uib1"><text string="BOARD:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uib2">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="RESET"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uib3">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="CLEAR"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uis1"><text string="SPAWN:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uih1"><text string="HAND:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uih2">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="REMOVE"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uiu1"><text string="UNDO:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uiu2a">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string=" &lt;&lt;"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uiu2b">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string=" &lt; "><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uiu2c">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string=" &gt;"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uiu2d">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string=" &gt;&gt;"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uiu3a" defstate="0">
+ <simplecounter maxstate="999" digits="1" align="2">
+ <color red="0.81" green="0.8" blue="0.79" />
+ </simplecounter>
+ </element>
+ <element name="text_uiu3b"><text string="/"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uiu3c" defstate="0">
+ <simplecounter maxstate="999" digits="1" align="1">
+ <color red="0.81" green="0.8" blue="0.79" />
+ </simplecounter>
+ </element>
+
+ <group name="sb_ui">
+ <bounds x="0" y="0" width="10" height="80" />
+ <bezel element="cblack"><bounds x="0" y="0" width="10" height="1" /></bezel>
+ <bezel element="cblack"><bounds x="0" y="7" width="10" height="1" /></bezel>
+ <bezel element="cblack"><bounds x="0" y="79" width="10" height="1" /></bezel>
+ <bezel element="text_uit1"><bounds x="0" y="2" width="10" height="2" /></bezel>
+ <bezel element="text_uit2"><bounds x="0" y="4" width="10" height="2" /></bezel>
+
+ <!-- board -->
+ <bezel element="text_uib1"><bounds x="0" y="9" width="10" height="2" /></bezel>
+ <bezel element="cwhite"><bounds x="1" y="11.5" width="8" height="2.5" /></bezel>
+ <bezel element="cwhite"><bounds x="1" y="15" width="8" height="2.5" /></bezel>
+
+ <bezel element="text_uib2"><bounds x="1.5" y="11.75" width="7" height="2" /></bezel>
+ <bezel element="text_uib3"><bounds x="1.5" y="15.25" width="7" height="2" /></bezel>
+
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x100"><bounds x="1" y="11.5" width="8" height="2.5" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x80"><bounds x="1" y="15" width="8" height="2.5" /><color alpha="0.25" /></bezel>
+
+ <!-- spawn -->
+ <bezel element="text_uis1"><bounds x="0" y="20.5" width="10" height="2" /></bezel>
+ <bezel element="cwhite"><bounds x="1" y="23" width="8" height="12" /></bezel>
+ <bezel element="cwhite"><bounds x="1" y="36" width="8" height="12" /></bezel>
+
+ <bezel name="piece_ui1" element="piece"><bounds x="1" y="23" width="4" height="4" /></bezel>
+ <bezel name="piece_ui2" element="piece"><bounds x="1" y="27" width="4" height="4" /></bezel>
+ <bezel name="piece_ui3" element="piece"><bounds x="1" y="31" width="4" height="4" /></bezel>
+ <bezel name="piece_ui4" element="piece"><bounds x="5" y="23" width="4" height="4" /></bezel>
+ <bezel name="piece_ui5" element="piece"><bounds x="5" y="27" width="4" height="4" /></bezel>
+ <bezel name="piece_ui6" element="piece"><bounds x="5" y="31" width="4" height="4" /></bezel>
+ <bezel name="piece_ui7" element="piece"><bounds x="1" y="36" width="4" height="4" /></bezel>
+ <bezel name="piece_ui8" element="piece"><bounds x="1" y="40" width="4" height="4" /></bezel>
+ <bezel name="piece_ui9" element="piece"><bounds x="1" y="44" width="4" height="4" /></bezel>
+ <bezel name="piece_ui10" element="piece"><bounds x="5" y="36" width="4" height="4" /></bezel>
+ <bezel name="piece_ui11" element="piece"><bounds x="5" y="40" width="4" height="4" /></bezel>
+ <bezel name="piece_ui12" element="piece"><bounds x="5" y="44" width="4" height="4" /></bezel>
+
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0001"><bounds x="1" y="23" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0002"><bounds x="1" y="27" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0004"><bounds x="1" y="31" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0008"><bounds x="5" y="23" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0010"><bounds x="5" y="27" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0020"><bounds x="5" y="31" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0040"><bounds x="1" y="36" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0080"><bounds x="1" y="40" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0100"><bounds x="1" y="44" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0200"><bounds x="5" y="36" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0400"><bounds x="5" y="40" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0800"><bounds x="5" y="44" width="4" height="4" /><color alpha="0.25" /></bezel>
+
+ <!-- hand -->
+ <bezel element="text_uih1"><bounds x="0" y="51" width="10" height="2" /></bezel>
+ <bezel element="cblack"><bounds x="1" y="53.5" width="8" height="6" /></bezel>
+ <bezel name="piece_ui0" element="piece"><bounds x="2" y="53.5" width="6" height="6" /></bezel>
+
+ <bezel element="cwhite"><bounds x="1" y="60.5" width="8" height="2.5" /></bezel>
+ <bezel element="text_uih2"><bounds x="1.5" y="60.75" width="7" height="2" /></bezel>
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x04"><bounds x="1" y="60.5" width="8" height="2.5" /><color alpha="0.25" /></bezel>
+
+ <!-- undo -->
+ <bezel element="text_uiu1"><bounds x="0" y="66" width="10" height="2" /></bezel>
+ <bezel element="cwhite"><bounds x="1" y="68.5" width="1.7" height="6" /></bezel>
+ <bezel element="cwhite"><bounds x="3.1" y="68.5" width="1.7" height="6" /></bezel>
+ <bezel element="cwhite"><bounds x="5.2" y="68.5" width="1.7" height="6" /></bezel>
+ <bezel element="cwhite"><bounds x="7.3" y="68.5" width="1.7" height="6" /></bezel>
+ <bezel element="text_uiu2a"><bounds x="1" y="69.5" width="1.7" height="4" /></bezel>
+ <bezel element="text_uiu2b"><bounds x="3.1" y="69.5" width="1.7" height="4" /></bezel>
+ <bezel element="text_uiu2c"><bounds x="5.2" y="69.5" width="1.7" height="4" /></bezel>
+ <bezel element="text_uiu2d"><bounds x="7.3" y="69.5" width="1.7" height="4" /></bezel>
+
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x08"><bounds x="1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x10"><bounds x="3.1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x20"><bounds x="5.2" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x40"><bounds x="7.3" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
+
+ <bezel name="count_ui0" element="text_uiu3a"><bounds x="0" y="75" width="4" height="2" /></bezel>
+ <bezel name="count_ui1" element="text_uiu3c"><bounds x="6" y="75" width="4" height="2" /></bezel>
+ <bezel element="text_uiu3b"><bounds x="4" y="75" width="2" height="2" /></bezel>
+ </group>
+
+
<!-- build screen -->
<view name="Internal Layout">
- <bounds left="-2.5" right="106.5" top="-2.5" bottom="88.5" />
+ <bounds left="-14" right="106.5" top="-2.5" bottom="88.5" />
+
+ <bezel element="black"><bounds x="2" y="2" width="82" height="82" /></bezel>
+ <group ref="sb_board"><bounds x="3" y="3" width="80" height="80" /></group>
+
+ <group ref="sb_ui"><bounds x="-13" y="3" width="10" height="80" /></group>
<!-- chessboard leds -->
@@ -136,125 +410,6 @@
<bezel name="8.1" element="ledg"><bounds x="85.5" y="3.5" width="1.5" height="1.5" /></bezel>
- <!-- chessboard bezel -->
-
- <bezel element="black"><bounds x="2" y="2" width="82" height="82" /></bezel>
- <bezel element="white"><bounds x="3" y="3" width="80" height="80" /></bezel>
-
- <bezel element="black"><bounds x="13" y="2.5" width="10" height="10.5" /></bezel>
- <bezel element="black"><bounds x="33" y="2.5" width="10" height="10.5" /></bezel>
- <bezel element="black"><bounds x="53" y="2.5" width="10" height="10.5" /></bezel>
- <bezel element="black"><bounds x="73" y="2.5" width="10.5" height="10.5" /></bezel>
-
- <bezel element="black"><bounds x="2.5" y="13" width="10.5" height="10" /></bezel>
- <bezel element="black"><bounds x="23" y="13" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="43" y="13" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="63" y="13" width="10" height="10" /></bezel>
-
- <bezel element="black"><bounds x="13" y="23" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="33" y="23" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="53" y="23" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="73" y="23" width="10.5" height="10" /></bezel>
-
- <bezel element="black"><bounds x="2.5" y="33" width="10.5" height="10" /></bezel>
- <bezel element="black"><bounds x="23" y="33" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="43" y="33" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="63" y="33" width="10" height="10" /></bezel>
-
- <bezel element="black"><bounds x="13" y="43" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="33" y="43" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="53" y="43" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="73" y="43" width="10.5" height="10" /></bezel>
-
- <bezel element="black"><bounds x="2.5" y="53" width="10.5" height="10" /></bezel>
- <bezel element="black"><bounds x="23" y="53" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="43" y="53" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="63" y="53" width="10" height="10" /></bezel>
-
- <bezel element="black"><bounds x="13" y="63" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="33" y="63" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="53" y="63" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="73" y="63" width="10.5" height="10" /></bezel>
-
- <bezel element="black"><bounds x="2.5" y="73" width="10.5" height="10.5" /></bezel>
- <bezel element="black"><bounds x="23" y="73" width="10" height="10.5" /></bezel>
- <bezel element="black"><bounds x="43" y="73" width="10" height="10.5" /></bezel>
- <bezel element="black"><bounds x="63" y="73" width="10" height="10.5" /></bezel>
-
- <!-- chessboard sensors -->
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x01"><bounds x="3" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x01"><bounds x="13" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x01"><bounds x="23" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x01"><bounds x="33" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x01"><bounds x="43" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x01"><bounds x="53" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x01"><bounds x="63" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x01"><bounds x="73" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x02"><bounds x="3" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x02"><bounds x="13" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x02"><bounds x="23" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x02"><bounds x="33" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x02"><bounds x="43" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x02"><bounds x="53" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x02"><bounds x="63" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x02"><bounds x="73" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x04"><bounds x="3" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x04"><bounds x="13" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x04"><bounds x="23" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x04"><bounds x="33" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x04"><bounds x="43" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x04"><bounds x="53" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x04"><bounds x="63" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x04"><bounds x="73" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x08"><bounds x="3" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x08"><bounds x="13" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x08"><bounds x="23" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x08"><bounds x="33" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x08"><bounds x="43" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x08"><bounds x="53" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x08"><bounds x="63" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x08"><bounds x="73" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x10"><bounds x="3" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x10"><bounds x="13" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x10"><bounds x="23" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x10"><bounds x="33" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x10"><bounds x="43" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x10"><bounds x="53" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x10"><bounds x="63" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x10"><bounds x="73" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x20"><bounds x="3" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x20"><bounds x="13" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x20"><bounds x="23" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x20"><bounds x="33" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x20"><bounds x="43" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x20"><bounds x="53" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x20"><bounds x="63" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x20"><bounds x="73" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x40"><bounds x="3" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x40"><bounds x="13" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x40"><bounds x="23" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x40"><bounds x="33" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x40"><bounds x="43" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x40"><bounds x="53" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x40"><bounds x="63" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x40"><bounds x="73" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x80"><bounds x="3" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x80"><bounds x="13" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x80"><bounds x="23" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x80"><bounds x="33" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x80"><bounds x="43" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x80"><bounds x="53" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x80"><bounds x="63" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x80"><bounds x="73" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
-
<!-- right side -->
<bezel element="white"><bounds x="88.5" y="-2.5" width="18" height="91" /></bezel>
@@ -295,21 +450,21 @@
<bezel element="white"><bounds x="96.5" y="58" width="2.0" height="2.0" /></bezel>
<bezel element="black"><bounds x="96.25" y="63.083" width="2.5" height="2.5" /></bezel>
- <bezel element="hlb" inputtag="IN.8" inputmask="0x01"><bounds x="91" y="3.166" width="13" height="5" /><color alpha="0.4" /></bezel>
- <bezel element="hlb" inputtag="IN.8" inputmask="0x02"><bounds x="91" y="8.500" width="13" height="5" /><color alpha="0.4" /></bezel>
- <bezel element="hlb" inputtag="IN.8" inputmask="0x04"><bounds x="91" y="13.833" width="13" height="5" /><color alpha="0.4" /></bezel>
- <bezel element="hlb" inputtag="IN.8" inputmask="0x08"><bounds x="91" y="19.166" width="13" height="5" /><color alpha="0.4" /></bezel>
- <bezel element="hlb" inputtag="IN.8" inputmask="0x10"><bounds x="91" y="24.500" width="13" height="5" /><color alpha="0.4" /></bezel>
- <bezel element="hlb" inputtag="IN.8" inputmask="0x20"><bounds x="91" y="29.833" width="13" height="5" /><color alpha="0.4" /></bezel>
- <bezel element="hlb" inputtag="IN.8" inputmask="0x40"><bounds x="91" y="35.166" width="13" height="5" /><color alpha="0.4" /></bezel>
- <bezel element="hlb" inputtag="IN.9" inputmask="0x01"><bounds x="91" y="40.500" width="13" height="5" /><color alpha="0.4" /></bezel>
- <bezel element="hlb" inputtag="IN.9" inputmask="0x02"><bounds x="91" y="45.833" width="13" height="5" /><color alpha="0.4" /></bezel>
- <bezel element="hlb" inputtag="IN.9" inputmask="0x04"><bounds x="91" y="51.166" width="13" height="5" /><color alpha="0.4" /></bezel>
- <bezel element="hlb" inputtag="IN.9" inputmask="0x08"><bounds x="91" y="56.500" width="13" height="5" /><color alpha="0.4" /></bezel>
- <bezel element="hlb" inputtag="IN.9" inputmask="0x10"><bounds x="91" y="61.833" width="13" height="5" /><color alpha="0.4" /></bezel>
- <bezel element="hlb" inputtag="IN.9" inputmask="0x20"><bounds x="91" y="67.166" width="13" height="5" /><color alpha="0.4" /></bezel>
- <bezel element="hlb" inputtag="IN.9" inputmask="0x40"><bounds x="91" y="72.500" width="13" height="5" /><color alpha="0.4" /></bezel>
- <bezel element="hlb" inputtag="IN.9" inputmask="0x80"><bounds x="91" y="77.833" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.0" inputmask="0x01"><bounds x="91" y="3.166" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.0" inputmask="0x02"><bounds x="91" y="8.500" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.0" inputmask="0x04"><bounds x="91" y="13.833" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.0" inputmask="0x08"><bounds x="91" y="19.166" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.0" inputmask="0x10"><bounds x="91" y="24.500" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.0" inputmask="0x20"><bounds x="91" y="29.833" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.0" inputmask="0x40"><bounds x="91" y="35.166" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.1" inputmask="0x01"><bounds x="91" y="40.500" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.1" inputmask="0x02"><bounds x="91" y="45.833" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.1" inputmask="0x04"><bounds x="91" y="51.166" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.1" inputmask="0x08"><bounds x="91" y="56.500" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.1" inputmask="0x10"><bounds x="91" y="61.833" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.1" inputmask="0x20"><bounds x="91" y="67.166" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.1" inputmask="0x40"><bounds x="91" y="72.500" width="13" height="5" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.1" inputmask="0x80"><bounds x="91" y="77.833" width="13" height="5" /><color alpha="0.4" /></bezel>
</view>
</mamelayout>
diff --git a/src/mame/layout/cxg_ch2001.lay b/src/mame/layout/cxg_ch2001.lay
index d1767a91f7a..6d7fc358d30 100644
--- a/src/mame/layout/cxg_ch2001.lay
+++ b/src/mame/layout/cxg_ch2001.lay
@@ -3,7 +3,11 @@
<!-- define elements -->
- <element name="static_black"><rect><color red="0" green="0" blue="0" /></rect></element>
+ <element name="blackb"><rect><color red="0" green="0" blue="0" /></rect></element>
+ <element name="black"><rect><color red="0.17" green="0.15" blue="0.15" /></rect></element>
+ <element name="white"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element>
+ <element name="disk_black"><disk><color red="0.17" green="0.15" blue="0.15" /></disk></element>
+ <element name="disk_white"><disk><color red="0.81" green="0.8" blue="0.79" /></disk></element>
<element name="led" defstate="0">
<disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk>
@@ -14,16 +18,6 @@
<disk state="0"><color red="0.14" green="0.014" blue="0.02" /></disk>
</element>
- <element name="hl" defstate="0">
- <text string=" ">
- <bounds x="0.0" y="0.0" width="1.0" height="1.0" />
- <color red="0.0" green="0.0" blue="0.0" />
- </text>
- <disk 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" />
- </disk>
- </element>
<element name="butd" defstate="0">
<disk state="0"><color red="0.17" green="0.15" blue="0.15" /></disk>
<disk state="1"><color red="0.34" green="0.3" blue="0.3" /></disk>
@@ -33,11 +27,6 @@
<rect state="1"><color red="0.34" green="0.3" blue="0.3" /></rect>
</element>
- <element name="black"><rect><color red="0.17" green="0.15" blue="0.15" /></rect></element>
- <element name="white"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element>
- <element name="disk_black"><disk><color red="0.17" green="0.15" blue="0.15" /></disk></element>
- <element name="disk_white"><disk><color red="0.81" green="0.8" blue="0.79" /></disk></element>
-
<element name="text_1">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="1"><color red="0.01" green="0.01" blue="0.01" /></text>
@@ -148,12 +137,307 @@
<element name="text_b8"><text string="Move"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+<!-- sb board -->
+
+ <element name="cblack"><rect><color red="0.5" green="0.22" blue="0.3" /></rect></element>
+ <element name="cwhite"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element>
+
+ <element name="hlbb" defstate="0">
+ <text string=" "><bounds x="0" y="0" width="1" height="1" /></text>
+ <disk state="1">
+ <bounds x="0.12" y="0.12" width="0.76" height="0.76" />
+ <color red="0" green="0" blue="0" />
+ </disk>
+ </element>
+
+ <element name="piece" defstate="0">
+ <image file="chess/wp.png" state="1"/>
+ <image file="chess/wn.png" state="2"/>
+ <image file="chess/wb.png" state="3"/>
+ <image file="chess/wr.png" state="4"/>
+ <image file="chess/wq.png" state="5"/>
+ <image file="chess/wk.png" state="6"/>
+
+ <image file="chess/bp.png" state="7"/>
+ <image file="chess/bn.png" state="8"/>
+ <image file="chess/bb.png" state="9"/>
+ <image file="chess/br.png" state="10"/>
+ <image file="chess/bq.png" state="11"/>
+ <image file="chess/bk.png" state="12"/>
+
+ <!-- selected pieces -->
+ <image file="chess/wp.png" state="13"><color alpha="0.5" /></image>
+ <image file="chess/wn.png" state="14"><color alpha="0.5" /></image>
+ <image file="chess/wb.png" state="15"><color alpha="0.5" /></image>
+ <image file="chess/wr.png" state="16"><color alpha="0.5" /></image>
+ <image file="chess/wq.png" state="17"><color alpha="0.5" /></image>
+ <image file="chess/wk.png" state="18"><color alpha="0.5" /></image>
+
+ <image file="chess/bp.png" state="19"><color alpha="0.5" /></image>
+ <image file="chess/bn.png" state="20"><color alpha="0.5" /></image>
+ <image file="chess/bb.png" state="21"><color alpha="0.5" /></image>
+ <image file="chess/br.png" state="22"><color alpha="0.5" /></image>
+ <image file="chess/bq.png" state="23"><color alpha="0.5" /></image>
+ <image file="chess/bk.png" state="24"><color alpha="0.5" /></image>
+ </element>
+
+ <group name="sb_board">
+ <bounds x="0" y="0" width="80" height="80" />
+
+ <!-- squares (avoid seams) -->
+ <bezel element="cwhite"><bounds x="0" y="0" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="10" y="0" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="20" y="0" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="30" y="0" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="40" y="0" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="50" y="0" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="60" y="0" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="70" y="0" width="10" height="11" /></bezel>
+
+ <bezel element="cblack"><bounds x="0" y="10" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="10" y="10" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="20" y="10" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="30" y="10" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="40" y="10" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="50" y="10" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="60" y="10" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="70" y="10" width="10" height="11" /></bezel>
+
+ <bezel element="cwhite"><bounds x="0" y="20" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="10" y="20" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="20" y="20" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="30" y="20" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="40" y="20" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="50" y="20" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="60" y="20" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="70" y="20" width="10" height="11" /></bezel>
+
+ <bezel element="cblack"><bounds x="0" y="30" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="10" y="30" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="20" y="30" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="30" y="30" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="40" y="30" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="50" y="30" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="60" y="30" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="70" y="30" width="10" height="11" /></bezel>
+
+ <bezel element="cwhite"><bounds x="0" y="40" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="10" y="40" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="20" y="40" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="30" y="40" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="40" y="40" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="50" y="40" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="60" y="40" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="70" y="40" width="10" height="11" /></bezel>
+
+ <bezel element="cblack"><bounds x="0" y="50" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="10" y="50" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="20" y="50" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="30" y="50" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="40" y="50" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="50" y="50" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="60" y="50" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="70" y="50" width="10" height="11" /></bezel>
+
+ <bezel element="cwhite"><bounds x="0" y="60" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="10" y="60" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="20" y="60" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="30" y="60" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="40" y="60" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="50" y="60" width="11" height="11" /></bezel>
+ <bezel element="cwhite"><bounds x="60" y="60" width="11" height="11" /></bezel>
+ <bezel element="cblack"><bounds x="70" y="60" width="10" height="11" /></bezel>
+
+ <bezel element="cblack"><bounds x="0" y="70" width="11" height="10" /></bezel>
+ <bezel element="cwhite"><bounds x="10" y="70" width="11" height="10" /></bezel>
+ <bezel element="cblack"><bounds x="20" y="70" width="11" height="10" /></bezel>
+ <bezel element="cwhite"><bounds x="30" y="70" width="11" height="10" /></bezel>
+ <bezel element="cblack"><bounds x="40" y="70" width="11" height="10" /></bezel>
+ <bezel element="cwhite"><bounds x="50" y="70" width="11" height="10" /></bezel>
+ <bezel element="cblack"><bounds x="60" y="70" width="11" height="10" /></bezel>
+ <bezel element="cwhite"><bounds x="70" y="70" width="10" height="10" /></bezel>
+
+ <!-- leds -->
+ <repeat count="8">
+ <param name="y" start="8.3" increment="10" />
+ <param name="i2" start="0" increment="1" />
+
+ <repeat count="8">
+ <param name="x" start="8.3" increment="10" />
+ <param name="i1" start="0" increment="1" />
+ <bezel name="~i1~.~i2~" element="led"><bounds x="~x~" y="~y~" width="1.5" height="1.5" /></bezel>
+ </repeat>
+ </repeat>
+
+ <!-- sensors, pieces -->
+ <repeat count="8">
+ <param name="y" start="0" increment="10" />
+ <param name="i" start="8" increment="-1" />
+
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+ <bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x80"><bounds x="70" y="~y~" width="10" height="10" /><color alpha="0.1" /></bezel>
+
+ <bezel name="piece_a~i~" element="piece"><bounds x="0" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_b~i~" element="piece"><bounds x="10" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_c~i~" element="piece"><bounds x="20" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_d~i~" element="piece"><bounds x="30" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_e~i~" element="piece"><bounds x="40" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_f~i~" element="piece"><bounds x="50" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_g~i~" element="piece"><bounds x="60" y="~y~" width="10" height="10" /></bezel>
+ <bezel name="piece_h~i~" element="piece"><bounds x="70" y="~y~" width="10" height="10" /></bezel>
+ </repeat>
+ </group>
+
+
+<!-- sb ui -->
+
+ <element name="hlub" defstate="0">
+ <rect state="1"><color red="0" green="0" blue="0" /></rect>
+ </element>
+
+ <element name="text_uit1"><text string="S.BOARD"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uit2"><text string="INTERFACE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uib1"><text string="BOARD:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uib2">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="RESET"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uib3">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="CLEAR"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uis1"><text string="SPAWN:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uih1"><text string="HAND:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uih2">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="REMOVE"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uiu1"><text string="UNDO:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uiu2a">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string=" &lt;&lt;"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uiu2b">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string=" &lt; "><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uiu2c">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string=" &gt;"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uiu2d">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string=" &gt;&gt;"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_uiu3a" defstate="0">
+ <simplecounter maxstate="999" digits="1" align="2">
+ <color red="0.81" green="0.8" blue="0.79" />
+ </simplecounter>
+ </element>
+ <element name="text_uiu3b"><text string="/"><color red="0.81" green="0.8" blue="0.79" /></text></element>
+ <element name="text_uiu3c" defstate="0">
+ <simplecounter maxstate="999" digits="1" align="1">
+ <color red="0.81" green="0.8" blue="0.79" />
+ </simplecounter>
+ </element>
+
+ <group name="sb_ui">
+ <bounds x="0" y="0" width="10" height="80" />
+ <bezel element="cblack"><bounds x="0" y="0" width="10" height="1" /></bezel>
+ <bezel element="cblack"><bounds x="0" y="7" width="10" height="1" /></bezel>
+ <bezel element="cblack"><bounds x="0" y="79" width="10" height="1" /></bezel>
+ <bezel element="text_uit1"><bounds x="0" y="2" width="10" height="2" /></bezel>
+ <bezel element="text_uit2"><bounds x="0" y="4" width="10" height="2" /></bezel>
+
+ <!-- board -->
+ <bezel element="text_uib1"><bounds x="0" y="9" width="10" height="2" /></bezel>
+ <bezel element="cwhite"><bounds x="1" y="11.5" width="8" height="2.5" /></bezel>
+ <bezel element="cwhite"><bounds x="1" y="15" width="8" height="2.5" /></bezel>
+
+ <bezel element="text_uib2"><bounds x="1.5" y="11.75" width="7" height="2" /></bezel>
+ <bezel element="text_uib3"><bounds x="1.5" y="15.25" width="7" height="2" /></bezel>
+
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x100"><bounds x="1" y="11.5" width="8" height="2.5" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x80"><bounds x="1" y="15" width="8" height="2.5" /><color alpha="0.25" /></bezel>
+
+ <!-- spawn -->
+ <bezel element="text_uis1"><bounds x="0" y="20.5" width="10" height="2" /></bezel>
+ <bezel element="cwhite"><bounds x="1" y="23" width="8" height="12" /></bezel>
+ <bezel element="cwhite"><bounds x="1" y="36" width="8" height="12" /></bezel>
+
+ <bezel name="piece_ui1" element="piece"><bounds x="1" y="23" width="4" height="4" /></bezel>
+ <bezel name="piece_ui2" element="piece"><bounds x="1" y="27" width="4" height="4" /></bezel>
+ <bezel name="piece_ui3" element="piece"><bounds x="1" y="31" width="4" height="4" /></bezel>
+ <bezel name="piece_ui4" element="piece"><bounds x="5" y="23" width="4" height="4" /></bezel>
+ <bezel name="piece_ui5" element="piece"><bounds x="5" y="27" width="4" height="4" /></bezel>
+ <bezel name="piece_ui6" element="piece"><bounds x="5" y="31" width="4" height="4" /></bezel>
+ <bezel name="piece_ui7" element="piece"><bounds x="1" y="36" width="4" height="4" /></bezel>
+ <bezel name="piece_ui8" element="piece"><bounds x="1" y="40" width="4" height="4" /></bezel>
+ <bezel name="piece_ui9" element="piece"><bounds x="1" y="44" width="4" height="4" /></bezel>
+ <bezel name="piece_ui10" element="piece"><bounds x="5" y="36" width="4" height="4" /></bezel>
+ <bezel name="piece_ui11" element="piece"><bounds x="5" y="40" width="4" height="4" /></bezel>
+ <bezel name="piece_ui12" element="piece"><bounds x="5" y="44" width="4" height="4" /></bezel>
+
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0001"><bounds x="1" y="23" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0002"><bounds x="1" y="27" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0004"><bounds x="1" y="31" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0008"><bounds x="5" y="23" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0010"><bounds x="5" y="27" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0020"><bounds x="5" y="31" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0040"><bounds x="1" y="36" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0080"><bounds x="1" y="40" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0100"><bounds x="1" y="44" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0200"><bounds x="5" y="36" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0400"><bounds x="5" y="40" width="4" height="4" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0800"><bounds x="5" y="44" width="4" height="4" /><color alpha="0.25" /></bezel>
+
+ <!-- hand -->
+ <bezel element="text_uih1"><bounds x="0" y="51" width="10" height="2" /></bezel>
+ <bezel element="cblack"><bounds x="1" y="53.5" width="8" height="6" /></bezel>
+ <bezel name="piece_ui0" element="piece"><bounds x="2" y="53.5" width="6" height="6" /></bezel>
+
+ <bezel element="cwhite"><bounds x="1" y="60.5" width="8" height="2.5" /></bezel>
+ <bezel element="text_uih2"><bounds x="1.5" y="60.75" width="7" height="2" /></bezel>
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x04"><bounds x="1" y="60.5" width="8" height="2.5" /><color alpha="0.25" /></bezel>
+
+ <!-- undo -->
+ <bezel element="text_uiu1"><bounds x="0" y="66" width="10" height="2" /></bezel>
+ <bezel element="cwhite"><bounds x="1" y="68.5" width="1.7" height="6" /></bezel>
+ <bezel element="cwhite"><bounds x="3.1" y="68.5" width="1.7" height="6" /></bezel>
+ <bezel element="cwhite"><bounds x="5.2" y="68.5" width="1.7" height="6" /></bezel>
+ <bezel element="cwhite"><bounds x="7.3" y="68.5" width="1.7" height="6" /></bezel>
+ <bezel element="text_uiu2a"><bounds x="1" y="69.5" width="1.7" height="4" /></bezel>
+ <bezel element="text_uiu2b"><bounds x="3.1" y="69.5" width="1.7" height="4" /></bezel>
+ <bezel element="text_uiu2c"><bounds x="5.2" y="69.5" width="1.7" height="4" /></bezel>
+ <bezel element="text_uiu2d"><bounds x="7.3" y="69.5" width="1.7" height="4" /></bezel>
+
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x08"><bounds x="1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x10"><bounds x="3.1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x20"><bounds x="5.2" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
+ <bezel element="hlub" inputtag="board:UI" inputmask="0x40"><bounds x="7.3" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
+
+ <bezel name="count_ui0" element="text_uiu3a"><bounds x="0" y="75" width="4" height="2" /></bezel>
+ <bezel name="count_ui1" element="text_uiu3c"><bounds x="6" y="75" width="4" height="2" /></bezel>
+ <bezel element="text_uiu3b"><bounds x="4" y="75" width="2" height="2" /></bezel>
+ </group>
+
+
<!-- build screen -->
<view name="Internal Layout">
- <bounds left="-2" right="88" top="-2" bottom="108.8" />
+ <bounds left="-14" right="88" top="-2" bottom="108.8" />
+
+ <bezel element="white"><bounds x="-2" y="-2" width="90" height="90" /></bezel>
+ <bezel element="black"><bounds x="2" y="2" width="82" height="82" /></bezel>
+ <group ref="sb_board"><bounds x="3" y="3" width="80" height="80" /></group>
- <bezel element="white"><bounds x="-2.5" y="-2.5" width="91" height="90.5" /></bezel>
+ <group ref="sb_ui"><bounds x="-13" y="3" width="10" height="80" /></group>
<!-- chessboard coords -->
@@ -175,273 +459,80 @@
<bezel element="text_g"><bounds x="67" y="85" width="2" height="2" /></bezel>
<bezel element="text_h"><bounds x="77" y="85" width="2" height="2" /></bezel>
- <!-- chessboard bezel -->
-
- <bezel element="black"><bounds x="2" y="2" width="82" height="82" /></bezel>
- <bezel element="white"><bounds x="3" y="3" width="80" height="80" /></bezel>
-
- <bezel element="black"><bounds x="13" y="2.5" width="10" height="10.5" /></bezel>
- <bezel element="black"><bounds x="33" y="2.5" width="10" height="10.5" /></bezel>
- <bezel element="black"><bounds x="53" y="2.5" width="10" height="10.5" /></bezel>
- <bezel element="black"><bounds x="73" y="2.5" width="10.5" height="10.5" /></bezel>
-
- <bezel element="black"><bounds x="2.5" y="13" width="10.5" height="10" /></bezel>
- <bezel element="black"><bounds x="23" y="13" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="43" y="13" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="63" y="13" width="10" height="10" /></bezel>
-
- <bezel element="black"><bounds x="13" y="23" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="33" y="23" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="53" y="23" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="73" y="23" width="10.5" height="10" /></bezel>
-
- <bezel element="black"><bounds x="2.5" y="33" width="10.5" height="10" /></bezel>
- <bezel element="black"><bounds x="23" y="33" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="43" y="33" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="63" y="33" width="10" height="10" /></bezel>
-
- <bezel element="black"><bounds x="13" y="43" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="33" y="43" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="53" y="43" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="73" y="43" width="10.5" height="10" /></bezel>
-
- <bezel element="black"><bounds x="2.5" y="53" width="10.5" height="10" /></bezel>
- <bezel element="black"><bounds x="23" y="53" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="43" y="53" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="63" y="53" width="10" height="10" /></bezel>
-
- <bezel element="black"><bounds x="13" y="63" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="33" y="63" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="53" y="63" width="10" height="10" /></bezel>
- <bezel element="black"><bounds x="73" y="63" width="10.5" height="10" /></bezel>
-
- <bezel element="black"><bounds x="2.5" y="73" width="10.5" height="10.5" /></bezel>
- <bezel element="black"><bounds x="23" y="73" width="10" height="10.5" /></bezel>
- <bezel element="black"><bounds x="43" y="73" width="10" height="10.5" /></bezel>
- <bezel element="black"><bounds x="63" y="73" width="10" height="10.5" /></bezel>
-
- <!-- chessboard leds -->
-
- <bezel name="0.0" element="led"><bounds x="11.3" y="11.3" width="1.5" height="1.5" /></bezel>
- <bezel name="1.0" element="led"><bounds x="21.3" y="11.3" width="1.5" height="1.5" /></bezel>
- <bezel name="2.0" element="led"><bounds x="31.3" y="11.3" width="1.5" height="1.5" /></bezel>
- <bezel name="3.0" element="led"><bounds x="41.3" y="11.3" width="1.5" height="1.5" /></bezel>
- <bezel name="4.0" element="led"><bounds x="51.3" y="11.3" width="1.5" height="1.5" /></bezel>
- <bezel name="5.0" element="led"><bounds x="61.3" y="11.3" width="1.5" height="1.5" /></bezel>
- <bezel name="6.0" element="led"><bounds x="71.3" y="11.3" width="1.5" height="1.5" /></bezel>
- <bezel name="7.0" element="led"><bounds x="81.3" y="11.3" width="1.5" height="1.5" /></bezel>
-
- <bezel name="0.1" element="led"><bounds x="11.3" y="21.3" width="1.5" height="1.5" /></bezel>
- <bezel name="1.1" element="led"><bounds x="21.3" y="21.3" width="1.5" height="1.5" /></bezel>
- <bezel name="2.1" element="led"><bounds x="31.3" y="21.3" width="1.5" height="1.5" /></bezel>
- <bezel name="3.1" element="led"><bounds x="41.3" y="21.3" width="1.5" height="1.5" /></bezel>
- <bezel name="4.1" element="led"><bounds x="51.3" y="21.3" width="1.5" height="1.5" /></bezel>
- <bezel name="5.1" element="led"><bounds x="61.3" y="21.3" width="1.5" height="1.5" /></bezel>
- <bezel name="6.1" element="led"><bounds x="71.3" y="21.3" width="1.5" height="1.5" /></bezel>
- <bezel name="7.1" element="led"><bounds x="81.3" y="21.3" width="1.5" height="1.5" /></bezel>
-
- <bezel name="0.2" element="led"><bounds x="11.3" y="31.3" width="1.5" height="1.5" /></bezel>
- <bezel name="1.2" element="led"><bounds x="21.3" y="31.3" width="1.5" height="1.5" /></bezel>
- <bezel name="2.2" element="led"><bounds x="31.3" y="31.3" width="1.5" height="1.5" /></bezel>
- <bezel name="3.2" element="led"><bounds x="41.3" y="31.3" width="1.5" height="1.5" /></bezel>
- <bezel name="4.2" element="led"><bounds x="51.3" y="31.3" width="1.5" height="1.5" /></bezel>
- <bezel name="5.2" element="led"><bounds x="61.3" y="31.3" width="1.5" height="1.5" /></bezel>
- <bezel name="6.2" element="led"><bounds x="71.3" y="31.3" width="1.5" height="1.5" /></bezel>
- <bezel name="7.2" element="led"><bounds x="81.3" y="31.3" width="1.5" height="1.5" /></bezel>
-
- <bezel name="0.3" element="led"><bounds x="11.3" y="41.3" width="1.5" height="1.5" /></bezel>
- <bezel name="1.3" element="led"><bounds x="21.3" y="41.3" width="1.5" height="1.5" /></bezel>
- <bezel name="2.3" element="led"><bounds x="31.3" y="41.3" width="1.5" height="1.5" /></bezel>
- <bezel name="3.3" element="led"><bounds x="41.3" y="41.3" width="1.5" height="1.5" /></bezel>
- <bezel name="4.3" element="led"><bounds x="51.3" y="41.3" width="1.5" height="1.5" /></bezel>
- <bezel name="5.3" element="led"><bounds x="61.3" y="41.3" width="1.5" height="1.5" /></bezel>
- <bezel name="6.3" element="led"><bounds x="71.3" y="41.3" width="1.5" height="1.5" /></bezel>
- <bezel name="7.3" element="led"><bounds x="81.3" y="41.3" width="1.5" height="1.5" /></bezel>
-
- <bezel name="0.4" element="led"><bounds x="11.3" y="51.3" width="1.5" height="1.5" /></bezel>
- <bezel name="1.4" element="led"><bounds x="21.3" y="51.3" width="1.5" height="1.5" /></bezel>
- <bezel name="2.4" element="led"><bounds x="31.3" y="51.3" width="1.5" height="1.5" /></bezel>
- <bezel name="3.4" element="led"><bounds x="41.3" y="51.3" width="1.5" height="1.5" /></bezel>
- <bezel name="4.4" element="led"><bounds x="51.3" y="51.3" width="1.5" height="1.5" /></bezel>
- <bezel name="5.4" element="led"><bounds x="61.3" y="51.3" width="1.5" height="1.5" /></bezel>
- <bezel name="6.4" element="led"><bounds x="71.3" y="51.3" width="1.5" height="1.5" /></bezel>
- <bezel name="7.4" element="led"><bounds x="81.3" y="51.3" width="1.5" height="1.5" /></bezel>
-
- <bezel name="0.5" element="led"><bounds x="11.3" y="61.3" width="1.5" height="1.5" /></bezel>
- <bezel name="1.5" element="led"><bounds x="21.3" y="61.3" width="1.5" height="1.5" /></bezel>
- <bezel name="2.5" element="led"><bounds x="31.3" y="61.3" width="1.5" height="1.5" /></bezel>
- <bezel name="3.5" element="led"><bounds x="41.3" y="61.3" width="1.5" height="1.5" /></bezel>
- <bezel name="4.5" element="led"><bounds x="51.3" y="61.3" width="1.5" height="1.5" /></bezel>
- <bezel name="5.5" element="led"><bounds x="61.3" y="61.3" width="1.5" height="1.5" /></bezel>
- <bezel name="6.5" element="led"><bounds x="71.3" y="61.3" width="1.5" height="1.5" /></bezel>
- <bezel name="7.5" element="led"><bounds x="81.3" y="61.3" width="1.5" height="1.5" /></bezel>
-
- <bezel name="0.6" element="led"><bounds x="11.3" y="71.3" width="1.5" height="1.5" /></bezel>
- <bezel name="1.6" element="led"><bounds x="21.3" y="71.3" width="1.5" height="1.5" /></bezel>
- <bezel name="2.6" element="led"><bounds x="31.3" y="71.3" width="1.5" height="1.5" /></bezel>
- <bezel name="3.6" element="led"><bounds x="41.3" y="71.3" width="1.5" height="1.5" /></bezel>
- <bezel name="4.6" element="led"><bounds x="51.3" y="71.3" width="1.5" height="1.5" /></bezel>
- <bezel name="5.6" element="led"><bounds x="61.3" y="71.3" width="1.5" height="1.5" /></bezel>
- <bezel name="6.6" element="led"><bounds x="71.3" y="71.3" width="1.5" height="1.5" /></bezel>
- <bezel name="7.6" element="led"><bounds x="81.3" y="71.3" width="1.5" height="1.5" /></bezel>
-
- <bezel name="0.7" element="led"><bounds x="11.3" y="81.3" width="1.5" height="1.5" /></bezel>
- <bezel name="1.7" element="led"><bounds x="21.3" y="81.3" width="1.5" height="1.5" /></bezel>
- <bezel name="2.7" element="led"><bounds x="31.3" y="81.3" width="1.5" height="1.5" /></bezel>
- <bezel name="3.7" element="led"><bounds x="41.3" y="81.3" width="1.5" height="1.5" /></bezel>
- <bezel name="4.7" element="led"><bounds x="51.3" y="81.3" width="1.5" height="1.5" /></bezel>
- <bezel name="5.7" element="led"><bounds x="61.3" y="81.3" width="1.5" height="1.5" /></bezel>
- <bezel name="6.7" element="led"><bounds x="71.3" y="81.3" width="1.5" height="1.5" /></bezel>
- <bezel name="7.7" element="led"><bounds x="81.3" y="81.3" width="1.5" height="1.5" /></bezel>
-
- <!-- chessboard sensors -->
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x01"><bounds x="3" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x01"><bounds x="13" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x01"><bounds x="23" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x01"><bounds x="33" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x01"><bounds x="43" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x01"><bounds x="53" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x01"><bounds x="63" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x01"><bounds x="73" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x02"><bounds x="3" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x02"><bounds x="13" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x02"><bounds x="23" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x02"><bounds x="33" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x02"><bounds x="43" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x02"><bounds x="53" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x02"><bounds x="63" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x02"><bounds x="73" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x04"><bounds x="3" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x04"><bounds x="13" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x04"><bounds x="23" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x04"><bounds x="33" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x04"><bounds x="43" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x04"><bounds x="53" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x04"><bounds x="63" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x04"><bounds x="73" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x08"><bounds x="3" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x08"><bounds x="13" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x08"><bounds x="23" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x08"><bounds x="33" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x08"><bounds x="43" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x08"><bounds x="53" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x08"><bounds x="63" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x08"><bounds x="73" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x10"><bounds x="3" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x10"><bounds x="13" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x10"><bounds x="23" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x10"><bounds x="33" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x10"><bounds x="43" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x10"><bounds x="53" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x10"><bounds x="63" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x10"><bounds x="73" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x20"><bounds x="3" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x20"><bounds x="13" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x20"><bounds x="23" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x20"><bounds x="33" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x20"><bounds x="43" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x20"><bounds x="53" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x20"><bounds x="63" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x20"><bounds x="73" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x40"><bounds x="3" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x40"><bounds x="13" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x40"><bounds x="23" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x40"><bounds x="33" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x40"><bounds x="43" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x40"><bounds x="53" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x40"><bounds x="63" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x40"><bounds x="73" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
-
- <bezel element="hl" inputtag="IN.0" inputmask="0x80"><bounds x="3" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.1" inputmask="0x80"><bounds x="13" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.2" inputmask="0x80"><bounds x="23" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.3" inputmask="0x80"><bounds x="33" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.4" inputmask="0x80"><bounds x="43" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.5" inputmask="0x80"><bounds x="53" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
- <bezel element="hl" inputtag="IN.6" inputmask="0x80"><bounds x="63" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
- <bezel element="hl" inputtag="IN.7" inputmask="0x80"><bounds x="73" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
-
<!-- bottom side -->
<bezel name="9.0" element="led2"><bounds x="12.25" y="90" width="1.5" height="1.5" /></bezel>
<bezel element="text_b1"><bounds x="7" y="91.9" width="12" height="1.8" /></bezel>
- <bezel element="butr" inputtag="IN.9" inputmask="0x01"><bounds x="10" y="94.3" width="6" height="2" /></bezel>
+ <bezel element="butr" inputtag="IN.1" inputmask="0x01"><bounds x="10" y="94.3" width="6" height="2" /></bezel>
<bezel element="text_b2"><bounds x="7" y="101.4" width="12" height="1.8" /></bezel>
- <bezel element="butr" inputtag="IN.9" inputmask="0x02"><bounds x="10" y="103.8" width="6" height="2" /></bezel>
+ <bezel element="butr" inputtag="IN.1" inputmask="0x02"><bounds x="10" y="103.8" width="6" height="2" /></bezel>
<bezel element="white"><bounds x="20.2" y="89.2" width="7.6" height="9" /></bezel>
- <bezel element="static_black"><bounds x="20.5" y="89.5" width="7" height="8.4" /></bezel>
+ <bezel element="blackb"><bounds x="20.5" y="89.5" width="7" height="8.4" /></bezel>
<bezel name="8.1" element="led2"><bounds x="23.25" y="90" width="1.5" height="1.5" /></bezel>
<bezel element="white"><bounds x="21" y="91.8" width="6" height="2" /></bezel>
<bezel element="text_p1"><bounds x="21" y="91.9" width="6" height="1.5" /></bezel>
- <bezel element="butr" inputtag="IN.8" inputmask="0x02"><bounds x="21" y="94.3" width="6" height="2" /></bezel>
+ <bezel element="butr" inputtag="IN.0" inputmask="0x02"><bounds x="21" y="94.3" width="6" height="2" /></bezel>
<bezel element="white"><bounds x="28.2" y="89.2" width="7.6" height="9" /></bezel>
- <bezel element="static_black"><bounds x="28.5" y="89.5" width="7" height="8.4" /></bezel>
+ <bezel element="blackb"><bounds x="28.5" y="89.5" width="7" height="8.4" /></bezel>
<bezel name="8.2" element="led2"><bounds x="31.25" y="90" width="1.5" height="1.5" /></bezel>
<bezel element="white"><bounds x="29" y="91.8" width="6" height="2" /></bezel>
<bezel element="text_p2"><bounds x="29" y="91.9" width="6" height="1.5" /></bezel>
- <bezel element="butr" inputtag="IN.8" inputmask="0x04"><bounds x="29" y="94.3" width="6" height="2" /></bezel>
+ <bezel element="butr" inputtag="IN.0" inputmask="0x04"><bounds x="29" y="94.3" width="6" height="2" /></bezel>
<bezel element="white"><bounds x="36.2" y="89.2" width="7.6" height="9" /></bezel>
- <bezel element="static_black"><bounds x="36.5" y="89.5" width="7" height="8.4" /></bezel>
+ <bezel element="blackb"><bounds x="36.5" y="89.5" width="7" height="8.4" /></bezel>
<bezel name="8.3" element="led2"><bounds x="39.25" y="90" width="1.5" height="1.5" /></bezel>
<bezel element="white"><bounds x="37" y="91.8" width="6" height="2" /></bezel>
<bezel element="text_p3"><bounds x="37" y="91.9" width="6" height="1.5" /></bezel>
- <bezel element="butr" inputtag="IN.8" inputmask="0x08"><bounds x="37" y="94.3" width="6" height="2" /></bezel>
+ <bezel element="butr" inputtag="IN.0" inputmask="0x08"><bounds x="37" y="94.3" width="6" height="2" /></bezel>
<bezel element="white"><bounds x="20.2" y="98.7" width="7.6" height="9" /></bezel>
- <bezel element="static_black"><bounds x="20.5" y="99" width="7" height="8.4" /></bezel>
+ <bezel element="blackb"><bounds x="20.5" y="99" width="7" height="8.4" /></bezel>
<bezel name="8.4" element="led2"><bounds x="23.25" y="99.5" width="1.5" height="1.5" /></bezel>
<bezel element="white"><bounds x="21" y="101.3" width="6" height="2" /></bezel>
<bezel element="text_p4"><bounds x="21" y="101.4" width="6" height="1.5" /></bezel>
- <bezel element="butr" inputtag="IN.8" inputmask="0x10"><bounds x="21" y="103.8" width="6" height="2" /></bezel>
+ <bezel element="butr" inputtag="IN.0" inputmask="0x10"><bounds x="21" y="103.8" width="6" height="2" /></bezel>
<bezel element="white"><bounds x="28.2" y="98.7" width="7.6" height="9" /></bezel>
- <bezel element="static_black"><bounds x="28.5" y="99" width="7" height="8.4" /></bezel>
+ <bezel element="blackb"><bounds x="28.5" y="99" width="7" height="8.4" /></bezel>
<bezel name="8.5" element="led2"><bounds x="31.25" y="99.5" width="1.5" height="1.5" /></bezel>
<bezel element="white"><bounds x="29" y="101.3" width="6" height="2" /></bezel>
<bezel element="text_p5"><bounds x="29" y="101.4" width="6" height="1.5" /></bezel>
- <bezel element="butr" inputtag="IN.8" inputmask="0x20"><bounds x="29" y="103.8" width="6" height="2" /></bezel>
+ <bezel element="butr" inputtag="IN.0" inputmask="0x20"><bounds x="29" y="103.8" width="6" height="2" /></bezel>
<bezel element="white"><bounds x="36.2" y="98.7" width="7.6" height="9" /></bezel>
- <bezel element="static_black"><bounds x="36.5" y="99" width="7" height="8.4" /></bezel>
+ <bezel element="blackb"><bounds x="36.5" y="99" width="7" height="8.4" /></bezel>
<bezel name="8.6" element="led2"><bounds x="39.25" y="99.5" width="1.5" height="1.5" /></bezel>
<bezel element="white"><bounds x="37" y="101.3" width="6" height="2" /></bezel>
<bezel element="text_p6"><bounds x="37" y="101.4" width="6" height="1.5" /></bezel>
- <bezel element="butr" inputtag="IN.8" inputmask="0x40"><bounds x="37" y="103.8" width="6" height="2" /></bezel>
+ <bezel element="butr" inputtag="IN.0" inputmask="0x40"><bounds x="37" y="103.8" width="6" height="2" /></bezel>
<bezel element="white"><bounds x="46.5" y="89.2" width="7" height="9" /></bezel>
- <bezel element="static_black"><bounds x="46.8" y="89.5" width="6.4" height="8.4" /></bezel>
+ <bezel element="blackb"><bounds x="46.8" y="89.5" width="6.4" height="8.4" /></bezel>
<bezel name="8.7" element="led2"><bounds x="49.25" y="90" width="1.5" height="1.5" /></bezel>
<bezel element="text_white"><bounds x="48" y="91.8" width="4" height="1.5" /></bezel>
- <bezel element="butd" inputtag="IN.8" inputmask="0x80"><bounds x="48.5" y="94" width="3" height="3" /></bezel>
+ <bezel element="butd" inputtag="IN.0" inputmask="0x80"><bounds x="48.5" y="94" width="3" height="3" /></bezel>
<bezel element="white"><bounds x="46.5" y="98.7" width="7" height="9" /></bezel>
- <bezel element="static_black"><bounds x="46.8" y="99" width="6.4" height="8.4" /></bezel>
+ <bezel element="blackb"><bounds x="46.8" y="99" width="6.4" height="8.4" /></bezel>
<bezel name="8.0" element="led2"><bounds x="49.25" y="99.5" width="1.5" height="1.5" /></bezel>
<bezel element="text_black"><bounds x="48" y="101.3" width="4" height="1.5" /></bezel>
- <bezel element="butd" inputtag="IN.8" inputmask="0x01"><bounds x="48.5" y="103.5" width="3" height="3" /></bezel>
+ <bezel element="butd" inputtag="IN.0" inputmask="0x01"><bounds x="48.5" y="103.5" width="3" height="3" /></bezel>
<bezel element="text_b3"><bounds x="52" y="89.2" width="12" height="1.8" /></bezel>
- <bezel element="butr" inputtag="IN.9" inputmask="0x10"><bounds x="57" y="91.5" width="2" height="6" /></bezel>
+ <bezel element="butr" inputtag="IN.1" inputmask="0x10"><bounds x="57" y="91.5" width="2" height="6" /></bezel>
<bezel element="text_b4"><bounds x="60" y="89.2" width="12" height="1.8" /></bezel>
- <bezel element="butr" inputtag="IN.9" inputmask="0x80"><bounds x="65" y="91.5" width="2" height="6" /></bezel>
+ <bezel element="butr" inputtag="IN.1" inputmask="0x80"><bounds x="65" y="91.5" width="2" height="6" /></bezel>
<bezel element="text_b5"><bounds x="68" y="89.2" width="12" height="1.8" /></bezel>
- <bezel element="butr" inputtag="IN.9" inputmask="0x40"><bounds x="73" y="91.5" width="2" height="6" /></bezel>
+ <bezel element="butr" inputtag="IN.1" inputmask="0x40"><bounds x="73" y="91.5" width="2" height="6" /></bezel>
<bezel element="text_b6"><bounds x="52" y="98.7" width="12" height="1.8" /></bezel>
- <bezel element="butr" inputtag="IN.9" inputmask="0x08"><bounds x="57" y="101" width="2" height="6" /></bezel>
+ <bezel element="butr" inputtag="IN.1" inputmask="0x08"><bounds x="57" y="101" width="2" height="6" /></bezel>
<bezel element="text_b7"><bounds x="60" y="98.7" width="12" height="1.8" /></bezel>
- <bezel element="butr" inputtag="IN.9" inputmask="0x04"><bounds x="65" y="101" width="2" height="6" /></bezel>
+ <bezel element="butr" inputtag="IN.1" inputmask="0x04"><bounds x="65" y="101" width="2" height="6" /></bezel>
<bezel element="text_b8"><bounds x="68" y="98.7" width="12" height="1.8" /></bezel>
- <bezel element="butr" inputtag="IN.9" inputmask="0x20"><bounds x="73" y="101" width="2" height="6" /></bezel>
+ <bezel element="butr" inputtag="IN.1" inputmask="0x20"><bounds x="73" y="101" width="2" height="6" /></bezel>
<bezel element="white"><bounds x="61.85" y="89.2" width="0.3" height="18.5" /></bezel>
<bezel element="white"><bounds x="69.85" y="89.2" width="0.3" height="18.5" /></bezel>
diff --git a/src/mame/layout/risc2500.lay b/src/mame/layout/risc2500.lay
index 0dbc57b998e..20f515f873b 100644
--- a/src/mame/layout/risc2500.lay
+++ b/src/mame/layout/risc2500.lay
@@ -218,19 +218,19 @@
<image file="chess/wp.png" state="12"/>
<!-- selected pieces -->
- <image file="chess/bk.png" state="17"><color alpha="0.6" /></image>
- <image file="chess/bq.png" state="18"><color alpha="0.6" /></image>
- <image file="chess/br.png" state="19"><color alpha="0.6" /></image>
- <image file="chess/bb.png" state="20"><color alpha="0.6" /></image>
- <image file="chess/bn.png" state="21"><color alpha="0.6" /></image>
- <image file="chess/bp.png" state="22"><color alpha="0.6" /></image>
-
- <image file="chess/wk.png" state="23"><color alpha="0.6" /></image>
- <image file="chess/wq.png" state="24"><color alpha="0.6" /></image>
- <image file="chess/wr.png" state="25"><color alpha="0.6" /></image>
- <image file="chess/wb.png" state="26"><color alpha="0.6" /></image>
- <image file="chess/wn.png" state="27"><color alpha="0.6" /></image>
- <image file="chess/wp.png" state="28"><color alpha="0.6" /></image>
+ <image file="chess/bk.png" state="17"><color alpha="0.5" /></image>
+ <image file="chess/bq.png" state="18"><color alpha="0.5" /></image>
+ <image file="chess/br.png" state="19"><color alpha="0.5" /></image>
+ <image file="chess/bb.png" state="20"><color alpha="0.5" /></image>
+ <image file="chess/bn.png" state="21"><color alpha="0.5" /></image>
+ <image file="chess/bp.png" state="22"><color alpha="0.5" /></image>
+
+ <image file="chess/wk.png" state="23"><color alpha="0.5" /></image>
+ <image file="chess/wq.png" state="24"><color alpha="0.5" /></image>
+ <image file="chess/wr.png" state="25"><color alpha="0.5" /></image>
+ <image file="chess/wb.png" state="26"><color alpha="0.5" /></image>
+ <image file="chess/wn.png" state="27"><color alpha="0.5" /></image>
+ <image file="chess/wp.png" state="28"><color alpha="0.5" /></image>
</element>
<!-- build screen -->