Systems promoted to working

---------------------------
Sphinx Chess Professor [hap, Berger]
This commit is contained in:
hap 2024-02-20 17:03:05 +01:00
parent e4e5f3d918
commit 16cebbef34
6 changed files with 547 additions and 37 deletions

View File

@ -105,7 +105,7 @@ void hlcd0515_device::device_start()
//-------------------------------------------------
// nvram (when VDD is battery-backed, rare occurence)
// nvram (when VDD is battery-backed)
//-------------------------------------------------
bool hlcd0515_device::nvram_write(util::write_stream &file)

View File

@ -26,8 +26,12 @@ DEFINE_DEVICE_TYPE(LC7582, lc7582_device, "lc7582", "Sanyo LC7582 LCD Driver")
lc7580_device::lc7580_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) :
device_t(mconfig, type, tag, owner, clock),
device_nvram_interface(mconfig, *this),
m_write_segs(*this)
{ }
{
// disable nvram by default
nvram_enable_backup(false);
}
lc7580_device::lc7580_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
lc7580_device(mconfig, LC7580, tag, owner, clock)
@ -49,8 +53,6 @@ void lc7580_device::device_start()
m_ce = 0;
m_clk = 0;
m_blank = false;
m_duty = 0;
m_addsp = 0;
m_shift = 0;
std::fill_n(m_latch, std::size(m_latch), 0);
@ -59,21 +61,49 @@ void lc7580_device::device_start()
save_item(NAME(m_ce));
save_item(NAME(m_clk));
save_item(NAME(m_blank));
save_item(NAME(m_duty));
save_item(NAME(m_addsp));
save_item(NAME(m_shift));
save_item(NAME(m_latch));
}
//-------------------------------------------------
// nvram (when VDD is battery-backed)
//-------------------------------------------------
bool lc7580_device::nvram_write(util::write_stream &file)
{
size_t actual;
if (file.write(&m_shift, sizeof(m_shift), actual) || (sizeof(m_shift) != actual))
return false;
if (file.write(&m_latch, sizeof(m_latch), actual) || (sizeof(m_latch) != actual))
return false;
return true;
}
bool lc7580_device::nvram_read(util::read_stream &file)
{
size_t actual;
if (file.read(&m_shift, sizeof(m_shift), actual) || (sizeof(m_shift) != actual))
return false;
if (file.read(&m_latch, sizeof(m_latch), actual) || (sizeof(m_latch) != actual))
return false;
return true;
}
//-------------------------------------------------
// handlers
//-------------------------------------------------
void lc7580_device::refresh_output()
{
if (m_duty)
if (BIT(m_latch[0], 53))
{
// 1/2 duty
u64 segs[2] = { 0, 0 };
// COM1 on even bits, COM2 on uneven bits
@ -85,7 +115,8 @@ void lc7580_device::refresh_output()
}
else
{
m_write_segs(0, m_blank ? 0 : m_latch[0]);
// 1/1 duty
m_write_segs(0, m_blank ? 0 : m_latch[0] & ((1ULL << 53) - 1));
m_write_segs(1, 0);
}
}
@ -95,7 +126,7 @@ void lc7580_device::clk_w(int state)
state = (state) ? 1 : 0;
// clock shift register
if (state && !m_clk)
if (!state && m_clk)
m_shift = m_shift >> 1 | u64(m_data) << 55;
m_clk = state;
@ -108,16 +139,11 @@ void lc7580_device::ce_w(int state)
// latch at falling edge
if (!state && m_ce)
{
// d53: DP (drive mode select, aka duty)
// d54: DQ (AD/DSP function)
// d0-d52: segment data
// d53(0): DP (drive mode select, aka duty)
// d54(0): DQ (AD/DSP function)
// d55: latch select
if (!BIT(m_shift, 55))
{
m_duty = BIT(m_shift, 53);
m_addsp = BIT(m_shift, 54);
}
m_latch[BIT(m_shift, 55)] = m_shift & u64(0x1f'ffff'ffff'ffff);
m_latch[BIT(m_shift, 55)] = m_shift;
refresh_output();
}

View File

@ -31,7 +31,7 @@ pin desc
*/
class lc7580_device : public device_t
class lc7580_device : public device_t, public device_nvram_interface
{
public:
lc7580_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
@ -49,6 +49,12 @@ protected:
// device_t implementation
virtual void device_start() override;
virtual void device_reset() override { refresh_output(); }
// device_nvram_interface implementation
virtual void nvram_default() override { ; }
virtual bool nvram_read(util::read_stream &file) override;
virtual bool nvram_write(util::write_stream &file) override;
private:
void refresh_output();
@ -58,8 +64,6 @@ private:
int m_clk;
bool m_blank;
int m_duty;
int m_addsp;
u64 m_shift;
u64 m_latch[2];

View File

@ -131,9 +131,9 @@ void dominator_state::lcd_s_w(offs_t offset, u64 data)
void dominator_state::control_w(u8 data)
{
// d0: LC7582 DATA
// d1: LC7582 CLK
// d2: LC7582 CE
// d1: LC7582 CLK
// d0: LC7582 DATA
m_lcd->data_w(BIT(data, 0));
m_lcd->clk_w(BIT(data, 1));
m_lcd->ce_w(BIT(data, 2));

View File

@ -5,7 +5,7 @@
CXG Sphinx Chess Professor (CXG-243)
NOTE: Before exiting MAME, press the STOP button to turn the power off. Otherwise,
NOTE: Before exiting MAME, press the OFF button to turn the power off. Otherwise,
NVRAM won't save properly.
The chess engine is by Frans Morsch, similar to the one in Mephisto Europa.
@ -17,9 +17,6 @@ Hardware notes:
- Sanyo LC7580, LCD with custom segments
- 8*8 chessboard buttons, 16 LEDs, piezo
TODO:
- internal artwork
*******************************************************************************/
#include "emu.h"
@ -34,7 +31,7 @@ TODO:
#include "speaker.h"
// internal artwork
//#include "cxg_professor.lh"
#include "cxg_professor.lh"
namespace {
@ -122,9 +119,9 @@ void professor_state::control_w(u8 data)
// P23: speaker out
m_dac->write(BIT(data, 3));
// P24: LC7580 DATA
// P25: LC7580 CLK
// P26: LC7580 CE
// P25: LC7580 CLK
// P24: LC7580 DATA
m_lcd->data_w(BIT(data, 4));
m_lcd->clk_w(BIT(data, 5));
m_lcd->ce_w(BIT(data, 6));
@ -201,7 +198,8 @@ void professor_state::professor(machine_config &config)
HD6301Y0(config, m_maincpu, 8_MHz_XTAL);
m_maincpu->nvram_enable_backup(true);
m_maincpu->standby_cb().set(m_maincpu, FUNC(hd6301y_cpu_device::nvram_set_battery));
//m_maincpu->standby_cb().append(FUNC(professor_state::standby));
m_maincpu->standby_cb().append(m_lcd, FUNC(lc7580_device::inh_w));
m_maincpu->standby_cb().append([this](int state) { if (state) m_display->clear(); });
m_maincpu->out_p1_cb().set(FUNC(professor_state::leds_w<0>));
m_maincpu->out_p4_cb().set(FUNC(professor_state::leds_w<1>));
m_maincpu->out_p2_cb().set(FUNC(professor_state::control_w));
@ -211,19 +209,20 @@ void professor_state::professor(machine_config &config)
SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS);
m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));
m_board->set_delay(attotime::from_msec(150));
//m_board->set_nvram_enable(true);
m_board->set_nvram_enable(true);
// video hardware
LC7580(config, m_lcd, 0);
m_lcd->write_segs().set(FUNC(professor_state::lcd_s_w));
m_lcd->nvram_enable_backup(true);
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
screen.set_refresh_hz(60);
screen.set_size(1920/4, 977/4);
screen.set_size(1920/5, 921/5);
screen.set_visarea_full();
PWM_DISPLAY(config, m_display).set_size(2, 8);
//config.set_default_layout(layout_cxg_professor);
config.set_default_layout(layout_cxg_professor);
// sound hardware
SPEAKER(config, "speaker").front_center();
@ -240,8 +239,8 @@ ROM_START( scprof )
ROM_REGION( 0x4000, "maincpu", 0 )
ROM_LOAD("1988_107_newcrest_hd6301y0j76p", 0x0000, 0x4000, CRC(681456c7) SHA1(99f8ab7369dbc2c93335affc38838295a8a2c5f3) )
ROM_REGION( 100000, "screen", 0 )
ROM_LOAD("scprof.svg", 0, 100000, NO_DUMP )
ROM_REGION( 61763, "screen", 0 )
ROM_LOAD("scprof.svg", 0, 61763, CRC(2c26e603) SHA1(028b6406ff2aa89af75dc4133d3cb9a1bbcb846d) )
ROM_END
} // anonymous namespace
@ -253,4 +252,4 @@ ROM_END
*******************************************************************************/
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
SYST( 1989, scprof, 0, 0, professor, professor, professor_state, empty_init, "CXG Systems / Newcrest Technology", "Sphinx Chess Professor", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
SYST( 1989, scprof, 0, 0, professor, professor, professor_state, empty_init, "CXG Systems / Newcrest Technology", "Sphinx Chess Professor", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -0,0 +1,481 @@
<?xml version="1.0"?>
<!--
license:CC0-1.0
authors:hap
-->
<mamelayout version="2">
<!-- define elements -->
<element name="white2"><rect><color red="0.91" green="0.9" blue="0.89" /></rect></element>
<element name="blackb"><rect><color red="0" green="0" blue="0" /></rect></element>
<element name="lcdm"><rect><color red="0.7" green="0.71" blue="0.72" /></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>
</element>
<element name="text_10"><text string="1" align="1"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_20"><text string="2" align="1"><color red="0.05" green="0.05" blue="0.05" /></text></element>
<element name="text_30"><text string="3" align="1"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_40"><text string="4" align="1"><color red="0.05" green="0.05" blue="0.05" /></text></element>
<element name="text_50"><text string="5" align="1"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_60"><text string="6" align="1"><color red="0.05" green="0.05" blue="0.05" /></text></element>
<element name="text_70"><text string="7" align="1"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_80"><text string="8" align="1"><color red="0.05" green="0.05" blue="0.05" /></text></element>
<element name="text_11"><text string="1" align="2"><color red="0.05" green="0.05" blue="0.05" /></text></element>
<element name="text_21"><text string="2" align="2"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_31"><text string="3" align="2"><color red="0.05" green="0.05" blue="0.05" /></text></element>
<element name="text_41"><text string="4" align="2"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_51"><text string="5" align="2"><color red="0.05" green="0.05" blue="0.05" /></text></element>
<element name="text_61"><text string="6" align="2"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_71"><text string="7" align="2"><color red="0.05" green="0.05" blue="0.05" /></text></element>
<element name="text_81"><text string="8" align="2"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_a0"><text string="A"><color red="0.05" green="0.05" blue="0.05" /></text></element>
<element name="text_b0"><text string="B"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_c0"><text string="C"><color red="0.05" green="0.05" blue="0.05" /></text></element>
<element name="text_d0"><text string="D"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_e0"><text string="E"><color red="0.05" green="0.05" blue="0.05" /></text></element>
<element name="text_f0"><text string="F"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_g0"><text string="G"><color red="0.05" green="0.05" blue="0.05" /></text></element>
<element name="text_h0"><text string="H"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_a1"><text string="A"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_b1"><text string="B"><color red="0.05" green="0.05" blue="0.05" /></text></element>
<element name="text_c1"><text string="C"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_d1"><text string="D"><color red="0.05" green="0.05" blue="0.05" /></text></element>
<element name="text_e1"><text string="E"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_f1"><text string="F"><color red="0.05" green="0.05" blue="0.05" /></text></element>
<element name="text_g1"><text string="G"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_h1"><text string="H"><color red="0.05" green="0.05" blue="0.05" /></text></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.svg" state="1"/>
<image file="chess/wn.svg" state="2"/>
<image file="chess/wb.svg" state="3"/>
<image file="chess/wr.svg" state="4"/>
<image file="chess/wq.svg" state="5"/>
<image file="chess/wk.svg" state="6"/>
<image file="chess/bp.svg" state="7"/>
<image file="chess/bn.svg" state="8"/>
<image file="chess/bb.svg" state="9"/>
<image file="chess/br.svg" state="10"/>
<image file="chess/bq.svg" state="11"/>
<image file="chess/bk.svg" state="12"/>
<!-- selected pieces -->
<image file="chess/wp.svg" state="13"><color alpha="0.5" /></image>
<image file="chess/wn.svg" state="14"><color alpha="0.5" /></image>
<image file="chess/wb.svg" state="15"><color alpha="0.5" /></image>
<image file="chess/wr.svg" state="16"><color alpha="0.5" /></image>
<image file="chess/wq.svg" state="17"><color alpha="0.5" /></image>
<image file="chess/wk.svg" state="18"><color alpha="0.5" /></image>
<image file="chess/bp.svg" state="19"><color alpha="0.5" /></image>
<image file="chess/bn.svg" state="20"><color alpha="0.5" /></image>
<image file="chess/bb.svg" state="21"><color alpha="0.5" /></image>
<image file="chess/br.svg" state="22"><color alpha="0.5" /></image>
<image file="chess/bq.svg" state="23"><color alpha="0.5" /></image>
<image file="chess/bk.svg" state="24"><color alpha="0.5" /></image>
</element>
<group name="sb_board">
<bounds x="0" y="0" width="80" height="80" />
<!-- squares (avoid seams) -->
<element ref="cwhite"><bounds x="0" y="0" width="11" height="11" /></element>
<element ref="cblack"><bounds x="10" y="0" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="20" y="0" width="11" height="11" /></element>
<element ref="cblack"><bounds x="30" y="0" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="40" y="0" width="11" height="11" /></element>
<element ref="cblack"><bounds x="50" y="0" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="60" y="0" width="11" height="11" /></element>
<element ref="cblack"><bounds x="70" y="0" width="10" height="11" /></element>
<element ref="cblack"><bounds x="0" y="10" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="10" y="10" width="11" height="11" /></element>
<element ref="cblack"><bounds x="20" y="10" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="30" y="10" width="11" height="11" /></element>
<element ref="cblack"><bounds x="40" y="10" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="50" y="10" width="11" height="11" /></element>
<element ref="cblack"><bounds x="60" y="10" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="70" y="10" width="10" height="11" /></element>
<element ref="cwhite"><bounds x="0" y="20" width="11" height="11" /></element>
<element ref="cblack"><bounds x="10" y="20" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="20" y="20" width="11" height="11" /></element>
<element ref="cblack"><bounds x="30" y="20" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="40" y="20" width="11" height="11" /></element>
<element ref="cblack"><bounds x="50" y="20" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="60" y="20" width="11" height="11" /></element>
<element ref="cblack"><bounds x="70" y="20" width="10" height="11" /></element>
<element ref="cblack"><bounds x="0" y="30" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="10" y="30" width="11" height="11" /></element>
<element ref="cblack"><bounds x="20" y="30" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="30" y="30" width="11" height="11" /></element>
<element ref="cblack"><bounds x="40" y="30" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="50" y="30" width="11" height="11" /></element>
<element ref="cblack"><bounds x="60" y="30" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="70" y="30" width="10" height="11" /></element>
<element ref="cwhite"><bounds x="0" y="40" width="11" height="11" /></element>
<element ref="cblack"><bounds x="10" y="40" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="20" y="40" width="11" height="11" /></element>
<element ref="cblack"><bounds x="30" y="40" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="40" y="40" width="11" height="11" /></element>
<element ref="cblack"><bounds x="50" y="40" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="60" y="40" width="11" height="11" /></element>
<element ref="cblack"><bounds x="70" y="40" width="10" height="11" /></element>
<element ref="cblack"><bounds x="0" y="50" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="10" y="50" width="11" height="11" /></element>
<element ref="cblack"><bounds x="20" y="50" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="30" y="50" width="11" height="11" /></element>
<element ref="cblack"><bounds x="40" y="50" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="50" y="50" width="11" height="11" /></element>
<element ref="cblack"><bounds x="60" y="50" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="70" y="50" width="10" height="11" /></element>
<element ref="cwhite"><bounds x="0" y="60" width="11" height="11" /></element>
<element ref="cblack"><bounds x="10" y="60" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="20" y="60" width="11" height="11" /></element>
<element ref="cblack"><bounds x="30" y="60" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="40" y="60" width="11" height="11" /></element>
<element ref="cblack"><bounds x="50" y="60" width="11" height="11" /></element>
<element ref="cwhite"><bounds x="60" y="60" width="11" height="11" /></element>
<element ref="cblack"><bounds x="70" y="60" width="10" height="11" /></element>
<element ref="cblack"><bounds x="0" y="70" width="11" height="10" /></element>
<element ref="cwhite"><bounds x="10" y="70" width="11" height="10" /></element>
<element ref="cblack"><bounds x="20" y="70" width="11" height="10" /></element>
<element ref="cwhite"><bounds x="30" y="70" width="11" height="10" /></element>
<element ref="cblack"><bounds x="40" y="70" width="11" height="10" /></element>
<element ref="cwhite"><bounds x="50" y="70" width="11" height="10" /></element>
<element ref="cblack"><bounds x="60" y="70" width="11" height="10" /></element>
<element ref="cwhite"><bounds x="70" y="70" width="10" height="10" /></element>
<!-- coords -->
<element ref="text_80"><bounds x="0.25" y="4.3" width="2" height="1.4" /></element>
<element ref="text_70"><bounds x="0.25" y="14.3" width="2" height="1.4" /></element>
<element ref="text_60"><bounds x="0.25" y="24.3" width="2" height="1.4" /></element>
<element ref="text_50"><bounds x="0.25" y="34.3" width="2" height="1.4" /></element>
<element ref="text_40"><bounds x="0.25" y="44.3" width="2" height="1.4" /></element>
<element ref="text_30"><bounds x="0.25" y="54.3" width="2" height="1.4" /></element>
<element ref="text_20"><bounds x="0.25" y="64.3" width="2" height="1.4" /></element>
<element ref="text_10"><bounds x="0.25" y="74.3" width="2" height="1.4" /></element>
<element ref="text_81"><bounds x="77.75" y="4.3" width="2" height="1.4" /></element>
<element ref="text_71"><bounds x="77.75" y="14.3" width="2" height="1.4" /></element>
<element ref="text_61"><bounds x="77.75" y="24.3" width="2" height="1.4" /></element>
<element ref="text_51"><bounds x="77.75" y="34.3" width="2" height="1.4" /></element>
<element ref="text_41"><bounds x="77.75" y="44.3" width="2" height="1.4" /></element>
<element ref="text_31"><bounds x="77.75" y="54.3" width="2" height="1.4" /></element>
<element ref="text_21"><bounds x="77.75" y="64.3" width="2" height="1.4" /></element>
<element ref="text_11"><bounds x="77.75" y="74.3" width="2" height="1.4" /></element>
<element ref="text_a0"><bounds x="4" y="0" width="2" height="1.4" /></element>
<element ref="text_b0"><bounds x="14" y="0" width="2" height="1.4" /></element>
<element ref="text_c0"><bounds x="24" y="0" width="2" height="1.4" /></element>
<element ref="text_d0"><bounds x="34" y="0" width="2" height="1.4" /></element>
<element ref="text_e0"><bounds x="44" y="0" width="2" height="1.4" /></element>
<element ref="text_f0"><bounds x="54" y="0" width="2" height="1.4" /></element>
<element ref="text_g0"><bounds x="64" y="0" width="2" height="1.4" /></element>
<element ref="text_h0"><bounds x="74" y="0" width="2" height="1.4" /></element>
<element ref="text_a1"><bounds x="4" y="78.55" width="2" height="1.4" /></element>
<element ref="text_b1"><bounds x="14" y="78.55" width="2" height="1.4" /></element>
<element ref="text_c1"><bounds x="24" y="78.55" width="2" height="1.4" /></element>
<element ref="text_d1"><bounds x="34" y="78.55" width="2" height="1.4" /></element>
<element ref="text_e1"><bounds x="44" y="78.55" width="2" height="1.4" /></element>
<element ref="text_f1"><bounds x="54" y="78.55" width="2" height="1.4" /></element>
<element ref="text_g1"><bounds x="64" y="78.55" width="2" height="1.4" /></element>
<element ref="text_h1"><bounds x="74" y="78.55" width="2" height="1.4" /></element>
<!-- sensors, pieces -->
<repeat count="8">
<param name="y" start="0" increment="10" />
<param name="i" start="8" increment="-1" />
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x80"><bounds x="70" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element name="piece_a~i~" ref="piece"><bounds x="0" y="~y~" width="10" height="10" /></element>
<element name="piece_b~i~" ref="piece"><bounds x="10" y="~y~" width="10" height="10" /></element>
<element name="piece_c~i~" ref="piece"><bounds x="20" y="~y~" width="10" height="10" /></element>
<element name="piece_d~i~" ref="piece"><bounds x="30" y="~y~" width="10" height="10" /></element>
<element name="piece_e~i~" ref="piece"><bounds x="40" y="~y~" width="10" height="10" /></element>
<element name="piece_f~i~" ref="piece"><bounds x="50" y="~y~" width="10" height="10" /></element>
<element name="piece_g~i~" ref="piece"><bounds x="60" y="~y~" width="10" height="10" /></element>
<element name="piece_h~i~" ref="piece"><bounds x="70" y="~y~" width="10" height="10" /></element>
</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"><text string="RESET"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_uib3"><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"><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"><text string=" &lt;&lt;"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_uiu2b"><text string=" &lt; "><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_uiu2c"><text string=" &gt;"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_uiu2d"><text string=" &gt;&gt;"><color red="0.01" green="0.01" blue="0.01" /></text></element>
<element name="text_uiu3b"><text string="/"><color red="0.81" green="0.8" blue="0.79" /></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_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" />
<element ref="cblack"><bounds x="0" y="0" width="10" height="1" /></element>
<element ref="cblack"><bounds x="0" y="7" width="10" height="1" /></element>
<element ref="cblack"><bounds x="0" y="79" width="10" height="1" /></element>
<element ref="text_uit1"><bounds x="0" y="2" width="10" height="2" /></element>
<element ref="text_uit2"><bounds x="0" y="4" width="10" height="2" /></element>
<!-- board -->
<element ref="text_uib1"><bounds x="0" y="9" width="10" height="2" /></element>
<element ref="cwhite"><bounds x="1" y="11.5" width="8" height="2.5" /></element>
<element ref="cwhite"><bounds x="1" y="15" width="8" height="2.5" /></element>
<element ref="text_uib2"><bounds x="1.5" y="11.75" width="7" height="2" /></element>
<element ref="text_uib3"><bounds x="1.5" y="15.25" width="7" height="2" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x200"><bounds x="1" y="11.5" width="8" height="2.5" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x100"><bounds x="1" y="15" width="8" height="2.5" /><color alpha="0.25" /></element>
<!-- spawn -->
<element ref="text_uis1"><bounds x="0" y="20.5" width="10" height="2" /></element>
<element ref="cwhite"><bounds x="1" y="23" width="8" height="12" /></element>
<element ref="cwhite"><bounds x="1" y="36" width="8" height="12" /></element>
<element name="piece_ui1" ref="piece"><bounds x="1" y="23" width="4" height="4" /></element>
<element name="piece_ui2" ref="piece"><bounds x="1" y="27" width="4" height="4" /></element>
<element name="piece_ui3" ref="piece"><bounds x="1" y="31" width="4" height="4" /></element>
<element name="piece_ui4" ref="piece"><bounds x="5" y="23" width="4" height="4" /></element>
<element name="piece_ui5" ref="piece"><bounds x="5" y="27" width="4" height="4" /></element>
<element name="piece_ui6" ref="piece"><bounds x="5" y="31" width="4" height="4" /></element>
<element name="piece_ui7" ref="piece"><bounds x="1" y="36" width="4" height="4" /></element>
<element name="piece_ui8" ref="piece"><bounds x="1" y="40" width="4" height="4" /></element>
<element name="piece_ui9" ref="piece"><bounds x="1" y="44" width="4" height="4" /></element>
<element name="piece_ui10" ref="piece"><bounds x="5" y="36" width="4" height="4" /></element>
<element name="piece_ui11" ref="piece"><bounds x="5" y="40" width="4" height="4" /></element>
<element name="piece_ui12" ref="piece"><bounds x="5" y="44" width="4" height="4" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0001"><bounds x="1" y="23" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0002"><bounds x="1" y="27" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0004"><bounds x="1" y="31" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0008"><bounds x="5" y="23" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0010"><bounds x="5" y="27" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0020"><bounds x="5" y="31" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0040"><bounds x="1" y="36" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0080"><bounds x="1" y="40" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0100"><bounds x="1" y="44" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0200"><bounds x="5" y="36" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0400"><bounds x="5" y="40" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0800"><bounds x="5" y="44" width="4" height="4" /><color alpha="0.25" /></element>
<!-- hand -->
<element ref="text_uih1"><bounds x="0" y="51" width="10" height="2" /></element>
<element ref="cblack"><bounds x="1" y="53.5" width="8" height="6" /></element>
<element name="piece_ui0" ref="piece"><bounds x="2" y="53.5" width="6" height="6" /></element>
<element ref="cwhite"><bounds x="1" y="60.5" width="8" height="2.5" /></element>
<element ref="text_uih2"><bounds x="1.5" y="60.75" width="7" height="2" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x08"><bounds x="1" y="60.5" width="8" height="2.5" /><color alpha="0.25" /></element>
<!-- undo -->
<element ref="text_uiu1"><bounds x="0" y="66" width="10" height="2" /></element>
<element ref="cwhite"><bounds x="1" y="68.5" width="1.7" height="6" /></element>
<element ref="cwhite"><bounds x="3.1" y="68.5" width="1.7" height="6" /></element>
<element ref="cwhite"><bounds x="5.2" y="68.5" width="1.7" height="6" /></element>
<element ref="cwhite"><bounds x="7.3" y="68.5" width="1.7" height="6" /></element>
<element ref="text_uiu2a"><bounds x="1" y="69.5" width="1.7" height="4" /></element>
<element ref="text_uiu2b"><bounds x="3.1" y="69.5" width="1.7" height="4" /></element>
<element ref="text_uiu2c"><bounds x="5.2" y="69.5" width="1.7" height="4" /></element>
<element ref="text_uiu2d"><bounds x="7.3" y="69.5" width="1.7" height="4" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x10"><bounds x="1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x20"><bounds x="3.1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x40"><bounds x="5.2" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x80"><bounds x="7.3" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element name="count_ui0" ref="text_uiu3a"><bounds x="0" y="75" width="4" height="2" /></element>
<element name="count_ui1" ref="text_uiu3c"><bounds x="6" y="75" width="4" height="2" /></element>
<element ref="text_uiu3b"><bounds x="4" y="75" width="2" height="2" /></element>
</group>
<!-- button panel -->
<element name="cyan"><rect><color red="0.3" green="0.85" blue="0.85" /></rect></element>
<element name="text_r11"><text string="HINT"></text></element>
<element name="text_r12"><text string="SOUND"></text></element>
<element name="text_r13"><text string="POSITION"></text></element>
<element name="text_r14"><text string="LEVEL"></text></element>
<element name="text_r15"><text string="BACK"></text></element>
<element name="text_r15a"><text string="TAKE"></text></element>
<element name="text_r21"><text string="TEST"></text></element>
<element name="text_r22"><text string="COLOR"></text></element>
<element name="text_r23"><text string="RESET"></text></element>
<element name="text_r24"><text string="MONITOR"></text></element>
<element name="text_r25"><text string="MOVE"></text></element>
<element name="text_on"><text string="ON"><color red="0.05" green="0.05" blue="0.05" /></text></element>
<element name="text_off"><text string="OFF"><color red="0.05" green="0.05" blue="0.05" /></text></element>
<element name="text_save"><text string="SAVE"><color red="0.91" green="0.9" blue="0.89" /></text></element>
<element name="text_p1"><image file="chess/wp.svg"/></element>
<element name="text_p2"><image file="chess/wn.svg"/></element>
<element name="text_p3"><image file="chess/wb.svg"/></element>
<element name="text_p4"><image file="chess/wr.svg"/></element>
<element name="text_p5"><image file="chess/wq.svg"/></element>
<element name="text_p6"><image file="chess/wk.svg"/></element>
<element name="hlb" defstate="0">
<disk state="1"><color red="0.2" green="0.2" blue="0.2" /></disk>
</element>
<group name="buttons1">
<bounds x="0" y="0" width="100" height="30" />
<element ref="text_r15a"><bounds xc="50" y="4.8" width="10" height="2.5" /></element>
<repeat count="5">
<param name="x" start="10" increment="10" />
<param name="i" start="1" increment="1" />
<element ref="text_r1~i~"><bounds xc="~x~" y="7.0" width="10" height="2.5" /></element>
<element ref="white2" blend="multiply"><bounds xc="~x~" y="1" width="10" height="9" /></element>
<element ref="cyan"><bounds xc="~x~" y="10" width="8.5" height="1" /></element>
</repeat>
<repeat count="5">
<param name="x" start="10" increment="10" />
<param name="i" start="1" increment="1" />
<element ref="text_r2~i~"><bounds xc="~x~" y="18.5" width="10" height="2.5" /></element>
<element ref="white2" blend="multiply"><bounds xc="~x~" y="12.5" width="10" height="9" /></element>
<element ref="cyan"><bounds xc="~x~" y="21.5" width="8.5" height="1" /></element>
</repeat>
<element ref="hlb" blend="add" inputtag="IN.1" inputmask="0x20"><bounds xc="10" y="4" width="10" height="10" /></element>
<element ref="hlb" blend="add" inputtag="IN.1" inputmask="0x08"><bounds xc="20" y="4" width="10" height="10" /></element>
<element ref="hlb" blend="add" inputtag="IN.1" inputmask="0x02"><bounds xc="30" y="4" width="10" height="10" /></element>
<element ref="hlb" blend="add" inputtag="IN.1" inputmask="0x40"><bounds xc="40" y="4" width="10" height="10" /></element>
<element ref="hlb" blend="add" inputtag="IN.0" inputmask="0x40"><bounds xc="50" y="4" width="10" height="10" /></element>
<element ref="hlb" blend="add" inputtag="IN.1" inputmask="0x10"><bounds xc="10" y="15.5" width="10" height="10" /></element>
<element ref="hlb" blend="add" inputtag="IN.1" inputmask="0x04"><bounds xc="20" y="15.5" width="10" height="10" /></element>
<element ref="hlb" blend="add" inputtag="IN.1" inputmask="0x01"><bounds xc="30" y="15.5" width="10" height="10" /></element>
<element ref="hlb" blend="add" inputtag="IN.1" inputmask="0x80"><bounds xc="40" y="15.5" width="10" height="10" /></element>
<element ref="hlb" blend="add" inputtag="IN.0" inputmask="0x80"><bounds xc="50" y="15.5" width="10" height="10" /></element>
</group>
<group name="buttons2">
<bounds x="0" y="0" width="100" height="30" />
<repeat count="6">
<param name="x" start="10" increment="10" />
<param name="i" start="1" increment="1" />
<element ref="text_p~i~"><bounds xc="~x~" y="4.8" width="5" height="5" /></element>
<element ref="white2" blend="multiply"><bounds xc="~x~" y="1" width="10" height="9" /></element>
<element ref="cyan"><bounds xc="~x~" y="10" width="8.5" height="1" /></element>
</repeat>
<element ref="hlb" blend="add" inputtag="IN.0" inputmask="0x01"><bounds xc="10" y="4" width="10" height="10" /></element>
<element ref="hlb" blend="add" inputtag="IN.0" inputmask="0x02"><bounds xc="20" y="4" width="10" height="10" /></element>
<element ref="hlb" blend="add" inputtag="IN.0" inputmask="0x04"><bounds xc="30" y="4" width="10" height="10" /></element>
<element ref="hlb" blend="add" inputtag="IN.0" inputmask="0x08"><bounds xc="40" y="4" width="10" height="10" /></element>
<element ref="hlb" blend="add" inputtag="IN.0" inputmask="0x10"><bounds xc="50" y="4" width="10" height="10" /></element>
<element ref="hlb" blend="add" inputtag="IN.0" inputmask="0x20"><bounds xc="60" y="4" width="10" height="10" /></element>
</group>
<group name="buttons3">
<bounds x="0" y="0" width="20" height="30" />
<element ref="white2"><bounds xc="10" y="8.5" width="8.5" height="2.5" /></element>
<element ref="text_on"><bounds xc="10" y="8.5" width="10" height="2.5" /></element>
<element ref="hlb" blend="add" inputtag="RESET" inputmask="0x01"><bounds xc="10" y="4" width="10" height="10" /></element>
<element ref="white2"><bounds xc="10" y="20.0" width="8.5" height="2.5" /></element>
<element ref="text_off"><bounds xc="10" y="20.0" width="10" height="2.5" /></element>
<element ref="text_save"><bounds xc="10" y="22.5" width="10" height="2.5" /></element>
<element ref="hlb" blend="add" inputtag="IN.2" inputmask="0x01"><bounds xc="10" y="15.5" width="10" height="10" /></element>
</group>
<!-- build screen -->
<view name="Internal Layout">
<bounds left="-5" right="96.5" top="6.5" bottom="106.5" />
<group ref="buttons1"><bounds x="64.5" y="91" width="50" height="15" /></group>
<group ref="buttons2"><bounds x="34.5" y="93.75" width="50" height="15" /></group>
<group ref="buttons3"><bounds x="29.5" y="91" width="10" height="15" /></group>
<element ref="white2"><bounds xc="18.5" yc="98.5" width="20" height="10.153" /></element>
<element ref="blackb"><bounds xc="18.5" yc="98.5" width="19.5" height="9.653" /></element>
<screen index="0"><bounds xc="18.5" yc="98.5" width="17" height="8.153" /></screen>
<element ref="lcdm" blend="multiply"><bounds xc="18.5" yc="98.5" width="19" height="9.653" /></element>
<element ref="white2"><bounds x="8.5" y="8.5" width="83" height="83" /></element>
<group ref="sb_board"><bounds x="10" y="10" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="-3.5" y="10" width="10" height="80" /></group>
<!-- chessboard leds -->
<repeat count="8">
<param name="y" start="15" increment="10" />
<param name="i" start="7" increment="-1" />
<element name="0.~i~" ref="led"><bounds x="90.25" yc="~y~" width="1" height="1" /></element>
</repeat>
<repeat count="8">
<param name="x" start="15" increment="10" />
<param name="i" start="0" increment="1" />
<element name="1.~i~" ref="led"><bounds xc="~x~" y="90.25" width="1" height="1" /></element>
</repeat>
</view>
</mamelayout>