mirror of
https://github.com/holub/mame
synced 2025-04-21 16:01:56 +03:00
sc6.cpp: rename gambit to classic, update miniscc internal artwork and correct cpu type now that EA pin works
New working systems ------------------- Gambit Voice [hap, Sean Riddle]
This commit is contained in:
parent
1d62461304
commit
f943b25a02
@ -442,7 +442,7 @@ void csc_state::pia0_ca2_w(int state)
|
||||
|
||||
void csc_state::pia1_pa_w(u8 data)
|
||||
{
|
||||
// d0-d5: TSI C0-C5
|
||||
// d0-d5: S14001A C0-C5
|
||||
m_speech->data_w(data & 0x3f);
|
||||
|
||||
// d0-d7: data for the 4 7seg leds, bits are ABFGHCDE (H is extra led)
|
||||
@ -455,10 +455,10 @@ void csc_state::pia1_pb_w(u8 data)
|
||||
// d0: speech ROM A12
|
||||
m_speech->set_rom_bank(data & 1);
|
||||
|
||||
// d1: TSI START line
|
||||
// d1: S14001A start pin
|
||||
m_speech->start_w(BIT(data, 1));
|
||||
|
||||
// d4: lower TSI volume
|
||||
// d4: lower S14001A volume
|
||||
m_speech->set_output_gain(0, (data & 0x10) ? 0.25 : 1.0);
|
||||
}
|
||||
|
||||
@ -467,14 +467,14 @@ u8 csc_state::pia1_pb_r()
|
||||
// d2: printer?
|
||||
u8 data = 0x04;
|
||||
|
||||
// d3: TSI BUSY line
|
||||
// d3: S14001A busy pin
|
||||
if (m_speech->busy_r())
|
||||
data |= 0x08;
|
||||
|
||||
// d5: button row 8
|
||||
data |= (read_inputs() >> 3 & 0x20);
|
||||
|
||||
// d6,d7: language switches(hardwired with 2 resistors/jumpers)
|
||||
// d6,d7: language jumpers (hardwired)
|
||||
return data | (*m_language << 6 & 0xc0);
|
||||
}
|
||||
|
||||
|
@ -252,8 +252,8 @@ u8 elite_state::input_r()
|
||||
|
||||
void elite_state::ppi_porta_w(u8 data)
|
||||
{
|
||||
// d0-d5: TSI C0-C5
|
||||
// d6: TSI START line
|
||||
// d0-d5: S14001A C0-C5
|
||||
// d6: S14001A start pin
|
||||
m_speech->data_w(data & 0x3f);
|
||||
m_speech->start_w(BIT(data, 6));
|
||||
|
||||
@ -273,7 +273,7 @@ void elite_state::ppi_portc_w(u8 data)
|
||||
// d4: speech ROM A12
|
||||
m_speech->set_rom_bank(BIT(data, 4));
|
||||
|
||||
// d5: lower TSI volume
|
||||
// d5: lower S14001A volume
|
||||
m_speech->set_output_gain(0, (data & 0x20) ? 0.25 : 1.0);
|
||||
|
||||
// d6,d7: bookrom bankswitch (model EAG)
|
||||
@ -286,10 +286,10 @@ u8 elite_state::ppi_portb_r()
|
||||
// d0: printer? white wire from LED pcb
|
||||
u8 data = 1;
|
||||
|
||||
// d1: TSI BUSY line
|
||||
// d1: S14001A busy pin
|
||||
data |= (m_speech->busy_r()) ? 2 : 0;
|
||||
|
||||
// d2,d3: language switches(hardwired)
|
||||
// d2,d3: language jumpers (hardwired)
|
||||
data |= *m_language << 2 & 0x0c;
|
||||
|
||||
// d5: 3 more buttons
|
||||
|
@ -24,7 +24,7 @@ CPU: GTE G65SC102P-3, 32 KB PRG ROM: AMI 101-1080A01(IC5), 8192x8 SRAM SRM2264C1
|
||||
|
||||
PCB 2: 510.1117A01
|
||||
Speech: TSI S14001A, 32 KB ROM: AMI 101-1081A01(IC2)
|
||||
Dip Switches set ROM A13 and ROM A14, on the side of the board
|
||||
DIP Switches set ROM A13 and ROM A14, on the side of the board
|
||||
|
||||
ROM A12 is tied to S14001A's A11 (yuck)
|
||||
ROM A11 is however tied to the CPU's XYZ
|
||||
@ -126,7 +126,7 @@ basically same as (Par) Excellence hardware, reskinned board
|
||||
|
||||
Designer 2100 (model 6103): exactly same, but running at 5MHz
|
||||
|
||||
(Designer 1500 is on 80C50 hardware, same ROM as The Gambit, see sc6.cpp)
|
||||
(Designer 1500 is on 80C50 hardware, same ROM as The Classic, see sc6.cpp)
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
@ -222,7 +222,7 @@ void excel_state::machine_start()
|
||||
I/O
|
||||
*******************************************************************************/
|
||||
|
||||
// speech
|
||||
// speech (fexcelv)
|
||||
|
||||
void excel_state::init_fexcelv()
|
||||
{
|
||||
@ -230,7 +230,7 @@ void excel_state::init_fexcelv()
|
||||
const u32 len = memregion("speech")->bytes();
|
||||
assert(len == 0x8000);
|
||||
|
||||
// TSI A11 is A12, program controls A11, user controls A13,A14(language switches)
|
||||
// program controls A11, user controls A13,A14(language switches)
|
||||
std::vector<u8> buf(len);
|
||||
memcpy(&buf[0], rom, len);
|
||||
for (int i = 0; i < len; i++)
|
||||
@ -249,12 +249,12 @@ void excel_state::speech_w(u8 data, u8 mask)
|
||||
// a0-a2,d2 (from ttl_w): 74259(2) to speech board
|
||||
m_speech_data = (m_speech_data & ~mask) | ((data & 4) ? mask : 0);
|
||||
|
||||
// 74259 Q6: TSI ROM A11
|
||||
// 74259 Q6: speech ROM A11
|
||||
m_speech_bank = (m_speech_bank & ~1) | BIT(m_speech_data, 6);
|
||||
m_speech->set_rom_bank(m_speech_bank);
|
||||
|
||||
// Q0-Q5: TSI C0-C5
|
||||
// Q7: TSI START line
|
||||
// Q0-Q5: S14001A C0-C5
|
||||
// Q7: S14001A start pin
|
||||
m_speech->data_w(m_speech_data & 0x3f);
|
||||
m_speech->start_w(BIT(m_speech_data, 7));
|
||||
}
|
||||
@ -302,7 +302,7 @@ u8 excel_state::ttl_r(offs_t offset)
|
||||
if (m_inputs[2] != nullptr && sel == 0 && ~m_select & 0x80)
|
||||
d7 = m_inputs[2]->read() & 0x80;
|
||||
|
||||
// a0-a2,d6: from speech board: language switches and TSI BUSY line, otherwise tied to VCC
|
||||
// a0-a2,d6: from speech board: language switches and S14001A busy pin, otherwise tied to VCC
|
||||
u8 d6 = (m_inputs[1].read_safe(0xff) >> offset & 1) ? 0x40 : 0;
|
||||
|
||||
// a0-a2,d7: multiplexed inputs (active low)
|
||||
|
@ -1,17 +1,28 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:hap
|
||||
// thanks-to:yoyo_chessboard, Berger
|
||||
// thanks-to:yoyo_chessboard, Berger, Sean Riddle
|
||||
/*******************************************************************************
|
||||
|
||||
Fidelity Sensory Chess Challenger 6 (model SC6)
|
||||
Fidelity Mini Sensory Chess Challenger (model MSC, 1982 version)
|
||||
Fidelity The Gambit (model 6084)
|
||||
Fidelity The Classic (model 6079)
|
||||
Fidelity Gambit Voice (model 6085)
|
||||
|
||||
The chess engine is by Ron Nelson. These are all on similar hardware. Several
|
||||
models are equal to eachother from an emulator's perspective, hence some aren't
|
||||
included in MAME, see list below.
|
||||
|
||||
Known MCU ROM serials:
|
||||
- 7203 100-1012B01 (1982), Mini Sensory Chess Challenger
|
||||
- 9517 [no label] (1985), The Classic (model CC8)
|
||||
- 9311 100-1020B02 (1986), The Classic (model 6079), The Gambit, Silver Bullet
|
||||
- 9311 100-1020B01 (1989), The Gambit, Designer 1500, Peri Beta
|
||||
- 9337 100-1020C01 (1987), Gambit Voice
|
||||
|
||||
100-1020B01 ROM contents is confirmed to be identical to 100-1020B02.
|
||||
|
||||
TODO:
|
||||
- MSC MCU is currently emulated as I8039, due to missing EA pin emulation
|
||||
- different button panel for fidel_msc_v2 artwork
|
||||
- verify if the 1985 version of The Classic the same ROM
|
||||
- dump/add Gambit Voice MCU
|
||||
- is The Classic model CC8 a different ROM? and what about model 6079D?
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -40,55 +51,65 @@ MCU ports I/O is identical to SC6.
|
||||
It accepts the same modules as the 1st MSC version. See msc.cpp for known modules.
|
||||
The module overrides the internal ROM, by asserting the EA pin.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
The Gambit(v3) hardware notes:
|
||||
- PCB label: 510-1115A01 (1986 PCB, but chips from 1989)
|
||||
- TMP80C50AP-6-9311 MCU, 4KB internal ROM, 6MHz XTAL
|
||||
- buzzer, 16 leds, 8*8 chessboard buttons
|
||||
|
||||
The Gambit either has a black/white button panel color theme, or black/red/white,
|
||||
more commonly seen on newer versions, and Gambit Voice.
|
||||
|
||||
MCU ports I/O again identical to SC6.
|
||||
The same MCU+ROM was also used in Designer 1500(PCB label 510.1131A01).
|
||||
And also in The Classic(PCB label 510-1095A01), 100-1020B02 MCU.
|
||||
|
||||
100-1020B02 ROM contents is confirmed to be identical to 100-1020B01.
|
||||
|
||||
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
|
||||
|
||||
Silver Bullet hardware notes:
|
||||
- PCB from MSC, but lose/check leds unpopulated
|
||||
- TMP80C50AP-6-9311 MCU, 4KB internal ROM, 6MHz XTAL
|
||||
- buzzer, 16 leds, 8*8 chessboard buttons, module slot
|
||||
- buzzer, 16 leds, 8*8 chessboard buttons, module slot (takes MSC modules)
|
||||
|
||||
To summarize, known MCU chip ROM serials+year:
|
||||
- [no label] (1985), The Classic (model CC8)
|
||||
- 100-1020B01 (1989), The Gambit, Designer 1500, Peri Beta
|
||||
- 100-1020B02 (1986), The Gambit, Silver Bullet
|
||||
- 100-1020B02 (1987), The Classic (model 6079)
|
||||
- 100-1020C01 (1987), Gambit Voice
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
The Classic (model CC8) hardware notes:
|
||||
- PCB label: 510-1095A01
|
||||
- TMP80C50AP-6-9517 MCU, 4KB internal ROM, 6MHz XTAL
|
||||
- buzzer, 16 leds, 8*8 chessboard buttons
|
||||
|
||||
The Classic (model 6079) hardware notes:
|
||||
- TMP80C50AP-6-9311 MCU, rest is same as model CC8
|
||||
|
||||
The Gambit hardware notes:
|
||||
- PCB label: 510-1115A01
|
||||
- rest is same as The Classic (model 6079)
|
||||
|
||||
The Gambit either has a black/white button panel color theme, or black/red/white,
|
||||
which was more commonly seen on newer versions and Gambit Voice.
|
||||
|
||||
Designer 1500 hardware notes:
|
||||
- PCB label: 510.1131A01
|
||||
- rest is same as The Classic (model 6079)
|
||||
|
||||
Peri Beta has the same PCB/ROM as Designer 1500, only the housing differs.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Gambit Voice hardware notes:
|
||||
- TMP80C50AP-6-9337 MCU, 4KB internal ROM, 6MHz XTAL
|
||||
- 510.1117A01 sound PCB (TSI S14001A, 4KB or 8KB ROM)
|
||||
- speaker, 16 leds, 8*8 chessboard buttons
|
||||
|
||||
The sound PCB is the same as the one from Excel Voice (see excel.cpp), except
|
||||
with a smaller ROM, and no language selection DIP switches. It only supports
|
||||
the English or French speech ROM.
|
||||
|
||||
As noted above, the non-voice Gambit is the same ROM as The Classic (model 6079).
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
|
||||
#include "bus/generic/slot.h"
|
||||
#include "bus/generic/carts.h"
|
||||
#include "cpu/mcs48/mcs48.h"
|
||||
#include "machine/sensorboard.h"
|
||||
#include "sound/dac.h"
|
||||
#include "sound/s14001a.h"
|
||||
#include "video/pwm.h"
|
||||
#include "bus/generic/slot.h"
|
||||
#include "bus/generic/carts.h"
|
||||
|
||||
#include "softlist_dev.h"
|
||||
#include "speaker.h"
|
||||
|
||||
// internal artwork
|
||||
#include "fidel_gambit.lh"
|
||||
#include "fidel_classic.lh"
|
||||
#include "fidel_gambitv.lh"
|
||||
#include "fidel_msc_v2.lh"
|
||||
#include "fidel_sc6.lh"
|
||||
|
||||
@ -105,17 +126,23 @@ public:
|
||||
m_board(*this, "board"),
|
||||
m_display(*this, "display"),
|
||||
m_dac(*this, "dac"),
|
||||
m_speech(*this, "speech"),
|
||||
m_language(*this, "language"),
|
||||
m_cart(*this, "cartslot"),
|
||||
m_inputs(*this, "IN.0")
|
||||
{ }
|
||||
|
||||
// machine configs
|
||||
void msc(machine_config &config);
|
||||
template <typename T> void cpu_config(T &maincpu);
|
||||
void shared(machine_config &config);
|
||||
void sc6(machine_config &config);
|
||||
void gambit(machine_config &config);
|
||||
void msc(machine_config &config);
|
||||
void classic(machine_config &config);
|
||||
void gambitv(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
|
||||
private:
|
||||
// devices/pointers
|
||||
@ -123,34 +150,41 @@ private:
|
||||
required_region_ptr<u8> m_rom;
|
||||
required_device<sensorboard_device> m_board;
|
||||
required_device<pwm_display_device> m_display;
|
||||
required_device<dac_1bit_device> m_dac;
|
||||
optional_device<dac_1bit_device> m_dac;
|
||||
optional_device<s14001a_device> m_speech;
|
||||
optional_region_ptr<u8> m_language;
|
||||
optional_device<generic_slot_device> m_cart;
|
||||
required_ioport m_inputs;
|
||||
|
||||
u8 m_led_select = 0;
|
||||
u8 m_inp_mux = 0;
|
||||
u8 m_speech_data = 0;
|
||||
|
||||
// address maps
|
||||
void msc_map(address_map &map);
|
||||
void sc6_map(address_map &map);
|
||||
|
||||
// I/O handlers
|
||||
void update_display();
|
||||
void mux_w(u8 data);
|
||||
void select_w(u8 data);
|
||||
u8 rom_r(offs_t offset);
|
||||
|
||||
u8 read_inputs();
|
||||
u8 input_r();
|
||||
int input6_r();
|
||||
int input7_r();
|
||||
|
||||
u8 msc_rom_r(offs_t offset);
|
||||
|
||||
void speech_w(offs_t offset, u8 data, u8 mem_mask);
|
||||
u8 speech_r();
|
||||
};
|
||||
|
||||
void sc6_state::machine_start()
|
||||
{
|
||||
// register for savestates
|
||||
save_item(NAME(m_led_select));
|
||||
save_item(NAME(m_inp_mux));
|
||||
save_item(NAME(m_speech_data));
|
||||
}
|
||||
|
||||
void sc6_state::machine_reset()
|
||||
{
|
||||
// EA pin is tied to VCC when a cartridge is inserted
|
||||
m_maincpu->set_input_line(MCS48_INPUT_EA, (m_cart && m_cart->exists()) ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
@ -159,38 +193,29 @@ void sc6_state::machine_start()
|
||||
I/O
|
||||
*******************************************************************************/
|
||||
|
||||
void sc6_state::update_display()
|
||||
{
|
||||
// MSC: 18 leds, SC6: 2 7seg leds
|
||||
m_display->matrix(m_led_select, 1 << m_inp_mux);
|
||||
}
|
||||
// common
|
||||
|
||||
void sc6_state::mux_w(u8 data)
|
||||
{
|
||||
// P24-P27: 7442 A-D (or 74145)
|
||||
// 7442 0-8: input mux, led data
|
||||
m_inp_mux = data >> 4 & 0xf;
|
||||
update_display();
|
||||
m_display->write_mx(1 << m_inp_mux);
|
||||
|
||||
// 7442 9: speaker out
|
||||
m_dac->write(BIT(1 << m_inp_mux, 9));
|
||||
if (m_dac != nullptr)
|
||||
m_dac->write(BIT(1 << m_inp_mux, 9));
|
||||
}
|
||||
|
||||
void sc6_state::select_w(u8 data)
|
||||
{
|
||||
// P16,P17: led select
|
||||
m_led_select = ~data >> 6 & 3;
|
||||
update_display();
|
||||
// P16,P17: digit/led select
|
||||
m_display->write_my(~data >> 6 & 3);
|
||||
}
|
||||
|
||||
u8 sc6_state::rom_r(offs_t offset)
|
||||
{
|
||||
// MSC reads from cartridge if it's inserted(A12 high), otherwise from internal ROM
|
||||
return m_cart->exists() ? m_cart->read_rom(offset | 0x1000) : m_rom[offset];
|
||||
}
|
||||
|
||||
u8 sc6_state::read_inputs()
|
||||
u8 sc6_state::input_r()
|
||||
{
|
||||
// P10-P15,T0,T1: multiplexed inputs
|
||||
u8 data = 0;
|
||||
|
||||
// read chessboard sensors
|
||||
@ -204,22 +229,31 @@ u8 sc6_state::read_inputs()
|
||||
return ~data;
|
||||
}
|
||||
|
||||
u8 sc6_state::input_r()
|
||||
|
||||
// speech (gambitv)
|
||||
|
||||
u8 sc6_state::speech_r()
|
||||
{
|
||||
// P10-P15: multiplexed inputs low
|
||||
return (read_inputs() & 0x3f) | 0xc0;
|
||||
// P20: S14001A busy pin
|
||||
u8 data = m_speech->busy_r();
|
||||
|
||||
// P21: language jumper
|
||||
// P22,P23: unused?
|
||||
return data | (*m_language << 1 & 2) | 0xfc;
|
||||
}
|
||||
|
||||
int sc6_state::input6_r()
|
||||
void sc6_state::speech_w(offs_t offset, u8 data, u8 mem_mask)
|
||||
{
|
||||
// T0: multiplexed inputs bit 6
|
||||
return read_inputs() >> 6 & 1;
|
||||
}
|
||||
data &= mem_mask;
|
||||
m_speech_data = data;
|
||||
|
||||
int sc6_state::input7_r()
|
||||
{
|
||||
// T1: multiplexed inputs bit 7
|
||||
return read_inputs() >> 7 & 1;
|
||||
// DB6: speech ROM A12
|
||||
m_speech->set_rom_bank(BIT(data, 6));
|
||||
|
||||
// DB0-DB5: S14001A C0-C5
|
||||
// DB7: S14001A start pin
|
||||
m_speech->data_w(data & 0x3f);
|
||||
m_speech->start_w(BIT(data, 7));
|
||||
}
|
||||
|
||||
|
||||
@ -228,14 +262,20 @@ int sc6_state::input7_r()
|
||||
Address Maps
|
||||
*******************************************************************************/
|
||||
|
||||
u8 sc6_state::msc_rom_r(offs_t offset)
|
||||
{
|
||||
// MSC module ROM A12 is forced high (lower half has a Z8 program)
|
||||
return m_cart->read_rom(offset | 0x1000);
|
||||
}
|
||||
|
||||
void sc6_state::msc_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x0fff).r(FUNC(sc6_state::rom_r));
|
||||
map(0x0000, 0x0fff).r(FUNC(sc6_state::msc_rom_r));
|
||||
}
|
||||
|
||||
void sc6_state::sc6_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x0fff).r("cartslot", FUNC(generic_slot_device::read_rom));
|
||||
map(0x0000, 0x0fff).r(m_cart, FUNC(generic_slot_device::read_rom));
|
||||
}
|
||||
|
||||
|
||||
@ -263,7 +303,7 @@ static INPUT_PORTS_START( msc )
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Speaker / Bishop")
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( gambit )
|
||||
static INPUT_PORTS_START( gambitv )
|
||||
PORT_START("IN.0")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Move / Pawn")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Hint / Knight")
|
||||
@ -281,71 +321,91 @@ INPUT_PORTS_END
|
||||
Machine Configs
|
||||
*******************************************************************************/
|
||||
|
||||
void sc6_state::gambit(machine_config &config)
|
||||
template <typename T>
|
||||
void sc6_state::cpu_config(T &maincpu)
|
||||
{
|
||||
maincpu.p1_in_cb().set(FUNC(sc6_state::input_r)).mask(0x3f);
|
||||
maincpu.p1_in_cb().append_constant(0xc0).mask(0xc0);
|
||||
maincpu.p1_out_cb().set(FUNC(sc6_state::select_w));
|
||||
maincpu.p2_out_cb().set(FUNC(sc6_state::mux_w));
|
||||
maincpu.t0_in_cb().set(FUNC(sc6_state::input_r)).bit(6);
|
||||
maincpu.t1_in_cb().set(FUNC(sc6_state::input_r)).bit(7);
|
||||
}
|
||||
|
||||
void sc6_state::shared(machine_config &config)
|
||||
{
|
||||
// basic machine hardware
|
||||
I8050(config, m_maincpu, 6_MHz_XTAL);
|
||||
m_maincpu->p2_out_cb().set(FUNC(sc6_state::mux_w));
|
||||
m_maincpu->p1_in_cb().set(FUNC(sc6_state::input_r));
|
||||
m_maincpu->p1_out_cb().set(FUNC(sc6_state::select_w));
|
||||
m_maincpu->t0_in_cb().set(FUNC(sc6_state::input6_r));
|
||||
m_maincpu->t1_in_cb().set(FUNC(sc6_state::input7_r));
|
||||
|
||||
SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS);
|
||||
m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));
|
||||
m_board->set_delay(attotime::from_msec(150));
|
||||
|
||||
// video hardware
|
||||
PWM_DISPLAY(config, m_display).set_size(2, 9);
|
||||
config.set_default_layout(layout_fidel_gambit);
|
||||
|
||||
// sound hardware
|
||||
SPEAKER(config, "speaker").front_center();
|
||||
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
|
||||
}
|
||||
|
||||
void sc6_state::msc(machine_config &config)
|
||||
{
|
||||
gambit(config);
|
||||
|
||||
// basic machine hardware
|
||||
I8039(config.replace(), m_maincpu, 11_MHz_XTAL); // actually I8049
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &sc6_state::msc_map);
|
||||
m_maincpu->p2_out_cb().set(FUNC(sc6_state::mux_w));
|
||||
m_maincpu->p1_in_cb().set(FUNC(sc6_state::input_r));
|
||||
m_maincpu->p1_out_cb().set(FUNC(sc6_state::select_w));
|
||||
m_maincpu->t0_in_cb().set(FUNC(sc6_state::input6_r));
|
||||
m_maincpu->t1_in_cb().set(FUNC(sc6_state::input7_r));
|
||||
|
||||
config.set_default_layout(layout_fidel_msc_v2);
|
||||
|
||||
// cartridge
|
||||
GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_msc");
|
||||
SOFTWARE_LIST(config, "cart_list").set_original("fidel_msc");
|
||||
}
|
||||
|
||||
void sc6_state::sc6(machine_config &config)
|
||||
{
|
||||
gambit(config);
|
||||
|
||||
// basic machine hardware
|
||||
I8040(config.replace(), m_maincpu, 11_MHz_XTAL);
|
||||
I8040(config, m_maincpu, 11_MHz_XTAL);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &sc6_state::sc6_map);
|
||||
m_maincpu->p2_out_cb().set(FUNC(sc6_state::mux_w));
|
||||
m_maincpu->p1_in_cb().set(FUNC(sc6_state::input_r));
|
||||
m_maincpu->p1_out_cb().set(FUNC(sc6_state::select_w));
|
||||
m_maincpu->t0_in_cb().set(FUNC(sc6_state::input6_r));
|
||||
m_maincpu->t1_in_cb().set(FUNC(sc6_state::input7_r));
|
||||
cpu_config<i8040_device>(downcast<i8040_device &>(*m_maincpu));
|
||||
|
||||
shared(config);
|
||||
|
||||
// video hardware
|
||||
m_display->set_segmask(0x3, 0x7f);
|
||||
config.set_default_layout(layout_fidel_sc6);
|
||||
|
||||
// cartridge
|
||||
GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_sc6").set_must_be_loaded(true);
|
||||
GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_sc6").set_must_be_loaded(true);
|
||||
SOFTWARE_LIST(config, "cart_list").set_original("fidel_sc6");
|
||||
}
|
||||
|
||||
void sc6_state::msc(machine_config &config)
|
||||
{
|
||||
I8049(config, m_maincpu, 11_MHz_XTAL);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &sc6_state::msc_map);
|
||||
cpu_config<i8049_device>(downcast<i8049_device &>(*m_maincpu));
|
||||
|
||||
shared(config);
|
||||
|
||||
config.set_default_layout(layout_fidel_msc_v2);
|
||||
|
||||
// cartridge
|
||||
GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_msc");
|
||||
SOFTWARE_LIST(config, "cart_list").set_original("fidel_msc");
|
||||
}
|
||||
|
||||
void sc6_state::classic(machine_config &config)
|
||||
{
|
||||
I8050(config, m_maincpu, 6_MHz_XTAL);
|
||||
cpu_config<i8050_device>(downcast<i8050_device &>(*m_maincpu));
|
||||
|
||||
shared(config);
|
||||
|
||||
config.set_default_layout(layout_fidel_classic);
|
||||
}
|
||||
|
||||
void sc6_state::gambitv(machine_config &config)
|
||||
{
|
||||
classic(config);
|
||||
|
||||
// basic machine hardware
|
||||
m_maincpu->p2_in_cb().set(FUNC(sc6_state::speech_r));
|
||||
m_maincpu->bus_in_cb().set([this](){ return m_speech_data; });
|
||||
m_maincpu->bus_out_cb().set(FUNC(sc6_state::speech_w));
|
||||
|
||||
config.set_default_layout(layout_fidel_gambitv);
|
||||
|
||||
// sound hardware
|
||||
config.device_remove("dac");
|
||||
S14001A(config, m_speech, 25000); // R/C circuit, around 25khz
|
||||
m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
@ -358,14 +418,32 @@ ROM_START( fscc6 )
|
||||
ROM_END
|
||||
|
||||
ROM_START( miniscc )
|
||||
ROM_REGION( 0x1000, "maincpu", 0 )
|
||||
ROM_LOAD("100-1012b01", 0x0000, 0x0800, CRC(ea3261f7) SHA1(1601358fdf0eee0b973c0f4c78bf679b8dada72a) ) // internal ROM
|
||||
ROM_RELOAD( 0x0800, 0x0800)
|
||||
ROM_REGION( 0x0800, "maincpu", 0 )
|
||||
ROM_LOAD("p8049h_7203_100-1012b01.ic1", 0x0000, 0x0800, CRC(ea3261f7) SHA1(1601358fdf0eee0b973c0f4c78bf679b8dada72a) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( gambit )
|
||||
ROM_START( classic )
|
||||
ROM_REGION( 0x1000, "maincpu", 0 )
|
||||
ROM_LOAD("100-1020b02", 0x0000, 0x1000, CRC(ba41b5ba) SHA1(1a5c5b2e990a07b9ff51eecfa952a4b890107797) ) // internal ROM
|
||||
ROM_LOAD("tmp80c50ap-6-9311_100-1020b02.ic1", 0x0000, 0x1000, CRC(ba41b5ba) SHA1(1a5c5b2e990a07b9ff51eecfa952a4b890107797) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( gambitv )
|
||||
ROM_REGION( 0x1000, "maincpu", 0 )
|
||||
ROM_LOAD("tmp80c50ap-6-9337_100-1020c01.ic1", 0x0000, 0x1000, CRC(dafee386) SHA1(d67914fb2abd73c0068b7e61fc23d211c52d65d9) )
|
||||
|
||||
// speech ROM
|
||||
ROM_DEFAULT_BIOS("en")
|
||||
ROM_SYSTEM_BIOS(0, "en", "English")
|
||||
ROM_SYSTEM_BIOS(1, "fr", "French")
|
||||
|
||||
ROM_REGION( 1, "language", 0 )
|
||||
ROMX_FILL(0, 1, 1, ROM_BIOS(0) )
|
||||
ROMX_FILL(0, 1, 0, ROM_BIOS(1) )
|
||||
|
||||
ROM_REGION( 0x2000, "speech", 0 )
|
||||
ROMX_LOAD("101-32107", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d), ROM_BIOS(0) )
|
||||
ROM_RELOAD( 0x1000, 0x1000)
|
||||
ROMX_LOAD("101-64105", 0x0000, 0x2000, CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3), ROM_BIOS(1) )
|
||||
ROM_END
|
||||
|
||||
} // anonymous namespace
|
||||
@ -376,8 +454,10 @@ ROM_END
|
||||
Drivers
|
||||
*******************************************************************************/
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
|
||||
SYST( 1982, fscc6, 0, 0, sc6, sc6, sc6_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger \"6\"", MACHINE_SUPPORTS_SAVE )
|
||||
SYST( 1982, miniscc, 0, 0, msc, msc, sc6_state, empty_init, "Fidelity Electronics", "Mini Sensory Chess Challenger (MCS-48 version)", MACHINE_SUPPORTS_SAVE ) // aka "Mini Sensory II"
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
|
||||
SYST( 1982, fscc6, 0, 0, sc6, sc6, sc6_state, empty_init, "Fidelity Electronics", "Sensory Chess Challenger \"6\"", MACHINE_SUPPORTS_SAVE )
|
||||
SYST( 1982, miniscc, 0, 0, msc, msc, sc6_state, empty_init, "Fidelity Electronics", "Mini Sensory Chess Challenger (MCS-48 version)", MACHINE_SUPPORTS_SAVE ) // aka "Mini Sensory II"
|
||||
|
||||
SYST( 1986, gambit, 0, 0, gambit, gambit, sc6_state, empty_init, "Fidelity International", "The Gambit", MACHINE_SUPPORTS_SAVE )
|
||||
SYST( 1986, classic, 0, 0, classic, sc6, sc6_state, empty_init, "Fidelity International", "The Classic (model 6079)", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
SYST( 1987, gambitv, 0, 0, gambitv, gambitv, sc6_state, empty_init, "Fidelity International", "Gambit Voice", MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -29,7 +29,7 @@ use this same ROM (three or four). The later chess boards use a slightly diffe
|
||||
number, but the contents are identical.
|
||||
|
||||
Memory map (VCC):
|
||||
-----------
|
||||
-----------------
|
||||
0000-0FFF: 4K 2332 ROM VCC1 or 101-32013
|
||||
1000-1FFF: 4K 2332 ROM VCC2
|
||||
2000-2FFF: 4K 2332 ROM VCC3
|
||||
@ -37,7 +37,7 @@ Memory map (VCC):
|
||||
6000-FFFF: empty
|
||||
|
||||
Memory map (UVC):
|
||||
-----------
|
||||
-----------------
|
||||
0000-1FFF: 8K 2364 ROM 101-64017
|
||||
2000-2FFF: 4K 2332 ROM 101-32010 or VCC3
|
||||
4000-5FFF: 1K RAM (2114 SRAM x2)
|
||||
@ -64,7 +64,7 @@ PB.2 - digit 0, bottom dot (W)
|
||||
PB.3 - digit 1, top dot (W)
|
||||
PB.4 - digit 2 (W)
|
||||
PB.5 - digit 3 (W)
|
||||
PB.6 - enable language switches (W, see below)
|
||||
PB.6 - enable language jumpers (W, see below)
|
||||
PB.7 - TSI BUSY line (R)
|
||||
|
||||
(button rows pulled up to 5V through 2.2K resistors)
|
||||
@ -77,14 +77,14 @@ PC.5 - button column B (W)
|
||||
PC.6 - button column C (W)
|
||||
PC.7 - button column D (W)
|
||||
|
||||
language switches:
|
||||
------------------
|
||||
When PB.6 is pulled low, the language switches can be read. There are four.
|
||||
Language jumpers:
|
||||
-----------------
|
||||
When PB.6 is pulled low, the language jumpers can be read. There are four.
|
||||
They connect to the button rows. When enabled, the row(s) will read low if
|
||||
the jumper is present. English only VCC's do not have the 367 or any pads stuffed.
|
||||
The jumpers are labeled: French, German, Spanish, and special.
|
||||
|
||||
language latch:
|
||||
Language latch:
|
||||
---------------
|
||||
There's an unstuffed 7474 on the board that connects to PA.6 and PA.7. It allows
|
||||
one to latch the state of A12 to the speech ROM. The English version has the chip
|
||||
@ -196,27 +196,27 @@ void vcc_state::ppi_porta_w(u8 data)
|
||||
m_7seg_data = bitswap<8>(data,7,0,1,2,3,4,5,6);
|
||||
update_display();
|
||||
|
||||
// d0-d5: TSI C0-C5
|
||||
// d7: TSI START line
|
||||
m_speech->data_w(data & 0x3f);
|
||||
m_speech->start_w(BIT(data, 7));
|
||||
|
||||
// d6: language latch data
|
||||
// d7: language latch clock (latch on high)
|
||||
if (data & 0x80)
|
||||
m_speech->set_rom_bank(BIT(data, 6));
|
||||
|
||||
// d0-d5: S14001A C0-C5
|
||||
// d7: S14001A start pin
|
||||
m_speech->data_w(data & 0x3f);
|
||||
m_speech->start_w(BIT(data, 7));
|
||||
}
|
||||
|
||||
u8 vcc_state::ppi_portb_r()
|
||||
{
|
||||
// d7: TSI BUSY line
|
||||
// d7: S14001A busy pin
|
||||
return (m_speech->busy_r()) ? 0x80 : 0x00;
|
||||
}
|
||||
|
||||
void vcc_state::ppi_portb_w(u8 data)
|
||||
{
|
||||
// d0,d2-d5: digit/led select
|
||||
// _d6: enable language switches
|
||||
// _d6: enable language jumpers
|
||||
m_led_select = data;
|
||||
update_display();
|
||||
}
|
||||
@ -230,8 +230,8 @@ u8 vcc_state::ppi_portc_r()
|
||||
if (BIT(m_inp_mux, i))
|
||||
data |= m_inputs[i]->read();
|
||||
|
||||
// also language switches, hardwired with 4 jumpers
|
||||
// 0(none wired): English, 1: German, 2: French, 4: Spanish, 8:Special(unused)
|
||||
// also language jumpers (hardwired)
|
||||
// 0(no jumper): English, 1: German, 2: French, 4: Spanish, 8: Special(unused)
|
||||
if (~m_led_select & 0x40)
|
||||
data |= *m_language;
|
||||
|
||||
|
@ -123,10 +123,10 @@ PB.2 - hi/lo TSI speaker volume
|
||||
PB.3 - violet wire to printer port?
|
||||
PB.4 - white wire to printer port? (and TSI BUSY line)
|
||||
PB.5 - selection jumper input (see below)
|
||||
PB.6 - TSI start line
|
||||
PB.6 - TSI START line
|
||||
PB.7 - TSI ROM A12 line
|
||||
|
||||
selection jumpers:
|
||||
Selection jumpers:
|
||||
------------------
|
||||
These act like another row of buttons. It is composed of two diode locations,
|
||||
so there's up to 4 possible configurations. My board does not have either diode
|
||||
@ -138,7 +138,7 @@ Anyways, the two jumpers are connected to button columns A and B and the common
|
||||
connects to Z80A PIO PB.5, which basically makes a 10th button row. I would
|
||||
expect that the software reads these once on startup only.
|
||||
|
||||
printer:
|
||||
Printer:
|
||||
--------
|
||||
This is the 1st Fidelity chess computer with a printer port. Many later Fidelity chess
|
||||
computers also have support for it. Two models were released:
|
||||
@ -201,7 +201,6 @@ private:
|
||||
u8 m_7seg_data = 0;
|
||||
u8 m_cb_mux = 0;
|
||||
u8 m_kp_mux = 0;
|
||||
bool m_lan_switch = false;
|
||||
|
||||
// address maps
|
||||
void main_map(address_map &map);
|
||||
@ -226,7 +225,6 @@ void vsc_state::machine_start()
|
||||
save_item(NAME(m_7seg_data));
|
||||
save_item(NAME(m_cb_mux));
|
||||
save_item(NAME(m_kp_mux));
|
||||
save_item(NAME(m_lan_switch));
|
||||
}
|
||||
|
||||
|
||||
@ -245,7 +243,7 @@ void vsc_state::update_display()
|
||||
|
||||
void vsc_state::ppi_porta_w(u8 data)
|
||||
{
|
||||
// d0-d5: TSI C0-C5
|
||||
// d0-d5: S14001A C0-C5
|
||||
m_speech->data_w(data & 0x3f);
|
||||
|
||||
// d0-d7: data for the 4 7seg leds, bits are HGCBAFED (H is extra led)
|
||||
@ -286,8 +284,8 @@ u8 vsc_state::pio_porta_r()
|
||||
if (BIT(m_kp_mux, i))
|
||||
data |= m_inputs[i]->read();
|
||||
|
||||
// also language switches(hardwired with 2 diodes)
|
||||
if (m_lan_switch)
|
||||
// also language jumpers (hardwired with 2 diodes)
|
||||
if (m_kp_mux & 0x20)
|
||||
data |= *m_language;
|
||||
|
||||
return data;
|
||||
@ -295,28 +293,23 @@ u8 vsc_state::pio_porta_r()
|
||||
|
||||
u8 vsc_state::pio_portb_r()
|
||||
{
|
||||
u8 data = 0;
|
||||
|
||||
// d4: TSI BUSY line
|
||||
data |= (m_speech->busy_r()) ? 0 : 0x10;
|
||||
|
||||
return data;
|
||||
// d4: S14001A busy pin
|
||||
return (m_speech->busy_r()) ? 0 : 0x10;
|
||||
}
|
||||
|
||||
void vsc_state::pio_portb_w(u8 data)
|
||||
{
|
||||
// d0,d1: keypad input mux
|
||||
// d5: enable language switch
|
||||
m_kp_mux = data & 3;
|
||||
m_lan_switch = bool(data & 0x20);
|
||||
// d5: enable language jumpers
|
||||
m_kp_mux = data;
|
||||
|
||||
// d7: TSI ROM A12
|
||||
// d7: speech ROM A12
|
||||
m_speech->set_rom_bank(BIT(data, 7));
|
||||
|
||||
// d6: TSI START line
|
||||
// d6: S14001A start pin
|
||||
m_speech->start_w(BIT(data, 6));
|
||||
|
||||
// d2: lower TSI volume
|
||||
// d2: lower S14001A volume
|
||||
m_speech->set_output_gain(0, (data & 4) ? 0.25 : 1.0);
|
||||
}
|
||||
|
||||
|
449
src/mame/layout/fidel_classic.lay
Normal file
449
src/mame/layout/fidel_classic.lay
Normal file
@ -0,0 +1,449 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--
|
||||
license:CC0-1.0
|
||||
authors:hap
|
||||
-->
|
||||
<mamelayout version="2">
|
||||
|
||||
<!-- define elements -->
|
||||
|
||||
<element name="black"><rect><color red="0.15" green="0.15" blue="0.15" /></rect></element>
|
||||
<element name="white"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element>
|
||||
<element name="disk_black"><disk><color red="0.15" green="0.15" blue="0.15" /></disk></element>
|
||||
<element name="disk_white"><disk><color red="0.81" green="0.8" blue="0.79" /></disk></element>
|
||||
|
||||
<element name="led0o">
|
||||
<disk><color red="0.1" green="0.1" blue="0.1" /></disk>
|
||||
</element>
|
||||
<element name="led0r" defstate="0">
|
||||
<disk state="0"><color red="0" green="0" blue="0" /></disk>
|
||||
<disk state="1"><color red="1" green="0" blue="0" /></disk>
|
||||
</element>
|
||||
<element name="led0g" defstate="0">
|
||||
<disk state="0"><color red="0" green="0" blue="0" /></disk>
|
||||
<disk state="1"><color red="0" green="1" blue="0" /></disk>
|
||||
</element>
|
||||
|
||||
<element name="ledr" defstate="0">
|
||||
<disk state="0"><color red="0.1" green="0.01" blue="0.01" /></disk>
|
||||
<disk state="1"><color red="1.0" green="0.1" blue="0.1" /></disk>
|
||||
</element>
|
||||
<element name="ledg" defstate="0">
|
||||
<disk state="0"><color red="0.01" green="0.1" blue="0.01" /></disk>
|
||||
<disk state="1"><color red="0.1" green="1.0" blue="0.1" /></disk>
|
||||
</element>
|
||||
|
||||
<element name="hlb" defstate="0">
|
||||
<text string=" ">
|
||||
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
</text>
|
||||
<disk state="1">
|
||||
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
</disk>
|
||||
</element>
|
||||
|
||||
<element name="text_1"><text string="1"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_2"><text string="2"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_3"><text string="3"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_4"><text string="4"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_5"><text string="5"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_6"><text string="6"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_7"><text string="7"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_8"><text string="8"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
|
||||
<element name="text_a"><text string="A"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_b"><text string="B"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_c"><text string="C"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_d"><text string="D"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_e"><text string="E"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_f"><text string="F"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_g"><text string="G"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_h"><text string="H"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
|
||||
<element name="text_lb"><text string="CHECK"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_lc"><text string="MATE"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_ld"><text string="WHITE"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_le"><text string="BLACK"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_lf"><text string="I LOSE"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
|
||||
<element name="text_re"><text string="RE"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_cl"><text string="CL"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_pb"><text string="PB"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_pv"><text string="PV"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_lv"><text string="LV"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_tb"><text string="TB"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_dm"><text string="DM"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_rv"><text string="RV"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
|
||||
<element name="text_p1"><rect><color red="1" green="1" blue="1" /></rect><image file="chess/wk.svg" /><rect><color red="1" green="1" blue="1" alpha="0.1875" /></rect></element>
|
||||
<element name="text_p2"><rect><color red="1" green="1" blue="1" /></rect><image file="chess/wq.svg" /><rect><color red="1" green="1" blue="1" alpha="0.1875" /></rect></element>
|
||||
<element name="text_p3"><rect><color red="1" green="1" blue="1" /></rect><image file="chess/wr.svg" /><rect><color red="1" green="1" blue="1" alpha="0.1875" /></rect></element>
|
||||
<element name="text_p4"><rect><color red="1" green="1" blue="1" /></rect><image file="chess/wb.svg" /><rect><color red="1" green="1" blue="1" alpha="0.1875" /></rect></element>
|
||||
<element name="text_p5"><rect><color red="1" green="1" blue="1" /></rect><image file="chess/wn.svg" /><rect><color red="1" green="1" blue="1" alpha="0.1875" /></rect></element>
|
||||
<element name="text_p6"><rect><color red="1" green="1" blue="1" /></rect><image file="chess/wp.svg" /><rect><color red="1" green="1" blue="1" alpha="0.1875" /></rect></element>
|
||||
|
||||
|
||||
<!-- sb board -->
|
||||
|
||||
<element name="cblack"><rect><color red="0.41" green="0.4" blue="0.39" /></rect></element>
|
||||
<element name="cwhite"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element>
|
||||
|
||||
<element name="hlbb" defstate="0">
|
||||
<text string=" "><bounds x="0" y="0" width="1" height="1" /></text>
|
||||
<disk state="1">
|
||||
<bounds x="0.12" y="0.12" width="0.76" height="0.76" />
|
||||
<color red="0" green="0" blue="0" />
|
||||
</disk>
|
||||
</element>
|
||||
|
||||
<element name="piece" defstate="0">
|
||||
<image file="chess/wp.svg" state="1"/>
|
||||
<image file="chess/wn.svg" state="2"/>
|
||||
<image file="chess/wb.svg" state="3"/>
|
||||
<image file="chess/wr.svg" state="4"/>
|
||||
<image file="chess/wq.svg" state="5"/>
|
||||
<image file="chess/wk.svg" state="6"/>
|
||||
|
||||
<image file="chess/bp.svg" state="7"/>
|
||||
<image file="chess/bn.svg" state="8"/>
|
||||
<image file="chess/bb.svg" state="9"/>
|
||||
<image file="chess/br.svg" state="10"/>
|
||||
<image file="chess/bq.svg" state="11"/>
|
||||
<image file="chess/bk.svg" state="12"/>
|
||||
|
||||
<!-- selected pieces -->
|
||||
<image file="chess/wp.svg" state="13"><color alpha="0.5" /></image>
|
||||
<image file="chess/wn.svg" state="14"><color alpha="0.5" /></image>
|
||||
<image file="chess/wb.svg" state="15"><color alpha="0.5" /></image>
|
||||
<image file="chess/wr.svg" state="16"><color alpha="0.5" /></image>
|
||||
<image file="chess/wq.svg" state="17"><color alpha="0.5" /></image>
|
||||
<image file="chess/wk.svg" state="18"><color alpha="0.5" /></image>
|
||||
|
||||
<image file="chess/bp.svg" state="19"><color alpha="0.5" /></image>
|
||||
<image file="chess/bn.svg" state="20"><color alpha="0.5" /></image>
|
||||
<image file="chess/bb.svg" state="21"><color alpha="0.5" /></image>
|
||||
<image file="chess/br.svg" state="22"><color alpha="0.5" /></image>
|
||||
<image file="chess/bq.svg" state="23"><color alpha="0.5" /></image>
|
||||
<image file="chess/bk.svg" state="24"><color alpha="0.5" /></image>
|
||||
</element>
|
||||
|
||||
<group name="sb_board">
|
||||
<bounds x="0" y="0" width="80" height="80" />
|
||||
|
||||
<!-- squares (avoid seams) -->
|
||||
<element ref="cwhite"><bounds x="0" y="0" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="10" y="0" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="20" y="0" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="30" y="0" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="40" y="0" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="50" y="0" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="60" y="0" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="70" y="0" width="10" height="11" /></element>
|
||||
|
||||
<element ref="cblack"><bounds x="0" y="10" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="10" y="10" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="20" y="10" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="30" y="10" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="40" y="10" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="50" y="10" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="60" y="10" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="70" y="10" width="10" height="11" /></element>
|
||||
|
||||
<element ref="cwhite"><bounds x="0" y="20" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="10" y="20" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="20" y="20" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="30" y="20" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="40" y="20" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="50" y="20" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="60" y="20" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="70" y="20" width="10" height="11" /></element>
|
||||
|
||||
<element ref="cblack"><bounds x="0" y="30" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="10" y="30" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="20" y="30" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="30" y="30" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="40" y="30" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="50" y="30" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="60" y="30" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="70" y="30" width="10" height="11" /></element>
|
||||
|
||||
<element ref="cwhite"><bounds x="0" y="40" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="10" y="40" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="20" y="40" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="30" y="40" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="40" y="40" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="50" y="40" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="60" y="40" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="70" y="40" width="10" height="11" /></element>
|
||||
|
||||
<element ref="cblack"><bounds x="0" y="50" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="10" y="50" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="20" y="50" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="30" y="50" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="40" y="50" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="50" y="50" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="60" y="50" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="70" y="50" width="10" height="11" /></element>
|
||||
|
||||
<element ref="cwhite"><bounds x="0" y="60" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="10" y="60" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="20" y="60" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="30" y="60" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="40" y="60" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="50" y="60" width="11" height="11" /></element>
|
||||
<element ref="cwhite"><bounds x="60" y="60" width="11" height="11" /></element>
|
||||
<element ref="cblack"><bounds x="70" y="60" width="10" height="11" /></element>
|
||||
|
||||
<element ref="cblack"><bounds x="0" y="70" width="11" height="10" /></element>
|
||||
<element ref="cwhite"><bounds x="10" y="70" width="11" height="10" /></element>
|
||||
<element ref="cblack"><bounds x="20" y="70" width="11" height="10" /></element>
|
||||
<element ref="cwhite"><bounds x="30" y="70" width="11" height="10" /></element>
|
||||
<element ref="cblack"><bounds x="40" y="70" width="11" height="10" /></element>
|
||||
<element ref="cwhite"><bounds x="50" y="70" width="11" height="10" /></element>
|
||||
<element ref="cblack"><bounds x="60" y="70" width="11" height="10" /></element>
|
||||
<element ref="cwhite"><bounds x="70" y="70" width="10" height="10" /></element>
|
||||
|
||||
<!-- sensors, pieces -->
|
||||
<repeat count="8">
|
||||
<param name="y" start="0" increment="10" />
|
||||
<param name="i" start="8" increment="-1" />
|
||||
|
||||
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
|
||||
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
|
||||
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
|
||||
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
|
||||
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
|
||||
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
|
||||
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
|
||||
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x80"><bounds x="70" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
|
||||
|
||||
<element name="piece_a~i~" ref="piece"><bounds x="0" y="~y~" width="10" height="10" /></element>
|
||||
<element name="piece_b~i~" ref="piece"><bounds x="10" y="~y~" width="10" height="10" /></element>
|
||||
<element name="piece_c~i~" ref="piece"><bounds x="20" y="~y~" width="10" height="10" /></element>
|
||||
<element name="piece_d~i~" ref="piece"><bounds x="30" y="~y~" width="10" height="10" /></element>
|
||||
<element name="piece_e~i~" ref="piece"><bounds x="40" y="~y~" width="10" height="10" /></element>
|
||||
<element name="piece_f~i~" ref="piece"><bounds x="50" y="~y~" width="10" height="10" /></element>
|
||||
<element name="piece_g~i~" ref="piece"><bounds x="60" y="~y~" width="10" height="10" /></element>
|
||||
<element name="piece_h~i~" ref="piece"><bounds x="70" y="~y~" width="10" height="10" /></element>
|
||||
</repeat>
|
||||
</group>
|
||||
|
||||
|
||||
<!-- sb ui -->
|
||||
|
||||
<element name="hlub" defstate="0">
|
||||
<rect state="1"><color red="0" green="0" blue="0" /></rect>
|
||||
</element>
|
||||
|
||||
<element name="text_uit1"><text string="S.BOARD"><color red="0.81" green="0.8" blue="0.79" /></text></element>
|
||||
<element name="text_uit2"><text string="INTERFACE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
|
||||
<element name="text_uib1"><text string="BOARD:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
|
||||
<element name="text_uib2"><text string="RESET"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_uib3"><text string="CLEAR"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_uis1"><text string="SPAWN:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
|
||||
<element name="text_uih1"><text string="HAND:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
|
||||
<element name="text_uih2"><text string="REMOVE"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_uiu1"><text string="UNDO:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
|
||||
<element name="text_uiu2a"><text string=" <<"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_uiu2b"><text string=" < "><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_uiu2c"><text string=" >"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_uiu2d"><text string=" >>"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
<element name="text_uiu3b"><text string="/"><color red="0.81" green="0.8" blue="0.79" /></text></element>
|
||||
|
||||
<element name="text_uiu3a" defstate="0">
|
||||
<simplecounter maxstate="999" digits="1" align="2">
|
||||
<color red="0.81" green="0.8" blue="0.79" />
|
||||
</simplecounter>
|
||||
</element>
|
||||
<element name="text_uiu3c" defstate="0">
|
||||
<simplecounter maxstate="999" digits="1" align="1">
|
||||
<color red="0.81" green="0.8" blue="0.79" />
|
||||
</simplecounter>
|
||||
</element>
|
||||
|
||||
<group name="sb_ui">
|
||||
<bounds x="0" y="0" width="10" height="80" />
|
||||
<element ref="cblack"><bounds x="0" y="0" width="10" height="1" /></element>
|
||||
<element ref="cblack"><bounds x="0" y="7" width="10" height="1" /></element>
|
||||
<element ref="cblack"><bounds x="0" y="79" width="10" height="1" /></element>
|
||||
<element ref="text_uit1"><bounds x="0" y="2" width="10" height="2" /></element>
|
||||
<element ref="text_uit2"><bounds x="0" y="4" width="10" height="2" /></element>
|
||||
|
||||
<!-- board -->
|
||||
<element ref="text_uib1"><bounds x="0" y="9" width="10" height="2" /></element>
|
||||
<element ref="cwhite"><bounds x="1" y="11.5" width="8" height="2.5" /></element>
|
||||
<element ref="cwhite"><bounds x="1" y="15" width="8" height="2.5" /></element>
|
||||
|
||||
<element ref="text_uib2"><bounds x="1.5" y="11.75" width="7" height="2" /></element>
|
||||
<element ref="text_uib3"><bounds x="1.5" y="15.25" width="7" height="2" /></element>
|
||||
|
||||
<element ref="hlub" inputtag="board:UI" inputmask="0x200"><bounds x="1" y="11.5" width="8" height="2.5" /><color alpha="0.25" /></element>
|
||||
<element ref="hlub" inputtag="board:UI" inputmask="0x100"><bounds x="1" y="15" width="8" height="2.5" /><color alpha="0.25" /></element>
|
||||
|
||||
<!-- spawn -->
|
||||
<element ref="text_uis1"><bounds x="0" y="20.5" width="10" height="2" /></element>
|
||||
<element ref="cwhite"><bounds x="1" y="23" width="8" height="12" /></element>
|
||||
<element ref="cwhite"><bounds x="1" y="36" width="8" height="12" /></element>
|
||||
|
||||
<element name="piece_ui1" ref="piece"><bounds x="1" y="23" width="4" height="4" /></element>
|
||||
<element name="piece_ui2" ref="piece"><bounds x="1" y="27" width="4" height="4" /></element>
|
||||
<element name="piece_ui3" ref="piece"><bounds x="1" y="31" width="4" height="4" /></element>
|
||||
<element name="piece_ui4" ref="piece"><bounds x="5" y="23" width="4" height="4" /></element>
|
||||
<element name="piece_ui5" ref="piece"><bounds x="5" y="27" width="4" height="4" /></element>
|
||||
<element name="piece_ui6" ref="piece"><bounds x="5" y="31" width="4" height="4" /></element>
|
||||
<element name="piece_ui7" ref="piece"><bounds x="1" y="36" width="4" height="4" /></element>
|
||||
<element name="piece_ui8" ref="piece"><bounds x="1" y="40" width="4" height="4" /></element>
|
||||
<element name="piece_ui9" ref="piece"><bounds x="1" y="44" width="4" height="4" /></element>
|
||||
<element name="piece_ui10" ref="piece"><bounds x="5" y="36" width="4" height="4" /></element>
|
||||
<element name="piece_ui11" ref="piece"><bounds x="5" y="40" width="4" height="4" /></element>
|
||||
<element name="piece_ui12" ref="piece"><bounds x="5" y="44" width="4" height="4" /></element>
|
||||
|
||||
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0001"><bounds x="1" y="23" width="4" height="4" /><color alpha="0.25" /></element>
|
||||
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0002"><bounds x="1" y="27" width="4" height="4" /><color alpha="0.25" /></element>
|
||||
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0004"><bounds x="1" y="31" width="4" height="4" /><color alpha="0.25" /></element>
|
||||
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0008"><bounds x="5" y="23" width="4" height="4" /><color alpha="0.25" /></element>
|
||||
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0010"><bounds x="5" y="27" width="4" height="4" /><color alpha="0.25" /></element>
|
||||
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0020"><bounds x="5" y="31" width="4" height="4" /><color alpha="0.25" /></element>
|
||||
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0040"><bounds x="1" y="36" width="4" height="4" /><color alpha="0.25" /></element>
|
||||
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0080"><bounds x="1" y="40" width="4" height="4" /><color alpha="0.25" /></element>
|
||||
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0100"><bounds x="1" y="44" width="4" height="4" /><color alpha="0.25" /></element>
|
||||
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0200"><bounds x="5" y="36" width="4" height="4" /><color alpha="0.25" /></element>
|
||||
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0400"><bounds x="5" y="40" width="4" height="4" /><color alpha="0.25" /></element>
|
||||
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0800"><bounds x="5" y="44" width="4" height="4" /><color alpha="0.25" /></element>
|
||||
|
||||
<!-- hand -->
|
||||
<element ref="text_uih1"><bounds x="0" y="51" width="10" height="2" /></element>
|
||||
<element ref="cblack"><bounds x="1" y="53.5" width="8" height="6" /></element>
|
||||
<element name="piece_ui0" ref="piece"><bounds x="2" y="53.5" width="6" height="6" /></element>
|
||||
|
||||
<element ref="cwhite"><bounds x="1" y="60.5" width="8" height="2.5" /></element>
|
||||
<element ref="text_uih2"><bounds x="1.5" y="60.75" width="7" height="2" /></element>
|
||||
<element ref="hlub" inputtag="board:UI" inputmask="0x08"><bounds x="1" y="60.5" width="8" height="2.5" /><color alpha="0.25" /></element>
|
||||
|
||||
<!-- undo -->
|
||||
<element ref="text_uiu1"><bounds x="0" y="66" width="10" height="2" /></element>
|
||||
<element ref="cwhite"><bounds x="1" y="68.5" width="1.7" height="6" /></element>
|
||||
<element ref="cwhite"><bounds x="3.1" y="68.5" width="1.7" height="6" /></element>
|
||||
<element ref="cwhite"><bounds x="5.2" y="68.5" width="1.7" height="6" /></element>
|
||||
<element ref="cwhite"><bounds x="7.3" y="68.5" width="1.7" height="6" /></element>
|
||||
<element ref="text_uiu2a"><bounds x="1" y="69.5" width="1.7" height="4" /></element>
|
||||
<element ref="text_uiu2b"><bounds x="3.1" y="69.5" width="1.7" height="4" /></element>
|
||||
<element ref="text_uiu2c"><bounds x="5.2" y="69.5" width="1.7" height="4" /></element>
|
||||
<element ref="text_uiu2d"><bounds x="7.3" y="69.5" width="1.7" height="4" /></element>
|
||||
|
||||
<element ref="hlub" inputtag="board:UI" inputmask="0x10"><bounds x="1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
|
||||
<element ref="hlub" inputtag="board:UI" inputmask="0x20"><bounds x="3.1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
|
||||
<element ref="hlub" inputtag="board:UI" inputmask="0x40"><bounds x="5.2" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
|
||||
<element ref="hlub" inputtag="board:UI" inputmask="0x80"><bounds x="7.3" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
|
||||
|
||||
<element name="count_ui0" ref="text_uiu3a"><bounds x="0" y="75" width="4" height="2" /></element>
|
||||
<element name="count_ui1" ref="text_uiu3c"><bounds x="6" y="75" width="4" height="2" /></element>
|
||||
<element ref="text_uiu3b"><bounds x="4" y="75" width="2" height="2" /></element>
|
||||
</group>
|
||||
|
||||
|
||||
<!-- build screen -->
|
||||
|
||||
<view name="Internal Layout">
|
||||
<bounds left="-13" right="99" top="-1.5" bottom="87.5" />
|
||||
|
||||
<element ref="white"><bounds x="-1" y="-1.5" width="100" height="89" /></element>
|
||||
<element ref="black"><bounds x="3" y="2.5" width="81" height="81" /></element>
|
||||
|
||||
<group ref="sb_board"><bounds x="3.5" y="3" width="80" height="80" /></group>
|
||||
<group ref="sb_ui"><bounds x="-12" y="3" width="10" height="80" /></group>
|
||||
|
||||
<!-- chessboard coords -->
|
||||
<element ref="text_8"><bounds x="0.2" y="7" width="2" height="2" /></element>
|
||||
<element ref="text_7"><bounds x="0.2" y="17" width="2" height="2" /></element>
|
||||
<element ref="text_6"><bounds x="0.2" y="27" width="2" height="2" /></element>
|
||||
<element ref="text_5"><bounds x="0.2" y="37" width="2" height="2" /></element>
|
||||
<element ref="text_4"><bounds x="0.2" y="47" width="2" height="2" /></element>
|
||||
<element ref="text_3"><bounds x="0.2" y="57" width="2" height="2" /></element>
|
||||
<element ref="text_2"><bounds x="0.2" y="67" width="2" height="2" /></element>
|
||||
<element ref="text_1"><bounds x="0.2" y="77" width="2" height="2" /></element>
|
||||
|
||||
<element ref="text_a"><bounds x="7.5" y="84.5" width="2" height="2" /></element>
|
||||
<element ref="text_b"><bounds x="17.5" y="84.5" width="2" height="2" /></element>
|
||||
<element ref="text_c"><bounds x="27.5" y="84.5" width="2" height="2" /></element>
|
||||
<element ref="text_d"><bounds x="37.5" y="84.5" width="2" height="2" /></element>
|
||||
<element ref="text_e"><bounds x="47.5" y="84.5" width="2" height="2" /></element>
|
||||
<element ref="text_f"><bounds x="57.5" y="84.5" width="2" height="2" /></element>
|
||||
<element ref="text_g"><bounds x="67.5" y="84.5" width="2" height="2" /></element>
|
||||
<element ref="text_h"><bounds x="77.5" y="84.5" width="2" height="2" /></element>
|
||||
|
||||
<!-- bottom side labels -->
|
||||
<element ref="text_lb"><bounds xc="14.45" y="84.6" width="10" height="1.25" /></element>
|
||||
<element ref="text_lc"><bounds xc="24.45" y="84.6" width="10" height="1.25" /></element>
|
||||
<element ref="text_ld"><bounds xc="34.45" y="84.6" width="10" height="1.25" /></element>
|
||||
<element ref="text_le"><bounds xc="44.45" y="84.6" width="10" height="1.25" /></element>
|
||||
<element ref="text_lf"><bounds xc="54.45" y="84.6" width="10" height="1.25" /></element>
|
||||
|
||||
<!-- chessboard leds -->
|
||||
<element name="0.7" ref="ledr"><bounds x="3.7" y="11.3" width="1.5" height="1.5" /></element>
|
||||
<element name="0.6" ref="ledr"><bounds x="3.7" y="21.3" width="1.5" height="1.5" /></element>
|
||||
<element name="0.5" ref="ledr"><bounds x="3.7" y="31.3" width="1.5" height="1.5" /></element>
|
||||
<element name="0.4" ref="ledr"><bounds x="3.7" y="41.3" width="1.5" height="1.5" /></element>
|
||||
<element name="0.3" ref="ledr"><bounds x="3.7" y="51.3" width="1.5" height="1.5" /></element>
|
||||
<element name="0.2" ref="ledr"><bounds x="3.7" y="61.3" width="1.5" height="1.5" /></element>
|
||||
<element name="0.1" ref="ledr"><bounds x="3.7" y="71.3" width="1.5" height="1.5" /></element>
|
||||
|
||||
<element name="1.1" ref="ledg"><bounds x="13.7" y="81.3" width="1.5" height="1.5" /></element>
|
||||
<element name="1.2" ref="ledg"><bounds x="23.7" y="81.3" width="1.5" height="1.5" /></element>
|
||||
<element name="1.3" ref="ledg"><bounds x="33.7" y="81.3" width="1.5" height="1.5" /></element>
|
||||
<element name="1.4" ref="ledg"><bounds x="43.7" y="81.3" width="1.5" height="1.5" /></element>
|
||||
<element name="1.5" ref="ledg"><bounds x="53.7" y="81.3" width="1.5" height="1.5" /></element>
|
||||
<element name="1.6" ref="ledg"><bounds x="63.7" y="81.3" width="1.5" height="1.5" /></element>
|
||||
<element name="1.7" ref="ledg"><bounds x="73.7" y="81.3" width="1.5" height="1.5" /></element>
|
||||
|
||||
<element ref="led0o"><bounds x="3.7" y="81.3" width="1.5" height="1.5" /></element>
|
||||
<element name="0.0" ref="led0r" blend="add"><bounds x="3.7" y="81.3" width="1.5" height="1.5" /></element>
|
||||
<element name="1.0" ref="led0g" blend="add"><bounds x="3.7" y="81.3" width="1.5" height="1.5" /></element>
|
||||
|
||||
<!-- right side -->
|
||||
<element ref="disk_black"><bounds x="89" y="13" width="7.4" height="7.4" /></element>
|
||||
<element ref="disk_black"><bounds x="89" y="21.8" width="7.4" height="7.4" /></element>
|
||||
<element ref="disk_black"><bounds x="89" y="30.6" width="7.4" height="7.4" /></element>
|
||||
<element ref="disk_black"><bounds x="89" y="39.4" width="7.4" height="7.4" /></element>
|
||||
<element ref="disk_black"><bounds x="89" y="48.2" width="7.4" height="7.4" /></element>
|
||||
<element ref="disk_black"><bounds x="89" y="57" width="7.4" height="7.4" /></element>
|
||||
<element ref="disk_black"><bounds x="89" y="65.8" width="7.4" height="7.4" /></element>
|
||||
<element ref="disk_black"><bounds x="89" y="74.6" width="7.4" height="7.4" /></element>
|
||||
|
||||
<element ref="disk_white"><bounds x="89.7" y="13.7" width="6" height="6" /></element>
|
||||
<element ref="disk_white"><bounds x="89.7" y="22.5" width="6" height="6" /></element>
|
||||
<element ref="disk_white"><bounds x="89.7" y="31.3" width="6" height="6" /></element>
|
||||
<element ref="disk_white"><bounds x="89.7" y="40.1" width="6" height="6" /></element>
|
||||
<element ref="disk_white"><bounds x="89.7" y="48.9" width="6" height="6" /></element>
|
||||
<element ref="disk_white"><bounds x="89.7" y="57.7" width="6" height="6" /></element>
|
||||
<element ref="disk_white"><bounds x="89.7" y="66.5" width="6" height="6" /></element>
|
||||
<element ref="disk_white"><bounds x="89.7" y="75.3" width="6" height="6" /></element>
|
||||
|
||||
<element ref="text_re"><bounds x="90.2" y="15.2" width="5" height="3" /></element>
|
||||
<element ref="text_cl"><bounds x="90.2" y="24" width="5" height="3" /></element>
|
||||
<element ref="text_pb"><bounds x="90.2" y="32.8" width="5" height="3" /></element>
|
||||
<element ref="text_pv"><bounds x="90.2" y="41.6" width="5" height="3" /></element>
|
||||
<element ref="text_lv"><bounds x="90.2" y="50.4" width="5" height="3" /></element>
|
||||
<element ref="text_tb"><bounds x="90.2" y="59.2" width="5" height="3" /></element>
|
||||
<element ref="text_dm"><bounds x="90.2" y="68" width="5" height="3" /></element>
|
||||
<element ref="text_rv"><bounds x="90.2" y="76.8" width="5" height="3" /></element>
|
||||
|
||||
<repeat count="6">
|
||||
<param name="y" start="31.9" increment="8.8" />
|
||||
<param name="i" start="1" increment="1" />
|
||||
<element ref="text_p~i~" blend="multiply"><bounds x="84.5" y="~y~" width="4.4" height="4.4" /></element>
|
||||
</repeat>
|
||||
|
||||
<element ref="hlb" inputtag="IN.0" inputmask="0x80"><bounds x="89" y="13" width="7.4" height="7.4" /><color alpha="0.3" /></element>
|
||||
<element ref="hlb" inputtag="IN.0" inputmask="0x40"><bounds x="89" y="21.8" width="7.4" height="7.4" /><color alpha="0.3" /></element>
|
||||
<element ref="hlb" inputtag="IN.0" inputmask="0x20"><bounds x="89" y="30.6" width="7.4" height="7.4" /><color alpha="0.3" /></element>
|
||||
<element ref="hlb" inputtag="IN.0" inputmask="0x10"><bounds x="89" y="39.4" width="7.4" height="7.4" /><color alpha="0.3" /></element>
|
||||
<element ref="hlb" inputtag="IN.0" inputmask="0x08"><bounds x="89" y="48.2" width="7.4" height="7.4" /><color alpha="0.3" /></element>
|
||||
<element ref="hlb" inputtag="IN.0" inputmask="0x04"><bounds x="89" y="57" width="7.4" height="7.4" /><color alpha="0.3" /></element>
|
||||
<element ref="hlb" inputtag="IN.0" inputmask="0x02"><bounds x="89" y="65.8" width="7.4" height="7.4" /><color alpha="0.3" /></element>
|
||||
<element ref="hlb" inputtag="IN.0" inputmask="0x01"><bounds x="89" y="74.6" width="7.4" height="7.4" /><color alpha="0.3" /></element>
|
||||
|
||||
</view>
|
||||
</mamelayout>
|
@ -364,8 +364,8 @@ authors:hap
|
||||
<group ref="sb_ui"><bounds x="-12" y="3" width="10" height="80" /></group>
|
||||
|
||||
<!-- chessboard leds -->
|
||||
<element ref="text_lose"><bounds x="88" y="75" width="9.4" height="2.5" /></element>
|
||||
<element ref="text_check"><bounds x="88" y="81.75" width="9.4" height="2.5" /></element>
|
||||
<element ref="text_lose"><bounds x="88" y="75.25" width="9.4" height="2.25" /></element>
|
||||
<element ref="text_check"><bounds x="88" y="82" width="9.4" height="2.25" /></element>
|
||||
|
||||
<element name="0.8" ref="led"><bounds x="91.95" y="78.0" width="1.5" height="1.5" /></element>
|
||||
<element name="1.8" ref="led"><bounds x="91.95" y="84.75" width="1.5" height="1.5" /></element>
|
||||
|
@ -9,23 +9,25 @@ authors:hap
|
||||
|
||||
<element name="black"><rect><color red="0.15" green="0.15" blue="0.15" /></rect></element>
|
||||
<element name="white"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element>
|
||||
<element name="disk_black"><disk><color red="0.15" green="0.15" blue="0.15" /></disk></element>
|
||||
<element name="disk_white"><disk><color red="0.81" green="0.8" blue="0.79" /></disk></element>
|
||||
|
||||
<element name="led" defstate="0">
|
||||
<disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk>
|
||||
<disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk>
|
||||
</element>
|
||||
|
||||
<element name="hlb" defstate="0">
|
||||
<text string=" ">
|
||||
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
</text>
|
||||
<disk state="1">
|
||||
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
</disk>
|
||||
<element name="but" defstate="0">
|
||||
<rect>
|
||||
<bounds xc="0" yc="0" width="5.4" height="3.6" />
|
||||
<color red="0.01" green="0.01" blue="0.01" />
|
||||
</rect>
|
||||
<rect>
|
||||
<bounds xc="0" yc="0" width="4.9" height="3.1" />
|
||||
<color red="0.55" green="0.25" blue="0.15" />
|
||||
</rect>
|
||||
<rect state="1">
|
||||
<bounds xc="0" yc="0" width="4.9" height="3.1" />
|
||||
<color red="1" green="1" blue="1" alpha="0.18" />
|
||||
</rect>
|
||||
</element>
|
||||
|
||||
<element name="text_1"><text string="1"><color red="0.01" green="0.01" blue="0.01" /></text></element>
|
||||
@ -56,13 +58,14 @@ authors:hap
|
||||
]]></data></image>
|
||||
</element>
|
||||
|
||||
<element name="text_re"><text string="RE"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_cl"><text string="CL"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_pb"><text string="PB"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_pv"><text string="PV"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_lv"><text string="LV"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_dm"><text string="DM"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_rv"><text string="RV"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_l1"><text string="RE"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_l2"><text string="CL"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_l3"><text string="PB"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_l4"><text string="PV"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_l5"><text string="LV"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_l6"><text string=" "></text></element>
|
||||
<element name="text_l7"><text string="DM"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_l8"><text string="RV"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
|
||||
<element name="text_lose"><text string="I LOSE"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
<element name="text_check"><text string="CHECK"><color red="0.15" green="0.15" blue="0.15" /></text></element>
|
||||
@ -337,8 +340,8 @@ authors:hap
|
||||
<!-- build screen -->
|
||||
|
||||
<view name="Internal Layout">
|
||||
<bounds left="-13" right="99" top="-1.5" bottom="87.5" />
|
||||
<element ref="white"><bounds x="-1" y="-1.5" width="100" height="89" /></element>
|
||||
<bounds left="-13" right="97" top="-1.5" bottom="87.5" />
|
||||
<element ref="white"><bounds x="-1" y="-1.5" width="98" height="89" /></element>
|
||||
|
||||
<!-- chessboard coords -->
|
||||
<element ref="text_8"><bounds x="1.1" y="11" width="2" height="2" /></element>
|
||||
@ -364,11 +367,11 @@ authors:hap
|
||||
<group ref="sb_ui"><bounds x="-12" y="3" width="10" height="80" /></group>
|
||||
|
||||
<!-- chessboard leds -->
|
||||
<element ref="text_lose"><bounds x="88" y="75" width="9.4" height="2.5" /></element>
|
||||
<element ref="text_check"><bounds x="88" y="81.75" width="9.4" height="2.5" /></element>
|
||||
<element ref="text_lose"><bounds xc="91.7" y="75.75" width="9.4" height="2.25" /></element>
|
||||
<element ref="text_check"><bounds xc="91.7" y="82" width="9.4" height="2.25" /></element>
|
||||
|
||||
<element name="0.8" ref="led"><bounds x="91.95" y="78.0" width="1.5" height="1.5" /></element>
|
||||
<element name="1.8" ref="led"><bounds x="91.95" y="84.75" width="1.5" height="1.5" /></element>
|
||||
<element name="0.8" ref="led"><bounds xc="91.7" y="78.5" width="1.5" height="1.5" /></element>
|
||||
<element name="1.8" ref="led"><bounds xc="91.7" y="84.75" width="1.5" height="1.5" /></element>
|
||||
|
||||
<element name="0.7" ref="led"><bounds x="0.25" y="7.25" width="1.5" height="1.5" /></element>
|
||||
<element name="0.6" ref="led"><bounds x="0.25" y="17.25" width="1.5" height="1.5" /></element>
|
||||
@ -389,49 +392,25 @@ authors:hap
|
||||
<element name="1.7" ref="led"><bounds x="77.75" y="84.75" width="1.5" height="1.5" /></element>
|
||||
|
||||
<!-- right side -->
|
||||
<element ref="black"><bounds x="85.3" y="14" width="2.7" height="3" /></element>
|
||||
|
||||
<element ref="disk_black"><bounds x="89" y="3" width="7.4" height="7.4" /></element>
|
||||
<element ref="disk_black"><bounds x="89" y="11.8" width="7.4" height="7.4" /></element>
|
||||
<element ref="disk_black"><bounds x="89" y="20.6" width="7.4" height="7.4" /></element>
|
||||
<element ref="disk_black"><bounds x="89" y="29.4" width="7.4" height="7.4" /></element>
|
||||
<element ref="disk_black"><bounds x="89" y="38.2" width="7.4" height="7.4" /></element>
|
||||
<element ref="disk_black"><bounds x="89" y="47" width="7.4" height="7.4" /></element>
|
||||
<element ref="disk_black"><bounds x="89" y="55.8" width="7.4" height="7.4" /></element>
|
||||
<element ref="disk_black"><bounds x="89" y="64.6" width="7.4" height="7.4" /></element>
|
||||
|
||||
<element ref="disk_white"><bounds x="89.7" y="3.7" width="6" height="6" /></element>
|
||||
<element ref="disk_white"><bounds x="89.7" y="12.5" width="6" height="6" /></element>
|
||||
<element ref="disk_white"><bounds x="89.7" y="21.3" width="6" height="6" /></element>
|
||||
<element ref="disk_white"><bounds x="89.7" y="30.1" width="6" height="6" /></element>
|
||||
<element ref="disk_white"><bounds x="89.7" y="38.9" width="6" height="6" /></element>
|
||||
<element ref="disk_white"><bounds x="89.7" y="47.7" width="6" height="6" /></element>
|
||||
<element ref="disk_white"><bounds x="89.7" y="56.5" width="6" height="6" /></element>
|
||||
<element ref="disk_white"><bounds x="89.7" y="65.3" width="6" height="6" /></element>
|
||||
|
||||
<element ref="text_re"><bounds x="90.2" y="5.2" width="5" height="3" /></element>
|
||||
<element ref="text_cl"><bounds x="90.2" y="14" width="5" height="3" /></element>
|
||||
<element ref="text_pb"><bounds x="90.2" y="22.8" width="5" height="3" /></element>
|
||||
<element ref="text_pv"><bounds x="90.2" y="31.6" width="5" height="3" /></element>
|
||||
<element ref="text_lv"><bounds x="90.2" y="40.4" width="5" height="3" /></element>
|
||||
<element ref="speaker"><bounds x="91.0" y="49.0" width="3.4" height="3.4" /></element>
|
||||
<element ref="text_dm"><bounds x="90.2" y="58" width="5" height="3" /></element>
|
||||
<element ref="text_rv"><bounds x="90.2" y="66.8" width="5" height="3" /></element>
|
||||
|
||||
<repeat count="6">
|
||||
<param name="y" start="22.25" increment="8.8" />
|
||||
<param name="y" start="23.65" increment="9.485" />
|
||||
<param name="i" start="1" increment="1" />
|
||||
<element ref="text_p~i~" blend="multiply"><bounds x="84.75" y="~y~" width="3.8" height="3.8" /></element>
|
||||
<element ref="text_p~i~" blend="multiply"><bounds x="84.75" yc="~y~" width="3.8" height="3.8" /></element>
|
||||
</repeat>
|
||||
|
||||
<element ref="hlb" inputtag="IN.0" inputmask="0x80"><bounds x="89" y="3" width="7.4" height="7.4" /><color alpha="0.3" /></element>
|
||||
<element ref="hlb" inputtag="IN.0" inputmask="0x40"><bounds x="89" y="11.8" width="7.4" height="7.4" /><color alpha="0.3" /></element>
|
||||
<element ref="hlb" inputtag="IN.0" inputmask="0x20"><bounds x="89" y="20.6" width="7.4" height="7.4" /><color alpha="0.3" /></element>
|
||||
<element ref="hlb" inputtag="IN.0" inputmask="0x10"><bounds x="89" y="29.4" width="7.4" height="7.4" /><color alpha="0.3" /></element>
|
||||
<element ref="hlb" inputtag="IN.0" inputmask="0x08"><bounds x="89" y="38.2" width="7.4" height="7.4" /><color alpha="0.3" /></element>
|
||||
<element ref="hlb" inputtag="IN.0" inputmask="0x04"><bounds x="89" y="47" width="7.4" height="7.4" /><color alpha="0.3" /></element>
|
||||
<element ref="hlb" inputtag="IN.0" inputmask="0x02"><bounds x="89" y="55.8" width="7.4" height="7.4" /><color alpha="0.3" /></element>
|
||||
<element ref="hlb" inputtag="IN.0" inputmask="0x01"><bounds x="89" y="64.6" width="7.4" height="7.4" /><color alpha="0.3" /></element>
|
||||
<repeat count="8">
|
||||
<param name="y" start="-0.5" increment="9.485" />
|
||||
<param name="i" start="1" increment="1" />
|
||||
<element ref="text_l~i~"><bounds xc="91.7" y="~y~" width="7.4" height="3.4" /></element>
|
||||
</repeat>
|
||||
|
||||
<element ref="speaker"><bounds xc="91.7" y="46.6" width="3.7" height="3.7" /></element>
|
||||
|
||||
<repeat count="8">
|
||||
<param name="y" start="4.8" increment="9.485" />
|
||||
<param name="mask" start="0x80" rshift="1" />
|
||||
<element ref="but" inputtag="IN.0" inputmask="~mask~"><bounds xc="91.7" yc="~y~" width="5.4" height="3.6" /></element>
|
||||
</repeat>
|
||||
|
||||
</view>
|
||||
</mamelayout>
|
||||
|
@ -18108,8 +18108,9 @@ fscc12 //
|
||||
fscc12a //
|
||||
|
||||
@source:fidelity/sc6.cpp
|
||||
fscc6 //
|
||||
gambit
|
||||
classic
|
||||
fscc6
|
||||
gambitv
|
||||
miniscc
|
||||
|
||||
@source:fidelity/sc8.cpp
|
||||
|
@ -22,9 +22,6 @@ TODO:
|
||||
- it does a cold boot at every reset, so nvram won't work properly unless MAME
|
||||
adds some kind of auxillary autosave state feature at power-off
|
||||
|
||||
BTANB:
|
||||
- it still has the same AT level bug as sapphire (see sapphire.cpp)
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
|
Loading…
Reference in New Issue
Block a user