summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2021-04-12 00:36:41 +0200
committer hap <happppp@users.noreply.github.com>2021-04-12 00:36:52 +0200
commitf498f612958817f3c03454252523299747f5f9d7 (patch)
tree851d87de8a27735e4fe2f385c507a02b44d539f6
parentb3e581c8f958c43a39055ac5c50d630180a9b785 (diff)
mephisto_montec.cpp: split driver file into montec/smondial
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/mame/drivers/fidel_eag68k.cpp5
-rw-r--r--src/mame/drivers/fidel_excel.cpp14
-rw-r--r--src/mame/drivers/fidel_phantom.cpp3
-rw-r--r--src/mame/drivers/mephisto_academy.cpp8
-rw-r--r--src/mame/drivers/mephisto_amsterdam.cpp2
-rw-r--r--src/mame/drivers/mephisto_glasgow.cpp5
-rw-r--r--src/mame/drivers/mephisto_milano.cpp18
-rw-r--r--src/mame/drivers/mephisto_mm2.cpp17
-rw-r--r--src/mame/drivers/mephisto_mondial.cpp58
-rw-r--r--src/mame/drivers/mephisto_mondial2.cpp58
-rw-r--r--src/mame/drivers/mephisto_mondial68k.cpp44
-rw-r--r--src/mame/drivers/mephisto_montec.cpp485
-rw-r--r--src/mame/drivers/mephisto_smondial.cpp407
-rw-r--r--src/mame/layout/mephisto_academy.lay4
-rw-r--r--src/mame/layout/mephisto_alm16.lay2
-rw-r--r--src/mame/layout/mephisto_alm32.lay2
-rw-r--r--src/mame/layout/mephisto_amsterdam.lay2
-rw-r--r--src/mame/layout/mephisto_berlin.lay2
-rw-r--r--src/mame/layout/mephisto_bup.lay2
-rw-r--r--src/mame/layout/mephisto_gen32.lay2
-rw-r--r--src/mame/layout/mephisto_glasgow.lay2
-rw-r--r--src/mame/layout/mephisto_megaiv.lay497
-rw-r--r--src/mame/layout/mephisto_milano.lay4
-rw-r--r--src/mame/layout/mephisto_mm2.lay2
-rw-r--r--src/mame/layout/mephisto_modena.lay4
-rw-r--r--src/mame/layout/mephisto_modular_tm.lay2
-rw-r--r--src/mame/layout/mephisto_mondial.lay2
-rw-r--r--src/mame/layout/mephisto_mondial2.lay2
-rw-r--r--src/mame/layout/mephisto_mondial68k.lay2
-rw-r--r--src/mame/layout/mephisto_montec.lay82
-rw-r--r--src/mame/layout/mephisto_polgar.lay2
-rw-r--r--src/mame/layout/mephisto_risc.lay2
-rw-r--r--src/mame/layout/mephisto_smondial.lay208
-rw-r--r--src/mame/layout/mephisto_smondial2.lay204
-rw-r--r--src/mame/mame.lst16
-rw-r--r--src/mame/mess.flt1
37 files changed, 1026 insertions, 1147 deletions
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index a0a657086f2..9a559d057fe 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -2550,6 +2550,7 @@ files {
MAME_DIR .. "src/mame/drivers/mephisto_montec.cpp",
MAME_DIR .. "src/mame/drivers/mephisto_polgar.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.h",
MAME_DIR .. "src/mame/video/mmdisplay1.cpp",
diff --git a/src/mame/drivers/fidel_eag68k.cpp b/src/mame/drivers/fidel_eag68k.cpp
index ff6018052c7..333d2f28136 100644
--- a/src/mame/drivers/fidel_eag68k.cpp
+++ b/src/mame/drivers/fidel_eag68k.cpp
@@ -161,6 +161,9 @@ B0000x-xxxxxx: see V7, -800000
******************************************************************************/
#include "emu.h"
+
+#include "bus/generic/slot.h"
+#include "bus/generic/carts.h"
#include "cpu/m68000/m68000.h"
#include "machine/gen_latch.h"
#include "machine/ram.h"
@@ -169,8 +172,6 @@ B0000x-xxxxxx: see V7, -800000
#include "machine/sensorboard.h"
#include "sound/dac.h"
#include "video/pwm.h"
-#include "bus/generic/slot.h"
-#include "bus/generic/carts.h"
#include "softlist.h"
#include "speaker.h"
diff --git a/src/mame/drivers/fidel_excel.cpp b/src/mame/drivers/fidel_excel.cpp
index b165d719f52..8fd4f8ef3c2 100644
--- a/src/mame/drivers/fidel_excel.cpp
+++ b/src/mame/drivers/fidel_excel.cpp
@@ -205,20 +205,14 @@ private:
void ttl_w(offs_t offset, u8 data);
u8 ttl_r(offs_t offset);
- u8 m_select;
- u8 m_7seg_data;
- u8 m_speech_data;
- u8 m_speech_bank;
+ u8 m_select = 0;
+ u8 m_7seg_data = 0;
+ u8 m_speech_data = 0;
+ u8 m_speech_bank = 0;
};
void excel_state::machine_start()
{
- // zerofill
- m_select = 0;
- m_7seg_data = 0;
- m_speech_data = 0;
- m_speech_bank = 0;
-
// register for savestates
save_item(NAME(m_select));
save_item(NAME(m_7seg_data));
diff --git a/src/mame/drivers/fidel_phantom.cpp b/src/mame/drivers/fidel_phantom.cpp
index 66e98bf11a0..240298d2aed 100644
--- a/src/mame/drivers/fidel_phantom.cpp
+++ b/src/mame/drivers/fidel_phantom.cpp
@@ -142,6 +142,7 @@ void phantom_state::init_fphantom()
}
+
/******************************************************************************
Motor Sim
******************************************************************************/
@@ -206,6 +207,7 @@ void phantom_state::update_pieces_position(int state)
}
+
/******************************************************************************
I/O
******************************************************************************/
@@ -336,6 +338,7 @@ u8 phantom_state::vmotor_ff_clear_r()
}
+
/******************************************************************************
Address Maps
******************************************************************************/
diff --git a/src/mame/drivers/mephisto_academy.cpp b/src/mame/drivers/mephisto_academy.cpp
index 41222786920..ee192750b48 100644
--- a/src/mame/drivers/mephisto_academy.cpp
+++ b/src/mame/drivers/mephisto_academy.cpp
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco, hap
// thanks-to:yoyo_chessboard
-/***************************************************************************
+/******************************************************************************
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.
Module PCB is the same as Super Mondial II College, label HGS 10 116 05.
-***************************************************************************/
+******************************************************************************/
#include "emu.h"
@@ -126,6 +126,7 @@ INPUT_PORTS_END
void academy_state::academy(machine_config &config)
{
+ /* basic machine hardware */
M65C02(config, m_maincpu, 4.9152_MHz_XTAL);
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_DISPLAY_MODULE2(config, "display"); // internal
+ /* video hardware */
PWM_DISPLAY(config, m_led_pwm).set_size(4, 4);
config.set_default_layout(layout_mephisto_academy);
}
@@ -176,7 +178,7 @@ ROM_END
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, 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 )
diff --git a/src/mame/drivers/mephisto_amsterdam.cpp b/src/mame/drivers/mephisto_amsterdam.cpp
index eb0ad914b60..82d7dd86160 100644
--- a/src/mame/drivers/mephisto_amsterdam.cpp
+++ b/src/mame/drivers/mephisto_amsterdam.cpp
@@ -253,7 +253,7 @@ ROM_END
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( 1986, dallas32, 0, 0, dallas32, amsterdam, amsterdam_state, empty_init, "Hegener + Glaser", "Mephisto Dallas 68020", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/mephisto_glasgow.cpp b/src/mame/drivers/mephisto_glasgow.cpp
index f4ab6e85c5a..6031ddccbbd 100644
--- a/src/mame/drivers/mephisto_glasgow.cpp
+++ b/src/mame/drivers/mephisto_glasgow.cpp
@@ -111,7 +111,8 @@ u8 glasgow_state::keys_r()
data |= 1 << i;
// 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;
}
@@ -239,7 +240,7 @@ ROM_END
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 )
// newer chesscomputers on 4-ROM hardware (see mephisto_amsterdam.cpp for parent sets)
diff --git a/src/mame/drivers/mephisto_milano.cpp b/src/mame/drivers/mephisto_milano.cpp
index c1385fa3d47..2eed4fecdb2 100644
--- a/src/mame/drivers/mephisto_milano.cpp
+++ b/src/mame/drivers/mephisto_milano.cpp
@@ -113,7 +113,7 @@ u8 milano_state::board_r()
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 )
PORT_START("KEY")
- PORT_BIT(0x01, IP_ACTIVE_LOW, 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(0x04, IP_ACTIVE_LOW, 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(0x10, IP_ACTIVE_LOW, 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(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(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(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Training / Pawn") PORT_CODE(KEYCODE_T)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Info / Knight") PORT_CODE(KEYCODE_I)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Memory / Bishop") PORT_CODE(KEYCODE_M)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Position / Rook") PORT_CODE(KEYCODE_O)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Level / Queen") PORT_CODE(KEYCODE_L)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Function / King") PORT_CODE(KEYCODE_F)
+ 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_HIGH, IPT_KEYPAD) PORT_NAME("Clear / New Game") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // "
INPUT_PORTS_END
diff --git a/src/mame/drivers/mephisto_mm2.cpp b/src/mame/drivers/mephisto_mm2.cpp
index 63b8bd01515..2299218ec0f 100644
--- a/src/mame/drivers/mephisto_mm2.cpp
+++ b/src/mame/drivers/mephisto_mm2.cpp
@@ -6,13 +6,14 @@ Mephisto 4 + 5 Chess Computer
2007 Dirk V.
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
overclock plus ROM patch)
===============================================================================
Hardware notes:
-- CPU: G65SC02P-4 or R65C02P3/R65C02P4
+- CPU: R65C02P3/R65C02P4 or G65SC02P-4
- Clock: 4.9152 MHz
- NMI CLK: 600 Hz
- 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/carts.h"
-#include "cpu/m6502/m65sc02.h"
+#include "cpu/m6502/r65c02.h"
#include "machine/74259.h"
#include "machine/mmboard.h"
#include "sound/dac.h"
@@ -169,7 +170,7 @@ void mm2_state::lcd_irqack_w(u8 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);
}
@@ -205,9 +206,9 @@ void mm2_state::mm2_mem(address_map &map)
void mm2_state::rebel5_mem(address_map &map)
{
map(0x0000, 0x1fff).ram();
- map(0x2000, 0x2007).w("outlatch", FUNC(hc259_device::write_d7));
- map(0x3000, 0x4000).r("board", FUNC(mephisto_board_device::input_r));
+ map(0x2000, 0x2007).w("outlatch", FUNC(hc259_device::write_d7)).nopr();
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(0x6000, 0x6000).w("board", FUNC(mephisto_board_device::led_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(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(0x2c00, 0x2c07).r(FUNC(mm2_state::keys_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)
{
/* 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);
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( 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, mm4a, mm4, 0, mm4, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM IV (v7.00)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/mephisto_mondial.cpp b/src/mame/drivers/mephisto_mondial.cpp
index 71338294db7..5c40498252c 100644
--- a/src/mame/drivers/mephisto_mondial.cpp
+++ b/src/mame/drivers/mephisto_mondial.cpp
@@ -12,7 +12,6 @@ Hardware notes:
TODO:
- verify XTAL (or maybe RC or LC circuit), 2MHz is correct
-- unknown read from 0x2000
- dump/add MM 1000 module
******************************************************************************/
@@ -61,6 +60,7 @@ private:
void mondial_mem(address_map &map);
void control_w(u8 data);
+ u8 irq_ack_r();
u8 input_r(offs_t offset);
u8 m_inp_mux = 0;
@@ -77,6 +77,25 @@ void mondial_state::machine_start()
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 data = 0;
@@ -92,17 +111,6 @@ u8 mondial_state::input_r(offs_t offset)
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(0x1000, 0x1000).w(FUNC(mondial_state::control_w));
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();
}
@@ -126,24 +134,24 @@ void mondial_state::mondial_mem(address_map &map)
static INPUT_PORTS_START( mondial )
PORT_START("KEY.0")
- 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("Knight / 2") PORT_CODE(KEYCODE_2)
- 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("Rook / 4") PORT_CODE(KEYCODE_4)
- 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("King / 6") PORT_CODE(KEYCODE_6)
- 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("White / 8") PORT_CODE(KEYCODE_8)
+ 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_CODE(KEYCODE_2_PAD)
+ 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_CODE(KEYCODE_4_PAD)
+ 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_CODE(KEYCODE_6_PAD)
+ 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_CODE(KEYCODE_8_PAD)
PORT_START("KEY.1")
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(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(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(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RES") PORT_CODE(KEYCODE_DEL)
+ 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_F1)
INPUT_PORTS_END
@@ -159,7 +167,7 @@ void mondial_state::mondial(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &mondial_state::mondial_mem);
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);
m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));
diff --git a/src/mame/drivers/mephisto_mondial2.cpp b/src/mame/drivers/mephisto_mondial2.cpp
index 42621bb3f43..2d6a79b7c2d 100644
--- a/src/mame/drivers/mephisto_mondial2.cpp
+++ b/src/mame/drivers/mephisto_mondial2.cpp
@@ -55,9 +55,9 @@ private:
void mondial2_mem(address_map &map);
void update_leds();
- u8 input_r(offs_t offset);
void control_w(u8 data);
void board_w(u8 data);
+ u8 input_r(offs_t offset);
u8 m_keypad_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);
}
-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)
{
// d0-d3: keypad mux
@@ -120,6 +103,23 @@ void mondial2_state::board_w(u8 data)
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 )
PORT_START("KEY.0")
- 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("Knight / 2") PORT_CODE(KEYCODE_2)
- 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("Rook / 4") PORT_CODE(KEYCODE_4)
+ 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_CODE(KEYCODE_2_PAD)
+ 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_CODE(KEYCODE_4_PAD)
PORT_START("KEY.1")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Queen / 5") PORT_CODE(KEYCODE_5)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("King / 6") PORT_CODE(KEYCODE_6)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Black / 7") PORT_CODE(KEYCODE_7)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("White / 8") PORT_CODE(KEYCODE_8)
+ 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_CODE(KEYCODE_6_PAD)
+ 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_CODE(KEYCODE_8_PAD)
PORT_START("KEY.2")
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_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(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RES") PORT_CODE(KEYCODE_DEL)
+ 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_F1)
INPUT_PORTS_END
diff --git a/src/mame/drivers/mephisto_mondial68k.cpp b/src/mame/drivers/mephisto_mondial68k.cpp
index 68f05d5cd82..2f8cf8637b2 100644
--- a/src/mame/drivers/mephisto_mondial68k.cpp
+++ b/src/mame/drivers/mephisto_mondial68k.cpp
@@ -6,7 +6,7 @@
Mephisto Mondial 68000XL
The chess engine is actually the one from Mephisto Dallas.
-Hardware:
+Hardware notes:
- TS68000CP12 @ 12MHz
- 64KB ROM
- 16KB RAM
@@ -38,7 +38,8 @@ public:
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, 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_inputs(*this, "IN.%u", 0)
, m_digits(*this, "digit%u", 0U)
@@ -51,15 +52,16 @@ protected:
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 board_mux_w(u8 data);
u8 inputs_r();
- void update_display();
required_device<cpu_device> m_maincpu;
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_ioport_array<4> m_inputs;
output_finder<4> m_digits;
@@ -83,12 +85,12 @@ void mondial68k_state::machine_start()
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)
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
m_board_mux = data;
- update_display();
+ update_leds();
}
void mondial68k_state::input_mux_w(u8 data)
@@ -107,7 +109,7 @@ void mondial68k_state::input_mux_w(u8 data)
// d0-d3: button mux
// d6,d7: led select
m_input_mux = data;
- update_display();
+ update_leds();
}
u8 mondial68k_state::inputs_r()
@@ -137,7 +139,7 @@ void mondial68k_state::mondial68k_mem(address_map &map)
{
map(0x000000, 0x00ffff).rom();
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(0x860000, 0x860000).w(FUNC(mondial68k_state::board_mux_w));
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_periodic_int(FUNC(mondial68k_state::irq5_line_hold), attotime::from_hz(128));
- hc259_device &outlatch(HC259(config, "outlatch"));
- outlatch.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));
- outlatch.q_out_cb<2>().set(m_lcd, FUNC(pcf2112_device::dlen_w));
- outlatch.q_out_cb<6>().set_nop(); // another DAC input?
- outlatch.q_out_cb<7>().set("dac", FUNC(dac_1bit_device::write));
+ HC259(config, m_lcd_latch);
+ m_lcd_latch->q_out_cb<0>().set(m_lcd, FUNC(pcf2112_device::clb_w));
+ m_lcd_latch->q_out_cb<1>().set(m_lcd, FUNC(pcf2112_device::data_w));
+ m_lcd_latch->q_out_cb<2>().set(m_lcd, FUNC(pcf2112_device::dlen_w));
+ m_lcd_latch->q_out_cb<6>().set_nop(); // another DAC input?
+ m_lcd_latch->q_out_cb<7>().set("dac", FUNC(dac_1bit_device::write));
SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS);
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 */
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);
/* sound hardware */
@@ -231,5 +233,5 @@ ROM_END
Game Drivers
***************************************************************************/
-/* 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 )
+/* 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 )
diff --git a/src/mame/drivers/mephisto_montec.cpp b/src/mame/drivers/mephisto_montec.cpp
index 6b4d5a5bc90..3f07fb08e0b 100644
--- a/src/mame/drivers/mephisto_montec.cpp
+++ b/src/mame/drivers/mephisto_montec.cpp
@@ -1,435 +1,240 @@
// license:BSD-3-Clause
-// copyright-holders:Sandro Ronco
-// thanks-to:yoyo_chessboard
-/**************************************************************************************************
+// copyright-holders:Sandro Ronco, hap
+/******************************************************************************
- Mephisto Monte Carlo
- Mephisto Mega IV
- Mephisto Monte Carlo IV LE
- Mephisto Super Mondial
- Mephisto Super Mondial II
+Mephisto Monte Carlo
+Mephisto Monte Carlo IV
+Mephisto Monte Carlo IV - Limited Edition
- smondialb notes:
- - holding CL+INFO+BOOK on boot load the test mode
+The chess engine is by Frans Morsch, but for the IV version it's by Ed Schroeder.
+Limited Edition has a twice faster CPU.
- TODO:
- - split driver into several files?
- - megaiv/smondial leds are tri-color
- - why are megaiv/smondial2 beeps noisy?
- - what is montec 0x2000? (it can't be nmi ack)
- - add Monte Carlo IV (non-LE)
+Hardware notes:
+- R65C02P4 @ 4MHz
+- 8KB RAM(battery-backed), 32KB ROM
+- expansion slot at underside (not used)
+- 2*PCF2112, 2 7seg LCD screens
+- 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 "bus/generic/slot.h"
-#include "bus/generic/carts.h"
#include "cpu/m6502/m65c02.h"
+#include "cpu/m6502/r65c02.h"
#include "machine/74259.h"
#include "machine/nvram.h"
#include "machine/mmboard.h"
#include "sound/dac.h"
#include "video/pcf2100.h"
+#include "video/pwm.h"
-#include "screen.h"
#include "speaker.h"
-#include "softlist.h"
+// internal artwork
#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:
- 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)
, m_maincpu(*this, "maincpu")
, 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_dac(*this, "dac")
, m_keys(*this, "KEY.%u", 0)
, 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 monteciv(machine_config &config);
- void megaiv(machine_config &config);
+ void montec4le(machine_config &config);
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_reset() override;
+private:
required_device<cpu_device> m_maincpu;
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<dac_bit_interface> m_dac;
required_ioport_array<2> m_keys;
output_finder<8> m_digits;
- output_finder<16> m_low_leds, m_high_leds;
-
- uint8_t m_leds_mux;
-};
-
-class mephisto_smondial_state : public mephisto_montec_state
-{
-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);
+ void montec_mem(address_map &map);
- required_device<hc259_device> m_ledlatch;
- required_device<hc259_device> m_boardlatch;
+ 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();
};
-
-void mephisto_montec_state::machine_start()
+void montec_state::machine_start()
{
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++)
- for(int j=0; j<4; j++)
- if (BIT(data, i))
- m_high_leds[(i << 2) | j] = BIT(~data, 4 + j);
-}
+
+/******************************************************************************
+ I/O
+******************************************************************************/
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);
}
-
-uint8_t mephisto_montec_state::montec_input_r()
+void montec_state::led_w(u8 data)
{
- if (!m_muxlatch->q0_r()) return m_keys[1]->read();
- else if (!m_muxlatch->q1_r()) return m_keys[0]->read();
-
- return m_board->input_r() ^ 0xff;
+ // d0-d3: keypad led select
+ // d4-d7: keypad led data
+ m_led_pwm->matrix(data & 0xf, ~data >> 4 & 0xf);
}
-void mephisto_montec_state::megaiv_led_w(uint8_t data)
+u8 montec_state::irq_ack_r()
{
- if (m_leds_mux != m_board->mux_r())
- {
- 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));
+ if (!machine().side_effects_disabled())
+ m_maincpu->set_input_line(0, CLEAR_LINE);
+
+ 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;
- 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;
+ u8 data = 0;
+
+ // 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 BIT(m_board->input_r(), offset) << 7;
+ return ~m_board->input_r() | data;
}
-void mephisto_montec_state::montec_mem(address_map &map)
-{
- map(0x0000, 0x1fff).ram().share("nvram");
- map(0x2000, 0x2000).nopr(); // ?
- map(0x2400, 0x2400).r(FUNC(mephisto_montec_state::montec_input_r));
- 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(0x3000, 0x3007).w(m_muxlatch, FUNC(hc259_device::write_d7)).nopr();
- map(0x3400, 0x3400).w(FUNC(mephisto_montec_state::montec_led_w));
- map(0x8000, 0xffff).rom();
-}
-void mephisto_montec_state::megaiv_mem(address_map &map)
+/******************************************************************************
+ Address Maps
+******************************************************************************/
+
+void montec_state::montec_mem(address_map &map)
{
map(0x0000, 0x1fff).ram().share("nvram");
- map(0x2400, 0x2400).w(FUNC(mephisto_montec_state::megaiv_led_w));
+ map(0x2000, 0x2000).rw(FUNC(montec_state::irq_ack_r), FUNC(montec_state::irq_ack_w));
+ map(0x2400, 0x2400).r(FUNC(montec_state::input_r));
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(0x2c00, 0x2c00).w(m_board, FUNC(mephisto_board_device::led_w));
+ map(0x3000, 0x3007).w(m_lcd_latch, FUNC(hc259_device::write_d7)).nopr();
+ map(0x3400, 0x3400).w(FUNC(montec_state::led_w));
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>
-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();
-}
+/******************************************************************************
+ Input Ports
+******************************************************************************/
static INPUT_PORTS_START( montec )
PORT_START("KEY.0")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("1 Pawn") PORT_CODE(KEYCODE_1)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("2 Knight") PORT_CODE(KEYCODE_2)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("3 Bishop") PORT_CODE(KEYCODE_3)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("4 Rook") PORT_CODE(KEYCODE_4)
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("5 Queen") PORT_CODE(KEYCODE_5)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("6 King") PORT_CODE(KEYCODE_6)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("7 Black") PORT_CODE(KEYCODE_7)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("8 White") PORT_CODE(KEYCODE_8)
+ 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("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("MEM") PORT_CODE(KEYCODE_M)
+ 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_DEL) PORT_CODE(KEYCODE_BACKSPACE)
+ 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_CODE(KEYCODE_ENTER_PAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RES") PORT_CODE(KEYCODE_F1)
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(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("0 Pos") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_O)
- 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(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Clear") PORT_CODE(KEYCODE_BACKSPACE)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Level") PORT_CODE(KEYCODE_L)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Reset") PORT_CODE(KEYCODE_DEL)
+ 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("Knight / 2") PORT_CODE(KEYCODE_2)
+ 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("Rook / 4") PORT_CODE(KEYCODE_4)
+ 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("King / 6") PORT_CODE(KEYCODE_6)
+ 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("White / 8") PORT_CODE(KEYCODE_8)
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")
- 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")
- 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
+/******************************************************************************
+ Machine Configs
+******************************************************************************/
-void mephisto_montec_state::montec(machine_config &config)
+void montec_state::montec(machine_config &config)
{
- M65C02(config, m_maincpu, XTAL(8'000'000) / 2); // R65C02P4
- m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_montec_state::montec_mem);
- m_maincpu->set_periodic_int(FUNC(mephisto_montec_state::nmi_line_pulse), attotime::from_hz(XTAL(8'000'000) / (1 << 14)));
+ /* basic machine hardware */
+ R65C02(config, m_maincpu, 8_MHz_XTAL / 2); // R65C02P4
+ 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);
- HC259(config, m_muxlatch);
- m_muxlatch->q_out_cb<2>().set(m_dac, FUNC(dac_bit_interface::write));
- m_muxlatch->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_muxlatch->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_muxlatch->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));
+ HC259(config, m_lcd_latch);
+ m_lcd_latch->q_out_cb<2>().set(m_dac, FUNC(dac_bit_interface::write)).invert();
+ 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));
+
+ MEPHISTO_SENSORS_BOARD(config, m_board); // internal
+ 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(mephisto_montec_state::montec_lcd_s_w<0>));
+ 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(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_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);
-}
-void mephisto_montec_state::monteciv(machine_config &config)
-{
- montec(config);
- m_maincpu->set_clock(XTAL(8'000'000));
- m_board->set_delay(attotime::from_msec(150));
+ /* sound hardware */
+ SPEAKER(config, "speaker").front_center();
+ DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
}
-void mephisto_montec_state::megaiv(machine_config &config)
+void montec_state::montec4le(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)));
+ /* basic machine hardware */
+ M65C02(config.replace(), m_maincpu, 8_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &montec_state::montec_mem);
- GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "smondial2_cart");
- SOFTWARE_LIST(config, "cart_list").set_original("mephisto_smondial2");
+ const attotime irq_period = attotime::from_hz(8_MHz_XTAL / 0x4000);
+ m_maincpu->set_periodic_int(FUNC(montec_state::irq0_line_assert), irq_period);
- config.set_default_layout(layout_mephisto_smondial2);
+ m_board->set_delay(attotime::from_msec(150));
}
-ROM_START( megaiv )
- ROM_REGION( 0x10000, "maincpu", 0 )
- 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 Definitions
+******************************************************************************/
ROM_START( montec )
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_END
-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_START( montec4le )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("supermondial_ab.bin", 0x8000, 0x8000, CRC(a8781685) SHA1(fd4c97e13bd398dc4c85e3e1778bf7e59fccd71e) )
+ ROM_LOAD("mc4le.bin", 0x8000, 0x8000, CRC(c4887694) SHA1(7f482d2a40fcb3125266e7a5407da315b4f9b49c) )
ROM_END
-ROM_START( smondialb )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("supermondial_b.bin", 0x8000, 0x8000, CRC(6fb89e97) SHA1(b001e657b4fdc097322b28a25c31814f3da7b124) )
-ROM_END
+} // anonymous namespace
-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 )
+/***************************************************************************
+ Game Drivers
+***************************************************************************/
-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 )
-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 )
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+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( 1987, monteca, montec, 0, montec, montec, montec_state, empty_init, "Hegener + Glaser", "Mephisto Monte Carlo (ver. MC2)", 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 )
-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( 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( 1990, montec4le, 0, 0, montec4le, montec, montec_state, empty_init, "Hegener + Glaser", "Mephisto Monte Carlo IV - Limited Edition", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/mephisto_smondial.cpp b/src/mame/drivers/mephisto_smondial.cpp
new file mode 100644
index 00000000000..a1f119ba28e
--- /dev/null
+++ b/src/mame/drivers/mephisto_smondial.cpp
@@ -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 )
diff --git a/src/mame/layout/mephisto_academy.lay b/src/mame/layout/mephisto_academy.lay
index fabca06d644..d9f923498a7 100644
--- a/src/mame/layout/mephisto_academy.lay
+++ b/src/mame/layout/mephisto_academy.lay
@@ -20,10 +20,10 @@ license:CC0
<element name="led" defstate="0">
<disk state="0">
- <color red="0.20" green="0.0" blue="0.0" />
+ <color red="0.2" green="0" blue="0" />
</disk>
<disk state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</disk>
</element>
<element name="hlbr" defstate="0">
diff --git a/src/mame/layout/mephisto_alm16.lay b/src/mame/layout/mephisto_alm16.lay
index e74f8ca549b..4cebb32edd6 100644
--- a/src/mame/layout/mephisto_alm16.lay
+++ b/src/mame/layout/mephisto_alm16.lay
@@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" />
</disk>
<disk state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</disk>
</element>
diff --git a/src/mame/layout/mephisto_alm32.lay b/src/mame/layout/mephisto_alm32.lay
index e141fc81c1c..fe82c2b9431 100644
--- a/src/mame/layout/mephisto_alm32.lay
+++ b/src/mame/layout/mephisto_alm32.lay
@@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" />
</disk>
<disk state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</disk>
</element>
diff --git a/src/mame/layout/mephisto_amsterdam.lay b/src/mame/layout/mephisto_amsterdam.lay
index 51f2378c647..5cdc50483d0 100644
--- a/src/mame/layout/mephisto_amsterdam.lay
+++ b/src/mame/layout/mephisto_amsterdam.lay
@@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" />
</disk>
<disk state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</disk>
</element>
<element name="hlb" defstate="0">
diff --git a/src/mame/layout/mephisto_berlin.lay b/src/mame/layout/mephisto_berlin.lay
index 1ea3103a18f..d77ad3c87f3 100644
--- a/src/mame/layout/mephisto_berlin.lay
+++ b/src/mame/layout/mephisto_berlin.lay
@@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" />
</disk>
<disk state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</disk>
</element>
<element name="hlb" defstate="0">
diff --git a/src/mame/layout/mephisto_bup.lay b/src/mame/layout/mephisto_bup.lay
index 8b718a333e7..80caabb1f61 100644
--- a/src/mame/layout/mephisto_bup.lay
+++ b/src/mame/layout/mephisto_bup.lay
@@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" />
</disk>
<disk state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</disk>
</element>
<element name="hlb" defstate="0">
diff --git a/src/mame/layout/mephisto_gen32.lay b/src/mame/layout/mephisto_gen32.lay
index 498fbecc855..85eed4e009a 100644
--- a/src/mame/layout/mephisto_gen32.lay
+++ b/src/mame/layout/mephisto_gen32.lay
@@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" />
</disk>
<disk state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</disk>
</element>
diff --git a/src/mame/layout/mephisto_glasgow.lay b/src/mame/layout/mephisto_glasgow.lay
index 4ec926a6368..3b161ef2592 100644
--- a/src/mame/layout/mephisto_glasgow.lay
+++ b/src/mame/layout/mephisto_glasgow.lay
@@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" />
</disk>
<disk state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</disk>
</element>
<element name="hlb" defstate="0">
diff --git a/src/mame/layout/mephisto_megaiv.lay b/src/mame/layout/mephisto_megaiv.lay
deleted file mode 100644
index 59bf904bebe..00000000000
--- a/src/mame/layout/mephisto_megaiv.lay
+++ /dev/null
@@ -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>
diff --git a/src/mame/layout/mephisto_milano.lay b/src/mame/layout/mephisto_milano.lay
index ad4c4b74f10..dff38a17dc5 100644
--- a/src/mame/layout/mephisto_milano.lay
+++ b/src/mame/layout/mephisto_milano.lay
@@ -14,7 +14,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" />
</disk>
<disk state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</disk>
</element>
<element name="ledr" defstate="0">
@@ -22,7 +22,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" />
</rect>
<rect state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</rect>
</element>
<element name="hlb" defstate="0">
diff --git a/src/mame/layout/mephisto_mm2.lay b/src/mame/layout/mephisto_mm2.lay
index 4d76871cb0d..52e5535e18f 100644
--- a/src/mame/layout/mephisto_mm2.lay
+++ b/src/mame/layout/mephisto_mm2.lay
@@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" />
</disk>
<disk state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</disk>
</element>
<element name="hlb" defstate="0">
diff --git a/src/mame/layout/mephisto_modena.lay b/src/mame/layout/mephisto_modena.lay
index dd0b91f0903..043921ccd28 100644
--- a/src/mame/layout/mephisto_modena.lay
+++ b/src/mame/layout/mephisto_modena.lay
@@ -14,7 +14,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" />
</disk>
<disk state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</disk>
</element>
<element name="ledr" defstate="0">
@@ -22,7 +22,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" />
</rect>
<rect state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</rect>
</element>
<element name="hlb" defstate="0">
diff --git a/src/mame/layout/mephisto_modular_tm.lay b/src/mame/layout/mephisto_modular_tm.lay
index 6eb92e690e0..208344434a6 100644
--- a/src/mame/layout/mephisto_modular_tm.lay
+++ b/src/mame/layout/mephisto_modular_tm.lay
@@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" />
</disk>
<disk state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</disk>
</element>
diff --git a/src/mame/layout/mephisto_mondial.lay b/src/mame/layout/mephisto_mondial.lay
index 6ba3f4c0498..23f1d454190 100644
--- a/src/mame/layout/mephisto_mondial.lay
+++ b/src/mame/layout/mephisto_mondial.lay
@@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" />
</rect>
<rect state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</rect>
</element>
<element name="hlb" defstate="0">
diff --git a/src/mame/layout/mephisto_mondial2.lay b/src/mame/layout/mephisto_mondial2.lay
index b9ccca1f879..493e8c0f69e 100644
--- a/src/mame/layout/mephisto_mondial2.lay
+++ b/src/mame/layout/mephisto_mondial2.lay
@@ -11,7 +11,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" />
</rect>
<rect state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</rect>
</element>
<element name="hlb" defstate="0">
diff --git a/src/mame/layout/mephisto_mondial68k.lay b/src/mame/layout/mephisto_mondial68k.lay
index ae5695df054..79bb8780067 100644
--- a/src/mame/layout/mephisto_mondial68k.lay
+++ b/src/mame/layout/mephisto_mondial68k.lay
@@ -15,7 +15,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" />
</rect>
<rect state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</rect>
</element>
<element name="hlb" defstate="0">
diff --git a/src/mame/layout/mephisto_montec.lay b/src/mame/layout/mephisto_montec.lay
index d86b683554d..02d13f9594b 100644
--- a/src/mame/layout/mephisto_montec.lay
+++ b/src/mame/layout/mephisto_montec.lay
@@ -10,12 +10,24 @@ license:CC0
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</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">
<disk state="0">
- <color red="0.20" green="0.0" blue="0.0" />
+ <color red="0.2" green="0" blue="0" />
</disk>
<disk state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</disk>
</element>
<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="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 name="led104" ref="led"> <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 name="led112" ref="led"> <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 name="led106" ref="led"> <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 name="led115" ref="led"> <bounds x="76.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 ref="ledo"><bounds x="22.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 ref="ledo"><bounds x="40.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 ref="ledo"><bounds x="58.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 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_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_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.0" 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.0" 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.0" 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.0" 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.1" 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.1" 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.1" 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="hlbr" inputtag="KEY.1" inputmask="0x80"> <bounds x="76" y="8" 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.1" inputmask="0x02"> <bounds x="22" 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.1" inputmask="0x08"> <bounds x="40" 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.1" inputmask="0x20"> <bounds x="58" 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.1" inputmask="0x80"> <bounds x="76" y="2" 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.0" inputmask="0x02"> <bounds x="22" 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.0" inputmask="0x08"> <bounds x="40" 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.0" inputmask="0x20"> <bounds x="58" 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.0" inputmask="0x80"> <bounds x="76" y="8" width="1.5" height="2.5" /> </element>
</group>
<!-- build screen -->
diff --git a/src/mame/layout/mephisto_polgar.lay b/src/mame/layout/mephisto_polgar.lay
index e45d884e6b9..e3618b188a8 100644
--- a/src/mame/layout/mephisto_polgar.lay
+++ b/src/mame/layout/mephisto_polgar.lay
@@ -14,7 +14,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" />
</disk>
<disk state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</disk>
</element>
<element name="hlb" defstate="0">
diff --git a/src/mame/layout/mephisto_risc.lay b/src/mame/layout/mephisto_risc.lay
index e45d884e6b9..e3618b188a8 100644
--- a/src/mame/layout/mephisto_risc.lay
+++ b/src/mame/layout/mephisto_risc.lay
@@ -14,7 +14,7 @@ license:CC0
<color red="0.20" green="0.0" blue="0.0" />
</disk>
<disk state="1">
- <color red="0.95" green="0.0" blue="0.0" />
+ <color red="1" green="0.1" blue="0.1" />
</disk>
</element>
<element name="hlb" defstate="0">
diff --git a/src/mame/layout/mephisto_smondial.lay b/src/mame/layout/mephisto_smondial.lay
index de095c6b923..a82503ba114 100644
--- a/src/mame/layout/mephisto_smondial.lay
+++ b/src/mame/layout/mephisto_smondial.lay
@@ -10,12 +10,24 @@ license:CC0
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</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">
<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" />
+ <color red="1" green="0.1" blue="0.1" />
</rect>
</element>
<element name="hlb" defstate="0">
@@ -201,14 +213,14 @@ license:CC0
<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 ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
+ <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
+ <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
+ <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
+ <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
+ <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
+ <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
+ <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x80"><bounds x="70" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element name="piece_a~i~" ref="piece"><bounds x="0" y="~y~" width="10" height="10" /></element>
<element name="piece_b~i~" ref="piece"><bounds x="10" y="~y~" width="10" height="10" /></element>
@@ -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_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>
+ <element ref="hlub" inputtag="board:UI" inputmask="0x200"><bounds x="1" y="11.5" width="8" height="2.5" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:UI" inputmask="0x100"><bounds x="1" y="15" width="8" height="2.5" /><color alpha="0.25" /></element>
<!-- spawn -->
<element ref="text_uis1"><bounds x="0" y="20.5" width="10" height="2" /></element>
@@ -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_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>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0001"><bounds x="1" y="23" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0002"><bounds x="1" y="27" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0004"><bounds x="1" y="31" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0008"><bounds x="5" y="23" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0010"><bounds x="5" y="27" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0020"><bounds x="5" y="31" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0040"><bounds x="1" y="36" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0080"><bounds x="1" y="40" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0100"><bounds x="1" y="44" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0200"><bounds x="5" y="36" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0400"><bounds x="5" y="40" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0800"><bounds x="5" y="44" width="4" height="4" /><color alpha="0.25" /></element>
<!-- hand -->
<element ref="text_uih1"><bounds x="0" y="51" width="10" height="2" /></element>
@@ -331,7 +343,7 @@ license:CC0
<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>
+ <element ref="hlub" inputtag="board:UI" inputmask="0x08"><bounds x="1" y="60.5" width="8" height="2.5" /><color alpha="0.25" /></element>
<!-- undo -->
<element ref="text_uiu1"><bounds x="0" y="66" width="10" height="2" /></element>
@@ -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_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 ref="hlub" inputtag="board:UI" inputmask="0x10"><bounds x="1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:UI" inputmask="0x20"><bounds x="3.1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:UI" inputmask="0x40"><bounds x="5.2" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:UI" inputmask="0x80"><bounds x="7.3" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element name="count_ui0" ref="text_uiu3a"><bounds x="0" y="75" width="4" height="2" /></element>
<element name="count_ui1" ref="text_uiu3c"><bounds x="6" y="75" width="4" height="2" /></element>
@@ -371,14 +383,32 @@ license:CC0
<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="ledo"><bounds x="13.0" 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 ref="ledo"><bounds x="30.0" 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 ref="ledo"><bounds x="47.0" 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 ref="ledo"><bounds x="64.0" 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="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="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="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="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_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>
+ <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="0x01"> <bounds x="21.5" 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.3" inputmask="0x01"> <bounds x="38.5" 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="0x02"> <bounds x="55.5" 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.3" inputmask="0x02"> <bounds x="72.5" y="2" 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="0x04"> <bounds x="21.5" 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.3" inputmask="0x04"> <bounds x="38.5" 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="0x08"> <bounds x="55.5" 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.3" inputmask="0x08"> <bounds x="72.5" y="7.5" width="6" height="4" /> <color alpha="0.3"/></element>
</group>
@@ -448,7 +478,7 @@ license:CC0
<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_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>
@@ -470,23 +500,59 @@ license:CC0
<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>
+ <element ref="ledo"><bounds x="15.7" y="77.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 ref="ledo"><bounds x="15.7" y="57.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 ref="ledo"><bounds x="15.7" y="37.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 ref="ledo"><bounds x="15.7" y="17.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="0.2" ref="ledg" blend="add"><bounds x="15.7" y="77.25" width="0.8" height="1.5" /></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="2.2" ref="ledg" blend="add"><bounds x="15.7" y="57.25" width="0.8" height="1.5" /></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="4.2" ref="ledg" blend="add"><bounds x="15.7" y="37.25" width="0.8" height="1.5" /></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="6.2" ref="ledg" blend="add"><bounds x="15.7" y="17.25" width="0.8" height="1.5" /></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 -->
<group ref="panel"><bounds x="18" y="89" width="79" height="13" /></group>
diff --git a/src/mame/layout/mephisto_smondial2.lay b/src/mame/layout/mephisto_smondial2.lay
index a67d5d3fc2a..7daf3e2d41e 100644
--- a/src/mame/layout/mephisto_smondial2.lay
+++ b/src/mame/layout/mephisto_smondial2.lay
@@ -10,12 +10,24 @@ license:CC0
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</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">
<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" />
+ <color red="1" green="0.1" blue="0.1" />
</rect>
</element>
<element name="hlb" defstate="0">
@@ -204,14 +216,14 @@ license:CC0
<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 ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
+ <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
+ <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
+ <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
+ <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
+ <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
+ <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
+ <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x80"><bounds x="70" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element name="piece_a~i~" ref="piece"><bounds x="0" y="~y~" width="10" height="10" /></element>
<element name="piece_b~i~" ref="piece"><bounds x="10" y="~y~" width="10" height="10" /></element>
@@ -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_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>
+ <element ref="hlub" inputtag="board:UI" inputmask="0x200"><bounds x="1" y="11.5" width="8" height="2.5" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:UI" inputmask="0x100"><bounds x="1" y="15" width="8" height="2.5" /><color alpha="0.25" /></element>
<!-- spawn -->
<element ref="text_uis1"><bounds x="0" y="20.5" width="10" height="2" /></element>
@@ -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_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>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0001"><bounds x="1" y="23" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0002"><bounds x="1" y="27" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0004"><bounds x="1" y="31" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0008"><bounds x="5" y="23" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0010"><bounds x="5" y="27" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0020"><bounds x="5" y="31" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0040"><bounds x="1" y="36" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0080"><bounds x="1" y="40" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0100"><bounds x="1" y="44" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0200"><bounds x="5" y="36" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0400"><bounds x="5" y="40" width="4" height="4" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:SPAWN" inputmask="0x0800"><bounds x="5" y="44" width="4" height="4" /><color alpha="0.25" /></element>
<!-- hand -->
<element ref="text_uih1"><bounds x="0" y="51" width="10" height="2" /></element>
@@ -334,7 +346,7 @@ license:CC0
<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>
+ <element ref="hlub" inputtag="board:UI" inputmask="0x08"><bounds x="1" y="60.5" width="8" height="2.5" /><color alpha="0.25" /></element>
<!-- undo -->
<element ref="text_uiu1"><bounds x="0" y="66" width="10" height="2" /></element>
@@ -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_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 ref="hlub" inputtag="board:UI" inputmask="0x10"><bounds x="1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:UI" inputmask="0x20"><bounds x="3.1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:UI" inputmask="0x40"><bounds x="5.2" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
+ <element ref="hlub" inputtag="board:UI" inputmask="0x80"><bounds x="7.3" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element name="count_ui0" ref="text_uiu3a"><bounds x="0" y="75" width="4" height="2" /></element>
<element name="count_ui1" ref="text_uiu3c"><bounds x="6" y="75" width="4" height="2" /></element>
@@ -374,14 +386,32 @@ license:CC0
<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="ledo"><bounds x="13.0" 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 ref="ledo"><bounds x="30.0" 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 ref="ledo"><bounds x="47.0" 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 ref="ledo"><bounds x="64.0" 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="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_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.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>
+ <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="0x01"> <bounds x="21.5" 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.3" inputmask="0x01"> <bounds x="38.5" 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="0x02"> <bounds x="55.5" 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.3" inputmask="0x02"> <bounds x="72.5" y="2" 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="0x04"> <bounds x="21.5" 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.3" inputmask="0x04"> <bounds x="38.5" 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="0x08"> <bounds x="55.5" 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.3" inputmask="0x08"> <bounds x="72.5" y="7.5" width="6" height="4" /> <color alpha="0.3" /></element>
</group>
@@ -473,23 +503,59 @@ license:CC0
<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>
+ <element ref="ledo"><bounds x="15.7" y="77.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 ref="ledo"><bounds x="15.7" y="57.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 ref="ledo"><bounds x="15.7" y="37.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 ref="ledo"><bounds x="15.7" y="17.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="0.2" ref="ledg" blend="add"><bounds x="15.7" y="77.25" width="0.8" height="1.5" /></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="2.2" ref="ledg" blend="add"><bounds x="15.7" y="57.25" width="0.8" height="1.5" /></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="4.2" ref="ledg" blend="add"><bounds x="15.7" y="37.25" width="0.8" height="1.5" /></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="6.2" ref="ledg" blend="add"><bounds x="15.7" y="17.25" width="0.8" height="1.5" /></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 -->
<group ref="panel"><bounds x="18" y="89" width="79" height="13" /></group>
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index e26298c49a7..1e106a1ef79 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -22792,15 +22792,9 @@ mondial2 // 1987 Mephisto Mondial II
mondl68k // 1988 Mephisto Mondial 68000XL
@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
monteca // 1987 Mephisto Monte Carlo
-smondial2 // 1989 Mephisto Super Mondial II
-megaiv // 1989 Mephisto Mega IV
-megaiva // 1989 Mephisto Mega IV
-monteciv // 1990 Mephisto Monte Carlo IV LE
+montec4le // 1990 Mephisto Monte Carlo IV LE
@source:mephisto_polgar.cpp
polgar // 1990 Mephisto Polgar
@@ -22812,6 +22806,14 @@ polgar101 // 1990 Mephisto Polgar 10MHz
mrisc // 1992 Mephisto RISC 1MB
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
mephistp //
mephistp1 //
diff --git a/src/mame/mess.flt b/src/mame/mess.flt
index b4221afab8f..a5acf920536 100644
--- a/src/mame/mess.flt
+++ b/src/mame/mess.flt
@@ -592,6 +592,7 @@ mephisto_mondial68k.cpp
mephisto_montec.cpp
mephisto_polgar.cpp
mephisto_risc.cpp
+mephisto_smondial.cpp
meritum.cpp
mes.cpp
mfabfz.cpp