New working machines

--------------------
President Chess [hap, Berger]
This commit is contained in:
hap 2020-03-14 18:19:14 +01:00
parent 9d9302db3a
commit b230ac240f
6 changed files with 699 additions and 5 deletions

View File

@ -3275,6 +3275,7 @@ files {
MAME_DIR .. "src/mame/drivers/saitek_cp2000.cpp",
MAME_DIR .. "src/mame/drivers/saitek_delta1.cpp",
MAME_DIR .. "src/mame/drivers/saitek_mark5.cpp",
MAME_DIR .. "src/mame/drivers/saitek_president.cpp",
MAME_DIR .. "src/mame/drivers/saitek_risc2500.cpp",
MAME_DIR .. "src/mame/includes/saitek_stratos.h",
MAME_DIR .. "src/mame/drivers/saitek_ssystem3.cpp",

View File

@ -16,8 +16,8 @@ Supremo also had a "limited edition" rerelease in 1990, plastic is fake-wood
instead of black, otherwise it's the same game.
TODO:
- does not work, most likely due to incomplete cpu emulation
(extra I/O ports, unemulated timer registers)
- does not work, most likely due to incomplete cpu emulation (unemulated timer registers)
- is 1988 version the same ROM?
******************************************************************************/
@ -78,7 +78,7 @@ void supremo_state::machine_start()
void supremo_state::main_map(address_map &map)
{
map(0x0000, 0x000e).m(m_maincpu, FUNC(hd6303y_cpu_device::m6801_io));
map(0x0000, 0x0027).m(m_maincpu, FUNC(hd6303y_cpu_device::hd6301y_io));
map(0x0040, 0x013f).ram(); // internal
map(0x4000, 0x47ff).ram();
map(0x8000, 0xffff).rom();
@ -135,5 +135,5 @@ ROM_END
******************************************************************************/
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
CONS( 1988, supremo, 0, 0, supremo, supremo, supremo_state, empty_init, "Novag", "Supremo", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
CONS( 1990, supremo, 0, 0, supremo, supremo, supremo_state, empty_init, "Novag", "Supremo - Limited Edition", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )

View File

@ -0,0 +1,237 @@
// license:BSD-3-Clause
// copyright-holders:hap
// thanks-to:Berger
/******************************************************************************
SciSys President Chess (model 231)
The ROMs are inside a module, at the top-right. No known upgrades were released.
Apparently the chessboard was not that reliable. The manual even says to flip the
computer and shake it when one of the reed sensors is malfunctioning.
Hardware notes:
- 6502A @ 2MHz
- 16KB ROM(2*HN482764G), 2KB RAM(HM6116P-4)
- 64+12 leds, magnet sensors chessboard
TODO:
- verify CPU speed / XTAL
- measure interrupt frequency
- the manual claims that it does a self-test at boot, but on MAME that only
happens if you hold down one of the buttons
******************************************************************************/
#include "emu.h"
#include "cpu/m6502/m6502.h"
#include "machine/sensorboard.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
#include "video/pwm.h"
#include "speaker.h"
// internal artwork
#include "saitek_president.lh" // clickable
namespace {
class president_state : public driver_device
{
public:
president_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)
{ }
// machine configs
void prschess(machine_config &config);
protected:
virtual void machine_start() override;
private:
// devices/pointers
required_device<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<3> m_inputs;
// address maps
void main_map(address_map &map);
// I/O handlers
void update_display();
DECLARE_WRITE8_MEMBER(leds0_w);
DECLARE_WRITE8_MEMBER(leds1_w);
DECLARE_WRITE8_MEMBER(control_w);
DECLARE_READ8_MEMBER(input_r);
u8 m_inp_mux = 0;
u8 m_led_data[2] = { 0, 0 };
};
void president_state::machine_start()
{
save_item(NAME(m_inp_mux));
save_item(NAME(m_led_data));
}
/******************************************************************************
I/O
******************************************************************************/
void president_state::update_display()
{
u16 led_data = m_led_data[1] << 8 | m_led_data[0];
led_data = bitswap<16>(led_data, 15,14,5,4,3,2,1,0,7,6,13,12,11,10,9,8);
m_display->matrix(1 << m_inp_mux, led_data);
}
WRITE8_MEMBER(president_state::leds0_w)
{
m_led_data[0] = ~data;
update_display();
}
WRITE8_MEMBER(president_state::leds1_w)
{
m_led_data[1] = ~data;
update_display();
}
WRITE8_MEMBER(president_state::control_w)
{
// d0-d3: input mux, led select
m_inp_mux = data & 0xf;
update_display();
// d5: speaker out
m_dac->write(BIT(data, 5));
// other: ?
}
READ8_MEMBER(president_state::input_r)
{
u8 data = 0;
// read chessboard sensors
if (m_inp_mux < 8)
data = m_board->read_file(m_inp_mux);
// read other buttons
else if (m_inp_mux < 11)
data = m_inputs[m_inp_mux - 8]->read();
return data;
}
/******************************************************************************
Address Maps
******************************************************************************/
void president_state::main_map(address_map &map)
{
map(0x0000, 0x07ff).ram();
map(0x4000, 0x4000).w(FUNC(president_state::leds0_w));
map(0x4100, 0x4100).w(FUNC(president_state::leds1_w));
map(0x4200, 0x4200).w(FUNC(president_state::control_w));
map(0x4300, 0x4300).r(FUNC(president_state::input_r));
map(0xc000, 0xffff).rom();
}
/******************************************************************************
Input Ports
******************************************************************************/
static INPUT_PORTS_START( prschess )
PORT_START("IN.0")
PORT_BIT(0x03, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("Interrupt")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("Move")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Take Back")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_NAME("Hint")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("Legal")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("Level")
PORT_START("IN.1")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Reset")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Z) PORT_NAME("Player V Computer")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_X) PORT_NAME("Player V Player")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Change Sides")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("Clear Board")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("Verify / Set Up")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("White")
PORT_START("IN.2")
PORT_BIT(0x03, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Pawn")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Knight")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Bishop")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Rook")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Queen")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("King")
INPUT_PORTS_END
/******************************************************************************
Machine Configs
******************************************************************************/
void president_state::prschess(machine_config &config)
{
/* basic machine hardware */
M6502(config, m_maincpu, 2000000);
m_maincpu->set_addrmap(AS_PROGRAM, &president_state::main_map);
m_maincpu->set_periodic_int(FUNC(president_state::nmi_line_pulse), attotime::from_hz(100)); // guessed
SENSORBOARD(config, m_board).set_type(sensorboard_device::MAGNETS);
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(8+1, 16);
config.set_default_layout(layout_saitek_president);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
}
/******************************************************************************
ROM Definitions
******************************************************************************/
ROM_START( prschess )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("y03_rl", 0xc000, 0x2000, CRC(862c3f42) SHA1(e2d2f1d7a0382b0774e86ca83e270dab1df700c2) ) // HN482764G
ROM_LOAD("y03_rh", 0xe000, 0x2000, CRC(ef95cb9f) SHA1(02f763cf9cab1b4be8964ddb5d93efb05a898123) ) // "
ROM_END
} // anonymous namespace
/******************************************************************************
Drivers
******************************************************************************/
// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
CONS( 1982, prschess, 0, 0, prschess, prschess, president_state, empty_init, "SciSys", "President Chess", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -0,0 +1,452 @@
<?xml version="1.0"?>
<!--
license:CC0
-->
<mamelayout version="2">
<!-- define elements -->
<element name="white"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element>
<element name="hl" defstate="0">
<text string=" "><bounds x="0" y="0" width="1" height="1" /></text>
<disk state="1">
<bounds x="0.2" y="0" width="0.6" height="1" />
<color red="0.15" green="0.15" blue="0.15" />
</disk>
</element>
<element name="led" defstate="0">
<disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk>
<disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk>
</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>
<element name="text_hn1"><text string="1"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_hn2"><text string="2"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_hn3"><text string="3"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_hn4"><text string="4"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_hn5"><text string="5"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_hn6"><text string="6"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_hn7"><text string="7"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_hn8"><text string="8"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_hl1"><text string="A"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_hl2"><text string="B"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_hl3"><text string="C"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_hl4"><text string="D"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_hl5"><text string="E"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_hl6"><text string="F"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_hl7"><text string="G"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_hl8"><text string="H"><color red="0.9" green="0.9" blue="0.9" /></text></element>
<element name="text_l1"><text string="LEVEL"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l2"><text string="LEGAL"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l3"><text string="HINT"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l4a"><text string="TAKE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l4b"><text string="BACK"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l5"><text string="MOVE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l6"><text string="INTERRUPT"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l7"><text string="COMPUTING"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l8"><text string="WHITE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l9a"><text string="VERIFY /"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l9b"><text string="SET UP"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l10a"><text string="CLEAR"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l10b"><text string="BOARD"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l11a"><text string="CHANGE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l11b"><text string="SIDES"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l12a"><text string="PLAYER V"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l12b"><text string="PLAYER"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l13a"><text string="PLAYER V"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l13b"><text string="COMPUTER"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_l14"><text string="RESET"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_p1"><image file="chess/wk.png"><color alpha="0.9" /></image></element>
<element name="text_p2"><image file="chess/wq.png"><color alpha="0.9" /></image></element>
<element name="text_p3"><image file="chess/wr.png"><color alpha="0.9" /></image></element>
<element name="text_p4"><image file="chess/wb.png"><color alpha="0.9" /></image></element>
<element name="text_p5"><image file="chess/wn.png"><color alpha="0.9" /></image></element>
<element name="text_p6"><image file="chess/wp.png"><color alpha="0.9" /></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.png" state="1"/>
<image file="chess/wn.png" state="2"/>
<image file="chess/wb.png" state="3"/>
<image file="chess/wr.png" state="4"/>
<image file="chess/wq.png" state="5"/>
<image file="chess/wk.png" state="6"/>
<image file="chess/bp.png" state="7"/>
<image file="chess/bn.png" state="8"/>
<image file="chess/bb.png" state="9"/>
<image file="chess/br.png" state="10"/>
<image file="chess/bq.png" state="11"/>
<image file="chess/bk.png" state="12"/>
<!-- selected pieces -->
<image file="chess/wp.png" state="13"><color alpha="0.5" /></image>
<image file="chess/wn.png" state="14"><color alpha="0.5" /></image>
<image file="chess/wb.png" state="15"><color alpha="0.5" /></image>
<image file="chess/wr.png" state="16"><color alpha="0.5" /></image>
<image file="chess/wq.png" state="17"><color alpha="0.5" /></image>
<image file="chess/wk.png" state="18"><color alpha="0.5" /></image>
<image file="chess/bp.png" state="19"><color alpha="0.5" /></image>
<image file="chess/bn.png" state="20"><color alpha="0.5" /></image>
<image file="chess/bb.png" state="21"><color alpha="0.5" /></image>
<image file="chess/br.png" state="22"><color alpha="0.5" /></image>
<image file="chess/bq.png" state="23"><color alpha="0.5" /></image>
<image file="chess/bk.png" state="24"><color alpha="0.5" /></image>
</element>
<group name="sb_board">
<bounds x="0" y="0" width="80" height="80" />
<!-- squares (avoid seams) -->
<bezel element="cwhite"><bounds x="0" y="0" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="10" y="0" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="20" y="0" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="30" y="0" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="40" y="0" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="50" y="0" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="60" y="0" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="70" y="0" width="10" height="11" /></bezel>
<bezel element="cblack"><bounds x="0" y="10" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="10" y="10" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="20" y="10" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="30" y="10" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="40" y="10" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="50" y="10" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="60" y="10" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="70" y="10" width="10" height="11" /></bezel>
<bezel element="cwhite"><bounds x="0" y="20" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="10" y="20" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="20" y="20" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="30" y="20" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="40" y="20" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="50" y="20" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="60" y="20" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="70" y="20" width="10" height="11" /></bezel>
<bezel element="cblack"><bounds x="0" y="30" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="10" y="30" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="20" y="30" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="30" y="30" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="40" y="30" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="50" y="30" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="60" y="30" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="70" y="30" width="10" height="11" /></bezel>
<bezel element="cwhite"><bounds x="0" y="40" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="10" y="40" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="20" y="40" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="30" y="40" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="40" y="40" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="50" y="40" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="60" y="40" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="70" y="40" width="10" height="11" /></bezel>
<bezel element="cblack"><bounds x="0" y="50" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="10" y="50" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="20" y="50" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="30" y="50" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="40" y="50" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="50" y="50" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="60" y="50" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="70" y="50" width="10" height="11" /></bezel>
<bezel element="cwhite"><bounds x="0" y="60" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="10" y="60" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="20" y="60" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="30" y="60" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="40" y="60" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="50" y="60" width="11" height="11" /></bezel>
<bezel element="cwhite"><bounds x="60" y="60" width="11" height="11" /></bezel>
<bezel element="cblack"><bounds x="70" y="60" width="10" height="11" /></bezel>
<bezel element="cblack"><bounds x="0" y="70" width="11" height="10" /></bezel>
<bezel element="cwhite"><bounds x="10" y="70" width="11" height="10" /></bezel>
<bezel element="cblack"><bounds x="20" y="70" width="11" height="10" /></bezel>
<bezel element="cwhite"><bounds x="30" y="70" width="11" height="10" /></bezel>
<bezel element="cblack"><bounds x="40" y="70" width="11" height="10" /></bezel>
<bezel element="cwhite"><bounds x="50" y="70" width="11" height="10" /></bezel>
<bezel element="cblack"><bounds x="60" y="70" width="11" height="10" /></bezel>
<bezel element="cwhite"><bounds x="70" y="70" width="10" height="10" /></bezel>
<!-- leds -->
<repeat count="8">
<param name="y" start="8.3" increment="10" />
<param name="i1" start="7" increment="-1" />
<repeat count="8">
<param name="x" start="0.2" increment="10" />
<param name="i2" start="0" increment="1" />
<bezel name="~i2~.~i1~" element="led"><bounds x="~x~" y="~y~" width="1.5" height="1.5" /></bezel>
</repeat>
</repeat>
<!-- sensors, pieces -->
<repeat count="8">
<param name="y" start="0" increment="10" />
<param name="i" start="8" increment="-1" />
<bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x80"><bounds x="70" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel name="piece_a~i~" element="piece"><bounds x="0" y="~y~" width="10" height="10" /></bezel>
<bezel name="piece_b~i~" element="piece"><bounds x="10" y="~y~" width="10" height="10" /></bezel>
<bezel name="piece_c~i~" element="piece"><bounds x="20" y="~y~" width="10" height="10" /></bezel>
<bezel name="piece_d~i~" element="piece"><bounds x="30" y="~y~" width="10" height="10" /></bezel>
<bezel name="piece_e~i~" element="piece"><bounds x="40" y="~y~" width="10" height="10" /></bezel>
<bezel name="piece_f~i~" element="piece"><bounds x="50" y="~y~" width="10" height="10" /></bezel>
<bezel name="piece_g~i~" element="piece"><bounds x="60" y="~y~" width="10" height="10" /></bezel>
<bezel name="piece_h~i~" element="piece"><bounds x="70" y="~y~" width="10" height="10" /></bezel>
</repeat>
</group>
<!-- sb ui -->
<element name="hlub" defstate="0">
<rect state="1"><color red="0" green="0" blue="0" /></rect>
</element>
<element name="text_uit1"><text string="S.BOARD"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uit2"><text string="INTERFACE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uib1"><text string="BOARD:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uib2">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="RESET"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uib3">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="CLEAR"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uis1"><text string="SPAWN:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uih1"><text string="HAND:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uih2">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string="REMOVE"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uiu1"><text string="UNDO:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uiu2a">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string=" &lt;&lt;"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uiu2b">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string=" &lt; "><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uiu2c">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string=" &gt;"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uiu2d">
<rect><color red="0.81" green="0.8" blue="0.79" /></rect>
<text string=" &gt;&gt;"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uiu3a" defstate="0">
<simplecounter maxstate="999" digits="1" align="2">
<color red="0.81" green="0.8" blue="0.79" />
</simplecounter>
</element>
<element name="text_uiu3b"><text string="/"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uiu3c" defstate="0">
<simplecounter maxstate="999" digits="1" align="1">
<color red="0.81" green="0.8" blue="0.79" />
</simplecounter>
</element>
<group name="sb_ui">
<bounds x="0" y="0" width="10" height="80" />
<bezel element="cblack"><bounds x="0" y="0" width="10" height="1" /></bezel>
<bezel element="cblack"><bounds x="0" y="7" width="10" height="1" /></bezel>
<bezel element="cblack"><bounds x="0" y="79" width="10" height="1" /></bezel>
<bezel element="text_uit1"><bounds x="0" y="2" width="10" height="2" /></bezel>
<bezel element="text_uit2"><bounds x="0" y="4" width="10" height="2" /></bezel>
<!-- board -->
<bezel element="text_uib1"><bounds x="0" y="9" width="10" height="2" /></bezel>
<bezel element="cwhite"><bounds x="1" y="11.5" width="8" height="2.5" /></bezel>
<bezel element="cwhite"><bounds x="1" y="15" width="8" height="2.5" /></bezel>
<bezel element="text_uib2"><bounds x="1.5" y="11.75" width="7" height="2" /></bezel>
<bezel element="text_uib3"><bounds x="1.5" y="15.25" width="7" height="2" /></bezel>
<bezel element="hlub" inputtag="board:UI" inputmask="0x200"><bounds x="1" y="11.5" width="8" height="2.5" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:UI" inputmask="0x100"><bounds x="1" y="15" width="8" height="2.5" /><color alpha="0.25" /></bezel>
<!-- spawn -->
<bezel element="text_uis1"><bounds x="0" y="20.5" width="10" height="2" /></bezel>
<bezel element="cwhite"><bounds x="1" y="23" width="8" height="12" /></bezel>
<bezel element="cwhite"><bounds x="1" y="36" width="8" height="12" /></bezel>
<bezel name="piece_ui1" element="piece"><bounds x="1" y="23" width="4" height="4" /></bezel>
<bezel name="piece_ui2" element="piece"><bounds x="1" y="27" width="4" height="4" /></bezel>
<bezel name="piece_ui3" element="piece"><bounds x="1" y="31" width="4" height="4" /></bezel>
<bezel name="piece_ui4" element="piece"><bounds x="5" y="23" width="4" height="4" /></bezel>
<bezel name="piece_ui5" element="piece"><bounds x="5" y="27" width="4" height="4" /></bezel>
<bezel name="piece_ui6" element="piece"><bounds x="5" y="31" width="4" height="4" /></bezel>
<bezel name="piece_ui7" element="piece"><bounds x="1" y="36" width="4" height="4" /></bezel>
<bezel name="piece_ui8" element="piece"><bounds x="1" y="40" width="4" height="4" /></bezel>
<bezel name="piece_ui9" element="piece"><bounds x="1" y="44" width="4" height="4" /></bezel>
<bezel name="piece_ui10" element="piece"><bounds x="5" y="36" width="4" height="4" /></bezel>
<bezel name="piece_ui11" element="piece"><bounds x="5" y="40" width="4" height="4" /></bezel>
<bezel name="piece_ui12" element="piece"><bounds x="5" y="44" width="4" height="4" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0001"><bounds x="1" y="23" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0002"><bounds x="1" y="27" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0004"><bounds x="1" y="31" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0008"><bounds x="5" y="23" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0010"><bounds x="5" y="27" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0020"><bounds x="5" y="31" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0040"><bounds x="1" y="36" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0080"><bounds x="1" y="40" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0100"><bounds x="1" y="44" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0200"><bounds x="5" y="36" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0400"><bounds x="5" y="40" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0800"><bounds x="5" y="44" width="4" height="4" /><color alpha="0.25" /></bezel>
<!-- hand -->
<bezel element="text_uih1"><bounds x="0" y="51" width="10" height="2" /></bezel>
<bezel element="cblack"><bounds x="1" y="53.5" width="8" height="6" /></bezel>
<bezel name="piece_ui0" element="piece"><bounds x="2" y="53.5" width="6" height="6" /></bezel>
<bezel element="cwhite"><bounds x="1" y="60.5" width="8" height="2.5" /></bezel>
<bezel element="text_uih2"><bounds x="1.5" y="60.75" width="7" height="2" /></bezel>
<bezel element="hlub" inputtag="board:UI" inputmask="0x08"><bounds x="1" y="60.5" width="8" height="2.5" /><color alpha="0.25" /></bezel>
<!-- undo -->
<bezel element="text_uiu1"><bounds x="0" y="66" width="10" height="2" /></bezel>
<bezel element="cwhite"><bounds x="1" y="68.5" width="1.7" height="6" /></bezel>
<bezel element="cwhite"><bounds x="3.1" y="68.5" width="1.7" height="6" /></bezel>
<bezel element="cwhite"><bounds x="5.2" y="68.5" width="1.7" height="6" /></bezel>
<bezel element="cwhite"><bounds x="7.3" y="68.5" width="1.7" height="6" /></bezel>
<bezel element="text_uiu2a"><bounds x="1" y="69.5" width="1.7" height="4" /></bezel>
<bezel element="text_uiu2b"><bounds x="3.1" y="69.5" width="1.7" height="4" /></bezel>
<bezel element="text_uiu2c"><bounds x="5.2" y="69.5" width="1.7" height="4" /></bezel>
<bezel element="text_uiu2d"><bounds x="7.3" y="69.5" width="1.7" height="4" /></bezel>
<bezel element="hlub" inputtag="board:UI" inputmask="0x10"><bounds x="1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:UI" inputmask="0x20"><bounds x="3.1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:UI" inputmask="0x40"><bounds x="5.2" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:UI" inputmask="0x80"><bounds x="7.3" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
<bezel name="count_ui0" element="text_uiu3a"><bounds x="0" y="75" width="4" height="2" /></bezel>
<bezel name="count_ui1" element="text_uiu3c"><bounds x="6" y="75" width="4" height="2" /></bezel>
<bezel element="text_uiu3b"><bounds x="4" y="75" width="2" height="2" /></bezel>
</group>
<!-- build screen -->
<view name="Internal Layout">
<bounds left="-6" right="133" top="6" bottom="94" />
<group ref="sb_board"><bounds x="10" y="10" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="-4.5" y="10" width="10" height="80" /></group>
<repeat count="8">
<param name="x" start="10" increment="10" />
<param name="i" start="1" increment="1" />
<element ref="text_hl~i~"><bounds x="~x~" y="91" width="10" height="2" /></element>
</repeat>
<repeat count="8">
<param name="y" start="14" increment="10" />
<param name="i" start="8" increment="-1" />
<element ref="text_hn~i~"><bounds x="6" y="~y~" width="4" height="2" /></element>
</repeat>
<element ref="text_l1"><bounds x="94" y="34.000" width="12" height="2" /></element>
<element ref="text_l2"><bounds x="94" y="42.333" width="12" height="2" /></element>
<element ref="text_l3"><bounds x="94" y="50.666" width="12" height="2" /></element>
<element ref="text_l4a"><bounds x="94" y="58.000" width="12" height="2" /></element>
<element ref="text_l4b"><bounds x="94" y="60.000" width="12" height="2" /></element>
<element ref="text_l5"><bounds x="94" y="67.333" width="12" height="2" /></element>
<element ref="text_l6"><bounds x="94" y="75.666" width="12" height="2" /></element>
<element ref="text_l8"><bounds x="106" y="34.000" width="12" height="2" /></element>
<element ref="text_l9a"><bounds x="106" y="41.333" width="12" height="2" /></element>
<element ref="text_l9b"><bounds x="106" y="43.333" width="12" height="2" /></element>
<element ref="text_l10a"><bounds x="106" y="49.666" width="12" height="2" /></element>
<element ref="text_l10b"><bounds x="106" y="51.666" width="12" height="2" /></element>
<element ref="text_l11a"><bounds x="106" y="58.000" width="12" height="2" /></element>
<element ref="text_l11b"><bounds x="106" y="60.000" width="12" height="2" /></element>
<element ref="text_l12a"><bounds x="106" y="66.333" width="12" height="2" /></element>
<element ref="text_l12b"><bounds x="106" y="68.333" width="12" height="2" /></element>
<element ref="text_l13a"><bounds x="106" y="74.666" width="12" height="2" /></element>
<element ref="text_l13b"><bounds x="106" y="76.666" width="12" height="2" /></element>
<element ref="text_l14"><bounds x="118" y="84.000" width="12" height="2" /></element>
<element name="8.10" ref="led2"><bounds x="111.25" y="37.333" width="1.5" height="1.5" /></element>
<element name="8.0" ref="led2"><bounds x="111.25" y="45.666" width="1.5" height="1.5" /></element>
<element name="8.11" ref="led2"><bounds x="111.25" y="62.333" width="1.5" height="1.5" /></element>
<element name="8.1" ref="led2"><bounds x="111.25" y="70.666" width="1.5" height="1.5" /></element>
<element name="8.13" ref="led2"><bounds x="111.25" y="79.000" width="1.5" height="1.5" /></element>
<element ref="text_l7"><bounds x="100" y="84.000" width="12" height="2" /></element>
<element name="8.12" ref="led2"><bounds x="99.25" y="84.4" width="1.5" height="1.5" /></element>
<repeat count="6">
<param name="y" start="32.5" increment="8.333" />
<param name="i" start="1" increment="1" />
<element ref="text_p~i~"><bounds x="121.65" y="~y~" width="4.5" height="4.5" /></element>
</repeat>
<element name="8.7" ref="led2"><bounds x="123.25" y="37.333" width="1.5" height="1.5" /></element>
<element name="8.6" ref="led2"><bounds x="123.25" y="45.666" width="1.5" height="1.5" /></element>
<element name="8.2" ref="led2"><bounds x="123.25" y="54.000" width="1.5" height="1.5" /></element>
<element name="8.4" ref="led2"><bounds x="123.25" y="62.333" width="1.5" height="1.5" /></element>
<element name="8.3" ref="led2"><bounds x="123.25" y="70.666" width="1.5" height="1.5" /></element>
<element name="8.5" ref="led2"><bounds x="123.25" y="79.000" width="1.5" height="1.5" /></element>
<element ref="hl" blend="add" inputtag="IN.0" inputmask="0x80"><bounds x="95" y="32.000" width="10" height="6" /></element>
<element ref="hl" blend="add" inputtag="IN.0" inputmask="0x40"><bounds x="95" y="40.333" width="10" height="6" /></element>
<element ref="hl" blend="add" inputtag="IN.0" inputmask="0x20"><bounds x="95" y="48.666" width="10" height="6" /></element>
<element ref="hl" blend="add" inputtag="IN.0" inputmask="0x10"><bounds x="95" y="57.000" width="10" height="6" /></element>
<element ref="hl" blend="add" inputtag="IN.0" inputmask="0x08"><bounds x="95" y="65.333" width="10" height="6" /></element>
<element ref="hl" blend="add" inputtag="IN.0" inputmask="0x04"><bounds x="95" y="73.666" width="10" height="6" /></element>
<element ref="hl" blend="add" inputtag="IN.1" inputmask="0x80"><bounds x="107" y="32.000" width="10" height="6" /></element>
<element ref="hl" blend="add" inputtag="IN.1" inputmask="0x40"><bounds x="107" y="40.333" width="10" height="6" /></element>
<element ref="hl" blend="add" inputtag="IN.1" inputmask="0x20"><bounds x="107" y="48.666" width="10" height="6" /></element>
<element ref="hl" blend="add" inputtag="IN.1" inputmask="0x10"><bounds x="107" y="57.000" width="10" height="6" /></element>
<element ref="hl" blend="add" inputtag="IN.1" inputmask="0x08"><bounds x="107" y="65.333" width="10" height="6" /></element>
<element ref="hl" blend="add" inputtag="IN.1" inputmask="0x04"><bounds x="107" y="73.666" width="10" height="6" /></element>
<element ref="hl" blend="add" inputtag="IN.2" inputmask="0x80"><bounds x="119" y="32.000" width="10" height="6" /></element>
<element ref="hl" blend="add" inputtag="IN.2" inputmask="0x40"><bounds x="119" y="40.333" width="10" height="6" /></element>
<element ref="hl" blend="add" inputtag="IN.2" inputmask="0x20"><bounds x="119" y="48.666" width="10" height="6" /></element>
<element ref="hl" blend="add" inputtag="IN.2" inputmask="0x10"><bounds x="119" y="57.000" width="10" height="6" /></element>
<element ref="hl" blend="add" inputtag="IN.2" inputmask="0x08"><bounds x="119" y="65.333" width="10" height="6" /></element>
<element ref="hl" blend="add" inputtag="IN.2" inputmask="0x04"><bounds x="119" y="73.666" width="10" height="6" /></element>
<element ref="hl" blend="add" inputtag="IN.1" inputmask="0x02"><bounds x="119" y="82.000" width="10" height="6" /></element>
</view>
</mamelayout>

View File

@ -10502,7 +10502,7 @@ cmpchess
cncchess
@source:compmahj.cpp
compmahj // 1987 Nintendo Computer Mahjong
compmahj // 1983 Nintendo Computer Mah-jong Yakuman
@source:compucolor.cpp
compclr2 //
@ -34977,6 +34977,9 @@ ccdelta1 //
ccmk5
ccmk6
@source:saitek_president.cpp
prschess
@source:saitek_risc2500.cpp
risc2500 //
risc2500a //

View File

@ -767,6 +767,7 @@ saitek_corona.cpp
saitek_cp2000.cpp
saitek_delta1.cpp
saitek_mark5.cpp
saitek_president.cpp
saitek_risc2500.cpp
saitek_ssystem3.cpp
saitek_stratos.cpp