New working machines

--------------------
Sensor Chess [hap, bataais]

New working software list additions
-----------------------------------
saitek_schess: Classical Style Super Strong [hap, bataais]
This commit is contained in:
hap 2020-03-28 01:44:28 +01:00
parent 22934b1e3c
commit 4139da5097
20 changed files with 776 additions and 184 deletions

20
hash/saitek_schess.xml Normal file
View File

@ -0,0 +1,20 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
<!--
license:CC0
-->
<softwarelist name="saitek_schess" description="Sensor Chess Modules">
<software name="csss">
<description>Classical Style Super Strong</description>
<year>1982</year>
<publisher>SciSys</publisher>
<part name="cart" interface="schess_cart">
<dataarea name="rom" size="0x1000">
<rom name="c45046_y02_mb" size="0x1000" crc="caff380d" sha1="5b227f0d9e457c56642bd217192744f8df60e685" />
</dataarea>
</part>
</software>
</softwarelist>

View File

@ -3316,8 +3316,9 @@ files {
MAME_DIR .. "src/mame/drivers/saitek_mark5.cpp",
MAME_DIR .. "src/mame/drivers/saitek_prschess.cpp",
MAME_DIR .. "src/mame/drivers/saitek_risc2500.cpp",
MAME_DIR .. "src/mame/includes/saitek_stratos.h",
MAME_DIR .. "src/mame/drivers/saitek_schess.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",
MAME_DIR .. "src/mame/drivers/saitek_corona.cpp", -- subdriver of saitek_stratos
MAME_DIR .. "src/mame/drivers/saitek_superstar.cpp",

View File

@ -449,7 +449,7 @@ void ggm_state::ggm(machine_config &config)
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
/* cartridge */
GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "ggm", "bin");
GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "ggm");
m_cart->set_device_load(FUNC(ggm_state::cartridge));
m_cart->set_must_be_loaded(true);

View File

@ -298,7 +298,7 @@ void arb_state::arb(machine_config &config)
m_via->set_clock(4_MHz_XTAL/4); // R6522P
/* cartridge */
GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "arb", "bin");
GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "arb");
m_cart->set_device_load(FUNC(arb_state::cart_load));
m_cart->set_must_be_loaded(true);

View File

@ -47,7 +47,6 @@ public:
m_board(*this, "board"),
m_display(*this, "display"),
m_dac(*this, "dac"),
m_cart(*this, "cartslot"),
m_inputs(*this, "IN.0")
{ }
@ -63,7 +62,6 @@ private:
required_device<sensorboard_device> m_board;
required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac;
required_device<generic_slot_device> m_cart;
required_ioport m_inputs;
// address maps
@ -73,8 +71,6 @@ private:
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); }
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load);
// I/O handlers
void update_display();
DECLARE_WRITE8_MEMBER(control_w);
@ -104,20 +100,6 @@ void as12_state::machine_start()
I/O
******************************************************************************/
// cartridge
DEVICE_IMAGE_LOAD_MEMBER(as12_state::cart_load)
{
u32 size = m_cart->common_get_size("rom");
m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
return image_init_result::PASS;
}
// TTL/generic
void as12_state::update_display()
{
// 8*8(+1) chessboard leds
@ -234,9 +216,7 @@ void as12_state::as12(machine_config &config)
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
/* cartridge */
GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_scc", "bin,dat");
m_cart->set_device_load(FUNC(as12_state::cart_load));
GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_scc");
SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc");
}

View File

@ -190,7 +190,6 @@ public:
m_board(*this, "board"),
m_display(*this, "display"),
m_dac(*this, "dac"),
m_cart(*this, "cartslot"),
m_inputs(*this, "IN.%u", 0),
m_rotate(true)
{ }
@ -217,7 +216,6 @@ protected:
required_device<sensorboard_device> m_board;
required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac;
optional_device<generic_slot_device> m_cart;
optional_ioport_array<2> m_inputs;
// address maps
@ -229,8 +227,6 @@ protected:
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); }
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load);
// I/O handlers
void update_display();
virtual DECLARE_WRITE8_MEMBER(mux_w);
@ -315,18 +311,6 @@ private:
I/O
******************************************************************************/
// cartridge
DEVICE_IMAGE_LOAD_MEMBER(eag_state::cart_load)
{
u32 size = m_cart->common_get_size("rom");
m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
return image_init_result::PASS;
}
// TTL/generic
void eag_state::update_display()
@ -645,9 +629,7 @@ void eag_state::eag_base(machine_config &config)
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
/* cartridge */
GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_scc", "bin,dat");
m_cart->set_device_load(FUNC(eag_state::cart_load));
GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_scc");
SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc");
}

View File

@ -92,7 +92,6 @@ public:
m_speech(*this, "speech"),
m_speech_rom(*this, "speech"),
m_language(*this, "language"),
m_cart(*this, "cartslot"),
m_inputs(*this, "IN.%u", 0),
m_rotate(false)
{ }
@ -115,7 +114,6 @@ protected:
required_device<s14001a_device> m_speech;
required_region_ptr<u8> m_speech_rom;
required_region_ptr<u8> m_language;
required_device<generic_slot_device> m_cart;
required_ioport_array<2> m_inputs;
// address maps
@ -126,8 +124,6 @@ protected:
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); }
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load);
// I/O handlers
void update_display();
DECLARE_READ8_MEMBER(speech_r);
@ -196,18 +192,6 @@ void eag_state::init_eag2100()
I/O
******************************************************************************/
// cartridge
DEVICE_IMAGE_LOAD_MEMBER(elite_state::cart_load)
{
u32 size = m_cart->common_get_size("rom");
m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
return image_init_result::PASS;
}
// TTL/generic
void elite_state::update_display()
@ -453,9 +437,7 @@ void elite_state::pc(machine_config &config)
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
/* cartridge */
GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_scc", "bin,dat");
m_cart->set_device_load(FUNC(elite_state::cart_load));
GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_scc");
SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc");
}

View File

@ -77,7 +77,6 @@ public:
m_board(*this, "board"),
m_display(*this, "display"),
m_dac(*this, "dac"),
m_cart(*this, "cartslot"),
m_inputs(*this, "IN.0")
{ }
@ -94,7 +93,6 @@ private:
required_device<sensorboard_device> m_board;
required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac;
required_device<generic_slot_device> m_cart;
required_ioport m_inputs;
// address maps
@ -104,8 +102,6 @@ private:
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); }
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load);
// I/O handlers
DECLARE_WRITE8_MEMBER(control_w);
DECLARE_READ8_MEMBER(input_r);
@ -128,20 +124,6 @@ void sc12_state::machine_start()
I/O
******************************************************************************/
// cartridge
DEVICE_IMAGE_LOAD_MEMBER(sc12_state::cart_load)
{
u32 size = m_cart->common_get_size("rom");
m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
return image_init_result::PASS;
}
// TTL/generic
WRITE8_MEMBER(sc12_state::control_w)
{
// d0-d3: 7442 a0-a3
@ -253,9 +235,7 @@ void sc12_state::sc12(machine_config &config)
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
/* cartridge */
GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_scc", "bin,dat");
m_cart->set_device_load(FUNC(sc12_state::cart_load));
GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_scc");
SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc");
}

View File

@ -47,7 +47,6 @@ public:
m_board(*this, "board"),
m_display(*this, "display"),
m_dac(*this, "dac"),
m_cart(*this, "cartslot"),
m_inputs(*this, "IN.0")
{ }
@ -63,14 +62,11 @@ private:
required_device<sensorboard_device> m_board;
required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac;
required_device<generic_slot_device> m_cart;
required_ioport m_inputs;
// address maps
void main_map(address_map &map);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load);
// I/O handlers
void update_display();
DECLARE_WRITE8_MEMBER(mux_w);
@ -102,26 +98,6 @@ void sc6_state::machine_start()
I/O
******************************************************************************/
// cartridge
DEVICE_IMAGE_LOAD_MEMBER(sc6_state::cart_load)
{
u32 size = m_cart->common_get_size("rom");
// 4KB ROM only?
if (size != 0x1000)
{
image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid file size");
return image_init_result::FAIL;
}
m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
return image_init_result::PASS;
}
// MCU ports/generic
void sc6_state::update_display()
@ -242,10 +218,7 @@ void sc6_state::sc6(machine_config &config)
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
/* cartridge */
GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_sc6", "bin");
m_cart->set_device_load(FUNC(sc6_state::cart_load));
m_cart->set_must_be_loaded(true);
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

@ -65,7 +65,6 @@ public:
m_board(*this, "board"),
m_display(*this, "display"),
m_dac(*this, "dac"),
m_cart(*this, "cartslot"),
m_inputs(*this, "IN.0")
{ }
@ -84,7 +83,6 @@ protected:
required_device<sensorboard_device> m_board;
required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac;
required_device<generic_slot_device> m_cart;
required_ioport m_inputs;
// address maps
@ -95,8 +93,6 @@ protected:
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); }
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load);
// I/O handlers
void update_display();
DECLARE_WRITE8_MEMBER(control_w);
@ -154,20 +150,6 @@ void sc9c_state::sc9c_set_cpu_freq()
I/O
******************************************************************************/
// cartridge
DEVICE_IMAGE_LOAD_MEMBER(sc9_state::cart_load)
{
u32 size = m_cart->common_get_size("rom");
m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
return image_init_result::PASS;
}
// TTL/generic
void sc9_state::update_display()
{
// 8*8 chessboard leds + 1 corner led
@ -299,9 +281,7 @@ void sc9_state::sc9d(machine_config &config)
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
/* cartridge */
GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_scc", "bin,dat");
m_cart->set_device_load(FUNC(sc9_state::cart_load));
GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_scc");
SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc");
}

View File

@ -63,7 +63,6 @@ public:
m_ppi8255(*this, "ppi8255"),
m_display(*this, "display"),
m_beeper(*this, "beeper"),
m_cart(*this, "cartslot"),
m_inputs(*this, "IN.%u", 0)
{ }
@ -81,15 +80,12 @@ private:
required_device<i8255_device> m_ppi8255;
required_device<pwm_display_device> m_display;
required_device<beep_device> m_beeper;
required_device<generic_slot_device> m_cart;
required_ioport_array<2> m_inputs;
// address maps
void main_map(address_map &map);
void main_io(address_map &map);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load);
// I/O handlers
void update_display();
DECLARE_READ8_MEMBER(input_r);
@ -125,18 +121,6 @@ INPUT_CHANGED_MEMBER(intel02_state::reset_button)
I/O
******************************************************************************/
// cartridge
DEVICE_IMAGE_LOAD_MEMBER(intel02_state::cart_load)
{
u32 size = m_cart->common_get_size("rom");
m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
return image_init_result::PASS;
}
// I8255 PPI
void intel02_state::update_display()
@ -254,10 +238,7 @@ void intel02_state::intel02(machine_config &config)
m_beeper->add_route(ALL_OUTPUTS, "speaker", 0.25);
/* cartridge */
GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "intellect02", "bin");
m_cart->set_device_load(FUNC(intel02_state::cart_load));
m_cart->set_must_be_loaded(true);
GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "intellect02").set_must_be_loaded(true);
SOFTWARE_LIST(config, "cart_list").set_original("intellect02");
}

View File

@ -13,7 +13,7 @@ computer and shake it when one of the sensors is malfunctioning.
Hardware notes:
- 6502A @ 2MHz
- 16KB ROM(2*HN482764G), 2KB RAM(HM6116P-4)
- 64+12 leds, magnet sensors chessboard
- buzzer, 64+12 leds, magnet sensors chessboard
TODO:
- verify CPU speed / XTAL
@ -91,7 +91,7 @@ void prschess_state::machine_start()
void prschess_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);
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);
}
@ -214,8 +214,8 @@ void prschess_state::prschess(machine_config &config)
ROM_START( prschess )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("yo3_rl", 0xc000, 0x2000, CRC(862c3f42) SHA1(e2d2f1d7a0382b0774e86ca83e270dab1df700c2) ) // HN482764G
ROM_LOAD("yo3_rh", 0xe000, 0x2000, CRC(ef95cb9f) SHA1(02f763cf9cab1b4be8964ddb5d93efb05a898123) ) // "
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

View File

@ -0,0 +1,255 @@
// license:BSD-3-Clause
// copyright-holders:hap
// thanks-to:bataais
/******************************************************************************
SciSys Sensor Chess (model 221)
(not to be confused with Saitek Kasparov Sensor Chess)
Two versions were released. The 1st version is fake-wood brown plastic, and 2nd
version is grey plastic. The brown version only has 256 bytes RAM. The grey version
has 1KB but does not use the extra available RAM. The ROM(software) is assumed to
be the same for each version.
Buttons are unresponsive, this also applies to the chessboard buttons. The program
is not interrupt-driven and only checks the buttons around twice per second. The user
needs to hold a button for up to half a second to get a response. In MAME, a delay is
applied to the sensorboard interface to make sure that all clicks work there. But that
also means it's not possible to play blitz style (which wouldn't be possible on the
real device anyway, since it reacts so slowly).
Hardware notes:
- Synertek 6502A @ ~2MHz
- 4KB ROM(AMI 2332)
- 1KB RAM(2*2114), or 256 bytes RAM(GTE 3539)
- buzzer, 64+12 leds, button chessboard
- expansion slot at top-tight (dummy empty cartridge by default)
Expansion modules: (* denotes not dumped)
- *Strong Play Module
- Classical Style Super Strong
- *Hyper Modern Super Strong
******************************************************************************/
#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 "bus/generic/slot.h"
#include "bus/generic/carts.h"
#include "speaker.h"
// internal artwork
#include "saitek_schess.lh" // clickable
namespace {
class schess_state : public driver_device
{
public:
schess_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 schess(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(leds1_w);
DECLARE_WRITE8_MEMBER(leds2_w);
DECLARE_WRITE8_MEMBER(control_w);
DECLARE_READ8_MEMBER(input_r);
u8 m_inp_mux = 0;
u8 m_led_data = 0;
};
void schess_state::machine_start()
{
save_item(NAME(m_inp_mux));
save_item(NAME(m_led_data));
}
/******************************************************************************
I/O
******************************************************************************/
void schess_state::update_display()
{
u8 led_data = bitswap<8>(m_led_data,4,5,6,7,3,2,1,0);
m_display->matrix_partial(0, 8, 1 << m_inp_mux, led_data);
}
WRITE8_MEMBER(schess_state::leds1_w)
{
// chessboard leds (muxed)
m_led_data = ~data;
update_display();
}
WRITE8_MEMBER(schess_state::leds2_w)
{
// button panel leds (direct)
m_display->write_row(8 + (offset ? 1 : 0), ~data);
m_display->update();
}
WRITE8_MEMBER(schess_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(schess_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 < 10)
data = m_inputs[m_inp_mux & 1]->read();
else
data = m_inputs[2]->read();
return bitswap<8>(data,4,5,6,7,3,2,1,0);
}
/******************************************************************************
Address Maps
******************************************************************************/
void schess_state::main_map(address_map &map)
{
map.unmap_value_high();
map(0x0000, 0x03ff).ram();
map(0x4000, 0x4000).w(FUNC(schess_state::leds1_w));
map(0x4800, 0x4800).w(FUNC(schess_state::control_w));
map(0x5000, 0x5000).select(0x0800).w(FUNC(schess_state::leds2_w));
map(0x6000, 0x6000).r(FUNC(schess_state::input_r));
map(0x8000, 0x8fff).r("cartslot", FUNC(generic_slot_device::read_rom));
map(0xf000, 0xffff).rom();
}
/******************************************************************************
Input Ports
******************************************************************************/
static INPUT_PORTS_START( schess )
PORT_START("IN.0")
PORT_BIT(0x03, IP_ACTIVE_HIGH, IPT_UNUSED)
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_T) PORT_NAME("Take Back")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("Level")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("White")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Knight")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("King")
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_S) PORT_NAME("Change Sides")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_NAME("Hint")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("Clear Board")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("Legal")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Rook")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Queen")
PORT_START("IN.2")
PORT_BIT(0x03, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_X) PORT_NAME("Player V Player")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("Interrupt")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("Move")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("Verify / Set Up")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Pawn")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Bishop")
INPUT_PORTS_END
/******************************************************************************
Machine Configs
******************************************************************************/
void schess_state::schess(machine_config &config)
{
/* basic machine hardware */
M6502(config, m_maincpu, 2000000); // approximation, no XTAL
m_maincpu->set_addrmap(AS_PROGRAM, &schess_state::main_map);
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_ticks(1115000, 2000000)); // see driver notes
GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "schess_cart");
SOFTWARE_LIST(config, "cart_list").set_original("saitek_schess");
/* video hardware */
PWM_DISPLAY(config, m_display).set_size(8+2, 8);
config.set_default_layout(layout_saitek_schess);
/* 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( schess )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("y02-rom", 0xf000, 0x1000, CRC(25181e03) SHA1(4d3a606b196b9019c00795b2cd65ce10fbef932c) ) // AMI 2332
ROM_END
} // anonymous namespace
/******************************************************************************
Drivers
******************************************************************************/
// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
CONS( 1981, schess, 0, 0, schess, schess, schess_state, empty_init, "SciSys", "Sensor Chess", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -512,7 +512,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", "bin");
GENERIC_CARTSLOT(config, m_extrom, generic_plain_slot, "saitek_egr");
m_extrom->set_device_load(FUNC(stratos_state::extrom_load));
SOFTWARE_LIST(config, "cart_list").set_original("saitek_egr");

View File

@ -61,7 +61,6 @@ public:
m_board(*this, "board"),
m_display(*this, "display"),
m_dac(*this, "dac"),
m_extrom(*this, "extrom"),
m_inputs(*this, "IN.%u", 0)
{ }
@ -78,7 +77,6 @@ private:
required_device<sensorboard_device> m_board;
required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac;
optional_device<generic_slot_device> m_extrom;
required_ioport_array<2> m_inputs;
// address maps
@ -89,14 +87,11 @@ private:
DECLARE_WRITE8_MEMBER(control_w);
DECLARE_READ8_MEMBER(input_r);
u8 m_inp_mux;
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(extrom_load);
u8 m_inp_mux = 0;
};
void star_state::machine_start()
{
m_inp_mux = 0;
save_item(NAME(m_inp_mux));
}
@ -106,20 +101,6 @@ void star_state::machine_start()
I/O
******************************************************************************/
// Extension ROM
DEVICE_IMAGE_LOAD_MEMBER(star_state::extrom_load)
{
u32 size = m_extrom->common_get_size("rom");
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;
}
// TTL
WRITE8_MEMBER(star_state::control_w)
{
// d0-d3: input mux, led select
@ -242,9 +223,7 @@ void star_state::tstar432(machine_config &config)
config.set_default_layout(layout_saitek_tstar432);
/* extension rom */
GENERIC_CARTSLOT(config, m_extrom, generic_plain_slot, "saitek_kso", "bin");
m_extrom->set_device_load(FUNC(star_state::extrom_load));
GENERIC_CARTSLOT(config, "extrom", generic_plain_slot, "saitek_kso");
SOFTWARE_LIST(config, "cart_list").set_original("saitek_kso");
}

View File

@ -371,8 +371,8 @@ license:CC0
<!-- buttons -->
<element name="brown"><rect><color red="0.6" green="0.4" blue="0.2" /></rect></element>
<element name="bmask"><rect><color red="0.86" green="0.82" blue="0.82" /></rect></element>
<element name="brown"><rect><color red="0.58" green="0.37" blue="0.18" /></rect></element>
<element name="bmask"><rect><color red="0.91" green="0.89" blue="0.89" /></rect></element>
<element name="but_rb" defstate="0">
<rect state="0"><color red="0.13" green="0.1" blue="0.1" /></rect>

View File

@ -6,8 +6,6 @@ license:CC0
<!-- 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">
@ -426,6 +424,7 @@ license:CC0
<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>
<!-- there are no visible button squares, buttons are behind the labels -->
<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>

View File

@ -0,0 +1,476 @@
<?xml version="1.0"?>
<!--
license:CC0
-->
<mamelayout version="2">
<!-- define elements -->
<element name="led" defstate="0">
<disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk>
<disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk>
</element>
<element name="text_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>
<!-- 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>
<!-- buttons -->
<element name="rmask"><rect><color red="0.6" green="0.03" blue="0.09" /></rect></element>
<element name="hl" defstate="0">
<rect state="1"><color red="0" green="0" blue="0" /></rect>
</element>
<element name="text_l1"><text string="WHITE"><color red="0.54" green="0.55" blue="0.57" /></text></element>
<element name="text_l2a"><text string="CLEAR"><color red="0.54" green="0.55" blue="0.57" /></text></element>
<element name="text_l2b"><text string="BOARD"><color red="0.54" green="0.55" blue="0.57" /></text></element>
<element name="text_l3a"><text string="VERIFY /"><color red="0.54" green="0.55" blue="0.57" /></text></element>
<element name="text_l3b"><text string="SET UP"><color red="0.54" green="0.55" blue="0.57" /></text></element>
<element name="text_l4"><text string="LEVEL"><color red="0.54" green="0.55" blue="0.57" /></text></element>
<element name="text_l5"><text string="LEGAL"><color red="0.54" green="0.55" blue="0.57" /></text></element>
<element name="text_l6"><text string="MOVE"><color red="0.54" green="0.55" blue="0.57" /></text></element>
<element name="text_l7a"><text string="TAKE"><color red="0.54" green="0.55" blue="0.57" /></text></element>
<element name="text_l7b"><text string="BACK"><color red="0.54" green="0.55" blue="0.57" /></text></element>
<element name="text_l8"><text string="HINT"><color red="0.54" green="0.55" blue="0.57" /></text></element>
<element name="text_l9"><text string="INTERRUPT"><color red="0.54" green="0.55" blue="0.57" /></text></element>
<element name="text_l10a"><text string="PLAYER V"><color red="0.54" green="0.55" blue="0.57" /></text></element>
<element name="text_l10b"><text string="COMPUTER"><color red="0.54" green="0.55" blue="0.57" /></text></element>
<element name="text_l11a"><text string="CHANGE"><color red="0.54" green="0.55" blue="0.57" /></text></element>
<element name="text_l11b"><text string="SIDES"><color red="0.54" green="0.55" blue="0.57" /></text></element>
<element name="text_l12a"><text string="PLAYER V"><color red="0.54" green="0.55" blue="0.57" /></text></element>
<element name="text_l12b"><text string="PLAYER"><color red="0.54" green="0.55" blue="0.57" /></text></element>
<element name="text_l13"><text string="COMPUTING"><color red="0.54" green="0.55" blue="0.57" /></text></element>
<element name="text_l14"><text string="RESET"><color red="0.54" green="0.55" blue="0.57" /></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>
<group name="buttons">
<bounds x="-1" y="0" width="20" height="30" />
<element ref="text_p1"><bounds x="1.6" y="0" width="1.8" height="1.8" /></element>
<element ref="text_p2"><bounds x="7.6" y="0" width="1.8" height="1.8" /></element>
<element ref="text_p3"><bounds x="13.6" y="0" width="1.8" height="1.8" /></element>
<element ref="text_p5"><bounds x="1.6" y="4" width="1.8" height="1.8" /></element>
<element ref="text_p4"><bounds x="7.6" y="4" width="1.8" height="1.8" /></element>
<element ref="text_p6"><bounds x="13.6" y="4" width="1.8" height="1.8" /></element>
<element ref="rmask" blend="multiply"><bounds x="0" y="0" width="20" height="20" /></element>
<element ref="text_l1"><bounds x="0" y="8.4" width="5" height="0.9" /></element>
<element ref="text_l2a"><bounds x="6" y="8" width="5" height="0.9" /></element>
<element ref="text_l2b"><bounds x="6" y="8.8" width="5" height="0.9" /></element>
<element ref="text_l3a"><bounds x="12" y="8" width="5" height="0.9" /></element>
<element ref="text_l3b"><bounds x="12" y="8.8" width="5" height="0.9" /></element>
<element ref="text_l4"><bounds x="0" y="12.4" width="5" height="0.9" /></element>
<element ref="text_l5"><bounds x="6" y="12.4" width="5" height="0.9" /></element>
<element ref="text_l6"><bounds x="12" y="12.4" width="5" height="0.9" /></element>
<element ref="text_l7a"><bounds x="0" y="16" width="5" height="0.9" /></element>
<element ref="text_l7b"><bounds x="0" y="16.8" width="5" height="0.9" /></element>
<element ref="text_l8"><bounds x="6" y="16.4" width="5" height="0.9" /></element>
<element ref="text_l9"><bounds x="12" y="16.4" width="5" height="0.9" /></element>
<element ref="text_l10a"><bounds x="0" y="20" width="5" height="0.9" /></element>
<element ref="text_l10b"><bounds x="0" y="20.8" width="5" height="0.9" /></element>
<element ref="text_l11a"><bounds x="6" y="20" width="5" height="0.9" /></element>
<element ref="text_l11b"><bounds x="6" y="20.8" width="5" height="0.9" /></element>
<element ref="text_l12a"><bounds x="12" y="20" width="5" height="0.9" /></element>
<element ref="text_l12b"><bounds x="12" y="20.8" width="5" height="0.9" /></element>
<element ref="text_l13"><bounds x="-1" y="26.15" width="7" height="0.9" /></element>
<element ref="text_l14"><bounds x="12" y="26.15" width="5" height="0.9" /></element>
<element ref="cblack" blend="add"><bounds x="0" y="0" width="5" height="3" /></element>
<element ref="cblack" blend="add"><bounds x="6" y="0" width="5" height="3" /></element>
<element ref="cblack" blend="add"><bounds x="12" y="0" width="5" height="3" /></element>
<element ref="cblack" blend="add"><bounds x="0" y="4" width="5" height="3" /></element>
<element ref="cblack" blend="add"><bounds x="6" y="4" width="5" height="3" /></element>
<element ref="cblack" blend="add"><bounds x="12" y="4" width="5" height="3" /></element>
<element ref="cblack" blend="add"><bounds x="0" y="8" width="5" height="3" /></element>
<element ref="cblack" blend="add"><bounds x="6" y="8" width="5" height="3" /></element>
<element ref="cblack" blend="add"><bounds x="12" y="8" width="5" height="3" /></element>
<element ref="cblack" blend="add"><bounds x="0" y="12" width="5" height="3" /></element>
<element ref="cblack" blend="add"><bounds x="6" y="12" width="5" height="3" /></element>
<element ref="cblack" blend="add"><bounds x="12" y="12" width="5" height="3" /></element>
<element ref="cblack" blend="add"><bounds x="0" y="16" width="5" height="3" /></element>
<element ref="cblack" blend="add"><bounds x="6" y="16" width="5" height="3" /></element>
<element ref="cblack" blend="add"><bounds x="12" y="16" width="5" height="3" /></element>
<element ref="cblack" blend="add"><bounds x="0" y="20" width="5" height="3" /></element>
<element ref="cblack" blend="add"><bounds x="6" y="20" width="5" height="3" /></element>
<element ref="cblack" blend="add"><bounds x="12" y="20" width="5" height="3" /></element>
<element ref="cblack" blend="add"><bounds x="0" y="25.75" width="5" height="3" /></element>
<element ref="cblack" blend="add"><bounds x="12" y="25.75" width="5" height="3" /></element>
<element name="8.5" ref="led"><bounds x="2.07" y="1.85" width="0.86" height="0.86" /></element>
<element name="8.4" ref="led"><bounds x="8.07" y="1.85" width="0.86" height="0.86" /></element>
<element name="8.3" ref="led"><bounds x="14.07" y="1.85" width="0.86" height="0.86" /></element>
<element name="8.2" ref="led"><bounds x="2.07" y="5.85" width="0.86" height="0.86" /></element>
<element name="8.1" ref="led"><bounds x="8.07" y="5.85" width="0.86" height="0.86" /></element>
<element name="8.0" ref="led"><bounds x="14.07" y="5.85" width="0.86" height="0.86" /></element>
<element name="9.5" ref="led"><bounds x="2.07" y="9.85" width="0.86" height="0.86" /></element>
<element name="9.4" ref="led"><bounds x="14.07" y="9.85" width="0.86" height="0.86" /></element>
<element name="9.3" ref="led"><bounds x="2.07" y="21.85" width="0.86" height="0.86" /></element>
<element name="9.2" ref="led"><bounds x="8.07" y="21.85" width="0.86" height="0.86" /></element>
<element name="9.1" ref="led"><bounds x="14.07" y="21.85" width="0.86" height="0.86" /></element>
<element name="9.0" ref="led"><bounds x="2.07" y="27.4" width="0.86" height="0.86" /></element>
<element ref="hlub" inputtag="IN.0" inputmask="0x80"><bounds x="0" y="0" width="5" height="3" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="IN.1" inputmask="0x80"><bounds x="6" y="0" width="5" height="3" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="IN.1" inputmask="0x40"><bounds x="12" y="0" width="5" height="3" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="IN.0" inputmask="0x40"><bounds x="0" y="4" width="5" height="3" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="IN.2" inputmask="0x80"><bounds x="6" y="4" width="5" height="3" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="IN.2" inputmask="0x40"><bounds x="12" y="4" width="5" height="3" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="IN.0" inputmask="0x20"><bounds x="0" y="8" width="5" height="3" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="IN.1" inputmask="0x10"><bounds x="6" y="8" width="5" height="3" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="IN.2" inputmask="0x20"><bounds x="12" y="8" width="5" height="3" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="IN.0" inputmask="0x10"><bounds x="0" y="12" width="5" height="3" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="IN.1" inputmask="0x20"><bounds x="6" y="12" width="5" height="3" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="IN.2" inputmask="0x10"><bounds x="12" y="12" width="5" height="3" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="IN.0" inputmask="0x08"><bounds x="0" y="16" width="5" height="3" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="IN.1" inputmask="0x08"><bounds x="6" y="16" width="5" height="3" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="IN.2" inputmask="0x08"><bounds x="12" y="16" width="5" height="3" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="IN.0" inputmask="0x04"><bounds x="0" y="20" width="5" height="3" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="IN.1" inputmask="0x04"><bounds x="6" y="20" width="5" height="3" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="IN.2" inputmask="0x04"><bounds x="12" y="20" width="5" height="3" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="IN.1" inputmask="0x02"><bounds x="12" y="25.75" width="5" height="3" /><color alpha="0.25" /></element>
</group>
<!-- build screen -->
<view name="Internal Layout">
<bounds left="-6" right="132" 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>
<group ref="buttons"><bounds x="96" y="40" width="34.75" height="52.125" /></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>
</view>
</mamelayout>

View File

@ -35058,6 +35058,9 @@ risc2500 //
risc2500a //
montreux //
@source:saitek_schess.cpp
schess
@source:saitek_ssystem3.cpp
ssystem3 // Chess Champion Super System III / MK III

View File

@ -784,6 +784,7 @@ saitek_delta1.cpp
saitek_mark5.cpp
saitek_prschess.cpp
saitek_risc2500.cpp
saitek_schess.cpp
saitek_ssystem3.cpp
saitek_stratos.cpp
saitek_superstar.cpp