added device for 1st version of mephisto display module

This commit is contained in:
hap 2021-04-10 17:20:56 +02:00
parent 67823bf726
commit e56f56d624
43 changed files with 972 additions and 842 deletions

View File

@ -2551,6 +2551,8 @@ files {
MAME_DIR .. "src/mame/drivers/mephisto_risc.cpp", MAME_DIR .. "src/mame/drivers/mephisto_risc.cpp",
MAME_DIR .. "src/mame/machine/mmboard.cpp", MAME_DIR .. "src/mame/machine/mmboard.cpp",
MAME_DIR .. "src/mame/machine/mmboard.h", MAME_DIR .. "src/mame/machine/mmboard.h",
MAME_DIR .. "src/mame/video/mmdisplay1.cpp",
MAME_DIR .. "src/mame/video/mmdisplay1.h",
MAME_DIR .. "src/mame/video/mmdisplay2.cpp", MAME_DIR .. "src/mame/video/mmdisplay2.cpp",
MAME_DIR .. "src/mame/video/mmdisplay2.h", MAME_DIR .. "src/mame/video/mmdisplay2.h",
} }

View File

@ -823,7 +823,7 @@ ROM_END
// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS // YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
CONS( 1981, csc, 0, 0, csc, csc, csc_state, empty_init, "Fidelity Electronics", "Champion Sensory Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1981, csc, 0, 0, csc, csc, csc_state, empty_init, "Fidelity Electronics", "Champion Sensory Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1981, csce, 0, 0, csce, csc, csc_state, empty_init, "Fidelity Electronics", u8"Elite Champion Challenger (Travemünde version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1981, csce, 0, 0, csce, csc, csc_state, empty_init, "Fidelity Electronics", u8"Elite Champion Challenger (Travemünde TM version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1983, super9cc, 0, 0, su9, su9, su9_state, empty_init, "Fidelity Electronics", "Super \"9\" Sensory Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1983, super9cc, 0, 0, su9, su9, su9_state, empty_init, "Fidelity Electronics", "Super \"9\" Sensory Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )

View File

@ -868,10 +868,10 @@ ROM_START( ninjemak )
ROM_LOAD( "ninjemak.pr1", 0x0000, 0x0100, CRC(8a62d4e4) SHA1(99ca4da01ea1b5585f6e3ebf162c3f988ab317e5) ) /* red */ ROM_LOAD( "ninjemak.pr1", 0x0000, 0x0100, CRC(8a62d4e4) SHA1(99ca4da01ea1b5585f6e3ebf162c3f988ab317e5) ) /* red */
ROM_LOAD( "ninjemak.pr2", 0x0100, 0x0100, CRC(2ccf976f) SHA1(b804ee761793697087fbe3372352f301a22feeab) ) /* green */ ROM_LOAD( "ninjemak.pr2", 0x0100, 0x0100, CRC(2ccf976f) SHA1(b804ee761793697087fbe3372352f301a22feeab) ) /* green */
ROM_LOAD( "ninjemak.pr3", 0x0200, 0x0100, CRC(16b2a7a4) SHA1(53c410b439c8a835447f15f2ab250b363b3f7888) ) /* blue */ ROM_LOAD( "ninjemak.pr3", 0x0200, 0x0100, CRC(16b2a7a4) SHA1(53c410b439c8a835447f15f2ab250b363b3f7888) ) /* blue */
ROM_LOAD( "yncp-2d.bin", 0x0300, 0x0100, BAD_DUMP CRC(23bade78) SHA1(7e2de5eb08d888f97830807b6dbe85d09bb3b7f8) ) /* sprite lookup table */ ROM_LOAD( "yncp-2d.bin", 0x0300, 0x0100, CRC(23bade78) SHA1(7e2de5eb08d888f97830807b6dbe85d09bb3b7f8) ) /* sprite lookup table */
ROM_REGION( 0x0100, "user1", 0 ) ROM_REGION( 0x0100, "user1", 0 )
ROM_LOAD( "yncp-7f.bin", 0x0000, 0x0100, BAD_DUMP CRC(262d0809) SHA1(a67281af02cef082023c0d7d57e3824aeef67450) ) /* sprite palette bank */ ROM_LOAD( "yncp-7f.bin", 0x0000, 0x0100, CRC(262d0809) SHA1(a67281af02cef082023c0d7d57e3824aeef67450) ) /* sprite palette bank */
ROM_END ROM_END
ROM_START( youma ) ROM_START( youma )

View File

@ -108,14 +108,14 @@ void academy_state::main_map(address_map &map)
static INPUT_PORTS_START( academy ) static INPUT_PORTS_START( academy )
PORT_START("KEY") PORT_START("KEY")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("TRAIN") PORT_CODE(KEYCODE_T) 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(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(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(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(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(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(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // " PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // "
INPUT_PORTS_END INPUT_PORTS_END
@ -129,7 +129,7 @@ void academy_state::academy(machine_config &config)
M65C02(config, m_maincpu, 4.9152_MHz_XTAL); M65C02(config, m_maincpu, 4.9152_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &academy_state::main_map); m_maincpu->set_addrmap(AS_PROGRAM, &academy_state::main_map);
const attotime nmi_period = attotime::from_hz(4.9152_MHz_XTAL / (1 << 13)); const attotime nmi_period = attotime::from_hz(4.9152_MHz_XTAL / 0x2000);
m_maincpu->set_periodic_int(FUNC(academy_state::nmi_line_pulse), nmi_period); m_maincpu->set_periodic_int(FUNC(academy_state::nmi_line_pulse), nmi_period);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);

View File

@ -1,5 +1,5 @@
// license:BSD-3-Clause // license:BSD-3-Clause
// copyright-holders:Sandro Ronco // copyright-holders:Sandro Ronco, hap
/****************************************************************************** /******************************************************************************
Mephisto Berlin 68000 / Berlin Professional 68020 Mephisto Berlin 68000 / Berlin Professional 68020
@ -41,16 +41,16 @@ public:
void berlinp(machine_config &config); void berlinp(machine_config &config);
private: private:
u8 input_r(); required_device<cpu_device> m_maincpu;
required_device<mephisto_board_device> m_board;
required_device<mephisto_display2_device> m_display;
required_ioport m_keys;
void berlin_mem(address_map &map); void berlin_mem(address_map &map);
void berlinp_mem(address_map &map); void berlinp_mem(address_map &map);
void nvram_map(address_map &map); void nvram_map(address_map &map);
required_device<cpu_device> m_maincpu; u8 input_r();
required_device<mephisto_board_device> m_board;
required_device<mephisto_display_module2_device> m_display;
required_ioport m_keys;
}; };
@ -85,8 +85,8 @@ void berlin_state::berlin_mem(address_map &map)
map(0x900000, 0x903fff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask16(0xff00); map(0x900000, 0x903fff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask16(0xff00);
map(0xa00000, 0xa00000).r(FUNC(berlin_state::input_r)); map(0xa00000, 0xa00000).r(FUNC(berlin_state::input_r));
map(0xb00000, 0xb00000).w(m_board, FUNC(mephisto_board_device::mux_w)); map(0xb00000, 0xb00000).w(m_board, FUNC(mephisto_board_device::mux_w));
map(0xc00000, 0xc00000).w(m_display, FUNC(mephisto_display_module2_device::latch_w)); map(0xc00000, 0xc00000).w(m_display, FUNC(mephisto_display2_device::latch_w));
map(0xd00008, 0xd00008).w(m_display, FUNC(mephisto_display_module2_device::io_w)); map(0xd00008, 0xd00008).w(m_display, FUNC(mephisto_display2_device::io_w));
map(0xe00000, 0xe00000).w(m_board, FUNC(mephisto_board_device::led_w)); map(0xe00000, 0xe00000).w(m_board, FUNC(mephisto_board_device::led_w));
} }
@ -97,8 +97,8 @@ void berlin_state::berlinp_mem(address_map &map)
map(0x800000, 0x800000).r(FUNC(berlin_state::input_r)); map(0x800000, 0x800000).r(FUNC(berlin_state::input_r));
map(0x900000, 0x900000).w(m_board, FUNC(mephisto_board_device::mux_w)); map(0x900000, 0x900000).w(m_board, FUNC(mephisto_board_device::mux_w));
map(0xa00000, 0xa00000).w(m_board, FUNC(mephisto_board_device::led_w)); map(0xa00000, 0xa00000).w(m_board, FUNC(mephisto_board_device::led_w));
map(0xb00000, 0xb00000).w(m_display, FUNC(mephisto_display_module2_device::io_w)); map(0xb00000, 0xb00000).w(m_display, FUNC(mephisto_display2_device::io_w));
map(0xc00000, 0xc00000).w(m_display, FUNC(mephisto_display_module2_device::latch_w)); map(0xc00000, 0xc00000).w(m_display, FUNC(mephisto_display2_device::latch_w));
map(0xd00000, 0xd07fff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask32(0xff000000); map(0xd00000, 0xd07fff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask32(0xff000000);
} }

View File

@ -69,12 +69,15 @@ is completely different, based on a 68000.
******************************************************************************/ ******************************************************************************/
#include "emu.h" #include "emu.h"
#include "cpu/cosmac/cosmac.h" #include "cpu/cosmac/cosmac.h"
#include "machine/cdp1852.h" #include "machine/cdp1852.h"
#include "machine/sensorboard.h" #include "machine/sensorboard.h"
#include "machine/timer.h" #include "machine/timer.h"
#include "sound/dac.h" #include "sound/dac.h"
#include "video/mmdisplay1.h"
#include "video/pwm.h" #include "video/pwm.h"
#include "speaker.h" #include "speaker.h"
// internal artwork // internal artwork
@ -95,6 +98,7 @@ public:
m_extport(*this, "extport"), m_extport(*this, "extport"),
m_board(*this, "board"), m_board(*this, "board"),
m_display(*this, "display"), m_display(*this, "display"),
m_led_pwm(*this, "led_pwm"),
m_dac(*this, "dac"), m_dac(*this, "dac"),
m_speaker_off(*this, "speaker_off"), m_speaker_off(*this, "speaker_off"),
m_inputs(*this, "IN.%u", 0) m_inputs(*this, "IN.%u", 0)
@ -119,7 +123,8 @@ private:
required_device<cdp1802_device> m_maincpu; required_device<cdp1802_device> m_maincpu;
optional_device<cdp1852_device> m_extport; optional_device<cdp1852_device> m_extport;
optional_device<sensorboard_device> m_board; optional_device<sensorboard_device> m_board;
required_device<pwm_display_device> m_display; required_device<mephisto_display1_device> m_display;
optional_device<pwm_display_device> m_led_pwm;
required_device<dac_bit_interface> m_dac; required_device<dac_bit_interface> m_dac;
required_device<timer_device> m_speaker_off; required_device<timer_device> m_speaker_off;
optional_ioport_array<4+2> m_inputs; optional_ioport_array<4+2> m_inputs;
@ -138,8 +143,6 @@ private:
// I/O handlers // I/O handlers
INTERRUPT_GEN_MEMBER(interrupt); INTERRUPT_GEN_MEMBER(interrupt);
DECLARE_READ_LINE_MEMBER(clear_r); DECLARE_READ_LINE_MEMBER(clear_r);
DECLARE_WRITE_LINE_MEMBER(q_w);
void lcd_w(u8 data);
u8 input_r(offs_t offset); u8 input_r(offs_t offset);
u8 sound_r(); u8 sound_r();
@ -148,34 +151,16 @@ private:
TIMER_DEVICE_CALLBACK_MEMBER(speaker_off) { m_dac->write(0); } TIMER_DEVICE_CALLBACK_MEMBER(speaker_off) { m_dac->write(0); }
bool m_reset; bool m_reset = false;
u8 m_lcd_mask; u8 m_esb_led = 0;
u8 m_digit_idx; u8 m_esb_row = 0;
u8 m_digit_data[4]; u8 m_esb_select = 0;
u8 m_esb_led;
u8 m_esb_row;
u8 m_esb_select;
}; };
void brikett_state::machine_start() void brikett_state::machine_start()
{ {
// zerofill
m_reset = false;
m_lcd_mask = 0;
m_digit_idx = 0;
memset(m_digit_data, 0, sizeof(m_digit_data));
m_esb_led = 0;
m_esb_row = 0;
m_esb_select = 0;
// register for savestates // register for savestates
save_item(NAME(m_reset)); save_item(NAME(m_reset));
save_item(NAME(m_lcd_mask));
save_item(NAME(m_digit_idx));
save_item(NAME(m_digit_data));
save_item(NAME(m_esb_led)); save_item(NAME(m_esb_led));
save_item(NAME(m_esb_row)); save_item(NAME(m_esb_row));
save_item(NAME(m_esb_select)); save_item(NAME(m_esb_select));
@ -184,8 +169,6 @@ void brikett_state::machine_start()
void brikett_state::machine_reset() void brikett_state::machine_reset()
{ {
m_reset = true; m_reset = true;
m_digit_idx = 0;
set_cpu_freq(); set_cpu_freq();
} }
@ -222,28 +205,6 @@ READ_LINE_MEMBER(brikett_state::clear_r)
return ret; return ret;
} }
WRITE_LINE_MEMBER(brikett_state::q_w)
{
// Q: LCD digit data mask
// also assume LCD update on rising edge
if (state && !m_lcd_mask)
{
for (int i = 0; i < 4; i++)
m_display->write_row(i, m_digit_data[i]);
m_display->update();
}
m_lcd_mask = state ? 0xff : 0;
}
void brikett_state::lcd_w(u8 data)
{
// d0-d7: write/shift LCD digit (4*CD4015)
// note: last digit "dp" is the colon in the middle
m_digit_data[m_digit_idx] = data ^ m_lcd_mask;
m_digit_idx = (m_digit_idx + 1) & 3;
}
u8 brikett_state::sound_r() u8 brikett_state::sound_r()
{ {
// port 1 read enables the speaker // port 1 read enables the speaker
@ -274,7 +235,7 @@ void brikett_state::esb_w(u8 data)
if (!m_inputs[5].read_safe(0)) if (!m_inputs[5].read_safe(0))
{ {
// chessboard disabled // chessboard disabled
m_display->matrix_partial(4, 8, 0, 0); m_led_pwm->clear();
return; return;
} }
@ -296,7 +257,7 @@ void brikett_state::esb_w(u8 data)
m_esb_row = data; m_esb_row = data;
// update chessboard leds // update chessboard leds
m_display->matrix_partial(4, 8, ~m_esb_row, m_esb_led); m_led_pwm->matrix(~m_esb_row, m_esb_led);
} }
READ_LINE_MEMBER(brikett_state::esb_r) READ_LINE_MEMBER(brikett_state::esb_r)
@ -318,7 +279,7 @@ void brikett_state::mephisto_map(address_map &map)
{ {
map(0x0000, 0x17ff).rom(); map(0x0000, 0x17ff).rom();
map(0xf400, 0xf7ff).ram(); map(0xf400, 0xf7ff).ram();
map(0xfb00, 0xfb00).mirror(0x00ff).w(FUNC(brikett_state::lcd_w)); map(0xfb00, 0xfb00).mirror(0x00ff).w(m_display, FUNC(mephisto_display1_device::data_w));
map(0xfff0, 0xffff).r(FUNC(brikett_state::input_r)); map(0xfff0, 0xffff).r(FUNC(brikett_state::input_r));
} }
@ -459,14 +420,13 @@ void brikett_state::mephistoj(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &brikett_state::mephistoj_map); m_maincpu->set_addrmap(AS_PROGRAM, &brikett_state::mephistoj_map);
m_maincpu->set_addrmap(AS_IO, &brikett_state::mephistoj_io); m_maincpu->set_addrmap(AS_IO, &brikett_state::mephistoj_io);
m_maincpu->clear_cb().set(FUNC(brikett_state::clear_r)); m_maincpu->clear_cb().set(FUNC(brikett_state::clear_r));
m_maincpu->q_cb().set(FUNC(brikett_state::q_w)).invert(); m_maincpu->q_cb().set(m_display, FUNC(mephisto_display1_device::strobe_w)).invert();
const attotime irq_period = attotime::from_hz(4.194304_MHz_XTAL / 0x10000); // through SAJ300T const attotime irq_period = attotime::from_hz(4.194304_MHz_XTAL / 0x10000); // through SAJ300T
m_maincpu->set_periodic_int(FUNC(brikett_state::interrupt), irq_period); m_maincpu->set_periodic_int(FUNC(brikett_state::interrupt), irq_period);
/* video hardware */ /* video hardware */
PWM_DISPLAY(config, m_display).set_size(4, 8); MEPHISTO_DISPLAY_MODULE1(config, m_display); // internal
m_display->set_segmask(0xf, 0x7f);
config.set_default_layout(layout_mephisto_junior); config.set_default_layout(layout_mephisto_junior);
/* sound hardware */ /* sound hardware */
@ -519,7 +479,7 @@ void brikett_state::mephisto2e(machine_config &config)
m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));
m_board->set_delay(attotime::from_msec(250)); m_board->set_delay(attotime::from_msec(250));
m_display->set_size(4+8, 8); PWM_DISPLAY(config, m_led_pwm).set_size(8, 8);
config.set_default_layout(layout_mephisto_esb2); config.set_default_layout(layout_mephisto_esb2);
} }
@ -530,7 +490,7 @@ void brikett_state::mephisto3(machine_config &config)
/* basic machine hardware */ /* basic machine hardware */
m_maincpu->set_clock(6.144_MHz_XTAL); m_maincpu->set_clock(6.144_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &brikett_state::mephisto3_map); m_maincpu->set_addrmap(AS_PROGRAM, &brikett_state::mephisto3_map);
m_maincpu->q_cb().set(FUNC(brikett_state::q_w)); m_maincpu->q_cb().set(m_display, FUNC(mephisto_display1_device::strobe_w));
config.set_default_layout(layout_mephisto_3); config.set_default_layout(layout_mephisto_3);
} }

View File

@ -1,6 +1,7 @@
// license:BSD-3-Clause // license:BSD-3-Clause
// copyright-holders:Dirk Verwiebe, Cowering // copyright-holders:Dirk Verwiebe, Cowering
/*************************************************************************** /***************************************************************************
Mephisto Glasgow 3 S chess computer Mephisto Glasgow 3 S chess computer
Dirk V. Dirk V.
sp_rinter@gmx.de sp_rinter@gmx.de
@ -35,7 +36,8 @@ How to play (quick guide)
TODO: TODO:
- add waitstates(applies to glasgow, amsterd, others?), CPU is 12MHz but with DTACK - add waitstates(applies to glasgow, amsterd, others?), CPU is 12MHz but with DTACK
waitstates for slow EPROMs, effective speed is less than 10MHz waitstates for slow EPROMs, effective speed is less than 10MHz
- LCD module is 8.8.:8.8 like mephisto_brikett/mm1 (so, add ":" in the middle) - use mmdisplay1 device
- split driver (glasgow/amsterdam)
***************************************************************************/ ***************************************************************************/
@ -90,7 +92,6 @@ protected:
u8 m_key_select; u8 m_key_select;
}; };
class amsterd_state : public glasgow_state class amsterd_state : public glasgow_state
{ {
public: public:
@ -121,7 +122,7 @@ void glasgow_state::glasgow_lcd_w(u8 data)
if (m_led7 == 0) if (m_led7 == 0)
m_digits[m_lcd_shift_counter] = data; m_digits[m_lcd_shift_counter] = data;
m_lcd_shift_counter--; m_lcd_shift_counter++;
m_lcd_shift_counter &= 3; m_lcd_shift_counter &= 3;
} }
@ -161,7 +162,7 @@ void amsterd_state::write_lcd(u8 data)
if (m_lcd_shift_counter & 4) if (m_lcd_shift_counter & 4)
m_digits[m_lcd_shift_counter & 3] = data; m_digits[m_lcd_shift_counter & 3] = data;
m_lcd_shift_counter--; m_lcd_shift_counter++;
m_lcd_shift_counter &= 7; m_lcd_shift_counter &= 7;
} }
@ -200,10 +201,9 @@ void glasgow_state::machine_start()
save_item(NAME(m_key_select)); save_item(NAME(m_key_select));
} }
void glasgow_state::machine_reset() void glasgow_state::machine_reset()
{ {
m_lcd_shift_counter = 3; m_lcd_shift_counter = 0;
m_key_select = 0; m_key_select = 0;
m_led7 = 0; m_led7 = 0;
} }
@ -230,8 +230,8 @@ void amsterd_state::amsterd_mem(address_map &map)
{ {
map(0x000000, 0x00ffff).rom(); map(0x000000, 0x00ffff).rom();
map(0x800002, 0x800002).w(FUNC(amsterd_state::write_lcd)); map(0x800002, 0x800002).w(FUNC(amsterd_state::write_lcd));
map(0x800008, 0x800008).w(FUNC(amsterd_state::write_lcd_flag));
map(0x800004, 0x800004).w(FUNC(amsterd_state::write_beeper)); map(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(0x800010, 0x800010).w(FUNC(amsterd_state::write_board));
map(0x800020, 0x800020).r("board", FUNC(mephisto_board_device::input_r)); map(0x800020, 0x800020).r("board", FUNC(mephisto_board_device::input_r));
map(0x800040, 0x800040).r(FUNC(amsterd_state::read_newkeys)); map(0x800040, 0x800040).r(FUNC(amsterd_state::read_newkeys));

View File

@ -50,7 +50,7 @@ protected:
private: private:
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<sensorboard_device> m_board; required_device<sensorboard_device> m_board;
required_device<mephisto_display_module2_device> m_display; required_device<mephisto_display2_device> m_display;
required_device<pwm_display_device> m_led_pwm; required_device<pwm_display_device> m_led_pwm;
required_ioport m_keys; required_ioport m_keys;
@ -125,7 +125,7 @@ u8 milano_state::keys_r(offs_t offset)
void milano_state::milano_mem(address_map &map) void milano_state::milano_mem(address_map &map)
{ {
map(0x0000, 0x1fbf).ram().share("nvram"); map(0x0000, 0x1fbf).ram().share("nvram");
map(0x1fc0, 0x1fc0).w(m_display, FUNC(mephisto_display_module2_device::latch_w)); map(0x1fc0, 0x1fc0).w(m_display, FUNC(mephisto_display2_device::latch_w));
map(0x1fd0, 0x1fd0).w(FUNC(milano_state::board_w)); map(0x1fd0, 0x1fd0).w(FUNC(milano_state::board_w));
map(0x1fe0, 0x1fe0).r(FUNC(milano_state::board_r)); map(0x1fe0, 0x1fe0).r(FUNC(milano_state::board_r));
map(0x1fe8, 0x1fef).w("outlatch", FUNC(hc259_device::write_d7)).nopr(); map(0x1fe8, 0x1fef).w("outlatch", FUNC(hc259_device::write_d7)).nopr();
@ -142,14 +142,14 @@ void milano_state::milano_mem(address_map &map)
static INPUT_PORTS_START( milano ) static INPUT_PORTS_START( milano )
PORT_START("KEY") PORT_START("KEY")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Training / Pawn") PORT_CODE(KEYCODE_T) PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Training / Pawn") PORT_CODE(KEYCODE_T)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Info / Knight") PORT_CODE(KEYCODE_I) PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Info / Knight") PORT_CODE(KEYCODE_I)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Memory / Bishop") PORT_CODE(KEYCODE_M) PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Memory / Bishop") PORT_CODE(KEYCODE_M)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Position / Rook") PORT_CODE(KEYCODE_O) PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Position / Rook") PORT_CODE(KEYCODE_O)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Level / Queen") PORT_CODE(KEYCODE_L) PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Level / Queen") PORT_CODE(KEYCODE_L)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Function / King") PORT_CODE(KEYCODE_F) PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Function / King") PORT_CODE(KEYCODE_F)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Enter / New Game") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Enter / New Game") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Clear / New Game") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // " PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Clear / New Game") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // "
INPUT_PORTS_END INPUT_PORTS_END
@ -163,7 +163,9 @@ void milano_state::milano(machine_config &config)
/* basic machine hardware */ /* basic machine hardware */
R65C02(config, m_maincpu, 4.9152_MHz_XTAL); R65C02(config, m_maincpu, 4.9152_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &milano_state::milano_mem); m_maincpu->set_addrmap(AS_PROGRAM, &milano_state::milano_mem);
m_maincpu->set_periodic_int(FUNC(milano_state::nmi_line_pulse), attotime::from_hz(4.9152_MHz_XTAL / (1 << 13)));
const attotime nmi_period = attotime::from_hz(4.9152_MHz_XTAL / 0x2000);
m_maincpu->set_periodic_int(FUNC(milano_state::nmi_line_pulse), nmi_period);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);

View File

@ -16,7 +16,9 @@ Hardware notes:
- 32KB ROM (2*D27128, or HN613256P) - 32KB ROM (2*D27128, or HN613256P)
- 4KB RAM (2*HM6116LP-3) - 4KB RAM (2*HM6116LP-3)
- CDP1853CE, CD4011BE, 3*40373BP, 4556BE - CDP1853CE, CD4011BE, 3*40373BP, 4556BE
- modular slot, 18-button keypad, beeper - Mephisto modular display module
- Mephisto modular chessboard
- 18-button keypad, beeper
It supports the HG 170 opening book module. It supports the HG 170 opening book module.
LCD module is assumed to be same as MM II and others. LCD module is assumed to be same as MM II and others.
@ -38,12 +40,12 @@ TODO:
#include "emu.h" #include "emu.h"
#include "cpu/cosmac/cosmac.h"
#include "machine/sensorboard.h"
#include "sound/dac.h"
#include "video/pwm.h"
#include "bus/generic/slot.h" #include "bus/generic/slot.h"
#include "bus/generic/carts.h" #include "bus/generic/carts.h"
#include "cpu/cosmac/cosmac.h"
#include "machine/mmboard.h"
#include "sound/dac.h"
#include "video/mmdisplay1.h"
#include "softlist.h" #include "softlist.h"
#include "speaker.h" #include "speaker.h"
@ -62,7 +64,6 @@ public:
driver_device(mconfig, type, tag), driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_board(*this, "board"), m_board(*this, "board"),
m_display(*this, "display"),
m_dac(*this, "dac"), m_dac(*this, "dac"),
m_inputs(*this, "IN.%u", 0) m_inputs(*this, "IN.%u", 0)
{ } { }
@ -80,8 +81,7 @@ protected:
private: private:
// devices/pointers // devices/pointers
required_device<cdp1806_device> m_maincpu; required_device<cdp1806_device> m_maincpu;
required_device<sensorboard_device> m_board; required_device<mephisto_board_device> m_board;
required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac; required_device<dac_bit_interface> m_dac;
required_ioport_array<8> m_inputs; required_ioport_array<8> m_inputs;
@ -94,53 +94,25 @@ private:
INTERRUPT_GEN_MEMBER(interrupt); INTERRUPT_GEN_MEMBER(interrupt);
void update_display(); void update_display();
DECLARE_READ_LINE_MEMBER(clear_r); DECLARE_READ_LINE_MEMBER(clear_r);
DECLARE_WRITE_LINE_MEMBER(q_w);
void sound_w(u8 data); void sound_w(u8 data);
void unknown_w(u8 data); void unknown_w(u8 data);
void lcd_w(u8 data);
void board_w(u8 data);
void led_w(u8 data);
void keypad_w(u8 data); void keypad_w(u8 data);
u8 board_r();
template<int P> DECLARE_READ_LINE_MEMBER(keypad_r); template<int P> DECLARE_READ_LINE_MEMBER(keypad_r);
bool m_reset; bool m_reset = false;
u8 m_lcd_mask; u8 m_kp_mux = 0;
u8 m_digit_idx;
u8 m_digit_data[4];
u8 m_kp_mux;
u8 m_cb_mux;
u8 m_led_data;
}; };
void mm1_state::machine_start() void mm1_state::machine_start()
{ {
// zerofill
m_reset = false;
m_lcd_mask = 0;
m_digit_idx = 0;
memset(m_digit_data, 0, sizeof(m_digit_data));
m_kp_mux = 0;
m_cb_mux = 0;
m_led_data = 0;
// register for savestates // register for savestates
save_item(NAME(m_reset)); save_item(NAME(m_reset));
save_item(NAME(m_lcd_mask));
save_item(NAME(m_digit_idx));
save_item(NAME(m_digit_data));
save_item(NAME(m_kp_mux)); save_item(NAME(m_kp_mux));
save_item(NAME(m_cb_mux));
save_item(NAME(m_led_data));
} }
void mm1_state::machine_reset() void mm1_state::machine_reset()
{ {
m_reset = true; m_reset = true;
m_digit_idx = 0;
} }
@ -162,28 +134,6 @@ READ_LINE_MEMBER(mm1_state::clear_r)
return ret; return ret;
} }
WRITE_LINE_MEMBER(mm1_state::q_w)
{
// Q: LCD digit data mask
// also assume LCD update on rising edge
if (state && !m_lcd_mask)
{
for (int i = 0; i < 4; i++)
m_display->write_row(i, m_digit_data[i]);
m_display->update();
}
m_lcd_mask = state ? 0xff : 0;
}
void mm1_state::lcd_w(u8 data)
{
// d0-d7: write/shift LCD digit (4*CD4015)
// note: last digit "dp" is the colon in the middle
m_digit_data[m_digit_idx] = data ^ m_lcd_mask;
m_digit_idx = (m_digit_idx + 1) & 3;
}
void mm1_state::sound_w(u8 data) void mm1_state::sound_w(u8 data)
{ {
// d0: speaker out // d0: speaker out
@ -195,38 +145,6 @@ void mm1_state::unknown_w(u8 data)
// mmirage: unused serial device? // mmirage: unused serial device?
} }
void mm1_state::update_display()
{
// 64 chessboard leds
m_display->matrix_partial(4, 8, m_cb_mux, m_led_data);
}
void mm1_state::led_w(u8 data)
{
// d0-d7: chessboard led data
m_led_data = data;
update_display();
}
void mm1_state::board_w(u8 data)
{
// d0-d7: chessboard input/led mux
m_cb_mux = ~data;
update_display();
}
u8 mm1_state::board_r()
{
u8 data = 0;
// d0-d7: multiplexed inputs (chessboard)
for (int i = 0; i < 8; i++)
if (BIT(m_cb_mux, i))
data |= m_board->read_rank(i);
return ~data;
}
void mm1_state::keypad_w(u8 data) void mm1_state::keypad_w(u8 data)
{ {
// d0-d7: keypad input mux // d0-d7: keypad input mux
@ -269,10 +187,10 @@ void mm1_state::mm1_io(address_map &map)
{ {
map(0x01, 0x01).w(FUNC(mm1_state::sound_w)); map(0x01, 0x01).w(FUNC(mm1_state::sound_w));
map(0x02, 0x02).w(FUNC(mm1_state::keypad_w)); map(0x02, 0x02).w(FUNC(mm1_state::keypad_w));
map(0x03, 0x03).r(FUNC(mm1_state::board_r)); map(0x03, 0x03).r(m_board, FUNC(mephisto_board_device::input_r));
map(0x04, 0x04).w(FUNC(mm1_state::board_w)); map(0x04, 0x04).w(m_board, FUNC(mephisto_board_device::mux_w));
map(0x05, 0x05).w(FUNC(mm1_state::led_w)); map(0x05, 0x05).w(m_board, FUNC(mephisto_board_device::led_w));
map(0x06, 0x06).w(FUNC(mm1_state::lcd_w)); map(0x06, 0x06).w("display", FUNC(mephisto_display1_device::data_w));
map(0x07, 0x07).w(FUNC(mm1_state::unknown_w)); map(0x07, 0x07).w(FUNC(mm1_state::unknown_w));
} }
@ -357,7 +275,7 @@ INPUT_PORTS_END
INPUT_CHANGED_MEMBER(mm1_state::mirage_switch_sensor_type) INPUT_CHANGED_MEMBER(mm1_state::mirage_switch_sensor_type)
{ {
m_board->set_type(newval ? sensorboard_device::MAGNETS : sensorboard_device::BUTTONS); m_board->get()->set_type(newval ? sensorboard_device::MAGNETS : sensorboard_device::BUTTONS);
} }
@ -373,7 +291,7 @@ void mm1_state::mirage(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &mm1_state::mirage_map); m_maincpu->set_addrmap(AS_PROGRAM, &mm1_state::mirage_map);
m_maincpu->set_addrmap(AS_IO, &mm1_state::mm1_io); m_maincpu->set_addrmap(AS_IO, &mm1_state::mm1_io);
m_maincpu->clear_cb().set(FUNC(mm1_state::clear_r)); m_maincpu->clear_cb().set(FUNC(mm1_state::clear_r));
m_maincpu->q_cb().set(FUNC(mm1_state::q_w)).invert(); m_maincpu->q_cb().set("display", FUNC(mephisto_display1_device::strobe_w)).invert();
m_maincpu->ef3_cb().set(FUNC(mm1_state::keypad_r<0>)); m_maincpu->ef3_cb().set(FUNC(mm1_state::keypad_r<0>));
m_maincpu->ef4_cb().set(FUNC(mm1_state::keypad_r<1>)); m_maincpu->ef4_cb().set(FUNC(mm1_state::keypad_r<1>));
@ -381,13 +299,11 @@ void mm1_state::mirage(machine_config &config)
const attotime irq_period = attotime::from_ticks(8 * 32 * 0x71, 8_MHz_XTAL); // LDC = 0x71 const attotime irq_period = attotime::from_ticks(8 * 32 * 0x71, 8_MHz_XTAL); // LDC = 0x71
m_maincpu->set_periodic_int(FUNC(mm1_state::interrupt), irq_period); m_maincpu->set_periodic_int(FUNC(mm1_state::interrupt), irq_period);
SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS); MEPHISTO_BUTTONS_BOARD(config, m_board); // see mirage_switch_sensor_type
m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));
m_board->set_delay(attotime::from_msec(200)); m_board->set_delay(attotime::from_msec(200));
/* video hardware */ /* video hardware */
PWM_DISPLAY(config, m_display).set_size(4+8, 8); MEPHISTO_DISPLAY_MODULE1(config, "display");
m_display->set_segmask(0xf, 0x7f);
config.set_default_layout(layout_mephisto_mirage); config.set_default_layout(layout_mephisto_mirage);
/* sound hardware */ /* sound hardware */
@ -401,13 +317,14 @@ void mm1_state::mm1(machine_config &config)
/* basic machine hardware */ /* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &mm1_state::mm1_map); m_maincpu->set_addrmap(AS_PROGRAM, &mm1_state::mm1_map);
m_maincpu->q_cb().set(FUNC(mm1_state::q_w)); m_maincpu->q_cb().set("display", FUNC(mephisto_display1_device::strobe_w));
// wrong! uses internal timer interrupt // wrong! uses internal timer interrupt
const attotime irq_period = attotime::from_ticks(8 * 32 * 0xfa, 8_MHz_XTAL); // LDC = 0xFA const attotime irq_period = attotime::from_ticks(8 * 32 * 0xfa, 8_MHz_XTAL); // LDC = 0xFA
m_maincpu->set_periodic_int(FUNC(mm1_state::interrupt), irq_period); m_maincpu->set_periodic_int(FUNC(mm1_state::interrupt), irq_period);
m_board->set_type(sensorboard_device::MAGNETS); MEPHISTO_SENSORS_BOARD(config.replace(), m_board);
m_board->set_delay(attotime::from_msec(200));
config.set_default_layout(layout_mephisto_mm1); config.set_default_layout(layout_mephisto_mm1);

View File

@ -1,16 +1,17 @@
// license:BSD-3-Clause // license:BSD-3-Clause
// copyright-holders:Dirk Verwiebe, Cowering // copyright-holders:Dirk Verwiebe, Cowering, hap
/****************************************************************************** /******************************************************************************
Mephisto 4 + 5 Chess Computer
2007 Dirk V.
CPU 65C02 P4 (also seen: R65C02P3, G65SC02P-4) Mephisto 4 + 5 Chess Computer
Clock 4.9152 MHz 2007 Dirk V.
NMI CLK 600 Hz
CPU: G65SC02P-4 or R65C02P3
Clock: 4.9152 MHz
NMI CLK: 600 Hz
IRQ Line is set to VSS IRQ Line is set to VSS
8 KByte SRAM Sony CXK5864-15l 8 KByte SRAM Sony CXK5864-15L
1-CD74HC4060E 14 Bit Counter 1-CD74HC4060E: 14 Bit Counter
1-CD74HC166E 1-CD74HC166E
1-CD74HC251E 1-CD74HC251E
1-SN74HC138N TI 1-SN74HC138N TI
@ -25,7 +26,7 @@ PCB label HGS 10 122 01
1-CD4011 1-CD4011
4-CD4015 4-CD4015
$0000-$1fff S-RAM $0000-$1fff S-RAM
$2000 LCD 4 Byte Shift Register writeonly right to left $2000 LCD 4 Byte Shift Register writeonly right to left
every 2nd char xor'd by $FF every 2nd char xor'd by $FF
@ -73,19 +74,18 @@ MM VI (Saitek, 1994) is on different hardware, H8 CPU.
TODO: TODO:
- need to emulate TurboKit properly, also for mm5p (it's not as simple as a CPU - need to emulate TurboKit properly, also for mm5p (it's not as simple as a CPU
overclock plus ROM patch) overclock plus ROM patch)
- LCD module is 8.8.:8.8 like mephisto_brikett/mm1 (so, add ":" in the middle)
******************************************************************************/ ******************************************************************************/
#include "emu.h" #include "emu.h"
#include "cpu/m6502/m65c02.h"
#include "machine/74259.h"
#include "machine/mmboard.h"
#include "machine/timer.h"
#include "sound/dac.h"
#include "bus/generic/slot.h" #include "bus/generic/slot.h"
#include "bus/generic/carts.h" #include "bus/generic/carts.h"
#include "cpu/m6502/m65sc02.h"
#include "machine/74259.h"
#include "machine/mmboard.h"
#include "sound/dac.h"
#include "video/mmdisplay1.h"
#include "softlist.h" #include "softlist.h"
#include "speaker.h" #include "speaker.h"
@ -104,10 +104,9 @@ public:
: driver_device(mconfig, type, tag) : driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu") , m_maincpu(*this, "maincpu")
, m_outlatch(*this, "outlatch") , m_outlatch(*this, "outlatch")
, m_display(*this, "display")
, m_dac(*this, "dac") , m_dac(*this, "dac")
, m_key1(*this, "KEY1_%u", 0U) , m_keys(*this, "KEY.%u", 0)
, m_key2(*this, "KEY2_%u", 0U)
, m_digits(*this, "digit%u", 0U)
{ } { }
DECLARE_INPUT_CHANGED_MEMBER(reset_button); DECLARE_INPUT_CHANGED_MEMBER(reset_button);
@ -120,47 +119,45 @@ public:
void mm2(machine_config &config); void mm2(machine_config &config);
void bup(machine_config &config); void bup(machine_config &config);
private: protected:
required_device<m65c02_device> m_maincpu;
required_device<hc259_device> m_outlatch;
required_device<dac_bit_interface> m_dac;
required_ioport_array<8> m_key1;
required_ioport_array<8> m_key2;
output_finder<4> m_digits;
void write_lcd(u8 data);
void mephisto_nmi_w(u8 data);
u8 read_keys(offs_t offset);
DECLARE_WRITE_LINE_MEMBER(write_led7);
u8 m_lcd_shift_counter;
u8 m_led7;
u8 m_allowNMI;
virtual void machine_start() override; virtual void machine_start() override;
virtual void machine_reset() override; virtual void machine_reset() override;
TIMER_DEVICE_CALLBACK_MEMBER(update_nmi);
TIMER_DEVICE_CALLBACK_MEMBER(update_nmi_r5); private:
required_device<cpu_device> m_maincpu;
required_device<hc259_device> m_outlatch;
required_device<mephisto_display1_device> m_display;
required_device<dac_bit_interface> m_dac;
required_ioport_array<2> m_keys;
void bup_mem(address_map &map); void bup_mem(address_map &map);
void mm2_mem(address_map &map); void mm2_mem(address_map &map);
void mm4_mem(address_map &map); void mm4_mem(address_map &map);
void mm5p_mem(address_map &map); void mm5p_mem(address_map &map);
void rebel5_mem(address_map &map); void rebel5_mem(address_map &map);
void lcd_irqack_w(u8 data);
u8 keys_r(offs_t offset);
}; };
void mm2_state::machine_start() void mm2_state::machine_start()
{ {
m_digits.resolve();
save_item(NAME(m_lcd_shift_counter));
save_item(NAME(m_led7));
save_item(NAME(m_allowNMI));
} }
void mm2_state::machine_reset() void mm2_state::machine_reset()
{ {
m_lcd_shift_counter = 3; m_display->reset();
m_allowNMI = 1; m_maincpu->set_input_line(0, CLEAR_LINE);
m_led7 = 0xff; }
INPUT_CHANGED_MEMBER(mm2_state::reset_button)
{
// RES buttons in serial tied to CPU RESET
if (ioport("RESET")->read() == 3)
{
m_maincpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
machine_reset();
}
} }
@ -169,55 +166,17 @@ void mm2_state::machine_reset()
I/O I/O
******************************************************************************/ ******************************************************************************/
TIMER_DEVICE_CALLBACK_MEMBER(mm2_state::update_nmi) void mm2_state::lcd_irqack_w(u8 data)
{ {
if (m_allowNMI) m_display->data_w(data);
{
m_allowNMI = 0;
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
}
TIMER_DEVICE_CALLBACK_MEMBER(mm2_state::update_nmi_r5)
{
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
void mm2_state::write_lcd(u8 data)
{
if (m_led7 == 0)
m_digits[m_lcd_shift_counter] = data; // 0x109 MM IV // 0x040 MM V
m_lcd_shift_counter--;
m_lcd_shift_counter &= 3;
// writing to 0x2800 also clears irq
m_maincpu->set_input_line(0, CLEAR_LINE); m_maincpu->set_input_line(0, CLEAR_LINE);
} }
void mm2_state::mephisto_nmi_w(u8 data) u8 mm2_state::keys_r(offs_t offset)
{ {
m_allowNMI = 1; return ~(BIT(m_keys[m_outlatch->q7_r()]->read(), offset) << 7);
}
u8 mm2_state::read_keys(offs_t offset)
{
u8 data = 0;
if (!m_outlatch->q7_r())
{
data = m_key1[offset]->read();
}
else
{
data = m_key2[offset]->read();
}
return data | 0x7f;
}
WRITE_LINE_MEMBER(mm2_state::write_led7)
{
m_led7 = state ? 0x00 : 0xff;
} }
@ -230,9 +189,9 @@ void mm2_state::bup_mem(address_map &map)
{ {
map(0x0000, 0x0fff).ram(); map(0x0000, 0x0fff).ram();
map(0x1000, 0x1007).w("outlatch", FUNC(hc259_device::write_d7)); map(0x1000, 0x1007).w("outlatch", FUNC(hc259_device::write_d7));
map(0x1800, 0x1807).r(FUNC(mm2_state::read_keys)); map(0x1800, 0x1807).r(FUNC(mm2_state::keys_r));
map(0x2000, 0x2000).r("board", FUNC(mephisto_board_device::input_r)); map(0x2000, 0x2000).r("board", FUNC(mephisto_board_device::input_r));
map(0x2800, 0x2800).w(FUNC(mm2_state::write_lcd)); map(0x2800, 0x2800).w(FUNC(mm2_state::lcd_irqack_w));
map(0x3000, 0x3000).w("board", FUNC(mephisto_board_device::led_w)); map(0x3000, 0x3000).w("board", FUNC(mephisto_board_device::led_w));
map(0x3800, 0x3800).w("board", FUNC(mephisto_board_device::mux_w)); map(0x3800, 0x3800).w("board", FUNC(mephisto_board_device::mux_w));
map(0x8000, 0xffff).rom(); map(0x8000, 0xffff).rom();
@ -249,8 +208,8 @@ void mm2_state::rebel5_mem(address_map &map)
map(0x0000, 0x1fff).ram(); map(0x0000, 0x1fff).ram();
map(0x2000, 0x2007).w("outlatch", FUNC(hc259_device::write_d7)); map(0x2000, 0x2007).w("outlatch", FUNC(hc259_device::write_d7));
map(0x3000, 0x4000).r("board", FUNC(mephisto_board_device::input_r)); map(0x3000, 0x4000).r("board", FUNC(mephisto_board_device::input_r));
map(0x3000, 0x3007).r(FUNC(mm2_state::read_keys)); map(0x3000, 0x3007).r(FUNC(mm2_state::keys_r));
map(0x5000, 0x5000).w(FUNC(mm2_state::write_lcd)); map(0x5000, 0x5000).w(m_display, FUNC(mephisto_display1_device::data_w));
map(0x6000, 0x6000).w("board", FUNC(mephisto_board_device::led_w)); map(0x6000, 0x6000).w("board", FUNC(mephisto_board_device::led_w));
map(0x7000, 0x7000).w("board", FUNC(mephisto_board_device::mux_w)); map(0x7000, 0x7000).w("board", FUNC(mephisto_board_device::mux_w));
map(0x8000, 0xffff).rom(); map(0x8000, 0xffff).rom();
@ -259,13 +218,13 @@ void mm2_state::rebel5_mem(address_map &map)
void mm2_state::mm5p_mem(address_map &map) void mm2_state::mm5p_mem(address_map &map)
{ {
map(0x0000, 0x1fff).ram(); map(0x0000, 0x1fff).ram();
map(0x2000, 0x2000).w(FUNC(mm2_state::write_lcd)); map(0x2000, 0x2000).w(m_display, FUNC(mephisto_display1_device::data_w));
map(0x2400, 0x2407).w("board", FUNC(mephisto_board_device::led_w)).nopr(); map(0x2400, 0x2407).w("board", FUNC(mephisto_board_device::led_w)).nopr();
map(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w)); map(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w));
map(0x2c00, 0x2c07).r(FUNC(mm2_state::read_keys)); map(0x2c00, 0x2c07).r(FUNC(mm2_state::keys_r));
map(0x3000, 0x3000).r("board", FUNC(mephisto_board_device::input_r)); map(0x3000, 0x3000).r("board", FUNC(mephisto_board_device::input_r));
map(0x3400, 0x3407).w("outlatch", FUNC(hc259_device::write_d7)).nopr(); map(0x3400, 0x3407).w("outlatch", FUNC(hc259_device::write_d7)).nopr();
map(0x3800, 0x3800).w(FUNC(mm2_state::mephisto_nmi_w)); map(0x3800, 0x3800).nopw(); // N/C
map(0x4000, 0xffff).rom(); map(0x4000, 0xffff).rom();
} }
@ -281,40 +240,26 @@ void mm2_state::mm4_mem(address_map &map)
Input Ports Input Ports
******************************************************************************/ ******************************************************************************/
static INPUT_PORTS_START( mephisto ) static INPUT_PORTS_START( mm2 )
PORT_START("KEY1_0") //Port $2c00 PORT_START("KEY.0")
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE)
PORT_START("KEY1_1") //Port $2c01 PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("POS") PORT_CODE(KEYCODE_O)
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("POS") PORT_CODE(KEYCODE_O) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M)
PORT_START("KEY1_2") //Port $2c02 PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I)
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M) PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L)
PORT_START("KEY1_3") //Port $2c03 PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I) PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Right / White / 0") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_RIGHT)
PORT_START("KEY1_4") //Port $2c04 PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Left / Black / 9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_LEFT)
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L)
PORT_START("KEY1_5") //Port $2c05
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
PORT_START("KEY1_6") //Port $2c06
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Right / White / 0") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_RIGHT)
PORT_START("KEY1_7") //Port $2c07
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Left / Black / 9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CODE(KEYCODE_LEFT)
PORT_START("KEY2_0") //Port $2c08 PORT_START("KEY.1")
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("E / 5 / Queen") PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E / 5 / Queen") PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
PORT_START("KEY2_1") //Port $2c09 PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F / 6 / King") PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("F / 6 / King") PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G / 7") PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD)
PORT_START("KEY2_2") //Port $2c0a PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A / 1 / Pawn") PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("G / 7") PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H / 8") PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD)
PORT_START("KEY2_3") //Port $2c0b PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B / 2 / Knight") PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("A / 1 / Pawn") PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C / 3 / Bishop") PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
PORT_START("KEY2_4") //Port $2c0c PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D / 4 / Rook") PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("H / 8") PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD)
PORT_START("KEY2_5") //Port $2c0d
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("B / 2 / Knight") PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
PORT_START("KEY2_6") //Port $2c0e
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("C / 3 / Bishop") PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
PORT_START("KEY2_7") //Port $2c0f
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("D / 4 / Rook") PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
PORT_START("RESET") PORT_START("RESET")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RES 1") PORT_CODE(KEYCODE_Z) PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, mm2_state, reset_button, 0) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RES 1") PORT_CODE(KEYCODE_Z) PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, mm2_state, reset_button, 0)
@ -322,55 +267,31 @@ static INPUT_PORTS_START( mephisto )
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( bup ) static INPUT_PORTS_START( bup )
PORT_START("KEY1_0") PORT_START("KEY.0")
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("1 / Pawn") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("1 / Pawn") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
PORT_START("KEY1_1") PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("2 / Knight") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("2 / Knight") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("3 / Bishop") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
PORT_START("KEY1_2") PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("4 / Rook") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("3 / Bishop") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("5 / Queen") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
PORT_START("KEY1_3") PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("6 / King") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("4 / Rook") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("White") PORT_CODE(KEYCODE_W)
PORT_START("KEY1_4") PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Black") PORT_CODE(KEYCODE_B)
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("5 / Queen") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
PORT_START("KEY1_5")
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("6 / King") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
PORT_START("KEY1_6")
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("White") PORT_CODE(KEYCODE_W)
PORT_START("KEY1_7")
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Black") PORT_CODE(KEYCODE_B)
PORT_START("KEY2_0") PORT_START("KEY.1")
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE)
PORT_START("KEY2_1") PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("ENT") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("BEST") PORT_CODE(KEYCODE_S)
PORT_START("KEY2_2") PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I)
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("BEST") PORT_CODE(KEYCODE_S) PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("MON") PORT_CODE(KEYCODE_N)
PORT_START("KEY2_3") PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("POS") PORT_CODE(KEYCODE_O)
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("INFO") PORT_CODE(KEYCODE_I) PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L)
PORT_START("KEY2_4") PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M)
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("MON") PORT_CODE(KEYCODE_N)
PORT_START("KEY2_5")
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("POS") PORT_CODE(KEYCODE_O)
PORT_START("KEY2_6")
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("LEV") PORT_CODE(KEYCODE_L)
PORT_START("KEY2_7")
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("MEM") PORT_CODE(KEYCODE_M)
PORT_START("RESET") PORT_START("RESET")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RES 1") PORT_CODE(KEYCODE_Z) PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, mm2_state, reset_button, 0) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RES 1") PORT_CODE(KEYCODE_Z) PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, mm2_state, reset_button, 0)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RES 2") PORT_CODE(KEYCODE_X) PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, mm2_state, reset_button, 0) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RES 2") PORT_CODE(KEYCODE_X) PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, mm2_state, reset_button, 0)
INPUT_PORTS_END INPUT_PORTS_END
INPUT_CHANGED_MEMBER(mm2_state::reset_button)
{
// RES buttons in serial tied to CPU RESET
if (ioport("RESET")->read() == 3)
{
m_maincpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
machine_reset();
}
}
/****************************************************************************** /******************************************************************************
@ -380,10 +301,11 @@ INPUT_CHANGED_MEMBER(mm2_state::reset_button)
void mm2_state::rebel5(machine_config &config) void mm2_state::rebel5(machine_config &config)
{ {
/* basic machine hardware */ /* basic machine hardware */
M65C02(config, m_maincpu, 9.8304_MHz_XTAL / 2); M65SC02(config, m_maincpu, 9.8304_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &mm2_state::rebel5_mem); m_maincpu->set_addrmap(AS_PROGRAM, &mm2_state::rebel5_mem);
TIMER(config, "nmi_timer").configure_periodic(FUNC(mm2_state::update_nmi_r5), attotime::from_hz(600)); const attotime nmi_period = attotime::from_hz(9.8304_MHz_XTAL / 2 / 0x2000); // 600Hz
m_maincpu->set_periodic_int(FUNC(mm2_state::nmi_line_pulse), nmi_period);
HC259(config, m_outlatch); HC259(config, m_outlatch);
m_outlatch->q_out_cb<0>().set_output("led100"); m_outlatch->q_out_cb<0>().set_output("led100");
@ -393,9 +315,10 @@ void mm2_state::rebel5(machine_config &config)
m_outlatch->q_out_cb<4>().set_output("led104"); m_outlatch->q_out_cb<4>().set_output("led104");
m_outlatch->q_out_cb<5>().set_output("led105"); m_outlatch->q_out_cb<5>().set_output("led105");
m_outlatch->q_out_cb<6>().set(m_dac, FUNC(dac_bit_interface::write)); m_outlatch->q_out_cb<6>().set(m_dac, FUNC(dac_bit_interface::write));
m_outlatch->q_out_cb<7>().set(FUNC(mm2_state::write_led7)); m_outlatch->q_out_cb<7>().set(m_display, FUNC(mephisto_display1_device::strobe_w)).invert();
MEPHISTO_SENSORS_BOARD(config, "board"); MEPHISTO_SENSORS_BOARD(config, "board");
MEPHISTO_DISPLAY_MODULE1(config, m_display);
config.set_default_layout(layout_mephisto_mm2); config.set_default_layout(layout_mephisto_mm2);
/* sound hardware */ /* sound hardware */
@ -411,7 +334,8 @@ void mm2_state::mm5p(machine_config &config)
m_maincpu->set_clock(4.9152_MHz_XTAL); m_maincpu->set_clock(4.9152_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &mm2_state::mm5p_mem); m_maincpu->set_addrmap(AS_PROGRAM, &mm2_state::mm5p_mem);
TIMER(config.replace(), "nmi_timer").configure_periodic(FUNC(mm2_state::update_nmi), attotime::from_hz(600)); const attotime nmi_period = attotime::from_hz(4.9152_MHz_XTAL / 0x2000); // 600Hz
m_maincpu->set_periodic_int(FUNC(mm2_state::nmi_line_pulse), nmi_period);
} }
void mm2_state::mm4(machine_config &config) void mm2_state::mm4(machine_config &config)
@ -445,11 +369,10 @@ void mm2_state::bup(machine_config &config)
m_maincpu->set_clock(7.3728_MHz_XTAL / 2); m_maincpu->set_clock(7.3728_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &mm2_state::bup_mem); m_maincpu->set_addrmap(AS_PROGRAM, &mm2_state::bup_mem);
config.device_remove("nmi_timer");
const attotime irq_period = attotime::from_hz(7.3728_MHz_XTAL / 2 / 0x2000); // 450Hz from 4020 Q13 const attotime irq_period = attotime::from_hz(7.3728_MHz_XTAL / 2 / 0x2000); // 450Hz from 4020 Q13
m_maincpu->set_periodic_int(FUNC(mm2_state::irq0_line_assert), irq_period); m_maincpu->set_periodic_int(FUNC(mm2_state::irq0_line_assert), irq_period);
m_outlatch->q_out_cb<7>().set(FUNC(mm2_state::write_led7)).invert(); m_outlatch->q_out_cb<7>().set(m_display, FUNC(mephisto_display1_device::strobe_w));
config.set_default_layout(layout_mephisto_bup); config.set_default_layout(layout_mephisto_bup);
} }
@ -571,24 +494,24 @@ ROM_END
Drivers Drivers
******************************************************************************/ ******************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS */ /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS */
CONS( 1984, mm2, 0, 0, mm2, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 1, v4.00 1 EPROM)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1984, mm2, 0, 0, mm2, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 1, v4.00 1 EPROM)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1984, mm2a, mm2, 0, mm2, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 2, v4.00 2 EPROMs)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1984, mm2a, mm2, 0, mm2, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 2, v4.00 2 EPROMs)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1984, mm2b, mm2, 0, mm2, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 3, v3.00)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1984, mm2b, mm2, 0, mm2, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 3, v3.00)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1984, mm2c, mm2, 0, mm2, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 4)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1984, mm2c, mm2, 0, mm2, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 4)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1984, mm2d, mm2, 0, mm2, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 5)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1984, mm2d, mm2, 0, mm2, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM II (set 5)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1985, bup, 0, 0, bup, bup, mm2_state, empty_init, "Hegener + Glaser", u8"Mephisto Blitz- und Problemlösungs-Modul (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1985, bup, 0, 0, bup, bup, mm2_state, empty_init, "Hegener + Glaser", u8"Mephisto Blitz- und Problemlösungs-Modul (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1985, bupa, bup, 0, bup, bup, mm2_state, empty_init, "Hegener + Glaser", u8"Mephisto Blitz- und Problemlösungs-Modul (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1985, bupa, bup, 0, bup, bup, mm2_state, empty_init, "Hegener + Glaser", u8"Mephisto Blitz- und Problemlösungs-Modul (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1986, rebel5, 0, 0, rebel5, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto Rebell 5,0 (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // aka MM III CONS( 1986, rebel5, 0, 0, rebel5, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto Rebell 5,0 (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // aka MM III
CONS( 1986, rebel5a, rebel5, 0, rebel5, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto Rebell 5,0 (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1986, rebel5a, rebel5, 0, rebel5, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto Rebell 5,0 (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1987, mm4, 0, 0, mm4, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM IV (v7.10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1987, mm4, 0, 0, mm4, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM IV (v7.10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1987, mm4a, mm4, 0, mm4, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM IV (v7.00)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1987, mm4a, mm4, 0, mm4, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM IV (v7.00)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1987, mm4b, mm4, 0, mm4, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM IV (v6.00)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1987, mm4b, mm4, 0, mm4, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM IV (v6.00)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1987, mm4tk, mm4, 0, mm4tk, mephisto, mm2_state, empty_init, "hack", "Mephisto MM IV (TurboKit)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_TIMING ) CONS( 1987, mm4tk, mm4, 0, mm4tk, mm2, mm2_state, empty_init, "hack", "Mephisto MM IV (TurboKit)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_TIMING )
CONS( 1990, mm5, 0, 0, mm5, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM V (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1990, mm5, 0, 0, mm5, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM V (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1990, mm5a, mm5, 0, mm5, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM V (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1990, mm5a, mm5, 0, mm5, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM V (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1989, mm5p, mm5, 0, mm5p, mephisto, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM V (prototype)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_TIMING ) CONS( 1989, mm5p, mm5, 0, mm5p, mm2, mm2_state, empty_init, "Hegener + Glaser", "Mephisto MM V (Portorose TM version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_TIMING )

View File

@ -12,7 +12,7 @@ Hardware notes:
- PCB label: MODENA-A-2 - PCB label: MODENA-A-2
- W65C02SP or RP65C02G @ 4.19MHz - W65C02SP or RP65C02G @ 4.19MHz
- 8KB RAM (battery-backed), 32KB ROM - 8KB RAM (battery-backed), 32KB ROM
- 8*8 chessboard buttons, 16+6 leds, piezo - 8*8 chessboard buttons, 16+6 leds, 7seg lcd, piezo
**************************************************************************************************/ **************************************************************************************************/
@ -24,6 +24,7 @@ Hardware notes:
#include "machine/sensorboard.h" #include "machine/sensorboard.h"
#include "machine/timer.h" #include "machine/timer.h"
#include "sound/dac.h" #include "sound/dac.h"
#include "video/mmdisplay1.h"
#include "video/pwm.h" #include "video/pwm.h"
#include "speaker.h" #include "speaker.h"
@ -42,9 +43,9 @@ public:
, m_maincpu(*this, "maincpu") , m_maincpu(*this, "maincpu")
, m_board(*this, "board") , m_board(*this, "board")
, m_display(*this, "display") , m_display(*this, "display")
, m_led_pwm(*this, "led_pwm")
, m_dac(*this, "dac") , m_dac(*this, "dac")
, m_keys(*this, "KEY") , m_keys(*this, "KEY")
, m_digits(*this, "digit%u", 0U)
{ } { }
void modena(machine_config &config); void modena(machine_config &config);
@ -55,30 +56,25 @@ protected:
private: private:
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<sensorboard_device> m_board; required_device<sensorboard_device> m_board;
required_device<pwm_display_device> m_display; required_device<mephisto_display1_device> m_display;
required_device<pwm_display_device> m_led_pwm;
required_device<dac_bit_interface> m_dac; required_device<dac_bit_interface> m_dac;
required_ioport m_keys; required_ioport m_keys;
output_finder<4> m_digits;
void modena_mem(address_map &map); void modena_mem(address_map &map);
u8 input_r(); u8 input_r();
void digits_w(u8 data);
void io_w(u8 data); void io_w(u8 data);
void led_w(u8 data); void led_w(u8 data);
void update_display(); void update_display();
u8 m_board_mux = 0; u8 m_board_mux = 0;
u8 m_digits_idx = 0;
u8 m_io_ctrl = 0; u8 m_io_ctrl = 0;
}; };
void modena_state::machine_start() void modena_state::machine_start()
{ {
m_digits.resolve();
save_item(NAME(m_board_mux)); save_item(NAME(m_board_mux));
save_item(NAME(m_digits_idx));
save_item(NAME(m_io_ctrl)); save_item(NAME(m_io_ctrl));
} }
@ -90,7 +86,7 @@ void modena_state::machine_start()
void modena_state::update_display() void modena_state::update_display()
{ {
m_display->matrix(m_io_ctrl >> 1 & 7, m_board_mux); m_led_pwm->matrix(m_io_ctrl >> 1 & 7, m_board_mux);
} }
u8 modena_state::input_r() u8 modena_state::input_r()
@ -120,17 +116,14 @@ void modena_state::io_w(u8 data)
{ {
// d0: button select // d0: button select
// d1-d3: led select // d1-d3: led select
// d4: lcd polarity
// d6: speaker out
m_io_ctrl = data; m_io_ctrl = data;
update_display(); update_display();
m_dac->write(BIT(data, 6));
}
void modena_state::digits_w(u8 data) // d4: lcd strobe
{ m_display->strobe_w(BIT(data, 4));
m_digits[m_digits_idx] = data ^ ((m_io_ctrl & 0x10) ? 0xff : 0x00);
m_digits_idx = (m_digits_idx + 1) & 3; // d6: speaker out
m_dac->write(BIT(data, 6));
} }
@ -142,7 +135,7 @@ void modena_state::digits_w(u8 data)
void modena_state::modena_mem(address_map &map) void modena_state::modena_mem(address_map &map)
{ {
map(0x0000, 0x1fff).ram().share("nvram"); map(0x0000, 0x1fff).ram().share("nvram");
map(0x4000, 0x4000).w(FUNC(modena_state::digits_w)); map(0x4000, 0x4000).w(m_display, FUNC(mephisto_display1_device::data_w));
map(0x5000, 0x5000).w(FUNC(modena_state::led_w)); map(0x5000, 0x5000).w(FUNC(modena_state::led_w));
map(0x6000, 0x6000).w(FUNC(modena_state::io_w)); map(0x6000, 0x6000).w(FUNC(modena_state::io_w));
map(0x7000, 0x7000).r(FUNC(modena_state::input_r)); map(0x7000, 0x7000).r(FUNC(modena_state::input_r));
@ -158,14 +151,14 @@ void modena_state::modena_mem(address_map &map)
static INPUT_PORTS_START( modena ) static INPUT_PORTS_START( modena )
PORT_START("KEY") PORT_START("KEY")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Book / Pawn") PORT_CODE(KEYCODE_B) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Book / Pawn") PORT_CODE(KEYCODE_B)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Info / Knight") PORT_CODE(KEYCODE_I) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Info / Knight") PORT_CODE(KEYCODE_I)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Memory / Bishop") PORT_CODE(KEYCODE_M) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Memory / Bishop") PORT_CODE(KEYCODE_M)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Position / Rook") PORT_CODE(KEYCODE_O) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Position / Rook") PORT_CODE(KEYCODE_O)
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Level / Queen") PORT_CODE(KEYCODE_L) PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Level / Queen") PORT_CODE(KEYCODE_L)
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Function / King") PORT_CODE(KEYCODE_F) PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Function / King") PORT_CODE(KEYCODE_F)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Enter / New Game") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Enter / New Game") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Clear / New Game") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // " PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Clear / New Game") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // "
INPUT_PORTS_END INPUT_PORTS_END
@ -180,7 +173,7 @@ void modena_state::modena(machine_config &config)
M65C02(config, m_maincpu, 4.194304_MHz_XTAL); M65C02(config, m_maincpu, 4.194304_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &modena_state::modena_mem); m_maincpu->set_addrmap(AS_PROGRAM, &modena_state::modena_mem);
clock_device &nmi_clock(CLOCK(config, "nmi_clock", 4.194304_MHz_XTAL / (1 << 13))); // active for 975us clock_device &nmi_clock(CLOCK(config, "nmi_clock", 4.194304_MHz_XTAL / 0x2000)); // active for 975us
nmi_clock.signal_handler().set_inputline(m_maincpu, INPUT_LINE_NMI); nmi_clock.signal_handler().set_inputline(m_maincpu, INPUT_LINE_NMI);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@ -191,7 +184,8 @@ void modena_state::modena(machine_config &config)
m_board->set_nvram_enable(true); m_board->set_nvram_enable(true);
/* video hardware */ /* video hardware */
PWM_DISPLAY(config, m_display).set_size(3, 8); MEPHISTO_DISPLAY_MODULE1(config, m_display); // internal
PWM_DISPLAY(config, m_led_pwm).set_size(3, 8);
config.set_default_layout(layout_mephisto_modena); config.set_default_layout(layout_mephisto_modena);
/* sound hardware */ /* sound hardware */

View File

@ -252,8 +252,8 @@ void mmodular_state::alm16_mem(address_map &map)
map(0xf00000, 0xf00003).portr("KEY1"); map(0xf00000, 0xf00003).portr("KEY1");
map(0xf00004, 0xf00007).portr("KEY2"); map(0xf00004, 0xf00007).portr("KEY2");
map(0xf00008, 0xf0000b).portr("KEY3"); map(0xf00008, 0xf0000b).portr("KEY3");
map(0xd80000, 0xd80000).w("display", FUNC(mephisto_display_module2_device::latch_w)); map(0xd80000, 0xd80000).w("display", FUNC(mephisto_display2_device::latch_w));
map(0xd80008, 0xd80008).w("display", FUNC(mephisto_display_module2_device::io_w)); map(0xd80008, 0xd80008).w("display", FUNC(mephisto_display2_device::io_w));
} }
void mmodular_state::port16_mem(address_map &map) void mmodular_state::port16_mem(address_map &map)
@ -283,8 +283,8 @@ void mmodular_state::alm32_mem(address_map &map)
map(0x800000fc, 0x800000fc).r("board", FUNC(mephisto_board_device::input_r)); map(0x800000fc, 0x800000fc).r("board", FUNC(mephisto_board_device::input_r));
map(0x88000000, 0x88000007).w("board", FUNC(mephisto_board_device::mux_w)).umask32(0xff000000); map(0x88000000, 0x88000007).w("board", FUNC(mephisto_board_device::mux_w)).umask32(0xff000000);
map(0x90000000, 0x90000007).w("board", FUNC(mephisto_board_device::led_w)).umask32(0xff000000); map(0x90000000, 0x90000007).w("board", FUNC(mephisto_board_device::led_w)).umask32(0xff000000);
map(0xa0000000, 0xa0000000).w("display", FUNC(mephisto_display_module2_device::latch_w)); map(0xa0000000, 0xa0000000).w("display", FUNC(mephisto_display2_device::latch_w));
map(0xa0000010, 0xa0000010).w("display", FUNC(mephisto_display_module2_device::io_w)); map(0xa0000010, 0xa0000010).w("display", FUNC(mephisto_display2_device::io_w));
map(0xa8000000, 0xa8007fff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask32(0xff000000); map(0xa8000000, 0xa8007fff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask32(0xff000000);
} }
@ -318,8 +318,8 @@ void mmodular_state::gen32_mem(address_map &map)
map(0xd8000004, 0xd8000004).r(FUNC(mmodular_state::bavaria1_r)); map(0xd8000004, 0xd8000004).r(FUNC(mmodular_state::bavaria1_r));
map(0xd8000008, 0xd8000008).w(FUNC(mmodular_state::bavaria_w)); map(0xd8000008, 0xd8000008).w(FUNC(mmodular_state::bavaria_w));
map(0xd800000c, 0xd800000c).r(FUNC(mmodular_state::bavaria2_r)); map(0xd800000c, 0xd800000c).r(FUNC(mmodular_state::bavaria2_r));
map(0xe0000000, 0xe0000000).w("display", FUNC(mephisto_display_module2_device::latch_w)); map(0xe0000000, 0xe0000000).w("display", FUNC(mephisto_display2_device::latch_w));
map(0xe0000010, 0xe0000010).w("display", FUNC(mephisto_display_module2_device::io_w)); map(0xe0000010, 0xe0000010).w("display", FUNC(mephisto_display2_device::io_w));
map(0xe8000000, 0xe8007fff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask32(0xff000000); map(0xe8000000, 0xe8007fff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask32(0xff000000);
map(0xf0000004, 0xf0000007).portr("KEY1"); map(0xf0000004, 0xf0000007).portr("KEY1");
map(0xf0000008, 0xf000000b).portr("KEY2"); map(0xf0000008, 0xf000000b).portr("KEY2");

View File

@ -147,8 +147,8 @@ void mmtm_state::mmtm_2m_map(address_map &map)
map(0xfc020004, 0xfc020007).portr("KEY1"); map(0xfc020004, 0xfc020007).portr("KEY1");
map(0xfc020008, 0xfc02000b).portr("KEY2"); map(0xfc020008, 0xfc02000b).portr("KEY2");
map(0xfc020010, 0xfc020013).portr("KEY3"); map(0xfc020010, 0xfc020013).portr("KEY3");
map(0xfc040000, 0xfc040000).w("display", FUNC(mephisto_display_module2_device::latch_w)); map(0xfc040000, 0xfc040000).w("display", FUNC(mephisto_display2_device::latch_w));
map(0xfc060000, 0xfc060000).w("display", FUNC(mephisto_display_module2_device::io_w)); map(0xfc060000, 0xfc060000).w("display", FUNC(mephisto_display2_device::io_w));
map(0xfc080000, 0xfc080000).w("board", FUNC(mephisto_board_device::mux_w)); map(0xfc080000, 0xfc080000).w("board", FUNC(mephisto_board_device::mux_w));
map(0xfc0a0000, 0xfc0a0000).w("board", FUNC(mephisto_board_device::led_w)); map(0xfc0a0000, 0xfc0a0000).w("board", FUNC(mephisto_board_device::led_w));
map(0xfc0c0000, 0xfc0c0000).r("board", FUNC(mephisto_board_device::input_r)); map(0xfc0c0000, 0xfc0c0000).r("board", FUNC(mephisto_board_device::input_r));

View File

@ -7,12 +7,13 @@ Mephisto Mondial
Hardware notes: Hardware notes:
- G65SC02-1 @ 2MHz - G65SC02-1 @ 2MHz
- 2KB RAM(TC5517AP), 16KB ROM - 2KB RAM(TC5517AP), 16KB ROM
- expansion slot at underside
- 8*8 chessboard buttons, 24 leds, active buzzer - 8*8 chessboard buttons, 24 leds, active buzzer
TODO: TODO:
- verify XTAL (or maybe RC or LC circuit), 2MHz is correct - verify XTAL (or maybe RC or LC circuit), 2MHz is correct
- unknown read from 0x2000 - unknown read from 0x2000
- add MM 1000 module - dump/add MM 1000 module
******************************************************************************/ ******************************************************************************/
@ -156,7 +157,9 @@ void mondial_state::mondial(machine_config &config)
/* basic machine hardware */ /* basic machine hardware */
M65SC02(config, m_maincpu, 2000000); M65SC02(config, m_maincpu, 2000000);
m_maincpu->set_addrmap(AS_PROGRAM, &mondial_state::mondial_mem); m_maincpu->set_addrmap(AS_PROGRAM, &mondial_state::mondial_mem);
m_maincpu->set_periodic_int(FUNC(mondial_state::irq0_line_hold), attotime::from_hz(2000000 / (1 << 12)));
const attotime irq_period = attotime::from_hz(2000000 / 0x1000);
m_maincpu->set_periodic_int(FUNC(mondial_state::irq0_line_hold), irq_period);
SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS); SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS);
m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));

View File

@ -8,6 +8,7 @@ Mephisto Mondial II
Hardware notes: Hardware notes:
- G65SC02 @ 2MHz (unsure about rating) - G65SC02 @ 2MHz (unsure about rating)
- 2KB RAM, 32KB ROM - 2KB RAM, 32KB ROM
- expansion slot at underside (not used)
- 8*8 chessboard buttons, 24 leds, piezo - 8*8 chessboard buttons, 24 leds, piezo
******************************************************************************/ ******************************************************************************/
@ -177,7 +178,9 @@ void mondial2_state::mondial2(machine_config &config)
/* basic machine hardware */ /* basic machine hardware */
M65SC02(config, m_maincpu, 2_MHz_XTAL); M65SC02(config, m_maincpu, 2_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &mondial2_state::mondial2_mem); m_maincpu->set_addrmap(AS_PROGRAM, &mondial2_state::mondial2_mem);
m_maincpu->set_periodic_int(FUNC(mondial2_state::nmi_line_pulse), attotime::from_hz(2_MHz_XTAL / (1 << 12)));
const attotime nmi_period = attotime::from_hz(2_MHz_XTAL / 0x1000);
m_maincpu->set_periodic_int(FUNC(mondial2_state::nmi_line_pulse), nmi_period);
SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS); SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS);
m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));

View File

@ -190,7 +190,7 @@ void mephisto_montec_state::montec_mem(address_map &map)
map(0x2400, 0x2400).r(FUNC(mephisto_montec_state::montec_input_r)); map(0x2400, 0x2400).r(FUNC(mephisto_montec_state::montec_input_r));
map(0x2800, 0x2800).w(m_board, FUNC(mephisto_board_device::mux_w)); map(0x2800, 0x2800).w(m_board, FUNC(mephisto_board_device::mux_w));
map(0x2c00, 0x2c00).w(m_board, FUNC(mephisto_board_device::led_w)); map(0x2c00, 0x2c00).w(m_board, FUNC(mephisto_board_device::led_w));
map(0x3000, 0x3007).w(m_muxlatch, FUNC(hc259_device::write_d7)); map(0x3000, 0x3007).w(m_muxlatch, FUNC(hc259_device::write_d7)).nopr();
map(0x3400, 0x3400).w(FUNC(mephisto_montec_state::montec_led_w)); map(0x3400, 0x3400).w(FUNC(mephisto_montec_state::montec_led_w));
map(0x8000, 0xffff).rom(); map(0x8000, 0xffff).rom();
} }

View File

@ -1,5 +1,5 @@
// license:BSD-3-Clause // license:BSD-3-Clause
// copyright-holders:Sandro Ronco // copyright-holders:Sandro Ronco, hap
/****************************************************************************** /******************************************************************************
Mephisto Polgar Mephisto Polgar
@ -8,7 +8,7 @@ Hardware notes:
- RP65C02G @ 4.91MHz - RP65C02G @ 4.91MHz
- 64KB ROM (25% unused) - 64KB ROM (25% unused)
- Mephisto modular display module - Mephisto modular display module
- Mephisto Exclusive/Muenchen chessboard - Mephisto modular chessboard
The 10MHz version has a W65C02P-8 @ 9.83MHz. The 10MHz version has a W65C02P-8 @ 9.83MHz.
@ -58,7 +58,7 @@ private:
u8 polgar_state::keys_r(offs_t offset) u8 polgar_state::keys_r(offs_t offset)
{ {
return (BIT(m_keys->read(), offset) << 7) | 0x7f; return ~(BIT(m_keys->read(), offset) << 7);
} }
@ -70,8 +70,8 @@ u8 polgar_state::keys_r(offs_t offset)
void polgar_state::polgar_mem(address_map &map) void polgar_state::polgar_mem(address_map &map)
{ {
map(0x0000, 0x1fff).ram().share("nvram"); map(0x0000, 0x1fff).ram().share("nvram");
map(0x2000, 0x2000).w("display", FUNC(mephisto_display_module2_device::latch_w)); map(0x2000, 0x2000).w("display", FUNC(mephisto_display2_device::latch_w));
map(0x2004, 0x2004).w("display", FUNC(mephisto_display_module2_device::io_w)); map(0x2004, 0x2004).w("display", FUNC(mephisto_display2_device::io_w));
map(0x2400, 0x2400).w("board", FUNC(mephisto_board_device::led_w)); map(0x2400, 0x2400).w("board", FUNC(mephisto_board_device::led_w));
map(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w)); map(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w));
map(0x2c00, 0x2c07).r(FUNC(polgar_state::keys_r)); map(0x2c00, 0x2c07).r(FUNC(polgar_state::keys_r));
@ -88,14 +88,14 @@ void polgar_state::polgar_mem(address_map &map)
static INPUT_PORTS_START( polgar ) static INPUT_PORTS_START( polgar )
PORT_START("KEY") PORT_START("KEY")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("TRN / Pawn") PORT_CODE(KEYCODE_T) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("TRN / Pawn") PORT_CODE(KEYCODE_T)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("INFO / Knight") PORT_CODE(KEYCODE_I) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("INFO / Knight") PORT_CODE(KEYCODE_I)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("MEM / Bishop") PORT_CODE(KEYCODE_M) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("MEM / Bishop") PORT_CODE(KEYCODE_M)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("POS / Rook") PORT_CODE(KEYCODE_O) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("POS / Rook") PORT_CODE(KEYCODE_O)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("LEV / Queen") PORT_CODE(KEYCODE_L) PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEV / Queen") PORT_CODE(KEYCODE_L)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("FCT / King") PORT_CODE(KEYCODE_F) PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("FCT / King") PORT_CODE(KEYCODE_F)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("ENT / New Game") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT / New Game") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("CL / New Game") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // " PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL / New Game") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // "
INPUT_PORTS_END INPUT_PORTS_END
@ -108,7 +108,9 @@ void polgar_state::polgar(machine_config &config)
{ {
R65C02(config, m_maincpu, 4.9152_MHz_XTAL); R65C02(config, m_maincpu, 4.9152_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &polgar_state::polgar_mem); m_maincpu->set_addrmap(AS_PROGRAM, &polgar_state::polgar_mem);
m_maincpu->set_periodic_int(FUNC(polgar_state::nmi_line_pulse), attotime::from_hz(4.9152_MHz_XTAL / (1 << 13)));
const attotime nmi_period = attotime::from_hz(4.9152_MHz_XTAL / 0x2000);
m_maincpu->set_periodic_int(FUNC(polgar_state::nmi_line_pulse), nmi_period);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@ -131,7 +133,9 @@ void polgar_state::polgar10(machine_config &config)
M65C02(config.replace(), m_maincpu, 9.8304_MHz_XTAL); M65C02(config.replace(), m_maincpu, 9.8304_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &polgar_state::polgar_mem); m_maincpu->set_addrmap(AS_PROGRAM, &polgar_state::polgar_mem);
m_maincpu->set_periodic_int(FUNC(polgar_state::nmi_line_pulse), attotime::from_hz(9.8304_MHz_XTAL / (1 << 13)));
const attotime nmi_period = attotime::from_hz(9.8304_MHz_XTAL / 0x2000);
m_maincpu->set_periodic_int(FUNC(polgar_state::nmi_line_pulse), nmi_period);
} }

View File

@ -12,7 +12,7 @@ Hardware notes:
- 128KB ROM - 128KB ROM
- Tasc ChessMachine EC PCB - Tasc ChessMachine EC PCB
- Mephisto modular display module - Mephisto modular display module
- Mephisto Exclusive/Muenchen chessboard - Mephisto modular chessboard
******************************************************************************/ ******************************************************************************/
@ -73,7 +73,7 @@ void risc_state::machine_start()
u8 risc_state::keys_r(offs_t offset) u8 risc_state::keys_r(offs_t offset)
{ {
return (BIT(m_keys->read(), offset) << 7) | 0x7f; return ~(BIT(m_keys->read(), offset) << 7);
} }
u8 risc_state::chessm_r() u8 risc_state::chessm_r()
@ -102,8 +102,8 @@ void risc_state::mrisc_mem(address_map &map)
{ {
map.unmap_value_high(); map.unmap_value_high();
map(0x0000, 0x1fff).ram().share("nvram"); map(0x0000, 0x1fff).ram().share("nvram");
map(0x2000, 0x2000).w("display", FUNC(mephisto_display_module2_device::latch_w)); map(0x2000, 0x2000).w("display", FUNC(mephisto_display2_device::latch_w));
map(0x2004, 0x2004).w("display", FUNC(mephisto_display_module2_device::io_w)); map(0x2004, 0x2004).w("display", FUNC(mephisto_display2_device::io_w));
map(0x2c00, 0x2c07).r(FUNC(risc_state::keys_r)); map(0x2c00, 0x2c07).r(FUNC(risc_state::keys_r));
map(0x2400, 0x2400).w("board", FUNC(mephisto_board_device::led_w)); map(0x2400, 0x2400).w("board", FUNC(mephisto_board_device::led_w));
map(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w)); map(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w));
@ -123,14 +123,14 @@ void risc_state::mrisc_mem(address_map &map)
static INPUT_PORTS_START( mrisc ) static INPUT_PORTS_START( mrisc )
PORT_START("KEY") PORT_START("KEY")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("TRN / Pawn") PORT_CODE(KEYCODE_T) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("TRN / Pawn") PORT_CODE(KEYCODE_T)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("INFO / Knight") PORT_CODE(KEYCODE_I) PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("INFO / Knight") PORT_CODE(KEYCODE_I)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("MEM / Bishop") PORT_CODE(KEYCODE_M) PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("MEM / Bishop") PORT_CODE(KEYCODE_M)
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("POS / Rook") PORT_CODE(KEYCODE_O) PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("POS / Rook") PORT_CODE(KEYCODE_O)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("LEV / Queen") PORT_CODE(KEYCODE_L) PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LEV / Queen") PORT_CODE(KEYCODE_L)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("FCT / King") PORT_CODE(KEYCODE_F) PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("FCT / King") PORT_CODE(KEYCODE_F)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("ENT / New Game") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ENT / New Game") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_F1) // combine for NEW GAME
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("CL / New Game") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // " PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL / New Game") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_F1) // "
INPUT_PORTS_END INPUT_PORTS_END
@ -143,7 +143,9 @@ void risc_state::mrisc(machine_config &config)
{ {
M65SC02(config, m_maincpu, 10_MHz_XTAL / 4); M65SC02(config, m_maincpu, 10_MHz_XTAL / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &risc_state::mrisc_mem); m_maincpu->set_addrmap(AS_PROGRAM, &risc_state::mrisc_mem);
m_maincpu->set_periodic_int(FUNC(risc_state::irq0_line_hold), attotime::from_hz(10_MHz_XTAL / (1 << 14)));
const attotime irq_period = attotime::from_hz(10_MHz_XTAL / 0x4000);
m_maincpu->set_periodic_int(FUNC(risc_state::irq0_line_hold), irq_period);
CHESSMACHINE(config, m_chessm, 14'000'000); // Mephisto manual says 14MHz (no XTAL) CHESSMACHINE(config, m_chessm, 14'000'000); // Mephisto manual says 14MHz (no XTAL)
config.set_perfect_quantum(m_maincpu); config.set_perfect_quantum(m_maincpu);

View File

@ -47,13 +47,14 @@ license:CC0
<!-- display --> <!-- display -->
<element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element> <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
<element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
<element name="digit" defstate="0"> <element name="digit" defstate="0">
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg> <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element> </element>
<element name="ldot" defstate="0"> <element name="ldot">
<rect state="1"><color red="0.2" green="0.16" blue="0.16" /></rect> <rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
<rect state="0"><color red="0.49412" green="0.51765" blue="0.51765" /></rect> <rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
</element> </element>
<group name="display"> <group name="display">
@ -66,12 +67,18 @@ license:CC0
<element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element> <element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
<element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element> <element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
<element name="3.7" ref="ldot"><bounds x="36.25" y="96.42" width="0.6" height="0.6" /></element> <!-- digits DP are different from normal 7seg -->
<element name="2.7" ref="ldot"><bounds x="41.75" y="96.42" width="0.6" height="0.6" /></element> <element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
<element name="1.7" ref="ldot"><bounds x="47.25" y="96.42" width="0.6" height="0.6" /></element> <element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
<element name="0.7" ref="ldot"><bounds x="42.16" y="92.75" width="0.6" height="0.6" /></element> <element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="0.7" ref="ldot"><bounds x="41.94" y="94.55" width="0.6" height="0.6" /></element> <element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group> </group>

View File

@ -205,7 +205,7 @@ license:CC0
<!-- leds --> <!-- leds -->
<repeat count="8"> <repeat count="8">
<param name="y" start="8.3" increment="10" /> <param name="y" start="8.3" increment="10" />
<param name="i1" start="11" increment="-1" /> <param name="i1" start="7" increment="-1" />
<repeat count="8"> <repeat count="8">
<param name="x" start="8.3" increment="10" /> <param name="x" start="8.3" increment="10" />
@ -423,13 +423,14 @@ license:CC0
<!-- display --> <!-- display -->
<element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element> <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
<element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
<element name="digit" defstate="0"> <element name="digit" defstate="0">
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg> <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element> </element>
<element name="ldot" defstate="0"> <element name="ldot">
<rect state="1"><color red="0.2" green="0.16" blue="0.16" /></rect> <rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
<rect state="0"><color red="0.49412" green="0.51765" blue="0.51765" /></rect> <rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
</element> </element>
<group name="display"> <group name="display">
@ -442,12 +443,18 @@ license:CC0
<element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element> <element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
<element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element> <element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
<element name="3.7" ref="ldot"><bounds x="36.25" y="96.42" width="0.6" height="0.6" /></element> <!-- digits DP are different from normal 7seg -->
<element name="2.7" ref="ldot"><bounds x="41.75" y="96.42" width="0.6" height="0.6" /></element> <element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
<element name="1.7" ref="ldot"><bounds x="47.25" y="96.42" width="0.6" height="0.6" /></element> <element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
<element name="0.7" ref="ldot"><bounds x="42.16" y="92.75" width="0.6" height="0.6" /></element> <element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="0.7" ref="ldot"><bounds x="41.94" y="94.55" width="0.6" height="0.6" /></element> <element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group> </group>

View File

@ -47,44 +47,44 @@ license:CC0
</rect> </rect>
</element> </element>
<element name="background"><rect><color red="0.59" green="0.39" blue="0.20" /></rect></element> <element name="background"><rect><color red="0.56" green="0.33" blue="0.12" /></rect></element>
<element name="white"><rect><color red="0.80" green="0.73" blue="0.63" /></rect></element> <element name="white"><rect><color red="0.84" green="0.75" blue="0.50" /></rect></element>
<element name="text_1"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="1"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_1"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="1"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_2"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="2"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_2"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="2"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_3"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="3"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_3"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="3"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_4"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="4"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_4"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="4"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_5"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="5"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_5"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="5"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_6"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="6"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_6"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="6"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_7"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="7"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_7"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="7"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_8"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="8"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_8"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="8"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_a"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="A"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_a"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="A"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_b"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="B"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_b"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="B"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_c"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="C"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_c"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="C"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_d"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="D"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_d"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="D"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_e"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="E"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_e"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="E"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_f"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="F"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_f"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="F"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_g"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="G"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_g"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="G"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_h"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="H"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_h"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="H"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_black"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="&#x25a1;"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_black"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="&#x25a1;"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_white"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="&#x25a0;"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_white"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="&#x25a0;"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_train"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="TRAIN"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_train"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="TRAIN"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_info"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="INFO"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_info"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="INFO"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_mem"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="MEM"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_mem"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="MEM"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_pos"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="POS"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_pos"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="POS"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_lev"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="LEV"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_lev"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="LEV"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_fct"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="FCT"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_fct"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="FCT"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_ent"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="ENT"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_ent"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="ENT"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_cl"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="CL"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_cl"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="CL"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_newgame"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="NEW GAME"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_newgame"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="NEW GAME"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_p1"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[K]"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_p1"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[K]"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_p2"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[Q]"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_p2"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[Q]"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_p3"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[R]"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_p3"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[R]"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_p4"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[B]"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_p4"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[B]"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_p5"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[N]"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_p5"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[N]"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_p6"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[P]"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_p6"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[P]"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_lcd"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="MULTI INFO LCD"><color red="1" green="1" blue="1" /></text> </element> <element name="text_lcd"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="MULTI INFO LCD"><color red="1" green="1" blue="1" /></text> </element>
<element name="piece" defstate="0"> <element name="piece" defstate="0">
@ -121,8 +121,8 @@ license:CC0
<!-- sb board --> <!-- sb board -->
<element name="cblack"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect></element> <element name="cblack"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect></element>
<element name="cwhite"> <rect><color red="0.80" green="0.73" blue="0.63" /></rect></element> <element name="cwhite"> <rect><color red="0.84" green="0.75" blue="0.50" /></rect></element>
<element name="hlbb" defstate="0"> <element name="hlbb" defstate="0">
<text string=" "><bounds x="0" y="0" width="1" height="1" /></text> <text string=" "><bounds x="0" y="0" width="1" height="1" /></text>
@ -210,7 +210,7 @@ license:CC0
<!-- chessboard leds --> <!-- chessboard leds -->
<repeat count="8"> <repeat count="8">
<param name="x" start="8.2" increment="10" /> <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" /> <param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" /> <param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" /> <param name="lc" start="16" increment="1" />
@ -266,34 +266,34 @@ license:CC0
<element name="text_uit2"><text string="INTERFACE"><color red="0.81" green="0.8" blue="0.79" /></text></element> <element name="text_uit2"><text string="INTERFACE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uib1"><text string="BOARD:"><color red="0.81" green="0.8" blue="0.79" /></text></element> <element name="text_uib1"><text string="BOARD:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uib2"> <element name="text_uib2">
<rect><color red="0.80" green="0.73" blue="0.63" /></rect> <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string="RESET"><color red="0.01" green="0.01" blue="0.01" /></text> <text string="RESET"><color red="0.01" green="0.01" blue="0.01" /></text>
</element> </element>
<element name="text_uib3"> <element name="text_uib3">
<rect><color red="0.80" green="0.73" blue="0.63" /></rect> <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string="CLEAR"><color red="0.01" green="0.01" blue="0.01" /></text> <text string="CLEAR"><color red="0.01" green="0.01" blue="0.01" /></text>
</element> </element>
<element name="text_uis1"><text string="SPAWN:"><color red="0.81" green="0.8" blue="0.79" /></text></element> <element name="text_uis1"><text string="SPAWN:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uih1"><text string="HAND:"><color red="0.81" green="0.8" blue="0.79" /></text></element> <element name="text_uih1"><text string="HAND:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uih2"> <element name="text_uih2">
<rect><color red="0.80" green="0.73" blue="0.63" /></rect> <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string="REMOVE"><color red="0.01" green="0.01" blue="0.01" /></text> <text string="REMOVE"><color red="0.01" green="0.01" blue="0.01" /></text>
</element> </element>
<element name="text_uiu1"><text string="UNDO:"><color red="0.81" green="0.8" blue="0.79" /></text></element> <element name="text_uiu1"><text string="UNDO:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uiu2a"> <element name="text_uiu2a">
<rect><color red="0.80" green="0.73" blue="0.63" /></rect> <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string=" &lt;&lt;"><color red="0.01" green="0.01" blue="0.01" /></text> <text string=" &lt;&lt;"><color red="0.01" green="0.01" blue="0.01" /></text>
</element> </element>
<element name="text_uiu2b"> <element name="text_uiu2b">
<rect><color red="0.80" green="0.73" blue="0.63" /></rect> <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string=" &lt; "><color red="0.01" green="0.01" blue="0.01" /></text> <text string=" &lt; "><color red="0.01" green="0.01" blue="0.01" /></text>
</element> </element>
<element name="text_uiu2c"> <element name="text_uiu2c">
<rect><color red="0.80" green="0.73" blue="0.63" /></rect> <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string=" &gt;"><color red="0.01" green="0.01" blue="0.01" /></text> <text string=" &gt;"><color red="0.01" green="0.01" blue="0.01" /></text>
</element> </element>
<element name="text_uiu2d"> <element name="text_uiu2d">
<rect><color red="0.80" green="0.73" blue="0.63" /></rect> <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string=" &gt;&gt;"><color red="0.01" green="0.01" blue="0.01" /></text> <text string=" &gt;&gt;"><color red="0.01" green="0.01" blue="0.01" /></text>
</element> </element>
<element name="text_uiu3a" defstate="0"> <element name="text_uiu3a" defstate="0">

View File

@ -181,7 +181,7 @@ license:CC0
<!-- chessboard leds --> <!-- chessboard leds -->
<repeat count="8"> <repeat count="8">
<param name="x" start="8.2" increment="10" /> <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" /> <param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" /> <param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" /> <param name="lc" start="16" increment="1" />

View File

@ -181,7 +181,7 @@ license:CC0
<!-- chessboard leds --> <!-- chessboard leds -->
<repeat count="8"> <repeat count="8">
<param name="x" start="8.2" increment="10" /> <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" /> <param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" /> <param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" /> <param name="lc" start="16" increment="1" />

View File

@ -4,11 +4,7 @@ license:CC0
--> -->
<mamelayout version="2"> <mamelayout version="2">
<element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element> <!-- define elements -->
<element name="digit" defstate="0">
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element>
<element name="led" defstate="0"> <element name="led" defstate="0">
<disk state="0"> <disk state="0">
@ -169,7 +165,7 @@ license:CC0
<!-- chessboard leds --> <!-- chessboard leds -->
<repeat count="8"> <repeat count="8">
<param name="x" start="8.2" increment="10" /> <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" /> <param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" /> <param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" /> <param name="lc" start="16" increment="1" />
@ -348,14 +344,41 @@ license:CC0
</group> </group>
<!-- 7seg panel --> <!-- display -->
<group name="panel"> <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
<element ref="lcd_bg"><bounds x="0" y="0" width="35" height="15" /></element> <element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
<element name="digit0" ref="digit"><bounds x="4" y="2.5" width="6" height="10" /></element>
<element name="digit1" ref="digit"><bounds x="11" y="2.5" width="6" height="10" /></element> <element name="digit" defstate="0">
<element name="digit2" ref="digit"><bounds x="18" y="2.5" width="6" height="10" /></element> <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
<element name="digit3" ref="digit"><bounds x="25" y="2.5" width="6" height="10" /></element> </element>
<element name="ldot">
<rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
<rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
</element>
<group name="display">
<bounds x="31" y="90.3" width="22.5" height="7.4" />
<element ref="lcd_bg"><bounds x="31" y="90.3" width="22.5" height="7.4" /></element>
<element name="digit3" ref="digit"><bounds x="32" y="91" width="4" height="6" /></element>
<element name="digit2" ref="digit"><bounds x="37.5" y="91" width="4" height="6" /></element>
<element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
<element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
<!-- digits DP are different from normal 7seg -->
<element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
<element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group> </group>
@ -531,15 +554,10 @@ license:CC0
<element ref="cblack"><bounds x="13" y="-2" width="89" height="89" /></element> <element ref="cblack"><bounds x="13" y="-2" width="89" height="89" /></element>
<element ref="cwhite"><bounds x="17" y="2" width="81" height="81" /></element> <element ref="cwhite"><bounds x="17" y="2" width="81" height="81" /></element>
<group ref="panel"><bounds x="37.5" y="91" width="20" height="8" /></group>
<group ref="buttons"><bounds x="67.5" y="88.5" width="29" height="14" /></group>
<group ref="sb_board"><bounds x="17.5" y="2.5" width="80" height="80" /></group> <group ref="sb_board"><bounds x="17.5" y="2.5" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="1.5" y="3" width="10" height="80" /></group> <group ref="sb_ui"><bounds x="1.5" y="3" width="10" height="80" /></group>
<!-- chessboard coords --> <!-- chessboard coords -->
<element ref="text_8"><bounds x="14.2" y="6.5" width="2" height="2" /></element> <element ref="text_8"><bounds x="14.2" y="6.5" width="2" height="2" /></element>
<element ref="text_7"><bounds x="14.2" y="16.5" width="2" height="2" /></element> <element ref="text_7"><bounds x="14.2" y="16.5" width="2" height="2" /></element>
<element ref="text_6"><bounds x="14.2" y="26.5" width="2" height="2" /></element> <element ref="text_6"><bounds x="14.2" y="26.5" width="2" height="2" /></element>
@ -557,6 +575,11 @@ license:CC0
<element ref="text_f"><bounds x="71.5" y="84" width="2" height="2" /></element> <element ref="text_f"><bounds x="71.5" y="84" width="2" height="2" /></element>
<element ref="text_g"><bounds x="81.5" y="84" width="2" height="2" /></element> <element ref="text_g"><bounds x="81.5" y="84" width="2" height="2" /></element>
<element ref="text_h"><bounds x="91.5" y="84" width="2" height="2" /></element> <element ref="text_h"><bounds x="91.5" y="84" width="2" height="2" /></element>
<!-- bottom side -->
<element ref="lcd_bg"><bounds x="37.5" y="91.5" width="20" height="8" /></element>
<group ref="display"><bounds x="38" y="92.3" width="19" height="6.4" /></group>
<group ref="buttons"><bounds x="67.5" y="88.5" width="29" height="14" /></group>
</view> </view>
</mamelayout> </mamelayout>

View File

@ -3,14 +3,9 @@
license:CC0 license:CC0
--> -->
<mamelayout version="2"> <mamelayout version="2">
<!-- define elements --> <!-- define elements -->
<element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
<element name="digit" defstate="0">
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element>
<element name="led" defstate="0"> <element name="led" defstate="0">
<disk state="0"> <disk state="0">
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
@ -170,7 +165,7 @@ license:CC0
<!-- chessboard leds --> <!-- chessboard leds -->
<repeat count="8"> <repeat count="8">
<param name="x" start="8.2" increment="10" /> <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" /> <param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" /> <param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" /> <param name="lc" start="16" increment="1" />
@ -349,14 +344,41 @@ license:CC0
</group> </group>
<!-- 7seg panel --> <!-- display -->
<group name="panel1"> <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
<element ref="lcd_bg"><bounds x="0" y="0" width="35" height="15" /></element> <element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
<element name="digit0" ref="digit"><bounds x="4" y="2.5" width="6" height="10" /></element>
<element name="digit1" ref="digit"><bounds x="11" y="2.5" width="6" height="10" /></element> <element name="digit" defstate="0">
<element name="digit2" ref="digit"><bounds x="18" y="2.5" width="6" height="10" /></element> <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
<element name="digit3" ref="digit"><bounds x="25" y="2.5" width="6" height="10" /></element> </element>
<element name="ldot">
<rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
<rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
</element>
<group name="display">
<bounds x="31" y="90.3" width="22.5" height="7.4" />
<element ref="lcd_bg"><bounds x="31" y="90.3" width="22.5" height="7.4" /></element>
<element name="digit3" ref="digit"><bounds x="32" y="91" width="4" height="6" /></element>
<element name="digit2" ref="digit"><bounds x="37.5" y="91" width="4" height="6" /></element>
<element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
<element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
<!-- digits DP are different from normal 7seg -->
<element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
<element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group> </group>
@ -371,7 +393,7 @@ license:CC0
<element name="led_end"> <text string="End" align="1"> <color red="0.8" green="0.8" blue="0.8" /></text> </element> <element name="led_end"> <text string="End" align="1"> <color red="0.8" green="0.8" blue="0.8" /></text> </element>
<element name="led_plus"><text string="+" align="1"> <color red="0.8" green="0.8" blue="0.8" /></text> </element> <element name="led_plus"><text string="+" align="1"> <color red="0.8" green="0.8" blue="0.8" /></text> </element>
<group name="panel2"> <group name="leds">
<bounds x="69.1" y="89.9" width="29" height="1.5" /> <bounds x="69.1" y="89.9" width="29" height="1.5" />
<element ref="dwhite"><bounds x="70.7" y="89.9" width="1.4" height="1.4" /></element> <element ref="dwhite"><bounds x="70.7" y="89.9" width="1.4" height="1.4" /></element>
@ -479,41 +501,41 @@ license:CC0
<element ref="gray"><bounds x="90.55" y="104.7" width="0.9" height="0.9" /></element> <element ref="gray"><bounds x="90.55" y="104.7" width="0.9" height="0.9" /></element>
<element ref="white"><bounds x="95.35" y="104.5" width="1.3" height="1.3" /></element> <element ref="white"><bounds x="95.35" y="104.5" width="1.3" height="1.3" /></element>
<element ref="keys" inputtag="KEY1_0" inputmask="0x80"> <!-- 1 --> <element ref="keys" inputtag="KEY.0" inputmask="0x01"> <!-- 1 -->
<bounds x="69" y="93" width="4" height="4" /><color alpha="0.25" /> <bounds x="69" y="93" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY1_1" inputmask="0x80"> <!-- 2 --> <element ref="keys" inputtag="KEY.0" inputmask="0x02"> <!-- 2 -->
<bounds x="74" y="93" width="4" height="4" /><color alpha="0.25" /> <bounds x="74" y="93" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY1_2" inputmask="0x80"> <!-- 3 --> <element ref="keys" inputtag="KEY.0" inputmask="0x04"> <!-- 3 -->
<bounds x="79" y="93" width="4" height="4" /><color alpha="0.25" /> <bounds x="79" y="93" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY1_3" inputmask="0x80"> <!-- 4 --> <element ref="keys" inputtag="KEY.0" inputmask="0x08"> <!-- 4 -->
<bounds x="84" y="93" width="4" height="4" /><color alpha="0.25" /> <bounds x="84" y="93" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY1_4" inputmask="0x80"> <!-- 5 --> <element ref="keys" inputtag="KEY.0" inputmask="0x10"> <!-- 5 -->
<bounds x="89" y="93" width="4" height="4" /><color alpha="0.25" /> <bounds x="89" y="93" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY1_5" inputmask="0x80"> <!-- 6 --> <element ref="keys" inputtag="KEY.0" inputmask="0x20"> <!-- 6 -->
<bounds x="94" y="93" width="4" height="4" /><color alpha="0.25" /> <bounds x="94" y="93" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY2_3" inputmask="0x80"> <!-- INFO --> <element ref="keys" inputtag="KEY.1" inputmask="0x08"> <!-- INFO -->
<bounds x="69" y="98" width="4" height="4" /><color alpha="0.25" /> <bounds x="69" y="98" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY2_5" inputmask="0x80"> <!-- POS --> <element ref="keys" inputtag="KEY.1" inputmask="0x20"> <!-- POS -->
<bounds x="74" y="98" width="4" height="4" /><color alpha="0.25" /> <bounds x="74" y="98" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY2_6" inputmask="0x80"> <!-- LEV --> <element ref="keys" inputtag="KEY.1" inputmask="0x40"> <!-- LEV -->
<bounds x="79" y="98" width="4" height="4" /><color alpha="0.25" /> <bounds x="79" y="98" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY2_7" inputmask="0x80"> <!-- MEM --> <element ref="keys" inputtag="KEY.1" inputmask="0x80"> <!-- MEM -->
<bounds x="84" y="98" width="4" height="4" /><color alpha="0.25" /> <bounds x="84" y="98" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY2_0" inputmask="0x80"> <!-- CL --> <element ref="keys" inputtag="KEY.1" inputmask="0x01"> <!-- CL -->
<bounds x="89" y="98" width="4" height="4" /><color alpha="0.25" /> <bounds x="89" y="98" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY2_1" inputmask="0x80"> <!-- ENT --> <element ref="keys" inputtag="KEY.1" inputmask="0x02"> <!-- ENT -->
<bounds x="94" y="98" width="4" height="4" /><color alpha="0.25" /> <bounds x="94" y="98" width="4" height="4" /><color alpha="0.25" />
</element> </element>
@ -523,16 +545,16 @@ license:CC0
<element ref="keys" inputtag="RESET" inputmask="0x02"> <!-- RES --> <element ref="keys" inputtag="RESET" inputmask="0x02"> <!-- RES -->
<bounds x="74" y="103" width="4" height="4" /><color alpha="0.25" /> <bounds x="74" y="103" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY2_2" inputmask="0x80"> <!-- BEST --> <element ref="keys" inputtag="KEY.1" inputmask="0x04"> <!-- BEST -->
<bounds x="79" y="103" width="4" height="4" /><color alpha="0.25" /> <bounds x="79" y="103" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY2_4" inputmask="0x80"> <!-- MON --> <element ref="keys" inputtag="KEY.1" inputmask="0x10"> <!-- MON -->
<bounds x="84" y="103" width="4" height="4" /><color alpha="0.25" /> <bounds x="84" y="103" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY1_7" inputmask="0x80"> <!-- BLACK --> <element ref="keys" inputtag="KEY.0" inputmask="0x80"> <!-- BLACK -->
<bounds x="89" y="103" width="4" height="4" /><color alpha="0.25" /> <bounds x="89" y="103" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY1_6" inputmask="0x80"> <!-- WHITE --> <element ref="keys" inputtag="KEY.0" inputmask="0x40"> <!-- WHITE -->
<bounds x="94" y="103" width="4" height="4" /><color alpha="0.25" /> <bounds x="94" y="103" width="4" height="4" /><color alpha="0.25" />
</element> </element>
</group> </group>
@ -545,15 +567,10 @@ license:CC0
<element ref="cblack"><bounds x="13" y="-2" width="89" height="89" /></element> <element ref="cblack"><bounds x="13" y="-2" width="89" height="89" /></element>
<element ref="cwhite"><bounds x="17" y="2" width="81" height="81" /></element> <element ref="cwhite"><bounds x="17" y="2" width="81" height="81" /></element>
<group ref="panel1"><bounds x="37.5" y="91" width="20" height="8" /></group>
<group ref="panel2"><bounds x="67.5" y="88.25" width="29" height="1.5" /></group>
<group ref="buttons"><bounds x="67.5" y="91" width="29" height="14" /></group>
<group ref="sb_board"><bounds x="17.5" y="2.5" width="80" height="80" /></group> <group ref="sb_board"><bounds x="17.5" y="2.5" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="1.5" y="3" width="10" height="80" /></group> <group ref="sb_ui"><bounds x="1.5" y="3" width="10" height="80" /></group>
<!-- chessboard coords --> <!-- chessboard coords -->
<element ref="text_8"><bounds x="14.2" y="6.5" width="2" height="2" /></element> <element ref="text_8"><bounds x="14.2" y="6.5" width="2" height="2" /></element>
<element ref="text_7"><bounds x="14.2" y="16.5" width="2" height="2" /></element> <element ref="text_7"><bounds x="14.2" y="16.5" width="2" height="2" /></element>
<element ref="text_6"><bounds x="14.2" y="26.5" width="2" height="2" /></element> <element ref="text_6"><bounds x="14.2" y="26.5" width="2" height="2" /></element>
@ -571,6 +588,13 @@ license:CC0
<element ref="text_f"><bounds x="71.5" y="84" width="2" height="2" /></element> <element ref="text_f"><bounds x="71.5" y="84" width="2" height="2" /></element>
<element ref="text_g"><bounds x="81.5" y="84" width="2" height="2" /></element> <element ref="text_g"><bounds x="81.5" y="84" width="2" height="2" /></element>
<element ref="text_h"><bounds x="91.5" y="84" width="2" height="2" /></element> <element ref="text_h"><bounds x="91.5" y="84" width="2" height="2" /></element>
<!-- bottom side -->
<element ref="lcd_bg"><bounds x="37.5" y="91" width="20" height="8" /></element>
<group ref="display"><bounds x="38" y="91.8" width="19" height="6.4" /></group>
<group ref="leds"><bounds x="67.5" y="88.25" width="29" height="1.5" /></group>
<group ref="buttons"><bounds x="67.5" y="91" width="29" height="14" /></group>
</view> </view>
</mamelayout> </mamelayout>

View File

@ -205,7 +205,7 @@ license:CC0
<!-- leds --> <!-- leds -->
<repeat count="8"> <repeat count="8">
<param name="y" start="8.3" increment="10" /> <param name="y" start="8.3" increment="10" />
<param name="i1" start="11" increment="-1" /> <param name="i1" start="7" increment="-1" />
<repeat count="8"> <repeat count="8">
<param name="x" start="8.3" increment="10" /> <param name="x" start="8.3" increment="10" />
@ -423,13 +423,14 @@ license:CC0
<!-- display --> <!-- display -->
<element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element> <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
<element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
<element name="digit" defstate="0"> <element name="digit" defstate="0">
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg> <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element> </element>
<element name="ldot" defstate="0"> <element name="ldot">
<rect state="1"><color red="0.2" green="0.16" blue="0.16" /></rect> <rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
<rect state="0"><color red="0.49412" green="0.51765" blue="0.51765" /></rect> <rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
</element> </element>
<group name="display"> <group name="display">
@ -442,12 +443,18 @@ license:CC0
<element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element> <element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
<element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element> <element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
<element name="3.7" ref="ldot"><bounds x="36.25" y="96.42" width="0.6" height="0.6" /></element> <!-- digits DP are different from normal 7seg -->
<element name="2.7" ref="ldot"><bounds x="41.75" y="96.42" width="0.6" height="0.6" /></element> <element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
<element name="1.7" ref="ldot"><bounds x="47.25" y="96.42" width="0.6" height="0.6" /></element> <element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
<element name="0.7" ref="ldot"><bounds x="42.16" y="92.75" width="0.6" height="0.6" /></element> <element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="0.7" ref="ldot"><bounds x="41.94" y="94.55" width="0.6" height="0.6" /></element> <element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group> </group>

View File

@ -181,7 +181,7 @@ license:CC0
<!-- chessboard leds --> <!-- chessboard leds -->
<repeat count="8"> <repeat count="8">
<param name="x" start="8.2" increment="10" /> <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" /> <param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" /> <param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" /> <param name="lc" start="16" increment="1" />

View File

@ -4,11 +4,7 @@ license:CC0
--> -->
<mamelayout version="2"> <mamelayout version="2">
<element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element> <!-- define elements -->
<element name="digit" defstate="0">
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element>
<element name="led" defstate="0"> <element name="led" defstate="0">
<disk state="0"> <disk state="0">
@ -169,7 +165,7 @@ license:CC0
<!-- chessboard leds --> <!-- chessboard leds -->
<repeat count="8"> <repeat count="8">
<param name="x" start="8.2" increment="10" /> <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" /> <param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" /> <param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" /> <param name="lc" start="16" increment="1" />
@ -348,14 +344,41 @@ license:CC0
</group> </group>
<!-- Display panel --> <!-- display -->
<group name="panel"> <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
<element ref="lcd_bg"><bounds x="0" y="0" width="35" height="15" /></element> <element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
<element name="digit0" ref="digit"><bounds x="4" y="2.5" width="6" height="10" /></element>
<element name="digit1" ref="digit"><bounds x="11" y="2.5" width="6" height="10" /></element> <element name="digit" defstate="0">
<element name="digit2" ref="digit"><bounds x="18" y="2.5" width="6" height="10" /></element> <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
<element name="digit3" ref="digit"><bounds x="25" y="2.5" width="6" height="10" /></element> </element>
<element name="ldot">
<rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
<rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
</element>
<group name="display">
<bounds x="31" y="90.3" width="22.5" height="7.4" />
<element ref="lcd_bg"><bounds x="31" y="90.3" width="22.5" height="7.4" /></element>
<element name="digit3" ref="digit"><bounds x="32" y="91" width="4" height="6" /></element>
<element name="digit2" ref="digit"><bounds x="37.5" y="91" width="4" height="6" /></element>
<element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
<element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
<!-- digits DP are different from normal 7seg -->
<element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
<element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group> </group>
@ -529,8 +552,10 @@ license:CC0
<element ref="cblack"><bounds x="13" y="-2" width="89" height="89" /></element> <element ref="cblack"><bounds x="13" y="-2" width="89" height="89" /></element>
<element ref="cwhite"><bounds x="17" y="2" width="81" height="81" /></element> <element ref="cwhite"><bounds x="17" y="2" width="81" height="81" /></element>
<!-- chessboard coords --> <group ref="sb_board"><bounds x="17.5" y="2.5" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="1.5" y="3" width="10" height="80" /></group>
<!-- chessboard coords -->
<element ref="text_8"><bounds x="14.2" y="6.5" width="2" height="2" /></element> <element ref="text_8"><bounds x="14.2" y="6.5" width="2" height="2" /></element>
<element ref="text_7"><bounds x="14.2" y="16.5" width="2" height="2" /></element> <element ref="text_7"><bounds x="14.2" y="16.5" width="2" height="2" /></element>
<element ref="text_6"><bounds x="14.2" y="26.5" width="2" height="2" /></element> <element ref="text_6"><bounds x="14.2" y="26.5" width="2" height="2" /></element>
@ -549,11 +574,9 @@ license:CC0
<element ref="text_g"><bounds x="81.5" y="84" width="2" height="2" /></element> <element ref="text_g"><bounds x="81.5" y="84" width="2" height="2" /></element>
<element ref="text_h"><bounds x="91.5" y="84" width="2" height="2" /></element> <element ref="text_h"><bounds x="91.5" y="84" width="2" height="2" /></element>
<group ref="panel"><bounds x="37.5" y="91.5" width="20" height="8" /></group> <!-- bottom side -->
<element ref="lcd_bg"><bounds x="37.5" y="91.5" width="20" height="8" /></element>
<group ref="display"><bounds x="38" y="92.3" width="19" height="6.4" /></group>
<group ref="buttons"><bounds x="67.5" y="88.5" width="29" height="14" /></group> <group ref="buttons"><bounds x="67.5" y="88.5" width="29" height="14" /></group>
<group ref="sb_board"><bounds x="17.5" y="2.5" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="1.5" y="3" width="10" height="80" /></group>
</view> </view>
</mamelayout> </mamelayout>

View File

@ -47,13 +47,14 @@ license:CC0
<!-- display --> <!-- display -->
<element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element> <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
<element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
<element name="digit" defstate="0"> <element name="digit" defstate="0">
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg> <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element> </element>
<element name="ldot" defstate="0"> <element name="ldot">
<rect state="1"><color red="0.2" green="0.16" blue="0.16" /></rect> <rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
<rect state="0"><color red="0.49412" green="0.51765" blue="0.51765" /></rect> <rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
</element> </element>
<group name="display"> <group name="display">
@ -66,12 +67,18 @@ license:CC0
<element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element> <element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
<element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element> <element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
<element name="3.7" ref="ldot"><bounds x="36.25" y="96.42" width="0.6" height="0.6" /></element> <!-- digits DP are different from normal 7seg -->
<element name="2.7" ref="ldot"><bounds x="41.75" y="96.42" width="0.6" height="0.6" /></element> <element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
<element name="1.7" ref="ldot"><bounds x="47.25" y="96.42" width="0.6" height="0.6" /></element> <element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
<element name="0.7" ref="ldot"><bounds x="42.16" y="92.75" width="0.6" height="0.6" /></element> <element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="0.7" ref="ldot"><bounds x="41.94" y="94.55" width="0.6" height="0.6" /></element> <element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group> </group>

View File

@ -161,26 +161,36 @@ license:CC0
<param name="y" start="0" increment="10" /> <param name="y" start="0" increment="10" />
<param name="i" start="8" increment="-1" /> <param name="i" start="8" increment="-1" />
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.04" /></element> <element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.04" /></element> <element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.04" /></element> <element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.04" /></element> <element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.04" /></element> <element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.04" /></element> <element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.04" /></element> <element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x80"><bounds x="70" y="~y~" width="10" height="10" /><color alpha="0.04" /></element> <element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x80"><bounds x="70" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
</repeat> </repeat>
<!-- leds --> <!-- leds -->
<repeat count="8"> <repeat count="8">
<param name="y" start="8.3" increment="10" /> <param name="x" start="8.3" increment="10" />
<param name="i1" start="11" increment="-1" /> <param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" />
<param name="ld" start="24" increment="1" />
<param name="le" start="32" increment="1" />
<param name="lf" start="40" increment="1" />
<param name="lg" start="48" increment="1" />
<param name="lh" start="56" increment="1" />
<repeat count="8"> <element name="led~la~" ref="led"><bounds x="~x~" y="78.3" width="1.5" height="1.5" /></element>
<param name="x" start="8.3" increment="10" /> <element name="led~lb~" ref="led"><bounds x="~x~" y="68.3" width="1.5" height="1.5" /></element>
<param name="i2" start="0" increment="1" /> <element name="led~lc~" ref="led"><bounds x="~x~" y="58.3" width="1.5" height="1.5" /></element>
<element name="~i1~.~i2~" ref="led"><bounds x="~x~" y="~y~" width="1.5" height="1.5" /></element> <element name="led~ld~" ref="led"><bounds x="~x~" y="48.3" width="1.5" height="1.5" /></element>
</repeat> <element name="led~le~" ref="led"><bounds x="~x~" y="38.3" width="1.5" height="1.5" /></element>
<element name="led~lf~" ref="led"><bounds x="~x~" y="28.3" width="1.5" height="1.5" /></element>
<element name="led~lg~" ref="led"><bounds x="~x~" y="18.3" width="1.5" height="1.5" /></element>
<element name="led~lh~" ref="led"><bounds x="~x~" y="8.3" width="1.5" height="1.5" /></element>
</repeat> </repeat>
<repeat count="4"> <repeat count="4">
@ -289,8 +299,8 @@ license:CC0
<element ref="text_uib2"><bounds x="1.5" y="11.75" width="7" height="2" /></element> <element ref="text_uib2"><bounds x="1.5" y="11.75" width="7" height="2" /></element>
<element ref="text_uib3"><bounds x="1.5" y="15.25" width="7" height="2" /></element> <element ref="text_uib3"><bounds x="1.5" y="15.25" width="7" height="2" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x200"><bounds x="1" y="11.5" width="8" height="2.5" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:UI" inputmask="0x200"><bounds x="1" y="11.5" width="8" height="2.5" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x100"><bounds x="1" y="15" width="8" height="2.5" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:UI" inputmask="0x100"><bounds x="1" y="15" width="8" height="2.5" /><color alpha="0.25" /></element>
<!-- spawn --> <!-- spawn -->
<element ref="text_uis1"><bounds x="0" y="20.5" width="10" height="2" /></element> <element ref="text_uis1"><bounds x="0" y="20.5" width="10" height="2" /></element>
@ -310,18 +320,18 @@ license:CC0
<element name="piece_ui11" ref="piece"><bounds x="5" y="40" width="4" height="4" /></element> <element name="piece_ui11" ref="piece"><bounds x="5" y="40" width="4" height="4" /></element>
<element name="piece_ui12" ref="piece"><bounds x="5" y="44" width="4" height="4" /></element> <element name="piece_ui12" ref="piece"><bounds x="5" y="44" width="4" height="4" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0001"><bounds x="1" y="23" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0001"><bounds x="1" y="23" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0002"><bounds x="1" y="27" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0002"><bounds x="1" y="27" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0004"><bounds x="1" y="31" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0004"><bounds x="1" y="31" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0008"><bounds x="5" y="23" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0008"><bounds x="5" y="23" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0010"><bounds x="5" y="27" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0010"><bounds x="5" y="27" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0020"><bounds x="5" y="31" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0020"><bounds x="5" y="31" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0040"><bounds x="1" y="36" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0040"><bounds x="1" y="36" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0080"><bounds x="1" y="40" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0080"><bounds x="1" y="40" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0100"><bounds x="1" y="44" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0100"><bounds x="1" y="44" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0200"><bounds x="5" y="36" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0200"><bounds x="5" y="36" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0400"><bounds x="5" y="40" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0400"><bounds x="5" y="40" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0800"><bounds x="5" y="44" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0800"><bounds x="5" y="44" width="4" height="4" /><color alpha="0.25" /></element>
<!-- hand --> <!-- hand -->
<element ref="text_uih1"><bounds x="0" y="51" width="10" height="2" /></element> <element ref="text_uih1"><bounds x="0" y="51" width="10" height="2" /></element>
@ -330,7 +340,7 @@ license:CC0
<element ref="cwhite"><bounds x="1" y="60.5" width="8" height="2.5" /></element> <element ref="cwhite"><bounds x="1" y="60.5" width="8" height="2.5" /></element>
<element ref="text_uih2"><bounds x="1.5" y="60.75" width="7" height="2" /></element> <element ref="text_uih2"><bounds x="1.5" y="60.75" width="7" height="2" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x08"><bounds x="1" y="60.5" width="8" height="2.5" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:UI" inputmask="0x08"><bounds x="1" y="60.5" width="8" height="2.5" /><color alpha="0.25" /></element>
<!-- undo --> <!-- undo -->
<element ref="text_uiu1"><bounds x="0" y="66" width="10" height="2" /></element> <element ref="text_uiu1"><bounds x="0" y="66" width="10" height="2" /></element>
@ -343,10 +353,10 @@ license:CC0
<element ref="text_uiu2c"><bounds x="5.2" y="69.5" width="1.7" height="4" /></element> <element ref="text_uiu2c"><bounds x="5.2" y="69.5" width="1.7" height="4" /></element>
<element ref="text_uiu2d"><bounds x="7.3" y="69.5" width="1.7" height="4" /></element> <element ref="text_uiu2d"><bounds x="7.3" y="69.5" width="1.7" height="4" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x10"><bounds x="1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:UI" inputmask="0x10"><bounds x="1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x20"><bounds x="3.1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:UI" inputmask="0x20"><bounds x="3.1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x40"><bounds x="5.2" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:UI" inputmask="0x40"><bounds x="5.2" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x80"><bounds x="7.3" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:UI" inputmask="0x80"><bounds x="7.3" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element name="count_ui0" ref="text_uiu3a"><bounds x="0" y="75" width="4" height="2" /></element> <element name="count_ui0" ref="text_uiu3a"><bounds x="0" y="75" width="4" height="2" /></element>
<element name="count_ui1" ref="text_uiu3c"><bounds x="6" y="75" width="4" height="2" /></element> <element name="count_ui1" ref="text_uiu3c"><bounds x="6" y="75" width="4" height="2" /></element>
@ -357,13 +367,14 @@ license:CC0
<!-- display --> <!-- display -->
<element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element> <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
<element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
<element name="digit" defstate="0"> <element name="digit" defstate="0">
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg> <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element> </element>
<element name="ldot" defstate="0"> <element name="ldot">
<rect state="1"><color red="0.2" green="0.16" blue="0.16" /></rect> <rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
<rect state="0"><color red="0.49412" green="0.51765" blue="0.51765" /></rect> <rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
</element> </element>
<group name="display"> <group name="display">
@ -376,12 +387,18 @@ license:CC0
<element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element> <element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
<element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element> <element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
<element name="3.7" ref="ldot"><bounds x="36.25" y="96.42" width="0.6" height="0.6" /></element> <!-- digits DP are different from normal 7seg -->
<element name="2.7" ref="ldot"><bounds x="41.75" y="96.42" width="0.6" height="0.6" /></element> <element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
<element name="1.7" ref="ldot"><bounds x="47.25" y="96.42" width="0.6" height="0.6" /></element> <element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
<element name="0.7" ref="ldot"><bounds x="42.16" y="92.75" width="0.6" height="0.6" /></element> <element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="0.7" ref="ldot"><bounds x="41.94" y="94.55" width="0.6" height="0.6" /></element> <element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group> </group>

View File

@ -200,14 +200,24 @@ license:CC0
<!-- leds --> <!-- leds -->
<repeat count="8"> <repeat count="8">
<param name="y" start="8.3" increment="10" /> <param name="x" start="8.3" increment="10" />
<param name="i1" start="11" increment="-1" /> <param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" />
<param name="ld" start="24" increment="1" />
<param name="le" start="32" increment="1" />
<param name="lf" start="40" increment="1" />
<param name="lg" start="48" increment="1" />
<param name="lh" start="56" increment="1" />
<repeat count="8"> <element name="led~la~" ref="led"><bounds x="~x~" y="78.3" width="1.5" height="1.5" /></element>
<param name="x" start="8.3" increment="10" /> <element name="led~lb~" ref="led"><bounds x="~x~" y="68.3" width="1.5" height="1.5" /></element>
<param name="i2" start="0" increment="1" /> <element name="led~lc~" ref="led"><bounds x="~x~" y="58.3" width="1.5" height="1.5" /></element>
<element name="~i1~.~i2~" ref="led"><bounds x="~x~" y="~y~" width="1.5" height="1.5" /></element> <element name="led~ld~" ref="led"><bounds x="~x~" y="48.3" width="1.5" height="1.5" /></element>
</repeat> <element name="led~le~" ref="led"><bounds x="~x~" y="38.3" width="1.5" height="1.5" /></element>
<element name="led~lf~" ref="led"><bounds x="~x~" y="28.3" width="1.5" height="1.5" /></element>
<element name="led~lg~" ref="led"><bounds x="~x~" y="18.3" width="1.5" height="1.5" /></element>
<element name="led~lh~" ref="led"><bounds x="~x~" y="8.3" width="1.5" height="1.5" /></element>
</repeat> </repeat>
<!-- sensors, pieces --> <!-- sensors, pieces -->
@ -215,14 +225,14 @@ license:CC0
<param name="y" start="0" increment="10" /> <param name="y" start="0" increment="10" />
<param name="i" start="8" increment="-1" /> <param name="i" start="8" increment="-1" />
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.04" /></element> <element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.04" /></element> <element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.04" /></element> <element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.04" /></element> <element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.04" /></element> <element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.04" /></element> <element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.04" /></element> <element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element ref="hlbb" inputtag="board:RANK.~i~" inputmask="0x80"><bounds x="70" y="~y~" width="10" height="10" /><color alpha="0.04" /></element> <element ref="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x80"><bounds x="70" y="~y~" width="10" height="10" /><color alpha="0.04" /></element>
<element name="piece_a~i~" ref="piece"><bounds x="0" y="~y~" width="10" height="10" /></element> <element name="piece_a~i~" ref="piece"><bounds x="0" y="~y~" width="10" height="10" /></element>
<element name="piece_b~i~" ref="piece"><bounds x="10" y="~y~" width="10" height="10" /></element> <element name="piece_b~i~" ref="piece"><bounds x="10" y="~y~" width="10" height="10" /></element>
@ -304,8 +314,8 @@ license:CC0
<element ref="text_uib2"><bounds x="1.5" y="11.75" width="7" height="2" /></element> <element ref="text_uib2"><bounds x="1.5" y="11.75" width="7" height="2" /></element>
<element ref="text_uib3"><bounds x="1.5" y="15.25" width="7" height="2" /></element> <element ref="text_uib3"><bounds x="1.5" y="15.25" width="7" height="2" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x200"><bounds x="1" y="11.5" width="8" height="2.5" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:UI" inputmask="0x200"><bounds x="1" y="11.5" width="8" height="2.5" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x100"><bounds x="1" y="15" width="8" height="2.5" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:UI" inputmask="0x100"><bounds x="1" y="15" width="8" height="2.5" /><color alpha="0.25" /></element>
<!-- spawn --> <!-- spawn -->
<element ref="text_uis1"><bounds x="0" y="20.5" width="10" height="2" /></element> <element ref="text_uis1"><bounds x="0" y="20.5" width="10" height="2" /></element>
@ -325,18 +335,18 @@ license:CC0
<element name="piece_ui11" ref="piece"><bounds x="5" y="40" width="4" height="4" /></element> <element name="piece_ui11" ref="piece"><bounds x="5" y="40" width="4" height="4" /></element>
<element name="piece_ui12" ref="piece"><bounds x="5" y="44" width="4" height="4" /></element> <element name="piece_ui12" ref="piece"><bounds x="5" y="44" width="4" height="4" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0001"><bounds x="1" y="23" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0001"><bounds x="1" y="23" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0002"><bounds x="1" y="27" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0002"><bounds x="1" y="27" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0004"><bounds x="1" y="31" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0004"><bounds x="1" y="31" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0008"><bounds x="5" y="23" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0008"><bounds x="5" y="23" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0010"><bounds x="5" y="27" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0010"><bounds x="5" y="27" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0020"><bounds x="5" y="31" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0020"><bounds x="5" y="31" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0040"><bounds x="1" y="36" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0040"><bounds x="1" y="36" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0080"><bounds x="1" y="40" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0080"><bounds x="1" y="40" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0100"><bounds x="1" y="44" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0100"><bounds x="1" y="44" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0200"><bounds x="5" y="36" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0200"><bounds x="5" y="36" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0400"><bounds x="5" y="40" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0400"><bounds x="5" y="40" width="4" height="4" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:SPAWN" inputmask="0x0800"><bounds x="5" y="44" width="4" height="4" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:SPAWN" inputmask="0x0800"><bounds x="5" y="44" width="4" height="4" /><color alpha="0.25" /></element>
<!-- hand --> <!-- hand -->
<element ref="text_uih1"><bounds x="0" y="51" width="10" height="2" /></element> <element ref="text_uih1"><bounds x="0" y="51" width="10" height="2" /></element>
@ -345,7 +355,7 @@ license:CC0
<element ref="cwhite"><bounds x="1" y="60.5" width="8" height="2.5" /></element> <element ref="cwhite"><bounds x="1" y="60.5" width="8" height="2.5" /></element>
<element ref="text_uih2"><bounds x="1.5" y="60.75" width="7" height="2" /></element> <element ref="text_uih2"><bounds x="1.5" y="60.75" width="7" height="2" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x08"><bounds x="1" y="60.5" width="8" height="2.5" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:UI" inputmask="0x08"><bounds x="1" y="60.5" width="8" height="2.5" /><color alpha="0.25" /></element>
<!-- undo --> <!-- undo -->
<element ref="text_uiu1"><bounds x="0" y="66" width="10" height="2" /></element> <element ref="text_uiu1"><bounds x="0" y="66" width="10" height="2" /></element>
@ -358,10 +368,10 @@ license:CC0
<element ref="text_uiu2c"><bounds x="5.2" y="69.5" width="1.7" height="4" /></element> <element ref="text_uiu2c"><bounds x="5.2" y="69.5" width="1.7" height="4" /></element>
<element ref="text_uiu2d"><bounds x="7.3" y="69.5" width="1.7" height="4" /></element> <element ref="text_uiu2d"><bounds x="7.3" y="69.5" width="1.7" height="4" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x10"><bounds x="1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:UI" inputmask="0x10"><bounds x="1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x20"><bounds x="3.1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:UI" inputmask="0x20"><bounds x="3.1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x40"><bounds x="5.2" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:UI" inputmask="0x40"><bounds x="5.2" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element ref="hlub" inputtag="board:UI" inputmask="0x80"><bounds x="7.3" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element> <element ref="hlub" inputtag="board:board:UI" inputmask="0x80"><bounds x="7.3" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></element>
<element name="count_ui0" ref="text_uiu3a"><bounds x="0" y="75" width="4" height="2" /></element> <element name="count_ui0" ref="text_uiu3a"><bounds x="0" y="75" width="4" height="2" /></element>
<element name="count_ui1" ref="text_uiu3c"><bounds x="6" y="75" width="4" height="2" /></element> <element name="count_ui1" ref="text_uiu3c"><bounds x="6" y="75" width="4" height="2" /></element>
@ -372,13 +382,14 @@ license:CC0
<!-- display --> <!-- display -->
<element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element> <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
<element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
<element name="digit" defstate="0"> <element name="digit" defstate="0">
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg> <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element> </element>
<element name="ldot" defstate="0"> <element name="ldot">
<rect state="1"><color red="0.2" green="0.16" blue="0.16" /></rect> <rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
<rect state="0"><color red="0.49412" green="0.51765" blue="0.51765" /></rect> <rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
</element> </element>
<group name="display"> <group name="display">
@ -391,12 +402,18 @@ license:CC0
<element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element> <element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
<element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element> <element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
<element name="3.7" ref="ldot"><bounds x="36.25" y="96.42" width="0.6" height="0.6" /></element> <!-- digits DP are different from normal 7seg -->
<element name="2.7" ref="ldot"><bounds x="41.75" y="96.42" width="0.6" height="0.6" /></element> <element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
<element name="1.7" ref="ldot"><bounds x="47.25" y="96.42" width="0.6" height="0.6" /></element> <element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
<element name="0.7" ref="ldot"><bounds x="42.16" y="92.75" width="0.6" height="0.6" /></element> <element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="0.7" ref="ldot"><bounds x="41.94" y="94.55" width="0.6" height="0.6" /></element> <element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group> </group>
@ -545,10 +562,7 @@ license:CC0
<group ref="sb_board"><bounds x="3.5" y="3" width="80" height="80" /></group> <group ref="sb_board"><bounds x="3.5" y="3" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="-12.5" y="3" width="10" height="80" /></group> <group ref="sb_ui"><bounds x="-12.5" y="3" width="10" height="80" /></group>
<element ref="lcd_bg"><bounds x="23.5" y="92" width="20" height="8" /></element> <!-- chessboard coords -->
<group ref="display"><bounds x="24" y="92.8" width="19" height="6.4" /></group>
<group ref="buttons"><bounds x="53.5" y="89" width="29" height="14" /></group>
<element ref="text_8"><bounds x="0.2" y="7" width="2" height="2" /></element> <element ref="text_8"><bounds x="0.2" y="7" width="2" height="2" /></element>
<element ref="text_7"><bounds x="0.2" y="17" width="2" height="2" /></element> <element ref="text_7"><bounds x="0.2" y="17" width="2" height="2" /></element>
<element ref="text_6"><bounds x="0.2" y="27" width="2" height="2" /></element> <element ref="text_6"><bounds x="0.2" y="27" width="2" height="2" /></element>
@ -566,5 +580,10 @@ license:CC0
<element ref="text_f"><bounds x="57.5" y="84.5" width="2" height="2" /></element> <element ref="text_f"><bounds x="57.5" y="84.5" width="2" height="2" /></element>
<element ref="text_g"><bounds x="67.5" y="84.5" width="2" height="2" /></element> <element ref="text_g"><bounds x="67.5" y="84.5" width="2" height="2" /></element>
<element ref="text_h"><bounds x="77.5" y="84.5" width="2" height="2" /></element> <element ref="text_h"><bounds x="77.5" y="84.5" width="2" height="2" /></element>
<!-- bottom side -->
<element ref="lcd_bg"><bounds x="23.5" y="92" width="20" height="8" /></element>
<group ref="display"><bounds x="24" y="92.8" width="19" height="6.4" /></group>
<group ref="buttons"><bounds x="53.5" y="89" width="29" height="14" /></group>
</view> </view>
</mamelayout> </mamelayout>

View File

@ -3,14 +3,9 @@
license:CC0 license:CC0
--> -->
<mamelayout version="2"> <mamelayout version="2">
<!-- define elements --> <!-- define elements -->
<element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
<element name="digit" defstate="0">
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element>
<element name="led" defstate="0"> <element name="led" defstate="0">
<disk state="0"> <disk state="0">
<color red="0.20" green="0.0" blue="0.0" /> <color red="0.20" green="0.0" blue="0.0" />
@ -170,7 +165,7 @@ license:CC0
<!-- chessboard leds --> <!-- chessboard leds -->
<repeat count="8"> <repeat count="8">
<param name="x" start="8.2" increment="10" /> <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" /> <param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" /> <param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" /> <param name="lc" start="16" increment="1" />
@ -349,14 +344,41 @@ license:CC0
</group> </group>
<!-- 7seg panel --> <!-- display -->
<group name="panel1"> <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
<element ref="lcd_bg"><bounds x="0" y="0" width="35" height="15" /></element> <element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
<element name="digit0" ref="digit"><bounds x="4" y="2.5" width="6" height="10" /></element>
<element name="digit1" ref="digit"><bounds x="11" y="2.5" width="6" height="10" /></element> <element name="digit" defstate="0">
<element name="digit2" ref="digit"><bounds x="18" y="2.5" width="6" height="10" /></element> <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
<element name="digit3" ref="digit"><bounds x="25" y="2.5" width="6" height="10" /></element> </element>
<element name="ldot">
<rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
<rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
</element>
<group name="display">
<bounds x="31" y="90.3" width="22.5" height="7.4" />
<element ref="lcd_bg"><bounds x="31" y="90.3" width="22.5" height="7.4" /></element>
<element name="digit3" ref="digit"><bounds x="32" y="91" width="4" height="6" /></element>
<element name="digit2" ref="digit"><bounds x="37.5" y="91" width="4" height="6" /></element>
<element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
<element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
<!-- digits DP are different from normal 7seg -->
<element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
<element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group> </group>
@ -371,7 +393,7 @@ license:CC0
<element name="led_pos"> <text string="POS" align="1"> <color red="0.8" green="0.8" blue="0.8" /></text> </element> <element name="led_pos"> <text string="POS" align="1"> <color red="0.8" green="0.8" blue="0.8" /></text> </element>
<element name="led_mem"> <text string="MEM" align="1"> <color red="0.8" green="0.8" blue="0.8" /></text> </element> <element name="led_mem"> <text string="MEM" align="1"> <color red="0.8" green="0.8" blue="0.8" /></text> </element>
<group name="panel2"> <group name="leds">
<bounds x="69.1" y="89.9" width="29" height="1.5" /> <bounds x="69.1" y="89.9" width="29" height="1.5" />
<element ref="led_play"><bounds x="70.7" y="89.9" width="3.2" height="1.5" /></element> <element ref="led_play"><bounds x="70.7" y="89.9" width="3.2" height="1.5" /></element>
@ -488,41 +510,41 @@ license:CC0
<element ref="gray"><bounds x="89.7" y="105.3" width="0.9" height="0.9" /></element> <element ref="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="white"><bounds x="94.5" y="105.1" width="1.3" height="1.3" /></element>
<element ref="keys" inputtag="KEY1_0" inputmask="0x80"> <!-- CL --> <element ref="keys" inputtag="KEY.0" inputmask="0x01"> <!-- CL -->
<bounds x="69" y="93" width="4" height="4" /><color alpha="0.25" /> <bounds x="69" y="93" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY1_1" inputmask="0x80"> <!-- POS --> <element ref="keys" inputtag="KEY.0" inputmask="0x02"> <!-- POS -->
<bounds x="74" y="93" width="4" height="4" /><color alpha="0.25" /> <bounds x="74" y="93" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY1_2" inputmask="0x80"> <!-- MEM --> <element ref="keys" inputtag="KEY.0" inputmask="0x04"> <!-- MEM -->
<bounds x="79" y="93" width="4" height="4" /><color alpha="0.25" /> <bounds x="79" y="93" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY1_3" inputmask="0x80"> <!-- INFO --> <element ref="keys" inputtag="KEY.0" inputmask="0x08"> <!-- INFO -->
<bounds x="84" y="93" width="4" height="4" /><color alpha="0.25" /> <bounds x="84" y="93" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY1_4" inputmask="0x80"> <!-- LEV --> <element ref="keys" inputtag="KEY.0" inputmask="0x10"> <!-- LEV -->
<bounds x="89" y="93" width="4" height="4" /><color alpha="0.25" /> <bounds x="89" y="93" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY1_5" inputmask="0x80"> <!-- ENT --> <element ref="keys" inputtag="KEY.0" inputmask="0x20"> <!-- ENT -->
<bounds x="94" y="93" width="4" height="4" /><color alpha="0.25" /> <bounds x="94" y="93" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY2_3" inputmask="0x80"> <!-- A1 --> <element ref="keys" inputtag="KEY.1" inputmask="0x08"> <!-- A1 -->
<bounds x="69" y="98" width="4" height="4" /><color alpha="0.25" /> <bounds x="69" y="98" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY2_5" inputmask="0x80"> <!-- B2 --> <element ref="keys" inputtag="KEY.1" inputmask="0x20"> <!-- B2 -->
<bounds x="74" y="98" width="4" height="4" /><color alpha="0.25" /> <bounds x="74" y="98" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY2_6" inputmask="0x80"> <!-- C3 --> <element ref="keys" inputtag="KEY.1" inputmask="0x40"> <!-- C3 -->
<bounds x="79" y="98" width="4" height="4" /><color alpha="0.25" /> <bounds x="79" y="98" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY2_7" inputmask="0x80"> <!-- D4 --> <element ref="keys" inputtag="KEY.1" inputmask="0x80"> <!-- D4 -->
<bounds x="84" y="98" width="4" height="4" /><color alpha="0.25" /> <bounds x="84" y="98" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY2_0" inputmask="0x80"> <!-- E5 --> <element ref="keys" inputtag="KEY.1" inputmask="0x01"> <!-- E5 -->
<bounds x="89" y="98" width="4" height="4" /><color alpha="0.25" /> <bounds x="89" y="98" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY2_1" inputmask="0x80"> <!-- F6 --> <element ref="keys" inputtag="KEY.1" inputmask="0x02"> <!-- F6 -->
<bounds x="94" y="98" width="4" height="4" /><color alpha="0.25" /> <bounds x="94" y="98" width="4" height="4" /><color alpha="0.25" />
</element> </element>
@ -532,16 +554,16 @@ license:CC0
<element ref="keys" inputtag="RESET" inputmask="0x02"> <!-- RES --> <element ref="keys" inputtag="RESET" inputmask="0x02"> <!-- RES -->
<bounds x="74" y="103" width="4" height="4" /><color alpha="0.25" /> <bounds x="74" y="103" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY2_2" inputmask="0x80"> <!-- G7 --> <element ref="keys" inputtag="KEY.1" inputmask="0x04"> <!-- G7 -->
<bounds x="79" y="103" width="4" height="4" /><color alpha="0.25" /> <bounds x="79" y="103" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY2_4" inputmask="0x80"> <!-- H8 --> <element ref="keys" inputtag="KEY.1" inputmask="0x10"> <!-- H8 -->
<bounds x="84" y="103" width="4" height="4" /><color alpha="0.25" /> <bounds x="84" y="103" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY1_7" inputmask="0x80"> <!-- 9 --> <element ref="keys" inputtag="KEY.0" inputmask="0x80"> <!-- 9 -->
<bounds x="89" y="103" width="4" height="4" /><color alpha="0.25" /> <bounds x="89" y="103" width="4" height="4" /><color alpha="0.25" />
</element> </element>
<element ref="keys" inputtag="KEY1_6" inputmask="0x80"> <!-- 0 --> <element ref="keys" inputtag="KEY.0" inputmask="0x40"> <!-- 0 -->
<bounds x="94" y="103" width="4" height="4" /><color alpha="0.25" /> <bounds x="94" y="103" width="4" height="4" /><color alpha="0.25" />
</element> </element>
</group> </group>
@ -554,15 +576,10 @@ license:CC0
<element ref="cblack"><bounds x="13" y="-2" width="89" height="89" /></element> <element ref="cblack"><bounds x="13" y="-2" width="89" height="89" /></element>
<element ref="cwhite"><bounds x="17" y="2" width="81" height="81" /></element> <element ref="cwhite"><bounds x="17" y="2" width="81" height="81" /></element>
<group ref="panel1"><bounds x="37.5" y="91" width="20" height="8" /></group>
<group ref="panel2"><bounds x="67.5" y="88.25" width="29" height="1.5" /></group>
<group ref="buttons"><bounds x="67.5" y="91" width="29" height="14" /></group>
<group ref="sb_board"><bounds x="17.5" y="2.5" width="80" height="80" /></group> <group ref="sb_board"><bounds x="17.5" y="2.5" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="1.5" y="3" width="10" height="80" /></group> <group ref="sb_ui"><bounds x="1.5" y="3" width="10" height="80" /></group>
<!-- chessboard coords --> <!-- chessboard coords -->
<element ref="text_8"><bounds x="14.2" y="6.5" width="2" height="2" /></element> <element ref="text_8"><bounds x="14.2" y="6.5" width="2" height="2" /></element>
<element ref="text_7"><bounds x="14.2" y="16.5" width="2" height="2" /></element> <element ref="text_7"><bounds x="14.2" y="16.5" width="2" height="2" /></element>
<element ref="text_6"><bounds x="14.2" y="26.5" width="2" height="2" /></element> <element ref="text_6"><bounds x="14.2" y="26.5" width="2" height="2" /></element>
@ -580,6 +597,13 @@ license:CC0
<element ref="text_f"><bounds x="71.5" y="84" width="2" height="2" /></element> <element ref="text_f"><bounds x="71.5" y="84" width="2" height="2" /></element>
<element ref="text_g"><bounds x="81.5" y="84" width="2" height="2" /></element> <element ref="text_g"><bounds x="81.5" y="84" width="2" height="2" /></element>
<element ref="text_h"><bounds x="91.5" y="84" width="2" height="2" /></element> <element ref="text_h"><bounds x="91.5" y="84" width="2" height="2" /></element>
<!-- bottom side -->
<element ref="lcd_bg"><bounds x="37.5" y="91" width="20" height="8" /></element>
<group ref="display"><bounds x="38" y="91.8" width="19" height="6.4" /></group>
<group ref="leds"><bounds x="67.5" y="88.25" width="29" height="1.5" /></group>
<group ref="buttons"><bounds x="67.5" y="91" width="29" height="14" /></group>
</view> </view>
</mamelayout> </mamelayout>

View File

@ -3,15 +3,11 @@
license:CC0 license:CC0
--> -->
<mamelayout version="2"> <mamelayout version="2">
<!-- define elements --> <!-- define elements -->
<element name="white"><rect><color red="1" green="1" blue="1" /></rect></element> <element name="white"><rect><color red="1" green="1" blue="1" /></rect></element>
<element name="blackb"><rect><color red="0" green="0" blue="0" /></rect></element> <element name="blackb"><rect><color red="0" green="0" blue="0" /></rect></element>
<element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
<element name="digit" defstate="0">
<led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
</element>
<element name="led" defstate="0"> <element name="led" defstate="0">
<disk state="0"> <disk state="0">
@ -353,17 +349,47 @@ license:CC0
</group> </group>
<!-- lcd/button panel --> <!-- display -->
<group name="panel1"> <element name="lcd_bg"><rect><color red="0.54" green="0.57" blue="0.58" /></rect></element>
<element ref="lcd_bg"><bounds x="0" y="0" width="31" height="14" /></element> <element name="ldot_hide"><disk><color red="0.54" green="0.57" blue="0.58" /></disk></element>
<element name="digit3" ref="digit"><bounds x="2" y="2" width="6" height="10" /></element>
<element name="digit2" ref="digit"><bounds x="9" y="2" width="6" height="10" /></element> <element name="digit" defstate="0">
<element name="digit1" ref="digit"><bounds x="16" y="2" width="6" height="10" /></element> <led7seg><color red="0.2" green="0.16" blue="0.16" /></led7seg>
<element name="digit0" ref="digit"><bounds x="23" y="2" width="6" height="10" /></element> </element>
<element name="ldot">
<rect><color red="0.49412" green="0.51765" blue="0.51765" /></rect>
<rect statemask="0x80"><color red="0.2" green="0.16" blue="0.16" /></rect>
</element>
<group name="display">
<bounds x="31" y="90.3" width="22.5" height="7.4" />
<element ref="lcd_bg"><bounds x="31" y="90.3" width="22.5" height="7.4" /></element>
<element name="digit3" ref="digit"><bounds x="32" y="91" width="4" height="6" /></element>
<element name="digit2" ref="digit"><bounds x="37.5" y="91" width="4" height="6" /></element>
<element name="digit1" ref="digit"><bounds x="43" y="91" width="4" height="6" /></element>
<element name="digit0" ref="digit"><bounds x="48.5" y="91" width="4" height="6" /></element>
<!-- digits DP are different from normal 7seg -->
<element ref="ldot_hide"><bounds x="35.3" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="40.8" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="46.3" y="96.3" width="0.85" height="0.85" /></element>
<element ref="ldot_hide"><bounds x="51.8" y="96.3" width="0.85" height="0.85" /></element>
<element name="digit3" ref="ldot"><bounds x="36.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit2" ref="ldot"><bounds x="41.72" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit1" ref="ldot"><bounds x="47.22" y="96.42" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="42.07" y="92.75" width="0.6" height="0.6" /></element>
<element name="digit0" ref="ldot"><bounds x="41.92" y="94.55" width="0.6" height="0.6" /></element>
</group> </group>
<group name="panel2">
<!-- button panel -->
<group name="buttons">
<bounds left="0" right="24" top="7" bottom="24" /> <bounds left="0" right="24" top="7" bottom="24" />
<element ref="white"><bounds x="13.2" y="21.4" width="9.6" height="0.8" /> </element> <element ref="white"><bounds x="13.2" y="21.4" width="9.6" height="0.8" /> </element>
@ -408,8 +434,11 @@ license:CC0
<view name="Internal Layout"> <view name="Internal Layout">
<bounds left="1" right="129" top="0.5" bottom="90" /> <bounds left="1" right="129" top="0.5" bottom="90" />
<!-- chessboard coords --> <element ref="cwhite"><bounds x="19.5" y="2.5" width="81" height="81" /></element>
<group ref="sb_board"><bounds x="20" y="3" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="2.5" y="3" width="10" height="80" /></group>
<!-- chessboard coords -->
<element ref="text_8"><bounds x="14.2" y="7" width="2" height="2" /></element> <element ref="text_8"><bounds x="14.2" y="7" width="2" height="2" /></element>
<element ref="text_7"><bounds x="14.2" y="17" width="2" height="2" /></element> <element ref="text_7"><bounds x="14.2" y="17" width="2" height="2" /></element>
<element ref="text_6"><bounds x="14.2" y="27" width="2" height="2" /></element> <element ref="text_6"><bounds x="14.2" y="27" width="2" height="2" /></element>
@ -428,9 +457,7 @@ license:CC0
<element ref="text_g"><bounds x="84" y="86.5" width="2" height="2" /></element> <element ref="text_g"><bounds x="84" y="86.5" width="2" height="2" /></element>
<element ref="text_h"><bounds x="94" y="86.5" width="2" height="2" /></element> <element ref="text_h"><bounds x="94" y="86.5" width="2" height="2" /></element>
<element ref="cwhite"><bounds x="19.5" y="2.5" width="81" height="81" /></element> <!-- chessboard leds -->
<!-- chessboard leds -->
<element name="1.0" ref="ledr"><bounds x="24" y="85" width="2" height="1" /></element> <element name="1.0" ref="ledr"><bounds x="24" y="85" width="2" height="1" /></element>
<element name="1.1" ref="ledr"><bounds x="34" y="85" width="2" height="1" /></element> <element name="1.1" ref="ledr"><bounds x="34" y="85" width="2" height="1" /></element>
<element name="1.2" ref="ledr"><bounds x="44" y="85" width="2" height="1" /></element> <element name="1.2" ref="ledr"><bounds x="44" y="85" width="2" height="1" /></element>
@ -449,11 +476,9 @@ license:CC0
<element name="2.6" ref="ledr"><bounds x="16.5" y="17.5" width="2" height="1" /></element> <element name="2.6" ref="ledr"><bounds x="16.5" y="17.5" width="2" height="1" /></element>
<element name="2.7" ref="ledr"><bounds x="16.5" y="7.5" width="2" height="1" /></element> <element name="2.7" ref="ledr"><bounds x="16.5" y="7.5" width="2" height="1" /></element>
<!-- LCD panel --> <!-- side panel -->
<group ref="panel1"><bounds x="107.5" y="59" width="15" height="6" /></group> <element ref="lcd_bg"><bounds x="106.2" y="56.3" width="17.6" height="6.7" /></element>
<group ref="panel2"><bounds x="103" y="69" width="24" height="17" /></group> <group ref="display"><bounds x="106.5" y="56.8" width="17" height="5.7" /></group>
<group ref="buttons"><bounds x="103" y="69" width="24" height="17" /></group>
<group ref="sb_board"><bounds x="20" y="3" width="80" height="80" /></group>
<group ref="sb_ui"><bounds x="2.5" y="3" width="10" height="80" /></group>
</view> </view>
</mamelayout> </mamelayout>

View File

@ -155,7 +155,7 @@ license:CC0
<!-- chessboard leds --> <!-- chessboard leds -->
<repeat count="8"> <repeat count="8">
<param name="x" start="8.2" increment="10" /> <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" /> <param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" /> <param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" /> <param name="lc" start="16" increment="1" />

View File

@ -40,48 +40,48 @@ license:CC0
</element> </element>
<element name="led7seg_background"><rect><color red="0.54" green="0.57" blue="0.58" /> </rect></element> <element name="led7seg_background"><rect><color red="0.54" green="0.57" blue="0.58" /> </rect></element>
<element name="background"><rect><color red="0.59" green="0.39" blue="0.20" /></rect></element> <element name="background"><rect><color red="0.56" green="0.33" blue="0.12" /></rect></element>
<element name="white"><rect><color red="0.80" green="0.73" blue="0.63" /></rect></element> <element name="white"><rect><color red="0.84" green="0.75" blue="0.50" /></rect></element>
<element name="text_1"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="1"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_1"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="1"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_2"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="2"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_2"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="2"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_3"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="3"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_3"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="3"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_4"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="4"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_4"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="4"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_5"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="5"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_5"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="5"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_6"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="6"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_6"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="6"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_7"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="7"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_7"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="7"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_8"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="8"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_8"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="8"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_a"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="A"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_a"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="A"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_b"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="B"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_b"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="B"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_c"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="C"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_c"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="C"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_d"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="D"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_d"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="D"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_e"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="E"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_e"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="E"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_f"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="F"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_f"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="F"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_g"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="G"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_g"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="G"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_h"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="H"> <color red="0.87" green="0.87" blue="0.84" /></text> </element> <element name="text_h"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="H"> <color red="0.87" green="0.87" blue="0.84" /></text> </element>
<element name="text_book"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="BOOK"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_book"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="BOOK"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_pos"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="POS"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_pos"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="POS"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_mem"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="MEM"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_mem"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="MEM"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_info"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="INFO"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_info"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="INFO"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_err"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="ERR"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_err"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="ERR"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_lev"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="LEV"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_lev"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="LEV"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_black"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="&#x25a1;"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_black"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="&#x25a1;"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_white"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="&#x25a0;"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_white"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="&#x25a0;"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_b1"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[P] 1"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_b1"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[P] 1"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_b2"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[N] 2"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_b2"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[N] 2"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_b3"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[B] 3"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_b3"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[B] 3"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_b4"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[R] 4"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_b4"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[R] 4"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_b5"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[Q] 5"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_b5"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[Q] 5"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_b6"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="[K] 6"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_b6"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="[K] 6"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_b7"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="&#x25a1; 7 &#x25c4;"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_b7"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="&#x25a1; 7 &#x25c4;"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_b8"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="&#x25a0; 8 &#x25ba;"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_b8"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="&#x25a0; 8 &#x25ba;"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_book9"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="BOOK 9"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_book9"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="BOOK 9"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_pos0"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="POS 0"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_pos0"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="POS 0"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_cl"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="CL"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_cl"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="CL"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_ent"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="ENT"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_ent"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="ENT"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_res"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="RES"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_res"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="RES"> <color red="1" green="1" blue="1" /></text> </element>
<element name="text_lcd"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect> <text string="MULTI INFO LCD"> <color red="1" green="1" blue="1" /></text> </element> <element name="text_lcd"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect> <text string="MULTI INFO LCD"> <color red="1" green="1" blue="1" /></text> </element>
<element name="piece" defstate="0"> <element name="piece" defstate="0">
<image file="chess/wp.svg" state="1"/> <image file="chess/wp.svg" state="1"/>
@ -117,8 +117,8 @@ license:CC0
<!-- sb board --> <!-- sb board -->
<element name="cblack"> <rect><color red="0.59" green="0.39" blue="0.20" /></rect></element> <element name="cblack"> <rect><color red="0.56" green="0.33" blue="0.12" /></rect></element>
<element name="cwhite"> <rect><color red="0.80" green="0.73" blue="0.63" /></rect></element> <element name="cwhite"> <rect><color red="0.84" green="0.75" blue="0.50" /></rect></element>
<element name="hlbb" defstate="0"> <element name="hlbb" defstate="0">
<text string=" "><bounds x="0" y="0" width="1" height="1" /></text> <text string=" "><bounds x="0" y="0" width="1" height="1" /></text>
@ -206,7 +206,7 @@ license:CC0
<!-- chessboard leds --> <!-- chessboard leds -->
<repeat count="8"> <repeat count="8">
<param name="x" start="8.2" increment="10" /> <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" /> <param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" /> <param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" /> <param name="lc" start="16" increment="1" />
@ -262,34 +262,34 @@ license:CC0
<element name="text_uit2"><text string="INTERFACE"><color red="0.81" green="0.8" blue="0.79" /></text></element> <element name="text_uit2"><text string="INTERFACE"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uib1"><text string="BOARD:"><color red="0.81" green="0.8" blue="0.79" /></text></element> <element name="text_uib1"><text string="BOARD:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uib2"> <element name="text_uib2">
<rect><color red="0.80" green="0.73" blue="0.63" /></rect> <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string="RESET"><color red="0.01" green="0.01" blue="0.01" /></text> <text string="RESET"><color red="0.01" green="0.01" blue="0.01" /></text>
</element> </element>
<element name="text_uib3"> <element name="text_uib3">
<rect><color red="0.80" green="0.73" blue="0.63" /></rect> <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string="CLEAR"><color red="0.01" green="0.01" blue="0.01" /></text> <text string="CLEAR"><color red="0.01" green="0.01" blue="0.01" /></text>
</element> </element>
<element name="text_uis1"><text string="SPAWN:"><color red="0.81" green="0.8" blue="0.79" /></text></element> <element name="text_uis1"><text string="SPAWN:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uih1"><text string="HAND:"><color red="0.81" green="0.8" blue="0.79" /></text></element> <element name="text_uih1"><text string="HAND:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uih2"> <element name="text_uih2">
<rect><color red="0.80" green="0.73" blue="0.63" /></rect> <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string="REMOVE"><color red="0.01" green="0.01" blue="0.01" /></text> <text string="REMOVE"><color red="0.01" green="0.01" blue="0.01" /></text>
</element> </element>
<element name="text_uiu1"><text string="UNDO:"><color red="0.81" green="0.8" blue="0.79" /></text></element> <element name="text_uiu1"><text string="UNDO:"><color red="0.81" green="0.8" blue="0.79" /></text></element>
<element name="text_uiu2a"> <element name="text_uiu2a">
<rect><color red="0.80" green="0.73" blue="0.63" /></rect> <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string=" &lt;&lt;"><color red="0.01" green="0.01" blue="0.01" /></text> <text string=" &lt;&lt;"><color red="0.01" green="0.01" blue="0.01" /></text>
</element> </element>
<element name="text_uiu2b"> <element name="text_uiu2b">
<rect><color red="0.80" green="0.73" blue="0.63" /></rect> <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string=" &lt; "><color red="0.01" green="0.01" blue="0.01" /></text> <text string=" &lt; "><color red="0.01" green="0.01" blue="0.01" /></text>
</element> </element>
<element name="text_uiu2c"> <element name="text_uiu2c">
<rect><color red="0.80" green="0.73" blue="0.63" /></rect> <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string=" &gt;"><color red="0.01" green="0.01" blue="0.01" /></text> <text string=" &gt;"><color red="0.01" green="0.01" blue="0.01" /></text>
</element> </element>
<element name="text_uiu2d"> <element name="text_uiu2d">
<rect><color red="0.80" green="0.73" blue="0.63" /></rect> <rect><color red="0.84" green="0.75" blue="0.50" /></rect>
<text string=" &gt;&gt;"><color red="0.01" green="0.01" blue="0.01" /></text> <text string=" &gt;&gt;"><color red="0.01" green="0.01" blue="0.01" /></text>
</element> </element>
<element name="text_uiu3a" defstate="0"> <element name="text_uiu3a" defstate="0">

View File

@ -187,7 +187,7 @@ license:CC0
<!-- chessboard leds --> <!-- chessboard leds -->
<repeat count="8"> <repeat count="8">
<param name="x" start="8.2" increment="10" /> <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" /> <param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" /> <param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" /> <param name="lc" start="16" increment="1" />

View File

@ -187,7 +187,7 @@ license:CC0
<!-- chessboard leds --> <!-- chessboard leds -->
<repeat count="8"> <repeat count="8">
<param name="x" start="8.2" increment="10" /> <param name="x" start="8.3" increment="10" />
<param name="la" start="0" increment="1" /> <param name="la" start="0" increment="1" />
<param name="lb" start="8" increment="1" /> <param name="lb" start="8" increment="1" />
<param name="lc" start="16" increment="1" /> <param name="lc" start="16" increment="1" />

View File

@ -76,6 +76,9 @@ void mephisto_board_device::device_start()
{ {
m_led_out.resolve(); m_led_out.resolve();
m_mux = 0xff;
m_led_data = 0;
save_item(NAME(m_mux)); save_item(NAME(m_mux));
save_item(NAME(m_led_data)); save_item(NAME(m_led_data));

View File

@ -2,7 +2,7 @@
// copyright-holders:Sandro Ronco // copyright-holders:Sandro Ronco
/********************************************************************** /**********************************************************************
Mephisto Sensors Board Mephisto Modular Sensors Board
*********************************************************************/ *********************************************************************/

View File

@ -0,0 +1,92 @@
// license:BSD-3-Clause
// copyright-holders:hap
/**********************************************************************
Hegener + Glaser Mephisto Display Module for modular chesscomputers,
the 1st version with a 4*7seg LCD. There is no LCD chip, it's handled
with 4 4015 dual shift registers.
*********************************************************************/
#include "emu.h"
#include "mmdisplay1.h"
DEFINE_DEVICE_TYPE(MEPHISTO_DISPLAY_MODULE1, mephisto_display1_device, "mdisplay1", "Mephisto Display Module 1")
//-------------------------------------------------
// constructor
//-------------------------------------------------
mephisto_display1_device::mephisto_display1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
device_t(mconfig, MEPHISTO_DISPLAY_MODULE1, tag, owner, clock),
m_digits(*this, "digit%u", 0U),
m_output_digit(*this)
{ }
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void mephisto_display1_device::device_start()
{
m_output_digit.resolve();
if (m_output_digit.isnull())
m_digits.resolve();
// register for savestates
save_item(NAME(m_strobe));
save_item(NAME(m_digit_idx));
save_item(NAME(m_digit_data));
}
//-------------------------------------------------
// device_reset - device-specific reset
//-------------------------------------------------
void mephisto_display1_device::device_reset()
{
m_strobe = 0;
m_digit_idx = 0;
// clear display
for (int i = 0; i < 4; i++)
m_digit_data[i] = 0;
update_lcd();
}
//-------------------------------------------------
// I/O handlers
//-------------------------------------------------
void mephisto_display1_device::update_lcd()
{
for (int i = 0; i < 4; i++)
{
if (m_output_digit.isnull())
m_digits[i] = m_digit_data[i];
else
m_output_digit(i, m_digit_data[i]);
}
}
void mephisto_display1_device::strobe_w(int state)
{
state = state ? 1 : 0;
// update lcd on rising edge
if (state && ~m_strobe)
update_lcd();
m_strobe = state;
}
void mephisto_display1_device::data_w(u8 data)
{
m_digit_data[m_digit_idx] = m_strobe ? ~data : data;
m_digit_idx = (m_digit_idx + 1) & 3;
}

View File

@ -0,0 +1,45 @@
// license:BSD-3-Clause
// copyright-holders:hap
/**********************************************************************
Mephisto Modular Display Module (1st version)
*********************************************************************/
#ifndef MAME_VIDEO_MMDISPLAY1_H
#define MAME_VIDEO_MMDISPLAY1_H
#pragma once
class mephisto_display1_device : public device_t
{
public:
mephisto_display1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
// callback is optional, it will output to digitx when not used
auto output_digit() { return m_output_digit.bind(); }
void strobe_w(int state);
void data_w(u8 data);
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
private:
output_finder<4> m_digits;
devcb_write8 m_output_digit;
void update_lcd();
int m_strobe = 0;
u8 m_digit_idx = 0;
u8 m_digit_data[4] = { 0, 0, 0, 0 };
};
DECLARE_DEVICE_TYPE(MEPHISTO_DISPLAY_MODULE1, mephisto_display1_device)
#endif // MAME_VIDEO_MMDISPLAY1_H

View File

@ -6,9 +6,6 @@ Hegener + Glaser Mephisto Display Module for modular chesscomputers,
the 2nd version with 2 LCD lines. The 16/32bit module also includes 8KB NVRAM, the 2nd version with 2 LCD lines. The 16/32bit module also includes 8KB NVRAM,
but that part is emulated in the driver. but that part is emulated in the driver.
TODO:
- add mmdisplay1.cpp, the one with shift registers and 4-digit lcd
*********************************************************************/ *********************************************************************/
#include "emu.h" #include "emu.h"
@ -16,13 +13,13 @@ TODO:
#include "mmdisplay2.h" #include "mmdisplay2.h"
DEFINE_DEVICE_TYPE(MEPHISTO_DISPLAY_MODULE2, mephisto_display_module2_device, "mdisplay2", "Mephisto Display Module 2") DEFINE_DEVICE_TYPE(MEPHISTO_DISPLAY_MODULE2, mephisto_display2_device, "mdisplay2", "Mephisto Display Module 2")
//------------------------------------------------- //-------------------------------------------------
// constructor // constructor
//------------------------------------------------- //-------------------------------------------------
mephisto_display_module2_device::mephisto_display_module2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) mephisto_display2_device::mephisto_display2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, MEPHISTO_DISPLAY_MODULE2, tag, owner, clock) : device_t(mconfig, MEPHISTO_DISPLAY_MODULE2, tag, owner, clock)
, m_lcd(*this, "hd44780") , m_lcd(*this, "hd44780")
, m_dac(*this, "dac") , m_dac(*this, "dac")
@ -34,7 +31,7 @@ mephisto_display_module2_device::mephisto_display_module2_device(const machine_c
// device_add_mconfig // device_add_mconfig
//------------------------------------------------- //-------------------------------------------------
void mephisto_display_module2_device::device_add_mconfig(machine_config &config) void mephisto_display2_device::device_add_mconfig(machine_config &config)
{ {
/* video hardware */ /* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
@ -45,25 +42,25 @@ void mephisto_display_module2_device::device_add_mconfig(machine_config &config)
screen.set_screen_update("hd44780", FUNC(hd44780_device::screen_update)); screen.set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
screen.set_palette("palette"); screen.set_palette("palette");
PALETTE(config, "palette", FUNC(mephisto_display_module2_device::lcd_palette), 3); PALETTE(config, "palette", FUNC(mephisto_display2_device::lcd_palette), 3);
HD44780(config, m_lcd, 0); HD44780(config, m_lcd, 0);
m_lcd->set_lcd_size(2, 16); m_lcd->set_lcd_size(2, 16);
m_lcd->set_pixel_update_cb(FUNC(mephisto_display_module2_device::lcd_pixel_update)); m_lcd->set_pixel_update_cb(FUNC(mephisto_display2_device::lcd_pixel_update));
/* sound hardware */ /* sound hardware */
SPEAKER(config, "speaker").front_center(); SPEAKER(config, "speaker").front_center();
DAC_2BIT_BINARY_WEIGHTED_ONES_COMPLEMENT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25); DAC_2BIT_BINARY_WEIGHTED_ONES_COMPLEMENT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
} }
void mephisto_display_module2_device::lcd_palette(palette_device &palette) const void mephisto_display2_device::lcd_palette(palette_device &palette) const
{ {
palette.set_pen_color(0, rgb_t(0xff, 0xff, 0xff)); // background palette.set_pen_color(0, rgb_t(0xff, 0xff, 0xff)); // background
palette.set_pen_color(1, rgb_t(0x00, 0x00, 0x00)); // lcd pixel on palette.set_pen_color(1, rgb_t(0x00, 0x00, 0x00)); // lcd pixel on
palette.set_pen_color(2, rgb_t(0xe8, 0xe8, 0xe8)); // lcd pixel off palette.set_pen_color(2, rgb_t(0xe8, 0xe8, 0xe8)); // lcd pixel off
} }
HD44780_PIXEL_UPDATE(mephisto_display_module2_device::lcd_pixel_update) HD44780_PIXEL_UPDATE(mephisto_display2_device::lcd_pixel_update)
{ {
if (x < 5 && y < 8 && line < 2 && pos < 16) if (x < 5 && y < 8 && line < 2 && pos < 16)
bitmap.pix(line*9 + 1 + y, 1 + pos*6 + x) = state ? 1 : 2; bitmap.pix(line*9 + 1 + y, 1 + pos*6 + x) = state ? 1 : 2;
@ -74,7 +71,7 @@ HD44780_PIXEL_UPDATE(mephisto_display_module2_device::lcd_pixel_update)
// device_start - device-specific startup // device_start - device-specific startup
//------------------------------------------------- //-------------------------------------------------
void mephisto_display_module2_device::device_start() void mephisto_display2_device::device_start()
{ {
save_item(NAME(m_latch)); save_item(NAME(m_latch));
save_item(NAME(m_ctrl)); save_item(NAME(m_ctrl));
@ -85,7 +82,7 @@ void mephisto_display_module2_device::device_start()
// device_reset - device-specific reset // device_reset - device-specific reset
//------------------------------------------------- //-------------------------------------------------
void mephisto_display_module2_device::device_reset() void mephisto_display2_device::device_reset()
{ {
m_latch = 0; m_latch = 0;
m_ctrl = 0; m_ctrl = 0;
@ -96,12 +93,12 @@ void mephisto_display_module2_device::device_reset()
// I/O handlers // I/O handlers
//------------------------------------------------- //-------------------------------------------------
void mephisto_display_module2_device::latch_w(uint8_t data) void mephisto_display2_device::latch_w(uint8_t data)
{ {
m_latch = data; m_latch = data;
} }
void mephisto_display_module2_device::io_w(uint8_t data) void mephisto_display2_device::io_w(uint8_t data)
{ {
if (BIT(data, 1) && !BIT(m_ctrl, 1)) if (BIT(data, 1) && !BIT(m_ctrl, 1))
m_lcd->write(BIT(data, 0), m_latch); m_lcd->write(BIT(data, 0), m_latch);

View File

@ -2,7 +2,7 @@
// copyright-holders:Sandro Ronco // copyright-holders:Sandro Ronco
/********************************************************************** /**********************************************************************
Mephisto Display Module (2nd version) Mephisto Modular Display Module (2nd version)
*********************************************************************/ *********************************************************************/
@ -19,13 +19,13 @@
#include "speaker.h" #include "speaker.h"
// ======================> mephisto_display_module2_device // ======================> mephisto_display2_device
class mephisto_display_module2_device : public device_t class mephisto_display2_device : public device_t
{ {
public: public:
// construction/destruction // construction/destruction
mephisto_display_module2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); mephisto_display2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
hd44780_device *get() { return m_lcd; } hd44780_device *get() { return m_lcd; }
@ -46,12 +46,12 @@ private:
void lcd_palette(palette_device &palette) const; void lcd_palette(palette_device &palette) const;
HD44780_PIXEL_UPDATE(lcd_pixel_update); HD44780_PIXEL_UPDATE(lcd_pixel_update);
uint8_t m_latch; uint8_t m_latch = 0;
uint8_t m_ctrl; uint8_t m_ctrl = 0;
}; };
// device type definition // device type definition
DECLARE_DEVICE_TYPE(MEPHISTO_DISPLAY_MODULE2, mephisto_display_module2_device) DECLARE_DEVICE_TYPE(MEPHISTO_DISPLAY_MODULE2, mephisto_display2_device)
#endif // MAME_VIDEO_MMDISPLAY2_H #endif // MAME_VIDEO_MMDISPLAY2_H