scptchess: swap parent/clone sets,

saitek*: small cleanup, update company strings

New working systems
-------------------
Travel Sensor Chess [hap, Sean Riddle]
This commit is contained in:
hap 2024-09-12 11:00:07 +02:00
parent 5db312e8b6
commit 5a031920f6
18 changed files with 821 additions and 186 deletions

View File

@ -22,12 +22,12 @@ switch which puts the MCU in halt state.
Hardware notes:
Sensor Computachess:
- PCB label WA 001 600 002
- PCB label: WA 001 600 002
- Hitachi 44801A50 MCU @ ~400kHz
- buzzer, 16 leds, button sensors chessboard
Portachess II:
- PCB label CXG223-600-001 (main pcb), CXG 211 600 101 (led pcb taken from
- PCB label: CXG223-600-001 (main pcb), CXG 211 600 101 (led pcb taken from
Advanced Star Chess, extra led row unused here)
- Hitachi HD44801C89 MCU @ ~400kHz (serial 202: from Portachess 1985 version)
- rest same as above
@ -102,18 +102,15 @@ private:
required_ioport m_inputs;
u8 m_inp_mux = 0;
u8 m_led_data = 0;
void update_display();
template<int N> void mux_w(u8 data);
void leds_w(u16 data);
void control_w(u16 data);
u16 input_r();
};
void computachess_state::machine_start()
{
save_item(NAME(m_inp_mux));
save_item(NAME(m_led_data));
}
@ -122,27 +119,21 @@ void computachess_state::machine_start()
I/O
*******************************************************************************/
void computachess_state::update_display()
{
m_display->matrix(m_inp_mux, m_led_data);
}
template<int N>
void computachess_state::mux_w(u8 data)
{
// R2x,R3x: input mux, led select
// R2x,R3x: input mux, led data
m_inp_mux = (m_inp_mux & ~(0xf << (N*4))) | (data << (N*4));
update_display();
m_display->write_mx(m_inp_mux);
}
void computachess_state::leds_w(u16 data)
void computachess_state::control_w(u16 data)
{
// D2,D3: led data
m_led_data = ~data >> 2 & 3;
update_display();
// D0: speaker out
m_dac->write(data & 1);
// D2,D3: led select
m_display->write_my(~data >> 2 & 3);
}
u16 computachess_state::input_r()
@ -169,19 +160,21 @@ u16 computachess_state::input_r()
static INPUT_PORTS_START( scptchess )
PORT_START("IN.0")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Sound") // only hooked up on 1st version
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Reverse Play")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("Level")
PORT_START("RESET")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_CHANGED_MEMBER(DEVICE_SELF, computachess_state, reset_button, 0) PORT_NAME("New Game")
INPUT_PORTS_END
static INPUT_PORTS_START( scptchessa )
PORT_INCLUDE( scptchess )
PORT_MODIFY("IN.0")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Sound") // only hooked up on 1st version
PORT_START("RESET")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_CHANGED_MEMBER(DEVICE_SELF, computachess_state, reset_button, 0) PORT_NAME("New Game")
PORT_MODIFY("RESET")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
INPUT_PORTS_END
@ -193,10 +186,10 @@ INPUT_PORTS_END
void computachess_state::scptchess(machine_config &config)
{
// basic machine hardware
HD44801(config, m_maincpu, 400'000);
HD44801(config, m_maincpu, 400'000); // approximation
m_maincpu->write_r<2>().set(FUNC(computachess_state::mux_w<0>));
m_maincpu->write_r<3>().set(FUNC(computachess_state::mux_w<1>));
m_maincpu->write_d().set(FUNC(computachess_state::leds_w));
m_maincpu->write_d().set(FUNC(computachess_state::control_w));
m_maincpu->read_d().set(FUNC(computachess_state::input_r));
SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS);
@ -204,7 +197,7 @@ void computachess_state::scptchess(machine_config &config)
m_board->set_delay(attotime::from_msec(150));
// video hardware
PWM_DISPLAY(config, m_display).set_size(8, 2);
PWM_DISPLAY(config, m_display).set_size(2, 8);
config.set_default_layout(layout_cxg_scptchess);
// sound hardware
@ -226,12 +219,12 @@ void computachess_state::scptchessa(machine_config &config)
ROM_START( scptchess )
ROM_REGION( 0x2000, "maincpu", 0 )
ROM_LOAD("white_allcock_44801a50", 0x0000, 0x2000, CRC(c5c53e05) SHA1(8fa9b8e48ca54f08585afd83ae78fb1970fbd382) )
ROM_LOAD("202_newcrest_16_hd44801c89", 0x0000, 0x2000, CRC(56b48f70) SHA1(84ec62323c6d3314e0515bccfde2f65f6d753e99) )
ROM_END
ROM_START( scptchessa )
ROM_REGION( 0x2000, "maincpu", 0 )
ROM_LOAD("202_newcrest_16_hd44801c89", 0x0000, 0x2000, CRC(56b48f70) SHA1(84ec62323c6d3314e0515bccfde2f65f6d753e99) )
ROM_LOAD("white_allcock_44801a50", 0x0000, 0x2000, CRC(c5c53e05) SHA1(8fa9b8e48ca54f08585afd83ae78fb1970fbd382) )
ROM_END
} // anonymous namespace
@ -243,5 +236,5 @@ ROM_END
*******************************************************************************/
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
SYST( 1981, scptchess, 0, 0, scptchess, scptchess, computachess_state, empty_init, "CXG Systems / White and Allcock / Intelligent Software", "Sensor Computachess (1981 version)", MACHINE_SUPPORTS_SAVE )
SYST( 1985, scptchessa, scptchess, 0, scptchessa, scptchessa, computachess_state, empty_init, "CXG Systems / Newcrest Technology / Intelligent Software", "Sensor Computachess (1985 version)", MACHINE_SUPPORTS_SAVE )
SYST( 1985, scptchess, 0, 0, scptchess, scptchess, computachess_state, empty_init, "CXG Systems / Newcrest Technology / Intelligent Software", "Sensor Computachess (1985 version)", MACHINE_SUPPORTS_SAVE )
SYST( 1981, scptchessa, scptchess, 0, scptchessa, scptchessa, computachess_state, empty_init, "CXG Systems / White and Allcock / Intelligent Software", "Sensor Computachess (1981 version)", MACHINE_SUPPORTS_SAVE )

View File

@ -73,7 +73,7 @@ known chips:
A34 HD44801 1981, SciSys Mini Chess -> saitek/minichess.cpp
A50 HD44801 1981, CXG Sensor Computachess -> cxg/computachess.cpp
A75 HD44801 1982, Alpha 8201 protection MCU -> alpha/alpha8201.*
*A85 HD44801 1982, SciSys Travel Sensor / Travel Mate / Chesspartner 5000/6000
A85 HD44801 1982, SciSys Travel Sensor Chess -> saitek/tschess.cpp
*A92 HD44801 1982, SciSys Play Bridge Computer
B35 HD44801 1983, Alpha 8302 protection MCU (see 8201)
B42 HD44801 1983, Alpha 8303 protection MCU (see 8201)
@ -92,7 +92,7 @@ known chips:
*A04 HD44868 1984, SciSys Rapier
*A07 HD44868 1984, Chess King Pocket Micro Deluxe / Mephisto Teufelchen
*A12 HD44868 1985, SciSys MK 10 / Pocket Chess / Electronic Trio
*A12 HD44868 1985, SciSys Travel Mate II / Pocket Chess / MK 10 / Electronic Trio
*A14 HD44868 1985, SciSys Kasparov Plus
*A16 HD44868 1988, Saitek Pocket Checkers

View File

@ -41,7 +41,7 @@ authors:hap
<element name="text_l2"><text string="MATE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l3"><text string="STALEMATE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l4"><text string="YOUR MOVE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l5"><text string="SOUND"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l5"><text string="NEW GAME"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l6"><text string="LEVEL"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l7"><text string="REVERSE PLAY"><color red="0.81" green="0.8" blue="0.79" /></text></element>
@ -333,22 +333,22 @@ authors:hap
<element ref="text_h"><bounds x="78" y="0.4" width="2" height="2" /></element>
<!-- chessboard leds -->
<element name="0.1" ref="led"><bounds x="1.5" y="7.25" width="1.5" height="1.5" /></element>
<element name="1.0" ref="led"><bounds x="1.5" y="7.25" width="1.5" height="1.5" /></element>
<element name="1.1" ref="led"><bounds x="1.5" y="17.25" width="1.5" height="1.5" /></element>
<element name="2.1" ref="led"><bounds x="1.5" y="27.25" width="1.5" height="1.5" /></element>
<element name="3.1" ref="led"><bounds x="1.5" y="37.25" width="1.5" height="1.5" /></element>
<element name="4.1" ref="led"><bounds x="1.5" y="47.25" width="1.5" height="1.5" /></element>
<element name="5.1" ref="led"><bounds x="1.5" y="57.25" width="1.5" height="1.5" /></element>
<element name="6.1" ref="led"><bounds x="1.5" y="67.25" width="1.5" height="1.5" /></element>
<element name="7.1" ref="led"><bounds x="1.5" y="77.25" width="1.5" height="1.5" /></element>
<element name="1.2" ref="led"><bounds x="1.5" y="27.25" width="1.5" height="1.5" /></element>
<element name="1.3" ref="led"><bounds x="1.5" y="37.25" width="1.5" height="1.5" /></element>
<element name="1.4" ref="led"><bounds x="1.5" y="47.25" width="1.5" height="1.5" /></element>
<element name="1.5" ref="led"><bounds x="1.5" y="57.25" width="1.5" height="1.5" /></element>
<element name="1.6" ref="led"><bounds x="1.5" y="67.25" width="1.5" height="1.5" /></element>
<element name="1.7" ref="led"><bounds x="1.5" y="77.25" width="1.5" height="1.5" /></element>
<element name="7.0" ref="led"><bounds x="8.25" y="84" width="1.5" height="1.5" /></element>
<element name="6.0" ref="led"><bounds x="18.25" y="84" width="1.5" height="1.5" /></element>
<element name="5.0" ref="led"><bounds x="28.25" y="84" width="1.5" height="1.5" /></element>
<element name="4.0" ref="led"><bounds x="38.25" y="84" width="1.5" height="1.5" /></element>
<element name="3.0" ref="led"><bounds x="48.25" y="84" width="1.5" height="1.5" /></element>
<element name="2.0" ref="led"><bounds x="58.25" y="84" width="1.5" height="1.5" /></element>
<element name="1.0" ref="led"><bounds x="68.25" y="84" width="1.5" height="1.5" /></element>
<element name="0.7" ref="led"><bounds x="8.25" y="84" width="1.5" height="1.5" /></element>
<element name="0.6" ref="led"><bounds x="18.25" y="84" width="1.5" height="1.5" /></element>
<element name="0.5" ref="led"><bounds x="28.25" y="84" width="1.5" height="1.5" /></element>
<element name="0.4" ref="led"><bounds x="38.25" y="84" width="1.5" height="1.5" /></element>
<element name="0.3" ref="led"><bounds x="48.25" y="84" width="1.5" height="1.5" /></element>
<element name="0.2" ref="led"><bounds x="58.25" y="84" width="1.5" height="1.5" /></element>
<element name="0.1" ref="led"><bounds x="68.25" y="84" width="1.5" height="1.5" /></element>
<element name="0.0" ref="led"><bounds x="78.25" y="84" width="1.5" height="1.5" /></element>
<!-- bottom side labels -->
@ -363,7 +363,7 @@ authors:hap
<element ref="text_l4"><bounds x="69" y="87.1" width="10" height="2" /></element>
<!-- right side buttons -->
<element ref="but" inputtag="IN.0" inputmask="0x20"><bounds x="88" y="59" width="10" height="4" /></element>
<element ref="but" inputtag="RESET" inputmask="0x01"><bounds x="88" y="59" width="10" height="4" /></element>
<element ref="but" inputtag="IN.0" inputmask="0x80"><bounds x="88" y="69" width="10" height="4" /></element>
<element ref="but" inputtag="IN.0" inputmask="0x40"><bounds x="88" y="79" width="10" height="4" /></element>

View File

@ -41,7 +41,7 @@ authors:hap
<element name="text_l2"><text string="MATE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l3"><text string="STALEMATE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l4"><text string="YOUR MOVE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l5"><text string="NEW GAME"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l5"><text string="SOUND"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l6"><text string="LEVEL"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l7"><text string="REVERSE PLAY"><color red="0.81" green="0.8" blue="0.79" /></text></element>
@ -333,22 +333,22 @@ authors:hap
<element ref="text_h"><bounds x="78" y="0.4" width="2" height="2" /></element>
<!-- chessboard leds -->
<element name="0.1" ref="led"><bounds x="1.5" y="7.25" width="1.5" height="1.5" /></element>
<element name="1.0" ref="led"><bounds x="1.5" y="7.25" width="1.5" height="1.5" /></element>
<element name="1.1" ref="led"><bounds x="1.5" y="17.25" width="1.5" height="1.5" /></element>
<element name="2.1" ref="led"><bounds x="1.5" y="27.25" width="1.5" height="1.5" /></element>
<element name="3.1" ref="led"><bounds x="1.5" y="37.25" width="1.5" height="1.5" /></element>
<element name="4.1" ref="led"><bounds x="1.5" y="47.25" width="1.5" height="1.5" /></element>
<element name="5.1" ref="led"><bounds x="1.5" y="57.25" width="1.5" height="1.5" /></element>
<element name="6.1" ref="led"><bounds x="1.5" y="67.25" width="1.5" height="1.5" /></element>
<element name="7.1" ref="led"><bounds x="1.5" y="77.25" width="1.5" height="1.5" /></element>
<element name="1.2" ref="led"><bounds x="1.5" y="27.25" width="1.5" height="1.5" /></element>
<element name="1.3" ref="led"><bounds x="1.5" y="37.25" width="1.5" height="1.5" /></element>
<element name="1.4" ref="led"><bounds x="1.5" y="47.25" width="1.5" height="1.5" /></element>
<element name="1.5" ref="led"><bounds x="1.5" y="57.25" width="1.5" height="1.5" /></element>
<element name="1.6" ref="led"><bounds x="1.5" y="67.25" width="1.5" height="1.5" /></element>
<element name="1.7" ref="led"><bounds x="1.5" y="77.25" width="1.5" height="1.5" /></element>
<element name="7.0" ref="led"><bounds x="8.25" y="84" width="1.5" height="1.5" /></element>
<element name="6.0" ref="led"><bounds x="18.25" y="84" width="1.5" height="1.5" /></element>
<element name="5.0" ref="led"><bounds x="28.25" y="84" width="1.5" height="1.5" /></element>
<element name="4.0" ref="led"><bounds x="38.25" y="84" width="1.5" height="1.5" /></element>
<element name="3.0" ref="led"><bounds x="48.25" y="84" width="1.5" height="1.5" /></element>
<element name="2.0" ref="led"><bounds x="58.25" y="84" width="1.5" height="1.5" /></element>
<element name="1.0" ref="led"><bounds x="68.25" y="84" width="1.5" height="1.5" /></element>
<element name="0.7" ref="led"><bounds x="8.25" y="84" width="1.5" height="1.5" /></element>
<element name="0.6" ref="led"><bounds x="18.25" y="84" width="1.5" height="1.5" /></element>
<element name="0.5" ref="led"><bounds x="28.25" y="84" width="1.5" height="1.5" /></element>
<element name="0.4" ref="led"><bounds x="38.25" y="84" width="1.5" height="1.5" /></element>
<element name="0.3" ref="led"><bounds x="48.25" y="84" width="1.5" height="1.5" /></element>
<element name="0.2" ref="led"><bounds x="58.25" y="84" width="1.5" height="1.5" /></element>
<element name="0.1" ref="led"><bounds x="68.25" y="84" width="1.5" height="1.5" /></element>
<element name="0.0" ref="led"><bounds x="78.25" y="84" width="1.5" height="1.5" /></element>
<!-- bottom side labels -->
@ -363,7 +363,7 @@ authors:hap
<element ref="text_l4"><bounds x="69" y="87.1" width="10" height="2" /></element>
<!-- right side buttons -->
<element ref="but" inputtag="RESET" inputmask="0x01"><bounds x="88" y="59" width="10" height="4" /></element>
<element ref="but" inputtag="IN.0" inputmask="0x20"><bounds x="88" y="59" width="10" height="4" /></element>
<element ref="but" inputtag="IN.0" inputmask="0x80"><bounds x="88" y="69" width="10" height="4" /></element>
<element ref="but" inputtag="IN.0" inputmask="0x40"><bounds x="88" y="79" width="10" height="4" /></element>

View File

@ -8,7 +8,6 @@ authors:hap
<!-- define elements -->
<element name="black"><rect><color red="0.15" green="0.14" blue="0.14" /></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>
@ -43,38 +42,6 @@ authors:hap
<element name="text_g"><text string="G"><color red="0.15" green="0.14" blue="0.14" /></text></element>
<element name="text_h"><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 -->
@ -337,6 +304,32 @@ authors:hap
<!-- button panel -->
<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>
<group name="panel1">
<bounds x="0" y="0" width="70" height="50" />
@ -387,8 +380,16 @@ authors:hap
<!-- status leds -->
<element name="red"><rect><color red="0.75" green="0.25" blue="0.2" /></rect></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>
<group name="panel2">
<bounds x="0" y="0" width="10" height="30" />
<bounds x="0" y="0" width="20" 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>
@ -396,18 +397,18 @@ authors:hap
<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="text_l1"><bounds x="3.5" yc="9" width="10" height="1.8" /></element>
<element ref="text_l2"><bounds x="3.5" yc="12" width="10" height="1.8" /></element>
<element ref="text_l3"><bounds x="3.5" yc="15" width="10" height="1.8" /></element>
<element ref="text_l4"><bounds x="3.5" yc="18" width="10" height="1.8" /></element>
<element ref="text_l5"><bounds x="3.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>
<element ref="red"><bounds x="0" yc="7.5" width="9.5" height="0.2" /></element>
<element ref="red"><bounds x="0" yc="10.5" width="9.5" height="0.2" /></element>
<element ref="red"><bounds x="0" yc="13.5" width="9.5" height="0.2" /></element>
<element ref="red"><bounds x="0" yc="16.5" width="9.5" height="0.2" /></element>
<element ref="red"><bounds x="0" yc="19.5" width="9.5" height="0.2" /></element>
<element ref="red"><bounds x="0" yc="22.5" width="9.5" height="0.2" /></element>
</group>
@ -458,8 +459,8 @@ authors:hap
<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>
<group ref="panel1"><bounds x="76.2" y="42.0" width="70" height="50" /></group>
<group ref="panel2"><bounds x="123.5" y="5.6" width="20" height="30" /></group>
</view>
</mamelayout>

View File

@ -0,0 +1,464 @@
<?xml version="1.0"?>
<!--
license:CC0-1.0
authors:hap
-->
<mamelayout version="2">
<!-- define elements -->
<element name="black"><rect><color red="0.15" green="0.14" blue="0.14" /></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"><text string="1"><color red="0.15" green="0.14" blue="0.14" /></text></element>
<element name="text_2"><text string="2"><color red="0.15" green="0.14" blue="0.14" /></text></element>
<element name="text_3"><text string="3"><color red="0.15" green="0.14" blue="0.14" /></text></element>
<element name="text_4"><text string="4"><color red="0.15" green="0.14" blue="0.14" /></text></element>
<element name="text_5"><text string="5"><color red="0.15" green="0.14" blue="0.14" /></text></element>
<element name="text_6"><text string="6"><color red="0.15" green="0.14" blue="0.14" /></text></element>
<element name="text_7"><text string="7"><color red="0.15" green="0.14" blue="0.14" /></text></element>
<element name="text_8"><text string="8"><color red="0.15" green="0.14" blue="0.14" /></text></element>
<element name="text_a"><text string="A"><color red="0.15" green="0.14" blue="0.14" /></text></element>
<element name="text_b"><text string="B"><color red="0.15" green="0.14" blue="0.14" /></text></element>
<element name="text_c"><text string="C"><color red="0.15" green="0.14" blue="0.14" /></text></element>
<element name="text_d"><text string="D"><color red="0.15" green="0.14" blue="0.14" /></text></element>
<element name="text_e"><text string="E"><color red="0.15" green="0.14" blue="0.14" /></text></element>
<element name="text_f"><text string="F"><color red="0.15" green="0.14" blue="0.14" /></text></element>
<element name="text_g"><text string="G"><color red="0.15" green="0.14" blue="0.14" /></text></element>
<element name="text_h"><text string="H"><color red="0.15" green="0.14" blue="0.14" /></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>
<!-- 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="whitew"><rect><color red="1" green="1" blue="1" /></rect></element>
<element name="blackb"><rect><color red="0" green="0" blue="0" /></rect></element>
<element name="text_b1a"><text string="COM-" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b1b"><text string="PUTE" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b2a"><text string="NEW" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b2b"><text string="GAME" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b3a"><text string="LEVEL"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b4a"><text string="SOUND"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b5a"><text string="SET" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b5b"><text string="UP" 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_b7"><text string="VERIFY"><color red="0.81" green="0.8" blue="0.79" /></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>
<group name="panel1">
<bounds x="0" y="0" width="70" height="50" />
<element ref="whitew"><bounds xc="35.15" y="34" width="0.3" height="10" /></element>
<element ref="whitew"><bounds x="18.15" y="13.6" width="34" height="27.8" /></element>
<element ref="blackb"><bounds x="18.45" y="13.9" width="33.4" height="27.2" /></element>
<element ref="whitew"><bounds x="18.15" y="13.6" width="7.65" height="14.3" /></element>
<element ref="blackb"><bounds x="17.85" y="13.3" width="7.65" height="14.3" /></element>
<element ref="text_p1"><bounds xc="39.9" y="22.9" width="4.1" height="4.1" /></element>
<element ref="text_p2"><bounds xc="49.4" y="22.9" width="4.1" height="4.1" /></element>
<element ref="text_p3"><bounds xc="20.9" y="36.9" width="4.1" height="4.1" /></element>
<element ref="text_p4"><bounds xc="30.4" y="36.9" width="4.1" height="4.1" /></element>
<element ref="text_p5"><bounds xc="39.9" y="36.9" width="4.1" height="4.1" /></element>
<element ref="text_p6"><bounds xc="49.4" y="36.9" width="4.1" height="4.1" /></element>
<element ref="cwhite" blend="multiply"><bounds x="15" y="10" width="40" height="39" /></element>
<element ref="cwhite"><bounds xc="35.15" yc="44.0" width="9.6" height="3" /></element>
<element ref="blackb"><bounds xc="35.15" yc="44.0" width="9.0" height="2.4" /></element>
<element ref="text_b7"><bounds xc="35.15" yc="44.0" width="10" height="1.8" /></element>
<element ref="text_b1a"><bounds x="19.2" y="9.3" width="10" height="1.8" /></element>
<element ref="text_b1b"><bounds x="19.2" y="11.0" width="10" height="1.8" /></element>
<element ref="text_b2a"><bounds x="28.7" y="9.3" width="10" height="1.8" /></element>
<element ref="text_b2b"><bounds x="28.7" y="11.0" width="10" height="1.8" /></element>
<element ref="text_b3a"><bounds xc="39.9" y="10.1" width="10" height="1.8" /></element>
<element ref="text_b4a"><bounds xc="49.4" y="10.1" width="10" height="1.8" /></element>
<element ref="text_b5a"><bounds x="19.8" y="23.3" width="10" height="1.8" /></element>
<element ref="text_b5b"><bounds x="19.8" y="25.0" width="10" height="1.8" /></element>
<element ref="text_b6a"><bounds x="28.0" y="23.3" width="10" height="1.8" /></element>
<element ref="text_b6b"><bounds x="28.0" y="25.0" width="10" height="1.8" /></element>
<element ref="but" inputtag="IN.1" inputmask="0x10"><bounds x="20.0" y="1" width="1.8" height="8" /></element>
<element ref="but" inputtag="RESET" inputmask="0x01"><bounds x="29.5" y="1" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.1" inputmask="0x80"><bounds x="39.0" y="1" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.1" inputmask="0x40"><bounds x="48.5" y="1" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.1" inputmask="0x20"><bounds x="20.0" y="15" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.0" inputmask="0x02"><bounds x="29.5" y="15" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.0" inputmask="0x04"><bounds x="39.0" y="15" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.0" inputmask="0x08"><bounds x="48.5" y="15" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.0" inputmask="0x10"><bounds x="20.0" y="29" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.0" inputmask="0x20"><bounds x="29.5" y="29" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.0" inputmask="0x40"><bounds x="39.0" y="29" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.0" inputmask="0x80"><bounds x="48.5" y="29" width="1.8" height="8" /></element>
</group>
<!-- status leds -->
<element name="red"><rect><color red="0.75" green="0.25" blue="0.2" /></rect></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="SET UP" 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>
<group name="panel2">
<bounds x="0" y="0" width="20" height="30" />
<element name="0.0" ref="led2"><bounds x="0" yc="9" width="1.5" height="1.5" /></element>
<element name="0.1" ref="led2"><bounds x="0" yc="12" width="1.5" height="1.5" /></element>
<element name="0.4" ref="led2"><bounds x="0" yc="15" width="1.5" height="1.5" /></element>
<element name="0.7" ref="led2"><bounds x="0" yc="18" width="1.5" height="1.5" /></element>
<element name="0.6" ref="led2"><bounds x="0" yc="21" width="1.5" height="1.5" /></element>
<element ref="text_l1"><bounds x="3.5" yc="9" width="10" height="1.8" /></element>
<element ref="text_l2"><bounds x="3.5" yc="12" width="10" height="1.8" /></element>
<element ref="text_l3"><bounds x="3.5" yc="15" width="10" height="1.8" /></element>
<element ref="text_l4"><bounds x="3.5" yc="18" width="10" height="1.8" /></element>
<element ref="text_l5"><bounds x="3.5" yc="21" width="10" height="1.8" /></element>
<element ref="red"><bounds x="0" yc="7.5" width="9.5" height="0.2" /></element>
<element ref="red"><bounds x="0" yc="10.5" width="9.5" height="0.2" /></element>
<element ref="red"><bounds x="0" yc="13.5" width="9.5" height="0.2" /></element>
<element ref="red"><bounds x="0" yc="16.5" width="9.5" height="0.2" /></element>
<element ref="red"><bounds x="0" yc="19.5" width="9.5" height="0.2" /></element>
<element ref="red"><bounds x="0" yc="22.5" width="9.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="black"><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="2.0" ref="led"><bounds x="1.6" y="7.25" width="1.5" height="1.5" /></element>
<element name="2.1" ref="led"><bounds x="1.6" y="17.25" width="1.5" height="1.5" /></element>
<element name="2.2" ref="led"><bounds x="1.6" y="27.25" width="1.5" height="1.5" /></element>
<element name="2.3" ref="led"><bounds x="1.6" y="37.25" width="1.5" height="1.5" /></element>
<element name="2.4" ref="led"><bounds x="1.6" y="47.25" width="1.5" height="1.5" /></element>
<element name="2.5" ref="led"><bounds x="1.6" y="57.25" width="1.5" height="1.5" /></element>
<element name="2.6" ref="led"><bounds x="1.6" y="67.25" width="1.5" height="1.5" /></element>
<element name="2.7" ref="led"><bounds x="1.6" y="77.25" width="1.5" height="1.5" /></element>
<element name="1.7" ref="led"><bounds x="8.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="1.6" ref="led"><bounds x="18.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="1.5" ref="led"><bounds x="28.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="1.4" ref="led"><bounds x="38.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="1.3" ref="led"><bounds x="48.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="1.2" ref="led"><bounds x="58.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="1.1" ref="led"><bounds x="68.25" y="83.9" width="1.5" height="1.5" /></element>
<element name="1.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="42.0" width="70" height="50" /></group>
<group ref="panel2"><bounds x="123.5" y="5.6" width="20" height="30" /></group>
</view>
</mamelayout>

View File

@ -38998,6 +38998,9 @@ tstar432b
tatrain
tatraina
@source:saitek/tschess.cpp
tschess
@source:saitek/turbo16k.cpp
compan3
conquist

View File

@ -313,5 +313,5 @@ ROM_END
*******************************************************************************/
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
SYST( 1980, chesstrv, 0, 0, chesstrv, chesstrv, chesstrv_state, empty_init, "SciSys / Novag Industries", "Chess Traveler", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
SYST( 1982, chesstrvi, 0, 0, chesstrvi, chesstrvi, chesstrv_state, empty_init, "SciSys", "Chess Intercontinental Traveler", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
SYST( 1980, chesstrv, 0, 0, chesstrv, chesstrv, chesstrv_state, empty_init, "SciSys / Novag Industries / Philidor Software", "Chess Traveler", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
SYST( 1982, chesstrvi, 0, 0, chesstrvi, chesstrvi, chesstrv_state, empty_init, "SciSys / Philidor Software", "Chess Intercontinental Traveler", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )

View File

@ -16,7 +16,7 @@ TODO:
================================================================================
Hardware notes:
SciSys Chess Companion II family hardware notes:
Chess Companion II:
- PCB label: YO1B-01 REV.B

View File

@ -6,22 +6,24 @@
SciSys Chess Partner 2000, also sold by Novag with the same name.
It's probably the last SciSys / Novag collaboration.
Entering moves is not as friendly as newer sensory games. The player is expected
to press ENTER after their own move, but if they (accidentally) press it after
doing the computer's move, the computer takes your turn.
Capturing pieces is also unintuitive, having to press the destination square twice.
Hardware notes:
- 3850PK CPU at ~2.77MHz(averaged), 3853PK memory interface
- 4KB ROM, 256 bytes RAM(2*2111N)
- 4-digit 7seg panel, sensory chessboard
3850 is officially rated 2MHz, and even the CP2000 manual says it runs at 2MHz,
but tests show that the chesscomputer runs at a much higher speed. Three individual
CP2000 were measured, by timing move calculation, and one recording to verify
beeper pitch and display blinking rate. Real CP2000 CPU frequency is in the
2.63MHz to 2.91MHz range.
but tests show that it runs at a much higher speed. Three individual CP2000 were
measured, by timing move calculation, and one recording to verify beeper pitch and
display blinking rate. Real CP2000 CPU frequency is in the 2.63MHz-2.91MHz range.
Entering moves is not as friendly as newer sensory games. The player is expected
to press ENTER after their own move, but if they (accidentally) press it after
doing the computer's move, the computer takes your turn.
Capturing pieces is also unintuitive, having to press the destination square twice.
The 'sequels' CP3000-CP6000 are on HMCS40 (see minichess.cpp and trsensor.cpp),
Chess Partner 1000 does not exist.
*******************************************************************************/
@ -53,7 +55,6 @@ public:
m_inputs(*this, "IN.%u", 0)
{ }
// machine configs
void cp2000(machine_config &config);
protected:
@ -67,16 +68,14 @@ private:
required_device<dac_1bit_device> m_dac;
required_ioport_array<4> m_inputs;
u16 m_inp_mux = 0;
u8 m_select = 0;
u8 m_7seg_data = 0;
u16 m_inp_mux = 0;
// address maps
void main_map(address_map &map);
void main_io(address_map &map);
// I/O handlers
void update_display();
void control_w(u8 data);
void digit_w(u8 data);
u8 input_r();
@ -87,7 +86,6 @@ void cp2000_state::machine_start()
// register for savestates
save_item(NAME(m_select));
save_item(NAME(m_inp_mux));
save_item(NAME(m_7seg_data));
}
@ -96,20 +94,12 @@ void cp2000_state::machine_start()
I/O
*******************************************************************************/
// 3850 ports
void cp2000_state::update_display()
{
m_display->matrix(m_select, m_7seg_data);
}
void cp2000_state::control_w(u8 data)
{
// d0-d3: digit select
m_select = ~data;
update_display();
// d4: keypad/chessboard select
m_select = ~data;
m_display->write_my(m_select);
// d5: speaker out
m_dac->write(BIT(~data, 5));
@ -133,13 +123,13 @@ u8 cp2000_state::input_r()
{
// d0-d3: multiplexed inputs from d4-d7
for (int i = 0; i < 4; i++)
if (BIT(m_inp_mux, i+4))
if (BIT(m_inp_mux, i + 4))
data |= m_inputs[i]->read();
// d4-d7: multiplexed inputs from d0-d3
for (int i = 0; i < 4; i++)
if (m_inp_mux & m_inputs[i]->read())
data |= 1 << (i+4);
data |= 0x10 << i;
}
return data;
@ -152,8 +142,7 @@ void cp2000_state::digit_w(u8 data)
m_inp_mux = data;
// also digit segment data
m_7seg_data = bitswap<8>(data,0,2,1,3,4,5,6,7);
update_display();
m_display->write_mx(bitswap<8>(data,0,2,1,3,4,5,6,7));
}
@ -258,4 +247,4 @@ ROM_END
*******************************************************************************/
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
SYST( 1980, cp2000, 0, 0, cp2000, cp2000, cp2000_state, empty_init, "SciSys / Novag Industries", "Chess Partner 2000", MACHINE_SUPPORTS_SAVE )
SYST( 1980, cp2000, 0, 0, cp2000, cp2000, cp2000_state, empty_init, "SciSys / Novag Industries / Philidor Software", "Chess Partner 2000", MACHINE_SUPPORTS_SAVE )

View File

@ -31,6 +31,7 @@ In the Delta-1 ROM is even some fragmented code remaining of the message:
*******************************************************************************/
#include "emu.h"
#include "cpu/f8/f8.h"
#include "machine/f3853.h"
#include "machine/timer.h"
@ -107,8 +108,6 @@ void delta1_state::machine_start()
I/O
*******************************************************************************/
// 3850 ports
void delta1_state::update_display()
{
m_display->matrix(m_led_select, (m_blink && m_7seg_rc) ? 0 : m_7seg_data);

View File

@ -268,4 +268,4 @@ ROM_END
*******************************************************************************/
// 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 )
SYST( 1981, exechess, 0, 0, exechess, exechess, exechess_state, empty_init, "SciSys / Philidor Software", "Executive Chess", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )

View File

@ -3,13 +3,18 @@
// thanks-to:Berger, Achim
/*******************************************************************************
SciSys Intelligent Chess
Intelligent Games / SciSys Intelligent Chess
Developed by Intelligent Games, the same group of people that worked on SciSys
Super System III and Mark V. Manufactured by SciSys, their main business partner
at the time. The visual interface is an evolution of "Tolinka".
It was advertised in a 1980 brochure by SciSys, but it looks like SciSys didn't
sell this chess computer. It was marketed by Intelligent Games themselves.
The UK version wasn't widely released, the German version was more common.
Development by Intelligent Games, the same group of people that worked on the
Super System III and Mark V. The visual interface is an evolution of "Tolinka".
Hardware notes:
- PCB label: INTELLIGENT GAMES Ltd, (C) 1980, IG3
- Synertek 6502A @ ~1.1MHz
- Synertek 6522 VIA
- 2*4KB ROM(Synertek 2332), 2KB RAM(4*M5L2114LP)
@ -26,6 +31,7 @@ TODO:
*******************************************************************************/
#include "emu.h"
#include "cpu/m6502/m6502.h"
#include "imagedev/cassette.h"
#include "machine/6522via.h"
@ -39,7 +45,7 @@ TODO:
#include "speaker.h"
// internal artwork
#include "saitek_intchess.lh"
#include "intchess.lh"
namespace {
@ -65,9 +71,6 @@ public:
void intchess(machine_config &config);
protected:
virtual void machine_start() override;
private:
// devices/pointers
required_device<cpu_device> m_maincpu;
@ -81,14 +84,9 @@ private:
required_device<palette_device> m_palette;
required_device<cassette_image_device> m_cass;
u8 m_select = 0;
u8 m_7seg_data = 0;
// address maps
void main_map(address_map &map);
// I/O handlers
void update_display();
void seg_w(u8 data);
void control_w(u8 data);
u8 control_r();
@ -100,13 +98,6 @@ private:
TIMER_DEVICE_CALLBACK_MEMBER(cass_input);
};
void intchess_state::machine_start()
{
// register for savestates
save_item(NAME(m_select));
save_item(NAME(m_7seg_data));
}
INPUT_CHANGED_MEMBER(intchess_state::reset_button)
{
// assume that reset button is tied to 6502/6522
@ -164,24 +155,17 @@ void intchess_state::vram_w(offs_t offset, u8 data)
I/O
*******************************************************************************/
void intchess_state::update_display()
{
m_display->matrix(m_select, m_7seg_data);
}
void intchess_state::seg_w(u8 data)
{
// PA1-PA7: 7seg data
// PA0: ?
m_7seg_data = bitswap<8>(~data,0,1,2,3,4,5,6,7);
update_display();
m_display->write_mx(bitswap<8>(~data,0,1,2,3,4,5,6,7));
}
void intchess_state::control_w(u8 data)
{
// PB0-PB3: digit select
m_select = data & 0xf;
update_display();
m_display->write_my(data & 0xf);
// PB5-PB7 to cassette deck
// PB5: speaker
@ -321,7 +305,7 @@ void intchess_state::intchess(machine_config &config)
PWM_DISPLAY(config, m_display).set_size(4, 8);
m_display->set_segmask(0xf, 0x7f);
config.set_default_layout(layout_saitek_intchess);
config.set_default_layout(layout_intchess);
// sound hardware
SPEAKER(config, "speaker").front_center();
@ -358,4 +342,4 @@ ROM_END
*******************************************************************************/
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
SYST( 1980, intchess, 0, 0, intchess, intchess, intchess_state, empty_init, "SciSys / Intelligent Games", "Intelligent Chess", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_GRAPHICS )
SYST( 1980, intchess, 0, 0, intchess, intchess, intchess_state, empty_init, "Intelligent Games / SciSys", "Intelligent Chess", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_GRAPHICS )

View File

@ -9,7 +9,7 @@ It's the first chess program on HMCS40. The engine was written by Mark Taylor
with assistance from David Levy.
Hardware notes:
- Hitachi 44801A34 MCU @ ~400kHz
- Hitachi 44801A34 MCU @ ~500kHz
- 4-digit LCD screen
Excluding resellers with same title, this MCU was used in:
@ -182,7 +182,7 @@ INPUT_PORTS_END
void mini_state::smchess(machine_config &config)
{
// basic machine hardware
HD44801(config, m_maincpu, 400'000);
HD44801(config, m_maincpu, 500'000); // approximation, R=62K
m_maincpu->write_r<2>().set(FUNC(mini_state::seg_w<0>));
m_maincpu->write_r<3>().set(FUNC(mini_state::seg_w<1>));
m_maincpu->write_d().set(FUNC(mini_state::mux_w));
@ -225,4 +225,4 @@ ROM_END
*******************************************************************************/
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
SYST( 1981, smchess, 0, 0, smchess, smchess, mini_state, empty_init, "SciSys", "Mini Chess", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
SYST( 1981, smchess, 0, 0, smchess, smchess, mini_state, empty_init, "SciSys / Philidor Software", "Mini Chess", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )

View File

@ -24,6 +24,7 @@ TODO:
*******************************************************************************/
#include "emu.h"
#include "cpu/m6502/m6502.h"
#include "machine/sensorboard.h"
#include "sound/dac.h"

View File

@ -3,14 +3,15 @@
// thanks-to:Berger
/*******************************************************************************
SciSys / Novag Chess Champion: Super System III (aka MK III), distributed by
both SciSys and Novag. Which company was responsible for which part of the
manufacturing chain is unknown. The software is by SciSys (no mention of Novag
in the ROM, it has "COPYRIGHT SCISYS LTD 1979").
SciSys / Novag Chess Champion: Super System III (aka MK III)
It was distributed by both SciSys and Novag. Which company was responsible for
which part of the production chain is unknown. The copyright was assigned to SciSys
(no mention of Novag in the ROM, it has "COPYRIGHT SCISYS LTD 1979").
This is their 1st original product. MK II was licensed from Peter Jennings, and
MK I was, to put it bluntly, a bootleg. The chess engine is by Mike Johnson,
with support from David Levy.
MK I was, to put it bluntly, a bootleg. The chess engine is by Mike Johnson, with
support from David Levy, Philidor Software.
Hardware notes:
@ -572,5 +573,6 @@ ROM_END
*******************************************************************************/
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
SYST( 1979, ssystem3, 0, 0, ssystem3, ssystem3, ssystem3_state, init_ssystem3, "SciSys / Novag Industries", "Chess Champion: Super System III", MACHINE_SUPPORTS_SAVE )
SYST( 1980, ssystem4, 0, 0, ssystem4, ssystem4, ssystem3_state, empty_init, "SciSys", "Chess Champion: Super System IV", MACHINE_SUPPORTS_SAVE )
SYST( 1979, ssystem3, 0, 0, ssystem3, ssystem3, ssystem3_state, init_ssystem3, "SciSys / Novag Industries / Philidor Software", "Chess Champion: Super System III", MACHINE_SUPPORTS_SAVE )
SYST( 1980, ssystem4, 0, 0, ssystem4, ssystem4, ssystem3_state, empty_init, "SciSys / Philidor Software", "Chess Champion: Super System IV", MACHINE_SUPPORTS_SAVE )

199
src/mame/saitek/tschess.cpp Normal file
View File

@ -0,0 +1,199 @@
// license:BSD-3-Clause
// copyright-holders:hap
// thanks-to:Sean Riddle
/*******************************************************************************
SciSys Travel Sensor Chess (aka Travel Sensor)
The chess engine was written by Mark Taylor, employee at Intelligent Software
(formerly known as Philidor Software). The I/O is very similar to CXG Sensor
Computachess (see cxg/computachess.cpp).
Hardware notes:
- PCB label: SCISYS TC-A, 201148
- Hitachi 44801A85 MCU @ ~350kHz
- piezo, 21 leds, button sensors chessboard
44801A85 MCU is used in:
- SciSys Travel Sensor Chess
- SciSys Travel Mate Chess
- SciSys Chess Partner 5000
- SciSys Chess Partner 6000
TODO:
- add memory switch (it goes to the HLT pin)
*******************************************************************************/
#include "emu.h"
#include "cpu/hmcs40/hmcs40.h"
#include "machine/sensorboard.h"
#include "sound/dac.h"
#include "video/pwm.h"
#include "speaker.h"
// internal artwork
#include "saitek_tschess.lh"
namespace {
class tschess_state : public driver_device
{
public:
tschess_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 tschess(machine_config &config);
// New Game button is directly tied to MCU reset
DECLARE_INPUT_CHANGED_MEMBER(reset_button) { m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE); }
protected:
virtual void machine_start() override;
private:
// devices/pointers
required_device<hmcs40_cpu_device> m_maincpu;
required_device<sensorboard_device> m_board;
required_device<pwm_display_device> m_display;
required_device<dac_1bit_device> m_dac;
required_ioport_array<2> m_inputs;
u8 m_inp_mux = 0;
template<int N> void mux_w(u8 data);
void control_w(u16 data);
u16 input_r();
};
void tschess_state::machine_start()
{
save_item(NAME(m_inp_mux));
}
/*******************************************************************************
I/O
*******************************************************************************/
template<int N>
void tschess_state::mux_w(u8 data)
{
// R2x,R3x: input mux, led data
m_inp_mux = (m_inp_mux & ~(0xf << (N*4))) | ((data ^ 0xf) << (N*4));
m_display->write_mx(m_inp_mux);
}
void tschess_state::control_w(u16 data)
{
// D1-D3: led select
m_display->write_my(~data >> 1 & 7);
// D4: speaker out
m_dac->write(data >> 4 & 1);
}
u16 tschess_state::input_r()
{
u16 data = 0;
// D6,D7: read buttons
for (int i = 0; i < 2; i++)
if (m_inp_mux & m_inputs[i]->read())
data |= 0x40 << i;
// D8-D15: read chessboard
for (int i = 0; i < 8; i++)
if (BIT(m_inp_mux, i))
data |= m_board->read_file(i ^ 7) << 8;
return ~data;
}
/*******************************************************************************
Input Ports
*******************************************************************************/
static INPUT_PORTS_START( tschess )
PORT_START("IN.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("White/Black")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("King")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Queen")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Rook")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Bishop")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Knight")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Pawn")
PORT_START("IN.1")
PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("Compute")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Set Up")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_NAME("Sound")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("Level")
PORT_START("RESET")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_CHANGED_MEMBER(DEVICE_SELF, tschess_state, reset_button, 0) PORT_NAME("New Game")
INPUT_PORTS_END
/*******************************************************************************
Machine Configs
*******************************************************************************/
void tschess_state::tschess(machine_config &config)
{
// basic machine hardware
HD44801(config, m_maincpu, 350'000); // approximation, R=150K
m_maincpu->write_r<2>().set(FUNC(tschess_state::mux_w<0>));
m_maincpu->write_r<3>().set(FUNC(tschess_state::mux_w<1>));
m_maincpu->write_d().set(FUNC(tschess_state::control_w));
m_maincpu->read_d().set(FUNC(tschess_state::input_r));
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(3, 8);
config.set_default_layout(layout_saitek_tschess);
// sound hardware
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
}
/*******************************************************************************
ROM Definitions
*******************************************************************************/
ROM_START( tschess )
ROM_REGION( 0x2000, "maincpu", 0 )
ROM_LOAD("44801a85_scisys_tc-1982.u1", 0x0000, 0x2000, CRC(3ed0253a) SHA1(a3352758285292cfb0ad66e095cc951113332ced) )
ROM_END
} // anonymous namespace
/*******************************************************************************
Drivers
*******************************************************************************/
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
SYST( 1982, tschess, 0, 0, tschess, tschess, tschess_state, empty_init, "SciSys / Intelligent Software", "Travel Sensor Chess", MACHINE_SUPPORTS_SAVE )