mephisto_glasgow.cpp: split driver file into glasgow/amsterdam

This commit is contained in:
hap 2021-04-11 00:02:39 +02:00
parent 6cea28b066
commit ba646af6d8
11 changed files with 467 additions and 414 deletions

View File

@ -2534,6 +2534,7 @@ files {
createMESSProjects(_target, _subtarget, "hegener")
files {
MAME_DIR .. "src/mame/drivers/mephisto_academy.cpp",
MAME_DIR .. "src/mame/drivers/mephisto_amsterdam.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",

View File

@ -0,0 +1,263 @@
// license:BSD-3-Clause
// copyright-holders:Dirk Verwiebe, Cowering, hap
/******************************************************************************
Mephisto Amsterdam (2-ROM hardware version)
The base hardware components are the same as Glasgow, but the 32-bit versions
have more RAM and a faster CPU.
TODO:
- waitstates, same as mephisto_glasgow.cpp
******************************************************************************/
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "machine/mmboard.h"
#include "sound/dac.h"
#include "video/mmdisplay1.h"
#include "speaker.h"
// internal artwork
#include "mephisto_amsterdam.lh"
namespace {
class amsterdam_state : public driver_device
{
public:
amsterdam_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_display(*this, "display")
, m_dac(*this, "dac")
, m_keys(*this, "KEY.%u", 0)
{ }
DECLARE_INPUT_CHANGED_MEMBER(reset_button);
void amsterdam(machine_config &config);
void dallas32(machine_config &config);
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
private:
required_device<cpu_device> m_maincpu;
required_device<mephisto_board_device> m_board;
required_device<mephisto_display1_device> m_display;
required_device<dac_bit_interface> m_dac;
required_ioport_array<2> m_keys;
void amsterd_mem(address_map &map);
void dallas32_mem(address_map &map);
void led_w(offs_t offset, u8 data);
void dac_w(u8 data);
u8 keys_r();
u8 m_kp_select = 0;
};
void amsterdam_state::machine_start()
{
save_item(NAME(m_kp_select));
}
void amsterdam_state::machine_reset()
{
m_display->reset();
}
INPUT_CHANGED_MEMBER(amsterdam_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();
}
}
/******************************************************************************
I/O
******************************************************************************/
void amsterdam_state::led_w(offs_t offset, u8 data)
{
m_board->led_w(data);
// lcd strobe is shared with keypad select
m_kp_select = offset >> 7;
m_display->strobe_w(m_kp_select);
}
void amsterdam_state::dac_w(u8 data)
{
// d0: speaker out
m_dac->write(BIT(data, 0));
}
u8 amsterdam_state::keys_r()
{
return m_keys[m_kp_select & 1]->read();
}
/******************************************************************************
Address Maps
******************************************************************************/
void amsterdam_state::amsterd_mem(address_map &map)
{
map(0x000000, 0x00ffff).rom();
map(0x800002, 0x800002).w(m_display, FUNC(mephisto_display1_device::data_w));
map(0x800004, 0x800004).w(FUNC(amsterdam_state::dac_w));
map(0x800008, 0x800009).nopr(); // clr.b
map(0x800008, 0x800008).select(0x80).w(FUNC(amsterdam_state::led_w));
map(0x800010, 0x800010).w(m_board, FUNC(mephisto_board_device::mux_w));
map(0x800020, 0x800020).r(m_board, FUNC(mephisto_board_device::input_r));
map(0x800040, 0x800040).r(FUNC(amsterdam_state::keys_r));
map(0xffc000, 0xffffff).ram(); // 16KB
}
void amsterdam_state::dallas32_mem(address_map &map)
{
map(0x000000, 0x00ffff).rom();
map(0x010000, 0x01ffff).ram(); // 64KB
map(0x800002, 0x800002).w(m_display, FUNC(mephisto_display1_device::data_w));
map(0x800004, 0x800004).w(FUNC(amsterdam_state::dac_w));
map(0x800008, 0x800008).select(0x80).w(FUNC(amsterdam_state::led_w));
map(0x800010, 0x800010).w(m_board, FUNC(mephisto_board_device::mux_w));
map(0x800020, 0x800020).r(m_board, FUNC(mephisto_board_device::input_r));
map(0x800040, 0x800040).r(FUNC(amsterdam_state::keys_r));
}
/******************************************************************************
Input Ports
******************************************************************************/
static INPUT_PORTS_START( amsterdam )
PORT_START("KEY.0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A / 1") PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B / 2 / Pawn") PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C / 3 / Knight") PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D / 4 / Bishop") PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E / 5 / Rook") PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F / 6 / Queen") PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Left / Black / 9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_LEFT)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Right / White / 0") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_RIGHT)
PORT_START("KEY.1")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I)
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("LEV") PORT_CODE(KEYCODE_L)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL)
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("G / 7 / King") PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H / 8") PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_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, amsterdam_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, amsterdam_state, reset_button, 0)
INPUT_PORTS_END
/******************************************************************************
Machine Configs
******************************************************************************/
void amsterdam_state::amsterdam(machine_config &config)
{
/* basic machine hardware */
M68000(config, m_maincpu, 12_MHz_XTAL);
m_maincpu->set_periodic_int(FUNC(amsterdam_state::irq5_line_hold), attotime::from_hz(50));
m_maincpu->set_addrmap(AS_PROGRAM, &amsterdam_state::amsterd_mem);
MEPHISTO_SENSORS_BOARD(config, m_board);
m_board->set_delay(attotime::from_msec(200));
/* video hardware */
MEPHISTO_DISPLAY_MODULE1(config, m_display);
config.set_default_layout(layout_mephisto_amsterdam);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
}
void amsterdam_state::dallas32(machine_config &config)
{
amsterdam(config);
/* basic machine hardware */
M68020(config.replace(), m_maincpu, 14_MHz_XTAL);
m_maincpu->set_periodic_int(FUNC(amsterdam_state::irq5_line_hold), attotime::from_hz(50));
m_maincpu->set_addrmap(AS_PROGRAM, &amsterdam_state::dallas32_mem);
}
/******************************************************************************
ROM Definitions
******************************************************************************/
ROM_START( amsterd )
ROM_REGION16_BE( 0x1000000, "maincpu", 0 )
ROM_LOAD16_BYTE("amsterda-u.bin", 0x00000, 0x08000, CRC(0a75514e) SHA1(27daf78b0aba4d7a293b96b3c1fa92f6ee9bcb59) )
ROM_LOAD16_BYTE("amsterda-l.bin", 0x00001, 0x08000, CRC(6e17d8fa) SHA1(e0f9e57aaa445f6ff7cbe868658ed7bcfa7e31fb) )
ROM_END
ROM_START( dallas32 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("dallas32.epr", 0x000000, 0x10000, CRC(83b9ff3f) SHA1(97bf4cb3c61f8ec328735b3c98281bba44b30a28) )
ROM_END
ROM_START( dallas16 )
ROM_REGION16_BE( 0x1000000, "maincpu", 0 )
ROM_LOAD16_BYTE("dallas-u.bin", 0x00000, 0x08000, CRC(70b741f7) SHA1(23d55ed0fea127b727d725c367ee1932ff5af39f) )
ROM_LOAD16_BYTE("dallas-l.bin", 0x00001, 0x08000, CRC(69300ad3) SHA1(57ec1b955b1ddfe722011ff5da68a0cd71af9251) )
ROM_END
ROM_START( roma32 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("roma32.bin", 0x000000, 0x10000, CRC(587d03bf) SHA1(504e9ff958084700076d633f9c306fc7baf64ffd) )
ROM_END
ROM_START( roma16 )
ROM_REGION16_BE( 0x1000000, "maincpu", 0 )
ROM_LOAD16_BYTE("roma16-u.bin", 0x00000, 0x08000, CRC(111d030f) SHA1(e027f7e7018d28ab794e7730392506056809db6b) )
ROM_LOAD16_BYTE("roma16-l.bin", 0x00001, 0x08000, CRC(8245ddd2) SHA1(ab048b60fdc4358913a5d07b6fee863b66dd6734) )
ROM_END
} // anonymous namespace
/******************************************************************************
Drivers
******************************************************************************/
/* YEAR, NAME, PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
CONS( 1985, amsterd, 0, 0, amsterdam, amsterdam, amsterdam_state, empty_init, "Hegener + Glaser", "Mephisto Amsterdam", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1986, dallas32, 0, 0, dallas32, amsterdam, amsterdam_state, empty_init, "Hegener + Glaser", "Mephisto Dallas 68020", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1986, dallas16, dallas32, 0, amsterdam, amsterdam, amsterdam_state, empty_init, "Hegener + Glaser", "Mephisto Dallas 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1987, roma32, 0, 0, dallas32, amsterdam, amsterdam_state, empty_init, "Hegener + Glaser", "Mephisto Roma 68020", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1987, roma16, roma32, 0, amsterdam, amsterdam, amsterdam_state, empty_init, "Hegener + Glaser", "Mephisto Roma 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -1,15 +1,23 @@
// license:BSD-3-Clause
// copyright-holders:Dirk Verwiebe, Cowering
/***************************************************************************
// copyright-holders:Dirk Verwiebe, Cowering, hap
// thanks-to:Berger
/******************************************************************************
Mephisto Glasgow 3 S chess computer
Dirk V.
sp_rinter@gmx.de
68000 CPU
64 KB ROM
16 KB RAM
4 Digit LCD
TODO:
- add waitstates, CPU is 12MHz but with DTACK waitstates for slow EPROMs,
effective speed is less than 10MHz
===============================================================================
Hardware notes:
- 68000 CPU
- 64 KB ROM
- 16 KB RAM
- 4 Digit LCD
3*74LS138 Decoder/Multiplexer
1*74LS74 Dual positive edge triggered D Flip Flop
@ -23,34 +31,18 @@ sp_rinter@gmx.de
1*74LS367 3 State Hex Buffers
1*SG-10 Seiko 4-pin plastic XTAL chip "50H", to IPL0+2
How to play (quick guide)
1. You are the white player.
2. Click on the piece to move (LED starts flashing), then click where it goes
3. Computer plays black, it will work out its move and beep.
4. Read the move in the display, or look for the flashing LEDs.
5. Move the computer's piece in the same way you moved yours.
6. You'll need to read the official user manual for advanced features, or if
you get messages such as "Err1".
TODO:
- add waitstates(applies to glasgow, amsterd, others?), CPU is 12MHz but with DTACK
waitstates for slow EPROMs, effective speed is less than 10MHz
- use mmdisplay1 device
- split driver (glasgow/amsterdam)
***************************************************************************/
******************************************************************************/
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "machine/mmboard.h"
#include "sound/dac.h"
#include "video/mmdisplay1.h"
#include "speaker.h"
// internal artwork
#include "mephisto_amsterdam.lh"
#include "mephisto_glasgow.lh"
@ -62,54 +54,37 @@ public:
glasgow_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_dac(*this, "dac")
, m_board(*this, "board")
, m_keyboard(*this, "LINE%u", 0)
, m_digits(*this, "digit%u", 0U)
, m_display(*this, "display")
, m_dac(*this, "dac")
, m_keys(*this, "KEY.%u", 0)
{ }
void glasgow(machine_config &config);
protected:
void glasgow_lcd_w(u8 data);
void glasgow_lcd_flag_w(u8 data);
u8 glasgow_keys_r();
void glasgow_keys_w(u8 data);
virtual void machine_start() override;
virtual void machine_reset() override;
private:
required_device<cpu_device> m_maincpu;
required_device<mephisto_board_device> m_board;
required_device<mephisto_display1_device> m_display;
required_device<dac_bit_interface> m_dac;
required_ioport_array<2> m_keys;
void glasgow_mem(address_map &map);
required_device<cpu_device> m_maincpu;
required_device<dac_bit_interface> m_dac;
required_device<mephisto_board_device> m_board;
required_ioport_array<2> m_keyboard;
output_finder<4> m_digits;
void control_w(u8 data);
u8 keys_r();
void keys_w(u8 data);
u8 m_lcd_shift_counter;
u8 m_led7;
u8 m_key_select;
u8 m_kp_mux = 0;
};
class amsterd_state : public glasgow_state
void glasgow_state::machine_start()
{
public:
using glasgow_state::glasgow_state;
void amsterd(machine_config &config);
void dallas32(machine_config &config);
protected:
void write_lcd(u8 data);
void write_lcd_flag(u8 data);
void write_beeper(u8 data);
void write_board(u8 data);
u8 read_newkeys();
void amsterd_mem(address_map &map);
void dallas32_mem(address_map &map);
};
save_item(NAME(m_kp_mux));
}
@ -117,95 +92,33 @@ protected:
I/O
******************************************************************************/
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 &= 3;
}
void glasgow_state::glasgow_lcd_flag_w(u8 data)
{
u8 const lcd_flag = data & 0x81;
m_dac->write(BIT(lcd_flag, 0));
if (lcd_flag)
m_led7 = 255;
else
m_led7 = 0;
}
u8 glasgow_state::glasgow_keys_r()
{
// See if any keys pressed
u8 data = 3;
if (m_key_select == m_keyboard[0]->read())
data &= 1;
if (m_key_select == m_keyboard[1]->read())
data &= 2;
return data;
}
void glasgow_state::glasgow_keys_w(u8 data)
{
m_key_select = data;
}
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 &= 7;
}
void amsterd_state::write_lcd_flag(u8 data)
{
// The key function in the rom expects a value from the
// second key row after writing to here
m_key_select = 1;
m_led7 = data ? 255 : 0;
}
void amsterd_state::write_board(u8 data)
{
m_key_select = 0;
m_board->led_w(0);
m_board->mux_w(data);
}
void amsterd_state::write_beeper(u8 data)
void glasgow_state::control_w(u8 data)
{
// d0: speaker out
m_dac->write(BIT(data, 0));
// d7: lcd strobe
m_display->strobe_w(BIT(data, 7));
}
u8 amsterd_state::read_newkeys()
u8 glasgow_state::keys_r()
{
return m_keyboard[m_key_select & 1]->read();
u8 data = 0;
// d0,d1: multiplexed inputs
for (int i = 0; i < 2; i++)
if (m_kp_mux & m_keys[i]->read())
data |= 1 << i;
// reading keypad also clears irq
m_maincpu->set_input_line(M68K_IRQ_5, CLEAR_LINE);
return ~data;
}
void glasgow_state::machine_start()
void glasgow_state::keys_w(u8 data)
{
m_digits.resolve();
save_item(NAME(m_lcd_shift_counter));
save_item(NAME(m_led7));
save_item(NAME(m_key_select));
}
void glasgow_state::machine_reset()
{
m_lcd_shift_counter = 0;
m_key_select = 0;
m_led7 = 0;
m_kp_mux = ~data;
}
@ -218,38 +131,12 @@ void glasgow_state::glasgow_mem(address_map &map)
{
map.global_mask(0x1ffff);
map(0x000000, 0x00ffff).rom();
map(0x010000, 0x010000).w(FUNC(glasgow_state::glasgow_lcd_w));
map(0x010002, 0x010002).rw(FUNC(glasgow_state::glasgow_keys_r), FUNC(glasgow_state::glasgow_keys_w));
map(0x010004, 0x010004).w(FUNC(glasgow_state::glasgow_lcd_flag_w));
map(0x010006, 0x010006).rw("board", FUNC(mephisto_board_device::input_r), FUNC(mephisto_board_device::led_w));
map(0x010008, 0x010008).w("board", FUNC(mephisto_board_device::mux_w));
map(0x01c000, 0x01ffff).ram(); // 16KB
}
void amsterd_state::amsterd_mem(address_map &map)
{
map(0x000000, 0x00ffff).rom();
map(0x800002, 0x800002).w(FUNC(amsterd_state::write_lcd));
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));
map(0x800088, 0x800088).w("board", FUNC(mephisto_board_device::led_w));
map(0xffc000, 0xffffff).ram(); // 16KB
}
void amsterd_state::dallas32_mem(address_map &map)
{
map(0x000000, 0x00ffff).rom();
map(0x010000, 0x01ffff).ram(); // 64KB
map(0x800002, 0x800002).w(FUNC(amsterd_state::write_lcd));
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));
map(0x800088, 0x800088).w("board", FUNC(mephisto_board_device::led_w));
map(0x010000, 0x010000).w(m_display, FUNC(mephisto_display1_device::data_w));
map(0x010002, 0x010002).rw(FUNC(glasgow_state::keys_r), FUNC(glasgow_state::keys_w));
map(0x010004, 0x010004).w(FUNC(glasgow_state::control_w));
map(0x010006, 0x010006).rw(m_board, FUNC(mephisto_board_device::input_r), FUNC(mephisto_board_device::led_w));
map(0x010008, 0x010008).w(m_board, FUNC(mephisto_board_device::mux_w));
map(0x01c000, 0x01ffff).ram();
}
@ -258,48 +145,26 @@ void amsterd_state::dallas32_mem(address_map &map)
Input Ports
******************************************************************************/
static INPUT_PORTS_START( new_keyboard )
PORT_START("LINE0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A / 1") PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B / 2 / Pawn") PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
static INPUT_PORTS_START( glasgow )
PORT_START("KEY.0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Left / Black / 9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_LEFT)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C / 3 / Knight") PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D / 4 / Bishop") PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E / 5 / Rook") PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F / 6 / Queen") PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Left / Black / 9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_LEFT)
PORT_BIT( 0x80, 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( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D / 4 / Bishop") PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A / 1") PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F / 6 / Queen") PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B / 2 / Pawn") PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
PORT_START("LINE1")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I)
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("LEV") PORT_CODE(KEYCODE_L)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
PORT_START("KEY.1")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E / 5 / Rook") PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
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("Right / White / 0") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_RIGHT)
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("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("LEV") PORT_CODE(KEYCODE_L)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G / 7 / King") PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H / 8") PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD)
INPUT_PORTS_END
static INPUT_PORTS_START( old_keyboard )
PORT_START("LINE0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Left / Black / 9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_LEFT)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("C / 3 / Knight") PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("D / 4 / Bishop") PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("A / 1") PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("F / 6 / Queen") PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("B / 2 / Pawn") PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
PORT_START("LINE1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("E / 5 / Rook") PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Right / White / 0") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_RIGHT)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("POS") PORT_CODE(KEYCODE_O)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("H / 8") PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("G / 7 / King") PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M)
INPUT_PORTS_END
@ -312,13 +177,14 @@ void glasgow_state::glasgow(machine_config &config)
{
/* basic machine hardware */
M68000(config, m_maincpu, 12_MHz_XTAL);
m_maincpu->set_periodic_int(FUNC(glasgow_state::irq5_line_hold), attotime::from_hz(50));
m_maincpu->set_periodic_int(FUNC(glasgow_state::irq5_line_assert), attotime::from_hz(50));
m_maincpu->set_addrmap(AS_PROGRAM, &glasgow_state::glasgow_mem);
MEPHISTO_SENSORS_BOARD(config, m_board);
m_board->set_delay(attotime::from_msec(200));
/* video hardware */
MEPHISTO_DISPLAY_MODULE1(config, m_display);
config.set_default_layout(layout_mephisto_glasgow);
/* sound hardware */
@ -326,26 +192,6 @@ void glasgow_state::glasgow(machine_config &config)
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
}
void amsterd_state::amsterd(machine_config &config)
{
glasgow(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &amsterd_state::amsterd_mem);
config.set_default_layout(layout_mephisto_amsterdam);
}
void amsterd_state::dallas32(machine_config &config)
{
amsterd(config);
/* basic machine hardware */
M68020(config.replace(), m_maincpu, 14_MHz_XTAL);
m_maincpu->set_periodic_int(FUNC(amsterd_state::irq5_line_hold), attotime::from_hz(50));
m_maincpu->set_addrmap(AS_PROGRAM, &amsterd_state::dallas32_mem);
}
/******************************************************************************
@ -360,11 +206,6 @@ ROM_START( glasgow )
ROM_LOAD16_BYTE("me3_2_2l.410", 0x08001, 0x04000, CRC(b3f27827) SHA1(864ba897d24024592d08c4ae090aa70a2cc5f213) )
ROM_END
ROM_START( amsterd )
ROM_REGION16_BE( 0x1000000, "maincpu", 0 )
ROM_LOAD16_BYTE("amsterda-u.bin", 0x00000, 0x08000, CRC(0a75514e) SHA1(27daf78b0aba4d7a293b96b3c1fa92f6ee9bcb59) )
ROM_LOAD16_BYTE("amsterda-l.bin", 0x00001, 0x08000, CRC(6e17d8fa) SHA1(e0f9e57aaa445f6ff7cbe868658ed7bcfa7e31fb) )
ROM_END
ROM_START( amsterda )
ROM_REGION( 0x10000, "maincpu", 0 )
@ -374,17 +215,6 @@ ROM_START( amsterda )
ROM_LOAD16_BYTE("bl_4_1", 0x08001, 0x04000, CRC(533e584a) SHA1(0e4510977dc627125c278920492bc137793a9554) )
ROM_END
ROM_START( dallas32 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("dallas32.epr", 0x000000, 0x10000, CRC(83b9ff3f) SHA1(97bf4cb3c61f8ec328735b3c98281bba44b30a28) )
ROM_END
ROM_START( dallas16 )
ROM_REGION16_BE( 0x1000000, "maincpu", 0 )
ROM_LOAD16_BYTE("dallas-u.bin", 0x00000, 0x08000, CRC(70b741f7) SHA1(23d55ed0fea127b727d725c367ee1932ff5af39f) )
ROM_LOAD16_BYTE("dallas-l.bin", 0x00001, 0x08000, CRC(69300ad3) SHA1(57ec1b955b1ddfe722011ff5da68a0cd71af9251) )
ROM_END
ROM_START( dallas16a )
ROM_REGION16_BE( 0x1000000, "maincpu", 0 )
ROM_LOAD16_BYTE("dal_g_pr", 0x00000, 0x04000, CRC(66deade9) SHA1(07ec6b923f2f053172737f1fc94aec84f3ea8da1) )
@ -393,17 +223,6 @@ ROM_START( dallas16a )
ROM_LOAD16_BYTE("dal_g_bl", 0x08001, 0x04000, CRC(144a15e2) SHA1(c4fcc23d55fa5262f5e01dbd000644a7feb78f32) )
ROM_END
ROM_START( roma32 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("roma32.bin", 0x000000, 0x10000, CRC(587d03bf) SHA1(504e9ff958084700076d633f9c306fc7baf64ffd) )
ROM_END
ROM_START( roma16 )
ROM_REGION16_BE( 0x1000000, "maincpu", 0 )
ROM_LOAD16_BYTE("roma16-u.bin", 0x00000, 0x08000, CRC(111d030f) SHA1(e027f7e7018d28ab794e7730392506056809db6b) )
ROM_LOAD16_BYTE("roma16-l.bin", 0x00001, 0x08000, CRC(8245ddd2) SHA1(ab048b60fdc4358913a5d07b6fee863b66dd6734) )
ROM_END
ROM_START( roma16a )
ROM_REGION16_BE( 0x1000000, "maincpu", 0 )
ROM_LOAD16_BYTE("roma_r_low", 0x00000, 0x04000, CRC(f2312170) SHA1(82a50ba59f74365aa77478adaadbbace6693dcc1) )
@ -420,16 +239,10 @@ ROM_END
Drivers
******************************************************************************/
/* YEAR, NAME, PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
CONS( 1984, glasgow, 0, 0, glasgow, old_keyboard, glasgow_state, empty_init, "Hegener + Glaser", "Mephisto III-S Glasgow", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
/* YEAR, NAME, PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
CONS( 1984, glasgow, 0, 0, glasgow, glasgow, glasgow_state, empty_init, "Hegener + Glaser", "Mephisto III-S Glasgow", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1985, amsterd, 0, 0, amsterd, new_keyboard, amsterd_state, empty_init, "Hegener + Glaser", "Mephisto Amsterdam", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1985, amsterda, amsterd, 0, glasgow, old_keyboard, glasgow_state, empty_init, "Hegener + Glaser", "Mephisto Amsterdam (Glasgow hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1986, dallas32, 0, 0, dallas32, new_keyboard, amsterd_state, empty_init, "Hegener + Glaser", "Mephisto Dallas 68020", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1986, dallas16, dallas32, 0, amsterd, new_keyboard, amsterd_state, empty_init, "Hegener + Glaser", "Mephisto Dallas 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1986, dallas16a, dallas32, 0, glasgow, old_keyboard, glasgow_state, empty_init, "Hegener + Glaser", "Mephisto Dallas 68000 (Glasgow hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1987, roma32, 0, 0, dallas32, new_keyboard, amsterd_state, empty_init, "Hegener + Glaser", "Mephisto Roma 68020", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1987, roma16, roma32, 0, amsterd, new_keyboard, amsterd_state, empty_init, "Hegener + Glaser", "Mephisto Roma 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1987, roma16a, roma32, 0, glasgow, old_keyboard, glasgow_state, empty_init, "Hegener + Glaser", "Mephisto Roma 68000 (Glasgow hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
// newer chesscomputers on 4-ROM hardware (see mephisto_amsterdam.cpp for parent sets)
CONS( 1985, amsterda, amsterd, 0, glasgow, glasgow, glasgow_state, empty_init, "Hegener + Glaser", "Mephisto Amsterdam (Glasgow hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1986, dallas16a, dallas32, 0, glasgow, glasgow, glasgow_state, empty_init, "Hegener + Glaser", "Mephisto Dallas 68000 (Glasgow hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1987, roma16a, roma32, 0, glasgow, glasgow, glasgow_state, empty_init, "Hegener + Glaser", "Mephisto Roma 68000 (Glasgow hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -83,7 +83,7 @@ private:
required_device<cdp1806_device> m_maincpu;
required_device<mephisto_board_device> m_board;
required_device<dac_bit_interface> m_dac;
required_ioport_array<8> m_inputs;
required_ioport_array<2> m_inputs;
// address maps
void mirage_map(address_map &map);
@ -97,7 +97,7 @@ private:
void sound_w(u8 data);
void unknown_w(u8 data);
void keypad_w(u8 data);
template<int P> DECLARE_READ_LINE_MEMBER(keypad_r);
template<int N> DECLARE_READ_LINE_MEMBER(keypad_r);
bool m_reset = false;
u8 m_kp_mux = 0;
@ -151,17 +151,11 @@ void mm1_state::keypad_w(u8 data)
m_kp_mux = ~data;
}
template<int P>
template<int N>
READ_LINE_MEMBER(mm1_state::keypad_r)
{
u8 data = 0;
// EF3,EF4: multiplexed inputs (keypad)
for (int i = 0; i < 8; i++)
if (BIT(m_kp_mux, i))
data |= m_inputs[i]->read();
return data >> P & 1;
return (m_inputs[N]->read() & m_kp_mux) ? 1 : 0;
}
@ -203,69 +197,45 @@ void mm1_state::mm1_io(address_map &map)
static INPUT_PORTS_START( mm1 )
PORT_START("IN.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("E / 5 / Rook")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_LEFT) PORT_NAME("Left / Black / 9")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("INFO")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_RIGHT) PORT_NAME("Right / White / 0")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_NAME("POS")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("H / 8")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("LEV")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("G / 7 / King")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("MEM")
PORT_START("IN.1")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("INFO")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_LEFT) PORT_NAME("Left / Black / 9")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL")
PORT_START("IN.2")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_RIGHT) PORT_NAME("Right / White / 0")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("C / 3 / Knight")
PORT_START("IN.3")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_NAME("POS")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("ENT")
PORT_START("IN.4")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("H / 8")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("D / 4 / Bishop")
PORT_START("IN.5")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("LEV")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("A / 1")
PORT_START("IN.6")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("G / 7 / King")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("F / 6 / Queen")
PORT_START("IN.7")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("MEM")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("B / 2 / Pawn")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("C / 3 / Knight")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("ENT")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("D / 4 / Bishop")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("A / 1")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("F / 6 / Queen")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("B / 2 / Pawn")
INPUT_PORTS_END
static INPUT_PORTS_START( mirage )
PORT_START("IN.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_NAME("CL")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("LIST")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("A / 1")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("ENT")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("B / 2 / Pawn")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_SPACE) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("STA")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("C / 3 / Knight")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("LEV")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("D / 4 / Bishop")
PORT_START("IN.1")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("A / 1")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("LIST")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("E / 5 / Rook")
PORT_START("IN.2")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("ENT")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("Black / 9")
PORT_START("IN.3")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("B / 2 / Pawn")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("F / 6 / Queen")
PORT_START("IN.4")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_SPACE) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("STA")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("White / 0")
PORT_START("IN.5")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("C / 3 / Knight")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("G / 7 / King")
PORT_START("IN.6")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("LEV")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("REV")
PORT_START("IN.7")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("D / 4 / Bishop")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("H / 8")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("Black / 9")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("F / 6 / Queen")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("White / 0")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("G / 7 / King")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("REV")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("H / 8")
PORT_START("FAKE") // module came with buttons sensorboard by default
PORT_CONFNAME( 0x01, 0x00, "Board Sensors" ) PORT_CHANGED_MEMBER(DEVICE_SELF, mm1_state, mirage_switch_sensor_type, 0)

View File

@ -5,11 +5,18 @@
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
TODO:
- need to emulate TurboKit properly, also for mm5p (it's not as simple as a CPU
overclock plus ROM patch)
===============================================================================
Hardware notes:
- CPU: G65SC02P-4 or R65C02P3/R65C02P4
- Clock: 4.9152 MHz
- NMI CLK: 600 Hz
- IRQ Line is set to VSS
- 8 KByte SRAM Sony CXK5864-15L
1-CD74HC4060E: 14 Bit Counter
1-CD74HC166E
@ -52,6 +59,8 @@ $3000 // Chess Board
$4000-7FFF Opening Modul HG550
$8000-$FFF ROM
===============================================================================
Mephisto 4 Turbo Kit 18mhz - (mm4tk)
This is a replacement rom combining the turbo kit initial rom with the original MM IV.
The Turbo Kit powers up to it's tiny rom, copies itself to ram, banks in normal rom,
@ -70,11 +79,6 @@ http://chesseval.com/ChessEvalJournal/PrototypeMMV.htm
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)
******************************************************************************/
#include "emu.h"
@ -120,7 +124,6 @@ public:
void bup(machine_config &config);
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
private:
@ -140,10 +143,6 @@ private:
u8 keys_r(offs_t offset);
};
void mm2_state::machine_start()
{
}
void mm2_state::machine_reset()
{
m_display->reset();

View File

@ -493,55 +493,60 @@ 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>
<!-- Buttons (new_keyboard)-->
<element ref="keys" inputtag="LINE1" inputmask="0x01"> <!-- INFO -->
<element ref="keys" inputtag="KEY.1" inputmask="0x01"> <!-- INFO -->
<bounds x="69" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE1" inputmask="0x02"> <!-- POS -->
<element ref="keys" inputtag="KEY.1" inputmask="0x02"> <!-- POS -->
<bounds x="74" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE1" inputmask="0x04"> <!-- LEV -->
<element ref="keys" inputtag="KEY.1" inputmask="0x04"> <!-- LEV -->
<bounds x="79" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE1" inputmask="0x08"> <!-- MEM -->
<element ref="keys" inputtag="KEY.1" inputmask="0x08"> <!-- MEM -->
<bounds x="84" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE1" inputmask="0x10"> <!-- CL -->
<element ref="keys" inputtag="KEY.1" inputmask="0x10"> <!-- CL -->
<bounds x="89" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE1" inputmask="0x20"> <!-- ENT -->
<element ref="keys" inputtag="KEY.1" inputmask="0x20"> <!-- ENT -->
<bounds x="94" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE0" inputmask="0x01"> <!-- A1 -->
<element ref="keys" inputtag="KEY.0" inputmask="0x01"> <!-- A1 -->
<bounds x="69" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE0" inputmask="0x02"> <!-- B2 -->
<element ref="keys" inputtag="KEY.0" inputmask="0x02"> <!-- B2 -->
<bounds x="74" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE0" inputmask="0x04"> <!-- C3 -->
<element ref="keys" inputtag="KEY.0" inputmask="0x04"> <!-- C3 -->
<bounds x="79" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE0" inputmask="0x08"> <!-- D4 -->
<element ref="keys" inputtag="KEY.0" inputmask="0x08"> <!-- D4 -->
<bounds x="84" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE0" inputmask="0x10"> <!-- E5 -->
<element ref="keys" inputtag="KEY.0" inputmask="0x10"> <!-- E5 -->
<bounds x="89" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE0" inputmask="0x20"> <!-- F6 -->
<element ref="keys" inputtag="KEY.0" inputmask="0x20"> <!-- F6 -->
<bounds x="94" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE1" inputmask="0x40"> <!-- G7 -->
<element ref="keys" inputtag="RESET" inputmask="0x01"> <!-- RES -->
<bounds x="69" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
<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="KEY.1" inputmask="0x40"> <!-- G7 -->
<bounds x="79" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE1" inputmask="0x80"> <!-- H8 -->
<element ref="keys" inputtag="KEY.1" inputmask="0x80"> <!-- H8 -->
<bounds x="84" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE0" inputmask="0x40"> <!-- 9 -->
<element ref="keys" inputtag="KEY.0" inputmask="0x40"> <!-- 9 -->
<bounds x="89" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE0" inputmask="0x80"> <!-- 0 -->
<element ref="keys" inputtag="KEY.0" inputmask="0x80"> <!-- 0 -->
<bounds x="94" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
</group>

View File

@ -491,55 +491,54 @@ 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>
<!-- Buttons (old_keyboard)-->
<element ref="keys" inputtag="LINE1" inputmask="0x02"> <!-- INFO -->
<element ref="keys" inputtag="KEY.1" inputmask="0x02"> <!-- INFO -->
<bounds x="69" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE1" inputmask="0x08"> <!-- POS -->
<element ref="keys" inputtag="KEY.1" inputmask="0x08"> <!-- POS -->
<bounds x="74" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE1" inputmask="0x20"> <!-- LEV -->
<element ref="keys" inputtag="KEY.1" inputmask="0x20"> <!-- LEV -->
<bounds x="79" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE1" inputmask="0x80"> <!-- MEM -->
<element ref="keys" inputtag="KEY.1" inputmask="0x80"> <!-- MEM -->
<bounds x="84" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE0" inputmask="0x02"> <!-- CL -->
<element ref="keys" inputtag="KEY.0" inputmask="0x02"> <!-- CL -->
<bounds x="89" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE0" inputmask="0x08"> <!-- ENT -->
<element ref="keys" inputtag="KEY.0" inputmask="0x08"> <!-- ENT -->
<bounds x="94" y="93" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE0" inputmask="0x20"> <!-- A1 -->
<element ref="keys" inputtag="KEY.0" inputmask="0x20"> <!-- A1 -->
<bounds x="69" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE0" inputmask="0x80"> <!-- B2 -->
<element ref="keys" inputtag="KEY.0" inputmask="0x80"> <!-- B2 -->
<bounds x="74" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE0" inputmask="0x04"> <!-- C3 -->
<element ref="keys" inputtag="KEY.0" inputmask="0x04"> <!-- C3 -->
<bounds x="79" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE0" inputmask="0x10"> <!-- D4 -->
<element ref="keys" inputtag="KEY.0" inputmask="0x10"> <!-- D4 -->
<bounds x="84" y="98" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE1" inputmask="0x01"> <!-- E5 -->
<element ref="keys" inputtag="KEY.1" inputmask="0x01"> <!-- E5 -->
<bounds x="69" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE0" inputmask="0x40"> <!-- F6 -->
<element ref="keys" inputtag="KEY.0" inputmask="0x40"> <!-- F6 -->
<bounds x="74" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE1" inputmask="0x40"> <!-- G7 -->
<element ref="keys" inputtag="KEY.1" inputmask="0x40"> <!-- G7 -->
<bounds x="79" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE1" inputmask="0x10"> <!-- 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="LINE0" inputmask="0x01"> <!-- 9 -->
<element ref="keys" inputtag="KEY.0" inputmask="0x01"> <!-- 9 -->
<bounds x="89" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
<element ref="keys" inputtag="LINE1" inputmask="0x04"> <!-- 0 -->
<element ref="keys" inputtag="KEY.1" inputmask="0x04"> <!-- 0 -->
<bounds x="94" y="103" width="4" height="4" /><color alpha="0.25" />
</element>
</group>

View File

@ -491,23 +491,23 @@ license:CC0
<element ref="text_p1"><bounds x="8" y="10.6" width="1.4" height="1.4" /></element>
<element ref="keys" inputtag="IN.0" inputmask="0x01"><bounds x="16" y="0.0" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.4" inputmask="0x01"><bounds x="20" y="0.0" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.0" inputmask="0x02"><bounds x="16" y="3.5" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.2" inputmask="0x01"><bounds x="20" y="3.5" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.0" inputmask="0x10"><bounds x="20" y="0.0" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.1" inputmask="0x01"><bounds x="16" y="3.5" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.0" inputmask="0x04"><bounds x="20" y="3.5" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.1" inputmask="0x01"><bounds x="0" y="7.0" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.3" inputmask="0x01"><bounds x="4" y="7.0" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.5" inputmask="0x01"><bounds x="8" y="7.0" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.7" inputmask="0x01"><bounds x="12" y="7.0" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.6" inputmask="0x01"><bounds x="16" y="7.0" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.6" inputmask="0x02"><bounds x="20" y="7.0" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.0" inputmask="0x02"><bounds x="0" y="7.0" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.0" inputmask="0x08"><bounds x="4" y="7.0" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.0" inputmask="0x20"><bounds x="8" y="7.0" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.0" inputmask="0x80"><bounds x="12" y="7.0" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.0" inputmask="0x40"><bounds x="16" y="7.0" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.1" inputmask="0x40"><bounds x="20" y="7.0" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.1" inputmask="0x02"><bounds x="0" y="10.5" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.3" inputmask="0x02"><bounds x="4" y="10.5" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.5" inputmask="0x02"><bounds x="8" y="10.5" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.7" inputmask="0x02"><bounds x="12" y="10.5" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.2" inputmask="0x02"><bounds x="16" y="10.5" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.4" inputmask="0x02"><bounds x="20" y="10.5" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.1" inputmask="0x08"><bounds x="4" y="10.5" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.1" inputmask="0x20"><bounds x="8" y="10.5" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.1" inputmask="0x80"><bounds x="12" y="10.5" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.1" inputmask="0x04"><bounds x="16" y="10.5" width="3" height="1.75" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.1" inputmask="0x10"><bounds x="20" y="10.5" width="3" height="1.75" /><color alpha="0.25" /></element>
</group>

View File

@ -529,26 +529,26 @@ 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="IN.1" inputmask="0x01"><bounds x="69" y="93" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.3" inputmask="0x01"><bounds x="74" y="93" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.5" inputmask="0x01"><bounds x="79" y="93" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.7" inputmask="0x01"><bounds x="84" y="93" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.0" inputmask="0x02"><bounds x="69" y="93" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.0" inputmask="0x08"><bounds x="74" y="93" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.0" inputmask="0x20"><bounds x="79" y="93" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.0" inputmask="0x80"><bounds x="84" y="93" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.1" inputmask="0x02"><bounds x="89" y="93" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.3" inputmask="0x02"><bounds x="94" y="93" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.1" inputmask="0x08"><bounds x="94" y="93" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.5" inputmask="0x02"><bounds x="69" y="98" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.7" inputmask="0x02"><bounds x="74" y="98" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.2" inputmask="0x02"><bounds x="79" y="98" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.4" inputmask="0x02"><bounds x="84" y="98" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.1" inputmask="0x20"><bounds x="69" y="98" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.1" inputmask="0x80"><bounds x="74" y="98" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.1" inputmask="0x04"><bounds x="79" y="98" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.1" inputmask="0x10"><bounds x="84" y="98" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.X" inputmask="0x01"><bounds x="89" y="98" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.X" inputmask="0x02"><bounds x="94" y="98" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.0" inputmask="0x01"><bounds x="69" y="103" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.6" inputmask="0x02"><bounds x="74" y="103" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.6" inputmask="0x01"><bounds x="79" y="103" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.4" inputmask="0x01"><bounds x="84" y="103" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.0" inputmask="0x02"><bounds x="89" y="103" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.2" inputmask="0x01"><bounds x="94" y="103" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.1" inputmask="0x40"><bounds x="74" y="103" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.0" inputmask="0x40"><bounds x="79" y="103" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.0" inputmask="0x10"><bounds x="84" y="103" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.1" inputmask="0x01"><bounds x="89" y="103" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="keys" inputtag="IN.0" inputmask="0x04"><bounds x="94" y="103" width="4" height="4" /><color alpha="0.25" /></element>
</group>

View File

@ -22690,6 +22690,13 @@ academy
academyg
academyga
@source:mephisto_amsterdam.cpp
amsterd // Amsterdam
dallas16 // Dallas
dallas32 // Dallas
roma16 // Roma
roma32 // Roma
@source:mephisto_berlin.cpp
berl16 // 1992 Mephisto Berlin 68000
berl16a // 1992 Mephisto Berlin 68000
@ -22710,15 +22717,10 @@ mephisto3c
mephistoj
@source:mephisto_glasgow.cpp
amsterd // Amsterdam
amsterda // Amsterdam
dallas16 // Dallas
dallas16a // Dallas
dallas32 // Dallas
glasgow // Glasgow
roma16 // Roma
roma16a // Roma
roma32 // Roma
@source:mephisto_milano.cpp
milano // 1991 Mephisto Milano

View File

@ -576,6 +576,7 @@ mekd3.cpp
mekd4.cpp
mekd5.cpp
mephisto_academy.cpp
mephisto_amsterdam.cpp
mephisto_berlin.cpp
mephisto_brikett.cpp
mephisto_glasgow.cpp