summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2020-06-24 19:29:19 +0200
committer hap <happppp@users.noreply.github.com>2020-06-24 19:29:34 +0200
commit776013e80c727fb570be270b17fded0336a22eef (patch)
tree3482dd6d73abb897408f0c086483209be634f82c
parent53765dacdee9c7a3a2f49fc62b22aea37c67fd7d (diff)
mephisto_academy: move to separate driver (nw)
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/mame/drivers/cxg_dominator.cpp4
-rw-r--r--src/mame/drivers/fidel_elite.cpp3
-rw-r--r--src/mame/drivers/fidel_vsc.cpp16
-rw-r--r--src/mame/drivers/galaga.cpp8
-rw-r--r--src/mame/drivers/mephisto_academy.cpp177
-rw-r--r--src/mame/drivers/mephisto_modena.cpp67
-rw-r--r--src/mame/drivers/mephisto_mondial68k.cpp20
-rw-r--r--src/mame/drivers/mephisto_polgar.cpp115
-rw-r--r--src/mame/drivers/saitek_superstar.cpp12
-rw-r--r--src/mame/layout/mephisto_academy.lay113
-rw-r--r--src/mame/mame.lst8
-rw-r--r--src/mame/mess.flt1
13 files changed, 323 insertions, 222 deletions
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index 74ab818cc2d..6a11990b9b4 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -2455,6 +2455,7 @@ files {
createMESSProjects(_target, _subtarget, "hegener")
files {
+ MAME_DIR .. "src/mame/drivers/mephisto_academy.cpp",
MAME_DIR .. "src/mame/drivers/mephisto_berlin.cpp",
MAME_DIR .. "src/mame/drivers/mephisto_brikett.cpp",
MAME_DIR .. "src/mame/drivers/mephisto_glasgow.cpp",
diff --git a/src/mame/drivers/cxg_dominator.cpp b/src/mame/drivers/cxg_dominator.cpp
index eafc0d5ab7f..94571012159 100644
--- a/src/mame/drivers/cxg_dominator.cpp
+++ b/src/mame/drivers/cxg_dominator.cpp
@@ -204,8 +204,8 @@ void dominator_state::dominator(machine_config &config)
R65C02(config, m_maincpu, 4_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &dominator_state::main_map);
- const attotime irq_period = attotime::from_hz(4_MHz_XTAL / 0x2000); // from 4020
- m_maincpu->set_periodic_int(FUNC(dominator_state::nmi_line_pulse), irq_period);
+ const attotime nmi_period = attotime::from_hz(4_MHz_XTAL / 0x2000); // from 4020
+ m_maincpu->set_periodic_int(FUNC(dominator_state::nmi_line_pulse), nmi_period);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
diff --git a/src/mame/drivers/fidel_elite.cpp b/src/mame/drivers/fidel_elite.cpp
index ac4993eb3c0..3ff99f9d583 100644
--- a/src/mame/drivers/fidel_elite.cpp
+++ b/src/mame/drivers/fidel_elite.cpp
@@ -220,7 +220,8 @@ void eag_state::init_eag2100()
void eag_state::machine_reset()
{
fidel_clockdiv_state::machine_reset();
- m_rombank->set_entry(0);
+ if (m_rombank != nullptr)
+ m_rombank->set_entry(0);
}
diff --git a/src/mame/drivers/fidel_vsc.cpp b/src/mame/drivers/fidel_vsc.cpp
index 5dba5bf8982..07dacd2b342 100644
--- a/src/mame/drivers/fidel_vsc.cpp
+++ b/src/mame/drivers/fidel_vsc.cpp
@@ -169,7 +169,7 @@ public:
vsc_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
- m_irq_on(*this, "irq_on"),
+ m_nmi_on(*this, "nmi_on"),
m_z80pio(*this, "z80pio"),
m_ppi8255(*this, "ppi8255"),
m_board(*this, "board"),
@@ -189,7 +189,7 @@ protected:
private:
// devices/pointers
required_device<cpu_device> m_maincpu;
- required_device<timer_device> m_irq_on;
+ required_device<timer_device> m_nmi_on;
required_device<z80pio_device> m_z80pio;
required_device<i8255_device> m_ppi8255;
required_device<sensorboard_device> m_board;
@@ -206,8 +206,8 @@ private:
void main_io_trampoline_w(offs_t offset, u8 data);
// periodic interrupts
- template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); }
- template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); }
+ template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(nmi_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); }
+ template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(nmi_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); }
// I/O handlers
void update_display();
@@ -426,10 +426,10 @@ void vsc_state::vsc(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &vsc_state::main_map);
m_maincpu->set_addrmap(AS_IO, &vsc_state::main_io);
- const attotime irq_period = attotime::from_hz(600); // 555 timer, ideal frequency is 600Hz (measurement was 587Hz)
- TIMER(config, m_irq_on).configure_periodic(FUNC(vsc_state::irq_on<INPUT_LINE_NMI>), irq_period);
- m_irq_on->set_start_delay(irq_period - attotime::from_usec(845)); // active for 0.845ms (approx half)
- TIMER(config, "irq_off").configure_periodic(FUNC(vsc_state::irq_off<INPUT_LINE_NMI>), irq_period);
+ const attotime nmi_period = attotime::from_hz(600); // 555 timer, ideal frequency is 600Hz (measurement was 587Hz)
+ TIMER(config, m_nmi_on).configure_periodic(FUNC(vsc_state::nmi_on<INPUT_LINE_NMI>), nmi_period);
+ m_nmi_on->set_start_delay(nmi_period - attotime::from_usec(845)); // active for 0.845ms (approx half)
+ TIMER(config, "nmi_off").configure_periodic(FUNC(vsc_state::nmi_off<INPUT_LINE_NMI>), nmi_period);
I8255(config, m_ppi8255);
m_ppi8255->out_pa_callback().set(FUNC(vsc_state::ppi_porta_w));
diff --git a/src/mame/drivers/galaga.cpp b/src/mame/drivers/galaga.cpp
index e6835d5eb75..75f79e07db7 100644
--- a/src/mame/drivers/galaga.cpp
+++ b/src/mame/drivers/galaga.cpp
@@ -592,16 +592,16 @@ Notes:
- bosco: there appears to be a bug in the code at 0BB1, which handles communication
with the 06XX custom chip. First it saves in A' the command to write, then if a
- transfer is still in progress it jups to 0BC1, does other things, then restores
+ transfer is still in progress it jumps to 0BC1, does other things, then restores
the command from A' and stores it in RAM. At that point (0BE1) it checks again if
- a transfer is in progress. If the trasnfer has terminated, it jumps to 0BEB, which
+ a transfer is in progress. If the transfer has terminated, it jumps to 0BEB, which
restores the command from RAM, and jumps back to 0BBA to send the command. However,
the instruction at 0BBA is ex af,af', so the command is overwritten with garbage.
There's also an exx at 0BBB which seems unnecessary but that's harmless.
Anyway, what this bug means is that we must make sure that the 06XX generates NMIs
quickly enough to ensure that 0BB1 is usually not called with a transfer still is
- progress. It doesn't seem possible to prevent it altogether though, so we can only
- hope that the transfer doesn't terminate in the middle of the function.
+ progress. It doesn't seem possible to prevent it altogether though, so we can only
+ hope that the transfer doesn't terminate in the middle of the function.
- bosco: we have two dumps of the sound shape ROM, "prom.1d" and "bosco.spr". Music
changes a lot from one version to the other.
diff --git a/src/mame/drivers/mephisto_academy.cpp b/src/mame/drivers/mephisto_academy.cpp
new file mode 100644
index 00000000000..ae1453d28b2
--- /dev/null
+++ b/src/mame/drivers/mephisto_academy.cpp
@@ -0,0 +1,177 @@
+// license:BSD-3-Clause
+// copyright-holders:Sandro Ronco, hap
+// thanks-to:yoyo_chessboard
+/***************************************************************************
+
+Mephisto Academy
+
+Hardware notes:
+- PCB label HGS 10 130 01
+- VL65NC02-04PC, 4.91Mhz XTAL
+- 2*32KB ROM(TC57256AD-12), 1st ROM half-empty
+- 8KB battery-backed RAM(TC5564APL-15)
+- HD44100H, HD44780, 2*16 chars LCD screen
+- magnets chessboard with leds, 8 tri-color leds, beeper
+
+Since the program is on an external module, it appears it was meant to be
+a modular chesscomputer. However, no extra modules were sold separately.
+Module PCB is the same as Super Mondial II College, label HGS 10 116 05.
+
+***************************************************************************/
+
+#include "emu.h"
+
+#include "cpu/m6502/m65c02.h"
+#include "machine/74259.h"
+#include "machine/nvram.h"
+#include "machine/mmboard.h"
+#include "video/mmdisplay2.h"
+#include "video/pwm.h"
+
+#include "mephisto_academy.lh"
+
+
+class academy_state : public driver_device
+{
+public:
+ academy_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_board(*this, "board")
+ , m_led_pwm(*this, "led_pwm")
+ , m_outlatch(*this, "outlatch")
+ , m_keys(*this, "KEY")
+ { }
+
+ void academy(machine_config &config);
+
+private:
+ required_device<cpu_device> m_maincpu;
+ required_device<mephisto_board_device> m_board;
+ required_device<pwm_display_device> m_led_pwm;
+ required_device<hc259_device> m_outlatch;
+ required_ioport m_keys;
+
+ void main_map(address_map &map);
+
+ void led_w(u8 data);
+ u8 input_r();
+};
+
+
+
+/******************************************************************************
+ I/O
+******************************************************************************/
+
+void academy_state::led_w(u8 data)
+{
+ // d0-d3: keypad led select
+ // d4-d7: keypad led data
+ m_led_pwm->matrix(data & 0xf, ~data >> 4 & 0xf);
+}
+
+u8 academy_state::input_r()
+{
+ // 74259 Q1 selects keypad
+ u8 data = m_outlatch->q1_r() ? 0 : m_keys->read();
+ return ~m_board->input_r() | data;
+}
+
+
+
+/******************************************************************************
+ Address Maps
+******************************************************************************/
+
+void academy_state::main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).ram().share("nvram");
+ map(0x2400, 0x2400).r(FUNC(academy_state::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("outlatch", FUNC(hc259_device::write_d7));
+ map(0x3400, 0x3400).w(FUNC(academy_state::led_w));
+ map(0x3800, 0x3801).rw("display:hd44780", FUNC(hd44780_device::read), FUNC(hd44780_device::write));
+ map(0x4000, 0xffff).rom();
+}
+
+
+
+/******************************************************************************
+ Input Ports
+******************************************************************************/
+
+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) // "
+INPUT_PORTS_END
+
+
+
+/******************************************************************************
+ Machine Configs
+******************************************************************************/
+
+void academy_state::academy(machine_config &config)
+{
+ /* basic machine hardware */
+ M65C02(config, m_maincpu, 4.9152_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &academy_state::main_map);
+
+ const attotime nmi_period = attotime::from_hz(4.9152_MHz_XTAL / (1 << 13));
+ m_maincpu->set_periodic_int(FUNC(academy_state::nmi_line_pulse), nmi_period);
+
+ NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
+
+ HC259(config, m_outlatch); // SN74HC259N
+ m_outlatch->parallel_out_cb().set("display:dac", FUNC(dac_byte_interface::write)).rshift(2).mask(0x03);
+
+ MEPHISTO_SENSORS_BOARD(config, "board");
+ MEPHISTO_DISPLAY_MODULE2(config, "display"); // internal
+
+ PWM_DISPLAY(config, m_led_pwm).set_size(4, 4);
+ config.set_default_layout(layout_mephisto_academy);
+}
+
+
+
+/******************************************************************************
+ ROM Definitions
+******************************************************************************/
+
+ROM_START( academy )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("acad4000.bin", 0x0000, 0x8000, CRC(9c5affdb) SHA1(621d16227e49b0f46ce58ce15107bae23abacadc) )
+ ROM_LOAD("acad8000.bin", 0x8000, 0x8000, CRC(a967922b) SHA1(1327903ff89bf96d72c930c400f367ae19e3ec68) )
+ROM_END
+
+ROM_START( academyg )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("academy_16k_6.3.89", 0x0000, 0x8000, CRC(e242dd6f) SHA1(95d3668b478a93a5d62304d58ef135f848b7d2cf) )
+ ROM_LOAD("academy_32k_6.3.89", 0x8000, 0x8000, CRC(e313d084) SHA1(ced5712d34fcc81bedcd741b7ac9e2ba17bf5235) )
+ROM_END
+
+ROM_START( academyga )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("academy_16k_04.10.88", 0x0000, 0x8000, CRC(89055eaa) SHA1(4b3045a75b9107737db39a8c9ab9c15ec6b0ead6) )
+ ROM_LOAD("academy_32k_04.10.88", 0x8000, 0x8000, CRC(478155db) SHA1(d363ab6d5bc0f47a6cdfa5132b77535ef8da8256) )
+ROM_END
+
+
+
+/***************************************************************************
+ Game Drivers
+***************************************************************************/
+
+/* YEAR, NAME, PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS */
+CONS( 1989, academy, 0, 0, academy, academy, academy_state, empty_init, "Hegener + Glaser", "Mephisto Academy (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1989, academyg, academy, 0, academy, academy, academy_state, empty_init, "Hegener + Glaser", "Mephisto Academy (German, 06-03-89)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1989, academyga, academy, 0, academy, academy, academy_state, empty_init, "Hegener + Glaser", "Mephisto Academy (German, 04-10-88)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/mephisto_modena.cpp b/src/mame/drivers/mephisto_modena.cpp
index 789fee31017..6891b54b97d 100644
--- a/src/mame/drivers/mephisto_modena.cpp
+++ b/src/mame/drivers/mephisto_modena.cpp
@@ -1,5 +1,6 @@
// license:BSD-3-Clause
-// copyright-holders:Sandro Ronco
+// copyright-holders:Sandro Ronco, hap
+// thanks-to:yoyo_chessboard
/**************************************************************************************************
Mephisto Modena
@@ -24,10 +25,10 @@ Hold Pawn + Knight buttons at boot for test mode.
#include "mephisto_modena.lh"
-class mephisto_modena_state : public driver_device
+class modena_state : public driver_device
{
public:
- mephisto_modena_state(const machine_config &mconfig, device_type type, const char *tag)
+ modena_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_board(*this, "board")
@@ -52,21 +53,21 @@ private:
void modena_mem(address_map &map);
- uint8_t input_r();
- void digits_w(uint8_t data);
- void io_w(uint8_t data);
- void led_w(uint8_t data);
+ u8 input_r();
+ void digits_w(u8 data);
+ void io_w(u8 data);
+ void led_w(u8 data);
void update_display();
TIMER_DEVICE_CALLBACK_MEMBER(nmi_on) { m_maincpu->set_input_line(M6502_NMI_LINE, ASSERT_LINE); }
TIMER_DEVICE_CALLBACK_MEMBER(nmi_off) { m_maincpu->set_input_line(M6502_NMI_LINE, CLEAR_LINE); }
- uint8_t m_board_mux = 0xff;
- uint8_t m_digits_idx = 0;
- uint8_t m_io_ctrl = 0;
+ u8 m_board_mux = 0xff;
+ u8 m_digits_idx = 0;
+ u8 m_io_ctrl = 0;
};
-void mephisto_modena_state::machine_start()
+void modena_state::machine_start()
{
m_digits.resolve();
@@ -80,14 +81,14 @@ void mephisto_modena_state::machine_start()
I/O
******************************************************************************/
-void mephisto_modena_state::update_display()
+void modena_state::update_display()
{
m_display->matrix(m_io_ctrl >> 1 & 7, ~m_board_mux);
}
-uint8_t mephisto_modena_state::input_r()
+u8 modena_state::input_r()
{
- uint8_t data = 0;
+ u8 data = 0;
// read buttons
if (~m_io_ctrl & 1)
@@ -101,14 +102,14 @@ uint8_t mephisto_modena_state::input_r()
return data;
}
-void mephisto_modena_state::led_w(uint8_t data)
+void modena_state::led_w(u8 data)
{
// d0-d7: chessboard mux, led data
m_board_mux = data;
update_display();
}
-void mephisto_modena_state::io_w(uint8_t data)
+void modena_state::io_w(u8 data)
{
// d0: button select
// d1-d3: led select
@@ -119,7 +120,7 @@ void mephisto_modena_state::io_w(uint8_t data)
m_dac->write(BIT(data, 6));
}
-void mephisto_modena_state::digits_w(uint8_t data)
+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;
@@ -131,13 +132,13 @@ void mephisto_modena_state::digits_w(uint8_t data)
Address Maps
******************************************************************************/
-void mephisto_modena_state::modena_mem(address_map &map)
+void modena_state::modena_mem(address_map &map)
{
map(0x0000, 0x1fff).ram().share("nvram");
- map(0x4000, 0x4000).w(FUNC(mephisto_modena_state::digits_w));
- map(0x5000, 0x5000).w(FUNC(mephisto_modena_state::led_w));
- map(0x6000, 0x6000).w(FUNC(mephisto_modena_state::io_w));
- map(0x7000, 0x7000).r(FUNC(mephisto_modena_state::input_r));
+ map(0x4000, 0x4000).w(FUNC(modena_state::digits_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));
map(0x7f00, 0x7fff).nopr(); // dummy read on 6502 absolute X page wrap
map(0x8000, 0xffff).rom().region("maincpu", 0);
}
@@ -166,15 +167,17 @@ INPUT_PORTS_END
Machine Configs
******************************************************************************/
-void mephisto_modena_state::modena(machine_config &config)
+void modena_state::modena(machine_config &config)
{
/* basic machine hardware */
- M65C02(config, m_maincpu, XTAL(4'194'304)); // W65C02SP or RP65C02G
- m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_modena_state::modena_mem);
+ M65C02(config, m_maincpu, 4.194304_MHz_XTAL); // W65C02SP or RP65C02G
+ m_maincpu->set_addrmap(AS_PROGRAM, &modena_state::modena_mem);
+
timer_device &nmi_on(TIMER(config, "nmi_on"));
- nmi_on.configure_periodic(FUNC(mephisto_modena_state::nmi_on), attotime::from_hz(XTAL(4'194'304) / (1 << 13)));
- nmi_on.set_start_delay(attotime::from_hz(XTAL(4'194'304) / (1 << 13)) - attotime::from_usec(975)); // active for 975us
- TIMER(config, "nmi_off").configure_periodic(FUNC(mephisto_modena_state::nmi_off), attotime::from_hz(XTAL(4'194'304) / (1 << 13)));
+ const attotime nmi_period = attotime::from_hz(4.194304_MHz_XTAL / (1 << 13));
+ nmi_on.configure_periodic(FUNC(modena_state::nmi_on), nmi_period);
+ nmi_on.set_start_delay(nmi_period - attotime::from_usec(975)); // active for 975us
+ TIMER(config, "nmi_off").configure_periodic(FUNC(modena_state::nmi_off), nmi_period);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -220,7 +223,7 @@ ROM_END
Game driver(s)
***************************************************************************/
-/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-CONS( 1992, modena, 0, 0, modena, modena, mephisto_modena_state, empty_init, "Hegener + Glaser", "Mephisto Modena (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1992, modenaa, modena, 0, modena, modena, mephisto_modena_state, empty_init, "Hegener + Glaser", "Mephisto Modena (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1992, modenab, modena, 0, modena, modena, mephisto_modena_state, empty_init, "Hegener + Glaser", "Mephisto Modena (set 3)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+CONS( 1992, modena, 0, 0, modena, modena, modena_state, empty_init, "Hegener + Glaser", "Mephisto Modena (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1992, modenaa, modena, 0, modena, modena, modena_state, empty_init, "Hegener + Glaser", "Mephisto Modena (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1992, modenab, modena, 0, modena, modena, modena_state, empty_init, "Hegener + Glaser", "Mephisto Modena (set 3)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/mephisto_mondial68k.cpp b/src/mame/drivers/mephisto_mondial68k.cpp
index ac87ba316db..5fd55737902 100644
--- a/src/mame/drivers/mephisto_mondial68k.cpp
+++ b/src/mame/drivers/mephisto_mondial68k.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Sandro Ronco
+// copyright-holders:Sandro Ronco, hap
// thanks-to:Berger
/***************************************************************************
@@ -51,9 +51,9 @@ protected:
void mondial68k_mem(address_map &map);
void lcd_s_w(u32 data);
- void input_mux_w(uint8_t data);
- void board_mux_w(uint8_t data);
- uint8_t inputs_r();
+ void input_mux_w(u8 data);
+ void board_mux_w(u8 data);
+ u8 inputs_r();
void update_display();
required_device<cpu_device> m_maincpu;
@@ -63,8 +63,8 @@ protected:
required_ioport_array<4> m_inputs;
output_finder<4> m_digits;
- uint8_t m_input_mux = 0xff;
- uint8_t m_board_mux = 0xff;
+ u8 m_input_mux = 0xff;
+ u8 m_board_mux = 0xff;
};
@@ -94,14 +94,14 @@ void mondial68k_state::lcd_s_w(u32 data)
m_digits[i] = bitswap<8>((data & 0x7fffffff) >> (8 * i), 7,4,5,0,1,2,3,6);
}
-void mondial68k_state::board_mux_w(uint8_t data)
+void mondial68k_state::board_mux_w(u8 data)
{
// d0-d7: chessboard mux, led data
m_board_mux = data;
update_display();
}
-void mondial68k_state::input_mux_w(uint8_t data)
+void mondial68k_state::input_mux_w(u8 data)
{
// d0-d3: button mux
// d6,d7: led select
@@ -109,9 +109,9 @@ void mondial68k_state::input_mux_w(uint8_t data)
update_display();
}
-uint8_t mondial68k_state::inputs_r()
+u8 mondial68k_state::inputs_r()
{
- uint8_t data = 0x00;
+ u8 data = 0x00;
// read buttons
for (int i=0; i<4; i++)
diff --git a/src/mame/drivers/mephisto_polgar.cpp b/src/mame/drivers/mephisto_polgar.cpp
index dbb48472522..c5337cf8edb 100644
--- a/src/mame/drivers/mephisto_polgar.cpp
+++ b/src/mame/drivers/mephisto_polgar.cpp
@@ -25,7 +25,6 @@ TODO:
#include "speaker.h"
// internal artwork
-#include "mephisto_academy.lh"
#include "mephisto_milano.lh"
#include "mephisto_polgar.lh"
@@ -99,32 +98,6 @@ private:
uint8_t m_led_latch;
};
-class mephisto_academy_state : public mephisto_polgar_state
-{
-public:
- mephisto_academy_state(const machine_config &mconfig, device_type type, const char *tag)
- : mephisto_polgar_state(mconfig, type, tag)
- , m_board(*this, "board")
- , m_leds(*this, "led%u", 100U)
- { }
-
- INTERRUPT_GEN_MEMBER(academy_irq);
- DECLARE_WRITE_LINE_MEMBER(academy_nmi_w);
- void academy_led_w(uint8_t data);
- uint8_t academy_input_r();
-
- void academy(machine_config &config);
- void academy_mem(address_map &map);
-protected:
- virtual void machine_start() override;
- virtual void machine_reset() override;
-
-private:
- required_device<mephisto_board_device> m_board;
- output_finder<16> m_leds;
- bool m_enable_nmi;
-};
-
uint8_t mephisto_polgar_state::polgar_keys_r(offs_t offset)
{
return (BIT(m_keys->read(), offset) << 7) | 0x7f;
@@ -217,50 +190,6 @@ void mephisto_milano_state::milano_mem(address_map &map)
}
-INTERRUPT_GEN_MEMBER(mephisto_academy_state::academy_irq)
-{
- if (m_enable_nmi)
- device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
-}
-
-WRITE_LINE_MEMBER(mephisto_academy_state::academy_nmi_w)
-{
- m_enable_nmi = state;
-}
-
-void mephisto_academy_state::academy_led_w(uint8_t data)
-{
- for(int i=0; i<4; i++)
- for(int j=0; j<4; j++)
- {
- if (BIT(data, i))
- m_leds[j * 4 + i] = BIT(data, 4 + j) ? 0 : 1;
- }
-}
-
-uint8_t mephisto_academy_state::academy_input_r()
-{
- uint8_t data;
- if (m_board->mux_r() == 0xff)
- data = m_keys->read();
- else
- data = m_board->input_r();
-
- return data ^ 0xff;
-}
-
-void mephisto_academy_state::academy_mem(address_map &map)
-{
- map(0x0000, 0x1fff).ram().share("nvram");
- map(0x2400, 0x2400).r(FUNC(mephisto_academy_state::academy_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("outlatch", FUNC(hc259_device::write_d7));
- map(0x3400, 0x3400).w(FUNC(mephisto_academy_state::academy_led_w));
- map(0x3800, 0x3801).rw("display:hd44780", FUNC(hd44780_device::read), FUNC(hd44780_device::write));
- map(0x4000, 0xffff).rom();
-}
-
static INPUT_PORTS_START( polgar )
PORT_START("KEY")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Trn") PORT_CODE(KEYCODE_T)
@@ -290,16 +219,6 @@ void mephisto_milano_state::machine_reset()
m_led_latch = 0;
}
-void mephisto_academy_state::machine_start()
-{
- m_leds.resolve();
-}
-
-void mephisto_academy_state::machine_reset()
-{
- m_enable_nmi = true;
-}
-
void mephisto_polgar_state::polgar(machine_config &config)
{
M65C02(config, m_maincpu, XTAL(4'915'200)); // RP65C02G
@@ -363,18 +282,6 @@ void mephisto_milano_state::milano(machine_config &config)
config.set_default_layout(layout_mephisto_milano);
}
-void mephisto_academy_state::academy(machine_config &config)
-{
- polgar(config); // CPU: VL65NC02-04PC, 4.9152Mhz
- m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_academy_state::academy_mem);
-
- hc259_device &outlatch(HC259(config.replace(), "outlatch"));
- outlatch.q_out_cb<1>().set(FUNC(mephisto_academy_state::academy_nmi_w));
- outlatch.q_out_cb<2>().set("display:dac", FUNC(dac_byte_interface::write));
-
- config.set_default_layout(layout_mephisto_academy);
-}
-
ROM_START( polgar )
ROM_REGION( 0x10000, "maincpu", 0 )
@@ -405,24 +312,6 @@ ROM_START( mrisc2 )
ROM_LOAD("risc_2.31", 0x00000, 0x20000, CRC(9ecf9cd3) SHA1(7bfc628183037a172242c9589f15aca218d8fb12) )
ROM_END
-ROM_START( academy )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("acad4000.bin", 0x4000, 0x4000, CRC(ee1222b5) SHA1(98541d87755a7186b69b9723cc4adbd07f20f0e2) )
- ROM_LOAD("acad8000.bin", 0x8000, 0x8000, CRC(a967922b) SHA1(1327903ff89bf96d72c930c400f367ae19e3ec68) )
-ROM_END
-
-ROM_START( academyg )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("academy_16k_6.3.89", 0x4000, 0x4000, CRC(900a0001) SHA1(174a6bc3bde55994c603e232fcb45fccd62f11f6) )
- ROM_LOAD("academy_32k_6.3.89", 0x8000, 0x8000, CRC(e313d084) SHA1(ced5712d34fcc81bedcd741b7ac9e2ba17bf5235) )
-ROM_END
-
-ROM_START( academyga )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD("academy_16k_04.10.88", 0x4000, 0x4000, CRC(fb4d83c4) SHA1(f5132042c3b5a17c173f81eaa57e313ff0bb848e) )
- ROM_LOAD("academy_32k_04.10.88", 0x8000, 0x8000, CRC(478155db) SHA1(d363ab6d5bc0f47a6cdfa5132b77535ef8da8256) )
-ROM_END
-
ROM_START( milano )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("milano102.bin", 0x0000, 0x10000, CRC(0e9c8fe1) SHA1(e9176f42d86fe57e382185c703c7eff7e63ca711) )
@@ -452,10 +341,6 @@ CONS( 1992, mrisc, 0, 0, mrisc, polgar, mephisto_risc_state,
CONS( 1994, mrisc2, mrisc, 0, mrisc, polgar, mephisto_risc_state, empty_init, "Hegener + Glaser / Tasc", "Mephisto Risc II", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
// not modular boards
-CONS( 1989, academy, 0, 0, academy, polgar, mephisto_academy_state, empty_init, "Hegener + Glaser", "Mephisto Academy (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1989, academyg, academy, 0, academy, polgar, mephisto_academy_state, empty_init, "Hegener + Glaser", "Mephisto Academy (German, 06-03-89)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1989, academyga, academy, 0, academy, polgar, mephisto_academy_state, empty_init, "Hegener + Glaser", "Mephisto Academy (German, 04-10-88)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-
CONS( 1991, milano, 0, 0, milano, polgar, mephisto_milano_state, empty_init, "Hegener + Glaser", "Mephisto Milano (v1.02)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1991, milanoa, milano, 0, milano, polgar, mephisto_milano_state, empty_init, "Hegener + Glaser", "Mephisto Milano (v1.01)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1993, nshort, milano, 0, milano, polgar, mephisto_milano_state, empty_init, "Hegener + Glaser", "Mephisto Nigel Short", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/saitek_superstar.cpp b/src/mame/drivers/saitek_superstar.cpp
index b8ad028aba2..c7ee52d972a 100644
--- a/src/mame/drivers/saitek_superstar.cpp
+++ b/src/mame/drivers/saitek_superstar.cpp
@@ -199,8 +199,8 @@ void star_state::sstar28k(machine_config &config)
M6502(config, m_maincpu, 2000000); // no XTAL
m_maincpu->set_addrmap(AS_PROGRAM, &star_state::sstar28k_map);
- const attotime irq_period = attotime::from_hz(2000000 / 0x2000); // 4020 Q13
- m_maincpu->set_periodic_int(FUNC(star_state::nmi_line_pulse), irq_period);
+ const attotime nmi_period = attotime::from_hz(2000000 / 0x2000); // 4020 Q13
+ m_maincpu->set_periodic_int(FUNC(star_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));
@@ -224,8 +224,8 @@ void star_state::tstar432(machine_config &config)
R65C02(config.replace(), m_maincpu, 4_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &star_state::tstar432_map);
- const attotime irq_period = attotime::from_hz(4_MHz_XTAL / 0x4000); // 4020 Q14
- m_maincpu->set_periodic_int(FUNC(star_state::nmi_line_pulse), irq_period);
+ const attotime nmi_period = attotime::from_hz(4_MHz_XTAL / 0x4000); // 4020 Q14
+ m_maincpu->set_periodic_int(FUNC(star_state::nmi_line_pulse), nmi_period);
config.set_default_layout(layout_saitek_tstar432);
@@ -242,8 +242,8 @@ void star_state::sstar36k(machine_config &config)
M6502(config.replace(), m_maincpu, 2_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &star_state::tstar432_map);
- const attotime irq_period = attotime::from_hz(2_MHz_XTAL / 0x2000); // 4020 Q13
- m_maincpu->set_periodic_int(FUNC(star_state::nmi_line_pulse), irq_period);
+ const attotime nmi_period = attotime::from_hz(2_MHz_XTAL / 0x2000); // 4020 Q13
+ m_maincpu->set_periodic_int(FUNC(star_state::nmi_line_pulse), nmi_period);
}
diff --git a/src/mame/layout/mephisto_academy.lay b/src/mame/layout/mephisto_academy.lay
index f11108f0fe5..7c5b5993ee1 100644
--- a/src/mame/layout/mephisto_academy.lay
+++ b/src/mame/layout/mephisto_academy.lay
@@ -3,7 +3,21 @@
license:CC0
-->
<mamelayout version="2">
+
<!-- define elements -->
+
+ <element name="ledo">
+ <disk><color red="0.1" green="0.1" blue="0.1" /></disk>
+ </element>
+ <element name="ledr" defstate="0">
+ <disk state="0"><color red="0" green="0" blue="0" /></disk>
+ <disk state="1"><color red="1" green="0" blue="0" /></disk>
+ </element>
+ <element name="ledg" defstate="0">
+ <disk state="0"><color red="0" green="0" blue="0" /></disk>
+ <disk state="1"><color red="0" green="1" blue="0" /></disk>
+ </element>
+
<element name="led" defstate="0">
<disk state="0">
<color red="0.20" green="0.0" blue="0.0" />
@@ -389,47 +403,65 @@ license:CC0
</group>
<group name="panel">
- <bounds left="0" right="75.25" top="0" bottom="8.5" />
+ <bounds left="0" right="100" top="0" bottom="10" />
<bezel element="text_lcd"><bounds x="1" y="6.5" width="24" height="1.7" /></bezel>
<group ref="lcd"><bounds x="1" y="0" width="23.55" height="6.25" /></group>
- <bezel name="led100" element="led"> <bounds x="29.1" y="0.1" width="1.3" height="1.3" /> </bezel>
- <bezel name="led101" element="led"> <bounds x="35.1" y="0.1" width="1.3" height="1.3" /> </bezel>
- <bezel name="led102" element="led"> <bounds x="41.1" y="0.1" width="1.3" height="1.3" /> </bezel>
- <bezel name="led103" element="led"> <bounds x="47.1" y="0.1" width="1.3" height="1.3" /> </bezel>
- <bezel name="led108" element="led"> <bounds x="54.1" y="0.1" width="1.3" height="1.3" /> </bezel>
- <bezel name="led109" element="led"> <bounds x="60.1" y="0.1" width="1.3" height="1.3" /> </bezel>
- <bezel name="led114" element="led"> <bounds x="66.1" y="0.1" width="1.3" height="1.3" /> </bezel>
- <bezel name="led115" element="led"> <bounds x="72.1" y="0.1" width="1.3" height="1.3" /> </bezel>
-
- <bezel element="text_train"> <bounds x="27.25" y="2" width="5" height="1.5" /> </bezel>
- <bezel element="text_info"> <bounds x="33.25" y="2" width="5" height="1.5" /> </bezel>
- <bezel element="text_mem"> <bounds x="39.25" y="2" width="5" height="1.5" /> </bezel>
- <bezel element="text_pos"> <bounds x="45.25" y="2" width="5" height="1.5" /> </bezel>
- <bezel element="text_lev"> <bounds x="52.25" y="2" width="5" height="1.5" /> </bezel>
- <bezel element="text_fct"> <bounds x="58.25" y="2" width="5" height="1.5" /> </bezel>
- <bezel element="text_ent"> <bounds x="64.25" y="2" width="5" height="1.5" /> </bezel>
- <bezel element="text_cl"> <bounds x="71.25" y="2" width="3" height="1.5" /> </bezel>
-
- <bezel element="text_p6"> <bounds x="27.25" y="6.5" width="5" height="1.5" /> </bezel>
- <bezel element="text_p5"> <bounds x="33.25" y="6.5" width="5" height="1.5" /> </bezel>
- <bezel element="text_p4"> <bounds x="39.25" y="6.5" width="5" height="1.5" /> </bezel>
- <bezel element="text_p3"> <bounds x="45.25" y="6.5" width="5" height="1.5" /> </bezel>
- <bezel element="text_p2"> <bounds x="52.25" y="6.5" width="5" height="1.5" /> </bezel>
- <bezel element="text_p1"> <bounds x="58.25" y="6.5" width="5" height="1.5" /> </bezel>
- <bezel element="text_newgame"> <bounds x="65.25" y="6.70" width="9" height="1.5" /> </bezel>
- <bezel element="text_black"> <bounds x="64" y="0" width="2" height="1.3" /> </bezel>
- <bezel element="text_white"> <bounds x="70" y="0" width="2" height="1.3" /> </bezel>
-
- <bezel element="hlb" inputtag="KEY" inputmask="0x01"> <bounds x="29" y="3.75" width="1.5" height="2.5" /> </bezel>
- <bezel element="hlb" inputtag="KEY" inputmask="0x02"> <bounds x="35" y="3.75" width="1.5" height="2.5" /> </bezel>
- <bezel element="hlb" inputtag="KEY" inputmask="0x04"> <bounds x="41" y="3.75" width="1.5" height="2.5" /> </bezel>
- <bezel element="hlb" inputtag="KEY" inputmask="0x08"> <bounds x="47" y="3.75" width="1.5" height="2.5" /> </bezel>
- <bezel element="hlb" inputtag="KEY" inputmask="0x10"> <bounds x="54" y="3.75" width="1.5" height="2.5" /> </bezel>
- <bezel element="hlb" inputtag="KEY" inputmask="0x20"> <bounds x="60" y="3.75" width="1.5" height="2.5" /> </bezel>
- <bezel element="hlbr" inputtag="KEY" inputmask="0x40"> <bounds x="66" y="3.75" width="1.5" height="2.5" /> </bezel>
- <bezel element="hlbr" inputtag="KEY" inputmask="0x80"> <bounds x="72" y="3.75" width="1.5" height="2.5" /> </bezel>
+ <bezel element="text_train"> <bounds x="29.25" y="2" width="5" height="1.5" /> </bezel>
+ <bezel element="text_info"> <bounds x="35.25" y="2" width="5" height="1.5" /> </bezel>
+ <bezel element="text_mem"> <bounds x="41.25" y="2" width="5" height="1.5" /> </bezel>
+ <bezel element="text_pos"> <bounds x="47.25" y="2" width="5" height="1.5" /> </bezel>
+ <bezel element="text_lev"> <bounds x="53.25" y="2" width="5" height="1.5" /> </bezel>
+ <bezel element="text_fct"> <bounds x="59.25" y="2" width="5" height="1.5" /> </bezel>
+ <bezel element="text_ent"> <bounds x="67.25" y="2" width="5" height="1.5" /> </bezel>
+ <bezel element="text_cl"> <bounds x="74.25" y="2" width="3" height="1.5" /> </bezel>
+
+ <bezel element="text_p6"> <bounds x="29.25" y="6.5" width="5" height="1.5" /> </bezel>
+ <bezel element="text_p5"> <bounds x="35.25" y="6.5" width="5" height="1.5" /> </bezel>
+ <bezel element="text_p4"> <bounds x="41.25" y="6.5" width="5" height="1.5" /> </bezel>
+ <bezel element="text_p3"> <bounds x="47.25" y="6.5" width="5" height="1.5" /> </bezel>
+ <bezel element="text_p2"> <bounds x="53.25" y="6.5" width="5" height="1.5" /> </bezel>
+ <bezel element="text_p1"> <bounds x="59.25" y="6.5" width="5" height="1.5" /> </bezel>
+ <bezel element="text_newgame"> <bounds x="68.25" y="6.70" width="9" height="1.5" /> </bezel>
+ <bezel element="text_black"> <bounds x="67" y="0" width="2" height="1.3" /> </bezel>
+ <bezel element="text_white"> <bounds x="73" y="0" width="2" height="1.3" /> </bezel>
+
+ <bezel element="hlb" inputtag="KEY" inputmask="0x01"> <bounds x="31" y="3.75" width="1.5" height="2.5" /> </bezel>
+ <bezel element="hlb" inputtag="KEY" inputmask="0x02"> <bounds x="37" y="3.75" width="1.5" height="2.5" /> </bezel>
+ <bezel element="hlb" inputtag="KEY" inputmask="0x04"> <bounds x="43" y="3.75" width="1.5" height="2.5" /> </bezel>
+ <bezel element="hlb" inputtag="KEY" inputmask="0x08"> <bounds x="49" y="3.75" width="1.5" height="2.5" /> </bezel>
+ <bezel element="hlb" inputtag="KEY" inputmask="0x10"> <bounds x="55" y="3.75" width="1.5" height="2.5" /> </bezel>
+ <bezel element="hlb" inputtag="KEY" inputmask="0x20"> <bounds x="61" y="3.75" width="1.5" height="2.5" /> </bezel>
+ <bezel element="hlbr" inputtag="KEY" inputmask="0x40"> <bounds x="69" y="3.75" width="1.5" height="2.5" /> </bezel>
+ <bezel element="hlbr" inputtag="KEY" inputmask="0x80"> <bounds x="75" y="3.75" width="1.5" height="2.5" /> </bezel>
+
+ <element ref="ledo"><bounds x="31.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element ref="ledo"><bounds x="37.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element ref="ledo"><bounds x="43.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element ref="ledo"><bounds x="49.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element ref="ledo"><bounds x="55.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element ref="ledo"><bounds x="61.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element ref="ledo"><bounds x="69.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element ref="ledo"><bounds x="75.1" y="0.1" width="1.3" height="1.3" /></element>
+
+ <element name="0.0" ref="ledr" blend="add"><bounds x="31.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element name="1.0" ref="ledr" blend="add"><bounds x="37.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element name="2.0" ref="ledr" blend="add"><bounds x="43.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element name="3.0" ref="ledr" blend="add"><bounds x="49.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element name="0.2" ref="ledr" blend="add"><bounds x="55.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element name="1.2" ref="ledr" blend="add"><bounds x="61.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element name="2.2" ref="ledr" blend="add"><bounds x="69.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element name="3.2" ref="ledr" blend="add"><bounds x="75.1" y="0.1" width="1.3" height="1.3" /></element>
+
+ <element name="0.1" ref="ledg" blend="add"><bounds x="31.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element name="1.1" ref="ledg" blend="add"><bounds x="37.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element name="2.1" ref="ledg" blend="add"><bounds x="43.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element name="3.1" ref="ledg" blend="add"><bounds x="49.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element name="0.3" ref="ledg" blend="add"><bounds x="55.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element name="1.3" ref="ledg" blend="add"><bounds x="61.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element name="2.3" ref="ledg" blend="add"><bounds x="69.1" y="0.1" width="1.3" height="1.3" /></element>
+ <element name="3.3" ref="ledg" blend="add"><bounds x="75.1" y="0.1" width="1.3" height="1.3" /></element>
</group>
@@ -439,7 +471,7 @@ license:CC0
<bounds left="0" right="100" top="0" bottom="98" />
<element ref="background"><bounds x="13" y="0" width="87" height="98" /></element>
- <!-- chessboard coords -->
+ <!-- chessboard coords -->
<bezel element="white"><bounds x="16.5" y="2.5" width="81" height="81" /></bezel>
<bezel element="text_8"><bounds x="13.7" y="7" width="2" height="2" /></bezel>
<bezel element="text_7"><bounds x="13.7" y="17" width="2" height="2" /></bezel>
@@ -459,9 +491,8 @@ license:CC0
<bezel element="text_g"><bounds x="81" y="84.5" width="2" height="2" /></bezel>
<bezel element="text_h"><bounds x="91" y="84.5" width="2" height="2" /></bezel>
-
- <!-- LCD panel -->
- <group ref="panel"><bounds x="18" y="88" width="75.25" height="8.5" /></group>
+ <!-- LCD panel -->
+ <group ref="panel"><bounds x="18" y="88" width="100" height="10" /></group>
<group ref="sb_board"><bounds x="17" y="3" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="1.5" y="3" width="10" height="80" /></group>
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index aa2ad377415..d5bf9da281e 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -22219,6 +22219,11 @@ mekd5 // 1980 Motorola Evaluation Kit
crzyddz2 // 2006 Sealy
menghong // 2004? Sealy
+@source:mephisto_academy.cpp
+academy
+academyg
+academyga
+
@source:mephisto_berlin.cpp
berl16 // 1992 Mephisto Berlin 68000
berl16a // 1992 Mephisto Berlin 68000
@@ -22326,9 +22331,6 @@ polgar10 // 1990 Mephisto Polgar 10MHz
polgar101 // 1990 Mephisto Polgar 10MHz
mrisc // 1992 Mephisto RISC 1MB
mrisc2 // 1994 Mephisto RISC II
-academy // 1989 Mephisto Academy
-academyg // 1989 Mephisto Academy
-academyga // 1989 Mephisto Academy
milano // 1991 Mephisto Milano
milanoa // 1991 Mephisto Milano
nshort // 1993 Mephisto Nigel Short
diff --git a/src/mame/mess.flt b/src/mame/mess.flt
index 91336316aaf..875da275e0f 100644
--- a/src/mame/mess.flt
+++ b/src/mame/mess.flt
@@ -532,6 +532,7 @@ mekd2.cpp
mekd3.cpp
mekd4.cpp
mekd5.cpp
+mephisto_academy.cpp
mephisto_berlin.cpp
mephisto_brikett.cpp
mephisto_glasgow.cpp