summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2021-04-10 17:20:56 +0200
committer hap <happppp@users.noreply.github.com>2021-04-10 17:21:14 +0200
commite56f56d624e2ce4b5ef663eb9e78971a8ed1eee0 (patch)
tree61b92a1ffeed05621e2af186b2f8956da72622a2
parent67823bf726cccd656bdbb5481c18e7520e652a04 (diff)
added device for 1st version of mephisto display module
-rw-r--r--scripts/target/mame/mess.lua2
-rw-r--r--src/mame/drivers/fidel_csc.cpp2
-rw-r--r--src/mame/drivers/galivan.cpp4
-rw-r--r--src/mame/drivers/mephisto_academy.cpp18
-rw-r--r--src/mame/drivers/mephisto_berlin.cpp20
-rw-r--r--src/mame/drivers/mephisto_brikett.cpp74
-rw-r--r--src/mame/drivers/mephisto_glasgow.cpp14
-rw-r--r--src/mame/drivers/mephisto_milano.cpp24
-rw-r--r--src/mame/drivers/mephisto_mm1.cpp125
-rw-r--r--src/mame/drivers/mephisto_mm2.cpp303
-rw-r--r--src/mame/drivers/mephisto_modena.cpp52
-rw-r--r--src/mame/drivers/mephisto_modular.cpp12
-rw-r--r--src/mame/drivers/mephisto_modular_tm.cpp4
-rw-r--r--src/mame/drivers/mephisto_mondial.cpp7
-rw-r--r--src/mame/drivers/mephisto_mondial2.cpp5
-rw-r--r--src/mame/drivers/mephisto_montec.cpp2
-rw-r--r--src/mame/drivers/mephisto_polgar.cpp34
-rw-r--r--src/mame/drivers/mephisto_risc.cpp28
-rw-r--r--src/mame/layout/mephisto_1.lay23
-rw-r--r--src/mame/layout/mephisto_3.lay25
-rw-r--r--src/mame/layout/mephisto_academy.lay96
-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.lay61
-rw-r--r--src/mame/layout/mephisto_bup.lay98
-rw-r--r--src/mame/layout/mephisto_esb2.lay25
-rw-r--r--src/mame/layout/mephisto_gen32.lay2
-rw-r--r--src/mame/layout/mephisto_glasgow.lay61
-rw-r--r--src/mame/layout/mephisto_junior.lay23
-rw-r--r--src/mame/layout/mephisto_mirage.lay103
-rw-r--r--src/mame/layout/mephisto_mm1.lay113
-rw-r--r--src/mame/layout/mephisto_mm2.lay98
-rw-r--r--src/mame/layout/mephisto_modena.lay71
-rw-r--r--src/mame/layout/mephisto_modular_tm.lay2
-rw-r--r--src/mame/layout/mephisto_montec.lay104
-rw-r--r--src/mame/layout/mephisto_polgar.lay2
-rw-r--r--src/mame/layout/mephisto_risc.lay2
-rw-r--r--src/mame/machine/mmboard.cpp3
-rw-r--r--src/mame/machine/mmboard.h2
-rw-r--r--src/mame/video/mmdisplay1.cpp92
-rw-r--r--src/mame/video/mmdisplay1.h45
-rw-r--r--src/mame/video/mmdisplay2.cpp25
-rw-r--r--src/mame/video/mmdisplay2.h14
43 files changed, 977 insertions, 847 deletions
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index 67a3de1f14c..1cb299e8302 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -2551,6 +2551,8 @@ files {
MAME_DIR .. "src/mame/drivers/mephisto_risc.cpp",
MAME_DIR .. "src/mame/machine/mmboard.cpp",
MAME_DIR .. "src/mame/machine/mmboard.h",
+ MAME_DIR .. "src/mame/video/mmdisplay1.cpp",
+ MAME_DIR .. "src/mame/video/mmdisplay1.h",
MAME_DIR .. "src/mame/video/mmdisplay2.cpp",
MAME_DIR .. "src/mame/video/mmdisplay2.h",
}
diff --git a/src/mame/drivers/fidel_csc.cpp b/src/mame/drivers/fidel_csc.cpp
index 3c99441987c..4aa2a0519c4 100644
--- a/src/mame/drivers/fidel_csc.cpp
+++ b/src/mame/drivers/fidel_csc.cpp
@@ -823,7 +823,7 @@ ROM_END
// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
CONS( 1981, csc, 0, 0, csc, csc, csc_state, empty_init, "Fidelity Electronics", "Champion Sensory Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1981, csce, 0, 0, csce, csc, csc_state, empty_init, "Fidelity Electronics", u8"Elite Champion Challenger (Travemünde version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1981, csce, 0, 0, csce, csc, csc_state, empty_init, "Fidelity Electronics", u8"Elite Champion Challenger (Travemünde TM version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1983, super9cc, 0, 0, su9, su9, su9_state, empty_init, "Fidelity Electronics", "Super \"9\" Sensory Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/galivan.cpp b/src/mame/drivers/galivan.cpp
index f4f89f09b6a..0e5dcb70bcf 100644
--- a/src/mame/drivers/galivan.cpp
+++ b/src/mame/drivers/galivan.cpp
@@ -868,10 +868,10 @@ ROM_START( ninjemak )
ROM_LOAD( "ninjemak.pr1", 0x0000, 0x0100, CRC(8a62d4e4) SHA1(99ca4da01ea1b5585f6e3ebf162c3f988ab317e5) ) /* red */
ROM_LOAD( "ninjemak.pr2", 0x0100, 0x0100, CRC(2ccf976f) SHA1(b804ee761793697087fbe3372352f301a22feeab) ) /* green */
ROM_LOAD( "ninjemak.pr3", 0x0200, 0x0100, CRC(16b2a7a4) SHA1(53c410b439c8a835447f15f2ab250b363b3f7888) ) /* blue */
- ROM_LOAD( "yncp-2d.bin", 0x0300, 0x0100, BAD_DUMP CRC(23bade78) SHA1(7e2de5eb08d888f97830807b6dbe85d09bb3b7f8) ) /* sprite lookup table */
+ ROM_LOAD( "yncp-2d.bin", 0x0300, 0x0100, CRC(23bade78) SHA1(7e2de5eb08d888f97830807b6dbe85d09bb3b7f8) ) /* sprite lookup table */
ROM_REGION( 0x0100, "user1", 0 )
- ROM_LOAD( "yncp-7f.bin", 0x0000, 0x0100, BAD_DUMP CRC(262d0809) SHA1(a67281af02cef082023c0d7d57e3824aeef67450) ) /* sprite palette bank */
+ ROM_LOAD( "yncp-7f.bin", 0x0000, 0x0100, CRC(262d0809) SHA1(a67281af02cef082023c0d7d57e3824aeef67450) ) /* sprite palette bank */
ROM_END
ROM_START( youma )
diff --git a/src/mame/drivers/mephisto_academy.cpp b/src/mame/drivers/mephisto_academy.cpp
index 4ffff24d3d5..41222786920 100644
--- a/src/mame/drivers/mephisto_academy.cpp
+++ b/src/mame/drivers/mephisto_academy.cpp
@@ -108,14 +108,14 @@ void academy_state::main_map(address_map &map)
static INPUT_PORTS_START( academy )
PORT_START("KEY")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("TRAIN") PORT_CODE(KEYCODE_T)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I)
- 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("POS") PORT_CODE(KEYCODE_O)
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("FCT") PORT_CODE(KEYCODE_F)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // "
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("TRAIN") PORT_CODE(KEYCODE_T)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I)
+ 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("POS") PORT_CODE(KEYCODE_O)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("FCT") PORT_CODE(KEYCODE_F)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // "
INPUT_PORTS_END
@@ -129,7 +129,7 @@ void academy_state::academy(machine_config &config)
M65C02(config, m_maincpu, 4.9152_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &academy_state::main_map);
- const attotime nmi_period = attotime::from_hz(4.9152_MHz_XTAL / (1 << 13));
+ const attotime nmi_period = attotime::from_hz(4.9152_MHz_XTAL / 0x2000);
m_maincpu->set_periodic_int(FUNC(academy_state::nmi_line_pulse), nmi_period);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
diff --git a/src/mame/drivers/mephisto_berlin.cpp b/src/mame/drivers/mephisto_berlin.cpp
index 5567e78800f..fcf8f29a648 100644
--- a/src/mame/drivers/mephisto_berlin.cpp
+++ b/src/mame/drivers/mephisto_berlin.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Sandro Ronco
+// copyright-holders:Sandro Ronco, hap
/******************************************************************************
Mephisto Berlin 68000 / Berlin Professional 68020
@@ -41,16 +41,16 @@ public:
void berlinp(machine_config &config);
private:
- u8 input_r();
+ required_device<cpu_device> m_maincpu;
+ required_device<mephisto_board_device> m_board;
+ required_device<mephisto_display2_device> m_display;
+ required_ioport m_keys;
void berlin_mem(address_map &map);
void berlinp_mem(address_map &map);
void nvram_map(address_map &map);
- required_device<cpu_device> m_maincpu;
- required_device<mephisto_board_device> m_board;
- required_device<mephisto_display_module2_device> m_display;
- required_ioport m_keys;
+ u8 input_r();
};
@@ -85,8 +85,8 @@ void berlin_state::berlin_mem(address_map &map)
map(0x900000, 0x903fff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask16(0xff00);
map(0xa00000, 0xa00000).r(FUNC(berlin_state::input_r));
map(0xb00000, 0xb00000).w(m_board, FUNC(mephisto_board_device::mux_w));
- map(0xc00000, 0xc00000).w(m_display, FUNC(mephisto_display_module2_device::latch_w));
- map(0xd00008, 0xd00008).w(m_display, FUNC(mephisto_display_module2_device::io_w));
+ map(0xc00000, 0xc00000).w(m_display, FUNC(mephisto_display2_device::latch_w));
+ map(0xd00008, 0xd00008).w(m_display, FUNC(mephisto_display2_device::io_w));
map(0xe00000, 0xe00000).w(m_board, FUNC(mephisto_board_device::led_w));
}
@@ -97,8 +97,8 @@ void berlin_state::berlinp_mem(address_map &map)
map(0x800000, 0x800000).r(FUNC(berlin_state::input_r));
map(0x900000, 0x900000).w(m_board, FUNC(mephisto_board_device::mux_w));
map(0xa00000, 0xa00000).w(m_board, FUNC(mephisto_board_device::led_w));
- map(0xb00000, 0xb00000).w(m_display, FUNC(mephisto_display_module2_device::io_w));
- map(0xc00000, 0xc00000).w(m_display, FUNC(mephisto_display_module2_device::latch_w));
+ map(0xb00000, 0xb00000).w(m_display, FUNC(mephisto_display2_device::io_w));
+ map(0xc00000, 0xc00000).w(m_display, FUNC(mephisto_display2_device::latch_w));
map(0xd00000, 0xd07fff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask32(0xff000000);
}
diff --git a/src/mame/drivers/mephisto_brikett.cpp b/src/mame/drivers/mephisto_brikett.cpp
index 575b1e6ba9c..e398ab9e2cc 100644
--- a/src/mame/drivers/mephisto_brikett.cpp
+++ b/src/mame/drivers/mephisto_brikett.cpp
@@ -69,12 +69,15 @@ is completely different, based on a 68000.
******************************************************************************/
#include "emu.h"
+
#include "cpu/cosmac/cosmac.h"
#include "machine/cdp1852.h"
#include "machine/sensorboard.h"
#include "machine/timer.h"
#include "sound/dac.h"
+#include "video/mmdisplay1.h"
#include "video/pwm.h"
+
#include "speaker.h"
// internal artwork
@@ -95,6 +98,7 @@ public:
m_extport(*this, "extport"),
m_board(*this, "board"),
m_display(*this, "display"),
+ m_led_pwm(*this, "led_pwm"),
m_dac(*this, "dac"),
m_speaker_off(*this, "speaker_off"),
m_inputs(*this, "IN.%u", 0)
@@ -119,7 +123,8 @@ private:
required_device<cdp1802_device> m_maincpu;
optional_device<cdp1852_device> m_extport;
optional_device<sensorboard_device> m_board;
- required_device<pwm_display_device> m_display;
+ required_device<mephisto_display1_device> m_display;
+ optional_device<pwm_display_device> m_led_pwm;
required_device<dac_bit_interface> m_dac;
required_device<timer_device> m_speaker_off;
optional_ioport_array<4+2> m_inputs;
@@ -138,8 +143,6 @@ private:
// I/O handlers
INTERRUPT_GEN_MEMBER(interrupt);
DECLARE_READ_LINE_MEMBER(clear_r);
- DECLARE_WRITE_LINE_MEMBER(q_w);
- void lcd_w(u8 data);
u8 input_r(offs_t offset);
u8 sound_r();
@@ -148,34 +151,16 @@ private:
TIMER_DEVICE_CALLBACK_MEMBER(speaker_off) { m_dac->write(0); }
- bool m_reset;
- u8 m_lcd_mask;
- u8 m_digit_idx;
- u8 m_digit_data[4];
-
- u8 m_esb_led;
- u8 m_esb_row;
- u8 m_esb_select;
+ bool m_reset = false;
+ u8 m_esb_led = 0;
+ u8 m_esb_row = 0;
+ u8 m_esb_select = 0;
};
void brikett_state::machine_start()
{
- // zerofill
- m_reset = false;
- m_lcd_mask = 0;
- m_digit_idx = 0;
- memset(m_digit_data, 0, sizeof(m_digit_data));
-
- m_esb_led = 0;
- m_esb_row = 0;
- m_esb_select = 0;
-
// register for savestates
save_item(NAME(m_reset));
- save_item(NAME(m_lcd_mask));
- save_item(NAME(m_digit_idx));
- save_item(NAME(m_digit_data));
-
save_item(NAME(m_esb_led));
save_item(NAME(m_esb_row));
save_item(NAME(m_esb_select));
@@ -184,8 +169,6 @@ void brikett_state::machine_start()
void brikett_state::machine_reset()
{
m_reset = true;
- m_digit_idx = 0;
-
set_cpu_freq();
}
@@ -222,28 +205,6 @@ READ_LINE_MEMBER(brikett_state::clear_r)
return ret;
}
-WRITE_LINE_MEMBER(brikett_state::q_w)
-{
- // Q: LCD digit data mask
- // also assume LCD update on rising edge
- if (state && !m_lcd_mask)
- {
- for (int i = 0; i < 4; i++)
- m_display->write_row(i, m_digit_data[i]);
- m_display->update();
- }
-
- m_lcd_mask = state ? 0xff : 0;
-}
-
-void brikett_state::lcd_w(u8 data)
-{
- // d0-d7: write/shift LCD digit (4*CD4015)
- // note: last digit "dp" is the colon in the middle
- m_digit_data[m_digit_idx] = data ^ m_lcd_mask;
- m_digit_idx = (m_digit_idx + 1) & 3;
-}
-
u8 brikett_state::sound_r()
{
// port 1 read enables the speaker
@@ -274,7 +235,7 @@ void brikett_state::esb_w(u8 data)
if (!m_inputs[5].read_safe(0))
{
// chessboard disabled
- m_display->matrix_partial(4, 8, 0, 0);
+ m_led_pwm->clear();
return;
}
@@ -296,7 +257,7 @@ void brikett_state::esb_w(u8 data)
m_esb_row = data;
// update chessboard leds
- m_display->matrix_partial(4, 8, ~m_esb_row, m_esb_led);
+ m_led_pwm->matrix(~m_esb_row, m_esb_led);
}
READ_LINE_MEMBER(brikett_state::esb_r)
@@ -318,7 +279,7 @@ void brikett_state::mephisto_map(address_map &map)
{
map(0x0000, 0x17ff).rom();
map(0xf400, 0xf7ff).ram();
- map(0xfb00, 0xfb00).mirror(0x00ff).w(FUNC(brikett_state::lcd_w));
+ map(0xfb00, 0xfb00).mirror(0x00ff).w(m_display, FUNC(mephisto_display1_device::data_w));
map(0xfff0, 0xffff).r(FUNC(brikett_state::input_r));
}
@@ -459,14 +420,13 @@ void brikett_state::mephistoj(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &brikett_state::mephistoj_map);
m_maincpu->set_addrmap(AS_IO, &brikett_state::mephistoj_io);
m_maincpu->clear_cb().set(FUNC(brikett_state::clear_r));
- m_maincpu->q_cb().set(FUNC(brikett_state::q_w)).invert();
+ m_maincpu->q_cb().set(m_display, FUNC(mephisto_display1_device::strobe_w)).invert();
const attotime irq_period = attotime::from_hz(4.194304_MHz_XTAL / 0x10000); // through SAJ300T
m_maincpu->set_periodic_int(FUNC(brikett_state::interrupt), irq_period);
/* video hardware */
- PWM_DISPLAY(config, m_display).set_size(4, 8);
- m_display->set_segmask(0xf, 0x7f);
+ MEPHISTO_DISPLAY_MODULE1(config, m_display); // internal
config.set_default_layout(layout_mephisto_junior);
/* sound hardware */
@@ -519,7 +479,7 @@ void brikett_state::mephisto2e(machine_config &config)
m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));
m_board->set_delay(attotime::from_msec(250));
- m_display->set_size(4+8, 8);
+ PWM_DISPLAY(config, m_led_pwm).set_size(8, 8);
config.set_default_layout(layout_mephisto_esb2);
}
@@ -530,7 +490,7 @@ void brikett_state::mephisto3(machine_config &config)
/* basic machine hardware */
m_maincpu->set_clock(6.144_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &brikett_state::mephisto3_map);
- m_maincpu->q_cb().set(FUNC(brikett_state::q_w));
+ m_maincpu->q_cb().set(m_display, FUNC(mephisto_display1_device::strobe_w));
config.set_default_layout(layout_mephisto_3);
}
diff --git a/src/mame/drivers/mephisto_glasgow.cpp b/src/mame/drivers/mephisto_glasgow.cpp
index 6fd353da8a7..794fa4da8db 100644
--- a/src/mame/drivers/mephisto_glasgow.cpp
+++ b/src/mame/drivers/mephisto_glasgow.cpp
@@ -1,6 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Dirk Verwiebe, Cowering
/***************************************************************************
+
Mephisto Glasgow 3 S chess computer
Dirk V.
sp_rinter@gmx.de
@@ -35,7 +36,8 @@ How to play (quick guide)
TODO:
- add waitstates(applies to glasgow, amsterd, others?), CPU is 12MHz but with DTACK
waitstates for slow EPROMs, effective speed is less than 10MHz
-- LCD module is 8.8.:8.8 like mephisto_brikett/mm1 (so, add ":" in the middle)
+- use mmdisplay1 device
+- split driver (glasgow/amsterdam)
***************************************************************************/
@@ -90,7 +92,6 @@ protected:
u8 m_key_select;
};
-
class amsterd_state : public glasgow_state
{
public:
@@ -121,7 +122,7 @@ void glasgow_state::glasgow_lcd_w(u8 data)
if (m_led7 == 0)
m_digits[m_lcd_shift_counter] = data;
- m_lcd_shift_counter--;
+ m_lcd_shift_counter++;
m_lcd_shift_counter &= 3;
}
@@ -161,7 +162,7 @@ void amsterd_state::write_lcd(u8 data)
if (m_lcd_shift_counter & 4)
m_digits[m_lcd_shift_counter & 3] = data;
- m_lcd_shift_counter--;
+ m_lcd_shift_counter++;
m_lcd_shift_counter &= 7;
}
@@ -200,10 +201,9 @@ void glasgow_state::machine_start()
save_item(NAME(m_key_select));
}
-
void glasgow_state::machine_reset()
{
- m_lcd_shift_counter = 3;
+ m_lcd_shift_counter = 0;
m_key_select = 0;
m_led7 = 0;
}
@@ -230,8 +230,8 @@ void amsterd_state::amsterd_mem(address_map &map)
{
map(0x000000, 0x00ffff).rom();
map(0x800002, 0x800002).w(FUNC(amsterd_state::write_lcd));
- map(0x800008, 0x800008).w(FUNC(amsterd_state::write_lcd_flag));
map(0x800004, 0x800004).w(FUNC(amsterd_state::write_beeper));
+ map(0x800008, 0x800008).w(FUNC(amsterd_state::write_lcd_flag));
map(0x800010, 0x800010).w(FUNC(amsterd_state::write_board));
map(0x800020, 0x800020).r("board", FUNC(mephisto_board_device::input_r));
map(0x800040, 0x800040).r(FUNC(amsterd_state::read_newkeys));
diff --git a/src/mame/drivers/mephisto_milano.cpp b/src/mame/drivers/mephisto_milano.cpp
index ea5851f9f0a..c1385fa3d47 100644
--- a/src/mame/drivers/mephisto_milano.cpp
+++ b/src/mame/drivers/mephisto_milano.cpp
@@ -50,7 +50,7 @@ protected:
private:
required_device<cpu_device> m_maincpu;
required_device<sensorboard_device> m_board;
- required_device<mephisto_display_module2_device> m_display;
+ required_device<mephisto_display2_device> m_display;
required_device<pwm_display_device> m_led_pwm;
required_ioport m_keys;
@@ -125,7 +125,7 @@ u8 milano_state::keys_r(offs_t offset)
void milano_state::milano_mem(address_map &map)
{
map(0x0000, 0x1fbf).ram().share("nvram");
- map(0x1fc0, 0x1fc0).w(m_display, FUNC(mephisto_display_module2_device::latch_w));
+ map(0x1fc0, 0x1fc0).w(m_display, FUNC(mephisto_display2_device::latch_w));
map(0x1fd0, 0x1fd0).w(FUNC(milano_state::board_w));
map(0x1fe0, 0x1fe0).r(FUNC(milano_state::board_r));
map(0x1fe8, 0x1fef).w("outlatch", FUNC(hc259_device::write_d7)).nopr();
@@ -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_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) // "
INPUT_PORTS_END
@@ -163,7 +163,9 @@ void milano_state::milano(machine_config &config)
/* basic machine hardware */
R65C02(config, m_maincpu, 4.9152_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &milano_state::milano_mem);
- m_maincpu->set_periodic_int(FUNC(milano_state::nmi_line_pulse), attotime::from_hz(4.9152_MHz_XTAL / (1 << 13)));
+
+ const attotime nmi_period = attotime::from_hz(4.9152_MHz_XTAL / 0x2000);
+ m_maincpu->set_periodic_int(FUNC(milano_state::nmi_line_pulse), nmi_period);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
diff --git a/src/mame/drivers/mephisto_mm1.cpp b/src/mame/drivers/mephisto_mm1.cpp
index ff23d7891c9..7464f87d0c3 100644
--- a/src/mame/drivers/mephisto_mm1.cpp
+++ b/src/mame/drivers/mephisto_mm1.cpp
@@ -16,7 +16,9 @@ Hardware notes:
- 32KB ROM (2*D27128, or HN613256P)
- 4KB RAM (2*HM6116LP-3)
- CDP1853CE, CD4011BE, 3*40373BP, 4556BE
-- modular slot, 18-button keypad, beeper
+- Mephisto modular display module
+- Mephisto modular chessboard
+- 18-button keypad, beeper
It supports the HG 170 opening book module.
LCD module is assumed to be same as MM II and others.
@@ -38,12 +40,12 @@ TODO:
#include "emu.h"
-#include "cpu/cosmac/cosmac.h"
-#include "machine/sensorboard.h"
-#include "sound/dac.h"
-#include "video/pwm.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
+#include "cpu/cosmac/cosmac.h"
+#include "machine/mmboard.h"
+#include "sound/dac.h"
+#include "video/mmdisplay1.h"
#include "softlist.h"
#include "speaker.h"
@@ -62,7 +64,6 @@ public:
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_board(*this, "board"),
- m_display(*this, "display"),
m_dac(*this, "dac"),
m_inputs(*this, "IN.%u", 0)
{ }
@@ -80,8 +81,7 @@ protected:
private:
// devices/pointers
required_device<cdp1806_device> m_maincpu;
- required_device<sensorboard_device> m_board;
- required_device<pwm_display_device> m_display;
+ required_device<mephisto_board_device> m_board;
required_device<dac_bit_interface> m_dac;
required_ioport_array<8> m_inputs;
@@ -94,53 +94,25 @@ private:
INTERRUPT_GEN_MEMBER(interrupt);
void update_display();
DECLARE_READ_LINE_MEMBER(clear_r);
- DECLARE_WRITE_LINE_MEMBER(q_w);
void sound_w(u8 data);
void unknown_w(u8 data);
- void lcd_w(u8 data);
- void board_w(u8 data);
- void led_w(u8 data);
void keypad_w(u8 data);
- u8 board_r();
template<int P> DECLARE_READ_LINE_MEMBER(keypad_r);
- bool m_reset;
- u8 m_lcd_mask;
- u8 m_digit_idx;
- u8 m_digit_data[4];
-
- u8 m_kp_mux;
- u8 m_cb_mux;
- u8 m_led_data;
+ bool m_reset = false;
+ u8 m_kp_mux = 0;
};
void mm1_state::machine_start()
{
- // zerofill
- m_reset = false;
- m_lcd_mask = 0;
- m_digit_idx = 0;
- memset(m_digit_data, 0, sizeof(m_digit_data));
-
- m_kp_mux = 0;
- m_cb_mux = 0;
- m_led_data = 0;
-
// register for savestates
save_item(NAME(m_reset));
- save_item(NAME(m_lcd_mask));
- save_item(NAME(m_digit_idx));
- save_item(NAME(m_digit_data));
-
save_item(NAME(m_kp_mux));
- save_item(NAME(m_cb_mux));
- save_item(NAME(m_led_data));
}
void mm1_state::machine_reset()
{
m_reset = true;
- m_digit_idx = 0;
}
@@ -162,28 +134,6 @@ READ_LINE_MEMBER(mm1_state::clear_r)
return ret;
}
-WRITE_LINE_MEMBER(mm1_state::q_w)
-{
- // Q: LCD digit data mask
- // also assume LCD update on rising edge
- if (state && !m_lcd_mask)
- {
- for (int i = 0; i < 4; i++)
- m_display->write_row(i, m_digit_data[i]);
- m_display->update();
- }
-
- m_lcd_mask = state ? 0xff : 0;
-}
-
-void mm1_state::lcd_w(u8 data)
-{
- // d0-d7: write/shift LCD digit (4*CD4015)
- // note: last digit "dp" is the colon in the middle
- m_digit_data[m_digit_idx] = data ^ m_lcd_mask;
- m_digit_idx = (m_digit_idx + 1) & 3;
-}
-
void mm1_state::sound_w(u8 data)
{
// d0: speaker out
@@ -195,38 +145,6 @@ void mm1_state::unknown_w(u8 data)
// mmirage: unused serial device?
}
-void mm1_state::update_display()
-{
- // 64 chessboard leds
- m_display->matrix_partial(4, 8, m_cb_mux, m_led_data);
-}
-
-void mm1_state::led_w(u8 data)
-{
- // d0-d7: chessboard led data
- m_led_data = data;
- update_display();
-}
-
-void mm1_state::board_w(u8 data)
-{
- // d0-d7: chessboard input/led mux
- m_cb_mux = ~data;
- update_display();
-}
-
-u8 mm1_state::board_r()
-{
- u8 data = 0;
-
- // d0-d7: multiplexed inputs (chessboard)
- for (int i = 0; i < 8; i++)
- if (BIT(m_cb_mux, i))
- data |= m_board->read_rank(i);
-
- return ~data;
-}
-
void mm1_state::keypad_w(u8 data)
{
// d0-d7: keypad input mux
@@ -269,10 +187,10 @@ void mm1_state::mm1_io(address_map &map)
{
map(0x01, 0x01).w(FUNC(mm1_state::sound_w));
map(0x02, 0x02).w(FUNC(mm1_state::keypad_w));
- map(0x03, 0x03).r(FUNC(mm1_state::board_r));
- map(0x04, 0x04).w(FUNC(mm1_state::board_w));
- map(0x05, 0x05).w(FUNC(mm1_state::led_w));
- map(0x06, 0x06).w(FUNC(mm1_state::lcd_w));
+ map(0x03, 0x03).r(m_board, FUNC(mephisto_board_device::input_r));
+ map(0x04, 0x04).w(m_board, FUNC(mephisto_board_device::mux_w));
+ map(0x05, 0x05).w(m_board, FUNC(mephisto_board_device::led_w));
+ map(0x06, 0x06).w("display", FUNC(mephisto_display1_device::data_w));
map(0x07, 0x07).w(FUNC(mm1_state::unknown_w));
}
@@ -357,7 +275,7 @@ INPUT_PORTS_END
INPUT_CHANGED_MEMBER(mm1_state::mirage_switch_sensor_type)
{
- m_board->set_type(newval ? sensorboard_device::MAGNETS : sensorboard_device::BUTTONS);
+ m_board->get()->set_type(newval ? sensorboard_device::MAGNETS : sensorboard_device::BUTTONS);
}
@@ -373,7 +291,7 @@ void mm1_state::mirage(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &mm1_state::mirage_map);
m_maincpu->set_addrmap(AS_IO, &mm1_state::mm1_io);
m_maincpu->clear_cb().set(FUNC(mm1_state::clear_r));
- m_maincpu->q_cb().set(FUNC(mm1_state::q_w)).invert();
+ m_maincpu->q_cb().set("display", FUNC(mephisto_display1_device::strobe_w)).invert();
m_maincpu->ef3_cb().set(FUNC(mm1_state::keypad_r<0>));
m_maincpu->ef4_cb().set(FUNC(mm1_state::keypad_r<1>));
@@ -381,13 +299,11 @@ void mm1_state::mirage(machine_config &config)
const attotime irq_period = attotime::from_ticks(8 * 32 * 0x71, 8_MHz_XTAL); // LDC = 0x71
m_maincpu->set_periodic_int(FUNC(mm1_state::interrupt), irq_period);
- SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS);
- m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));
+ MEPHISTO_BUTTONS_BOARD(config, m_board); // see mirage_switch_sensor_type
m_board->set_delay(attotime::from_msec(200));
/* video hardware */
- PWM_DISPLAY(config, m_display).set_size(4+8, 8);
- m_display->set_segmask(0xf, 0x7f);
+ MEPHISTO_DISPLAY_MODULE1(config, "display");
config.set_default_layout(layout_mephisto_mirage);
/* sound hardware */
@@ -401,13 +317,14 @@ void mm1_state::mm1(machine_config &config)
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &mm1_state::mm1_map);
- m_maincpu->q_cb().set(FUNC(mm1_state::q_w));
+ m_maincpu->q_cb().set("display", FUNC(mephisto_display1_device::strobe_w));
// wrong! uses internal timer interrupt
const attotime irq_period = attotime::from_ticks(8 * 32 * 0xfa, 8_MHz_XTAL); // LDC = 0xFA
m_maincpu->set_periodic_int(FUNC(mm1_state::interrupt), irq_period);
- m_board->set_type(sensorboard_device::MAGNETS);
+ MEPHISTO_SENSORS_BOARD(config.replace(), m_board);
+ m_board->set_delay(attotime::from_msec(200));
config.set_default_layout(layout_mephisto_mm1);
diff --git a/src/mame/drivers/mephisto_mm2.cpp b/src/mame/drivers/mephisto_mm2.cpp
index 89409b9a5c9..d6f5768d7d1 100644
--- a/src/mame/drivers/mephisto_mm2.cpp
+++ b/src/mame/drivers/mephisto_mm2.cpp
@@ -1,16 +1,17 @@
// license:BSD-3-Clause
-// copyright-holders:Dirk Verwiebe, Cowering
+// copyright-holders:Dirk Verwiebe, Cowering, hap
/******************************************************************************
- Mephisto 4 + 5 Chess Computer
- 2007 Dirk V.
-CPU 65C02 P4 (also seen: R65C02P3, G65SC02P-4)
-Clock 4.9152 MHz
-NMI CLK 600 Hz
+Mephisto 4 + 5 Chess Computer
+2007 Dirk V.
+
+CPU: G65SC02P-4 or R65C02P3
+Clock: 4.9152 MHz
+NMI CLK: 600 Hz
IRQ Line is set to VSS
-8 KByte SRAM Sony CXK5864-15l
+8 KByte SRAM Sony CXK5864-15L
-1-CD74HC4060E 14 Bit Counter
+1-CD74HC4060E: 14 Bit Counter
1-CD74HC166E
1-CD74HC251E
1-SN74HC138N TI
@@ -25,7 +26,7 @@ PCB label HGS 10 122 01
1-CD4011
4-CD4015
-$0000-$1fff S-RAM
+$0000-$1fff S-RAM
$2000 LCD 4 Byte Shift Register writeonly right to left
every 2nd char xor'd by $FF
@@ -73,19 +74,18 @@ MM VI (Saitek, 1994) is on different hardware, H8 CPU.
TODO:
- need to emulate TurboKit properly, also for mm5p (it's not as simple as a CPU
overclock plus ROM patch)
-- LCD module is 8.8.:8.8 like mephisto_brikett/mm1 (so, add ":" in the middle)
******************************************************************************/
#include "emu.h"
-#include "cpu/m6502/m65c02.h"
+#include "bus/generic/slot.h"
+#include "bus/generic/carts.h"
+#include "cpu/m6502/m65sc02.h"
#include "machine/74259.h"
#include "machine/mmboard.h"
-#include "machine/timer.h"
#include "sound/dac.h"
-#include "bus/generic/slot.h"
-#include "bus/generic/carts.h"
+#include "video/mmdisplay1.h"
#include "softlist.h"
#include "speaker.h"
@@ -104,10 +104,9 @@ public:
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_outlatch(*this, "outlatch")
+ , m_display(*this, "display")
, m_dac(*this, "dac")
- , m_key1(*this, "KEY1_%u", 0U)
- , m_key2(*this, "KEY2_%u", 0U)
- , m_digits(*this, "digit%u", 0U)
+ , m_keys(*this, "KEY.%u", 0)
{ }
DECLARE_INPUT_CHANGED_MEMBER(reset_button);
@@ -120,104 +119,64 @@ public:
void mm2(machine_config &config);
void bup(machine_config &config);
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
private:
- required_device<m65c02_device> m_maincpu;
+ required_device<cpu_device> m_maincpu;
required_device<hc259_device> m_outlatch;
+ required_device<mephisto_display1_device> m_display;
required_device<dac_bit_interface> m_dac;
- required_ioport_array<8> m_key1;
- required_ioport_array<8> m_key2;
- output_finder<4> m_digits;
-
- void write_lcd(u8 data);
- void mephisto_nmi_w(u8 data);
- u8 read_keys(offs_t offset);
- DECLARE_WRITE_LINE_MEMBER(write_led7);
- u8 m_lcd_shift_counter;
- u8 m_led7;
- u8 m_allowNMI;
- virtual void machine_start() override;
- virtual void machine_reset() override;
- TIMER_DEVICE_CALLBACK_MEMBER(update_nmi);
- TIMER_DEVICE_CALLBACK_MEMBER(update_nmi_r5);
+ required_ioport_array<2> m_keys;
void bup_mem(address_map &map);
void mm2_mem(address_map &map);
void mm4_mem(address_map &map);
void mm5p_mem(address_map &map);
void rebel5_mem(address_map &map);
+
+ void lcd_irqack_w(u8 data);
+ u8 keys_r(offs_t offset);
};
void mm2_state::machine_start()
{
- m_digits.resolve();
-
- save_item(NAME(m_lcd_shift_counter));
- save_item(NAME(m_led7));
- save_item(NAME(m_allowNMI));
}
void mm2_state::machine_reset()
{
- m_lcd_shift_counter = 3;
- m_allowNMI = 1;
- m_led7 = 0xff;
+ m_display->reset();
+ m_maincpu->set_input_line(0, CLEAR_LINE);
}
-
-
-/******************************************************************************
- I/O
-******************************************************************************/
-
-TIMER_DEVICE_CALLBACK_MEMBER(mm2_state::update_nmi)
+INPUT_CHANGED_MEMBER(mm2_state::reset_button)
{
- if (m_allowNMI)
+ // RES buttons in serial tied to CPU RESET
+ if (ioport("RESET")->read() == 3)
{
- m_allowNMI = 0;
- m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
+ m_maincpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
+ machine_reset();
}
}
-TIMER_DEVICE_CALLBACK_MEMBER(mm2_state::update_nmi_r5)
-{
- m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
-}
-
-void mm2_state::write_lcd(u8 data)
-{
- if (m_led7 == 0)
- m_digits[m_lcd_shift_counter] = data; // 0x109 MM IV // 0x040 MM V
- m_lcd_shift_counter--;
- m_lcd_shift_counter &= 3;
- m_maincpu->set_input_line(0, CLEAR_LINE);
-}
-
-void mm2_state::mephisto_nmi_w(u8 data)
-{
- m_allowNMI = 1;
-}
+/******************************************************************************
+ I/O
+******************************************************************************/
-u8 mm2_state::read_keys(offs_t offset)
+void mm2_state::lcd_irqack_w(u8 data)
{
- u8 data = 0;
-
- if (!m_outlatch->q7_r())
- {
- data = m_key1[offset]->read();
- }
- else
- {
- data = m_key2[offset]->read();
- }
+ m_display->data_w(data);
- return data | 0x7f;
+ // writing to 0x2800 also clears irq
+ m_maincpu->set_input_line(0, CLEAR_LINE);
}
-WRITE_LINE_MEMBER(mm2_state::write_led7)
+u8 mm2_state::keys_r(offs_t offset)
{
- m_led7 = state ? 0x00 : 0xff;
+ return ~(BIT(m_keys[m_outlatch->q7_r()]->read(), offset) << 7);
}
@@ -230,9 +189,9 @@ void mm2_state::bup_mem(address_map &map)
{
map(0x0000, 0x0fff).ram();
map(0x1000, 0x1007).w("outlatch", FUNC(hc259_device::write_d7));
- map(0x1800, 0x1807).r(FUNC(mm2_state::read_keys));
+ map(0x1800, 0x1807).r(FUNC(mm2_state::keys_r));
map(0x2000, 0x2000).r("board", FUNC(mephisto_board_device::input_r));
- map(0x2800, 0x2800).w(FUNC(mm2_state::write_lcd));
+ map(0x2800, 0x2800).w(FUNC(mm2_state::lcd_irqack_w));
map(0x3000, 0x3000).w("board", FUNC(mephisto_board_device::led_w));
map(0x3800, 0x3800).w("board", FUNC(mephisto_board_device::mux_w));
map(0x8000, 0xffff).rom();
@@ -249,8 +208,8 @@ 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(0x3000, 0x3007).r(FUNC(mm2_state::read_keys));
- map(0x5000, 0x5000).w(FUNC(mm2_state::write_lcd));
+ map(0x3000, 0x3007).r(FUNC(mm2_state::keys_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));
map(0x8000, 0xffff).rom();
@@ -259,13 +218,13 @@ void mm2_state::rebel5_mem(address_map &map)
void mm2_state::mm5p_mem(address_map &map)
{
map(0x0000, 0x1fff).ram();
- map(0x2000, 0x2000).w(FUNC(mm2_state::write_lcd));
+ 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(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w));
- map(0x2c00, 0x2c07).r(FUNC(mm2_state::read_keys));
+ map(0x2c00, 0x2c07).r(FUNC(mm2_state::keys_r));
map(0x3000, 0x3000).r("board", FUNC(mephisto_board_device::input_r));
map(0x3400, 0x3407).w("outlatch", FUNC(hc259_device::write_d7)).nopr();
- map(0x3800, 0x3800).w(FUNC(mm2_state::mephisto_nmi_w));
+ map(0x3800, 0x3800).nopw(); // N/C
map(0x4000, 0xffff).rom();
}
@@ -281,40 +240,26 @@ void mm2_state::mm4_mem(address_map &map)
Input Ports
******************************************************************************/
-static INPUT_PORTS_START( mephisto )
- PORT_START("KEY1_0") //Port $2c00
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE)
- PORT_START("KEY1_1") //Port $2c01
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("POS") PORT_CODE(KEYCODE_O)
- PORT_START("KEY1_2") //Port $2c02
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M)
- PORT_START("KEY1_3") //Port $2c03
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I)
- PORT_START("KEY1_4") //Port $2c04
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L)
- PORT_START("KEY1_5") //Port $2c05
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
- PORT_START("KEY1_6") //Port $2c06
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Right / White / 0") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_RIGHT)
- PORT_START("KEY1_7") //Port $2c07
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Left / Black / 9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_LEFT)
-
- PORT_START("KEY2_0") //Port $2c08
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("E / 5 / Queen") PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
- PORT_START("KEY2_1") //Port $2c09
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("F / 6 / King") PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
- PORT_START("KEY2_2") //Port $2c0a
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("G / 7") PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD)
- PORT_START("KEY2_3") //Port $2c0b
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("A / 1 / Pawn") PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
- PORT_START("KEY2_4") //Port $2c0c
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("H / 8") PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD)
- PORT_START("KEY2_5") //Port $2c0d
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("B / 2 / Knight") PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
- PORT_START("KEY2_6") //Port $2c0e
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("C / 3 / Bishop") PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
- PORT_START("KEY2_7") //Port $2c0f
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("D / 4 / Rook") PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
+static INPUT_PORTS_START( mm2 )
+ PORT_START("KEY.0")
+ 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("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("LEV") PORT_CODE(KEYCODE_L)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Right / White / 0") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_RIGHT)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Left / Black / 9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_LEFT)
+
+ PORT_START("KEY.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E / 5 / Queen") PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F / 6 / King") PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G / 7") PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A / 1 / Pawn") PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H / 8") PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B / 2 / Knight") PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C / 3 / Bishop") PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D / 4 / Rook") PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
PORT_START("RESET")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RES 1") PORT_CODE(KEYCODE_Z) PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, mm2_state, reset_button, 0)
@@ -322,55 +267,31 @@ static INPUT_PORTS_START( mephisto )
INPUT_PORTS_END
static INPUT_PORTS_START( bup )
- PORT_START("KEY1_0")
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("1 / Pawn") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
- PORT_START("KEY1_1")
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("2 / Knight") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
- PORT_START("KEY1_2")
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("3 / Bishop") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
- PORT_START("KEY1_3")
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("4 / Rook") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
- PORT_START("KEY1_4")
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("5 / Queen") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
- PORT_START("KEY1_5")
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("6 / King") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
- PORT_START("KEY1_6")
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("White") PORT_CODE(KEYCODE_W)
- PORT_START("KEY1_7")
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Black") PORT_CODE(KEYCODE_B)
-
- PORT_START("KEY2_0")
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE)
- PORT_START("KEY2_1")
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
- PORT_START("KEY2_2")
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("BEST") PORT_CODE(KEYCODE_S)
- PORT_START("KEY2_3")
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I)
- PORT_START("KEY2_4")
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("MON") PORT_CODE(KEYCODE_N)
- PORT_START("KEY2_5")
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("POS") PORT_CODE(KEYCODE_O)
- PORT_START("KEY2_6")
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L)
- PORT_START("KEY2_7")
- PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M)
+ PORT_START("KEY.0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("1 / Pawn") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("2 / Knight") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("3 / Bishop") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("4 / Rook") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("5 / Queen") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("6 / King") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("White") PORT_CODE(KEYCODE_W)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Black") PORT_CODE(KEYCODE_B)
+
+ PORT_START("KEY.1")
+ 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("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("BEST") PORT_CODE(KEYCODE_S)
+ 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("MON") PORT_CODE(KEYCODE_N)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("POS") PORT_CODE(KEYCODE_O)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M)
PORT_START("RESET")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RES 1") PORT_CODE(KEYCODE_Z) PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, mm2_state, reset_button, 0)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RES 2") PORT_CODE(KEYCODE_X) PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, mm2_state, reset_button, 0)
INPUT_PORTS_END
-INPUT_CHANGED_MEMBER(mm2_state::reset_button)
-{
- // RES buttons in serial tied to CPU RESET
- if (ioport("RESET")->read() == 3)
- {
- m_maincpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
- machine_reset();
- }
-}
-
/******************************************************************************
@@ -380,10 +301,11 @@ INPUT_CHANGED_MEMBER(mm2_state::reset_button)
void mm2_state::rebel5(machine_config &config)
{
/* basic machine hardware */
- M65C02(config, m_maincpu, 9.8304_MHz_XTAL / 2);
+ M65SC02(config, m_maincpu, 9.8304_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &mm2_state::rebel5_mem);
- TIMER(config, "nmi_timer").configure_periodic(FUNC(mm2_state::update_nmi_r5), attotime::from_hz(600));
+ const attotime nmi_period = attotime::from_hz(9.8304_MHz_XTAL / 2 / 0x2000); // 600Hz
+ m_maincpu->set_periodic_int(FUNC(mm2_state::nmi_line_pulse), nmi_period);
HC259(config, m_outlatch);
m_outlatch->q_out_cb<0>().set_output("led100");
@@ -393,9 +315,10 @@ void mm2_state::rebel5(machine_config &config)
m_outlatch->q_out_cb<4>().set_output("led104");
m_outlatch->q_out_cb<5>().set_output("led105");
m_outlatch->q_out_cb<6>().set(m_dac, FUNC(dac_bit_interface::write));
- m_outlatch->q_out_cb<7>().set(FUNC(mm2_state::write_led7));
+ m_outlatch->q_out_cb<7>().set(m_display, FUNC(mephisto_display1_device::strobe_w)).invert();
MEPHISTO_SENSORS_BOARD(config, "board");
+ MEPHISTO_DISPLAY_MODULE1(config, m_display);
config.set_default_layout(layout_mephisto_mm2);
/* sound hardware */
@@ -411,7 +334,8 @@ void mm2_state::mm5p(machine_config &config)
m_maincpu->set_clock(4.9152_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &mm2_state::mm5p_mem);
- TIMER(config.replace(), "nmi_timer").configure_periodic(FUNC(mm2_state::update_nmi), attotime::from_hz(600));
+ const attotime nmi_period = attotime::from_hz(4.9152_MHz_XTAL / 0x2000); // 600Hz
+ m_maincpu->set_periodic_int(FUNC(mm2_state::nmi_line_pulse), nmi_period);
}
void mm2_state::mm4(machine_config &config)
@@ -445,11 +369,10 @@ void mm2_state::bup(machine_config &config)
m_maincpu->set_clock(7.3728_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &mm2_state::bup_mem);
- config.device_remove("nmi_timer");
const attotime irq_period = attotime::from_hz(7.3728_MHz_XTAL / 2 / 0x2000); // 450Hz from 4020 Q13
m_maincpu->set_periodic_int(FUNC(mm2_state::irq0_line_assert), irq_period);
- m_outlatch->q_out_cb<7>().set(FUNC(mm2_state::write_led7)).invert();
+ m_outlatch->q_out_cb<7>().set(m_display, FUNC(mephisto_display1_device::strobe_w));
config.set_default_layout(layout_mephisto_bup);
}
@@ -571,24 +494,24 @@ ROM_END
Drivers
******************************************************************************/
-/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS */
-CONS( 1984, mm2, 0, 0, mm2, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 1, v4.00 1 EPROM)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1984, mm2a, mm2, 0, mm2, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 2, v4.00 2 EPROMs)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1984, mm2b, mm2, 0, mm2, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 3, v3.00)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1984, mm2c, mm2, 0, mm2, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 4)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1984, mm2d, mm2, 0, mm2, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 5)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS */
+CONS( 1984, mm2, 0, 0, mm2, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 1, v4.00 1 EPROM)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1984, mm2a, mm2, 0, mm2, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 2, v4.00 2 EPROMs)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1984, mm2b, mm2, 0, mm2, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 3, v3.00)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1984, mm2c, mm2, 0, mm2, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 4)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1984, mm2d, mm2, 0, mm2, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 5)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1985, bup, 0, 0, bup, bup, mm2_state, empty_init, "Hegener + Glaser", u8"Mephisto Blitz- und Problemlösungs-Modul (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1985, bupa, bup, 0, bup, bup, mm2_state, empty_init, "Hegener + Glaser", u8"Mephisto Blitz- und Problemlösungs-Modul (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1985, bup, 0, 0, bup, bup, mm2_state, empty_init, "Hegener + Glaser", u8"Mephisto Blitz- und Problemlösungs-Modul (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1985, bupa, bup, 0, bup, bup, mm2_state, empty_init, "Hegener + Glaser", u8"Mephisto Blitz- und Problemlösungs-Modul (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1986, rebel5, 0, 0, rebel5, mephisto, 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, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto Rebell 5,0 (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( 1987, mm4, 0, 0, mm4, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM IV (v7.10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1987, mm4a, mm4, 0, mm4, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM IV (v7.00)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1987, mm4b, mm4, 0, mm4, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM IV (v6.00)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1987, mm4tk, mm4, 0, mm4tk, mephisto, mm2_state, empty_init, "hack", "Mephisto MM IV (TurboKit)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_TIMING )
+CONS( 1987, mm4, 0, 0, mm4, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM IV (v7.10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1987, mm4a, mm4, 0, mm4, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM IV (v7.00)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1987, mm4b, mm4, 0, mm4, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM IV (v6.00)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1987, mm4tk, mm4, 0, mm4tk, mm2, mm2_state, empty_init, "hack", "Mephisto MM IV (TurboKit)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_TIMING )
-CONS( 1990, mm5, 0, 0, mm5, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM V (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1990, mm5a, mm5, 0, mm5, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM V (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1989, mm5p, mm5, 0, mm5p, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM V (prototype)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_TIMING )
+CONS( 1990, mm5, 0, 0, mm5, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM V (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1990, mm5a, mm5, 0, mm5, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM V (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1989, mm5p, mm5, 0, mm5p, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM V (Portorose TM version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_TIMING )
diff --git a/src/mame/drivers/mephisto_modena.cpp b/src/mame/drivers/mephisto_modena.cpp
index 2d2fc59804e..c073b7bb31a 100644
--- a/src/mame/drivers/mephisto_modena.cpp
+++ b/src/mame/drivers/mephisto_modena.cpp
@@ -12,7 +12,7 @@ Hardware notes:
- PCB label: MODENA-A-2
- W65C02SP or RP65C02G @ 4.19MHz
- 8KB RAM (battery-backed), 32KB ROM
-- 8*8 chessboard buttons, 16+6 leds, piezo
+- 8*8 chessboard buttons, 16+6 leds, 7seg lcd, piezo
**************************************************************************************************/
@@ -24,6 +24,7 @@ Hardware notes:
#include "machine/sensorboard.h"
#include "machine/timer.h"
#include "sound/dac.h"
+#include "video/mmdisplay1.h"
#include "video/pwm.h"
#include "speaker.h"
@@ -42,9 +43,9 @@ public:
, m_maincpu(*this, "maincpu")
, m_board(*this, "board")
, m_display(*this, "display")
+ , m_led_pwm(*this, "led_pwm")
, m_dac(*this, "dac")
, m_keys(*this, "KEY")
- , m_digits(*this, "digit%u", 0U)
{ }
void modena(machine_config &config);
@@ -55,30 +56,25 @@ protected:
private:
required_device<cpu_device> m_maincpu;
required_device<sensorboard_device> m_board;
- required_device<pwm_display_device> m_display;
+ required_device<mephisto_display1_device> m_display;
+ required_device<pwm_display_device> m_led_pwm;
required_device<dac_bit_interface> m_dac;
required_ioport m_keys;
- output_finder<4> m_digits;
void modena_mem(address_map &map);
u8 input_r();
- void digits_w(u8 data);
void io_w(u8 data);
void led_w(u8 data);
void update_display();
u8 m_board_mux = 0;
- u8 m_digits_idx = 0;
u8 m_io_ctrl = 0;
};
void modena_state::machine_start()
{
- m_digits.resolve();
-
save_item(NAME(m_board_mux));
- save_item(NAME(m_digits_idx));
save_item(NAME(m_io_ctrl));
}
@@ -90,7 +86,7 @@ void modena_state::machine_start()
void modena_state::update_display()
{
- m_display->matrix(m_io_ctrl >> 1 & 7, m_board_mux);
+ m_led_pwm->matrix(m_io_ctrl >> 1 & 7, m_board_mux);
}
u8 modena_state::input_r()
@@ -120,17 +116,14 @@ void modena_state::io_w(u8 data)
{
// d0: button select
// d1-d3: led select
- // d4: lcd polarity
- // d6: speaker out
m_io_ctrl = data;
update_display();
- m_dac->write(BIT(data, 6));
-}
-void modena_state::digits_w(u8 data)
-{
- m_digits[m_digits_idx] = data ^ ((m_io_ctrl & 0x10) ? 0xff : 0x00);
- m_digits_idx = (m_digits_idx + 1) & 3;
+ // d4: lcd strobe
+ m_display->strobe_w(BIT(data, 4));
+
+ // d6: speaker out
+ m_dac->write(BIT(data, 6));
}
@@ -142,7 +135,7 @@ void modena_state::digits_w(u8 data)
void modena_state::modena_mem(address_map &map)
{
map(0x0000, 0x1fff).ram().share("nvram");
- map(0x4000, 0x4000).w(FUNC(modena_state::digits_w));
+ map(0x4000, 0x4000).w(m_display, FUNC(mephisto_display1_device::data_w));
map(0x5000, 0x5000).w(FUNC(modena_state::led_w));
map(0x6000, 0x6000).w(FUNC(modena_state::io_w));
map(0x7000, 0x7000).r(FUNC(modena_state::input_r));
@@ -158,14 +151,14 @@ void modena_state::modena_mem(address_map &map)
static INPUT_PORTS_START( modena )
PORT_START("KEY")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Book / Pawn") PORT_CODE(KEYCODE_B)
- 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) // "
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Book / Pawn") PORT_CODE(KEYCODE_B)
+ 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
@@ -180,7 +173,7 @@ void modena_state::modena(machine_config &config)
M65C02(config, m_maincpu, 4.194304_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &modena_state::modena_mem);
- clock_device &nmi_clock(CLOCK(config, "nmi_clock", 4.194304_MHz_XTAL / (1 << 13))); // active for 975us
+ clock_device &nmi_clock(CLOCK(config, "nmi_clock", 4.194304_MHz_XTAL / 0x2000)); // active for 975us
nmi_clock.signal_handler().set_inputline(m_maincpu, INPUT_LINE_NMI);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -191,7 +184,8 @@ void modena_state::modena(machine_config &config)
m_board->set_nvram_enable(true);
/* video hardware */
- PWM_DISPLAY(config, m_display).set_size(3, 8);
+ MEPHISTO_DISPLAY_MODULE1(config, m_display); // internal
+ PWM_DISPLAY(config, m_led_pwm).set_size(3, 8);
config.set_default_layout(layout_mephisto_modena);
/* sound hardware */
diff --git a/src/mame/drivers/mephisto_modular.cpp b/src/mame/drivers/mephisto_modular.cpp
index 0114d305ad4..6ae4c9bcdf0 100644
--- a/src/mame/drivers/mephisto_modular.cpp
+++ b/src/mame/drivers/mephisto_modular.cpp
@@ -252,8 +252,8 @@ void mmodular_state::alm16_mem(address_map &map)
map(0xf00000, 0xf00003).portr("KEY1");
map(0xf00004, 0xf00007).portr("KEY2");
map(0xf00008, 0xf0000b).portr("KEY3");
- map(0xd80000, 0xd80000).w("display", FUNC(mephisto_display_module2_device::latch_w));
- map(0xd80008, 0xd80008).w("display", FUNC(mephisto_display_module2_device::io_w));
+ map(0xd80000, 0xd80000).w("display", FUNC(mephisto_display2_device::latch_w));
+ map(0xd80008, 0xd80008).w("display", FUNC(mephisto_display2_device::io_w));
}
void mmodular_state::port16_mem(address_map &map)
@@ -283,8 +283,8 @@ void mmodular_state::alm32_mem(address_map &map)
map(0x800000fc, 0x800000fc).r("board", FUNC(mephisto_board_device::input_r));
map(0x88000000, 0x88000007).w("board", FUNC(mephisto_board_device::mux_w)).umask32(0xff000000);
map(0x90000000, 0x90000007).w("board", FUNC(mephisto_board_device::led_w)).umask32(0xff000000);
- map(0xa0000000, 0xa0000000).w("display", FUNC(mephisto_display_module2_device::latch_w));
- map(0xa0000010, 0xa0000010).w("display", FUNC(mephisto_display_module2_device::io_w));
+ map(0xa0000000, 0xa0000000).w("display", FUNC(mephisto_display2_device::latch_w));
+ map(0xa0000010, 0xa0000010).w("display", FUNC(mephisto_display2_device::io_w));
map(0xa8000000, 0xa8007fff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask32(0xff000000);
}
@@ -318,8 +318,8 @@ void mmodular_state::gen32_mem(address_map &map)
map(0xd8000004, 0xd8000004).r(FUNC(mmodular_state::bavaria1_r));
map(0xd8000008, 0xd8000008).w(FUNC(mmodular_state::bavaria_w));
map(0xd800000c, 0xd800000c).r(FUNC(mmodular_state::bavaria2_r));
- map(0xe0000000, 0xe0000000).w("display", FUNC(mephisto_display_module2_device::latch_w));
- map(0xe0000010, 0xe0000010).w("display", FUNC(mephisto_display_module2_device::io_w));
+ map(0xe0000000, 0xe0000000).w("display", FUNC(mephisto_display2_device::latch_w));
+ map(0xe0000010, 0xe0000010).w("display", FUNC(mephisto_display2_device::io_w));
map(0xe8000000, 0xe8007fff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask32(0xff000000);
map(0xf0000004, 0xf0000007).portr("KEY1");
map(0xf0000008, 0xf000000b).portr("KEY2");
diff --git a/src/mame/drivers/mephisto_modular_tm.cpp b/src/mame/drivers/mephisto_modular_tm.cpp
index d485d7cf5a7..fadca7622bb 100644
--- a/src/mame/drivers/mephisto_modular_tm.cpp
+++ b/src/mame/drivers/mephisto_modular_tm.cpp
@@ -147,8 +147,8 @@ void mmtm_state::mmtm_2m_map(address_map &map)
map(0xfc020004, 0xfc020007).portr("KEY1");
map(0xfc020008, 0xfc02000b).portr("KEY2");
map(0xfc020010, 0xfc020013).portr("KEY3");
- map(0xfc040000, 0xfc040000).w("display", FUNC(mephisto_display_module2_device::latch_w));
- map(0xfc060000, 0xfc060000).w("display", FUNC(mephisto_display_module2_device::io_w));
+ map(0xfc040000, 0xfc040000).w("display", FUNC(mephisto_display2_device::latch_w));
+ map(0xfc060000, 0xfc060000).w("display", FUNC(mephisto_display2_device::io_w));
map(0xfc080000, 0xfc080000).w("board", FUNC(mephisto_board_device::mux_w));
map(0xfc0a0000, 0xfc0a0000).w("board", FUNC(mephisto_board_device::led_w));
map(0xfc0c0000, 0xfc0c0000).r("board", FUNC(mephisto_board_device::input_r));
diff --git a/src/mame/drivers/mephisto_mondial.cpp b/src/mame/drivers/mephisto_mondial.cpp
index 8142dc91e7f..71338294db7 100644
--- a/src/mame/drivers/mephisto_mondial.cpp
+++ b/src/mame/drivers/mephisto_mondial.cpp
@@ -7,12 +7,13 @@ Mephisto Mondial
Hardware notes:
- G65SC02-1 @ 2MHz
- 2KB RAM(TC5517AP), 16KB ROM
+- expansion slot at underside
- 8*8 chessboard buttons, 24 leds, active buzzer
TODO:
- verify XTAL (or maybe RC or LC circuit), 2MHz is correct
- unknown read from 0x2000
-- add MM 1000 module
+- dump/add MM 1000 module
******************************************************************************/
@@ -156,7 +157,9 @@ void mondial_state::mondial(machine_config &config)
/* basic machine hardware */
M65SC02(config, m_maincpu, 2000000);
m_maincpu->set_addrmap(AS_PROGRAM, &mondial_state::mondial_mem);
- m_maincpu->set_periodic_int(FUNC(mondial_state::irq0_line_hold), attotime::from_hz(2000000 / (1 << 12)));
+
+ const attotime irq_period = attotime::from_hz(2000000 / 0x1000);
+ m_maincpu->set_periodic_int(FUNC(mondial_state::irq0_line_hold), 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 b7a64f5945d..42621bb3f43 100644
--- a/src/mame/drivers/mephisto_mondial2.cpp
+++ b/src/mame/drivers/mephisto_mondial2.cpp
@@ -8,6 +8,7 @@ Mephisto Mondial II
Hardware notes:
- G65SC02 @ 2MHz (unsure about rating)
- 2KB RAM, 32KB ROM
+- expansion slot at underside (not used)
- 8*8 chessboard buttons, 24 leds, piezo
******************************************************************************/
@@ -177,7 +178,9 @@ void mondial2_state::mondial2(machine_config &config)
/* basic machine hardware */
M65SC02(config, m_maincpu, 2_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &mondial2_state::mondial2_mem);
- m_maincpu->set_periodic_int(FUNC(mondial2_state::nmi_line_pulse), attotime::from_hz(2_MHz_XTAL / (1 << 12)));
+
+ const attotime nmi_period = attotime::from_hz(2_MHz_XTAL / 0x1000);
+ m_maincpu->set_periodic_int(FUNC(mondial2_state::nmi_line_pulse), nmi_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_montec.cpp b/src/mame/drivers/mephisto_montec.cpp
index e2cb1923872..6b4d5a5bc90 100644
--- a/src/mame/drivers/mephisto_montec.cpp
+++ b/src/mame/drivers/mephisto_montec.cpp
@@ -190,7 +190,7 @@ void mephisto_montec_state::montec_mem(address_map &map)
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));
+ 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();
}
diff --git a/src/mame/drivers/mephisto_polgar.cpp b/src/mame/drivers/mephisto_polgar.cpp
index 97c23edfd21..9cafe14136c 100644
--- a/src/mame/drivers/mephisto_polgar.cpp
+++ b/src/mame/drivers/mephisto_polgar.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Sandro Ronco
+// copyright-holders:Sandro Ronco, hap
/******************************************************************************
Mephisto Polgar
@@ -8,7 +8,7 @@ Hardware notes:
- RP65C02G @ 4.91MHz
- 64KB ROM (25% unused)
- Mephisto modular display module
-- Mephisto Exclusive/Muenchen chessboard
+- Mephisto modular chessboard
The 10MHz version has a W65C02P-8 @ 9.83MHz.
@@ -58,7 +58,7 @@ private:
u8 polgar_state::keys_r(offs_t offset)
{
- return (BIT(m_keys->read(), offset) << 7) | 0x7f;
+ return ~(BIT(m_keys->read(), offset) << 7);
}
@@ -70,8 +70,8 @@ u8 polgar_state::keys_r(offs_t offset)
void polgar_state::polgar_mem(address_map &map)
{
map(0x0000, 0x1fff).ram().share("nvram");
- map(0x2000, 0x2000).w("display", FUNC(mephisto_display_module2_device::latch_w));
- map(0x2004, 0x2004).w("display", FUNC(mephisto_display_module2_device::io_w));
+ map(0x2000, 0x2000).w("display", FUNC(mephisto_display2_device::latch_w));
+ map(0x2004, 0x2004).w("display", FUNC(mephisto_display2_device::io_w));
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(polgar_state::keys_r));
@@ -88,14 +88,14 @@ void polgar_state::polgar_mem(address_map &map)
static INPUT_PORTS_START( polgar )
PORT_START("KEY")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("TRN / 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("MEM / Bishop") PORT_CODE(KEYCODE_M)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("POS / Rook") PORT_CODE(KEYCODE_O)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("LEV / Queen") PORT_CODE(KEYCODE_L)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("FCT / King") PORT_CODE(KEYCODE_F)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("ENT / New Game") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("CL / New Game") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // "
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("TRN / 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("MEM / Bishop") PORT_CODE(KEYCODE_M)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("POS / Rook") PORT_CODE(KEYCODE_O)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEV / Queen") PORT_CODE(KEYCODE_L)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("FCT / King") PORT_CODE(KEYCODE_F)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT / New Game") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL / New Game") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // "
INPUT_PORTS_END
@@ -108,7 +108,9 @@ void polgar_state::polgar(machine_config &config)
{
R65C02(config, m_maincpu, 4.9152_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &polgar_state::polgar_mem);
- m_maincpu->set_periodic_int(FUNC(polgar_state::nmi_line_pulse), attotime::from_hz(4.9152_MHz_XTAL / (1 << 13)));
+
+ const attotime nmi_period = attotime::from_hz(4.9152_MHz_XTAL / 0x2000);
+ m_maincpu->set_periodic_int(FUNC(polgar_state::nmi_line_pulse), nmi_period);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -131,7 +133,9 @@ void polgar_state::polgar10(machine_config &config)
M65C02(config.replace(), m_maincpu, 9.8304_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &polgar_state::polgar_mem);
- m_maincpu->set_periodic_int(FUNC(polgar_state::nmi_line_pulse), attotime::from_hz(9.8304_MHz_XTAL / (1 << 13)));
+
+ const attotime nmi_period = attotime::from_hz(9.8304_MHz_XTAL / 0x2000);
+ m_maincpu->set_periodic_int(FUNC(polgar_state::nmi_line_pulse), nmi_period);
}
diff --git a/src/mame/drivers/mephisto_risc.cpp b/src/mame/drivers/mephisto_risc.cpp
index d4e07536f3b..7c1483fbede 100644
--- a/src/mame/drivers/mephisto_risc.cpp
+++ b/src/mame/drivers/mephisto_risc.cpp
@@ -12,7 +12,7 @@ Hardware notes:
- 128KB ROM
- Tasc ChessMachine EC PCB
- Mephisto modular display module
-- Mephisto Exclusive/Muenchen chessboard
+- Mephisto modular chessboard
******************************************************************************/
@@ -73,7 +73,7 @@ void risc_state::machine_start()
u8 risc_state::keys_r(offs_t offset)
{
- return (BIT(m_keys->read(), offset) << 7) | 0x7f;
+ return ~(BIT(m_keys->read(), offset) << 7);
}
u8 risc_state::chessm_r()
@@ -102,8 +102,8 @@ void risc_state::mrisc_mem(address_map &map)
{
map.unmap_value_high();
map(0x0000, 0x1fff).ram().share("nvram");
- map(0x2000, 0x2000).w("display", FUNC(mephisto_display_module2_device::latch_w));
- map(0x2004, 0x2004).w("display", FUNC(mephisto_display_module2_device::io_w));
+ map(0x2000, 0x2000).w("display", FUNC(mephisto_display2_device::latch_w));
+ map(0x2004, 0x2004).w("display", FUNC(mephisto_display2_device::io_w));
map(0x2c00, 0x2c07).r(FUNC(risc_state::keys_r));
map(0x2400, 0x2400).w("board", FUNC(mephisto_board_device::led_w));
map(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w));
@@ -123,14 +123,14 @@ void risc_state::mrisc_mem(address_map &map)
static INPUT_PORTS_START( mrisc )
PORT_START("KEY")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("TRN / 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("MEM / Bishop") PORT_CODE(KEYCODE_M)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("POS / Rook") PORT_CODE(KEYCODE_O)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("LEV / Queen") PORT_CODE(KEYCODE_L)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("FCT / King") PORT_CODE(KEYCODE_F)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("ENT / New Game") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("CL / New Game") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // "
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("TRN / 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("MEM / Bishop") PORT_CODE(KEYCODE_M)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("POS / Rook") PORT_CODE(KEYCODE_O)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEV / Queen") PORT_CODE(KEYCODE_L)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("FCT / King") PORT_CODE(KEYCODE_F)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT / New Game") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL / New Game") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // "
INPUT_PORTS_END
@@ -143,7 +143,9 @@ void risc_state::mrisc(machine_config &config)
{
M65SC02(config, m_maincpu, 10_MHz_XTAL / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &risc_state::mrisc_mem);
- m_maincpu->set_periodic_int(FUNC(risc_state::irq0_line_hold), attotime::from_hz(10_MHz_XTAL / (1 << 14)));
+
+ const attotime irq_period = attotime::from_hz(10_MHz_XTAL / 0x4000);
+ m_maincpu->set_periodic_int(FUNC(risc_state::irq0_line_hold), irq_period);
CHESSMACHINE(config, m_chessm, 14'000'000); // Mephisto manual says 14MHz (no XTAL)
config.set_perfect_quantum(m_maincpu);
diff --git a/src/mame/layout/mephisto_1.lay b/src/mame/layout/mephisto_1.lay
index 19643f73e97..c093656d5be 100644
--- a/src/mame/layout/mephisto_1.lay
+++ b/src/mame/layout/mephisto_1.lay
@@ -47,13 +47,14 @@ license:CC0
<!-- display -->
<element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
+ <element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
<element name="digit" defstate="0">
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element>
- <element name="ldot" defstate="0">
- <rect state="1"><color red="0.2" green="0.16" blue="0.16" /></rect>
- <rect state="0"><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
+ <element name="ldot">
+ <rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
+ <rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
</element>
<group name="display">
@@ -66,12 +67,18 @@ license:CC0
<element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
<element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
- <element name="3.7" ref="ldot"><bounds x="36.25" y="96.42" width="0.6" height="0.6" /></element>
- <element name="2.7" ref="ldot"><bounds x="41.75" y="96.42" width="0.6" height="0.6" /></element>
- <element name="1.7" ref="ldot"><bounds x="47.25" y="96.42" width="0.6" height="0.6" /></element>
+ <!-- digits DP are different from normal 7seg -->
+ <element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
- <element name="0.7" ref="ldot"><bounds x="42.16" y="92.75" width="0.6" height="0.6" /></element>
- <element name="0.7" ref="ldot"><bounds x="41.94" y="94.55" width="0.6" height="0.6" /></element>
+ <element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
+
+ <element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
+ <element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group>
diff --git a/src/mame/layout/mephisto_3.lay b/src/mame/layout/mephisto_3.lay
index 922297fbef6..61432fceea5 100644
--- a/src/mame/layout/mephisto_3.lay
+++ b/src/mame/layout/mephisto_3.lay
@@ -205,7 +205,7 @@ license:CC0
<!-- leds -->
<repeat count="8">
<param name="y" start="8.3" increment="10" />
- <param name="i1" start="11" increment="-1" />
+ <param name="i1" start="7" increment="-1" />
<repeat count="8">
<param name="x" start="8.3" increment="10" />
@@ -423,13 +423,14 @@ license:CC0
<!-- display -->
<element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
+ <element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
<element name="digit" defstate="0">
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element>
- <element name="ldot" defstate="0">
- <rect state="1"><color red="0.2" green="0.16" blue="0.16" /></rect>
- <rect state="0"><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
+ <element name="ldot">
+ <rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
+ <rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
</element>
<group name="display">
@@ -442,12 +443,18 @@ license:CC0
<element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
<element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
- <element name="3.7" ref="ldot"><bounds x="36.25" y="96.42" width="0.6" height="0.6" /></element>
- <element name="2.7" ref="ldot"><bounds x="41.75" y="96.42" width="0.6" height="0.6" /></element>
- <element name="1.7" ref="ldot"><bounds x="47.25" y="96.42" width="0.6" height="0.6" /></element>
+ <!-- digits DP are different from normal 7seg -->
+ <element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
- <element name="0.7" ref="ldot"><bounds x="42.16" y="92.75" width="0.6" height="0.6" /></element>
- <element name="0.7" ref="ldot"><bounds x="41.94" y="94.55" width="0.6" height="0.6" /></element>
+ <element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
+
+ <element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
+ <element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group>
diff --git a/src/mame/layout/mephisto_academy.lay b/src/mame/layout/mephisto_academy.lay
index faaf5de2340..fabca06d644 100644
--- a/src/mame/layout/mephisto_academy.lay
+++ b/src/mame/layout/mephisto_academy.lay
@@ -47,44 +47,44 @@ license:CC0
</rect>
</element>
- <element name="background"><rect><color red="0.59" green="0.39" blue="0.20" /></rect></element>
- <element name="white"><rect><color red="0.80" green="0.73" blue="0.63" /></rect></element>
-
- <element name="text_1"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="1"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_2"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="2"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_3"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="3"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_4"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="4"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_5"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="5"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_6"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="6"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_7"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="7"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_8"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="8"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_a"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="A"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_b"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="B"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_c"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="C"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_d"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="D"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_e"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="E"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_f"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="F"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_g"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="G"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_h"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="H"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
-
- <element name="text_black"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="&#x25a1;"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_white"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="&#x25a0;"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_train"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="TRAIN"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_info"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="INFO"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_mem"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="MEM"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_pos"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="POS"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_lev"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="LEV"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_fct"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="FCT"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_ent"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="ENT"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_cl"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="CL"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_newgame"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="NEW GAME"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_p1"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[K]"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_p2"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[Q]"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_p3"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[R]"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_p4"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[B]"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_p5"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[N]"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_p6"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[P]"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_lcd"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="MULTI INFO LCD"><color red="1" green="1" blue="1" /></text> </element>
+ <element name="background"><rect><color red="0.56" green="0.33" blue="0.12" /></rect></element>
+ <element name="white"><rect><color red="0.84" green="0.75" blue="0.50" /></rect></element>
+
+ <element name="text_1"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="1"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_2"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="2"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_3"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="3"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_4"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="4"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_5"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="5"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_6"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="6"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_7"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="7"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_8"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="8"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_a"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="A"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_b"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="B"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_c"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="C"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_d"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="D"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_e"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="E"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_f"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="F"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_g"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="G"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_h"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="H"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+
+ <element name="text_black"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="&#x25a1;"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_white"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="&#x25a0;"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_train"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="TRAIN"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_info"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="INFO"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_mem"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="MEM"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_pos"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="POS"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_lev"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="LEV"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_fct"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="FCT"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_ent"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="ENT"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_cl"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="CL"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_newgame"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="NEW GAME"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_p1"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[K]"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_p2"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[Q]"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_p3"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[R]"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_p4"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[B]"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_p5"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[N]"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_p6"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[P]"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_lcd"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="MULTI INFO LCD"><color red="1" green="1" blue="1" /></text> </element>
<element name="piece" defstate="0">
@@ -121,8 +121,8 @@ license:CC0
<!-- sb board -->
- <element name="cblack"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect></element>
- <element name="cwhite"> <rect><color red="0.80" green="0.73" blue="0.63" /></rect></element>
+ <element name="cblack"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect></element>
+ <element name="cwhite"> <rect><color red="0.84" green="0.75" blue="0.50" /></rect></element>
<element name="hlbb" defstate="0">
<text string=" "><bounds x="0" y="0" width="1" height="1" /></text>
@@ -210,7 +210,7 @@ license:CC0
<!-- chessboard leds -->
<repeat count="8">
- <param name="x" start="8.2" increment="10" />
+ <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" />
@@ -266,34 +266,34 @@ license:CC0
<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.80" green="0.73" blue="0.63" /></rect>
+ <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string="RESET"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uib3">
- <rect><color red="0.80" green="0.73" blue="0.63" /></rect>
+ <rect><color red="0.84" green="0.75" blue="0.50" /></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.80" green="0.73" blue="0.63" /></rect>
+ <rect><color red="0.84" green="0.75" blue="0.50" /></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.80" green="0.73" blue="0.63" /></rect>
+ <rect><color red="0.84" green="0.75" blue="0.50" /></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.80" green="0.73" blue="0.63" /></rect>
+ <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string=" &lt; "><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uiu2c">
- <rect><color red="0.80" green="0.73" blue="0.63" /></rect>
+ <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string=" &gt;"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uiu2d">
- <rect><color red="0.80" green="0.73" blue="0.63" /></rect>
+ <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string=" &gt;&gt;"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uiu3a" defstate="0">
diff --git a/src/mame/layout/mephisto_alm16.lay b/src/mame/layout/mephisto_alm16.lay
index 255e64639e8..e74f8ca549b 100644
--- a/src/mame/layout/mephisto_alm16.lay
+++ b/src/mame/layout/mephisto_alm16.lay
@@ -181,7 +181,7 @@ license:CC0
<!-- chessboard leds -->
<repeat count="8">
- <param name="x" start="8.2" increment="10" />
+ <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" />
diff --git a/src/mame/layout/mephisto_alm32.lay b/src/mame/layout/mephisto_alm32.lay
index b690df7f65b..e141fc81c1c 100644
--- a/src/mame/layout/mephisto_alm32.lay
+++ b/src/mame/layout/mephisto_alm32.lay
@@ -181,7 +181,7 @@ license:CC0
<!-- chessboard leds -->
<repeat count="8">
- <param name="x" start="8.2" increment="10" />
+ <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" />
diff --git a/src/mame/layout/mephisto_amsterdam.lay b/src/mame/layout/mephisto_amsterdam.lay
index 8e94c4f3b04..1e75b7afcb6 100644
--- a/src/mame/layout/mephisto_amsterdam.lay
+++ b/src/mame/layout/mephisto_amsterdam.lay
@@ -4,11 +4,7 @@ license:CC0
-->
<mamelayout version="2">
- <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
-
- <element name="digit" defstate="0">
- <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
- </element>
+<!-- define elements -->
<element name="led" defstate="0">
<disk state="0">
@@ -169,7 +165,7 @@ license:CC0
<!-- chessboard leds -->
<repeat count="8">
- <param name="x" start="8.2" increment="10" />
+ <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" />
@@ -348,14 +344,41 @@ license:CC0
</group>
-<!-- 7seg panel -->
+<!-- display -->
+
+ <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
+ <element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
+
+ <element name="digit" defstate="0">
+ <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
+ </element>
+ <element name="ldot">
+ <rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
+ <rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
+ </element>
- <group name="panel">
- <element ref="lcd_bg"><bounds x="0" y="0" width="35" height="15" /></element>
- <element name="digit0" ref="digit"><bounds x="4" y="2.5" width="6" height="10" /></element>
- <element name="digit1" ref="digit"><bounds x="11" y="2.5" width="6" height="10" /></element>
- <element name="digit2" ref="digit"><bounds x="18" y="2.5" width="6" height="10" /></element>
- <element name="digit3" ref="digit"><bounds x="25" y="2.5" width="6" height="10" /></element>
+ <group name="display">
+ <bounds x="31" y="90.3" width="22.5" height="7.4" />
+
+ <element ref="lcd_bg"><bounds x="31" y="90.3" width="22.5" height="7.4" /></element>
+
+ <element name="digit3" ref="digit"><bounds x="32" y="91" width="4" height="6" /></element>
+ <element name="digit2" ref="digit"><bounds x="37.5" y="91" width="4" height="6" /></element>
+ <element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
+ <element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
+
+ <!-- digits DP are different from normal 7seg -->
+ <element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
+
+ <element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
+
+ <element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
+ <element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group>
@@ -531,15 +554,10 @@ license:CC0
<element ref="cblack"><bounds x="13" y="-2" width="89" height="89" /></element>
<element ref="cwhite"><bounds x="17" y="2" width="81" height="81" /></element>
- <group ref="panel"><bounds x="37.5" y="91" width="20" height="8" /></group>
-
- <group ref="buttons"><bounds x="67.5" y="88.5" width="29" height="14" /></group>
-
<group ref="sb_board"><bounds x="17.5" y="2.5" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="1.5" y="3" width="10" height="80" /></group>
- <!-- chessboard coords -->
-
+ <!-- chessboard coords -->
<element ref="text_8"><bounds x="14.2" y="6.5" width="2" height="2" /></element>
<element ref="text_7"><bounds x="14.2" y="16.5" width="2" height="2" /></element>
<element ref="text_6"><bounds x="14.2" y="26.5" width="2" height="2" /></element>
@@ -557,6 +575,11 @@ license:CC0
<element ref="text_f"><bounds x="71.5" y="84" width="2" height="2" /></element>
<element ref="text_g"><bounds x="81.5" y="84" width="2" height="2" /></element>
<element ref="text_h"><bounds x="91.5" y="84" width="2" height="2" /></element>
+
+ <!-- bottom side -->
+ <element ref="lcd_bg"><bounds x="37.5" y="91.5" width="20" height="8" /></element>
+ <group ref="display"><bounds x="38" y="92.3" width="19" height="6.4" /></group>
+ <group ref="buttons"><bounds x="67.5" y="88.5" width="29" height="14" /></group>
</view>
</mamelayout>
diff --git a/src/mame/layout/mephisto_bup.lay b/src/mame/layout/mephisto_bup.lay
index c00c6086a52..8b718a333e7 100644
--- a/src/mame/layout/mephisto_bup.lay
+++ b/src/mame/layout/mephisto_bup.lay
@@ -3,13 +3,8 @@
license:CC0
-->
<mamelayout version="2">
-<!-- define elements -->
-
- <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
- <element name="digit" defstate="0">
- <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
- </element>
+<!-- define elements -->
<element name="led" defstate="0">
<disk state="0">
@@ -170,7 +165,7 @@ license:CC0
<!-- chessboard leds -->
<repeat count="8">
- <param name="x" start="8.2" increment="10" />
+ <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" />
@@ -349,14 +344,41 @@ license:CC0
</group>
-<!-- 7seg panel -->
+<!-- display -->
- <group name="panel1">
- <element ref="lcd_bg"><bounds x="0" y="0" width="35" height="15" /></element>
- <element name="digit0" ref="digit"><bounds x="4" y="2.5" width="6" height="10" /></element>
- <element name="digit1" ref="digit"><bounds x="11" y="2.5" width="6" height="10" /></element>
- <element name="digit2" ref="digit"><bounds x="18" y="2.5" width="6" height="10" /></element>
- <element name="digit3" ref="digit"><bounds x="25" y="2.5" width="6" height="10" /></element>
+ <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
+ <element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
+
+ <element name="digit" defstate="0">
+ <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
+ </element>
+ <element name="ldot">
+ <rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
+ <rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
+ </element>
+
+ <group name="display">
+ <bounds x="31" y="90.3" width="22.5" height="7.4" />
+
+ <element ref="lcd_bg"><bounds x="31" y="90.3" width="22.5" height="7.4" /></element>
+
+ <element name="digit3" ref="digit"><bounds x="32" y="91" width="4" height="6" /></element>
+ <element name="digit2" ref="digit"><bounds x="37.5" y="91" width="4" height="6" /></element>
+ <element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
+ <element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
+
+ <!-- digits DP are different from normal 7seg -->
+ <element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
+
+ <element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
+
+ <element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
+ <element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group>
@@ -371,7 +393,7 @@ license:CC0
<element name="led_end"> <text string="End" align="1"> <color red="0.8" green="0.8" blue="0.8" /></text> </element>
<element name="led_plus"><text string="+" align="1"> <color red="0.8" green="0.8" blue="0.8" /></text> </element>
- <group name="panel2">
+ <group name="leds">
<bounds x="69.1" y="89.9" width="29" height="1.5" />
<element ref="dwhite"><bounds x="70.7" y="89.9" width="1.4" height="1.4" /></element>
@@ -479,41 +501,41 @@ license:CC0
<element ref="gray"><bounds x="90.55" y="104.7" width="0.9" height="0.9" /></element>
<element ref="white"><bounds x="95.35" y="104.5" width="1.3" height="1.3" /></element>
- <element ref="keys" inputtag="KEY1_0" inputmask="0x80"> <!-- 1 -->
+ <element ref="keys" inputtag="KEY.0" inputmask="0x01"> <!-- 1 -->
<bounds x="69" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY1_1" inputmask="0x80"> <!-- 2 -->
+ <element ref="keys" inputtag="KEY.0" inputmask="0x02"> <!-- 2 -->
<bounds x="74" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY1_2" inputmask="0x80"> <!-- 3 -->
+ <element ref="keys" inputtag="KEY.0" inputmask="0x04"> <!-- 3 -->
<bounds x="79" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY1_3" inputmask="0x80"> <!-- 4 -->
+ <element ref="keys" inputtag="KEY.0" inputmask="0x08"> <!-- 4 -->
<bounds x="84" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY1_4" inputmask="0x80"> <!-- 5 -->
+ <element ref="keys" inputtag="KEY.0" inputmask="0x10"> <!-- 5 -->
<bounds x="89" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY1_5" inputmask="0x80"> <!-- 6 -->
+ <element ref="keys" inputtag="KEY.0" inputmask="0x20"> <!-- 6 -->
<bounds x="94" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY2_3" inputmask="0x80"> <!-- INFO -->
+ <element ref="keys" inputtag="KEY.1" inputmask="0x08"> <!-- INFO -->
<bounds x="69" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY2_5" inputmask="0x80"> <!-- POS -->
+ <element ref="keys" inputtag="KEY.1" inputmask="0x20"> <!-- POS -->
<bounds x="74" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY2_6" inputmask="0x80"> <!-- LEV -->
+ <element ref="keys" inputtag="KEY.1" inputmask="0x40"> <!-- LEV -->
<bounds x="79" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY2_7" inputmask="0x80"> <!-- MEM -->
+ <element ref="keys" inputtag="KEY.1" inputmask="0x80"> <!-- MEM -->
<bounds x="84" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY2_0" inputmask="0x80"> <!-- CL -->
+ <element ref="keys" inputtag="KEY.1" inputmask="0x01"> <!-- CL -->
<bounds x="89" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY2_1" inputmask="0x80"> <!-- ENT -->
+ <element ref="keys" inputtag="KEY.1" inputmask="0x02"> <!-- ENT -->
<bounds x="94" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
@@ -523,16 +545,16 @@ license:CC0
<element ref="keys" inputtag="RESET" inputmask="0x02"> <!-- RES -->
<bounds x="74" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY2_2" inputmask="0x80"> <!-- BEST -->
+ <element ref="keys" inputtag="KEY.1" inputmask="0x04"> <!-- BEST -->
<bounds x="79" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY2_4" inputmask="0x80"> <!-- MON -->
+ <element ref="keys" inputtag="KEY.1" inputmask="0x10"> <!-- MON -->
<bounds x="84" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY1_7" inputmask="0x80"> <!-- BLACK -->
+ <element ref="keys" inputtag="KEY.0" inputmask="0x80"> <!-- BLACK -->
<bounds x="89" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY1_6" inputmask="0x80"> <!-- WHITE -->
+ <element ref="keys" inputtag="KEY.0" inputmask="0x40"> <!-- WHITE -->
<bounds x="94" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
</group>
@@ -545,15 +567,10 @@ license:CC0
<element ref="cblack"><bounds x="13" y="-2" width="89" height="89" /></element>
<element ref="cwhite"><bounds x="17" y="2" width="81" height="81" /></element>
- <group ref="panel1"><bounds x="37.5" y="91" width="20" height="8" /></group>
- <group ref="panel2"><bounds x="67.5" y="88.25" width="29" height="1.5" /></group>
- <group ref="buttons"><bounds x="67.5" y="91" width="29" height="14" /></group>
-
<group ref="sb_board"><bounds x="17.5" y="2.5" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="1.5" y="3" width="10" height="80" /></group>
- <!-- chessboard coords -->
-
+ <!-- chessboard coords -->
<element ref="text_8"><bounds x="14.2" y="6.5" width="2" height="2" /></element>
<element ref="text_7"><bounds x="14.2" y="16.5" width="2" height="2" /></element>
<element ref="text_6"><bounds x="14.2" y="26.5" width="2" height="2" /></element>
@@ -571,6 +588,13 @@ license:CC0
<element ref="text_f"><bounds x="71.5" y="84" width="2" height="2" /></element>
<element ref="text_g"><bounds x="81.5" y="84" width="2" height="2" /></element>
<element ref="text_h"><bounds x="91.5" y="84" width="2" height="2" /></element>
+
+ <!-- bottom side -->
+ <element ref="lcd_bg"><bounds x="37.5" y="91" width="20" height="8" /></element>
+ <group ref="display"><bounds x="38" y="91.8" width="19" height="6.4" /></group>
+
+ <group ref="leds"><bounds x="67.5" y="88.25" width="29" height="1.5" /></group>
+ <group ref="buttons"><bounds x="67.5" y="91" width="29" height="14" /></group>
</view>
</mamelayout>
diff --git a/src/mame/layout/mephisto_esb2.lay b/src/mame/layout/mephisto_esb2.lay
index 80db84a285d..92f7261edad 100644
--- a/src/mame/layout/mephisto_esb2.lay
+++ b/src/mame/layout/mephisto_esb2.lay
@@ -205,7 +205,7 @@ license:CC0
<!-- leds -->
<repeat count="8">
<param name="y" start="8.3" increment="10" />
- <param name="i1" start="11" increment="-1" />
+ <param name="i1" start="7" increment="-1" />
<repeat count="8">
<param name="x" start="8.3" increment="10" />
@@ -423,13 +423,14 @@ license:CC0
<!-- display -->
<element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
+ <element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
<element name="digit" defstate="0">
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element>
- <element name="ldot" defstate="0">
- <rect state="1"><color red="0.2" green="0.16" blue="0.16" /></rect>
- <rect state="0"><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
+ <element name="ldot">
+ <rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
+ <rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
</element>
<group name="display">
@@ -442,12 +443,18 @@ license:CC0
<element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
<element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
- <element name="3.7" ref="ldot"><bounds x="36.25" y="96.42" width="0.6" height="0.6" /></element>
- <element name="2.7" ref="ldot"><bounds x="41.75" y="96.42" width="0.6" height="0.6" /></element>
- <element name="1.7" ref="ldot"><bounds x="47.25" y="96.42" width="0.6" height="0.6" /></element>
+ <!-- digits DP are different from normal 7seg -->
+ <element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
- <element name="0.7" ref="ldot"><bounds x="42.16" y="92.75" width="0.6" height="0.6" /></element>
- <element name="0.7" ref="ldot"><bounds x="41.94" y="94.55" width="0.6" height="0.6" /></element>
+ <element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
+
+ <element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
+ <element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group>
diff --git a/src/mame/layout/mephisto_gen32.lay b/src/mame/layout/mephisto_gen32.lay
index d3255899625..498fbecc855 100644
--- a/src/mame/layout/mephisto_gen32.lay
+++ b/src/mame/layout/mephisto_gen32.lay
@@ -181,7 +181,7 @@ license:CC0
<!-- chessboard leds -->
<repeat count="8">
- <param name="x" start="8.2" increment="10" />
+ <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" />
diff --git a/src/mame/layout/mephisto_glasgow.lay b/src/mame/layout/mephisto_glasgow.lay
index 459436a977f..f3a94062cef 100644
--- a/src/mame/layout/mephisto_glasgow.lay
+++ b/src/mame/layout/mephisto_glasgow.lay
@@ -4,11 +4,7 @@ license:CC0
-->
<mamelayout version="2">
- <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
-
- <element name="digit" defstate="0">
- <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
- </element>
+<!-- define elements -->
<element name="led" defstate="0">
<disk state="0">
@@ -169,7 +165,7 @@ license:CC0
<!-- chessboard leds -->
<repeat count="8">
- <param name="x" start="8.2" increment="10" />
+ <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" />
@@ -348,14 +344,41 @@ license:CC0
</group>
-<!-- Display panel -->
+<!-- display -->
+
+ <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
+ <element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
+
+ <element name="digit" defstate="0">
+ <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
+ </element>
+ <element name="ldot">
+ <rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
+ <rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
+ </element>
- <group name="panel">
- <element ref="lcd_bg"><bounds x="0" y="0" width="35" height="15" /></element>
- <element name="digit0" ref="digit"><bounds x="4" y="2.5" width="6" height="10" /></element>
- <element name="digit1" ref="digit"><bounds x="11" y="2.5" width="6" height="10" /></element>
- <element name="digit2" ref="digit"><bounds x="18" y="2.5" width="6" height="10" /></element>
- <element name="digit3" ref="digit"><bounds x="25" y="2.5" width="6" height="10" /></element>
+ <group name="display">
+ <bounds x="31" y="90.3" width="22.5" height="7.4" />
+
+ <element ref="lcd_bg"><bounds x="31" y="90.3" width="22.5" height="7.4" /></element>
+
+ <element name="digit3" ref="digit"><bounds x="32" y="91" width="4" height="6" /></element>
+ <element name="digit2" ref="digit"><bounds x="37.5" y="91" width="4" height="6" /></element>
+ <element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
+ <element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
+
+ <!-- digits DP are different from normal 7seg -->
+ <element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
+
+ <element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
+
+ <element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
+ <element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group>
@@ -529,8 +552,10 @@ license:CC0
<element ref="cblack"><bounds x="13" y="-2" width="89" height="89" /></element>
<element ref="cwhite"><bounds x="17" y="2" width="81" height="81" /></element>
- <!-- chessboard coords -->
+ <group ref="sb_board"><bounds x="17.5" y="2.5" width="80" height="80" /></group>
+ <group ref="sb_ui"><bounds x="1.5" y="3" width="10" height="80" /></group>
+ <!-- chessboard coords -->
<element ref="text_8"><bounds x="14.2" y="6.5" width="2" height="2" /></element>
<element ref="text_7"><bounds x="14.2" y="16.5" width="2" height="2" /></element>
<element ref="text_6"><bounds x="14.2" y="26.5" width="2" height="2" /></element>
@@ -549,11 +574,9 @@ license:CC0
<element ref="text_g"><bounds x="81.5" y="84" width="2" height="2" /></element>
<element ref="text_h"><bounds x="91.5" y="84" width="2" height="2" /></element>
- <group ref="panel"><bounds x="37.5" y="91.5" width="20" height="8" /></group>
-
+ <!-- bottom side -->
+ <element ref="lcd_bg"><bounds x="37.5" y="91.5" width="20" height="8" /></element>
+ <group ref="display"><bounds x="38" y="92.3" width="19" height="6.4" /></group>
<group ref="buttons"><bounds x="67.5" y="88.5" width="29" height="14" /></group>
-
- <group ref="sb_board"><bounds x="17.5" y="2.5" 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_junior.lay b/src/mame/layout/mephisto_junior.lay
index 2c0d9c8d294..a12e1f2bc50 100644
--- a/src/mame/layout/mephisto_junior.lay
+++ b/src/mame/layout/mephisto_junior.lay
@@ -47,13 +47,14 @@ license:CC0
<!-- display -->
<element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
+ <element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
<element name="digit" defstate="0">
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element>
- <element name="ldot" defstate="0">
- <rect state="1"><color red="0.2" green="0.16" blue="0.16" /></rect>
- <rect state="0"><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
+ <element name="ldot">
+ <rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
+ <rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
</element>
<group name="display">
@@ -66,12 +67,18 @@ license:CC0
<element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
<element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
- <element name="3.7" ref="ldot"><bounds x="36.25" y="96.42" width="0.6" height="0.6" /></element>
- <element name="2.7" ref="ldot"><bounds x="41.75" y="96.42" width="0.6" height="0.6" /></element>
- <element name="1.7" ref="ldot"><bounds x="47.25" y="96.42" width="0.6" height="0.6" /></element>
+ <!-- digits DP are different from normal 7seg -->
+ <element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
- <element name="0.7" ref="ldot"><bounds x="42.16" y="92.75" width="0.6" height="0.6" /></element>
- <element name="0.7" ref="ldot"><bounds x="41.94" y="94.55" width="0.6" height="0.6" /></element>
+ <element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
+
+ <element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
+ <element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group>
diff --git a/src/mame/layout/mephisto_mirage.lay b/src/mame/layout/mephisto_mirage.lay
index b79ea6dac30..3fbda7f1e4e 100644
--- a/src/mame/layout/mephisto_mirage.lay
+++ b/src/mame/layout/mephisto_mirage.lay
@@ -161,26 +161,36 @@ license:CC0
<param name="y" start="0" increment="10" />
<param name="i" start="8" increment="-1" />
- <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
- <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
- <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
- <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
- <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
- <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
- <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
- <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x80"><bounds x="70" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
+ <element 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>
</repeat>
<!-- leds -->
<repeat count="8">
- <param name="y" start="8.3" increment="10" />
- <param name="i1" start="11" increment="-1" />
-
- <repeat count="8">
- <param name="x" start="8.3" increment="10" />
- <param name="i2" start="0" increment="1" />
- <element name="~i1~.~i2~" ref="led"><bounds x="~x~" y="~y~" width="1.5" height="1.5" /></element>
- </repeat>
+ <param name="x" start="8.3" increment="10" />
+ <param name="la" start="0" increment="1" />
+ <param name="lb" start="8" increment="1" />
+ <param name="lc" start="16" increment="1" />
+ <param name="ld" start="24" increment="1" />
+ <param name="le" start="32" increment="1" />
+ <param name="lf" start="40" increment="1" />
+ <param name="lg" start="48" increment="1" />
+ <param name="lh" start="56" increment="1" />
+
+ <element name="led~la~" ref="led"><bounds x="~x~" y="78.3" width="1.5" height="1.5" /></element>
+ <element name="led~lb~" ref="led"><bounds x="~x~" y="68.3" width="1.5" height="1.5" /></element>
+ <element name="led~lc~" ref="led"><bounds x="~x~" y="58.3" width="1.5" height="1.5" /></element>
+ <element name="led~ld~" ref="led"><bounds x="~x~" y="48.3" width="1.5" height="1.5" /></element>
+ <element name="led~le~" ref="led"><bounds x="~x~" y="38.3" width="1.5" height="1.5" /></element>
+ <element name="led~lf~" ref="led"><bounds x="~x~" y="28.3" width="1.5" height="1.5" /></element>
+ <element name="led~lg~" ref="led"><bounds x="~x~" y="18.3" width="1.5" height="1.5" /></element>
+ <element name="led~lh~" ref="led"><bounds x="~x~" y="8.3" width="1.5" height="1.5" /></element>
</repeat>
<repeat count="4">
@@ -289,8 +299,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: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>
+ <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>
@@ -310,18 +320,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: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>
+ <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>
@@ -330,7 +340,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:UI" inputmask="0x08"><bounds x="1" y="60.5" width="8" height="2.5" /><color alpha="0.25" /></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>
@@ -343,10 +353,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: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 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>
@@ -357,13 +367,14 @@ license:CC0
<!-- display -->
<element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
+ <element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
<element name="digit" defstate="0">
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element>
- <element name="ldot" defstate="0">
- <rect state="1"><color red="0.2" green="0.16" blue="0.16" /></rect>
- <rect state="0"><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
+ <element name="ldot">
+ <rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
+ <rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
</element>
<group name="display">
@@ -376,12 +387,18 @@ license:CC0
<element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
<element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
- <element name="3.7" ref="ldot"><bounds x="36.25" y="96.42" width="0.6" height="0.6" /></element>
- <element name="2.7" ref="ldot"><bounds x="41.75" y="96.42" width="0.6" height="0.6" /></element>
- <element name="1.7" ref="ldot"><bounds x="47.25" y="96.42" width="0.6" height="0.6" /></element>
+ <!-- digits DP are different from normal 7seg -->
+ <element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
+
+ <element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
- <element name="0.7" ref="ldot"><bounds x="42.16" y="92.75" width="0.6" height="0.6" /></element>
- <element name="0.7" ref="ldot"><bounds x="41.94" y="94.55" width="0.6" height="0.6" /></element>
+ <element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
+ <element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group>
diff --git a/src/mame/layout/mephisto_mm1.lay b/src/mame/layout/mephisto_mm1.lay
index 47becf67cb4..1d7b4c35f14 100644
--- a/src/mame/layout/mephisto_mm1.lay
+++ b/src/mame/layout/mephisto_mm1.lay
@@ -200,14 +200,24 @@ license:CC0
<!-- leds -->
<repeat count="8">
- <param name="y" start="8.3" increment="10" />
- <param name="i1" start="11" increment="-1" />
-
- <repeat count="8">
- <param name="x" start="8.3" increment="10" />
- <param name="i2" start="0" increment="1" />
- <element name="~i1~.~i2~" ref="led"><bounds x="~x~" y="~y~" width="1.5" height="1.5" /></element>
- </repeat>
+ <param name="x" start="8.3" increment="10" />
+ <param name="la" start="0" increment="1" />
+ <param name="lb" start="8" increment="1" />
+ <param name="lc" start="16" increment="1" />
+ <param name="ld" start="24" increment="1" />
+ <param name="le" start="32" increment="1" />
+ <param name="lf" start="40" increment="1" />
+ <param name="lg" start="48" increment="1" />
+ <param name="lh" start="56" increment="1" />
+
+ <element name="led~la~" ref="led"><bounds x="~x~" y="78.3" width="1.5" height="1.5" /></element>
+ <element name="led~lb~" ref="led"><bounds x="~x~" y="68.3" width="1.5" height="1.5" /></element>
+ <element name="led~lc~" ref="led"><bounds x="~x~" y="58.3" width="1.5" height="1.5" /></element>
+ <element name="led~ld~" ref="led"><bounds x="~x~" y="48.3" width="1.5" height="1.5" /></element>
+ <element name="led~le~" ref="led"><bounds x="~x~" y="38.3" width="1.5" height="1.5" /></element>
+ <element name="led~lf~" ref="led"><bounds x="~x~" y="28.3" width="1.5" height="1.5" /></element>
+ <element name="led~lg~" ref="led"><bounds x="~x~" y="18.3" width="1.5" height="1.5" /></element>
+ <element name="led~lh~" ref="led"><bounds x="~x~" y="8.3" width="1.5" height="1.5" /></element>
</repeat>
<!-- sensors, pieces -->
@@ -215,14 +225,14 @@ license:CC0
<param name="y" start="0" increment="10" />
<param name="i" start="8" increment="-1" />
- <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
- <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
- <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
- <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
- <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
- <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
- <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
- <element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x80"><bounds x="70" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
+ <element 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>
@@ -304,8 +314,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: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>
+ <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>
@@ -325,18 +335,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: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>
+ <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>
@@ -345,7 +355,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:UI" inputmask="0x08"><bounds x="1" y="60.5" width="8" height="2.5" /><color alpha="0.25" /></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>
@@ -358,10 +368,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: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 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>
@@ -372,13 +382,14 @@ license:CC0
<!-- display -->
<element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
+ <element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
<element name="digit" defstate="0">
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element>
- <element name="ldot" defstate="0">
- <rect state="1"><color red="0.2" green="0.16" blue="0.16" /></rect>
- <rect state="0"><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
+ <element name="ldot">
+ <rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
+ <rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
</element>
<group name="display">
@@ -391,12 +402,18 @@ license:CC0
<element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
<element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
- <element name="3.7" ref="ldot"><bounds x="36.25" y="96.42" width="0.6" height="0.6" /></element>
- <element name="2.7" ref="ldot"><bounds x="41.75" y="96.42" width="0.6" height="0.6" /></element>
- <element name="1.7" ref="ldot"><bounds x="47.25" y="96.42" width="0.6" height="0.6" /></element>
+ <!-- digits DP are different from normal 7seg -->
+ <element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
- <element name="0.7" ref="ldot"><bounds x="42.16" y="92.75" width="0.6" height="0.6" /></element>
- <element name="0.7" ref="ldot"><bounds x="41.94" y="94.55" width="0.6" height="0.6" /></element>
+ <element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
+
+ <element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
+ <element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group>
@@ -545,10 +562,7 @@ license:CC0
<group ref="sb_board"><bounds x="3.5" y="3" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="-12.5" y="3" width="10" height="80" /></group>
- <element ref="lcd_bg"><bounds x="23.5" y="92" width="20" height="8" /></element>
- <group ref="display"><bounds x="24" y="92.8" width="19" height="6.4" /></group>
- <group ref="buttons"><bounds x="53.5" y="89" width="29" height="14" /></group>
-
+ <!-- chessboard coords -->
<element ref="text_8"><bounds x="0.2" y="7" width="2" height="2" /></element>
<element ref="text_7"><bounds x="0.2" y="17" width="2" height="2" /></element>
<element ref="text_6"><bounds x="0.2" y="27" width="2" height="2" /></element>
@@ -566,5 +580,10 @@ license:CC0
<element ref="text_f"><bounds x="57.5" y="84.5" width="2" height="2" /></element>
<element ref="text_g"><bounds x="67.5" y="84.5" width="2" height="2" /></element>
<element ref="text_h"><bounds x="77.5" y="84.5" width="2" height="2" /></element>
+
+ <!-- bottom side -->
+ <element ref="lcd_bg"><bounds x="23.5" y="92" width="20" height="8" /></element>
+ <group ref="display"><bounds x="24" y="92.8" width="19" height="6.4" /></group>
+ <group ref="buttons"><bounds x="53.5" y="89" width="29" height="14" /></group>
</view>
</mamelayout>
diff --git a/src/mame/layout/mephisto_mm2.lay b/src/mame/layout/mephisto_mm2.lay
index 4ac73ef50c6..4d76871cb0d 100644
--- a/src/mame/layout/mephisto_mm2.lay
+++ b/src/mame/layout/mephisto_mm2.lay
@@ -3,13 +3,8 @@
license:CC0
-->
<mamelayout version="2">
-<!-- define elements -->
-
- <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
- <element name="digit" defstate="0">
- <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
- </element>
+<!-- define elements -->
<element name="led" defstate="0">
<disk state="0">
@@ -170,7 +165,7 @@ license:CC0
<!-- chessboard leds -->
<repeat count="8">
- <param name="x" start="8.2" increment="10" />
+ <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" />
@@ -349,14 +344,41 @@ license:CC0
</group>
-<!-- 7seg panel -->
+<!-- display -->
- <group name="panel1">
- <element ref="lcd_bg"><bounds x="0" y="0" width="35" height="15" /></element>
- <element name="digit0" ref="digit"><bounds x="4" y="2.5" width="6" height="10" /></element>
- <element name="digit1" ref="digit"><bounds x="11" y="2.5" width="6" height="10" /></element>
- <element name="digit2" ref="digit"><bounds x="18" y="2.5" width="6" height="10" /></element>
- <element name="digit3" ref="digit"><bounds x="25" y="2.5" width="6" height="10" /></element>
+ <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
+ <element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
+
+ <element name="digit" defstate="0">
+ <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
+ </element>
+ <element name="ldot">
+ <rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
+ <rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
+ </element>
+
+ <group name="display">
+ <bounds x="31" y="90.3" width="22.5" height="7.4" />
+
+ <element ref="lcd_bg"><bounds x="31" y="90.3" width="22.5" height="7.4" /></element>
+
+ <element name="digit3" ref="digit"><bounds x="32" y="91" width="4" height="6" /></element>
+ <element name="digit2" ref="digit"><bounds x="37.5" y="91" width="4" height="6" /></element>
+ <element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
+ <element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
+
+ <!-- digits DP are different from normal 7seg -->
+ <element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
+
+ <element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
+
+ <element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
+ <element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group>
@@ -371,7 +393,7 @@ license:CC0
<element name="led_pos"> <text string="POS" align="1"> <color red="0.8" green="0.8" blue="0.8" /></text> </element>
<element name="led_mem"> <text string="MEM" align="1"> <color red="0.8" green="0.8" blue="0.8" /></text> </element>
- <group name="panel2">
+ <group name="leds">
<bounds x="69.1" y="89.9" width="29" height="1.5" />
<element ref="led_play"><bounds x="70.7" y="89.9" width="3.2" height="1.5" /></element>
@@ -488,41 +510,41 @@ license:CC0
<element ref="gray"><bounds x="89.7" y="105.3" width="0.9" height="0.9" /></element>
<element ref="white"><bounds x="94.5" y="105.1" width="1.3" height="1.3" /></element>
- <element ref="keys" inputtag="KEY1_0" inputmask="0x80"> <!-- CL -->
+ <element ref="keys" inputtag="KEY.0" inputmask="0x01"> <!-- CL -->
<bounds x="69" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY1_1" inputmask="0x80"> <!-- POS -->
+ <element ref="keys" inputtag="KEY.0" inputmask="0x02"> <!-- POS -->
<bounds x="74" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY1_2" inputmask="0x80"> <!-- MEM -->
+ <element ref="keys" inputtag="KEY.0" inputmask="0x04"> <!-- MEM -->
<bounds x="79" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY1_3" inputmask="0x80"> <!-- INFO -->
+ <element ref="keys" inputtag="KEY.0" inputmask="0x08"> <!-- INFO -->
<bounds x="84" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY1_4" inputmask="0x80"> <!-- LEV -->
+ <element ref="keys" inputtag="KEY.0" inputmask="0x10"> <!-- LEV -->
<bounds x="89" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY1_5" inputmask="0x80"> <!-- ENT -->
+ <element ref="keys" inputtag="KEY.0" inputmask="0x20"> <!-- ENT -->
<bounds x="94" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY2_3" inputmask="0x80"> <!-- A1 -->
+ <element ref="keys" inputtag="KEY.1" inputmask="0x08"> <!-- A1 -->
<bounds x="69" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY2_5" inputmask="0x80"> <!-- B2 -->
+ <element ref="keys" inputtag="KEY.1" inputmask="0x20"> <!-- B2 -->
<bounds x="74" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY2_6" inputmask="0x80"> <!-- C3 -->
+ <element ref="keys" inputtag="KEY.1" inputmask="0x40"> <!-- C3 -->
<bounds x="79" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY2_7" inputmask="0x80"> <!-- D4 -->
+ <element ref="keys" inputtag="KEY.1" inputmask="0x80"> <!-- D4 -->
<bounds x="84" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY2_0" inputmask="0x80"> <!-- E5 -->
+ <element ref="keys" inputtag="KEY.1" inputmask="0x01"> <!-- E5 -->
<bounds x="89" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY2_1" inputmask="0x80"> <!-- F6 -->
+ <element ref="keys" inputtag="KEY.1" inputmask="0x02"> <!-- F6 -->
<bounds x="94" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
@@ -532,16 +554,16 @@ license:CC0
<element ref="keys" inputtag="RESET" inputmask="0x02"> <!-- RES -->
<bounds x="74" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY2_2" inputmask="0x80"> <!-- G7 -->
+ <element ref="keys" inputtag="KEY.1" inputmask="0x04"> <!-- G7 -->
<bounds x="79" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY2_4" inputmask="0x80"> <!-- H8 -->
+ <element ref="keys" inputtag="KEY.1" inputmask="0x10"> <!-- H8 -->
<bounds x="84" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY1_7" inputmask="0x80"> <!-- 9 -->
+ <element ref="keys" inputtag="KEY.0" inputmask="0x80"> <!-- 9 -->
<bounds x="89" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
- <element ref="keys" inputtag="KEY1_6" inputmask="0x80"> <!-- 0 -->
+ <element ref="keys" inputtag="KEY.0" inputmask="0x40"> <!-- 0 -->
<bounds x="94" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
</group>
@@ -554,15 +576,10 @@ license:CC0
<element ref="cblack"><bounds x="13" y="-2" width="89" height="89" /></element>
<element ref="cwhite"><bounds x="17" y="2" width="81" height="81" /></element>
- <group ref="panel1"><bounds x="37.5" y="91" width="20" height="8" /></group>
- <group ref="panel2"><bounds x="67.5" y="88.25" width="29" height="1.5" /></group>
- <group ref="buttons"><bounds x="67.5" y="91" width="29" height="14" /></group>
-
<group ref="sb_board"><bounds x="17.5" y="2.5" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="1.5" y="3" width="10" height="80" /></group>
- <!-- chessboard coords -->
-
+ <!-- chessboard coords -->
<element ref="text_8"><bounds x="14.2" y="6.5" width="2" height="2" /></element>
<element ref="text_7"><bounds x="14.2" y="16.5" width="2" height="2" /></element>
<element ref="text_6"><bounds x="14.2" y="26.5" width="2" height="2" /></element>
@@ -580,6 +597,13 @@ license:CC0
<element ref="text_f"><bounds x="71.5" y="84" width="2" height="2" /></element>
<element ref="text_g"><bounds x="81.5" y="84" width="2" height="2" /></element>
<element ref="text_h"><bounds x="91.5" y="84" width="2" height="2" /></element>
+
+ <!-- bottom side -->
+ <element ref="lcd_bg"><bounds x="37.5" y="91" width="20" height="8" /></element>
+ <group ref="display"><bounds x="38" y="91.8" width="19" height="6.4" /></group>
+
+ <group ref="leds"><bounds x="67.5" y="88.25" width="29" height="1.5" /></group>
+ <group ref="buttons"><bounds x="67.5" y="91" width="29" height="14" /></group>
</view>
</mamelayout>
diff --git a/src/mame/layout/mephisto_modena.lay b/src/mame/layout/mephisto_modena.lay
index 4157e98de34..dd0b91f0903 100644
--- a/src/mame/layout/mephisto_modena.lay
+++ b/src/mame/layout/mephisto_modena.lay
@@ -3,15 +3,11 @@
license:CC0
-->
<mamelayout version="2">
+
<!-- define elements -->
<element name="white"><rect><color red="1" green="1" blue="1" /></rect></element>
<element name="blackb"><rect><color red="0" green="0" blue="0" /></rect></element>
- <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
-
- <element name="digit" defstate="0">
- <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
- </element>
<element name="led" defstate="0">
<disk state="0">
@@ -353,17 +349,47 @@ license:CC0
</group>
-<!-- lcd/button panel -->
+<!-- display -->
+
+ <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
+ <element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
+
+ <element name="digit" defstate="0">
+ <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
+ </element>
+ <element name="ldot">
+ <rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
+ <rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
+ </element>
+
+ <group name="display">
+ <bounds x="31" y="90.3" width="22.5" height="7.4" />
+
+ <element ref="lcd_bg"><bounds x="31" y="90.3" width="22.5" height="7.4" /></element>
+
+ <element name="digit3" ref="digit"><bounds x="32" y="91" width="4" height="6" /></element>
+ <element name="digit2" ref="digit"><bounds x="37.5" y="91" width="4" height="6" /></element>
+ <element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
+ <element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
+
+ <!-- digits DP are different from normal 7seg -->
+ <element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
+ <element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
+
+ <element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
+ <element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
- <group name="panel1">
- <element ref="lcd_bg"><bounds x="0" y="0" width="31" height="14" /></element>
- <element name="digit3" ref="digit"><bounds x="2" y="2" width="6" height="10" /></element>
- <element name="digit2" ref="digit"><bounds x="9" y="2" width="6" height="10" /></element>
- <element name="digit1" ref="digit"><bounds x="16" y="2" width="6" height="10" /></element>
- <element name="digit0" ref="digit"><bounds x="23" y="2" width="6" height="10" /></element>
+ <element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
+ <element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group>
- <group name="panel2">
+
+<!-- button panel -->
+
+ <group name="buttons">
<bounds left="0" right="24" top="7" bottom="24" />
<element ref="white"><bounds x="13.2" y="21.4" width="9.6" height="0.8" /> </element>
@@ -408,8 +434,11 @@ license:CC0
<view name="Internal Layout">
<bounds left="1" right="129" top="0.5" bottom="90" />
- <!-- chessboard coords -->
+ <element ref="cwhite"><bounds x="19.5" y="2.5" width="81" height="81" /></element>
+ <group ref="sb_board"><bounds x="20" y="3" width="80" height="80" /></group>
+ <group ref="sb_ui"><bounds x="2.5" y="3" width="10" height="80" /></group>
+ <!-- chessboard coords -->
<element ref="text_8"><bounds x="14.2" y="7" width="2" height="2" /></element>
<element ref="text_7"><bounds x="14.2" y="17" width="2" height="2" /></element>
<element ref="text_6"><bounds x="14.2" y="27" width="2" height="2" /></element>
@@ -428,9 +457,7 @@ license:CC0
<element ref="text_g"><bounds x="84" y="86.5" width="2" height="2" /></element>
<element ref="text_h"><bounds x="94" y="86.5" width="2" height="2" /></element>
- <element ref="cwhite"><bounds x="19.5" y="2.5" width="81" height="81" /></element>
-
- <!-- chessboard leds -->
+ <!-- chessboard leds -->
<element name="1.0" ref="ledr"><bounds x="24" y="85" width="2" height="1" /></element>
<element name="1.1" ref="ledr"><bounds x="34" y="85" width="2" height="1" /></element>
<element name="1.2" ref="ledr"><bounds x="44" y="85" width="2" height="1" /></element>
@@ -449,11 +476,9 @@ license:CC0
<element name="2.6" ref="ledr"><bounds x="16.5" y="17.5" width="2" height="1" /></element>
<element name="2.7" ref="ledr"><bounds x="16.5" y="7.5" width="2" height="1" /></element>
- <!-- LCD panel -->
- <group ref="panel1"><bounds x="107.5" y="59" width="15" height="6" /></group>
- <group ref="panel2"><bounds x="103" y="69" width="24" height="17" /></group>
-
- <group ref="sb_board"><bounds x="20" y="3" width="80" height="80" /></group>
- <group ref="sb_ui"><bounds x="2.5" y="3" width="10" height="80" /></group>
+ <!-- side panel -->
+ <element ref="lcd_bg"><bounds x="106.2" y="56.3" width="17.6" height="6.7" /></element>
+ <group ref="display"><bounds x="106.5" y="56.8" width="17" height="5.7" /></group>
+ <group ref="buttons"><bounds x="103" y="69" width="24" height="17" /></group>
</view>
</mamelayout>
diff --git a/src/mame/layout/mephisto_modular_tm.lay b/src/mame/layout/mephisto_modular_tm.lay
index bc0d5748edd..6eb92e690e0 100644
--- a/src/mame/layout/mephisto_modular_tm.lay
+++ b/src/mame/layout/mephisto_modular_tm.lay
@@ -155,7 +155,7 @@ license:CC0
<!-- chessboard leds -->
<repeat count="8">
- <param name="x" start="8.2" increment="10" />
+ <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" />
diff --git a/src/mame/layout/mephisto_montec.lay b/src/mame/layout/mephisto_montec.lay
index 94921db26c0..d86b683554d 100644
--- a/src/mame/layout/mephisto_montec.lay
+++ b/src/mame/layout/mephisto_montec.lay
@@ -40,48 +40,48 @@ license:CC0
</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.59" green="0.39" blue="0.20" /></rect></element>
- <element name="white"><rect><color red="0.80" green="0.73" blue="0.63" /></rect></element>
-
- <element name="text_1"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="1"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_2"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="2"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_3"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="3"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_4"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="4"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_5"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="5"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_6"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="6"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_7"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="7"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_8"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="8"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_a"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="A"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_b"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="B"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_c"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="C"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_d"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="D"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_e"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="E"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_f"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="F"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_g"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="G"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
- <element name="text_h"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="H"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
-
- <element name="text_book"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="BOOK"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_pos"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="POS"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_mem"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="MEM"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_info"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="INFO"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_err"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="ERR"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_lev"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="LEV"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_black"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="&#x25a1;"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_white"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="&#x25a0;"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_b1"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[P] 1"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_b2"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[N] 2"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_b3"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[B] 3"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_b4"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[R] 4"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_b5"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[Q] 5"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_b6"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[K] 6"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_b7"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="&#x25a1; 7 &#x25c4;"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_b8"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="&#x25a0; 8 &#x25ba;"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_book9"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="BOOK 9"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_pos0"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="POS 0"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_cl"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="CL"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_ent"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="ENT"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_res"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="RES"> <color red="1" green="1" blue="1" /></text> </element>
- <element name="text_lcd"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="MULTI INFO LCD"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="background"><rect><color red="0.56" green="0.33" blue="0.12" /></rect></element>
+ <element name="white"><rect><color red="0.84" green="0.75" blue="0.50" /></rect></element>
+
+ <element name="text_1"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="1"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_2"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="2"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_3"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="3"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_4"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="4"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_5"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="5"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_6"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="6"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_7"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="7"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_8"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="8"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_a"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="A"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_b"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="B"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_c"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="C"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_d"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="D"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_e"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="E"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_f"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="F"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_g"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="G"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+ <element name="text_h"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="H"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
+
+ <element name="text_book"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="BOOK"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_pos"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="POS"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_mem"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="MEM"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_info"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="INFO"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_err"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="ERR"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_lev"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="LEV"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_black"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="&#x25a1;"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_white"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="&#x25a0;"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_b1"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[P] 1"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_b2"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[N] 2"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_b3"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[B] 3"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_b4"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[R] 4"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_b5"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[Q] 5"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_b6"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[K] 6"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_b7"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="&#x25a1; 7 &#x25c4;"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_b8"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="&#x25a0; 8 &#x25ba;"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_book9"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="BOOK 9"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_pos0"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="POS 0"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_cl"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="CL"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_ent"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="ENT"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_res"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="RES"> <color red="1" green="1" blue="1" /></text> </element>
+ <element name="text_lcd"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="MULTI INFO LCD"> <color red="1" green="1" blue="1" /></text> </element>
<element name="piece" defstate="0">
<image file="chess/wp.svg" state="1"/>
@@ -117,8 +117,8 @@ license:CC0
<!-- sb board -->
- <element name="cblack"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect></element>
- <element name="cwhite"> <rect><color red="0.80" green="0.73" blue="0.63" /></rect></element>
+ <element name="cblack"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect></element>
+ <element name="cwhite"> <rect><color red="0.84" green="0.75" blue="0.50" /></rect></element>
<element name="hlbb" defstate="0">
<text string=" "><bounds x="0" y="0" width="1" height="1" /></text>
@@ -206,7 +206,7 @@ license:CC0
<!-- chessboard leds -->
<repeat count="8">
- <param name="x" start="8.2" increment="10" />
+ <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" />
@@ -262,34 +262,34 @@ license:CC0
<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.80" green="0.73" blue="0.63" /></rect>
+ <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string="RESET"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uib3">
- <rect><color red="0.80" green="0.73" blue="0.63" /></rect>
+ <rect><color red="0.84" green="0.75" blue="0.50" /></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.80" green="0.73" blue="0.63" /></rect>
+ <rect><color red="0.84" green="0.75" blue="0.50" /></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.80" green="0.73" blue="0.63" /></rect>
+ <rect><color red="0.84" green="0.75" blue="0.50" /></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.80" green="0.73" blue="0.63" /></rect>
+ <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string=" &lt; "><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uiu2c">
- <rect><color red="0.80" green="0.73" blue="0.63" /></rect>
+ <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string=" &gt;"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uiu2d">
- <rect><color red="0.80" green="0.73" blue="0.63" /></rect>
+ <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string=" &gt;&gt;"><color red="0.01" green="0.01" blue="0.01" /></text>
</element>
<element name="text_uiu3a" defstate="0">
diff --git a/src/mame/layout/mephisto_polgar.lay b/src/mame/layout/mephisto_polgar.lay
index 5a953ab4d17..e45d884e6b9 100644
--- a/src/mame/layout/mephisto_polgar.lay
+++ b/src/mame/layout/mephisto_polgar.lay
@@ -187,7 +187,7 @@ license:CC0
<!-- chessboard leds -->
<repeat count="8">
- <param name="x" start="8.2" increment="10" />
+ <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" />
diff --git a/src/mame/layout/mephisto_risc.lay b/src/mame/layout/mephisto_risc.lay
index 5a953ab4d17..e45d884e6b9 100644
--- a/src/mame/layout/mephisto_risc.lay
+++ b/src/mame/layout/mephisto_risc.lay
@@ -187,7 +187,7 @@ license:CC0
<!-- chessboard leds -->
<repeat count="8">
- <param name="x" start="8.2" increment="10" />
+ <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" />
diff --git a/src/mame/machine/mmboard.cpp b/src/mame/machine/mmboard.cpp
index abb794b8fcb..6e916aeae8b 100644
--- a/src/mame/machine/mmboard.cpp
+++ b/src/mame/machine/mmboard.cpp
@@ -76,6 +76,9 @@ void mephisto_board_device::device_start()
{
m_led_out.resolve();
+ m_mux = 0xff;
+ m_led_data = 0;
+
save_item(NAME(m_mux));
save_item(NAME(m_led_data));
diff --git a/src/mame/machine/mmboard.h b/src/mame/machine/mmboard.h
index 6c77b2109cb..3b4bd828e14 100644
--- a/src/mame/machine/mmboard.h
+++ b/src/mame/machine/mmboard.h
@@ -2,7 +2,7 @@
// copyright-holders:Sandro Ronco
/**********************************************************************
- Mephisto Sensors Board
+ Mephisto Modular Sensors Board
*********************************************************************/
diff --git a/src/mame/video/mmdisplay1.cpp b/src/mame/video/mmdisplay1.cpp
new file mode 100644
index 00000000000..09346fb2b67
--- /dev/null
+++ b/src/mame/video/mmdisplay1.cpp
@@ -0,0 +1,92 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+/**********************************************************************
+
+Hegener + Glaser Mephisto Display Module for modular chesscomputers,
+the 1st version with a 4*7seg LCD. There is no LCD chip, it's handled
+with 4 4015 dual shift registers.
+
+*********************************************************************/
+
+#include "emu.h"
+
+#include "mmdisplay1.h"
+
+
+DEFINE_DEVICE_TYPE(MEPHISTO_DISPLAY_MODULE1, mephisto_display1_device, "mdisplay1", "Mephisto Display Module 1")
+
+//-------------------------------------------------
+// constructor
+//-------------------------------------------------
+
+mephisto_display1_device::mephisto_display1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
+ device_t(mconfig, MEPHISTO_DISPLAY_MODULE1, tag, owner, clock),
+ m_digits(*this, "digit%u", 0U),
+ m_output_digit(*this)
+{ }
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void mephisto_display1_device::device_start()
+{
+ m_output_digit.resolve();
+ if (m_output_digit.isnull())
+ m_digits.resolve();
+
+ // register for savestates
+ save_item(NAME(m_strobe));
+ save_item(NAME(m_digit_idx));
+ save_item(NAME(m_digit_data));
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void mephisto_display1_device::device_reset()
+{
+ m_strobe = 0;
+ m_digit_idx = 0;
+
+ // clear display
+ for (int i = 0; i < 4; i++)
+ m_digit_data[i] = 0;
+ update_lcd();
+}
+
+
+//-------------------------------------------------
+// I/O handlers
+//-------------------------------------------------
+
+void mephisto_display1_device::update_lcd()
+{
+ for (int i = 0; i < 4; i++)
+ {
+ if (m_output_digit.isnull())
+ m_digits[i] = m_digit_data[i];
+ else
+ m_output_digit(i, m_digit_data[i]);
+ }
+}
+
+void mephisto_display1_device::strobe_w(int state)
+{
+ state = state ? 1 : 0;
+
+ // update lcd on rising edge
+ if (state && ~m_strobe)
+ update_lcd();
+
+ m_strobe = state;
+}
+
+void mephisto_display1_device::data_w(u8 data)
+{
+ m_digit_data[m_digit_idx] = m_strobe ? ~data : data;
+ m_digit_idx = (m_digit_idx + 1) & 3;
+}
diff --git a/src/mame/video/mmdisplay1.h b/src/mame/video/mmdisplay1.h
new file mode 100644
index 00000000000..4dab1527955
--- /dev/null
+++ b/src/mame/video/mmdisplay1.h
@@ -0,0 +1,45 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+/**********************************************************************
+
+ Mephisto Modular Display Module (1st version)
+
+*********************************************************************/
+
+#ifndef MAME_VIDEO_MMDISPLAY1_H
+#define MAME_VIDEO_MMDISPLAY1_H
+
+#pragma once
+
+
+class mephisto_display1_device : public device_t
+{
+public:
+ mephisto_display1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
+
+ // callback is optional, it will output to digitx when not used
+ auto output_digit() { return m_output_digit.bind(); }
+
+ void strobe_w(int state);
+ void data_w(u8 data);
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+private:
+ output_finder<4> m_digits;
+ devcb_write8 m_output_digit;
+
+ void update_lcd();
+
+ int m_strobe = 0;
+ u8 m_digit_idx = 0;
+ u8 m_digit_data[4] = { 0, 0, 0, 0 };
+};
+
+
+DECLARE_DEVICE_TYPE(MEPHISTO_DISPLAY_MODULE1, mephisto_display1_device)
+
+#endif // MAME_VIDEO_MMDISPLAY1_H
diff --git a/src/mame/video/mmdisplay2.cpp b/src/mame/video/mmdisplay2.cpp
index 2171c571680..0692c5d9c30 100644
--- a/src/mame/video/mmdisplay2.cpp
+++ b/src/mame/video/mmdisplay2.cpp
@@ -6,9 +6,6 @@ Hegener + Glaser Mephisto Display Module for modular chesscomputers,
the 2nd version with 2 LCD lines. The 16/32bit module also includes 8KB NVRAM,
but that part is emulated in the driver.
-TODO:
-- add mmdisplay1.cpp, the one with shift registers and 4-digit lcd
-
*********************************************************************/
#include "emu.h"
@@ -16,13 +13,13 @@ TODO:
#include "mmdisplay2.h"
-DEFINE_DEVICE_TYPE(MEPHISTO_DISPLAY_MODULE2, mephisto_display_module2_device, "mdisplay2", "Mephisto Display Module 2")
+DEFINE_DEVICE_TYPE(MEPHISTO_DISPLAY_MODULE2, mephisto_display2_device, "mdisplay2", "Mephisto Display Module 2")
//-------------------------------------------------
// constructor
//-------------------------------------------------
-mephisto_display_module2_device::mephisto_display_module2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+mephisto_display2_device::mephisto_display2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, MEPHISTO_DISPLAY_MODULE2, tag, owner, clock)
, m_lcd(*this, "hd44780")
, m_dac(*this, "dac")
@@ -34,7 +31,7 @@ mephisto_display_module2_device::mephisto_display_module2_device(const machine_c
// device_add_mconfig
//-------------------------------------------------
-void mephisto_display_module2_device::device_add_mconfig(machine_config &config)
+void mephisto_display2_device::device_add_mconfig(machine_config &config)
{
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
@@ -45,25 +42,25 @@ void mephisto_display_module2_device::device_add_mconfig(machine_config &config)
screen.set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
screen.set_palette("palette");
- PALETTE(config, "palette", FUNC(mephisto_display_module2_device::lcd_palette), 3);
+ PALETTE(config, "palette", FUNC(mephisto_display2_device::lcd_palette), 3);
HD44780(config, m_lcd, 0);
m_lcd->set_lcd_size(2, 16);
- m_lcd->set_pixel_update_cb(FUNC(mephisto_display_module2_device::lcd_pixel_update));
+ m_lcd->set_pixel_update_cb(FUNC(mephisto_display2_device::lcd_pixel_update));
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_2BIT_BINARY_WEIGHTED_ONES_COMPLEMENT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
}
-void mephisto_display_module2_device::lcd_palette(palette_device &palette) const
+void mephisto_display2_device::lcd_palette(palette_device &palette) const
{
palette.set_pen_color(0, rgb_t(0xff, 0xff, 0xff)); // background
palette.set_pen_color(1, rgb_t(0x00, 0x00, 0x00)); // lcd pixel on
palette.set_pen_color(2, rgb_t(0xe8, 0xe8, 0xe8)); // lcd pixel off
}
-HD44780_PIXEL_UPDATE(mephisto_display_module2_device::lcd_pixel_update)
+HD44780_PIXEL_UPDATE(mephisto_display2_device::lcd_pixel_update)
{
if (x < 5 && y < 8 && line < 2 && pos < 16)
bitmap.pix(line*9 + 1 + y, 1 + pos*6 + x) = state ? 1 : 2;
@@ -74,7 +71,7 @@ HD44780_PIXEL_UPDATE(mephisto_display_module2_device::lcd_pixel_update)
// device_start - device-specific startup
//-------------------------------------------------
-void mephisto_display_module2_device::device_start()
+void mephisto_display2_device::device_start()
{
save_item(NAME(m_latch));
save_item(NAME(m_ctrl));
@@ -85,7 +82,7 @@ void mephisto_display_module2_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void mephisto_display_module2_device::device_reset()
+void mephisto_display2_device::device_reset()
{
m_latch = 0;
m_ctrl = 0;
@@ -96,12 +93,12 @@ void mephisto_display_module2_device::device_reset()
// I/O handlers
//-------------------------------------------------
-void mephisto_display_module2_device::latch_w(uint8_t data)
+void mephisto_display2_device::latch_w(uint8_t data)
{
m_latch = data;
}
-void mephisto_display_module2_device::io_w(uint8_t data)
+void mephisto_display2_device::io_w(uint8_t data)
{
if (BIT(data, 1) && !BIT(m_ctrl, 1))
m_lcd->write(BIT(data, 0), m_latch);
diff --git a/src/mame/video/mmdisplay2.h b/src/mame/video/mmdisplay2.h
index 03f16ea2e07..b4d188d898c 100644
--- a/src/mame/video/mmdisplay2.h
+++ b/src/mame/video/mmdisplay2.h
@@ -2,7 +2,7 @@
// copyright-holders:Sandro Ronco
/**********************************************************************
- Mephisto Display Module (2nd version)
+ Mephisto Modular Display Module (2nd version)
*********************************************************************/
@@ -19,13 +19,13 @@
#include "speaker.h"
-// ======================> mephisto_display_module2_device
+// ======================> mephisto_display2_device
-class mephisto_display_module2_device : public device_t
+class mephisto_display2_device : public device_t
{
public:
// construction/destruction
- mephisto_display_module2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
+ mephisto_display2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
hd44780_device *get() { return m_lcd; }
@@ -46,12 +46,12 @@ private:
void lcd_palette(palette_device &palette) const;
HD44780_PIXEL_UPDATE(lcd_pixel_update);
- uint8_t m_latch;
- uint8_t m_ctrl;
+ uint8_t m_latch = 0;
+ uint8_t m_ctrl = 0;
};
// device type definition
-DECLARE_DEVICE_TYPE(MEPHISTO_DISPLAY_MODULE2, mephisto_display_module2_device)
+DECLARE_DEVICE_TYPE(MEPHISTO_DISPLAY_MODULE2, mephisto_display2_device)
#endif // MAME_VIDEO_MMDISPLAY2_H