exchess: rename driver to exechess to prevent confusion with expchess

New working systems
-------------------
Chess Companion II [hap, Sean Riddle]

New working clones
------------------
Explorer Chess [hap, Sean Riddle]
This commit is contained in:
hap 2023-11-05 13:56:28 +01:00
parent d2d54fb8ed
commit 106bbe0f5a
9 changed files with 1522 additions and 42 deletions

View File

@ -91,7 +91,7 @@ known chips:
*A04 HD44868 1984, SciSys Rapier
*A07 HD44868 1984, Chess King Pocket Micro Deluxe
*A12 HD44868 1985, SciSys MK 10 / Pocket Chess
*A12 HD44868 1985, SciSys MK 10 / Pocket Chess / Electronic Trio
*A14 HD44868 1985, SciSys Kasparov Plus
*A16 HD44868 1988, Saitek Pocket Checkers

View File

@ -17,7 +17,7 @@ license:CC0-1.0
<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.2" green="0.02" blue="0.03" /></disk>
<disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk>
</element>
<element name="text_1">
@ -578,11 +578,9 @@ license:CC0-1.0
<!-- build screen -->
<view name="Internal Layout">
<bounds left="-14" right="120" top="-1" bottom="88" />
<bounds left="-14" right="120" top="-2" bottom="88" />
<element ref="cwhite"><bounds x="-1" y="-1" width="88.5" height="89" /></element>
<element ref="cwhite"><bounds x="87" y="-1" width="33" height="89" /></element>
<element ref="cwhite"><bounds x="-1" y="-2" width="121" height="90" /></element>
<group ref="panel"><bounds x="88" y="28.7" width="31" height="59" /></group>
<element ref="black2"><bounds x="3.7" y="2.7" width="80.6" height="80.6" /></element>

View File

@ -0,0 +1,599 @@
<?xml version="1.0"?>
<!--
license:CC0-1.0
-->
<mamelayout version="2">
<!-- define elements -->
<element name="black"><rect><color red="0" green="0" blue="0" /></rect></element>
<element name="black2"><rect><color red="0.18" green="0.17" blue="0.17" /></rect></element>
<element name="white"><rect><color red="1" green="1" blue="1" /></rect></element>
<element name="hl" defstate="0">
<rect state="0"><color red="1" green="1" blue="1" /></rect>
<rect state="1"><color red="0.86" green="0.86" blue="0.86" /></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_1">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="1"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_2">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="2"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_3">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="3"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_4">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="4"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_5">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="5"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_6">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="6"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_7">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="7"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_8">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="8"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_a">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="A"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_b">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="B"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_c">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="C"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_d">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="D"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_e">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="E"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_f">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="F"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_g">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="G"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_h">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="H"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_l1">
<rect><color red="1" green="1" blue="1" /></rect>
<text string="WHITE" align="2"><color red="0.12" green="0.12" blue="0.12" /></text>
</element>
<element name="text_l2">
<rect><color red="1" green="1" blue="1" /></rect>
<text string="BLACK" align="2"><color red="0.12" green="0.12" blue="0.12" /></text>
</element>
<element name="text_l3">
<rect><color red="1" green="1" blue="1" /></rect>
<text string="ENTER POS" align="2"><color red="0.12" green="0.12" blue="0.12" /></text>
</element>
<element name="text_l4">
<rect><color red="1" green="1" blue="1" /></rect>
<text string="CHECK" align="2"><color red="0.12" green="0.12" blue="0.12" /></text>
</element>
<element name="text_l5">
<rect><color red="1" green="1" blue="1" /></rect>
<text string="MATE" align="2"><color red="0.12" green="0.12" blue="0.12" /></text>
</element>
<element name="text_l6">
<rect><color red="1" green="1" blue="1" /></rect>
<text string="VERIFY-ENTER POSITION"><color red="0.12" green="0.12" blue="0.12" /></text>
</element>
<element name="text_b1b">
<rect><color red="1" green="1" blue="1" /></rect>
<text string="PLAY"><color red="0.12" green="0.12" blue="0.12" /></text>
</element>
<element name="text_b2b">
<rect><color red="1" green="1" blue="1" /></rect>
<text string="LEVEL"><color red="0.12" green="0.12" blue="0.12" /></text>
</element>
<element name="text_b3b">
<rect><color red="1" green="1" blue="1" /></rect>
<text string="SOUND"><color red="0.12" green="0.12" blue="0.12" /></text>
</element>
<element name="text_b4a">
<rect><color red="1" green="1" blue="1" /></rect>
<text string="MULTI"><color red="0.12" green="0.12" blue="0.12" /></text>
</element>
<element name="text_b4b">
<rect><color red="1" green="1" blue="1" /></rect>
<text string="MOVE"><color red="0.12" green="0.12" blue="0.12" /></text>
</element>
<element name="text_b5a">
<rect><color red="1" green="1" blue="1" /></rect>
<text string="TAKE"><color red="0.12" green="0.12" blue="0.12" /></text>
</element>
<element name="text_b5b">
<rect><color red="1" green="1" blue="1" /></rect>
<text string="BACK"><color red="0.12" green="0.12" blue="0.12" /></text>
</element>
<element name="text_b6a">
<rect><color red="1" green="1" blue="1" /></rect>
<text string="ENTER"><color red="0.12" green="0.12" blue="0.12" /></text>
</element>
<element name="text_b6b">
<rect><color red="1" green="1" blue="1" /></rect>
<text string="POS"><color red="0.12" green="0.12" blue="0.12" /></text>
</element>
<element name="text_b7b">
<rect><color red="1" green="1" blue="1" /></rect>
<text string="COLOR"><color red="0.12" green="0.12" blue="0.12" /></text>
</element>
<element name="text_b8a">
<rect><color red="1" green="1" blue="1" /></rect>
<text string="NEW"><color red="0.12" green="0.12" blue="0.12" /></text>
</element>
<element name="text_b8b">
<rect><color red="1" green="1" blue="1" /></rect>
<text string="GAME"><color red="0.12" green="0.12" blue="0.12" /></text>
</element>
<element name="text_p1"><image file="chess/bk.svg"/></element>
<element name="text_p2"><image file="chess/bq.svg"/></element>
<element name="text_p3"><image file="chess/br.svg"/></element>
<element name="text_p4"><image file="chess/bb.svg"/></element>
<element name="text_p5"><image file="chess/bn.svg"/></element>
<element name="text_p6"><image file="chess/bp.svg"/></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>
<!-- 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">
<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" />
<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>
<!-- right side panel -->
<group name="panel">
<bounds x="87" y="5" width="31" height="59" />
<element ref="white"><bounds x="87" y="5" width="31" height="59" /></element>
<element ref="black"><bounds x="88.7" y="12.1" width="27.6" height="0.3" /></element>
<element ref="black"><bounds x="88.7" y="15.1" width="27.6" height="0.3" /></element>
<element ref="black"><bounds x="88.7" y="18.1" width="27.6" height="0.3" /></element>
<element ref="black"><bounds x="88.7" y="21.1" width="27.6" height="0.3" /></element>
<element ref="black"><bounds x="88.7" y="24.1" width="27.6" height="0.3" /></element>
<element ref="black"><bounds x="88.7" y="27.1" width="27.6" height="0.3" /></element>
<element ref="black"><bounds x="88.7" y="29.7" width="5.1" height="5.6" /></element>
<element ref="black"><bounds x="96.2" y="29.7" width="5.1" height="5.6" /></element>
<element ref="black"><bounds x="103.7" y="29.7" width="5.1" height="5.6" /></element>
<element ref="black"><bounds x="111.2" y="29.7" width="5.1" height="5.6" /></element>
<element ref="black"><bounds x="88.7" y="37.7" width="5.1" height="5.6" /></element>
<element ref="black"><bounds x="96.2" y="37.7" width="5.1" height="5.6" /></element>
<element ref="black"><bounds x="103.7" y="37.7" width="5.1" height="5.6" /></element>
<element ref="black"><bounds x="111.2" y="37.7" width="5.1" height="5.6" /></element>
<element ref="black"><bounds x="88.7" y="45.7" width="7.6" height="5.6" /></element>
<element ref="black"><bounds x="98.7" y="45.7" width="7.6" height="5.6" /></element>
<element ref="black"><bounds x="108.7" y="45.7" width="7.6" height="5.6" /></element>
<element ref="black"><bounds x="88.7" y="53.7" width="7.6" height="5.6" /></element>
<element ref="black"><bounds x="98.7" y="53.7" width="7.6" height="5.6" /></element>
<element ref="black"><bounds x="108.7" y="53.7" width="7.6" height="5.6" /></element>
<element ref="white"><bounds x="89.0" y="30" width="4.5" height="5" /></element>
<element ref="white"><bounds x="96.5" y="30" width="4.5" height="5" /></element>
<element ref="white"><bounds x="104.0" y="30" width="4.5" height="5" /></element>
<element ref="white"><bounds x="111.5" y="30" width="4.5" height="5" /></element>
<element ref="white"><bounds x="89.0" y="38" width="4.5" height="5" /></element>
<element ref="white"><bounds x="96.5" y="38" width="4.5" height="5" /></element>
<element ref="white"><bounds x="104.0" y="38" width="4.5" height="5" /></element>
<element ref="white"><bounds x="111.5" y="38" width="4.5" height="5" /></element>
<element ref="white"><bounds x="89" y="46" width="7" height="5" /></element>
<element ref="white"><bounds x="99" y="46" width="7" height="5" /></element>
<element ref="white"><bounds x="109" y="46" width="7" height="5" /></element>
<element ref="white"><bounds x="89" y="54" width="7" height="5" /></element>
<element ref="white"><bounds x="99" y="54" width="7" height="5" /></element>
<element ref="white"><bounds x="109" y="54" width="7" height="5" /></element>
<element ref="text_p1"><bounds x="91.1" y="47" width="2.8" height="2.8" /></element>
<element ref="text_p2"><bounds x="101.1" y="47" width="2.8" height="2.8" /></element>
<element ref="text_p3"><bounds x="111.1" y="47" width="2.8" height="2.8" /></element>
<element ref="text_p4"><bounds x="91.1" y="55" width="2.8" height="2.8" /></element>
<element ref="text_p5"><bounds x="101.1" y="55" width="2.8" height="2.8" /></element>
<element ref="text_p6"><bounds x="111.1" y="55" width="2.8" height="2.8" /></element>
<element ref="black2" blend="add"><bounds x="87" y="5" width="31" height="59" /></element>
<element ref="text_l1"><bounds x="105" y="13.1" width="10" height="1.3" /></element>
<element ref="text_l2"><bounds x="105" y="16.1" width="10" height="1.3" /></element>
<element ref="text_l3"><bounds x="105" y="19.1" width="10" height="1.3" /></element>
<element ref="text_l4"><bounds x="105" y="22.1" width="10" height="1.3" /></element>
<element ref="text_l5"><bounds x="105" y="25.1" width="10" height="1.3" /></element>
<element ref="text_l6"><bounds x="88" y="61.5" width="29" height="1.3" /></element>
<element ref="text_b1b"><bounds x="89.0" y="33.4" width="4.5" height="1.3" /></element>
<element ref="text_b2b"><bounds x="96.5" y="33.4" width="4.5" height="1.3" /></element>
<element ref="text_b3b"><bounds x="104.0" y="33.4" width="4.5" height="1.3" /></element>
<element ref="text_b4a"><bounds x="111.5" y="32.2" width="4.5" height="1.3" /></element>
<element ref="text_b4b"><bounds x="111.5" y="33.4" width="4.5" height="1.3" /></element>
<element ref="text_b5a"><bounds x="89.0" y="40.2" width="4.5" height="1.3" /></element>
<element ref="text_b5b"><bounds x="89.0" y="41.4" width="4.5" height="1.3" /></element>
<element ref="text_b6a"><bounds x="96.5" y="40.2" width="4.5" height="1.3" /></element>
<element ref="text_b6b"><bounds x="96.5" y="41.4" width="4.5" height="1.3" /></element>
<element ref="text_b7b"><bounds x="104.0" y="41.4" width="4.5" height="1.3" /></element>
<element ref="text_b8a"><bounds x="111.5" y="40.2" width="4.5" height="1.3" /></element>
<element ref="text_b8b"><bounds x="111.5" y="41.4" width="4.5" height="1.3" /></element>
<element ref="cwhite" blend="multiply"><bounds x="87" y="5" width="31" height="59" /></element>
<element ref="hl" blend="multiply" inputtag="IN.4" inputmask="0x02"><bounds x="89.0" y="30" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.1" inputmask="0x02"><bounds x="96.5" y="30" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.1" inputmask="0x01"><bounds x="104.0" y="30" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.2" inputmask="0x02"><bounds x="111.5" y="30" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.6" inputmask="0x02"><bounds x="89.0" y="38" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.5" inputmask="0x02"><bounds x="96.5" y="38" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.2" inputmask="0x01"><bounds x="104.0" y="38" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.7" inputmask="0x02"><bounds x="111.5" y="38" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.3" inputmask="0x01"><bounds x="89" y="46" width="7" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.3" inputmask="0x02"><bounds x="99" y="46" width="7" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.4" inputmask="0x01"><bounds x="109" y="46" width="7" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.5" inputmask="0x01"><bounds x="89" y="54" width="7" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.6" inputmask="0x01"><bounds x="99" y="54" width="7" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.7" inputmask="0x01"><bounds x="109" y="54" width="7" height="5" /></element>
<element name="0.a" ref="led"><bounds x="90" y="13" width="1.5" height="1.5" /></element>
<element name="1.a" ref="led"><bounds x="90" y="16" width="1.5" height="1.5" /></element>
<element name="2.a" ref="led"><bounds x="90" y="19" width="1.5" height="1.5" /></element>
<element name="3.a" ref="led"><bounds x="90" y="22" width="1.5" height="1.5" /></element>
<element name="4.a" ref="led"><bounds x="90" y="25" width="1.5" height="1.5" /></element>
</group>
<!-- build screen -->
<view name="Internal Layout">
<bounds left="-14" right="120" top="-2" bottom="88" />
<element ref="cwhite"><bounds x="-1" y="-2" width="121" height="90" /></element>
<group ref="panel"><bounds x="88" y="28.7" width="31" height="59" /></group>
<element ref="black2"><bounds x="3.7" y="2.7" width="80.6" height="80.6" /></element>
<group ref="sb_board"><bounds x="4" y="3" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="-12.5" y="3" width="10" height="80" /></group>
<element ref="text_8"><bounds x="-0.4" y="7" width="2" height="2" /></element>
<element ref="text_7"><bounds x="-0.4" y="17" width="2" height="2" /></element>
<element ref="text_6"><bounds x="-0.4" y="27" width="2" height="2" /></element>
<element ref="text_5"><bounds x="-0.4" y="37" width="2" height="2" /></element>
<element ref="text_4"><bounds x="-0.4" y="47" width="2" height="2" /></element>
<element ref="text_3"><bounds x="-0.4" y="57" width="2" height="2" /></element>
<element ref="text_2"><bounds x="-0.4" y="67" width="2" height="2" /></element>
<element ref="text_1"><bounds x="-0.4" y="77" width="2" height="2" /></element>
<element ref="text_a"><bounds x="8" y="85.6" width="2" height="2" /></element>
<element ref="text_b"><bounds x="18" y="85.6" width="2" height="2" /></element>
<element ref="text_c"><bounds x="28" y="85.6" width="2" height="2" /></element>
<element ref="text_d"><bounds x="38" y="85.6" width="2" height="2" /></element>
<element ref="text_e"><bounds x="48" y="85.6" width="2" height="2" /></element>
<element ref="text_f"><bounds x="58" y="85.6" width="2" height="2" /></element>
<element ref="text_g"><bounds x="68" y="85.6" width="2" height="2" /></element>
<element ref="text_h"><bounds x="78" y="85.6" width="2" height="2" /></element>
<element name="5.0" ref="led"><bounds x="1.6" y="7.25" width="1.5" height="1.5" /></element>
<element name="5.1" ref="led"><bounds x="1.6" y="17.25" width="1.5" height="1.5" /></element>
<element name="5.2" ref="led"><bounds x="1.6" y="27.25" width="1.5" height="1.5" /></element>
<element name="5.3" ref="led"><bounds x="1.6" y="37.25" width="1.5" height="1.5" /></element>
<element name="5.4" ref="led"><bounds x="1.6" y="47.25" width="1.5" height="1.5" /></element>
<element name="5.5" ref="led"><bounds x="1.6" y="57.25" width="1.5" height="1.5" /></element>
<element name="5.6" ref="led"><bounds x="1.6" y="67.25" width="1.5" height="1.5" /></element>
<element name="5.7" ref="led"><bounds x="1.6" y="77.25" width="1.5" height="1.5" /></element>
<element name="6.7" ref="led"><bounds x="8.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="6.6" ref="led"><bounds x="18.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="6.5" ref="led"><bounds x="28.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="6.4" ref="led"><bounds x="38.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="6.3" ref="led"><bounds x="48.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="6.2" ref="led"><bounds x="58.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="6.1" ref="led"><bounds x="68.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="6.0" ref="led"><bounds x="78.25" y="83.9" width="1.5" height="1.5" /></element>
</view>
</mamelayout>

View File

@ -42,6 +42,7 @@ license:CC0-1.0
<element name="text_l12"><text string="BACK"><color red="0.75" green="0.25" blue="0.2" /></text></element>
<element name="text_l13"><text string="MM"><color red="0.75" green="0.25" blue="0.2" /></text></element>
<!-- display -->
<element name="lcd_bg1"><rect><color red="0.4" green="1.0" blue="0.75" /></rect></element>

View File

@ -0,0 +1,532 @@
<?xml version="1.0"?>
<!--
license:CC0-1.0
-->
<mamelayout version="2">
<!-- define elements -->
<element name="black2"><rect><color red="0.18" green="0.17" blue="0.17" /></rect></element>
<element name="red"><rect><color red="0.75" green="0.25" blue="0.2" /></rect></element>
<element name="but" defstate="0">
<rect state="0"><color red="0.81" green="0.8" blue="0.79" /></rect>
<rect state="1"><color red="0.61" green="0.61" blue="0.59" /></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="led2" defstate="0">
<disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk>
<disk state="0"><color red="0.14" green="0.014" blue="0.02" /></disk>
</element>
<!-- these should actually be white, but that would be hard to see here since the gray is quite light -->
<element name="text_1">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="1"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_2">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="2"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_3">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="3"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_4">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="4"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_5">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="5"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_6">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="6"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_7">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="7"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_8">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="8"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_a">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="A"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_b">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="B"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_c">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="C"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_d">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="D"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_e">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="E"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_f">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="F"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_g">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="G"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_h">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="H"><color red="0.15" green="0.14" blue="0.14" /></text>
</element>
<element name="text_l1"><text string="WHITE" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l2"><text string="BLACK" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l3"><text string="2nd F" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l4"><text string="CHECK" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l5"><text string="MATE" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b1a"><text string="NEW" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b1b"><text string="GAME" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b2a"><text string="LEVEL" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b3a"><text string="PLAY" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b4a"><text string="2nd F" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b4b"><text string="ON" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b5a"><text string="TAKE" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b5b"><text string="BACK" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b6a"><text string="WHITE/" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b6b"><text string="BLACK" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b9a"><text string="VERIFY" align="2"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b1c"><text string="CLEAR" align="1"><color red="0.75" green="0.25" blue="0.2" /></text></element>
<element name="text_b1d"><text string="BOARD" align="1"><color red="0.75" green="0.25" blue="0.2" /></text></element>
<element name="text_b2c"><text string="SOUND" align="1"><color red="0.75" green="0.25" blue="0.2" /></text></element>
<element name="text_b3c"><text string="PVP" align="1"><color red="0.75" green="0.25" blue="0.2" /></text></element>
<element name="text_b4c"><text string="OFF" align="1"><color red="0.75" green="0.25" blue="0.2" /></text></element>
<element name="text_b9c"><text string="SET UP" align="2"><color red="0.75" green="0.25" blue="0.2" /></text></element>
<element name="text_p1"><image file="chess/wk.svg"></image></element>
<element name="text_p2"><image file="chess/wq.svg"></image></element>
<element name="text_p3"><image file="chess/wr.svg"></image></element>
<element name="text_p4"><image file="chess/wb.svg"></image></element>
<element name="text_p5"><image file="chess/wn.svg"></image></element>
<element name="text_p6"><image file="chess/wp.svg"></image></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>
<!-- 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">
<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" />
<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 -->
<group name="panel1">
<bounds x="0" y="0" width="70" height="50" />
<element ref="text_p1"><bounds x="41.0" y="14.2" width="4.1" height="4.1" /></element>
<element ref="text_p2"><bounds x="50.5" y="14.2" width="4.1" height="4.1" /></element>
<element ref="text_p3"><bounds x="22.0" y="28.2" width="4.1" height="4.1" /></element>
<element ref="text_p4"><bounds x="31.5" y="28.2" width="4.1" height="4.1" /></element>
<element ref="text_p5"><bounds x="41.0" y="28.2" width="4.1" height="4.1" /></element>
<element ref="text_p6"><bounds x="50.5" y="28.2" width="4.1" height="4.1" /></element>
<element ref="cwhite" blend="multiply"><bounds x="20" y="10" width="38" height="25" /></element>
<element ref="text_b1a"><bounds x="22.6" y="0.7" width="10" height="1.8" /></element>
<element ref="text_b1b"><bounds x="22.6" y="2.4" width="10" height="1.8" /></element>
<element ref="text_b1c"><bounds x="22.6" y="5.8" width="10" height="1.8" /></element>
<element ref="text_b1d"><bounds x="22.6" y="7.5" width="10" height="1.8" /></element>
<element ref="text_b2a"><bounds x="32.1" y="0.7" width="10" height="1.8" /></element>
<element ref="text_b2c"><bounds x="32.1" y="5.8" width="10" height="1.8" /></element>
<element ref="text_b3a"><bounds x="41.6" y="0.7" width="10" height="1.8" /></element>
<element ref="text_b3c"><bounds x="41.6" y="5.8" width="10" height="1.8" /></element>
<element ref="text_b4a"><bounds x="51.1" y="0.7" width="10" height="1.8" /></element>
<element ref="text_b4b"><bounds x="51.1" y="2.4" width="10" height="1.8" /></element>
<element ref="text_b4c"><bounds x="51.1" y="5.8" width="10" height="1.8" /></element>
<element ref="text_b5a"><bounds x="22.6" y="14.7" width="10" height="1.8" /></element>
<element ref="text_b5b"><bounds x="22.6" y="16.4" width="10" height="1.8" /></element>
<element ref="text_b6a"><bounds x="32.1" y="14.7" width="10" height="1.8" /></element>
<element ref="text_b6b"><bounds x="32.1" y="16.4" width="10" height="1.8" /></element>
<element ref="text_b9a"><bounds x="9.5" y="28.7" width="10" height="1.8" /></element>
<element ref="text_b9c"><bounds x="9.5" y="33.8" width="10" height="1.8" /></element>
<element ref="but" inputtag="IN.3" inputmask="0x01"><bounds x="20.0" y="1" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.3" inputmask="0x02"><bounds x="29.5" y="1" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.4" inputmask="0x02"><bounds x="39.0" y="1" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.4" inputmask="0x01"><bounds x="48.5" y="1" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.2" inputmask="0x02"><bounds x="20.0" y="15" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.2" inputmask="0x01"><bounds x="29.5" y="15" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.7" inputmask="0x01"><bounds x="39.0" y="15" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.7" inputmask="0x02"><bounds x="48.5" y="15" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.0" inputmask="0x02"><bounds x="20.0" y="29" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.1" inputmask="0x02"><bounds x="29.5" y="29" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.5" inputmask="0x02"><bounds x="39.0" y="29" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.6" inputmask="0x02"><bounds x="48.5" y="29" width="1.8" height="8" /></element>
</group>
<!-- status leds -->
<group name="panel2">
<bounds x="0" y="0" width="10" height="30" />
<element name="0.a" ref="led2"><bounds x="0" yc="9" width="1.5" height="1.5" /></element>
<element name="1.a" ref="led2"><bounds x="0" yc="12" width="1.5" height="1.5" /></element>
<element name="2.a" ref="led2"><bounds x="0" yc="15" width="1.5" height="1.5" /></element>
<element name="3.a" ref="led2"><bounds x="0" yc="18" width="1.5" height="1.5" /></element>
<element name="4.a" ref="led2"><bounds x="0" yc="21" width="1.5" height="1.5" /></element>
<element ref="text_l1"><bounds x="2.5" yc="9" width="10" height="1.8" /></element>
<element ref="text_l2"><bounds x="2.5" yc="12" width="10" height="1.8" /></element>
<element ref="text_l3"><bounds x="2.5" yc="15" width="10" height="1.8" /></element>
<element ref="text_l4"><bounds x="2.5" yc="18" width="10" height="1.8" /></element>
<element ref="text_l5"><bounds x="2.5" yc="21" width="10" height="1.8" /></element>
<element ref="red"><bounds x="0" yc="7.5" width="8.5" height="0.2" /></element>
<element ref="red"><bounds x="0" yc="10.5" width="8.5" height="0.2" /></element>
<element ref="red"><bounds x="0" yc="13.5" width="8.5" height="0.2" /></element>
<element ref="red"><bounds x="0" yc="16.5" width="8.5" height="0.2" /></element>
<element ref="red"><bounds x="0" yc="19.5" width="8.5" height="0.2" /></element>
<element ref="red"><bounds x="0" yc="22.5" width="8.5" height="0.2" /></element>
</group>
<!-- build screen -->
<view name="Internal Layout">
<bounds left="-14" right="133.9" top="-2" bottom="88" />
<element ref="cwhite"><bounds x="-1" y="-2" width="90" height="90" /></element>
<element ref="black2"><bounds x="3.7" y="2.7" width="80.6" height="80.6" /></element>
<group ref="sb_board"><bounds x="4" y="3" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="-12.5" y="3" width="10" height="80" /></group>
<element ref="text_8"><bounds x="-0.4" y="7" width="2" height="2" /></element>
<element ref="text_7"><bounds x="-0.4" y="17" width="2" height="2" /></element>
<element ref="text_6"><bounds x="-0.4" y="27" width="2" height="2" /></element>
<element ref="text_5"><bounds x="-0.4" y="37" width="2" height="2" /></element>
<element ref="text_4"><bounds x="-0.4" y="47" width="2" height="2" /></element>
<element ref="text_3"><bounds x="-0.4" y="57" width="2" height="2" /></element>
<element ref="text_2"><bounds x="-0.4" y="67" width="2" height="2" /></element>
<element ref="text_1"><bounds x="-0.4" y="77" width="2" height="2" /></element>
<element ref="text_a"><bounds x="8" y="85.6" width="2" height="2" /></element>
<element ref="text_b"><bounds x="18" y="85.6" width="2" height="2" /></element>
<element ref="text_c"><bounds x="28" y="85.6" width="2" height="2" /></element>
<element ref="text_d"><bounds x="38" y="85.6" width="2" height="2" /></element>
<element ref="text_e"><bounds x="48" y="85.6" width="2" height="2" /></element>
<element ref="text_f"><bounds x="58" y="85.6" width="2" height="2" /></element>
<element ref="text_g"><bounds x="68" y="85.6" width="2" height="2" /></element>
<element ref="text_h"><bounds x="78" y="85.6" width="2" height="2" /></element>
<element name="5.0" ref="led"><bounds x="1.6" y="7.25" width="1.5" height="1.5" /></element>
<element name="5.1" ref="led"><bounds x="1.6" y="17.25" width="1.5" height="1.5" /></element>
<element name="5.2" ref="led"><bounds x="1.6" y="27.25" width="1.5" height="1.5" /></element>
<element name="5.3" ref="led"><bounds x="1.6" y="37.25" width="1.5" height="1.5" /></element>
<element name="5.4" ref="led"><bounds x="1.6" y="47.25" width="1.5" height="1.5" /></element>
<element name="5.5" ref="led"><bounds x="1.6" y="57.25" width="1.5" height="1.5" /></element>
<element name="5.6" ref="led"><bounds x="1.6" y="67.25" width="1.5" height="1.5" /></element>
<element name="5.7" ref="led"><bounds x="1.6" y="77.25" width="1.5" height="1.5" /></element>
<element name="6.7" ref="led"><bounds x="8.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="6.6" ref="led"><bounds x="18.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="6.5" ref="led"><bounds x="28.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="6.4" ref="led"><bounds x="38.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="6.3" ref="led"><bounds x="48.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="6.2" ref="led"><bounds x="58.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="6.1" ref="led"><bounds x="68.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="6.0" ref="led"><bounds x="78.25" y="83.9" width="1.5" height="1.5" /></element>
<group ref="panel1"><bounds x="76.2" y="46.0" width="70" height="50" /></group>
<group ref="panel2"><bounds x="124.5" y="10.5" width="10" height="30" /></group>
</view>
</mamelayout>

View File

@ -38319,6 +38319,10 @@ sage2
@source:saitek/ccompan.cpp
ccompan
@source:saitek/ccompan2.cpp
ccompan2
expchess
@source:saitek/chesstrv.cpp
chesstrv
chesstrvi
@ -38334,8 +38338,8 @@ cp2000
@source:saitek/delta1.cpp
ccdelta1
@source:saitek/exchess.cpp
exchess
@source:saitek/exechess.cpp
exechess
@source:saitek/intchess.cpp
intchess

View File

@ -70,15 +70,13 @@ public:
// machine configs
void micro2(machine_config &config);
DECLARE_INPUT_CHANGED_MEMBER(cpu_freq) { set_cpu_freq(); }
DECLARE_INPUT_CHANGED_MEMBER(change_cpu_freq) { set_cpu_freq(); }
protected:
virtual void machine_start() override;
virtual void machine_reset() override { set_cpu_freq(); }
private:
void set_cpu_freq();
// devices/pointers
required_device<mcs48_cpu_device> m_maincpu;
required_device<pwm_display_device> m_display;
@ -92,6 +90,8 @@ private:
void control_w(u8 data);
u8 input_r();
void set_cpu_freq();
bool m_kp_select = false;
u8 m_inp_mux = 0;
u8 m_led_select = 0;
@ -181,7 +181,7 @@ static INPUT_PORTS_START( micro2 )
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("Go")
PORT_START("FAKE")
PORT_CONFNAME( 0x01, 0x00, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, micro2_state, cpu_freq, 0) // factory set
PORT_CONFNAME( 0x01, 0x00, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, micro2_state, change_cpu_freq, 0) // factory set
PORT_CONFSETTING( 0x00, "6MHz (original)" )
PORT_CONFSETTING( 0x01, "12MHz (Octo)" )
INPUT_PORTS_END

View File

@ -0,0 +1,346 @@
// license:BSD-3-Clause
// copyright-holders:hap
// thanks-to:Sean Riddle
/*******************************************************************************
SciSys Chess Companion II family
The chess engine is LogiChess (ported from Z80 to 6800), by Kaare Danielsen.
CXG Enterprise "S" / Star Chess is probably on similar hardware.
TODO:
- standby/battery save mode
********************************************************************************
Hardware notes:
Chess Companion II:
- PCB label: Y01B-01 REV.B
- Hitachi HD6301V1 (0609V171) @ ~3MHz (LC oscillator)
- chessboard buttons, 16+5 leds, piezo
Explorer Chess:
- slightly different UI (12 buttons instead of 14, but same functionality)
- portable, peg board instead of button board
- rest is same as ccompan2
Concord II:
- PCB label: SCISYS ST3 REV.E
- MCU clock frequency is twice higher than Concord
- rest is same as ccompan2, it just has the buttons/status leds at the bottom
instead of at the right
Explorer Chess and Chess Companion II / Concord are on the same MCU, pin P23 is
either VCC or GND to distinguish between the two.
0609V171 MCU is used in:
- SciSys Chess Companion II (2 revisions)
- SciSys Olympiade (French)
- SciSys Explorer Chess
- SciSys Concord
- SciSys Concord II
- SciSys Electronic Chess Mark 8
- Tandy 1650 Portable Sensory Chess (Tandy brand Explorer Chess)
- Tandy 1650 Fast Response Time: Computerized Chess (Tandy brand Concord II)
*******************************************************************************/
#include "emu.h"
#include "cpu/m6800/m6801.h"
#include "machine/sensorboard.h"
#include "sound/dac.h"
#include "video/pwm.h"
#include "speaker.h"
// internal artwork
#include "saitek_ccompan2.lh"
#include "saitek_expchess.lh"
namespace {
class ccompan2_state : public driver_device
{
public:
ccompan2_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_board(*this, "board"),
m_display(*this, "display"),
m_dac(*this, "dac"),
m_inputs(*this, "IN.%u", 0)
{ }
void ccompan2(machine_config &config);
void expchess(machine_config &config);
DECLARE_INPUT_CHANGED_MEMBER(change_cpu_freq) { set_cpu_freq(); }
protected:
virtual void machine_start() override;
virtual void machine_reset() override { set_cpu_freq(); }
DECLARE_MACHINE_RESET(expchess) { ; }
private:
// devices/pointers
required_device<hd6301v1_cpu_device> m_maincpu;
required_device<sensorboard_device> m_board;
required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac;
required_ioport_array<8+1> m_inputs;
// address maps
void main_map(address_map &map);
// I/O handlers
u8 input1_r();
u8 input2_r();
void speaker_w(u8 data);
void mux_w(u8 data);
u8 battery_r();
void led_w(u8 data);
void set_cpu_freq();
u8 m_inp_mux = 0;
};
void ccompan2_state::machine_start()
{
// register for savestates
save_item(NAME(m_inp_mux));
}
void ccompan2_state::set_cpu_freq()
{
// Concord II MCU speed is twice higher
m_maincpu->set_unscaled_clock((ioport("FAKE")->read() & 1) ? 6000000 : 3000000);
}
/*******************************************************************************
I/O
*******************************************************************************/
u8 ccompan2_state::input1_r()
{
u8 data = 0;
// P10-P17: read chessboard
for (int i = 0; i < 8; i++)
if (BIT(m_inp_mux, i))
data |= m_board->read_file(i ^ 7);
return ~data;
}
u8 ccompan2_state::input2_r()
{
u8 data = 0;
// P21,P22: read buttons
for (int i = 0; i < 8; i++)
if (BIT(m_inp_mux, i))
data |= m_inputs[i]->read() << 1 & 6;
// P23: button configuration
data |= m_inputs[8]->read() << 3 & 8;
return ~data;
}
void ccompan2_state::speaker_w(u8 data)
{
// P20: speaker out
m_dac->write(data & 1);
}
void ccompan2_state::mux_w(u8 data)
{
// P30-P37: input mux, led data
m_inp_mux = data ^ 0xff;
m_display->write_mx(m_inp_mux);
}
u8 ccompan2_state::battery_r()
{
// P40: battery status (only reads it at boot)
return 0;
}
void ccompan2_state::led_w(u8 data)
{
// P41-P45: direct leds
// P46,P47: board leds
m_display->write_my(~data >> 1 & 0x7f);
}
/*******************************************************************************
Address Maps
*******************************************************************************/
void ccompan2_state::main_map(address_map &map)
{
map(0x0000, 0x0014).m(m_maincpu, FUNC(hd6301v1_cpu_device::m6801_io));
map(0x0080, 0x00ff).ram(); // internal
map(0xf000, 0xffff).rom();
}
/*******************************************************************************
Input Ports
*******************************************************************************/
static INPUT_PORTS_START( ccompan2 )
PORT_START("IN.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("IN.1")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Sound")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("Level")
PORT_START("IN.2")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("Color")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("Multi Move")
PORT_START("IN.3")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("King")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Queen")
PORT_START("IN.4")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Rook")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_NAME("Play")
PORT_START("IN.5")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Bishop")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Enter Position")
PORT_START("IN.6")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Knight")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Take Back")
PORT_START("IN.7")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Pawn")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_NAME("New Game")
PORT_START("IN.8")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_CUSTOM) // button config
PORT_START("FAKE")
PORT_CONFNAME( 0x01, 0x00, "CPU Frequency" ) PORT_CHANGED_MEMBER(DEVICE_SELF, ccompan2_state, change_cpu_freq, 0) // factory set
PORT_CONFSETTING( 0x00, "3MHz (original)" )
PORT_CONFSETTING( 0x01, "6MHz (Concord II)" )
INPUT_PORTS_END
static INPUT_PORTS_START( expchess )
PORT_START("IN.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Rook")
PORT_START("IN.1")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Bishop")
PORT_START("IN.2")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("White/Black")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Take Back")
PORT_START("IN.3")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_NAME("New Game / Clear Board")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("Level / Sound")
PORT_START("IN.4")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("2nd F")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_NAME("Play / PVP")
PORT_START("IN.5")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Knight")
PORT_START("IN.6")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Pawn")
PORT_START("IN.7")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("King")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Queen")
PORT_START("IN.8")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_CUSTOM) // button config
INPUT_PORTS_END
/*******************************************************************************
Machine Configs
*******************************************************************************/
void ccompan2_state::ccompan2(machine_config &config)
{
// basic machine hardware
HD6301V1(config, m_maincpu, 3000000); // approximation, no XTAL
m_maincpu->set_addrmap(AS_PROGRAM, &ccompan2_state::main_map);
m_maincpu->in_p1_cb().set(FUNC(ccompan2_state::input1_r));
m_maincpu->in_p2_cb().set(FUNC(ccompan2_state::input2_r));
m_maincpu->out_p2_cb().set(FUNC(ccompan2_state::speaker_w));
m_maincpu->out_p3_cb().set(FUNC(ccompan2_state::mux_w));
m_maincpu->in_p4_cb().set(FUNC(ccompan2_state::battery_r));
m_maincpu->out_p4_cb().set(FUNC(ccompan2_state::led_w));
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));
// video hardware
PWM_DISPLAY(config, m_display).set_size(5+2, 8);
m_display->set_interpolation(0.25);
config.set_default_layout(layout_saitek_ccompan2);
// sound hardware
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
}
void ccompan2_state::expchess(machine_config &config)
{
ccompan2(config);
MCFG_MACHINE_RESET_OVERRIDE(ccompan2_state, expchess)
config.set_default_layout(layout_saitek_expchess);
}
/*******************************************************************************
ROM Definitions
*******************************************************************************/
ROM_START( ccompan2 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("1983_te-1_scisys-w_0609v171.u1", 0xf000, 0x1000, CRC(a26632fd) SHA1(fb83dc2476500acaabd949d749e58adca01012ea) )
ROM_END
ROM_START( expchess )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("1983_te-1_scisys-w_0609v171.u1", 0xf000, 0x1000, CRC(a26632fd) SHA1(fb83dc2476500acaabd949d749e58adca01012ea) )
ROM_END
} // anonymous namespace
/*******************************************************************************
Drivers
*******************************************************************************/
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
SYST( 1983, ccompan2, 0, 0, ccompan2, ccompan2, ccompan2_state, empty_init, "SciSys", "Chess Companion II", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
SYST( 1983, expchess, ccompan2, 0, expchess, expchess, ccompan2_state, empty_init, "SciSys", "Explorer Chess", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -23,15 +23,15 @@ Hardware notes:
#include "screen.h"
// internal artwork
#include "saitek_exchess.lh"
#include "saitek_exechess.lh"
namespace {
class exchess_state : public driver_device
class exechess_state : public driver_device
{
public:
exchess_state(const machine_config &mconfig, device_type type, const char *tag) :
exechess_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_lcd1(*this, "lcd1"),
@ -41,7 +41,7 @@ public:
m_inputs(*this, "IN.%u", 0)
{ }
void exchess(machine_config &config);
void exechess(machine_config &config);
// battery status indicator is not software controlled
DECLARE_INPUT_CHANGED_MEMBER(battery) { m_battery = newval; }
@ -77,7 +77,7 @@ private:
u64 m_lcd_data[2] = { };
};
void exchess_state::machine_start()
void exechess_state::machine_start()
{
m_battery.resolve();
m_ram = make_unique_clear<u8[]>(0x400);
@ -97,13 +97,13 @@ void exchess_state::machine_start()
// LCD
template<int N>
void exchess_state::lcd_output_w(u64 data)
void exechess_state::lcd_output_w(u64 data)
{
m_lcd_data[N] = data;
m_display->matrix(m_lcd_data[0] & 0xff, m_lcd_data[1] << 26 | m_lcd_data[0] >> 8);
}
void exchess_state::lcd_data_w(u8 data)
void exechess_state::lcd_data_w(u8 data)
{
// P40: HLCD0539 data
// P44: HLCD0538 data
@ -121,7 +121,7 @@ void exchess_state::lcd_data_w(u8 data)
// 1KB RAM (port-mapped)
template<int N>
void exchess_state::ram_address_w(u8 data)
void exechess_state::ram_address_w(u8 data)
{
// P00-P07: RAM A0-A7
// P10-P11: RAM A8-A9
@ -130,7 +130,7 @@ void exchess_state::ram_address_w(u8 data)
}
template<int N>
u8 exchess_state::ram_address_r()
u8 exechess_state::ram_address_r()
{
u8 data = m_ram_address[N];
@ -138,13 +138,13 @@ u8 exchess_state::ram_address_r()
return (N) ? data | (m_inputs[0]->read() & 8) : data;
}
void exchess_state::ram_data_w(u8 data)
void exechess_state::ram_data_w(u8 data)
{
if (m_ram_address[1] & 4)
m_ram[ram_address()] = data;
}
u8 exchess_state::ram_data_r()
u8 exechess_state::ram_data_r()
{
return (m_ram_address[1] & 4) ? m_ram[ram_address()] : 0;
}
@ -155,16 +155,16 @@ u8 exchess_state::ram_data_r()
Address Maps
*******************************************************************************/
void exchess_state::main_map(address_map &map)
void exechess_state::main_map(address_map &map)
{
map.global_mask(0xfff);
map(0x0000, 0x0fff).rom();
}
void exchess_state::main_io(address_map &map)
void exechess_state::main_io(address_map &map)
{
map(0x00, 0x00).rw(FUNC(exchess_state::ram_address_r<0>), FUNC(exchess_state::ram_address_w<0>));
map(0x01, 0x01).rw(FUNC(exchess_state::ram_address_r<1>), FUNC(exchess_state::ram_address_w<1>));
map(0x00, 0x00).rw(FUNC(exechess_state::ram_address_r<0>), FUNC(exechess_state::ram_address_w<0>));
map(0x01, 0x01).rw(FUNC(exechess_state::ram_address_r<1>), FUNC(exechess_state::ram_address_w<1>));
map(0x04, 0x07).rw("psu", FUNC(f38t56_device::read), FUNC(f38t56_device::write));
}
@ -174,7 +174,7 @@ void exchess_state::main_io(address_map &map)
Input Ports
*******************************************************************************/
static INPUT_PORTS_START( exchess )
static INPUT_PORTS_START( exechess )
PORT_START("IN.0")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Enter")
PORT_BIT(0xf7, IP_ACTIVE_HIGH, IPT_UNUSED)
@ -199,7 +199,7 @@ static INPUT_PORTS_START( exchess )
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OTHER) // dr
PORT_START("IN.3")
PORT_CONFNAME( 0x01, 0x00, "Battery Status" ) PORT_CHANGED_MEMBER(DEVICE_SELF, exchess_state, battery, 0)
PORT_CONFNAME( 0x01, 0x00, "Battery Status" ) PORT_CHANGED_MEMBER(DEVICE_SELF, exechess_state, battery, 0)
PORT_CONFSETTING( 0x01, "Low" )
PORT_CONFSETTING( 0x00, DEF_STR( Normal ) )
INPUT_PORTS_END
@ -210,34 +210,34 @@ INPUT_PORTS_END
Machine Configs
*******************************************************************************/
void exchess_state::exchess(machine_config &config)
void exechess_state::exechess(machine_config &config)
{
// basic machine hardware
F8(config, m_maincpu, 4500000/2); // measured
m_maincpu->set_addrmap(AS_PROGRAM, &exchess_state::main_map);
m_maincpu->set_addrmap(AS_IO, &exchess_state::main_io);
m_maincpu->set_addrmap(AS_PROGRAM, &exechess_state::main_map);
m_maincpu->set_addrmap(AS_IO, &exechess_state::main_io);
m_maincpu->set_irq_acknowledge_callback("psu", FUNC(f38t56_device::int_acknowledge));
f38t56_device &psu(F38T56(config, "psu", 4500000/2));
psu.set_int_vector(0x0020);
psu.int_req_callback().set_inputline("maincpu", F8_INPUT_LINE_INT_REQ);
psu.read_a().set(FUNC(exchess_state::ram_data_r));
psu.write_a().set(FUNC(exchess_state::ram_data_w));
psu.write_a().append(FUNC(exchess_state::lcd_data_w));
psu.read_a().set(FUNC(exechess_state::ram_data_r));
psu.write_a().set(FUNC(exechess_state::ram_data_w));
psu.write_a().append(FUNC(exechess_state::lcd_data_w));
psu.read_b().set_ioport("IN.1");
// video hardware
HLCD0538(config, m_lcd1, 310); // measured
m_lcd1->write_cols().set(FUNC(exchess_state::lcd_output_w<0>));
m_lcd1->write_cols().set(FUNC(exechess_state::lcd_output_w<0>));
m_lcd1->write_interrupt().set(m_lcd2, FUNC(hlcd0539_device::lcd_w));
HLCD0539(config, m_lcd2, 0);
m_lcd2->write_cols().set(FUNC(exchess_state::lcd_output_w<1>));
m_lcd2->write_cols().set(FUNC(exechess_state::lcd_output_w<1>));
m_lcd2->write_interrupt().set("psu", FUNC(f38t56_device::ext_int_w)).invert();
PWM_DISPLAY(config, m_display).set_size(8, 26+34);
m_display->set_interpolation(0.2);
config.set_default_layout(layout_saitek_exchess);
config.set_default_layout(layout_saitek_exechess);
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
screen.set_refresh_hz(60);
@ -251,12 +251,12 @@ void exchess_state::exchess(machine_config &config)
ROM Definitions
*******************************************************************************/
ROM_START( exchess )
ROM_START( exechess )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD("sl90553", 0x0000, 0x1000, CRC(a61b0c7e) SHA1(a13b11a93f78236223c5c0b9879a93284b7f7525) )
ROM_REGION( 852610, "screen", 0 )
ROM_LOAD("exchess.svg", 0, 852610, CRC(cb36f9d3) SHA1(83be9b5d906d185b7cf6895f50992e7eea390c7a) )
ROM_LOAD("exechess.svg", 0, 852610, CRC(cb36f9d3) SHA1(83be9b5d906d185b7cf6895f50992e7eea390c7a) )
ROM_END
} // anonymous namespace
@ -267,5 +267,5 @@ ROM_END
Drivers
*******************************************************************************/
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
SYST( 1981, exchess, 0, 0, exchess, exchess, exchess_state, empty_init, "SciSys", "Executive Chess", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
SYST( 1981, exechess, 0, 0, exechess, exechess, exechess_state, empty_init, "SciSys", "Executive Chess", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )