mephisto_montec.cpp: split driver file into montec/smondial

This commit is contained in:
hap 2021-04-12 00:36:41 +02:00
parent b3e581c8f9
commit f498f61295
37 changed files with 1030 additions and 1151 deletions

View File

@ -2550,6 +2550,7 @@ files {
MAME_DIR .. "src/mame/drivers/mephisto_montec.cpp", MAME_DIR .. "src/mame/drivers/mephisto_montec.cpp",
MAME_DIR .. "src/mame/drivers/mephisto_polgar.cpp", MAME_DIR .. "src/mame/drivers/mephisto_polgar.cpp",
MAME_DIR .. "src/mame/drivers/mephisto_risc.cpp", MAME_DIR .. "src/mame/drivers/mephisto_risc.cpp",
MAME_DIR .. "src/mame/drivers/mephisto_smondial.cpp",
MAME_DIR .. "src/mame/machine/mmboard.cpp", MAME_DIR .. "src/mame/machine/mmboard.cpp",
MAME_DIR .. "src/mame/machine/mmboard.h", MAME_DIR .. "src/mame/machine/mmboard.h",
MAME_DIR .. "src/mame/video/mmdisplay1.cpp", MAME_DIR .. "src/mame/video/mmdisplay1.cpp",

View File

@ -161,6 +161,9 @@ B0000x-xxxxxx: see V7, -800000
******************************************************************************/ ******************************************************************************/
#include "emu.h" #include "emu.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "machine/gen_latch.h" #include "machine/gen_latch.h"
#include "machine/ram.h" #include "machine/ram.h"
@ -169,8 +172,6 @@ B0000x-xxxxxx: see V7, -800000
#include "machine/sensorboard.h" #include "machine/sensorboard.h"
#include "sound/dac.h" #include "sound/dac.h"
#include "video/pwm.h" #include "video/pwm.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
#include "softlist.h" #include "softlist.h"
#include "speaker.h" #include "speaker.h"

View File

@ -205,20 +205,14 @@ private:
void ttl_w(offs_t offset, u8 data); void ttl_w(offs_t offset, u8 data);
u8 ttl_r(offs_t offset); u8 ttl_r(offs_t offset);
u8 m_select; u8 m_select = 0;
u8 m_7seg_data; u8 m_7seg_data = 0;
u8 m_speech_data; u8 m_speech_data = 0;
u8 m_speech_bank; u8 m_speech_bank = 0;
}; };
void excel_state::machine_start() void excel_state::machine_start()
{ {
// zerofill
m_select = 0;
m_7seg_data = 0;
m_speech_data = 0;
m_speech_bank = 0;
// register for savestates // register for savestates
save_item(NAME(m_select)); save_item(NAME(m_select));
save_item(NAME(m_7seg_data)); save_item(NAME(m_7seg_data));

View File

@ -142,6 +142,7 @@ void phantom_state::init_fphantom()
} }
/****************************************************************************** /******************************************************************************
Motor Sim Motor Sim
******************************************************************************/ ******************************************************************************/
@ -206,6 +207,7 @@ void phantom_state::update_pieces_position(int state)
} }
/****************************************************************************** /******************************************************************************
I/O I/O
******************************************************************************/ ******************************************************************************/
@ -336,6 +338,7 @@ u8 phantom_state::vmotor_ff_clear_r()
} }
/****************************************************************************** /******************************************************************************
Address Maps Address Maps
******************************************************************************/ ******************************************************************************/

View File

@ -1,7 +1,7 @@
// license:BSD-3-Clause // license:BSD-3-Clause
// copyright-holders:Sandro Ronco, hap // copyright-holders:Sandro Ronco, hap
// thanks-to:yoyo_chessboard // thanks-to:yoyo_chessboard
/*************************************************************************** /******************************************************************************
Mephisto Academy Mephisto Academy
@ -18,7 +18,7 @@ Since the program is on an external module, it appears it was meant to be
a modular chesscomputer. However, no extra modules were sold separately. a modular chesscomputer. However, no extra modules were sold separately.
Module PCB is the same as Super Mondial II College, label HGS 10 116 05. Module PCB is the same as Super Mondial II College, label HGS 10 116 05.
***************************************************************************/ ******************************************************************************/
#include "emu.h" #include "emu.h"
@ -126,6 +126,7 @@ INPUT_PORTS_END
void academy_state::academy(machine_config &config) void academy_state::academy(machine_config &config)
{ {
/* basic machine hardware */
M65C02(config, m_maincpu, 4.9152_MHz_XTAL); M65C02(config, m_maincpu, 4.9152_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &academy_state::main_map); m_maincpu->set_addrmap(AS_PROGRAM, &academy_state::main_map);
@ -140,6 +141,7 @@ void academy_state::academy(machine_config &config)
MEPHISTO_SENSORS_BOARD(config, "board"); // internal MEPHISTO_SENSORS_BOARD(config, "board"); // internal
MEPHISTO_DISPLAY_MODULE2(config, "display"); // internal MEPHISTO_DISPLAY_MODULE2(config, "display"); // internal
/* video hardware */
PWM_DISPLAY(config, m_led_pwm).set_size(4, 4); PWM_DISPLAY(config, m_led_pwm).set_size(4, 4);
config.set_default_layout(layout_mephisto_academy); config.set_default_layout(layout_mephisto_academy);
} }
@ -176,7 +178,7 @@ ROM_END
Game Drivers Game Drivers
***************************************************************************/ ***************************************************************************/
/* YEAR, NAME, PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
CONS( 1989, academy, 0, 0, academy, academy, academy_state, empty_init, "Hegener + Glaser", "Mephisto Academy (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1989, academy, 0, 0, academy, academy, academy_state, empty_init, "Hegener + Glaser", "Mephisto Academy (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1989, academyg, academy, 0, academy, academy, academy_state, empty_init, "Hegener + Glaser", "Mephisto Academy (German, 06-03-89)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1989, academyg, academy, 0, academy, academy, academy_state, empty_init, "Hegener + Glaser", "Mephisto Academy (German, 06-03-89)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1989, academyga, academy, 0, academy, academy, academy_state, empty_init, "Hegener + Glaser", "Mephisto Academy (German, 04-10-88)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1989, academyga, academy, 0, academy, academy, academy_state, empty_init, "Hegener + Glaser", "Mephisto Academy (German, 04-10-88)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -253,7 +253,7 @@ ROM_END
Drivers Drivers
******************************************************************************/ ******************************************************************************/
/* YEAR, NAME, PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
CONS( 1985, amsterd, 0, 0, amsterdam, amsterdam, amsterdam_state, empty_init, "Hegener + Glaser", "Mephisto Amsterdam", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1985, amsterd, 0, 0, amsterdam, amsterdam, amsterdam_state, empty_init, "Hegener + Glaser", "Mephisto Amsterdam", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1986, dallas32, 0, 0, dallas32, amsterdam, amsterdam_state, empty_init, "Hegener + Glaser", "Mephisto Dallas 68020", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1986, dallas32, 0, 0, dallas32, amsterdam, amsterdam_state, empty_init, "Hegener + Glaser", "Mephisto Dallas 68020", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -111,7 +111,8 @@ u8 glasgow_state::keys_r()
data |= 1 << i; data |= 1 << i;
// reading keypad also clears irq // reading keypad also clears irq
m_maincpu->set_input_line(M68K_IRQ_5, CLEAR_LINE); if (!machine().side_effects_disabled())
m_maincpu->set_input_line(M68K_IRQ_5, CLEAR_LINE);
return ~data; return ~data;
} }
@ -239,7 +240,7 @@ ROM_END
Drivers Drivers
******************************************************************************/ ******************************************************************************/
/* YEAR, NAME, PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
CONS( 1984, glasgow, 0, 0, glasgow, glasgow, glasgow_state, empty_init, "Hegener + Glaser", "Mephisto III-S Glasgow", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1984, glasgow, 0, 0, glasgow, glasgow, glasgow_state, empty_init, "Hegener + Glaser", "Mephisto III-S Glasgow", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
// newer chesscomputers on 4-ROM hardware (see mephisto_amsterdam.cpp for parent sets) // newer chesscomputers on 4-ROM hardware (see mephisto_amsterdam.cpp for parent sets)

View File

@ -113,7 +113,7 @@ u8 milano_state::board_r()
u8 milano_state::keys_r(offs_t offset) u8 milano_state::keys_r(offs_t offset)
{ {
return (BIT(m_keys->read(), offset) << 7) | 0x7f; return ~(BIT(m_keys->read(), offset) << 7);
} }
@ -142,14 +142,14 @@ void milano_state::milano_mem(address_map &map)
static INPUT_PORTS_START( milano ) static INPUT_PORTS_START( milano )
PORT_START("KEY") PORT_START("KEY")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Training / Pawn") PORT_CODE(KEYCODE_T) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Training / Pawn") PORT_CODE(KEYCODE_T)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Info / Knight") PORT_CODE(KEYCODE_I) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Info / Knight") PORT_CODE(KEYCODE_I)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Memory / Bishop") PORT_CODE(KEYCODE_M) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Memory / Bishop") PORT_CODE(KEYCODE_M)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Position / Rook") PORT_CODE(KEYCODE_O) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Position / Rook") PORT_CODE(KEYCODE_O)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Level / Queen") PORT_CODE(KEYCODE_L) PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Level / Queen") PORT_CODE(KEYCODE_L)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Function / King") PORT_CODE(KEYCODE_F) PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Function / King") PORT_CODE(KEYCODE_F)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Enter / New Game") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Enter / New Game") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Clear / New Game") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // " PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Clear / New Game") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // "
INPUT_PORTS_END INPUT_PORTS_END

View File

@ -6,13 +6,14 @@ Mephisto 4 + 5 Chess Computer
2007 Dirk V. 2007 Dirk V.
TODO: TODO:
- rebel5 unknown read from 0x4002, looks like leftover bookrom check
- need to emulate TurboKit properly, also for mm5p (it's not as simple as a CPU - need to emulate TurboKit properly, also for mm5p (it's not as simple as a CPU
overclock plus ROM patch) overclock plus ROM patch)
=============================================================================== ===============================================================================
Hardware notes: Hardware notes:
- CPU: G65SC02P-4 or R65C02P3/R65C02P4 - CPU: R65C02P3/R65C02P4 or G65SC02P-4
- Clock: 4.9152 MHz - Clock: 4.9152 MHz
- NMI CLK: 600 Hz - NMI CLK: 600 Hz
- IRQ Line is set to VSS - IRQ Line is set to VSS
@ -85,7 +86,7 @@ MM VI (Saitek, 1994) is on different hardware, H8 CPU.
#include "bus/generic/slot.h" #include "bus/generic/slot.h"
#include "bus/generic/carts.h" #include "bus/generic/carts.h"
#include "cpu/m6502/m65sc02.h" #include "cpu/m6502/r65c02.h"
#include "machine/74259.h" #include "machine/74259.h"
#include "machine/mmboard.h" #include "machine/mmboard.h"
#include "sound/dac.h" #include "sound/dac.h"
@ -169,7 +170,7 @@ void mm2_state::lcd_irqack_w(u8 data)
{ {
m_display->data_w(data); m_display->data_w(data);
// writing to 0x2800 also clears irq // accessing 0x2800 also clears irq
m_maincpu->set_input_line(0, CLEAR_LINE); m_maincpu->set_input_line(0, CLEAR_LINE);
} }
@ -205,9 +206,9 @@ void mm2_state::mm2_mem(address_map &map)
void mm2_state::rebel5_mem(address_map &map) void mm2_state::rebel5_mem(address_map &map)
{ {
map(0x0000, 0x1fff).ram(); map(0x0000, 0x1fff).ram();
map(0x2000, 0x2007).w("outlatch", FUNC(hc259_device::write_d7)); map(0x2000, 0x2007).w("outlatch", FUNC(hc259_device::write_d7)).nopr();
map(0x3000, 0x4000).r("board", FUNC(mephisto_board_device::input_r));
map(0x3000, 0x3007).r(FUNC(mm2_state::keys_r)); map(0x3000, 0x3007).r(FUNC(mm2_state::keys_r));
map(0x4000, 0x4000).r("board", FUNC(mephisto_board_device::input_r));
map(0x5000, 0x5000).w(m_display, FUNC(mephisto_display1_device::data_w)); map(0x5000, 0x5000).w(m_display, FUNC(mephisto_display1_device::data_w));
map(0x6000, 0x6000).w("board", FUNC(mephisto_board_device::led_w)); map(0x6000, 0x6000).w("board", FUNC(mephisto_board_device::led_w));
map(0x7000, 0x7000).w("board", FUNC(mephisto_board_device::mux_w)); map(0x7000, 0x7000).w("board", FUNC(mephisto_board_device::mux_w));
@ -218,7 +219,7 @@ void mm2_state::mm5p_mem(address_map &map)
{ {
map(0x0000, 0x1fff).ram(); map(0x0000, 0x1fff).ram();
map(0x2000, 0x2000).w(m_display, FUNC(mephisto_display1_device::data_w)); map(0x2000, 0x2000).w(m_display, FUNC(mephisto_display1_device::data_w));
map(0x2400, 0x2407).w("board", FUNC(mephisto_board_device::led_w)).nopr(); map(0x2400, 0x2400).w("board", FUNC(mephisto_board_device::led_w));
map(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w)); map(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w));
map(0x2c00, 0x2c07).r(FUNC(mm2_state::keys_r)); map(0x2c00, 0x2c07).r(FUNC(mm2_state::keys_r));
map(0x3000, 0x3000).r("board", FUNC(mephisto_board_device::input_r)); map(0x3000, 0x3000).r("board", FUNC(mephisto_board_device::input_r));
@ -300,7 +301,7 @@ INPUT_PORTS_END
void mm2_state::rebel5(machine_config &config) void mm2_state::rebel5(machine_config &config)
{ {
/* basic machine hardware */ /* basic machine hardware */
M65SC02(config, m_maincpu, 9.8304_MHz_XTAL / 2); R65C02(config, m_maincpu, 9.8304_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &mm2_state::rebel5_mem); m_maincpu->set_addrmap(AS_PROGRAM, &mm2_state::rebel5_mem);
const attotime nmi_period = attotime::from_hz(9.8304_MHz_XTAL / 2 / 0x2000); // 600Hz const attotime nmi_period = attotime::from_hz(9.8304_MHz_XTAL / 2 / 0x2000); // 600Hz
@ -504,7 +505,7 @@ CONS( 1985, bup, 0, 0, bup, bup, mm2_state, empty_init, "He
CONS( 1985, bupa, bup, 0, bup, bup, mm2_state, empty_init, "Hegener + Glaser", u8"Mephisto Blitz- und Problemlösungs-Modul (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1985, bupa, bup, 0, bup, bup, mm2_state, empty_init, "Hegener + Glaser", u8"Mephisto Blitz- und Problemlösungs-Modul (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1986, rebel5, 0, 0, rebel5, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto Rebell 5,0 (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // aka MM III CONS( 1986, rebel5, 0, 0, rebel5, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto Rebell 5,0 (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // aka MM III
CONS( 1986, rebel5a, rebel5, 0, rebel5, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto Rebell 5,0 (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1986, rebel5a, rebel5, 0, rebel5, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto Rebell 5,0 (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // "
CONS( 1987, mm4, 0, 0, mm4, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM IV (v7.10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1987, mm4, 0, 0, mm4, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM IV (v7.10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1987, mm4a, mm4, 0, mm4, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM IV (v7.00)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1987, mm4a, mm4, 0, mm4, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM IV (v7.00)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -12,7 +12,6 @@ Hardware notes:
TODO: TODO:
- verify XTAL (or maybe RC or LC circuit), 2MHz is correct - verify XTAL (or maybe RC or LC circuit), 2MHz is correct
- unknown read from 0x2000
- dump/add MM 1000 module - dump/add MM 1000 module
******************************************************************************/ ******************************************************************************/
@ -61,6 +60,7 @@ private:
void mondial_mem(address_map &map); void mondial_mem(address_map &map);
void control_w(u8 data); void control_w(u8 data);
u8 irq_ack_r();
u8 input_r(offs_t offset); u8 input_r(offs_t offset);
u8 m_inp_mux = 0; u8 m_inp_mux = 0;
@ -77,6 +77,25 @@ void mondial_state::machine_start()
I/O I/O
******************************************************************************/ ******************************************************************************/
void mondial_state::control_w(u8 data)
{
// d0-d3: input mux, led select
// d4-d6: led data
m_inp_mux = data & 0xf;
m_led_pwm->matrix(1 << m_inp_mux, ~data >> 4 & 7);
// d7: enable beeper
m_beeper->set_state(BIT(data, 7));
}
u8 mondial_state::irq_ack_r()
{
if (!machine().side_effects_disabled())
m_maincpu->set_input_line(0, CLEAR_LINE);
return 0;
}
u8 mondial_state::input_r(offs_t offset) u8 mondial_state::input_r(offs_t offset)
{ {
u8 data = 0; u8 data = 0;
@ -92,17 +111,6 @@ u8 mondial_state::input_r(offs_t offset)
return ~(BIT(data, offset) << 7); return ~(BIT(data, offset) << 7);
} }
void mondial_state::control_w(u8 data)
{
// d0-d3: input mux, led select
// d4-d6: led data
m_inp_mux = data & 0xf;
m_led_pwm->matrix(1 << m_inp_mux, ~data >> 4 & 7);
// d7: enable beeper
m_beeper->set_state(BIT(data, 7));
}
/****************************************************************************** /******************************************************************************
@ -114,7 +122,7 @@ void mondial_state::mondial_mem(address_map &map)
map(0x0000, 0x07ff).ram(); map(0x0000, 0x07ff).ram();
map(0x1000, 0x1000).w(FUNC(mondial_state::control_w)); map(0x1000, 0x1000).w(FUNC(mondial_state::control_w));
map(0x1800, 0x1807).r(FUNC(mondial_state::input_r)); map(0x1800, 0x1807).r(FUNC(mondial_state::input_r));
map(0x2000, 0x2000).nopr(); // ? map(0x2000, 0x2000).r(FUNC(mondial_state::irq_ack_r));
map(0xc000, 0xffff).rom(); map(0xc000, 0xffff).rom();
} }
@ -126,24 +134,24 @@ void mondial_state::mondial_mem(address_map &map)
static INPUT_PORTS_START( mondial ) static INPUT_PORTS_START( mondial )
PORT_START("KEY.0") PORT_START("KEY.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Pawn / 1") PORT_CODE(KEYCODE_1) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Pawn / 1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Knight / 2") PORT_CODE(KEYCODE_2) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Knight / 2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Bishop / 3") PORT_CODE(KEYCODE_3) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Bishop / 3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Rook / 4") PORT_CODE(KEYCODE_4) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Rook / 4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Queen / 5") PORT_CODE(KEYCODE_5) PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Queen / 5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("King / 6") PORT_CODE(KEYCODE_6) PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("King / 6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Black / 7") PORT_CODE(KEYCODE_7) PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Black / 7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD)
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("White / 8") PORT_CODE(KEYCODE_8) PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("White / 8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD)
PORT_START("KEY.1") PORT_START("KEY.1")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PLAY") PORT_CODE(KEYCODE_Y) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PLAY") PORT_CODE(KEYCODE_Y)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("POS") PORT_CODE(KEYCODE_O) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("POS") PORT_CODE(KEYCODE_O)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I)
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_BACKSPACE) PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE)
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L) PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RES") PORT_CODE(KEYCODE_DEL) PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RES") PORT_CODE(KEYCODE_F1)
INPUT_PORTS_END INPUT_PORTS_END
@ -159,7 +167,7 @@ void mondial_state::mondial(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &mondial_state::mondial_mem); m_maincpu->set_addrmap(AS_PROGRAM, &mondial_state::mondial_mem);
const attotime irq_period = attotime::from_hz(2000000 / 0x1000); const attotime irq_period = attotime::from_hz(2000000 / 0x1000);
m_maincpu->set_periodic_int(FUNC(mondial_state::irq0_line_hold), irq_period); m_maincpu->set_periodic_int(FUNC(mondial_state::irq0_line_assert), irq_period);
SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS); SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS);
m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));

View File

@ -55,9 +55,9 @@ private:
void mondial2_mem(address_map &map); void mondial2_mem(address_map &map);
void update_leds(); void update_leds();
u8 input_r(offs_t offset);
void control_w(u8 data); void control_w(u8 data);
void board_w(u8 data); void board_w(u8 data);
u8 input_r(offs_t offset);
u8 m_keypad_mux = 0; u8 m_keypad_mux = 0;
u8 m_board_mux = 0; u8 m_board_mux = 0;
@ -83,23 +83,6 @@ void mondial2_state::update_leds()
m_led_pwm->matrix(m_board_mux, m_led_data); m_led_pwm->matrix(m_board_mux, m_led_data);
} }
u8 mondial2_state::input_r(offs_t offset)
{
u8 data = 0;
// read chessboard sensors
for (int i = 0; i < 8; i++)
if (BIT(m_board_mux, i))
data |= BIT(m_board->read_rank(i), offset);
// read keypad
for (int i = 0; i < 4; i++)
if (BIT(m_keypad_mux, i))
data |= BIT(m_keys[i]->read(), offset & 3);
return ~(data << 7);
}
void mondial2_state::control_w(u8 data) void mondial2_state::control_w(u8 data)
{ {
// d0-d3: keypad mux // d0-d3: keypad mux
@ -120,6 +103,23 @@ void mondial2_state::board_w(u8 data)
update_leds(); update_leds();
} }
u8 mondial2_state::input_r(offs_t offset)
{
u8 data = 0;
// read chessboard sensors
for (int i = 0; i < 8; i++)
if (BIT(m_board_mux, i))
data |= BIT(m_board->read_rank(i), offset);
// read keypad
for (int i = 0; i < 4; i++)
if (BIT(m_keypad_mux, i))
data |= BIT(m_keys[i]->read(), offset & 3);
return ~(data << 7);
}
/****************************************************************************** /******************************************************************************
@ -143,16 +143,16 @@ void mondial2_state::mondial2_mem(address_map &map)
static INPUT_PORTS_START( mondial2 ) static INPUT_PORTS_START( mondial2 )
PORT_START("KEY.0") PORT_START("KEY.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Pawn / 1") PORT_CODE(KEYCODE_1) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Pawn / 1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Knight / 2") PORT_CODE(KEYCODE_2) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Knight / 2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Bishop / 3") PORT_CODE(KEYCODE_3) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Bishop / 3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Rook / 4") PORT_CODE(KEYCODE_4) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Rook / 4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
PORT_START("KEY.1") PORT_START("KEY.1")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Queen / 5") PORT_CODE(KEYCODE_5) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Queen / 5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("King / 6") PORT_CODE(KEYCODE_6) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("King / 6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Black / 7") PORT_CODE(KEYCODE_7) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Black / 7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("White / 8") PORT_CODE(KEYCODE_8) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("White / 8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD)
PORT_START("KEY.2") PORT_START("KEY.2")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PLAY") PORT_CODE(KEYCODE_Y) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PLAY") PORT_CODE(KEYCODE_Y)
@ -161,10 +161,10 @@ static INPUT_PORTS_START( mondial2 )
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I)
PORT_START("KEY.3") PORT_START("KEY.3")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_BACKSPACE) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RES") PORT_CODE(KEYCODE_DEL) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RES") PORT_CODE(KEYCODE_F1)
INPUT_PORTS_END INPUT_PORTS_END

View File

@ -6,7 +6,7 @@
Mephisto Mondial 68000XL Mephisto Mondial 68000XL
The chess engine is actually the one from Mephisto Dallas. The chess engine is actually the one from Mephisto Dallas.
Hardware: Hardware notes:
- TS68000CP12 @ 12MHz - TS68000CP12 @ 12MHz
- 64KB ROM - 64KB ROM
- 16KB RAM - 16KB RAM
@ -38,7 +38,8 @@ public:
: driver_device(mconfig, type, tag) : driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu") , m_maincpu(*this, "maincpu")
, m_board(*this, "board") , m_board(*this, "board")
, m_display(*this, "display") , m_lcd_latch(*this, "lcd_latch")
, m_led_pwm(*this, "led_pwm")
, m_lcd(*this, "lcd") , m_lcd(*this, "lcd")
, m_inputs(*this, "IN.%u", 0) , m_inputs(*this, "IN.%u", 0)
, m_digits(*this, "digit%u", 0U) , m_digits(*this, "digit%u", 0U)
@ -51,15 +52,16 @@ protected:
void mondial68k_mem(address_map &map); void mondial68k_mem(address_map &map);
void lcd_s_w(u32 data); void update_leds();
void lcd_output_w(u32 data);
void input_mux_w(u8 data); void input_mux_w(u8 data);
void board_mux_w(u8 data); void board_mux_w(u8 data);
u8 inputs_r(); u8 inputs_r();
void update_display();
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<sensorboard_device> m_board; required_device<sensorboard_device> m_board;
required_device<pwm_display_device> m_display; required_device<hc259_device> m_lcd_latch;
required_device<pwm_display_device> m_led_pwm;
required_device<pcf2112_device> m_lcd; required_device<pcf2112_device> m_lcd;
required_ioport_array<4> m_inputs; required_ioport_array<4> m_inputs;
output_finder<4> m_digits; output_finder<4> m_digits;
@ -83,12 +85,12 @@ void mondial68k_state::machine_start()
I/O I/O
******************************************************************************/ ******************************************************************************/
void mondial68k_state::update_display() void mondial68k_state::update_leds()
{ {
m_display->matrix(m_input_mux >> 6, ~m_board_mux); m_led_pwm->matrix(m_input_mux >> 6, ~m_board_mux);
} }
void mondial68k_state::lcd_s_w(u32 data) void mondial68k_state::lcd_output_w(u32 data)
{ {
// output LCD digits (note: last digit DP segment is unused) // output LCD digits (note: last digit DP segment is unused)
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++)
@ -99,7 +101,7 @@ void mondial68k_state::board_mux_w(u8 data)
{ {
// d0-d7: chessboard mux, led data // d0-d7: chessboard mux, led data
m_board_mux = data; m_board_mux = data;
update_display(); update_leds();
} }
void mondial68k_state::input_mux_w(u8 data) void mondial68k_state::input_mux_w(u8 data)
@ -107,7 +109,7 @@ void mondial68k_state::input_mux_w(u8 data)
// d0-d3: button mux // d0-d3: button mux
// d6,d7: led select // d6,d7: led select
m_input_mux = data; m_input_mux = data;
update_display(); update_leds();
} }
u8 mondial68k_state::inputs_r() u8 mondial68k_state::inputs_r()
@ -137,7 +139,7 @@ void mondial68k_state::mondial68k_mem(address_map &map)
{ {
map(0x000000, 0x00ffff).rom(); map(0x000000, 0x00ffff).rom();
map(0x800000, 0x800000).r(FUNC(mondial68k_state::inputs_r)); map(0x800000, 0x800000).r(FUNC(mondial68k_state::inputs_r));
map(0x820000, 0x82000f).nopr().w("outlatch", FUNC(hc259_device::write_d0)).umask16(0xff00); map(0x820000, 0x82000f).nopr().w(m_lcd_latch, FUNC(hc259_device::write_d0)).umask16(0xff00);
map(0x840000, 0x840000).w(FUNC(mondial68k_state::input_mux_w)); map(0x840000, 0x840000).w(FUNC(mondial68k_state::input_mux_w));
map(0x860000, 0x860000).w(FUNC(mondial68k_state::board_mux_w)); map(0x860000, 0x860000).w(FUNC(mondial68k_state::board_mux_w));
map(0xc00000, 0xc03fff).ram(); map(0xc00000, 0xc03fff).ram();
@ -188,12 +190,12 @@ void mondial68k_state::mondial68k(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &mondial68k_state::mondial68k_mem); m_maincpu->set_addrmap(AS_PROGRAM, &mondial68k_state::mondial68k_mem);
m_maincpu->set_periodic_int(FUNC(mondial68k_state::irq5_line_hold), attotime::from_hz(128)); m_maincpu->set_periodic_int(FUNC(mondial68k_state::irq5_line_hold), attotime::from_hz(128));
hc259_device &outlatch(HC259(config, "outlatch")); HC259(config, m_lcd_latch);
outlatch.q_out_cb<0>().set(m_lcd, FUNC(pcf2112_device::clb_w)); m_lcd_latch->q_out_cb<0>().set(m_lcd, FUNC(pcf2112_device::clb_w));
outlatch.q_out_cb<1>().set(m_lcd, FUNC(pcf2112_device::data_w)); m_lcd_latch->q_out_cb<1>().set(m_lcd, FUNC(pcf2112_device::data_w));
outlatch.q_out_cb<2>().set(m_lcd, FUNC(pcf2112_device::dlen_w)); m_lcd_latch->q_out_cb<2>().set(m_lcd, FUNC(pcf2112_device::dlen_w));
outlatch.q_out_cb<6>().set_nop(); // another DAC input? m_lcd_latch->q_out_cb<6>().set_nop(); // another DAC input?
outlatch.q_out_cb<7>().set("dac", FUNC(dac_1bit_device::write)); m_lcd_latch->q_out_cb<7>().set("dac", FUNC(dac_1bit_device::write));
SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS); SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS);
m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));
@ -201,9 +203,9 @@ void mondial68k_state::mondial68k(machine_config &config)
/* video hardware */ /* video hardware */
PCF2112(config, m_lcd, 50); // frequency guessed PCF2112(config, m_lcd, 50); // frequency guessed
m_lcd->write_segs().set(FUNC(mondial68k_state::lcd_s_w)); m_lcd->write_segs().set(FUNC(mondial68k_state::lcd_output_w));
PWM_DISPLAY(config, m_display).set_size(2, 8); PWM_DISPLAY(config, m_led_pwm).set_size(2, 8);
config.set_default_layout(layout_mephisto_mondial68k); config.set_default_layout(layout_mephisto_mondial68k);
/* sound hardware */ /* sound hardware */
@ -231,5 +233,5 @@ ROM_END
Game Drivers Game Drivers
***************************************************************************/ ***************************************************************************/
/* YEAR, NAME, PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
CONS( 1988, mondl68k, 0, 0, mondial68k, mondial68k, mondial68k_state, empty_init, "Hegener + Glaser", "Mephisto Mondial 68000XL", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1988, mondl68k, 0, 0, mondial68k, mondial68k, mondial68k_state, empty_init, "Hegener + Glaser", "Mephisto Mondial 68000XL", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -1,435 +1,240 @@
// license:BSD-3-Clause // license:BSD-3-Clause
// copyright-holders:Sandro Ronco // copyright-holders:Sandro Ronco, hap
// thanks-to:yoyo_chessboard /******************************************************************************
/**************************************************************************************************
Mephisto Monte Carlo Mephisto Monte Carlo
Mephisto Mega IV Mephisto Monte Carlo IV
Mephisto Monte Carlo IV LE Mephisto Monte Carlo IV - Limited Edition
Mephisto Super Mondial
Mephisto Super Mondial II
smondialb notes: The chess engine is by Frans Morsch, but for the IV version it's by Ed Schroeder.
- holding CL+INFO+BOOK on boot load the test mode Limited Edition has a twice faster CPU.
TODO: Hardware notes:
- split driver into several files? - R65C02P4 @ 4MHz
- megaiv/smondial leds are tri-color - 8KB RAM(battery-backed), 32KB ROM
- why are megaiv/smondial2 beeps noisy? - expansion slot at underside (not used)
- what is montec 0x2000? (it can't be nmi ack) - 2*PCF2112, 2 7seg LCD screens
- add Monte Carlo IV (non-LE) - 8 tri-color leds (like academy, always 6 red and 2 green?)
- magnetic chessboard with 64 leds, piezo
**************************************************************************************************/ TODO:
- dump/add the standard Monte Carlo IV
******************************************************************************/
#include "emu.h" #include "emu.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
#include "cpu/m6502/m65c02.h" #include "cpu/m6502/m65c02.h"
#include "cpu/m6502/r65c02.h"
#include "machine/74259.h" #include "machine/74259.h"
#include "machine/nvram.h" #include "machine/nvram.h"
#include "machine/mmboard.h" #include "machine/mmboard.h"
#include "sound/dac.h" #include "sound/dac.h"
#include "video/pcf2100.h" #include "video/pcf2100.h"
#include "video/pwm.h"
#include "screen.h"
#include "speaker.h" #include "speaker.h"
#include "softlist.h"
// internal artwork
#include "mephisto_montec.lh" #include "mephisto_montec.lh"
#include "mephisto_megaiv.lh"
#include "mephisto_smondial.lh"
#include "mephisto_smondial2.lh"
class mephisto_montec_state : public driver_device namespace {
class montec_state : public driver_device
{ {
public: public:
mephisto_montec_state(const machine_config &mconfig, device_type type, const char *tag) montec_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag) : driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu") , m_maincpu(*this, "maincpu")
, m_board(*this, "board") , m_board(*this, "board")
, m_muxlatch(*this, "muxlatch") , m_lcd_latch(*this, "lcd_latch")
, m_led_pwm(*this, "led_pwm")
, m_lcd(*this, "lcd%u", 0) , m_lcd(*this, "lcd%u", 0)
, m_dac(*this, "dac") , m_dac(*this, "dac")
, m_keys(*this, "KEY.%u", 0) , m_keys(*this, "KEY.%u", 0)
, m_digits(*this, "digit%u", 0U) , m_digits(*this, "digit%u", 0U)
, m_low_leds(*this, "led%u", 0U)
, m_high_leds(*this, "led%u", 100U)
{ } { }
void smondial2(machine_config &config);
void montec(machine_config &config); void montec(machine_config &config);
void monteciv(machine_config &config); void montec4le(machine_config &config);
void megaiv(machine_config &config);
protected: protected:
uint8_t montec_input_r();
void montec_led_w(uint8_t data);
template<int N> void montec_lcd_s_w(uint32_t data);
uint8_t megaiv_input_r(offs_t offset);
void megaiv_led_w(uint8_t data);
void megaiv_mem(address_map &map);
void montec_mem(address_map &map);
void smondial2_mem(address_map &map);
virtual void machine_start() override; virtual void machine_start() override;
virtual void machine_reset() override;
private:
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<mephisto_board_device> m_board; required_device<mephisto_board_device> m_board;
required_device<hc259_device> m_muxlatch; required_device<hc259_device> m_lcd_latch;
required_device<pwm_display_device> m_led_pwm;
required_device_array<pcf2112_device, 2> m_lcd; required_device_array<pcf2112_device, 2> m_lcd;
required_device<dac_bit_interface> m_dac; required_device<dac_bit_interface> m_dac;
required_ioport_array<2> m_keys; required_ioport_array<2> m_keys;
output_finder<8> m_digits; output_finder<8> m_digits;
output_finder<16> m_low_leds, m_high_leds;
uint8_t m_leds_mux; void montec_mem(address_map &map);
template<int N> void lcd_output_w(u32 data);
void led_w(u8 data);
void irq_ack_w(u8 data) { irq_ack_r(); }
u8 irq_ack_r();
u8 input_r();
}; };
class mephisto_smondial_state : public mephisto_montec_state void montec_state::machine_start()
{
public:
mephisto_smondial_state(const machine_config &mconfig, device_type type, const char *tag)
: mephisto_montec_state(mconfig, type, tag)
, m_ledlatch(*this, "ledlatch")
, m_boardlatch(*this, "boardlatch")
{ }
void smondial(machine_config &config);
private:
template<int N> DECLARE_WRITE_LINE_MEMBER(led_mux_w);
DECLARE_WRITE_LINE_MEMBER(leds_a_w);
DECLARE_WRITE_LINE_MEMBER(leds_b_w);
DECLARE_WRITE_LINE_MEMBER(leds_c_w);
void smondial_mem(address_map &map);
required_device<hc259_device> m_ledlatch;
required_device<hc259_device> m_boardlatch;
};
void mephisto_montec_state::machine_start()
{ {
m_digits.resolve(); m_digits.resolve();
m_low_leds.resolve();
m_high_leds.resolve();
save_item(NAME(m_leds_mux));
} }
void mephisto_montec_state::machine_reset()
{
m_leds_mux = 0x00;
}
void mephisto_montec_state::montec_led_w(uint8_t data)
{ /******************************************************************************
for(int i=0; i<4; i++) I/O
for(int j=0; j<4; j++) ******************************************************************************/
if (BIT(data, i))
m_high_leds[(i << 2) | j] = BIT(~data, 4 + j);
}
template<int N> template<int N>
void mephisto_montec_state::montec_lcd_s_w(uint32_t data) void montec_state::lcd_output_w(u32 data)
{ {
for (int i=0; i<4; i++) // lcd segment outputs
for (int i = 0; i < 4; i++)
m_digits[i + N*4] = bitswap<8>(data >> (8 * i), 7,4,5,0,1,2,3,6); m_digits[i + N*4] = bitswap<8>(data >> (8 * i), 7,4,5,0,1,2,3,6);
} }
void montec_state::led_w(u8 data)
uint8_t mephisto_montec_state::montec_input_r()
{ {
if (!m_muxlatch->q0_r()) return m_keys[1]->read(); // d0-d3: keypad led select
else if (!m_muxlatch->q1_r()) return m_keys[0]->read(); // d4-d7: keypad led data
m_led_pwm->matrix(data & 0xf, ~data >> 4 & 0xf);
return m_board->input_r() ^ 0xff;
} }
void mephisto_montec_state::megaiv_led_w(uint8_t data) u8 montec_state::irq_ack_r()
{ {
if (m_leds_mux != m_board->mux_r()) if (!machine().side_effects_disabled())
{ m_maincpu->set_input_line(0, CLEAR_LINE);
m_leds_mux = m_board->mux_r();
for (int i=0; i<8; i++)
{
if (!BIT(m_leds_mux, i))
{
m_high_leds[i] = BIT(data, 0) | BIT(data, 1);
m_low_leds[0 + i] = BIT(data, 2) | BIT(data, 3);
m_low_leds[8 + i] = BIT(data, 4) | BIT(data, 5);
}
}
}
m_dac->write(BIT(data, 7)); return 0;
} }
uint8_t mephisto_montec_state::megaiv_input_r(offs_t offset) u8 montec_state::input_r()
{ {
if (!m_muxlatch->q0_r()) return BIT(m_keys[1]->read(), 0 + offset) << 7; u8 data = 0;
else if (!m_muxlatch->q1_r()) return BIT(m_keys[1]->read(), 4 + offset) << 7;
else if (!m_muxlatch->q2_r()) return BIT(m_keys[0]->read(), 0 + offset) << 7;
else if (!m_muxlatch->q3_r()) return BIT(m_keys[0]->read(), 4 + offset) << 7;
return BIT(m_board->input_r(), offset) << 7; // 74259 q0/q1 selects keypad
for (int i = 0; i < 2; i++)
if (!BIT(m_lcd_latch->output_state(), i))
data |= m_keys[i]->read();
return ~m_board->input_r() | data;
} }
void mephisto_montec_state::montec_mem(address_map &map)
/******************************************************************************
Address Maps
******************************************************************************/
void montec_state::montec_mem(address_map &map)
{ {
map(0x0000, 0x1fff).ram().share("nvram"); map(0x0000, 0x1fff).ram().share("nvram");
map(0x2000, 0x2000).nopr(); // ? map(0x2000, 0x2000).rw(FUNC(montec_state::irq_ack_r), FUNC(montec_state::irq_ack_w));
map(0x2400, 0x2400).r(FUNC(mephisto_montec_state::montec_input_r)); map(0x2400, 0x2400).r(FUNC(montec_state::input_r));
map(0x2800, 0x2800).w(m_board, FUNC(mephisto_board_device::mux_w)); map(0x2800, 0x2800).w(m_board, FUNC(mephisto_board_device::mux_w));
map(0x2c00, 0x2c00).w(m_board, FUNC(mephisto_board_device::led_w)); map(0x2c00, 0x2c00).w(m_board, FUNC(mephisto_board_device::led_w));
map(0x3000, 0x3007).w(m_muxlatch, FUNC(hc259_device::write_d7)).nopr(); map(0x3000, 0x3007).w(m_lcd_latch, FUNC(hc259_device::write_d7)).nopr();
map(0x3400, 0x3400).w(FUNC(mephisto_montec_state::montec_led_w)); map(0x3400, 0x3400).w(FUNC(montec_state::led_w));
map(0x8000, 0xffff).rom();
}
void mephisto_montec_state::megaiv_mem(address_map &map)
{
map(0x0000, 0x1fff).ram().share("nvram");
map(0x2400, 0x2400).w(FUNC(mephisto_montec_state::megaiv_led_w));
map(0x2800, 0x2800).w(m_board, FUNC(mephisto_board_device::mux_w));
map(0x2c00, 0x2c07).w(m_muxlatch, FUNC(hc259_device::write_d7)).nopr();
map(0x3000, 0x3007).r(FUNC(mephisto_montec_state::megaiv_input_r));
map(0x8000, 0xffff).rom(); map(0x8000, 0xffff).rom();
} }
void mephisto_montec_state::smondial2_mem(address_map &map)
{
megaiv_mem(map);
map(0x4000, 0x7fff).r("cartslot", FUNC(generic_slot_device::read_rom));
}
/******************************************************************************
template<int N> Input Ports
WRITE_LINE_MEMBER(mephisto_smondial_state::led_mux_w) ******************************************************************************/
{
uint8_t leds_mux = ~m_ledlatch->output_state();
if (leds_mux & 0x03) m_high_leds[N] = state;
if (leds_mux & 0x0c) m_low_leds[8 + N] = state;
if (leds_mux & 0x30) m_low_leds[0 + N] = state;
}
WRITE_LINE_MEMBER(mephisto_smondial_state::leds_a_w)
{
if (!m_ledlatch->q0_r() || !m_ledlatch->q1_r())
for (int i = 0; i < 8; i++)
m_high_leds[i] = BIT(m_boardlatch->output_state(), i);
}
WRITE_LINE_MEMBER(mephisto_smondial_state::leds_b_w)
{
if (!m_ledlatch->q2_r() || !m_ledlatch->q3_r())
for (int i = 0; i < 8; i++)
m_low_leds[8 + i] = BIT(m_boardlatch->output_state(), i);
}
WRITE_LINE_MEMBER(mephisto_smondial_state::leds_c_w)
{
if (!m_ledlatch->q4_r() || !m_ledlatch->q5_r())
for (int i = 0; i < 8; i++)
m_low_leds[0 + i] = BIT(m_boardlatch->output_state(), i);
}
void mephisto_smondial_state::smondial_mem(address_map &map)
{
map(0x0000, 0x1fff).ram().share("nvram");
map(0x4000, 0x4007).r(FUNC(mephisto_smondial_state::megaiv_input_r));
map(0x6400, 0x6407).w(m_ledlatch, FUNC(hc259_device::write_d7));
map(0x6800, 0x6807).w(m_boardlatch, FUNC(hc259_device::write_d7));
map(0x6c00, 0x6c07).w(m_muxlatch, FUNC(hc259_device::write_d7));
map(0x8000, 0xffff).rom();
}
static INPUT_PORTS_START( montec ) static INPUT_PORTS_START( montec )
PORT_START("KEY.0") PORT_START("KEY.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("1 Pawn") PORT_CODE(KEYCODE_1) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("BOOK / 9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_B)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("2 Knight") PORT_CODE(KEYCODE_2) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("POS / 0") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_O)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("3 Bishop") PORT_CODE(KEYCODE_3) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("4 Rook") PORT_CODE(KEYCODE_4) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I)
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("5 Queen") PORT_CODE(KEYCODE_5) PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE)
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("6 King") PORT_CODE(KEYCODE_6) PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("7 Black") PORT_CODE(KEYCODE_7) PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("8 White") PORT_CODE(KEYCODE_8) PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RES") PORT_CODE(KEYCODE_F1)
PORT_START("KEY.1") PORT_START("KEY.1")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("9 Book") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_B) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Pawn / 1") PORT_CODE(KEYCODE_1)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("0 Pos") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_O) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Knight / 2") PORT_CODE(KEYCODE_2)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Mem") PORT_CODE(KEYCODE_M) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Bishop / 3") PORT_CODE(KEYCODE_3)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Info") PORT_CODE(KEYCODE_I) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Rook / 4") PORT_CODE(KEYCODE_4)
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Clear") PORT_CODE(KEYCODE_BACKSPACE) PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Queen / 5") PORT_CODE(KEYCODE_5)
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Level") PORT_CODE(KEYCODE_L) PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("King / 6") PORT_CODE(KEYCODE_6)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Black / 7") PORT_CODE(KEYCODE_7)
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Reset") PORT_CODE(KEYCODE_DEL) PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("White / 8") PORT_CODE(KEYCODE_8)
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( megaiv )
PORT_START("KEY.0")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("3 Bishop") PORT_CODE(KEYCODE_3)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("7 Black") PORT_CODE(KEYCODE_7)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Mem") PORT_CODE(KEYCODE_M)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("4 Rook") PORT_CODE(KEYCODE_4)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("8 White") PORT_CODE(KEYCODE_8)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Info") PORT_CODE(KEYCODE_I)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Reset") PORT_CODE(KEYCODE_DEL)
PORT_START("KEY.1")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("1 Pawn") PORT_CODE(KEYCODE_1)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("5 Queen") PORT_CODE(KEYCODE_5)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("9 Book") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_B)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Clear") PORT_CODE(KEYCODE_BACKSPACE)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("2 Knight") PORT_CODE(KEYCODE_2)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("6 King") PORT_CODE(KEYCODE_6)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("0 Pos") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_O)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Level") PORT_CODE(KEYCODE_L)
INPUT_PORTS_END
static INPUT_PORTS_START( smondial2 ) /******************************************************************************
PORT_START("KEY.0") Machine Configs
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("3 Bishop") PORT_CODE(KEYCODE_3) ******************************************************************************/
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("7 Black") PORT_CODE(KEYCODE_7)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Pos") PORT_CODE(KEYCODE_O)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("4 Rook") PORT_CODE(KEYCODE_4)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("8 White") PORT_CODE(KEYCODE_8)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Mem") PORT_CODE(KEYCODE_M)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Reset") PORT_CODE(KEYCODE_DEL)
PORT_START("KEY.1") void montec_state::montec(machine_config &config)
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("1 Pawn") PORT_CODE(KEYCODE_1)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("5 Queen") PORT_CODE(KEYCODE_5)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("9 Help") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_H)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Level") PORT_CODE(KEYCODE_L)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("2 Knight") PORT_CODE(KEYCODE_2)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("6 King") PORT_CODE(KEYCODE_6)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("0 Info") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_I)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Clear") PORT_CODE(KEYCODE_BACKSPACE)
INPUT_PORTS_END
void mephisto_montec_state::montec(machine_config &config)
{ {
M65C02(config, m_maincpu, XTAL(8'000'000) / 2); // R65C02P4 /* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_montec_state::montec_mem); R65C02(config, m_maincpu, 8_MHz_XTAL / 2); // R65C02P4
m_maincpu->set_periodic_int(FUNC(mephisto_montec_state::nmi_line_pulse), attotime::from_hz(XTAL(8'000'000) / (1 << 14))); m_maincpu->set_addrmap(AS_PROGRAM, &montec_state::montec_mem);
const attotime irq_period = attotime::from_hz(8_MHz_XTAL / 2 / 0x2000);
m_maincpu->set_periodic_int(FUNC(montec_state::irq0_line_assert), irq_period);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
HC259(config, m_muxlatch); HC259(config, m_lcd_latch);
m_muxlatch->q_out_cb<2>().set(m_dac, FUNC(dac_bit_interface::write)); m_lcd_latch->q_out_cb<2>().set(m_dac, FUNC(dac_bit_interface::write)).invert();
m_muxlatch->q_out_cb<4>().set(m_lcd[0], FUNC(pcf2112_device::data_w)); m_lcd_latch->q_out_cb<4>().set(m_lcd[0], FUNC(pcf2112_device::data_w));
m_muxlatch->q_out_cb<4>().append(m_lcd[1], FUNC(pcf2112_device::data_w)); m_lcd_latch->q_out_cb<4>().append(m_lcd[1], FUNC(pcf2112_device::data_w));
m_muxlatch->q_out_cb<5>().set(m_lcd[1], FUNC(pcf2112_device::dlen_w)); m_lcd_latch->q_out_cb<5>().set(m_lcd[1], FUNC(pcf2112_device::dlen_w));
m_muxlatch->q_out_cb<6>().set(m_lcd[0], FUNC(pcf2112_device::clb_w)); m_lcd_latch->q_out_cb<6>().set(m_lcd[0], FUNC(pcf2112_device::clb_w));
m_muxlatch->q_out_cb<6>().append(m_lcd[1], FUNC(pcf2112_device::clb_w)); m_lcd_latch->q_out_cb<6>().append(m_lcd[1], FUNC(pcf2112_device::clb_w));
m_muxlatch->q_out_cb<7>().set(m_lcd[0], FUNC(pcf2112_device::dlen_w)); m_lcd_latch->q_out_cb<7>().set(m_lcd[0], FUNC(pcf2112_device::dlen_w));
PCF2112(config, m_lcd[0], 50); // frequency guessed MEPHISTO_SENSORS_BOARD(config, m_board); // internal
m_lcd[0]->write_segs().set(FUNC(mephisto_montec_state::montec_lcd_s_w<0>));
PCF2112(config, m_lcd[1], 50); // "
m_lcd[1]->write_segs().set(FUNC(mephisto_montec_state::montec_lcd_s_w<1>));
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
MEPHISTO_SENSORS_BOARD(config, m_board);
m_board->set_delay(attotime::from_msec(300)); m_board->set_delay(attotime::from_msec(300));
/* video hardware */
PCF2112(config, m_lcd[0], 50); // frequency guessed
m_lcd[0]->write_segs().set(FUNC(montec_state::lcd_output_w<0>));
PCF2112(config, m_lcd[1], 50); // "
m_lcd[1]->write_segs().set(FUNC(montec_state::lcd_output_w<1>));
PWM_DISPLAY(config, m_led_pwm).set_size(4, 4);
config.set_default_layout(layout_mephisto_montec); config.set_default_layout(layout_mephisto_montec);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
} }
void mephisto_montec_state::monteciv(machine_config &config) void montec_state::montec4le(machine_config &config)
{ {
montec(config); montec(config);
m_maincpu->set_clock(XTAL(8'000'000));
/* basic machine hardware */
M65C02(config.replace(), m_maincpu, 8_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &montec_state::montec_mem);
const attotime irq_period = attotime::from_hz(8_MHz_XTAL / 0x4000);
m_maincpu->set_periodic_int(FUNC(montec_state::irq0_line_assert), irq_period);
m_board->set_delay(attotime::from_msec(150)); m_board->set_delay(attotime::from_msec(150));
} }
void mephisto_montec_state::megaiv(machine_config &config)
{
montec(config);
m_maincpu->set_clock(XTAL(4'915'200));
m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_montec_state::megaiv_mem);
m_maincpu->set_periodic_int(FUNC(mephisto_montec_state::nmi_line_pulse), attotime::from_hz(XTAL(4'915'200) / (1 << 13)));
m_muxlatch->q_out_cb<2>().set_nop();
MEPHISTO_BUTTONS_BOARD(config.replace(), m_board);
m_board->set_delay(attotime::from_msec(250));
m_board->set_disable_leds(true);
config.set_default_layout(layout_mephisto_megaiv);
}
void mephisto_smondial_state::smondial(machine_config &config)
{
megaiv(config);
m_maincpu->set_clock(XTAL(4'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_smondial_state::smondial_mem);
m_maincpu->set_periodic_int(FUNC(mephisto_montec_state::nmi_line_pulse), attotime::from_hz(XTAL(4'000'000) / (1 << 13)));
HC259(config, m_ledlatch);
m_ledlatch->q_out_cb<0>().set(FUNC(mephisto_smondial_state::leds_a_w));
m_ledlatch->q_out_cb<1>().set(FUNC(mephisto_smondial_state::leds_a_w));
m_ledlatch->q_out_cb<2>().set(FUNC(mephisto_smondial_state::leds_b_w));
m_ledlatch->q_out_cb<3>().set(FUNC(mephisto_smondial_state::leds_b_w));
m_ledlatch->q_out_cb<4>().set(FUNC(mephisto_smondial_state::leds_c_w));
m_ledlatch->q_out_cb<5>().set(FUNC(mephisto_smondial_state::leds_c_w));
m_ledlatch->q_out_cb<7>().set(m_dac, FUNC(dac_bit_interface::write));
HC259(config, m_boardlatch);
m_boardlatch->parallel_out_cb().set(m_board, FUNC(mephisto_board_device::mux_w)).invert();
m_boardlatch->q_out_cb<0>().set(FUNC(mephisto_smondial_state::led_mux_w<0>));
m_boardlatch->q_out_cb<1>().set(FUNC(mephisto_smondial_state::led_mux_w<1>));
m_boardlatch->q_out_cb<2>().set(FUNC(mephisto_smondial_state::led_mux_w<2>));
m_boardlatch->q_out_cb<3>().set(FUNC(mephisto_smondial_state::led_mux_w<3>));
m_boardlatch->q_out_cb<4>().set(FUNC(mephisto_smondial_state::led_mux_w<4>));
m_boardlatch->q_out_cb<5>().set(FUNC(mephisto_smondial_state::led_mux_w<5>));
m_boardlatch->q_out_cb<6>().set(FUNC(mephisto_smondial_state::led_mux_w<6>));
m_boardlatch->q_out_cb<7>().set(FUNC(mephisto_smondial_state::led_mux_w<7>));
config.set_default_layout(layout_mephisto_smondial);
}
void mephisto_montec_state::smondial2(machine_config &config)
{
megaiv(config);
m_maincpu->set_clock(XTAL(4'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_montec_state::smondial2_mem);
m_maincpu->set_periodic_int(FUNC(mephisto_montec_state::nmi_line_pulse), attotime::from_hz(XTAL(4'000'000) / (1 << 13)));
GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "smondial2_cart");
SOFTWARE_LIST(config, "cart_list").set_original("mephisto_smondial2");
config.set_default_layout(layout_mephisto_smondial2);
}
ROM_START( megaiv ) /******************************************************************************
ROM_REGION( 0x10000, "maincpu", 0 ) ROM Definitions
ROM_LOAD("megaiv.bin", 0x8000, 0x8000, CRC(dee355d2) SHA1(6bc79c0fb169020f017412f5f9696b9ecafbf99f) ) ******************************************************************************/
ROM_END
ROM_START( megaiva )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("mega_iv_17.03.88", 0x8000, 0x8000, CRC(85267e82) SHA1(654c9cf84bf2165fc94f8c4cf9c662786ef3283b) )
ROM_END
ROM_START( monteciv )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("mciv.bin", 0x8000, 0x8000, CRC(c4887694) SHA1(7f482d2a40fcb3125266e7a5407da315b4f9b49c) )
ROM_END
ROM_START( montec ) ROM_START( montec )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
@ -441,36 +246,22 @@ ROM_START( monteca )
ROM_LOAD("mc2_20.7.87", 0x8000, 0x8000, CRC(05524da9) SHA1(bee2ffe09a27095f733584e0fb1203b95c23e17e) ) ROM_LOAD("mc2_20.7.87", 0x8000, 0x8000, CRC(05524da9) SHA1(bee2ffe09a27095f733584e0fb1203b95c23e17e) )
ROM_END ROM_END
ROM_START( smondial )
ROM_START( montec4le )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("supermondial_a.bin", 0x8000, 0x8000, CRC(c1d7d0a5) SHA1(d7f0da6938458c06925f0936e63915319144d7e0) ) ROM_LOAD("mc4le.bin", 0x8000, 0x8000, CRC(c4887694) SHA1(7f482d2a40fcb3125266e7a5407da315b4f9b49c) )
ROM_END ROM_END
ROM_START( smondialab ) } // anonymous namespace
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("supermondial_ab.bin", 0x8000, 0x8000, CRC(a8781685) SHA1(fd4c97e13bd398dc4c85e3e1778bf7e59fccd71e) )
ROM_END
ROM_START( smondialb )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("supermondial_b.bin", 0x8000, 0x8000, CRC(6fb89e97) SHA1(b001e657b4fdc097322b28a25c31814f3da7b124) )
ROM_END
ROM_START( smondial2 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("supermondial_ii.bin", 0x8000, 0x8000, CRC(cd73df4a) SHA1(bad786074be613d7f48bf98b6fdf8178a4a85f5b) )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
CONS( 1988, megaiv, 0, 0, megaiv, megaiv, mephisto_montec_state, empty_init, "Hegener + Glaser", "Mephisto Mega IV (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1988, megaiva, megaiv, 0, megaiv, megaiv, mephisto_montec_state, empty_init, "Hegener + Glaser", "Mephisto Mega IV (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1986, smondial, 0, 0, smondial, megaiv, mephisto_smondial_state, empty_init, "Hegener + Glaser", "Mephisto Super Mondial (ver. A)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) /***************************************************************************
CONS( 1986, smondialab, smondial, 0, smondial, megaiv, mephisto_smondial_state, empty_init, "Hegener + Glaser", "Mephisto Super Mondial (ver. AB)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) Game Drivers
CONS( 1986, smondialb, smondial, 0, megaiv, megaiv, mephisto_montec_state, empty_init, "Hegener + Glaser", "Mephisto Super Mondial (ver. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) ***************************************************************************/
CONS( 1988, smondial2, 0, 0, smondial2, smondial2, mephisto_montec_state, empty_init, "Hegener + Glaser", "Mephisto Super Mondial II", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1987, montec, 0, 0, montec, montec, mephisto_montec_state, empty_init, "Hegener + Glaser", "Mephisto Monte Carlo (ver. MC3)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
CONS( 1987, monteca, montec, 0, montec, montec, mephisto_montec_state, empty_init, "Hegener + Glaser", "Mephisto Monte Carlo (ver. MC2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1987, montec, 0, 0, montec, montec, montec_state, empty_init, "Hegener + Glaser", "Mephisto Monte Carlo (ver. MC3)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1990, monteciv, 0, 0, monteciv, montec, mephisto_montec_state, empty_init, "Hegener + Glaser", "Mephisto Monte Carlo IV - Limited Edition", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1987, monteca, montec, 0, montec, montec, montec_state, empty_init, "Hegener + Glaser", "Mephisto Monte Carlo (ver. MC2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1990, montec4le, 0, 0, montec4le, montec, montec_state, empty_init, "Hegener + Glaser", "Mephisto Monte Carlo IV - Limited Edition", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -0,0 +1,407 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco, hap
// thanks-to:yoyo_chessboard
/******************************************************************************
Mephisto Super Mondial
Mephisto Super Mondial II
Mephisto Mega IV
Hardware notes:
- G65SC02P-4 @ 4MHz
- 8KB RAMbattery-backed), 32KB ROM
- expansion slot at underside (only used for smondial2)
- 2*PCF2112, 2 7seg LCD screens
- 8*8 chessboard buttons, 24 tri-color leds, piezo
Undocumented buttons:
- smondialb: holding CL+INFO on boot runs diagnostics
******************************************************************************/
#include "emu.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
#include "cpu/m6502/m65sc02.h"
#include "cpu/m6502/r65c02.h"
#include "machine/74259.h"
#include "machine/nvram.h"
#include "machine/sensorboard.h"
#include "sound/dac.h"
#include "video/pcf2100.h"
#include "video/pwm.h"
#include "softlist.h"
#include "speaker.h"
// internal artwork
#include "mephisto_smondial.lh"
#include "mephisto_smondial2.lh"
namespace {
// Super Mondial B / shared
class smondialb_state : public driver_device
{
public:
smondialb_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_lcd_latch(*this, "lcd_latch")
, m_led_pwm(*this, "led_pwm")
, m_lcd(*this, "lcd%u", 0)
, m_dac(*this, "dac")
, m_keys(*this, "KEY.%u", 0)
, m_digits(*this, "digit%u", 0U)
{ }
// machine configs
void smondial2(machine_config &config);
void mega4(machine_config &config);
void smondialb(machine_config &config);
protected:
virtual void machine_start() override;
// devices/pointers
required_device<cpu_device> m_maincpu;
required_device<sensorboard_device> m_board;
required_device<hc259_device> m_lcd_latch;
required_device<pwm_display_device> m_led_pwm;
required_device_array<pcf2112_device, 2> m_lcd;
required_device<dac_bit_interface> m_dac;
required_ioport_array<4> m_keys;
output_finder<8> m_digits;
// address maps
void smondialb_mem(address_map &map);
void smondial2_mem(address_map &map);
// I/O handlers
template<int N> void lcd_output_w(u32 data);
void update_leds();
u8 input_r(offs_t offset);
virtual void led_w(u8 data);
void board_w(u8 data);
INTERRUPT_GEN_MEMBER(nmi_handler);
u8 m_led_data = 0;
u8 m_board_mux = 0;
};
void smondialb_state::machine_start()
{
m_digits.resolve();
save_item(NAME(m_led_data));
save_item(NAME(m_board_mux));
}
// Super Mondial A
class smondiala_state : public smondialb_state
{
public:
smondiala_state(const machine_config &mconfig, device_type type, const char *tag) :
smondialb_state(mconfig, type, tag)
{ }
void smondiala(machine_config &config);
private:
void smondiala_mem(address_map &map);
// led row/column is switched around, do a trampoline here instead of making a different .lay file
virtual void led_w(u8 data) override { smondialb_state::led_w(bitswap<8>(data, 7,6,3,2,5,4,1,0)); }
void irq_ack_w(u8 data);
};
/******************************************************************************
I/O
******************************************************************************/
template<int N>
void smondialb_state::lcd_output_w(u32 data)
{
// lcd segment outputs
for (int i = 0; i < 4; i++)
m_digits[i + N*4] = bitswap<8>(data >> (8 * i), 7,4,5,0,1,2,3,6);
}
void smondialb_state::update_leds()
{
m_led_pwm->matrix(m_board_mux, m_led_data);
}
void smondialb_state::board_w(u8 data)
{
m_board_mux = ~data;
update_leds();
}
void smondialb_state::led_w(u8 data)
{
// d0-d5: led data
m_led_data = data;
update_leds();
// d6: nmi enable (does not apply to smondiala)
// d7: speaker out
m_dac->write(BIT(data, 7));
}
u8 smondialb_state::input_r(offs_t offset)
{
u8 data = 0;
// read keypad
for (int i = 0; i < 4; i++)
if (!BIT(m_lcd_latch->output_state(), i))
data |= BIT(m_keys[i]->read(), offset & 3);
// read chessboard sensors
for (int i = 0; i < 8; i++)
if (BIT(m_board_mux, i))
data |= BIT(m_board->read_rank(i), offset);
return ~(data << 7);
}
INTERRUPT_GEN_MEMBER(smondialb_state::nmi_handler)
{
if (m_led_data & 0x40)
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
void smondiala_state::irq_ack_w(u8 data)
{
m_maincpu->set_input_line(0, CLEAR_LINE);
}
/******************************************************************************
Address Maps
******************************************************************************/
void smondialb_state::smondialb_mem(address_map &map)
{
map(0x0000, 0x1fff).ram().share("nvram");
map(0x2400, 0x2400).w(FUNC(smondialb_state::led_w));
map(0x2800, 0x2800).w(FUNC(smondialb_state::board_w));
map(0x2c00, 0x2c07).w(m_lcd_latch, FUNC(hc259_device::write_d7)).nopr();
map(0x3000, 0x3007).r(FUNC(smondialb_state::input_r));
map(0x8000, 0xffff).rom();
}
void smondialb_state::smondial2_mem(address_map &map)
{
smondialb_mem(map);
map(0x4000, 0x7fff).r("cartslot", FUNC(generic_slot_device::read_rom));
}
void smondiala_state::smondiala_mem(address_map &map)
{
map(0x0000, 0x1fff).ram().share("nvram");
map(0x4000, 0x4007).r(FUNC(smondiala_state::input_r));
map(0x6000, 0x6000).w(FUNC(smondiala_state::irq_ack_w));
map(0x6400, 0x6407).w("led_latch", FUNC(hc259_device::write_d7)).nopr();
map(0x6800, 0x6807).w("board_latch", FUNC(hc259_device::write_d7)).nopr();
map(0x6c00, 0x6c07).w(m_lcd_latch, FUNC(hc259_device::write_d7)).nopr();
map(0x8000, 0xffff).rom();
}
/******************************************************************************
Input Ports
******************************************************************************/
static INPUT_PORTS_START( smondial )
PORT_START("KEY.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Pawn / 1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Queen / 5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("BOOK / 9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_B)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE)
PORT_START("KEY.1")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Knight / 2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("King / 6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("POS / 0") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_O)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L)
PORT_START("KEY.2")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Bishop / 3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Black / 7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
PORT_START("KEY.3")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Rook / 4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("White / 8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RES") PORT_CODE(KEYCODE_F1)
INPUT_PORTS_END
static INPUT_PORTS_START( smondial2 )
PORT_INCLUDE( smondial )
PORT_MODIFY("KEY.0")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("HELP / 9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_H)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L)
PORT_MODIFY("KEY.1")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("INFO / 0") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_I)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE)
PORT_MODIFY("KEY.2")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("POS") PORT_CODE(KEYCODE_O)
PORT_MODIFY("KEY.3")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M)
INPUT_PORTS_END
/******************************************************************************
Machine Configs
******************************************************************************/
void smondialb_state::smondialb(machine_config &config)
{
/* basic machine hardware */
M65SC02(config, m_maincpu, 4_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &smondialb_state::smondialb_mem);
const attotime nmi_period = attotime::from_hz(4_MHz_XTAL / 0x2000);
m_maincpu->set_periodic_int(FUNC(smondialb_state::nmi_handler), nmi_period);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
HC259(config, m_lcd_latch);
m_lcd_latch->q_out_cb<4>().set(m_lcd[0], FUNC(pcf2112_device::data_w));
m_lcd_latch->q_out_cb<4>().append(m_lcd[1], FUNC(pcf2112_device::data_w));
m_lcd_latch->q_out_cb<5>().set(m_lcd[1], FUNC(pcf2112_device::dlen_w));
m_lcd_latch->q_out_cb<6>().set(m_lcd[0], FUNC(pcf2112_device::clb_w));
m_lcd_latch->q_out_cb<6>().append(m_lcd[1], FUNC(pcf2112_device::clb_w));
m_lcd_latch->q_out_cb<7>().set(m_lcd[0], FUNC(pcf2112_device::dlen_w));
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(250));
/* video hardware */
PCF2112(config, m_lcd[0], 50); // frequency guessed
m_lcd[0]->write_segs().set(FUNC(smondialb_state::lcd_output_w<0>));
PCF2112(config, m_lcd[1], 50); // "
m_lcd[1]->write_segs().set(FUNC(smondialb_state::lcd_output_w<1>));
PWM_DISPLAY(config, m_led_pwm).set_size(8, 6);
config.set_default_layout(layout_mephisto_smondial);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
}
void smondiala_state::smondiala(machine_config &config)
{
smondialb(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &smondiala_state::smondiala_mem);
const attotime irq_period = attotime::from_hz(4_MHz_XTAL / 0x2000);
m_maincpu->set_periodic_int(FUNC(smondiala_state::irq0_line_assert), irq_period);
HC259(config, "led_latch").parallel_out_cb().set(FUNC(smondiala_state::led_w)).invert();
HC259(config, "board_latch").parallel_out_cb().set(FUNC(smondiala_state::board_w)).invert();
}
void smondialb_state::smondial2(machine_config &config)
{
smondialb(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &smondialb_state::smondial2_mem);
GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "smondial2_cart");
SOFTWARE_LIST(config, "cart_list").set_original("mephisto_smondial2");
config.set_default_layout(layout_mephisto_smondial2);
}
void smondialb_state::mega4(machine_config &config)
{
smondialb(config);
/* basic machine hardware */
R65C02(config.replace(), m_maincpu, 4.9152_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &smondialb_state::smondialb_mem);
const attotime nmi_period = attotime::from_hz(4.9152_MHz_XTAL / 0x2000);
m_maincpu->set_periodic_int(FUNC(smondialb_state::nmi_handler), nmi_period);
}
/******************************************************************************
ROM Definitions
******************************************************************************/
ROM_START( smondial )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("supermondial_a.bin", 0x8000, 0x8000, CRC(c1d7d0a5) SHA1(d7f0da6938458c06925f0936e63915319144d7e0) )
ROM_END
ROM_START( smondialab )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("supermondial_ab.bin", 0x8000, 0x8000, CRC(a8781685) SHA1(fd4c97e13bd398dc4c85e3e1778bf7e59fccd71e) )
ROM_END
ROM_START( smondialb )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("supermondial_b.bin", 0x8000, 0x8000, CRC(6fb89e97) SHA1(b001e657b4fdc097322b28a25c31814f3da7b124) )
ROM_END
ROM_START( smondial2 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("supermondial_ii.bin", 0x8000, 0x8000, CRC(cd73df4a) SHA1(bad786074be613d7f48bf98b6fdf8178a4a85f5b) )
ROM_END
ROM_START( mega4 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("mega_iv.bin", 0x8000, 0x8000, CRC(dee355d2) SHA1(6bc79c0fb169020f017412f5f9696b9ecafbf99f) )
ROM_END
ROM_START( mega4a )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("mega_iv_17.03.88", 0x8000, 0x8000, CRC(85267e82) SHA1(654c9cf84bf2165fc94f8c4cf9c662786ef3283b) )
ROM_END
} // anonymous namespace
/***************************************************************************
Game Drivers
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
CONS( 1986, smondial, 0, 0, smondiala, smondial, smondiala_state, empty_init, "Hegener + Glaser", "Mephisto Super Mondial (ver. A)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1986, smondialab, smondial, 0, smondiala, smondial, smondiala_state, empty_init, "Hegener + Glaser", "Mephisto Super Mondial (ver. AB)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1986, smondialb, smondial, 0, smondialb, smondial, smondialb_state, empty_init, "Hegener + Glaser", "Mephisto Super Mondial (ver. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1988, smondial2, 0, 0, smondial2, smondial2, smondialb_state, empty_init, "Hegener + Glaser", "Mephisto Super Mondial II", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1988, mega4, 0, 0, mega4, smondial, smondialb_state, empty_init, "Hegener + Glaser", "Mephisto Mega IV (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1988, mega4a, mega4, 0, mega4, smondial, smondialb_state, empty_init, "Hegener + Glaser", "Mephisto Mega IV (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -20,10 +20,10 @@ license:CC0
<element name="led" defstate="0"> <element name="led" defstate="0">
<disk state="0"> <disk state="0">
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.2" green="0" blue="0" />
</disk> </disk>
<disk state="1"> <disk state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</disk> </disk>
</element> </element>
<element name="hlbr" defstate="0"> <element name="hlbr" defstate="0">

View File

@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</disk> </disk>
<disk state="1"> <disk state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</disk> </disk>
</element> </element>

View File

@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</disk> </disk>
<disk state="1"> <disk state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</disk> </disk>
</element> </element>

View File

@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</disk> </disk>
<disk state="1"> <disk state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</disk> </disk>
</element> </element>
<element name="hlb" defstate="0"> <element name="hlb" defstate="0">

View File

@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</disk> </disk>
<disk state="1"> <disk state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</disk> </disk>
</element> </element>
<element name="hlb" defstate="0"> <element name="hlb" defstate="0">

View File

@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</disk> </disk>
<disk state="1"> <disk state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</disk> </disk>
</element> </element>
<element name="hlb" defstate="0"> <element name="hlb" defstate="0">

View File

@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</disk> </disk>
<disk state="1"> <disk state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</disk> </disk>
</element> </element>

View File

@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</disk> </disk>
<disk state="1"> <disk state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</disk> </disk>
</element> </element>
<element name="hlb" defstate="0"> <element name="hlb" defstate="0">

View File

@ -1,497 +0,0 @@
<?xml version="1.0"?>
<!--
license:CC0
-->
<mamelayout version="2">
<!-- define elements -->
<element name="digit" defstate="0">
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element>
<element name="led" defstate="0">
<rect state="0">
<color red="0.20" green="0.0" blue="0.0" />
</rect>
<rect state="1">
<color red="0.95" green="0.0" blue="0.0" />
</rect>
</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="led7seg_background"><rect><color red="0.54" green="0.57" blue="0.58" /> </rect></element>
<element name="background"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect></element>
<element name="black"> <rect><color red="0" green="0" blue="0" /> </rect></element>
<element name="red"> <rect><color red="0.8" green="0.2" blue="0.2" /> </rect></element>
<element name="text_1"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="1"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_2"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="2"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_3"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="3"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_4"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="4"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_5"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="5"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_6"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="6"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_7"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="7"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_8"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="8"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_a"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="A"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_b"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="B"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_c"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="C"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_d"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="D"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_e"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="E"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_f"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="F"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_g"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="G"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_h"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="H"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_book"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="BOOK"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_pos"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="POS"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_mem"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="MEM"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_info"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="INFO"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_err"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="ERR"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_lev"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="LEV"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_black"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="&#x25a0;"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_white"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="&#x25a1;"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_b1"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="[P] 1"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_b2"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="[N] 2"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_b3"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="[B] 3"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_b4"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="[R] 4"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_b5"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="[Q] 5"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_b6"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="[K] 6"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_b7"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="&#x25a0; 7 &#x25c4;"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_b8"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="&#x25a1; 8 &#x25ba;"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_book9"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="BOOK 9"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_pos0"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="POS 0"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_cl"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="CL"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_ent"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="ENT"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_res"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="RES"> <color red="0" green="0" blue="0" /></text> </element>
<element name="text_lcd"> <rect><color red="0.9" green="0.9" blue="0.9" /></rect> <text string="MULTI INFO LCD"> <color red="0" green="0" blue="0" /></text> </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>
<!-- sb board -->
<element name="cwhite"><rect><color red="0.9" green="0.9" blue="0.9" /></rect></element>
<element name="cblack"><rect><color red="0.4" green="0.4" blue="0.4" /></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>
<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:board:RANK.~i~" inputmask="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board: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">
<rect><color red="0.9" green="0.9" blue="0.9" /></rect>
<text string="RESET"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uib3">
<rect><color red="0.9" green="0.9" blue="0.9" /></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.9" green="0.9" blue="0.9" /></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.9" green="0.9" blue="0.9" /></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.9" green="0.9" blue="0.9" /></rect>
<text string=" &lt; "><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uiu2c">
<rect><color red="0.9" green="0.9" blue="0.9" /></rect>
<text string=" &gt;"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uiu2d">
<rect><color red="0.9" green="0.9" blue="0.9" /></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" />
<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: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: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:board:SPAWN" inputmask="0x0001"><bounds x="1" y="23" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0002"><bounds x="1" y="27" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0004"><bounds x="1" y="31" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0008"><bounds x="5" y="23" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0010"><bounds x="5" y="27" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0020"><bounds x="5" y="31" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0040"><bounds x="1" y="36" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0080"><bounds x="1" y="40" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0100"><bounds x="1" y="44" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0200"><bounds x="5" y="36" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0400"><bounds x="5" y="40" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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: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: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: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: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: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>
<group name="panel">
<bounds left="0" right="79" top="0" bottom="13" />
<element ref="background"><bounds x="0" y="0" width="79" height="13" /></element>
<element ref="black"> <bounds x="0" y="1.5" width="10" height="10.5" /> </element>
<element ref="text_lcd"> <bounds x="0.5" y="0" width="10" height="1.5" /> </element>
<element ref="led7seg_background"> <bounds x="0.5" y="2" width="9" height="4" /> </element>
<element name="digit0" ref="digit"> <bounds x="1" y="2.5" width="2" height="3" /> </element>
<element name="digit1" ref="digit"> <bounds x="3" y="2.5" width="2" height="3" /> </element>
<element name="digit2" ref="digit"> <bounds x="5" y="2.5" width="2" height="3" /> </element>
<element name="digit3" ref="digit"> <bounds x="7" y="2.5" width="2" height="3" /> </element>
<element ref="led7seg_background"> <bounds x="0.5" y="7.5" width="9" height="4" /> </element>
<element name="digit4" ref="digit"> <bounds x="1" y="8" width="2" height="3" /> </element>
<element name="digit5" ref="digit"> <bounds x="3" y="8" width="2" height="3" /> </element>
<element name="digit6" ref="digit"> <bounds x="5" y="8" width="2" height="3" /> </element>
<element name="digit7" ref="digit"> <bounds x="7" y="8" width="2" height="3" /> </element>
<element name="led100" ref="led"> <bounds x="13.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led101" ref="led"> <bounds x="21.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led102" ref="led"> <bounds x="30.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led103" ref="led"> <bounds x="38.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led104" ref="led"> <bounds x="47.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led105" ref="led"> <bounds x="55.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led106" ref="led"> <bounds x="64.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led107" ref="led"> <bounds x="72.5" y="0.4" width="1.3" height="0.8" /> </element>
<element ref="black"> <bounds x="13" y="2" width="6" height="4" /> </element>
<element ref="black"> <bounds x="21.5" y="2" width="6" height="4" /> </element>
<element ref="black"> <bounds x="30" y="2" width="6" height="4" /> </element>
<element ref="black"> <bounds x="38.5" y="2" width="6" height="4" /> </element>
<element ref="black"> <bounds x="47" y="2" width="6" height="4" /> </element>
<element ref="black"> <bounds x="55.5" y="2" width="6" height="4" /> </element>
<element ref="black"> <bounds x="64" y="2" width="6" height="4" /> </element>
<element ref="black"> <bounds x="72.5" y="2" width="6" height="4" /> </element>
<element ref="black"> <bounds x="13" y="7.5" width="6" height="4" /> </element>
<element ref="black"> <bounds x="21.5" y="7.5" width="6" height="4" /> </element>
<element ref="black"> <bounds x="30" y="7.5" width="6" height="4" /> </element>
<element ref="black"> <bounds x="38.5" y="7.5" width="6" height="4" /> </element>
<element ref="black"> <bounds x="47" y="7.5" width="6" height="4" /> </element>
<element ref="black"> <bounds x="55.5" y="7.5" width="6" height="4" /> </element>
<element ref="red"> <bounds x="64" y="7.5" width="6" height="4" /> </element>
<element ref="red"> <bounds x="72.5" y="7.5" width="6" height="4" /> </element>
<element ref="text_book"> <bounds x="15" y="0" width="4" height="1.5" /> </element>
<element ref="text_pos"> <bounds x="23.5" y="0" width="3" height="1.5" /> </element>
<element ref="text_mem"> <bounds x="32" y="0" width="3" height="1.5" /> </element>
<element ref="text_info"> <bounds x="40.5" y="0" width="4" height="1.5" /> </element>
<element ref="text_err"> <bounds x="49" y="0" width="3" height="1.5" /> </element>
<element ref="text_lev"> <bounds x="57.5" y="0" width="3" height="1.5" /> </element>
<element ref="text_black"> <bounds x="66" y="0" width="1" height="1.5" /> </element>
<element ref="text_white"> <bounds x="74.5" y="0" width="1" height="1.5" /> </element>
<element ref="text_b1"> <bounds x="13.5" y="2.5" width="5" height="1.5" /> </element>
<element ref="text_b2"> <bounds x="22" y="2.5" width="5" height="1.5" /> </element>
<element ref="text_b3"> <bounds x="30.5" y="2.5" width="5" height="1.5" /> </element>
<element ref="text_b4"> <bounds x="39" y="2.5" width="5" height="1.5" /> </element>
<element ref="text_b5"> <bounds x="47.5" y="2.5" width="5" height="1.5" /> </element>
<element ref="text_b6"> <bounds x="56" y="2.5" width="5" height="1.5" /> </element>
<element ref="text_b7"> <bounds x="64.5" y="2.5" width="5" height="1.5" /> </element>
<element ref="text_b8"> <bounds x="73" y="2.5" width="5" height="1.5" /> </element>
<element ref="text_book9"> <bounds x="13.5" y="8" width="5" height="1.5" /> </element>
<element ref="text_pos0"> <bounds x="22" y="8" width="5" height="1.5" /> </element>
<element ref="text_mem"> <bounds x="30.5" y="8" width="5" height="1.5" /> </element>
<element ref="text_info"> <bounds x="39" y="8" width="5" height="1.5" /> </element>
<element ref="text_cl"> <bounds x="47.5" y="8" width="5" height="1.5" /> </element>
<element ref="text_lev"> <bounds x="56" y="8" width="5" height="1.5" /> </element>
<element ref="text_ent"> <bounds x="64.5" y="8" width="5" height="1.5" /> </element>
<element ref="text_res"> <bounds x="73" y="8" width="5" height="1.5" /> </element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x01"> <bounds x="13" y="2" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x10"> <bounds x="21.5" y="2" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x01"> <bounds x="30" y="2" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x10"> <bounds x="38.5" y="2" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x02"> <bounds x="47" y="2" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x20"> <bounds x="55.5" y="2" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x02"> <bounds x="64" y="2" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x20"> <bounds x="72.5" y="2" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x04"> <bounds x="13" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x40"> <bounds x="21.5" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x04"> <bounds x="30" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x40"> <bounds x="38.5" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x08"> <bounds x="47" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x80"> <bounds x="55.5" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x08"> <bounds x="64" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x80"> <bounds x="72.5" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element>
</group>
<!-- build screen -->
<view name="Internal Layout">
<bounds left="0" right="103" top="-2" bottom="102" />
<element ref="background"><bounds x="13" y="-2" width="90" height="104" /></element>
<!-- chessboard coords -->
<element ref="text_8"><bounds x="13.6" y="7" width="2" height="2" /></element>
<element ref="text_7"><bounds x="13.6" y="17" width="2" height="2" /></element>
<element ref="text_6"><bounds x="13.6" y="27" width="2" height="2" /></element>
<element ref="text_5"><bounds x="13.6" y="37" width="2" height="2" /></element>
<element ref="text_4"><bounds x="13.6" y="47" width="2" height="2" /></element>
<element ref="text_3"><bounds x="13.6" y="57" width="2" height="2" /></element>
<element ref="text_2"><bounds x="13.6" y="67" width="2" height="2" /></element>
<element ref="text_1"><bounds x="13.6" y="77" width="2" height="2" /></element>
<element ref="text_a"><bounds x="22" y="85.7" width="2" height="2" /></element>
<element ref="text_b"><bounds x="32" y="85.7" width="2" height="2" /></element>
<element ref="text_c"><bounds x="42" y="85.7" width="2" height="2" /></element>
<element ref="text_d"><bounds x="52" y="85.7" width="2" height="2" /></element>
<element ref="text_e"><bounds x="62" y="85.7" width="2" height="2" /></element>
<element ref="text_f"><bounds x="72" y="85.7" width="2" height="2" /></element>
<element ref="text_g"><bounds x="82" y="85.7" width="2" height="2" /></element>
<element ref="text_h"><bounds x="92" y="85.7" width="2" height="2" /></element>
<!-- chessboard bezel -->
<element ref="black"><bounds x="17.5" y="2.5" width="81" height="81" /></element>
<!-- chessboard leds -->
<element name="led0" ref="led"><bounds x="15.7" y="77.25" width="0.8" height="1.5" /></element>
<element name="led1" ref="led"><bounds x="15.7" y="67.25" width="0.8" height="1.5" /></element>
<element name="led2" ref="led"><bounds x="15.7" y="57.25" width="0.8" height="1.5" /></element>
<element name="led3" ref="led"><bounds x="15.7" y="47.25" width="0.8" height="1.5" /></element>
<element name="led4" ref="led"><bounds x="15.7" y="37.25" width="0.8" height="1.5" /></element>
<element name="led5" ref="led"><bounds x="15.7" y="27.25" width="0.8" height="1.5" /></element>
<element name="led6" ref="led"><bounds x="15.7" y="17.25" width="0.8" height="1.5" /></element>
<element name="led7" ref="led"><bounds x="15.7" y="7.25" width="0.8" height="1.5" /></element>
<element name="led8" ref="led"><bounds x="22.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="led9" ref="led"><bounds x="32.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="led10" ref="led"><bounds x="42.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="led11" ref="led"><bounds x="52.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="led12" ref="led"><bounds x="62.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="led13" ref="led"><bounds x="72.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="led14" ref="led"><bounds x="82.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="led15" ref="led"><bounds x="92.25" y="84.5" width="1.5" height="0.8" /></element>
<!-- LCD panel -->
<group ref="panel"><bounds x="18" y="89" width="79" height="13" /></group>
<group ref="sb_board"><bounds x="18" y="3" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="1.5" y="3" width="10" height="80" /></group>
</view>
</mamelayout>

View File

@ -14,7 +14,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</disk> </disk>
<disk state="1"> <disk state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</disk> </disk>
</element> </element>
<element name="ledr" defstate="0"> <element name="ledr" defstate="0">
@ -22,7 +22,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</rect> </rect>
<rect state="1"> <rect state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</rect> </rect>
</element> </element>
<element name="hlb" defstate="0"> <element name="hlb" defstate="0">

View File

@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</disk> </disk>
<disk state="1"> <disk state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</disk> </disk>
</element> </element>
<element name="hlb" defstate="0"> <element name="hlb" defstate="0">

View File

@ -14,7 +14,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</disk> </disk>
<disk state="1"> <disk state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</disk> </disk>
</element> </element>
<element name="ledr" defstate="0"> <element name="ledr" defstate="0">
@ -22,7 +22,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</rect> </rect>
<rect state="1"> <rect state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</rect> </rect>
</element> </element>
<element name="hlb" defstate="0"> <element name="hlb" defstate="0">

View File

@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</disk> </disk>
<disk state="1"> <disk state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</disk> </disk>
</element> </element>

View File

@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</rect> </rect>
<rect state="1"> <rect state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</rect> </rect>
</element> </element>
<element name="hlb" defstate="0"> <element name="hlb" defstate="0">

View File

@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</rect> </rect>
<rect state="1"> <rect state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</rect> </rect>
</element> </element>
<element name="hlb" defstate="0"> <element name="hlb" defstate="0">

View File

@ -15,7 +15,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</rect> </rect>
<rect state="1"> <rect state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</rect> </rect>
</element> </element>
<element name="hlb" defstate="0"> <element name="hlb" defstate="0">

View File

@ -10,12 +10,24 @@ license:CC0
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg> <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element> </element>
<element name="ledo">
<disk><color red="0.1" green="0.1" blue="0.1" /></disk>
</element>
<element name="ledr" 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="ledg" 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="led" defstate="0"> <element name="led" defstate="0">
<disk state="0"> <disk state="0">
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.2" green="0" blue="0" />
</disk> </disk>
<disk state="1"> <disk state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</disk> </disk>
</element> </element>
<element name="hlbr" defstate="0"> <element name="hlbr" defstate="0">
@ -400,14 +412,32 @@ license:CC0
<element name="digit6" ref="digit"> <bounds x="5" y="8" width="2" height="3" /> </element> <element name="digit6" ref="digit"> <bounds x="5" y="8" width="2" height="3" /> </element>
<element name="digit7" ref="digit"> <bounds x="7" y="8" width="2" height="3" /> </element> <element name="digit7" ref="digit"> <bounds x="7" y="8" width="2" height="3" /> </element>
<element name="led100" ref="led"> <bounds x="13.1" y="-0.4" width="1.3" height="1.3" /> </element> <element ref="ledo"><bounds x="13.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="led104" ref="led"> <bounds x="22.1" y="-0.4" width="1.3" height="1.3" /> </element> <element ref="ledo"><bounds x="22.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="led108" ref="led"> <bounds x="31.1" y="-0.4" width="1.3" height="1.3" /> </element> <element ref="ledo"><bounds x="31.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="led112" ref="led"> <bounds x="40.1" y="-0.4" width="1.3" height="1.3" /> </element> <element ref="ledo"><bounds x="40.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="led102" ref="led"> <bounds x="49.1" y="-0.4" width="1.3" height="1.3" /> </element> <element ref="ledo"><bounds x="49.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="led106" ref="led"> <bounds x="58.1" y="-0.4" width="1.3" height="1.3" /> </element> <element ref="ledo"><bounds x="58.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="led111" ref="led"> <bounds x="67.1" y="-0.4" width="1.3" height="1.3" /> </element> <element ref="ledo"><bounds x="67.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="led115" ref="led"> <bounds x="76.1" y="-0.4" width="1.3" height="1.3" /> </element> <element ref="ledo"><bounds x="76.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="0.0" ref="ledr" blend="add"><bounds x="13.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="1.0" ref="ledr" blend="add"><bounds x="22.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="2.0" ref="ledr" blend="add"><bounds x="31.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="3.0" ref="ledr" blend="add"><bounds x="40.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="0.2" ref="ledr" blend="add"><bounds x="49.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="1.2" ref="ledr" blend="add"><bounds x="58.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="2.2" ref="ledr" blend="add"><bounds x="67.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="3.2" ref="ledr" blend="add"><bounds x="76.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="0.1" ref="ledg" blend="add"><bounds x="13.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="1.1" ref="ledg" blend="add"><bounds x="22.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="2.1" ref="ledg" blend="add"><bounds x="31.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="3.1" ref="ledg" blend="add"><bounds x="40.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="0.3" ref="ledg" blend="add"><bounds x="49.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="1.3" ref="ledg" blend="add"><bounds x="58.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="2.3" ref="ledg" blend="add"><bounds x="67.1" y="-0.4" width="1.3" height="1.3" /></element>
<element name="3.3" ref="ledg" blend="add"><bounds x="76.1" y="-0.4" width="1.3" height="1.3" /></element>
<element ref="text_book"> <bounds x="15" y="-0.5" width="4" height="1.5" /> </element> <element ref="text_book"> <bounds x="15" y="-0.5" width="4" height="1.5" /> </element>
<element ref="text_pos"> <bounds x="24" y="-0.5" width="3" height="1.5" /> </element> <element ref="text_pos"> <bounds x="24" y="-0.5" width="3" height="1.5" /> </element>
@ -434,22 +464,22 @@ license:CC0
<element ref="text_ent"> <bounds x="65.25" y="11" width="5" height="1.5" /> </element> <element ref="text_ent"> <bounds x="65.25" y="11" width="5" height="1.5" /> </element>
<element ref="text_res"> <bounds x="74.25" y="11" width="5" height="1.5" /> </element> <element ref="text_res"> <bounds x="74.25" y="11" width="5" height="1.5" /> </element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x01"> <bounds x="13" y="2" width="1.5" height="2.5" /> </element> <element ref="hlb" inputtag="KEY.1" inputmask="0x01"> <bounds x="13" y="2" width="1.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x02"> <bounds x="22" y="2" width="1.5" height="2.5" /> </element> <element ref="hlb" inputtag="KEY.1" inputmask="0x02"> <bounds x="22" y="2" width="1.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x04"> <bounds x="31" y="2" width="1.5" height="2.5" /> </element> <element ref="hlb" inputtag="KEY.1" inputmask="0x04"> <bounds x="31" y="2" width="1.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x08"> <bounds x="40" y="2" width="1.5" height="2.5" /> </element> <element ref="hlb" inputtag="KEY.1" inputmask="0x08"> <bounds x="40" y="2" width="1.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x10"> <bounds x="49" y="2" width="1.5" height="2.5" /> </element> <element ref="hlb" inputtag="KEY.1" inputmask="0x10"> <bounds x="49" y="2" width="1.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x20"> <bounds x="58" y="2" width="1.5" height="2.5" /> </element> <element ref="hlb" inputtag="KEY.1" inputmask="0x20"> <bounds x="58" y="2" width="1.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x40"> <bounds x="67" y="2" width="1.5" height="2.5" /> </element> <element ref="hlb" inputtag="KEY.1" inputmask="0x40"> <bounds x="67" y="2" width="1.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x80"> <bounds x="76" y="2" width="1.5" height="2.5" /> </element> <element ref="hlb" inputtag="KEY.1" inputmask="0x80"> <bounds x="76" y="2" width="1.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x01"> <bounds x="13" y="8" width="1.5" height="2.5" /> </element> <element ref="hlb" inputtag="KEY.0" inputmask="0x01"> <bounds x="13" y="8" width="1.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x02"> <bounds x="22" y="8" width="1.5" height="2.5" /> </element> <element ref="hlb" inputtag="KEY.0" inputmask="0x02"> <bounds x="22" y="8" width="1.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x04"> <bounds x="31" y="8" width="1.5" height="2.5" /> </element> <element ref="hlb" inputtag="KEY.0" inputmask="0x04"> <bounds x="31" y="8" width="1.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x08"> <bounds x="40" y="8" width="1.5" height="2.5" /> </element> <element ref="hlb" inputtag="KEY.0" inputmask="0x08"> <bounds x="40" y="8" width="1.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x10"> <bounds x="49" y="8" width="1.5" height="2.5" /> </element> <element ref="hlb" inputtag="KEY.0" inputmask="0x10"> <bounds x="49" y="8" width="1.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x20"> <bounds x="58" y="8" width="1.5" height="2.5" /> </element> <element ref="hlb" inputtag="KEY.0" inputmask="0x20"> <bounds x="58" y="8" width="1.5" height="2.5" /> </element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x40"> <bounds x="67" y="8" width="1.5" height="2.5" /> </element> <element ref="hlb" inputtag="KEY.0" inputmask="0x40"> <bounds x="67" y="8" width="1.5" height="2.5" /> </element>
<element ref="hlbr" inputtag="KEY.1" inputmask="0x80"> <bounds x="76" y="8" width="1.5" height="2.5" /> </element> <element ref="hlbr" inputtag="KEY.0" inputmask="0x80"> <bounds x="76" y="8" width="1.5" height="2.5" /> </element>
</group> </group>
<!-- build screen --> <!-- build screen -->

View File

@ -14,7 +14,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</disk> </disk>
<disk state="1"> <disk state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</disk> </disk>
</element> </element>
<element name="hlb" defstate="0"> <element name="hlb" defstate="0">

View File

@ -14,7 +14,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</disk> </disk>
<disk state="1"> <disk state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</disk> </disk>
</element> </element>
<element name="hlb" defstate="0"> <element name="hlb" defstate="0">

View File

@ -10,12 +10,24 @@ license:CC0
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg> <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element> </element>
<element name="ledo">
<rect><color red="0.1" green="0.1" blue="0.1" /></rect>
</element>
<element name="ledr" defstate="0">
<rect state="0"><color red="0" green="0" blue="0" /></rect>
<rect state="1"><color red="1" green="0" blue="0" /></rect>
</element>
<element name="ledg" defstate="0">
<rect state="0"><color red="0" green="0" blue="0" /></rect>
<rect state="1"><color red="0" green="1" blue="0" /></rect>
</element>
<element name="led" defstate="0"> <element name="led" defstate="0">
<rect state="0"> <rect state="0">
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</rect> </rect>
<rect state="1"> <rect state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</rect> </rect>
</element> </element>
<element name="hlb" defstate="0"> <element name="hlb" defstate="0">
@ -201,14 +213,14 @@ license:CC0
<param name="y" start="0" increment="10" /> <param name="y" start="0" increment="10" />
<param name="i" start="8" increment="-1" /> <param name="i" start="8" increment="-1" />
<element ref="hlbb" inputtag="board: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="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board: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="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board: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="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board: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="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board: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="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board: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="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board: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="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x80"><bounds x="70" 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_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_b~i~" ref="piece"><bounds x="10" y="~y~" width="10" height="10" /></element>
@ -290,8 +302,8 @@ license:CC0
<element ref="text_uib2"><bounds x="1.5" y="11.75" width="7" height="2" /></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="text_uib3"><bounds x="1.5" y="15.25" width="7" height="2" /></element>
<element ref="hlub" inputtag="board: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="0x200"><bounds x="1" y="11.5" width="8" height="2.5" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:UI" inputmask="0x100"><bounds x="1" y="15" 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 --> <!-- spawn -->
<element ref="text_uis1"><bounds x="0" y="20.5" width="10" height="2" /></element> <element ref="text_uis1"><bounds x="0" y="20.5" width="10" height="2" /></element>
@ -311,18 +323,18 @@ license:CC0
<element name="piece_ui11" ref="piece"><bounds x="5" y="40" 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 name="piece_ui12" ref="piece"><bounds x="5" y="44" width="4" height="4" /></element>
<element ref="hlub" inputtag="board: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="0x0001"><bounds x="1" y="23" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0002"><bounds x="1" y="27" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0004"><bounds x="1" y="31" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0008"><bounds x="5" y="23" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0010"><bounds x="5" y="27" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0020"><bounds x="5" y="31" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0040"><bounds x="1" y="36" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0080"><bounds x="1" y="40" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0100"><bounds x="1" y="44" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0200"><bounds x="5" y="36" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0400"><bounds x="5" y="40" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0800"><bounds x="5" y="44" 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 --> <!-- hand -->
<element ref="text_uih1"><bounds x="0" y="51" width="10" height="2" /></element> <element ref="text_uih1"><bounds x="0" y="51" width="10" height="2" /></element>
@ -331,7 +343,7 @@ license:CC0
<element ref="cwhite"><bounds x="1" y="60.5" width="8" height="2.5" /></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="text_uih2"><bounds x="1.5" y="60.75" width="7" height="2" /></element>
<element ref="hlub" inputtag="board:board:UI" inputmask="0x08"><bounds x="1" y="60.5" width="8" height="2.5" /><color alpha="0.25" /></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 --> <!-- undo -->
<element ref="text_uiu1"><bounds x="0" y="66" width="10" height="2" /></element> <element ref="text_uiu1"><bounds x="0" y="66" width="10" height="2" /></element>
@ -344,10 +356,10 @@ license:CC0
<element ref="text_uiu2c"><bounds x="5.2" 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="text_uiu2d"><bounds x="7.3" y="69.5" width="1.7" height="4" /></element>
<element ref="hlub" inputtag="board: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="0x10"><bounds x="1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x20"><bounds x="3.1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x40"><bounds x="5.2" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:UI" inputmask="0x80"><bounds x="7.3" 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_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 name="count_ui1" ref="text_uiu3c"><bounds x="6" y="75" width="4" height="2" /></element>
@ -371,14 +383,32 @@ license:CC0
<element name="digit6" ref="digit"> <bounds x="5" y="8" width="2" height="3" /> </element> <element name="digit6" ref="digit"> <bounds x="5" y="8" width="2" height="3" /> </element>
<element name="digit7" ref="digit"> <bounds x="7" y="8" width="2" height="3" /> </element> <element name="digit7" ref="digit"> <bounds x="7" y="8" width="2" height="3" /> </element>
<element name="led100" ref="led"> <bounds x="13.0" y="0.4" width="1.3" height="0.8" /> </element> <element ref="ledo"><bounds x="13.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led101" ref="led"> <bounds x="21.5" y="0.4" width="1.3" height="0.8" /> </element> <element ref="ledo"><bounds x="21.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led102" ref="led"> <bounds x="30.0" y="0.4" width="1.3" height="0.8" /> </element> <element ref="ledo"><bounds x="30.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led103" ref="led"> <bounds x="38.5" y="0.4" width="1.3" height="0.8" /> </element> <element ref="ledo"><bounds x="38.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led104" ref="led"> <bounds x="47.0" y="0.4" width="1.3" height="0.8" /> </element> <element ref="ledo"><bounds x="47.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led105" ref="led"> <bounds x="55.5" y="0.4" width="1.3" height="0.8" /> </element> <element ref="ledo"><bounds x="55.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led106" ref="led"> <bounds x="64.0" y="0.4" width="1.3" height="0.8" /> </element> <element ref="ledo"><bounds x="64.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led107" ref="led"> <bounds x="72.5" y="0.4" width="1.3" height="0.8" /> </element> <element ref="ledo"><bounds x="72.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="0.0" ref="ledg" blend="add"><bounds x="13.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="1.0" ref="ledg" blend="add"><bounds x="21.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="2.0" ref="ledg" blend="add"><bounds x="30.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="3.0" ref="ledg" blend="add"><bounds x="38.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="4.0" ref="ledg" blend="add"><bounds x="47.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="5.0" ref="ledg" blend="add"><bounds x="55.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="6.0" ref="ledg" blend="add"><bounds x="64.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="7.0" ref="ledg" blend="add"><bounds x="72.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="0.1" ref="ledr" blend="add"><bounds x="13.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="1.1" ref="ledr" blend="add"><bounds x="21.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="2.1" ref="ledr" blend="add"><bounds x="30.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="3.1" ref="ledr" blend="add"><bounds x="38.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="4.1" ref="ledr" blend="add"><bounds x="47.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="5.1" ref="ledr" blend="add"><bounds x="55.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="6.1" ref="ledr" blend="add"><bounds x="64.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="7.1" ref="ledr" blend="add"><bounds x="72.5" y="0.4" width="1.3" height="0.8" /> </element>
<element ref="black"> <bounds x="13" y="2" width="6" height="4" /> </element> <element ref="black"> <bounds x="13" y="2" width="6" height="4" /> </element>
<element ref="black"> <bounds x="21.5" y="2" width="6" height="4" /> </element> <element ref="black"> <bounds x="21.5" y="2" width="6" height="4" /> </element>
@ -394,7 +424,7 @@ license:CC0
<element ref="black"> <bounds x="38.5" y="7.5" width="6" height="4" /> </element> <element ref="black"> <bounds x="38.5" y="7.5" width="6" height="4" /> </element>
<element ref="black"> <bounds x="47" y="7.5" width="6" height="4" /> </element> <element ref="black"> <bounds x="47" y="7.5" width="6" height="4" /> </element>
<element ref="black"> <bounds x="55.5" y="7.5" width="6" height="4" /> </element> <element ref="black"> <bounds x="55.5" y="7.5" width="6" height="4" /> </element>
<element ref="black"> <bounds x="64" y="7.5" width="6" height="4" /> </element> <element ref="black"> <bounds x="64" y="7.5" width="6" height="4" /> </element> <!-- on Mega IV, this button is red, but that's not worth another .lay file -->
<element ref="red"> <bounds x="72.5" y="7.5" width="6" height="4" /> </element> <element ref="red"> <bounds x="72.5" y="7.5" width="6" height="4" /> </element>
<element ref="text_book"> <bounds x="15" y="0" width="4" height="1.5" /> </element> <element ref="text_book"> <bounds x="15" y="0" width="4" height="1.5" /> </element>
@ -422,22 +452,22 @@ license:CC0
<element ref="text_ent"> <bounds x="64.5" y="8" width="5" height="1.5" /> </element> <element ref="text_ent"> <bounds x="64.5" y="8" width="5" height="1.5" /> </element>
<element ref="text_res"> <bounds x="73" y="8" width="5" height="1.5" /> </element> <element ref="text_res"> <bounds x="73" y="8" width="5" height="1.5" /> </element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x01"> <bounds x="13" y="2" width="6" height="4" /> <color alpha="0.3"/></element> <element ref="hlb" inputtag="KEY.0" inputmask="0x01"> <bounds x="13" y="2" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x10"> <bounds x="21.5" y="2" width="6" height="4" /> <color alpha="0.3"/></element> <element ref="hlb" inputtag="KEY.1" inputmask="0x01"> <bounds x="21.5" y="2" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x01"> <bounds x="30" y="2" width="6" height="4" /> <color alpha="0.3"/></element> <element ref="hlb" inputtag="KEY.2" inputmask="0x01"> <bounds x="30" y="2" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x10"> <bounds x="38.5" y="2" width="6" height="4" /> <color alpha="0.3"/></element> <element ref="hlb" inputtag="KEY.3" inputmask="0x01"> <bounds x="38.5" y="2" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x02"> <bounds x="47" y="2" width="6" height="4" /> <color alpha="0.3"/></element> <element ref="hlb" inputtag="KEY.0" inputmask="0x02"> <bounds x="47" y="2" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x20"> <bounds x="55.5" y="2" width="6" height="4" /> <color alpha="0.3"/></element> <element ref="hlb" inputtag="KEY.1" inputmask="0x02"> <bounds x="55.5" y="2" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x02"> <bounds x="64" y="2" width="6" height="4" /> <color alpha="0.3"/></element> <element ref="hlb" inputtag="KEY.2" inputmask="0x02"> <bounds x="64" y="2" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x20"> <bounds x="72.5" y="2" width="6" height="4" /> <color alpha="0.3"/></element> <element ref="hlb" inputtag="KEY.3" inputmask="0x02"> <bounds x="72.5" y="2" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x04"> <bounds x="13" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element> <element ref="hlb" inputtag="KEY.0" inputmask="0x04"> <bounds x="13" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x40"> <bounds x="21.5" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element> <element ref="hlb" inputtag="KEY.1" inputmask="0x04"> <bounds x="21.5" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x04"> <bounds x="30" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element> <element ref="hlb" inputtag="KEY.2" inputmask="0x04"> <bounds x="30" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x40"> <bounds x="38.5" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element> <element ref="hlb" inputtag="KEY.3" inputmask="0x04"> <bounds x="38.5" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x08"> <bounds x="47" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element> <element ref="hlb" inputtag="KEY.0" inputmask="0x08"> <bounds x="47" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x80"> <bounds x="55.5" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element> <element ref="hlb" inputtag="KEY.1" inputmask="0x08"> <bounds x="55.5" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x08"> <bounds x="64" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element> <element ref="hlb" inputtag="KEY.2" inputmask="0x08"> <bounds x="64" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x80"> <bounds x="72.5" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element> <element ref="hlb" inputtag="KEY.3" inputmask="0x08"> <bounds x="72.5" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element>
</group> </group>
@ -448,7 +478,7 @@ license:CC0
<element ref="background"><bounds x="13" y="-2" width="90" height="104" /></element> <element ref="background"><bounds x="13" y="-2" width="90" height="104" /></element>
<!-- chessboard coords --> <!-- chessboard coords -->
<element ref="text_8"><bounds x="13.6" y="7" width="2" height="2" /></element> <element ref="text_8"><bounds x="13.6" y="7" width="2" height="2" /></element>
<element ref="text_7"><bounds x="13.6" y="17" width="2" height="2" /></element> <element ref="text_7"><bounds x="13.6" y="17" width="2" height="2" /></element>
<element ref="text_6"><bounds x="13.6" y="27" width="2" height="2" /></element> <element ref="text_6"><bounds x="13.6" y="27" width="2" height="2" /></element>
<element ref="text_5"><bounds x="13.6" y="37" width="2" height="2" /></element> <element ref="text_5"><bounds x="13.6" y="37" width="2" height="2" /></element>
@ -470,23 +500,59 @@ license:CC0
<element ref="black"><bounds x="17.5" y="2.5" width="81" height="81" /></element> <element ref="black"><bounds x="17.5" y="2.5" width="81" height="81" /></element>
<!-- chessboard leds --> <!-- chessboard leds -->
<element name="led0" ref="led"><bounds x="15.7" y="77.25" width="0.8" height="1.5" /></element> <element ref="ledo"><bounds x="15.7" y="77.25" width="0.8" height="1.5" /></element>
<element name="led1" ref="led"><bounds x="15.7" y="67.25" width="0.8" height="1.5" /></element> <element ref="ledo"><bounds x="15.7" y="67.25" width="0.8" height="1.5" /></element>
<element name="led2" ref="led"><bounds x="15.7" y="57.25" width="0.8" height="1.5" /></element> <element ref="ledo"><bounds x="15.7" y="57.25" width="0.8" height="1.5" /></element>
<element name="led3" ref="led"><bounds x="15.7" y="47.25" width="0.8" height="1.5" /></element> <element ref="ledo"><bounds x="15.7" y="47.25" width="0.8" height="1.5" /></element>
<element name="led4" ref="led"><bounds x="15.7" y="37.25" width="0.8" height="1.5" /></element> <element ref="ledo"><bounds x="15.7" y="37.25" width="0.8" height="1.5" /></element>
<element name="led5" ref="led"><bounds x="15.7" y="27.25" width="0.8" height="1.5" /></element> <element ref="ledo"><bounds x="15.7" y="27.25" width="0.8" height="1.5" /></element>
<element name="led6" ref="led"><bounds x="15.7" y="17.25" width="0.8" height="1.5" /></element> <element ref="ledo"><bounds x="15.7" y="17.25" width="0.8" height="1.5" /></element>
<element name="led7" ref="led"><bounds x="15.7" y="7.25" width="0.8" height="1.5" /></element> <element ref="ledo"><bounds x="15.7" y="7.25" width="0.8" height="1.5" /></element>
<element name="led8" ref="led"><bounds x="22.25" y="84.5" width="1.5" height="0.8" /></element> <element name="0.2" ref="ledg" blend="add"><bounds x="15.7" y="77.25" width="0.8" height="1.5" /></element>
<element name="led9" ref="led"><bounds x="32.25" y="84.5" width="1.5" height="0.8" /></element> <element name="1.2" ref="ledg" blend="add"><bounds x="15.7" y="67.25" width="0.8" height="1.5" /></element>
<element name="led10" ref="led"><bounds x="42.25" y="84.5" width="1.5" height="0.8" /></element> <element name="2.2" ref="ledg" blend="add"><bounds x="15.7" y="57.25" width="0.8" height="1.5" /></element>
<element name="led11" ref="led"><bounds x="52.25" y="84.5" width="1.5" height="0.8" /></element> <element name="3.2" ref="ledg" blend="add"><bounds x="15.7" y="47.25" width="0.8" height="1.5" /></element>
<element name="led12" ref="led"><bounds x="62.25" y="84.5" width="1.5" height="0.8" /></element> <element name="4.2" ref="ledg" blend="add"><bounds x="15.7" y="37.25" width="0.8" height="1.5" /></element>
<element name="led13" ref="led"><bounds x="72.25" y="84.5" width="1.5" height="0.8" /></element> <element name="5.2" ref="ledg" blend="add"><bounds x="15.7" y="27.25" width="0.8" height="1.5" /></element>
<element name="led14" ref="led"><bounds x="82.25" y="84.5" width="1.5" height="0.8" /></element> <element name="6.2" ref="ledg" blend="add"><bounds x="15.7" y="17.25" width="0.8" height="1.5" /></element>
<element name="led15" ref="led"><bounds x="92.25" y="84.5" width="1.5" height="0.8" /></element> <element name="7.2" ref="ledg" blend="add"><bounds x="15.7" y="7.25" width="0.8" height="1.5" /></element>
<element name="0.3" ref="ledr" blend="add"><bounds x="15.7" y="77.25" width="0.8" height="1.5" /></element>
<element name="1.3" ref="ledr" blend="add"><bounds x="15.7" y="67.25" width="0.8" height="1.5" /></element>
<element name="2.3" ref="ledr" blend="add"><bounds x="15.7" y="57.25" width="0.8" height="1.5" /></element>
<element name="3.3" ref="ledr" blend="add"><bounds x="15.7" y="47.25" width="0.8" height="1.5" /></element>
<element name="4.3" ref="ledr" blend="add"><bounds x="15.7" y="37.25" width="0.8" height="1.5" /></element>
<element name="5.3" ref="ledr" blend="add"><bounds x="15.7" y="27.25" width="0.8" height="1.5" /></element>
<element name="6.3" ref="ledr" blend="add"><bounds x="15.7" y="17.25" width="0.8" height="1.5" /></element>
<element name="7.3" ref="ledr" blend="add"><bounds x="15.7" y="7.25" width="0.8" height="1.5" /></element>
<element ref="ledo"><bounds x="22.25" y="84.5" width="1.5" height="0.8" /></element>
<element ref="ledo"><bounds x="32.25" y="84.5" width="1.5" height="0.8" /></element>
<element ref="ledo"><bounds x="42.25" y="84.5" width="1.5" height="0.8" /></element>
<element ref="ledo"><bounds x="52.25" y="84.5" width="1.5" height="0.8" /></element>
<element ref="ledo"><bounds x="62.25" y="84.5" width="1.5" height="0.8" /></element>
<element ref="ledo"><bounds x="72.25" y="84.5" width="1.5" height="0.8" /></element>
<element ref="ledo"><bounds x="82.25" y="84.5" width="1.5" height="0.8" /></element>
<element ref="ledo"><bounds x="92.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="0.4" ref="ledg" blend="add"><bounds x="22.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="1.4" ref="ledg" blend="add"><bounds x="32.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="2.4" ref="ledg" blend="add"><bounds x="42.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="3.4" ref="ledg" blend="add"><bounds x="52.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="4.4" ref="ledg" blend="add"><bounds x="62.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="5.4" ref="ledg" blend="add"><bounds x="72.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="6.4" ref="ledg" blend="add"><bounds x="82.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="7.4" ref="ledg" blend="add"><bounds x="92.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="0.5" ref="ledr" blend="add"><bounds x="22.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="1.5" ref="ledr" blend="add"><bounds x="32.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="2.5" ref="ledr" blend="add"><bounds x="42.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="3.5" ref="ledr" blend="add"><bounds x="52.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="4.5" ref="ledr" blend="add"><bounds x="62.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="5.5" ref="ledr" blend="add"><bounds x="72.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="6.5" ref="ledr" blend="add"><bounds x="82.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="7.5" ref="ledr" blend="add"><bounds x="92.25" y="84.5" width="1.5" height="0.8" /></element>
<!-- LCD panel --> <!-- LCD panel -->
<group ref="panel"><bounds x="18" y="89" width="79" height="13" /></group> <group ref="panel"><bounds x="18" y="89" width="79" height="13" /></group>

View File

@ -10,12 +10,24 @@ license:CC0
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg> <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element> </element>
<element name="ledo">
<rect><color red="0.1" green="0.1" blue="0.1" /></rect>
</element>
<element name="ledr" defstate="0">
<rect state="0"><color red="0" green="0" blue="0" /></rect>
<rect state="1"><color red="1" green="0" blue="0" /></rect>
</element>
<element name="ledg" defstate="0">
<rect state="0"><color red="0" green="0" blue="0" /></rect>
<rect state="1"><color red="0" green="1" blue="0" /></rect>
</element>
<element name="led" defstate="0"> <element name="led" defstate="0">
<rect state="0"> <rect state="0">
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
</rect> </rect>
<rect state="1"> <rect state="1">
<color red="0.95" green="0.0" blue="0.0" /> <color red="1" green="0.1" blue="0.1" />
</rect> </rect>
</element> </element>
<element name="hlb" defstate="0"> <element name="hlb" defstate="0">
@ -204,14 +216,14 @@ license:CC0
<param name="y" start="0" increment="10" /> <param name="y" start="0" increment="10" />
<param name="i" start="8" increment="-1" /> <param name="i" start="8" increment="-1" />
<element ref="hlbb" inputtag="board: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="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board: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="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board: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="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board: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="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board: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="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board: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="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board: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="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x80"><bounds x="70" 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_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_b~i~" ref="piece"><bounds x="10" y="~y~" width="10" height="10" /></element>
@ -293,8 +305,8 @@ license:CC0
<element ref="text_uib2"><bounds x="1.5" y="11.75" width="7" height="2" /></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="text_uib3"><bounds x="1.5" y="15.25" width="7" height="2" /></element>
<element ref="hlub" inputtag="board: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="0x200"><bounds x="1" y="11.5" width="8" height="2.5" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:UI" inputmask="0x100"><bounds x="1" y="15" 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 --> <!-- spawn -->
<element ref="text_uis1"><bounds x="0" y="20.5" width="10" height="2" /></element> <element ref="text_uis1"><bounds x="0" y="20.5" width="10" height="2" /></element>
@ -314,18 +326,18 @@ license:CC0
<element name="piece_ui11" ref="piece"><bounds x="5" y="40" 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 name="piece_ui12" ref="piece"><bounds x="5" y="44" width="4" height="4" /></element>
<element ref="hlub" inputtag="board: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="0x0001"><bounds x="1" y="23" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0002"><bounds x="1" y="27" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0004"><bounds x="1" y="31" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0008"><bounds x="5" y="23" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0010"><bounds x="5" y="27" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0020"><bounds x="5" y="31" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0040"><bounds x="1" y="36" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0080"><bounds x="1" y="40" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0100"><bounds x="1" y="44" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0200"><bounds x="5" y="36" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x0400"><bounds x="5" y="40" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0800"><bounds x="5" y="44" 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 --> <!-- hand -->
<element ref="text_uih1"><bounds x="0" y="51" width="10" height="2" /></element> <element ref="text_uih1"><bounds x="0" y="51" width="10" height="2" /></element>
@ -334,7 +346,7 @@ license:CC0
<element ref="cwhite"><bounds x="1" y="60.5" width="8" height="2.5" /></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="text_uih2"><bounds x="1.5" y="60.75" width="7" height="2" /></element>
<element ref="hlub" inputtag="board:board:UI" inputmask="0x08"><bounds x="1" y="60.5" width="8" height="2.5" /><color alpha="0.25" /></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 --> <!-- undo -->
<element ref="text_uiu1"><bounds x="0" y="66" width="10" height="2" /></element> <element ref="text_uiu1"><bounds x="0" y="66" width="10" height="2" /></element>
@ -347,10 +359,10 @@ license:CC0
<element ref="text_uiu2c"><bounds x="5.2" 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="text_uiu2d"><bounds x="7.3" y="69.5" width="1.7" height="4" /></element>
<element ref="hlub" inputtag="board: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="0x10"><bounds x="1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x20"><bounds x="3.1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board: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="0x40"><bounds x="5.2" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:board:UI" inputmask="0x80"><bounds x="7.3" 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_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 name="count_ui1" ref="text_uiu3c"><bounds x="6" y="75" width="4" height="2" /></element>
@ -374,14 +386,32 @@ license:CC0
<element name="digit6" ref="digit"> <bounds x="5" y="8" width="2" height="3" /> </element> <element name="digit6" ref="digit"> <bounds x="5" y="8" width="2" height="3" /> </element>
<element name="digit7" ref="digit"> <bounds x="7" y="8" width="2" height="3" /> </element> <element name="digit7" ref="digit"> <bounds x="7" y="8" width="2" height="3" /> </element>
<element name="led100" ref="led"> <bounds x="13.0" y="0.4" width="1.3" height="0.8" /> </element> <element ref="ledo"><bounds x="13.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led101" ref="led"> <bounds x="21.5" y="0.4" width="1.3" height="0.8" /> </element> <element ref="ledo"><bounds x="21.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led102" ref="led"> <bounds x="30.0" y="0.4" width="1.3" height="0.8" /> </element> <element ref="ledo"><bounds x="30.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led103" ref="led"> <bounds x="38.5" y="0.4" width="1.3" height="0.8" /> </element> <element ref="ledo"><bounds x="38.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led104" ref="led"> <bounds x="47.0" y="0.4" width="1.3" height="0.8" /> </element> <element ref="ledo"><bounds x="47.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led105" ref="led"> <bounds x="55.5" y="0.4" width="1.3" height="0.8" /> </element> <element ref="ledo"><bounds x="55.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led106" ref="led"> <bounds x="64.0" y="0.4" width="1.3" height="0.8" /> </element> <element ref="ledo"><bounds x="64.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="led107" ref="led"> <bounds x="72.5" y="0.4" width="1.3" height="0.8" /> </element> <element ref="ledo"><bounds x="72.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="0.0" ref="ledg" blend="add"><bounds x="13.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="1.0" ref="ledg" blend="add"><bounds x="21.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="2.0" ref="ledg" blend="add"><bounds x="30.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="3.0" ref="ledg" blend="add"><bounds x="38.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="4.0" ref="ledg" blend="add"><bounds x="47.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="5.0" ref="ledg" blend="add"><bounds x="55.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="6.0" ref="ledg" blend="add"><bounds x="64.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="7.0" ref="ledg" blend="add"><bounds x="72.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="0.1" ref="ledr" blend="add"><bounds x="13.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="1.1" ref="ledr" blend="add"><bounds x="21.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="2.1" ref="ledr" blend="add"><bounds x="30.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="3.1" ref="ledr" blend="add"><bounds x="38.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="4.1" ref="ledr" blend="add"><bounds x="47.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="5.1" ref="ledr" blend="add"><bounds x="55.5" y="0.4" width="1.3" height="0.8" /> </element>
<element name="6.1" ref="ledr" blend="add"><bounds x="64.0" y="0.4" width="1.3" height="0.8" /> </element>
<element name="7.1" ref="ledr" blend="add"><bounds x="72.5" y="0.4" width="1.3" height="0.8" /> </element>
<element ref="black"> <bounds x="13" y="2" width="6" height="4" /> </element> <element ref="black"> <bounds x="13" y="2" width="6" height="4" /> </element>
<element ref="black"> <bounds x="21.5" y="2" width="6" height="4" /> </element> <element ref="black"> <bounds x="21.5" y="2" width="6" height="4" /> </element>
@ -425,22 +455,22 @@ license:CC0
<element ref="text_ent"> <bounds x="64.5" y="8.75" width="5" height="1.5" /> </element> <element ref="text_ent"> <bounds x="64.5" y="8.75" width="5" height="1.5" /> </element>
<element ref="text_res"> <bounds x="73" y="8.75" width="5" height="1.5" /> </element> <element ref="text_res"> <bounds x="73" y="8.75" width="5" height="1.5" /> </element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x01"> <bounds x="13" y="2" width="6" height="4" /> <color alpha="0.3" /></element> <element ref="hlb" inputtag="KEY.0" inputmask="0x01"> <bounds x="13" y="2" width="6" height="4" /> <color alpha="0.3" /></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x10"> <bounds x="21.5" y="2" width="6" height="4" /> <color alpha="0.3" /></element> <element ref="hlb" inputtag="KEY.1" inputmask="0x01"> <bounds x="21.5" y="2" width="6" height="4" /> <color alpha="0.3" /></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x01"> <bounds x="30" y="2" width="6" height="4" /> <color alpha="0.3" /></element> <element ref="hlb" inputtag="KEY.2" inputmask="0x01"> <bounds x="30" y="2" width="6" height="4" /> <color alpha="0.3" /></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x10"> <bounds x="38.5" y="2" width="6" height="4" /> <color alpha="0.3" /></element> <element ref="hlb" inputtag="KEY.3" inputmask="0x01"> <bounds x="38.5" y="2" width="6" height="4" /> <color alpha="0.3" /></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x02"> <bounds x="47" y="2" width="6" height="4" /> <color alpha="0.3" /></element> <element ref="hlb" inputtag="KEY.0" inputmask="0x02"> <bounds x="47" y="2" width="6" height="4" /> <color alpha="0.3" /></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x20"> <bounds x="55.5" y="2" width="6" height="4" /> <color alpha="0.3" /></element> <element ref="hlb" inputtag="KEY.1" inputmask="0x02"> <bounds x="55.5" y="2" width="6" height="4" /> <color alpha="0.3" /></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x02"> <bounds x="64" y="2" width="6" height="4" /> <color alpha="0.3" /></element> <element ref="hlb" inputtag="KEY.2" inputmask="0x02"> <bounds x="64" y="2" width="6" height="4" /> <color alpha="0.3" /></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x20"> <bounds x="72.5" y="2" width="6" height="4" /> <color alpha="0.3" /></element> <element ref="hlb" inputtag="KEY.3" inputmask="0x02"> <bounds x="72.5" y="2" width="6" height="4" /> <color alpha="0.3" /></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x04"> <bounds x="13" y="7.5" width="6" height="4" /> <color alpha="0.3" /></element> <element ref="hlb" inputtag="KEY.0" inputmask="0x04"> <bounds x="13" y="7.5" width="6" height="4" /> <color alpha="0.3" /></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x40"> <bounds x="21.5" y="7.5" width="6" height="4" /> <color alpha="0.3" /></element> <element ref="hlb" inputtag="KEY.1" inputmask="0x04"> <bounds x="21.5" y="7.5" width="6" height="4" /> <color alpha="0.3" /></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x04"> <bounds x="30" y="7.5" width="6" height="4" /> <color alpha="0.3" /></element> <element ref="hlb" inputtag="KEY.2" inputmask="0x04"> <bounds x="30" y="7.5" width="6" height="4" /> <color alpha="0.3" /></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x40"> <bounds x="38.5" y="7.5" width="6" height="4" /> <color alpha="0.3" /></element> <element ref="hlb" inputtag="KEY.3" inputmask="0x04"> <bounds x="38.5" y="7.5" width="6" height="4" /> <color alpha="0.3" /></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x08"> <bounds x="47" y="7.5" width="6" height="4" /> <color alpha="0.3" /></element> <element ref="hlb" inputtag="KEY.0" inputmask="0x08"> <bounds x="47" y="7.5" width="6" height="4" /> <color alpha="0.3" /></element>
<element ref="hlb" inputtag="KEY.1" inputmask="0x80"> <bounds x="55.5" y="7.5" width="6" height="4" /> <color alpha="0.3" /></element> <element ref="hlb" inputtag="KEY.1" inputmask="0x08"> <bounds x="55.5" y="7.5" width="6" height="4" /> <color alpha="0.3" /></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x08"> <bounds x="64" y="7.5" width="6" height="4" /> <color alpha="0.3" /></element> <element ref="hlb" inputtag="KEY.2" inputmask="0x08"> <bounds x="64" y="7.5" width="6" height="4" /> <color alpha="0.3" /></element>
<element ref="hlb" inputtag="KEY.0" inputmask="0x80"> <bounds x="72.5" y="7.5" width="6" height="4" /> <color alpha="0.3" /></element> <element ref="hlb" inputtag="KEY.3" inputmask="0x08"> <bounds x="72.5" y="7.5" width="6" height="4" /> <color alpha="0.3" /></element>
</group> </group>
@ -473,23 +503,59 @@ license:CC0
<element ref="black"><bounds x="17.5" y="2.5" width="81" height="81" /></element> <element ref="black"><bounds x="17.5" y="2.5" width="81" height="81" /></element>
<!-- chessboard leds --> <!-- chessboard leds -->
<element name="led0" ref="led"><bounds x="15.7" y="77.25" width="0.8" height="1.5" /></element> <element ref="ledo"><bounds x="15.7" y="77.25" width="0.8" height="1.5" /></element>
<element name="led1" ref="led"><bounds x="15.7" y="67.25" width="0.8" height="1.5" /></element> <element ref="ledo"><bounds x="15.7" y="67.25" width="0.8" height="1.5" /></element>
<element name="led2" ref="led"><bounds x="15.7" y="57.25" width="0.8" height="1.5" /></element> <element ref="ledo"><bounds x="15.7" y="57.25" width="0.8" height="1.5" /></element>
<element name="led3" ref="led"><bounds x="15.7" y="47.25" width="0.8" height="1.5" /></element> <element ref="ledo"><bounds x="15.7" y="47.25" width="0.8" height="1.5" /></element>
<element name="led4" ref="led"><bounds x="15.7" y="37.25" width="0.8" height="1.5" /></element> <element ref="ledo"><bounds x="15.7" y="37.25" width="0.8" height="1.5" /></element>
<element name="led5" ref="led"><bounds x="15.7" y="27.25" width="0.8" height="1.5" /></element> <element ref="ledo"><bounds x="15.7" y="27.25" width="0.8" height="1.5" /></element>
<element name="led6" ref="led"><bounds x="15.7" y="17.25" width="0.8" height="1.5" /></element> <element ref="ledo"><bounds x="15.7" y="17.25" width="0.8" height="1.5" /></element>
<element name="led7" ref="led"><bounds x="15.7" y="7.25" width="0.8" height="1.5" /></element> <element ref="ledo"><bounds x="15.7" y="7.25" width="0.8" height="1.5" /></element>
<element name="led8" ref="led"><bounds x="22.25" y="84.5" width="1.5" height="0.8" /></element> <element name="0.2" ref="ledg" blend="add"><bounds x="15.7" y="77.25" width="0.8" height="1.5" /></element>
<element name="led9" ref="led"><bounds x="32.25" y="84.5" width="1.5" height="0.8" /></element> <element name="1.2" ref="ledg" blend="add"><bounds x="15.7" y="67.25" width="0.8" height="1.5" /></element>
<element name="led10" ref="led"><bounds x="42.25" y="84.5" width="1.5" height="0.8" /></element> <element name="2.2" ref="ledg" blend="add"><bounds x="15.7" y="57.25" width="0.8" height="1.5" /></element>
<element name="led11" ref="led"><bounds x="52.25" y="84.5" width="1.5" height="0.8" /></element> <element name="3.2" ref="ledg" blend="add"><bounds x="15.7" y="47.25" width="0.8" height="1.5" /></element>
<element name="led12" ref="led"><bounds x="62.25" y="84.5" width="1.5" height="0.8" /></element> <element name="4.2" ref="ledg" blend="add"><bounds x="15.7" y="37.25" width="0.8" height="1.5" /></element>
<element name="led13" ref="led"><bounds x="72.25" y="84.5" width="1.5" height="0.8" /></element> <element name="5.2" ref="ledg" blend="add"><bounds x="15.7" y="27.25" width="0.8" height="1.5" /></element>
<element name="led14" ref="led"><bounds x="82.25" y="84.5" width="1.5" height="0.8" /></element> <element name="6.2" ref="ledg" blend="add"><bounds x="15.7" y="17.25" width="0.8" height="1.5" /></element>
<element name="led15" ref="led"><bounds x="92.25" y="84.5" width="1.5" height="0.8" /></element> <element name="7.2" ref="ledg" blend="add"><bounds x="15.7" y="7.25" width="0.8" height="1.5" /></element>
<element name="0.3" ref="ledr" blend="add"><bounds x="15.7" y="77.25" width="0.8" height="1.5" /></element>
<element name="1.3" ref="ledr" blend="add"><bounds x="15.7" y="67.25" width="0.8" height="1.5" /></element>
<element name="2.3" ref="ledr" blend="add"><bounds x="15.7" y="57.25" width="0.8" height="1.5" /></element>
<element name="3.3" ref="ledr" blend="add"><bounds x="15.7" y="47.25" width="0.8" height="1.5" /></element>
<element name="4.3" ref="ledr" blend="add"><bounds x="15.7" y="37.25" width="0.8" height="1.5" /></element>
<element name="5.3" ref="ledr" blend="add"><bounds x="15.7" y="27.25" width="0.8" height="1.5" /></element>
<element name="6.3" ref="ledr" blend="add"><bounds x="15.7" y="17.25" width="0.8" height="1.5" /></element>
<element name="7.3" ref="ledr" blend="add"><bounds x="15.7" y="7.25" width="0.8" height="1.5" /></element>
<element ref="ledo"><bounds x="22.25" y="84.5" width="1.5" height="0.8" /></element>
<element ref="ledo"><bounds x="32.25" y="84.5" width="1.5" height="0.8" /></element>
<element ref="ledo"><bounds x="42.25" y="84.5" width="1.5" height="0.8" /></element>
<element ref="ledo"><bounds x="52.25" y="84.5" width="1.5" height="0.8" /></element>
<element ref="ledo"><bounds x="62.25" y="84.5" width="1.5" height="0.8" /></element>
<element ref="ledo"><bounds x="72.25" y="84.5" width="1.5" height="0.8" /></element>
<element ref="ledo"><bounds x="82.25" y="84.5" width="1.5" height="0.8" /></element>
<element ref="ledo"><bounds x="92.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="0.4" ref="ledg" blend="add"><bounds x="22.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="1.4" ref="ledg" blend="add"><bounds x="32.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="2.4" ref="ledg" blend="add"><bounds x="42.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="3.4" ref="ledg" blend="add"><bounds x="52.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="4.4" ref="ledg" blend="add"><bounds x="62.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="5.4" ref="ledg" blend="add"><bounds x="72.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="6.4" ref="ledg" blend="add"><bounds x="82.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="7.4" ref="ledg" blend="add"><bounds x="92.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="0.5" ref="ledr" blend="add"><bounds x="22.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="1.5" ref="ledr" blend="add"><bounds x="32.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="2.5" ref="ledr" blend="add"><bounds x="42.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="3.5" ref="ledr" blend="add"><bounds x="52.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="4.5" ref="ledr" blend="add"><bounds x="62.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="5.5" ref="ledr" blend="add"><bounds x="72.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="6.5" ref="ledr" blend="add"><bounds x="82.25" y="84.5" width="1.5" height="0.8" /></element>
<element name="7.5" ref="ledr" blend="add"><bounds x="92.25" y="84.5" width="1.5" height="0.8" /></element>
<!-- LCD panel --> <!-- LCD panel -->
<group ref="panel"><bounds x="18" y="89" width="79" height="13" /></group> <group ref="panel"><bounds x="18" y="89" width="79" height="13" /></group>

View File

@ -22792,15 +22792,9 @@ mondial2 // 1987 Mephisto Mondial II
mondl68k // 1988 Mephisto Mondial 68000XL mondl68k // 1988 Mephisto Mondial 68000XL
@source:mephisto_montec.cpp @source:mephisto_montec.cpp
smondial // 1986 Mephisto Super Mondial (Ver A)
smondialab // 1986 Mephisto Super Mondial (Ver AB)
smondialb // 1986 Mephisto Super Mondial (Ver B)
montec // 1987 Mephisto Monte Carlo montec // 1987 Mephisto Monte Carlo
monteca // 1987 Mephisto Monte Carlo monteca // 1987 Mephisto Monte Carlo
smondial2 // 1989 Mephisto Super Mondial II montec4le // 1990 Mephisto Monte Carlo IV LE
megaiv // 1989 Mephisto Mega IV
megaiva // 1989 Mephisto Mega IV
monteciv // 1990 Mephisto Monte Carlo IV LE
@source:mephisto_polgar.cpp @source:mephisto_polgar.cpp
polgar // 1990 Mephisto Polgar polgar // 1990 Mephisto Polgar
@ -22812,6 +22806,14 @@ polgar101 // 1990 Mephisto Polgar 10MHz
mrisc // 1992 Mephisto RISC 1MB mrisc // 1992 Mephisto RISC 1MB
mrisc2 // 1994 Mephisto RISC II mrisc2 // 1994 Mephisto RISC II
@source:mephisto_smondial.cpp
mega4 // 1989 Mephisto Mega IV
mega4a // 1989 Mephisto Mega IV
smondial // 1986 Mephisto Super Mondial (Ver A)
smondialab // 1986 Mephisto Super Mondial (Ver AB)
smondialb // 1986 Mephisto Super Mondial (Ver B)
smondial2 // 1989 Mephisto Super Mondial II
@source:mephistp.cpp @source:mephistp.cpp
mephistp // mephistp //
mephistp1 // mephistp1 //

View File

@ -592,6 +592,7 @@ mephisto_mondial68k.cpp
mephisto_montec.cpp mephisto_montec.cpp
mephisto_polgar.cpp mephisto_polgar.cpp
mephisto_risc.cpp mephisto_risc.cpp
mephisto_smondial.cpp
meritum.cpp meritum.cpp
mes.cpp mes.cpp
mfabfz.cpp mfabfz.cpp