New working machines

--------------------
Kasparov Simultano (ver. C) [hap, Achim]
This commit is contained in:
hap 2020-05-19 00:50:57 +02:00
parent 4e7244f77d
commit bb7b5fa97d
13 changed files with 1008 additions and 70 deletions

View File

@ -3360,6 +3360,7 @@ files {
MAME_DIR .. "src/mame/drivers/saitek_renaissance.cpp",
MAME_DIR .. "src/mame/drivers/saitek_risc2500.cpp",
MAME_DIR .. "src/mame/drivers/saitek_schess.cpp",
MAME_DIR .. "src/mame/drivers/saitek_simultano.cpp",
MAME_DIR .. "src/mame/drivers/saitek_ssystem3.cpp",
MAME_DIR .. "src/mame/includes/saitek_stratos.h",
MAME_DIR .. "src/mame/drivers/saitek_stratos.cpp",

View File

@ -10,7 +10,7 @@ panel design, the 2nd version has rectangular buttons. See fidel_sc6.cpp for
the 2nd version.
Hardware notes:
- Z8 MCU(custom label, probably Z8601), 8MHz XTAL
- Zilog Z8 MCU(custom label, probably Z8601), 8MHz XTAL
- buzzer, 18 leds, 8*8 chessboard buttons, module slot
released modules, * denotes not dumped yet:

View File

@ -50,6 +50,16 @@ Gambit(v3) hardware notes:
MCU ports I/O again identical to SC6.
The same MCU+ROM was also used in Designer 1500(PCB label 510.1131A01).
Gambit Voice hardware notes:
- TMP80C50AP-6-9311 MCU, 4KB internal ROM, 6MHz XTAL
- 510.1117A01 sound PCB, the one from Excel Voice, but with 2332 ROM
- speaker, 16 leds, 8*8 chessboard buttons
To summarize, known MCU chip ROM serials+year:
- 100-1020B01 (1989), The Gambit
- 100-1020B02 (1987), The Classic
- 100-1020C01 (1987), Gambit Voice
******************************************************************************/
#include "emu.h"
@ -306,7 +316,7 @@ void sc6_state::msc(machine_config &config)
void sc6_state::sc6(machine_config &config)
{
msc(config);
gambit(config);
/* basic machine hardware */
I8040(config.replace(), m_maincpu, 11_MHz_XTAL);
@ -322,8 +332,8 @@ void sc6_state::sc6(machine_config &config)
config.set_default_layout(layout_fidel_sc6);
/* cartridge */
GENERIC_CARTSLOT(config.replace(), "cartslot", generic_plain_slot, "fidel_sc6").set_must_be_loaded(true);
SOFTWARE_LIST(config.replace(), "cart_list").set_original("fidel_sc6");
GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_sc6").set_must_be_loaded(true);
SOFTWARE_LIST(config, "cart_list").set_original("fidel_sc6");
}

View File

@ -19,6 +19,8 @@ different compared to Stratos/Turbo King.
#include "machine/sensorboard.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
#include "softlist.h"
#include "speaker.h"
@ -119,11 +121,11 @@ void corona_state::machine_reset()
void corona_state::update_leds()
{
// button leds
m_display->matrix_partial(0, 2, 1 << (m_control1 >> 5 & 1), (~m_led_data1 & 0xff), false);
m_display->matrix_partial(0, 2, 1 << (m_control1 >> 5 & 1), ~m_led_data1 & 0xff, false);
m_display->write_row(2, ~m_select1 >> 4 & 0xf);
// chessboard leds
m_display->matrix_partial(3, 8, 1 << (m_select1 & 0xf), m_led_data2);
m_display->matrix_partial(3, 8, 1 << (m_select1 & 0xf), m_led_data2, true);
}
WRITE8_MEMBER(corona_state::leds1_w)
@ -192,7 +194,7 @@ READ8_MEMBER(corona_state::control1_r)
// d6: FREQ. SEL related?
// d7: battery low
data |= m_inputs[8]->read();
data |= m_inputs[8]->read() << 7;
return data;
}
@ -245,7 +247,7 @@ void corona_state::rombank_map(address_map &map)
{
map.unmap_value_high();
map(0x00000, 0x0ffff).rom().region("maincpu", 0);
map(0x10000, 0x17fff).r(m_extrom, FUNC(generic_slot_device::read_rom));
map(0x10000, 0x17fff).r("extrom", FUNC(generic_slot_device::read_rom));
}
@ -292,9 +294,7 @@ void corona_state::corona(machine_config &config)
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
/* extension rom */
GENERIC_CARTSLOT(config, m_extrom, generic_plain_slot, "saitek_egr", "bin");
m_extrom->set_device_load(FUNC(corona_state::extrom_load));
GENERIC_CARTSLOT(config, "extrom", generic_plain_slot, "saitek_egr");
SOFTWARE_LIST(config, "cart_list").set_original("saitek_egr");
}

View File

@ -477,7 +477,7 @@ ROM_START( ccmk5 )
ROM_LOAD("c47027_syp_2364-3-y5d", 0xe000, 0x2000, CRC(7c0f7bd8) SHA1(68b4566f0501005f6b1739bb24a4bec990421a6f) ) // "
ROM_REGION( 1887415, "screen", 0)
ROM_LOAD( "ccmk5.svg", 0, 1887415, CRC(656a2263) SHA1(4557979c62b1240f7a0d813ec5f4d54b8a27218e) )
ROM_LOAD("ccmk5.svg", 0, 1887415, CRC(656a2263) SHA1(4557979c62b1240f7a0d813ec5f4d54b8a27218e) )
ROM_END
ROM_START( ccmk6 )
@ -491,7 +491,7 @@ ROM_START( ccmk6 )
ROM_LOAD("d2732c-e.u1", 0x0000, 0x1000, CRC(93221b4c) SHA1(8561b52c80cab7c04d30eaa14f9520a362d7f822) ) // no label, identical halves
ROM_REGION( 1887415, "screen", 0)
ROM_LOAD( "ccmk5.svg", 0, 1887415, CRC(656a2263) SHA1(4557979c62b1240f7a0d813ec5f4d54b8a27218e) )
ROM_LOAD("ccmk5.svg", 0, 1887415, CRC(656a2263) SHA1(4557979c62b1240f7a0d813ec5f4d54b8a27218e) )
ROM_END
} // anonymous namespace

View File

@ -12,7 +12,7 @@ Hardware notes:
- 6301Y0(mode 1) or HD6303YP MCU @ 10MHz
- 8KB RAM, 32KB ROM
- "HELIOS" I/O (NEC gate array)
- Seiko Epson SED1502F, LCD screen
- Epson SED1502F, LCD screen
- magnet sensors chessboard with 81 leds
The 6301Y0 seen on one of them, was a SX8A 6301Y0G84P, this is in fact the
@ -54,7 +54,9 @@ public:
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_board(*this, "board"),
m_display(*this, "display%u", 0),
m_display(*this, "display"),
m_lcd_pwm(*this, "lcd_pwm"),
m_lcd(*this, "lcd"),
m_dac(*this, "dac"),
m_inputs(*this, "IN.%u", 0),
m_out_lcd(*this, "s%u.%u", 0U, 0U)
@ -70,7 +72,9 @@ private:
// devices/pointers
required_device<hd6303y_cpu_device> m_maincpu;
required_device<sensorboard_device> m_board;
required_device_array<pwm_display_device, 2> m_display;
required_device<pwm_display_device> m_display;
required_device<pwm_display_device> m_lcd_pwm;
required_device<sed1502_device> m_lcd;
optional_device<dac_bit_interface> m_dac;
required_ioport_array<8+1> m_inputs;
output_finder<16, 34> m_out_lcd;
@ -120,7 +124,7 @@ void ren_state::lcd_pwm_w(offs_t offset, u8 data)
void ren_state::lcd_output_w(offs_t offset, u64 data)
{
m_display[1]->write_row(offset, data);
m_lcd_pwm->write_row(offset, data);
}
@ -128,8 +132,8 @@ void ren_state::lcd_output_w(offs_t offset, u64 data)
void ren_state::update_display()
{
m_display[0]->matrix_partial(0, 9, 1 << (m_inp_mux & 0xf), (m_inp_mux << 4 & 0x100) | m_led_data[0], false);
m_display[0]->matrix_partial(9, 1, 1, (m_inp_mux >> 2 & 0x30) | m_led_data[1], true);
m_display->matrix_partial(0, 9, 1 << (m_inp_mux & 0xf), (m_inp_mux << 4 & 0x100) | m_led_data[0], false);
m_display->matrix_partial(9, 1, 1, (m_inp_mux >> 2 & 0x30) | m_led_data[1], true);
}
void ren_state::mux_w(u8 data)
@ -313,17 +317,17 @@ void ren_state::ren(machine_config &config)
m_board->set_delay(attotime::from_msec(150));
/* video hardware */
PWM_DISPLAY(config, m_display[0]).set_size(9+1, 9);
SED1502(config, "lcd", 32768).write_segs().set(FUNC(ren_state::lcd_output_w));
PWM_DISPLAY(config, m_display[1]).set_size(16, 34);
m_display[1]->output_x().set(FUNC(ren_state::lcd_pwm_w));
SED1502(config, m_lcd, 32768).write_segs().set(FUNC(ren_state::lcd_output_w));
PWM_DISPLAY(config, m_lcd_pwm).set_size(16, 34);
m_lcd_pwm->set_refresh(attotime::from_hz(30));
m_lcd_pwm->output_x().set(FUNC(ren_state::lcd_pwm_w));
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
screen.set_refresh_hz(60);
screen.set_size(873/2, 1080/2);
screen.set_visarea_full();
PWM_DISPLAY(config, m_display).set_size(9+1, 9);
config.set_default_layout(layout_saitek_renaissance);
/* sound hardware */
@ -343,7 +347,7 @@ ROM_START( renaissa )
ROM_LOAD("sw7_518d_u3.u3", 0x8000, 0x8000, CRC(21d2405f) SHA1(6ddcf9bdd30aa446fcaeab919a8f950dc3428365) ) // HN27C256AG-10
ROM_REGION( 795951, "screen", 0 )
ROM_LOAD("renaissa.svg", 0, 795951, CRC(ac9942bb) SHA1(f9252e5bf7b8af698a403c3f8f5ea9e475e0bf0b) )
ROM_LOAD("simultano.svg", 0, 795951, CRC(ac9942bb) SHA1(f9252e5bf7b8af698a403c3f8f5ea9e475e0bf0b) )
ROM_END
ROM_START( renaissaa )
@ -351,7 +355,7 @@ ROM_START( renaissaa )
ROM_LOAD("sx7_518b.u3", 0x8000, 0x8000, CRC(a0c3ffe8) SHA1(fa170a6d4d54d41de77e0bb72f969219e6f376af) ) // MBM27C256H-10
ROM_REGION( 795951, "screen", 0 )
ROM_LOAD("renaissa.svg", 0, 795951, CRC(ac9942bb) SHA1(f9252e5bf7b8af698a403c3f8f5ea9e475e0bf0b) )
ROM_LOAD("simultano.svg", 0, 795951, CRC(ac9942bb) SHA1(f9252e5bf7b8af698a403c3f8f5ea9e475e0bf0b) )
ROM_END
} // anonymous namespace

View File

@ -0,0 +1,360 @@
// license:BSD-3-Clause
// copyright-holders:hap
// thanks-to:Achim
/***************************************************************************
Saitek Simultano, it is related to Saitek Stratos, see saitek_stratos.cpp
But it's not similar enough to be a subdriver of it.
Two versions are known: "B" from 1988, and "C" from 1989.
Hardware notes:
- WDC W65C02P @ 5MHz
- 64KB ROM (2*AMI 27256), 8KB RAM (SRM2264LC) battery-backed
- "HELIOS" NEC gate array
- Epson SED1502F, LCD screen
- piezo, 16+3 leds, button sensors chessboard
***************************************************************************/
#include "emu.h"
#include "cpu/m6502/m65c02.h"
#include "machine/bankdev.h"
#include "machine/nvram.h"
#include "machine/sensorboard.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
#include "video/pwm.h"
#include "video/sed1500.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
#include "screen.h"
#include "softlist.h"
#include "speaker.h"
// internal artwork
#include "saitek_simultano.lh" // clickable
namespace {
class simultano_state : public driver_device
{
public:
simultano_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_rombank(*this, "rombank"),
m_board(*this, "board"),
m_display(*this, "display"),
m_lcd_pwm(*this, "lcd_pwm"),
m_lcd(*this, "lcd"),
m_dac(*this, "dac"),
m_inputs(*this, "IN.%u", 0),
m_out_lcd(*this, "s%u.%u", 0U, 0U)
{ }
DECLARE_INPUT_CHANGED_MEMBER(acl_button) { if (newval) power_off(); }
DECLARE_INPUT_CHANGED_MEMBER(go_button);
void simultano(machine_config &config);
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
private:
// devices/pointers
required_device<cpu_device> m_maincpu;
required_device<address_map_bank_device> m_rombank;
required_device<sensorboard_device> m_board;
required_device<pwm_display_device> m_display;
required_device<pwm_display_device> m_lcd_pwm;
required_device<sed1502_device> m_lcd;
required_device<dac_bit_interface> m_dac;
required_ioport_array<8+1> m_inputs;
output_finder<16, 34> m_out_lcd;
void main_map(address_map &map);
void rombank_map(address_map &map);
void power_off();
void lcd_pwm_w(offs_t offset, u8 data);
void lcd_output_w(offs_t offset, u64 data);
DECLARE_WRITE8_MEMBER(select_w);
DECLARE_READ8_MEMBER(chessboard_r);
DECLARE_WRITE8_MEMBER(sound_w);
DECLARE_READ8_MEMBER(control_r);
DECLARE_WRITE8_MEMBER(control_w);
bool m_power = false;
u8 m_select = 0;
u8 m_control = 0;
};
void simultano_state::machine_start()
{
m_out_lcd.resolve();
// register for savestates
save_item(NAME(m_power));
save_item(NAME(m_select));
save_item(NAME(m_control));
}
void simultano_state::machine_reset()
{
m_power = true;
m_rombank->set_bank(0);
}
/******************************************************************************
I/O
******************************************************************************/
// soft power on/off
INPUT_CHANGED_MEMBER(simultano_state::go_button)
{
if (newval && !m_power)
{
m_maincpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
machine_reset();
}
}
void simultano_state::power_off()
{
m_power = false;
m_maincpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
// clear display
for (int i = 0; i < 0x80; i++)
m_lcd->write(i, 0);
m_display->clear();
m_lcd_pwm->clear();
}
// LCD
void simultano_state::lcd_pwm_w(offs_t offset, u8 data)
{
m_out_lcd[offset & 0x3f][offset >> 6] = data;
}
void simultano_state::lcd_output_w(offs_t offset, u64 data)
{
if (m_power)
m_lcd_pwm->write_row(offset, data);
}
// HELIOS
WRITE8_MEMBER(simultano_state::sound_w)
{
m_dac->write(1);
}
WRITE8_MEMBER(simultano_state::select_w)
{
m_dac->write(0); // guessed
// d0-d3: input/chessboard mux
// d6,d7: side panel led mux
// d4,d5: led data
m_display->matrix_partial(0, 2, data >> 4 & 3, 1 << (data & 0xf), false);
m_display->matrix_partial(2, 2, data >> 6 & 3, ~data >> 4 & 3, true);
m_select = data;
}
READ8_MEMBER(simultano_state::chessboard_r)
{
// d0-d7: chessboard sensors
return ~m_board->read_file(m_select & 0xf);
}
READ8_MEMBER(simultano_state::control_r)
{
u8 data = 0;
u8 sel = m_select & 0xf;
// read button panel
if (sel < 9)
data |= m_inputs[sel]->read() << 5;
return data;
}
WRITE8_MEMBER(simultano_state::control_w)
{
u8 prev = m_control;
m_control = data;
// d0,d1: rombank
m_rombank->set_bank(bitswap<2>(data,0,1));
// d6 falling edge: power-off request
if (~data & prev & 0x40)
power_off();
}
/******************************************************************************
Address Maps
******************************************************************************/
void simultano_state::main_map(address_map &map)
{
map(0x0000, 0x1fff).ram().share("nvram");
map(0x2000, 0x2000).w(FUNC(simultano_state::select_w));
map(0x2200, 0x2200).w(FUNC(simultano_state::sound_w));
map(0x2400, 0x2400).r(FUNC(simultano_state::chessboard_r));
map(0x2600, 0x2600).rw(FUNC(simultano_state::control_r), FUNC(simultano_state::control_w));
//map(0x4000, 0x5fff).noprw(); // tries to access RAM, unpopulated on PCB
map(0x6000, 0x607f).rw("lcd", FUNC(sed1502_device::read), FUNC(sed1502_device::write));
map(0x8000, 0xffff).m(m_rombank, FUNC(address_map_bank_device::amap8));
}
void simultano_state::rombank_map(address_map &map)
{
map.unmap_value_high();
map(0x00000, 0x0ffff).rom().region("maincpu", 0);
map(0x10000, 0x17fff).r("extrom", FUNC(generic_slot_device::read_rom));
}
/******************************************************************************
Input Ports
******************************************************************************/
static INPUT_PORTS_START( simultano )
PORT_START("IN.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("Set Up")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_L) PORT_NAME("Level")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_CUSTOM) // freq sel
PORT_START("IN.1")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("Sound")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("Stop")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_NAME("New Game")
PORT_START("IN.2")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Rook")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Pawn")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Bishop")
PORT_START("IN.3")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_X) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Queen")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Knight")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Z) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("King")
PORT_START("IN.4")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_NAME("Play")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Tab / Color")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_MINUS) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("-")
PORT_START("IN.5")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_EQUALS) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Function")
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_CUSTOM) // freq sel
PORT_START("IN.6")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Library")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Info")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_CUSTOM) // freq sel
PORT_START("IN.7")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Analysis")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Normal")
PORT_START("IN.8")
PORT_CONFNAME( 0x01, 0x01, "Battery Status" )
PORT_CONFSETTING( 0x00, "Low" )
PORT_CONFSETTING( 0x01, DEF_STR( Normal ) )
PORT_START("RESET")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CHANGED_MEMBER(DEVICE_SELF, simultano_state, go_button, 0) PORT_NAME("Go")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, simultano_state, acl_button, 0) PORT_NAME("ACL")
INPUT_PORTS_END
/******************************************************************************
Machine Configs
******************************************************************************/
void simultano_state::simultano(machine_config &config)
{
/* basic machine hardware */
M65C02(config, m_maincpu, 5_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &simultano_state::main_map);
m_maincpu->set_periodic_int(FUNC(simultano_state::irq0_line_hold), attotime::from_hz(76));
ADDRESS_MAP_BANK(config, "rombank").set_map(&simultano_state::rombank_map).set_options(ENDIANNESS_LITTLE, 8, 17, 0x8000);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
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(350));
/* video hardware */
SED1502(config, m_lcd, 32768).write_segs().set(FUNC(simultano_state::lcd_output_w));
PWM_DISPLAY(config, m_lcd_pwm).set_size(16, 34);
m_lcd_pwm->set_refresh(attotime::from_hz(30));
m_lcd_pwm->output_x().set(FUNC(simultano_state::lcd_pwm_w));
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG));
screen.set_refresh_hz(60);
screen.set_size(873/2, 1080/2);
screen.set_visarea_full();
PWM_DISPLAY(config, m_display).set_size(2+2, 8);
config.set_default_layout(layout_saitek_simultano);
/* 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);
/* extension rom */
GENERIC_CARTSLOT(config, "extrom", generic_plain_slot, "saitek_egr");
SOFTWARE_LIST(config, "cart_list").set_original("saitek_egr");
}
/******************************************************************************
ROM Definitions
******************************************************************************/
ROM_START( simultano )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("y01h_c12e_u3.u3", 0x0000, 0x8000, CRC(d583fdb4) SHA1(4be242691215ab1635a5d672441d339596f719c6) ) // AMI 27256
ROM_LOAD("by01h_c13b_u4.u4", 0x8000, 0x8000, CRC(c607b421) SHA1(b0c784b570dfd1fcbe3da68bcfbae2dae2957a74) ) // "
ROM_REGION( 795951, "screen", 0 )
ROM_LOAD("simultano.svg", 0, 795951, CRC(ac9942bb) SHA1(f9252e5bf7b8af698a403c3f8f5ea9e475e0bf0b) )
ROM_END
} // anonymous namespace
/******************************************************************************
Drivers
******************************************************************************/
/* YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS */
CONS( 1989, simultano, 0, 0, simultano, simultano, simultano_state, empty_init, "Saitek", "Kasparov Simultano (ver. C)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -8,10 +8,8 @@ SciSys/Saitek Stratos chesscomputer family (1987-1990)
- Stratos
- Turbo King
- Corona --> it's in saitek_corona.cpp
- *Simultano
*: not dumped yet
- Corona --> saitek_corona.cpp
- Simultano --> saitek_simultano.cpp
IMPORTANT: The user is expected to press the STOP button to turn off the computer.
When not using -autosave, press that button before exiting MAME, or NVRAM can get corrupt.
@ -60,6 +58,8 @@ very few bytes difference between revisions. The first Corona is engine version
#include "machine/sensorboard.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
#include "softlist.h"
#include "speaker.h"
@ -77,6 +77,7 @@ public:
m_nvram(*this, "nvram.u7"),
m_rombank(*this, "rombank"),
m_nvrambank(*this, "nvrambank"),
m_extrom(*this, "extrom"),
m_board(*this, "board"),
m_dac(*this, "dac"),
m_inputs(*this, "IN.%u", 0)
@ -98,6 +99,7 @@ private:
required_device<nvram_device> m_nvram;
required_memory_bank m_rombank;
required_memory_bank m_nvrambank;
required_device<generic_slot_device> m_extrom;
required_device<sensorboard_device> m_board;
required_device<dac_bit_interface> m_dac;
required_ioport_array<8+2> m_inputs;
@ -224,32 +226,6 @@ void saitek_stratos_state::power_off()
}
// Endgame ROM
DEVICE_IMAGE_LOAD_MEMBER(saitek_stratos_state::extrom_load)
{
u32 size = m_extrom->common_get_size("rom");
// 32KB ROM only?
if (size != 0x8000)
{
image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid file size");
return image_init_result::FAIL;
}
m_extrom->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
m_extrom->common_load_rom(m_extrom->get_rom_base(), size, "rom");
return image_init_result::PASS;
}
READ8_MEMBER(stratos_state::extrom_r)
{
u16 bank = BIT(m_control, 1) * 0x4000;
return (m_extrom->exists()) ? m_extrom->read_rom(offset | bank) : 0xff;
}
// LCD HLE
void saitek_stratos_state::update_lcd()
@ -350,7 +326,7 @@ READ8_MEMBER(stratos_state::control_r)
m_lcd_ready = false;
// d7: battery low
data |= m_inputs[8]->read();
data |= m_inputs[8]->read() << 7;
}
// read button panel
@ -380,6 +356,12 @@ WRITE8_MEMBER(stratos_state::control_w)
power_off();
}
READ8_MEMBER(stratos_state::extrom_r)
{
u16 bank = BIT(m_control, 1) * 0x4000;
return (m_extrom->exists()) ? m_extrom->read_rom(offset | bank) : 0xff;
}
/******************************************************************************
@ -447,9 +429,9 @@ INPUT_PORTS_START( saitek_stratos )
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Normal")
PORT_START("IN.8")
PORT_CONFNAME( 0x80, 0x80, "Battery Status" )
PORT_CONFNAME( 0x01, 0x01, "Battery Status" )
PORT_CONFSETTING( 0x00, "Low" )
PORT_CONFSETTING( 0x80, DEF_STR( Normal ) )
PORT_CONFSETTING( 0x01, DEF_STR( Normal ) )
PORT_START("RESET")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_CHANGED_MEMBER(DEVICE_SELF, saitek_stratos_state, go_button, 0) PORT_NAME("Go")
@ -512,9 +494,7 @@ void stratos_state::stratos(machine_config &config)
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
/* extension rom */
GENERIC_CARTSLOT(config, m_extrom, generic_plain_slot, "saitek_egr");
m_extrom->set_device_load(FUNC(stratos_state::extrom_load));
GENERIC_CARTSLOT(config, "extrom", generic_plain_slot, "saitek_egr");
SOFTWARE_LIST(config, "cart_list").set_original("saitek_egr");
}

View File

@ -12,10 +12,7 @@
#pragma once
#include "machine/timer.h"
#include "video/pwm.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
#include <algorithm>
@ -27,7 +24,6 @@ public:
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_display(*this, "display"),
m_extrom(*this, "extrom"),
m_out_digit(*this, "digit%u", 0U),
m_out_lcd(*this, "lcd%u.%u.%u", 0U, 0U, 0U)
{ }
@ -44,7 +40,6 @@ protected:
// devices/pointers
required_device<cpu_device> m_maincpu;
required_device<pwm_display_device> m_display;
required_device<generic_slot_device> m_extrom;
output_finder<8+1> m_out_digit;
output_finder<4, 16, 4> m_out_lcd;
@ -53,8 +48,6 @@ protected:
void update_lcd();
void power_off();
void set_cpu_freq();
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(extrom_load);
void lcd_data_w(u8 data);
bool m_power;

View File

@ -388,6 +388,61 @@ license:CC0
</group>
<!-- display -->
<element name="whitew"><rect><color red="1" green="1" blue="1" /></rect></element>
<element name="lcd_bg1"><rect><color red="0.9" green="0.9" blue="0.45" /></rect></element>
<element name="lcd_bg2"><rect><color red="0.58" green="0.61" blue="0.62" /></rect></element>
<element name="lcd_cb">
<rect><bounds x="0" y="0" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="10" y="0" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="20" y="0" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="30" y="0" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="5" y="5" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="15" y="5" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="25" y="5" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="35" y="5" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="0" y="10" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="10" y="10" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="20" y="10" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="30" y="10" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="5" y="15" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="15" y="15" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="25" y="15" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="35" y="15" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="0" y="20" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="10" y="20" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="20" y="20" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="30" y="20" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="5" y="25" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="15" y="25" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="25" y="25" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="35" y="25" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="0" y="30" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="10" y="30" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="20" y="30" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="30" y="30" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="5" y="35" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="15" y="35" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="25" y="35" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="35" y="35" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
</element>
<group name="display">
<bounds x="9.4" y="10" width="101.1" height="128.5" /> <!-- A/R 0.78677 -->
<element ref="whitew"><bounds x="9.4" y="10" width="101.1" height="128.5" /></element>
<element ref="lcd_bg1"><bounds x="9.4" y="10" width="101.1" height="102.3" /></element>
<element ref="lcd_cb"><bounds x="9.4" y="10" width="101.1" height="101.3" /></element>
<screen index="0" blend="multiply"><bounds x="10" y="10" width="100" height="123.711" /></screen>
<element ref="lcd_bg2" blend="multiply"><bounds x="0" y="0" width="120" height="140" /></element>
</group>
<!-- build screen -->
<view name="Internal Layout">
@ -399,7 +454,7 @@ license:CC0
<group ref="sb_ui"><bounds x="-12" y="3" width="10" height="80" /></group>
<screen index="0"><bounds x="33" y="90" width="25" height="30.93" /></screen>
<group ref="display"><bounds x="33" y="90" width="23.6" height="30" /></group>
<!-- chessboard coords -->
<bezel element="text_8"><bounds x="0.2" y="7" width="2" height="2" /></bezel>

View File

@ -0,0 +1,531 @@
<?xml version="1.0"?>
<!--
license:CC0
-->
<mamelayout version="2">
<!-- define elements -->
<element name="ledr" defstate="0">
<rect state="0"><color red="0.15" green="0" blue="0" /></rect>
<rect state="1"><color red="1" green="0" blue="0" /></rect>
</element>
<element name="ledro">
<rect><color red="0.1" green="0.1" blue="0.1" /></rect>
</element>
<element name="ledrr" defstate="0">
<rect state="0"><color red="0" green="0" blue="0" /></rect>
<rect state="1"><color red="1" green="0" blue="0" /></rect>
</element>
<element name="ledrg" defstate="0">
<rect state="0"><color red="0" green="0" blue="0" /></rect>
<rect state="1"><color red="0" green="1" blue="0" /></rect>
</element>
<element name="button" defstate="0">
<rect state="0"><color red="0.21" green="0.2" blue="0.2" /></rect>
<rect state="1"><color red="0.33" green="0.31" blue="0.31" /></rect>
</element>
<element name="text_1"><text string="1"><color red="0.41" green="0.4" blue="0.39" /></text></element>
<element name="text_2"><text string="2"><color red="0.41" green="0.4" blue="0.39" /></text></element>
<element name="text_3"><text string="3"><color red="0.41" green="0.4" blue="0.39" /></text></element>
<element name="text_4"><text string="4"><color red="0.41" green="0.4" blue="0.39" /></text></element>
<element name="text_5"><text string="5"><color red="0.41" green="0.4" blue="0.39" /></text></element>
<element name="text_6"><text string="6"><color red="0.41" green="0.4" blue="0.39" /></text></element>
<element name="text_7"><text string="7"><color red="0.41" green="0.4" blue="0.39" /></text></element>
<element name="text_8"><text string="8"><color red="0.41" green="0.4" blue="0.39" /></text></element>
<element name="text_a"><text string="A"><color red="0.41" green="0.4" blue="0.39" /></text></element>
<element name="text_b"><text string="B"><color red="0.41" green="0.4" blue="0.39" /></text></element>
<element name="text_c"><text string="C"><color red="0.41" green="0.4" blue="0.39" /></text></element>
<element name="text_d"><text string="D"><color red="0.41" green="0.4" blue="0.39" /></text></element>
<element name="text_e"><text string="E"><color red="0.41" green="0.4" blue="0.39" /></text></element>
<element name="text_f"><text string="F"><color red="0.41" green="0.4" blue="0.39" /></text></element>
<element name="text_g"><text string="G"><color red="0.41" green="0.4" blue="0.39" /></text></element>
<element name="text_h"><text string="H"><color red="0.41" green="0.4" blue="0.39" /></text></element>
<element name="text_r1"><text string="WHITE" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_r2"><text string="BLACK" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_r3"><text string="MODE" align="1"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b1"><text string="GO"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b2"><text string="STOP"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b3"><text string="LEVEL"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b4"><text string="NEW GAME"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b5"><text string="PLAY"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b6"><text string="NORMAL"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b7"><text string="SET UP"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b8"><text string="LIBRARY"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b9"><text string="ANALYSIS"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b10"><text string="INFO"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b11"><text string="FUNCTION"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b12"><text string="TAB/COLOR"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b13"><text string="+"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b14"><text string="-"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_b15"><text string="SOUND"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_p1"><image file="chess/wk.png"></image></element>
<element name="text_p2"><image file="chess/wq.png"></image></element>
<element name="text_p3"><image file="chess/wr.png"></image></element>
<element name="text_p4"><image file="chess/wb.png"></image></element>
<element name="text_p5"><image file="chess/wn.png"></image></element>
<element name="text_p6"><image file="chess/wp.png"></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>
<!-- 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>
<!-- display -->
<element name="whitew"><rect><color red="1" green="1" blue="1" /></rect></element>
<element name="lcd_bg1"><rect><color red="0.9" green="0.9" blue="0.45" /></rect></element>
<element name="lcd_bg2"><rect><color red="0.58" green="0.61" blue="0.62" /></rect></element>
<element name="lcd_cb">
<rect><bounds x="0" y="0" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="10" y="0" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="20" y="0" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="30" y="0" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="5" y="5" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="15" y="5" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="25" y="5" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="35" y="5" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="0" y="10" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="10" y="10" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="20" y="10" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="30" y="10" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="5" y="15" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="15" y="15" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="25" y="15" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="35" y="15" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="0" y="20" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="10" y="20" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="20" y="20" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="30" y="20" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="5" y="25" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="15" y="25" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="25" y="25" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="35" y="25" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="0" y="30" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="10" y="30" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="20" y="30" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="30" y="30" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="5" y="35" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="15" y="35" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="25" y="35" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
<rect><bounds x="35" y="35" width="5" height="5" /><color red="1" green="1" blue="1" /></rect>
</element>
<group name="display">
<bounds x="9.4" y="10" width="101.1" height="128.5" /> <!-- A/R 0.78677 -->
<element ref="whitew"><bounds x="9.4" y="10" width="101.1" height="128.5" /></element>
<element ref="lcd_bg1"><bounds x="9.4" y="10" width="101.1" height="102.3" /></element>
<element ref="lcd_cb"><bounds x="9.4" y="10" width="101.1" height="101.3" /></element>
<screen index="0" blend="multiply"><bounds x="10" y="10" width="100" height="123.711" /></screen>
<element ref="lcd_bg2" blend="multiply"><bounds x="0" y="0" width="120" height="140" /></element>
</group>
<!-- build screen -->
<view name="Internal Layout (Full)">
<bounds left="-13.5" right="132.5" top="-1" bottom="90" />
<group ref="sb_board"><bounds x="4" y="3" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="-12" y="3" width="10" height="80" /></group>
<!-- chessboard coords -->
<bezel element="text_8"><bounds x="1.5" y="7" width="2" height="2" /></bezel>
<bezel element="text_7"><bounds x="1.5" y="17" width="2" height="2" /></bezel>
<bezel element="text_6"><bounds x="1.5" y="27" width="2" height="2" /></bezel>
<bezel element="text_5"><bounds x="1.5" y="37" width="2" height="2" /></bezel>
<bezel element="text_4"><bounds x="1.5" y="47" width="2" height="2" /></bezel>
<bezel element="text_3"><bounds x="1.5" y="57" width="2" height="2" /></bezel>
<bezel element="text_2"><bounds x="1.5" y="67" width="2" height="2" /></bezel>
<bezel element="text_1"><bounds x="1.5" y="77" width="2" height="2" /></bezel>
<bezel element="text_a"><bounds x="8" y="83.5" width="2" height="2" /></bezel>
<bezel element="text_b"><bounds x="18" y="83.5" width="2" height="2" /></bezel>
<bezel element="text_c"><bounds x="28" y="83.5" width="2" height="2" /></bezel>
<bezel element="text_d"><bounds x="38" y="83.5" width="2" height="2" /></bezel>
<bezel element="text_e"><bounds x="48" y="83.5" width="2" height="2" /></bezel>
<bezel element="text_f"><bounds x="58" y="83.5" width="2" height="2" /></bezel>
<bezel element="text_g"><bounds x="68" y="83.5" width="2" height="2" /></bezel>
<bezel element="text_h"><bounds x="78" y="83.5" width="2" height="2" /></bezel>
<!-- chessboard leds -->
<bezel name="0.7" element="ledr"><bounds x="-1" y="7.5" width="2" height="1" /></bezel>
<bezel name="0.6" element="ledr"><bounds x="-1" y="17.5" width="2" height="1" /></bezel>
<bezel name="0.5" element="ledr"><bounds x="-1" y="27.5" width="2" height="1" /></bezel>
<bezel name="0.4" element="ledr"><bounds x="-1" y="37.5" width="2" height="1" /></bezel>
<bezel name="0.3" element="ledr"><bounds x="-1" y="47.5" width="2" height="1" /></bezel>
<bezel name="0.2" element="ledr"><bounds x="-1" y="57.5" width="2" height="1" /></bezel>
<bezel name="0.1" element="ledr"><bounds x="-1" y="67.5" width="2" height="1" /></bezel>
<bezel name="0.0" element="ledr"><bounds x="-1" y="77.5" width="2" height="1" /></bezel>
<bezel name="1.0" element="ledr"><bounds x="8.5" y="86" width="1" height="2" /></bezel>
<bezel name="1.1" element="ledr"><bounds x="18.5" y="86" width="1" height="2" /></bezel>
<bezel name="1.2" element="ledr"><bounds x="28.5" y="86" width="1" height="2" /></bezel>
<bezel name="1.3" element="ledr"><bounds x="38.5" y="86" width="1" height="2" /></bezel>
<bezel name="1.4" element="ledr"><bounds x="48.5" y="86" width="1" height="2" /></bezel>
<bezel name="1.5" element="ledr"><bounds x="58.5" y="86" width="1" height="2" /></bezel>
<bezel name="1.6" element="ledr"><bounds x="68.5" y="86" width="1" height="2" /></bezel>
<bezel name="1.7" element="ledr"><bounds x="78.5" y="86" width="1" height="2" /></bezel>
<!-- right side -->
<group ref="display"><bounds x="96.5" y="13" width="23.6" height="30" /></group>
<bezel name="2.0" element="ledr"><bounds x="88.5" y="20.5" width="2" height="1" /></bezel>
<bezel name="3.0" element="ledr"><bounds x="88.5" y="27.5" width="2" height="1" /></bezel>
<element ref="ledro"><bounds x="88.5" y="34.5" width="2" height="1" /></element>
<element name="2.1" ref="ledrr" blend="add"><bounds x="88.5" y="34.5" width="2" height="1" /></element>
<element name="3.1" ref="ledrg" blend="add"><bounds x="88.5" y="34.5" width="2" height="1" /></element>
<bezel element="text_r1"><bounds x="91" y="20.2" width="7" height="1.5" /></bezel>
<bezel element="text_r2"><bounds x="91" y="27.2" width="7" height="1.5" /></bezel>
<bezel element="text_r3"><bounds x="91" y="34.2" width="7" height="1.5" /></bezel>
<bezel element="text_b1"><bounds x="88.5" y="46.5" width="7.5" height="1.5" /></bezel>
<bezel element="text_b2"><bounds x="96.5" y="46.5" width="7.5" height="1.5" /></bezel>
<bezel element="text_b3"><bounds x="104.5" y="46.5" width="7.5" height="1.5" /></bezel>
<bezel element="text_b4"><bounds x="111.5" y="46.5" width="9.5" height="1.5" /></bezel>
<bezel element="text_b5"><bounds x="120.5" y="46.5" width="7.5" height="1.5" /></bezel>
<bezel element="text_b6"><bounds x="88.5" y="54.75" width="7.5" height="1.5" /></bezel>
<bezel element="text_b7"><bounds x="96.5" y="54.75" width="7.5" height="1.5" /></bezel>
<bezel element="text_b8"><bounds x="104.5" y="54.75" width="7.5" height="1.5" /></bezel>
<bezel element="text_b9"><bounds x="112.5" y="54.75" width="7.5" height="1.5" /></bezel>
<bezel element="text_b10"><bounds x="120.5" y="54.75" width="7.5" height="1.5" /></bezel>
<bezel element="text_b11"><bounds x="88.5" y="63" width="7.5" height="1.5" /></bezel>
<bezel element="text_b12"><bounds x="95.5" y="63" width="9.5" height="1.5" /></bezel>
<bezel element="text_b13"><bounds x="104.5" y="62.6" width="7.5" height="2.1" /></bezel>
<bezel element="text_b14"><bounds x="112.5" y="62.6" width="7.5" height="2.1" /></bezel>
<bezel element="text_b15"><bounds x="120.5" y="63" width="7.5" height="1.5" /></bezel>
<element ref="text_p1"><bounds x="90.083" y="69.9" width="3" height="3" /></element>
<element ref="text_p2"><bounds x="96.749" y="69.9" width="3" height="3" /></element>
<element ref="text_p3"><bounds x="103.415" y="69.9" width="3" height="3" /></element>
<element ref="text_p4"><bounds x="110.081" y="69.9" width="3" height="3" /></element>
<element ref="text_p5"><bounds x="116.747" y="69.9" width="3" height="3" /></element>
<element ref="text_p6"><bounds x="123.413" y="69.9" width="3" height="3" /></element>
<element ref="cwhite" blend="multiply"><bounds x="90.083" y="69.9" width="40" height="3" /></element>
<bezel element="button" inputtag="RESET" inputmask="0x01"><bounds x="88.5" y="48.25" width="7.5" height="3" /></bezel>
<bezel element="button" inputtag="IN.1" inputmask="0x02"><bounds x="96.5" y="48.25" width="7.5" height="3" /></bezel>
<bezel element="button" inputtag="IN.0" inputmask="0x02"><bounds x="104.5" y="48.25" width="7.5" height="3" /></bezel>
<bezel element="button" inputtag="IN.1" inputmask="0x04"><bounds x="112.5" y="48.25" width="7.5" height="3" /></bezel>
<bezel element="button" inputtag="IN.4" inputmask="0x01"><bounds x="120.5" y="48.25" width="7.5" height="3" /></bezel>
<bezel element="button" inputtag="IN.7" inputmask="0x04"><bounds x="88.5" y="56.5" width="7.5" height="3" /></bezel>
<bezel element="button" inputtag="IN.0" inputmask="0x01"><bounds x="96.5" y="56.5" width="7.5" height="3" /></bezel>
<bezel element="button" inputtag="IN.6" inputmask="0x01"><bounds x="104.5" y="56.5" width="7.5" height="3" /></bezel>
<bezel element="button" inputtag="IN.7" inputmask="0x02"><bounds x="112.5" y="56.5" width="7.5" height="3" /></bezel>
<bezel element="button" inputtag="IN.6" inputmask="0x02"><bounds x="120.5" y="56.5" width="7.5" height="3" /></bezel>
<bezel element="button" inputtag="IN.5" inputmask="0x02"><bounds x="88.5" y="64.75" width="7.5" height="3" /></bezel>
<bezel element="button" inputtag="IN.4" inputmask="0x02"><bounds x="96.5" y="64.75" width="7.5" height="3" /></bezel>
<bezel element="button" inputtag="IN.5" inputmask="0x01"><bounds x="104.5" y="64.75" width="7.5" height="3" /></bezel>
<bezel element="button" inputtag="IN.4" inputmask="0x04"><bounds x="112.5" y="64.75" width="7.5" height="3" /></bezel>
<bezel element="button" inputtag="IN.1" inputmask="0x01"><bounds x="120.5" y="64.75" width="7.5" height="3" /></bezel>
<bezel element="button" inputtag="IN.3" inputmask="0x04"><bounds x="88.5" y="73" width="6.166" height="3" /></bezel>
<bezel element="button" inputtag="IN.3" inputmask="0x01"><bounds x="95.166" y="73" width="6.166" height="3" /></bezel>
<bezel element="button" inputtag="IN.2" inputmask="0x01"><bounds x="101.832" y="73" width="6.166" height="3" /></bezel>
<bezel element="button" inputtag="IN.2" inputmask="0x04"><bounds x="108.498" y="73" width="6.166" height="3" /></bezel>
<bezel element="button" inputtag="IN.3" inputmask="0x02"><bounds x="115.164" y="73" width="6.166" height="3" /></bezel>
<bezel element="button" inputtag="IN.2" inputmask="0x02"><bounds x="121.83" y="73" width="6.166" height="3" /></bezel>
</view>
<view name="Internal Layout (Screen)">
<bounds x="0" y="0" width="101.1" height="128.5" />
<group ref="display"><bounds x="0" y="0" width="101.1" height="128.5" /></group>
</view>
</mamelayout>

View File

@ -35246,6 +35246,9 @@ risc2500a
@source:saitek_schess.cpp
schess
@source:saitek_simultano.cpp
simultano
@source:saitek_ssystem3.cpp
ssystem3
ssystem4

View File

@ -814,6 +814,7 @@ saitek_prschess.cpp
saitek_renaissance.cpp
saitek_risc2500.cpp
saitek_schess.cpp
saitek_simultano.cpp
saitek_ssystem3.cpp
saitek_stratos.cpp
saitek_superstar.cpp