mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
New working machine added
------- Computer Chess (Conic) [hap, Sean Riddle]
This commit is contained in:
parent
8477c1229b
commit
afb8089ae5
@ -35,9 +35,6 @@ keypad legend:
|
||||
ПП - просмотр позиции (view position)
|
||||
УИ - уровень игры (game level)
|
||||
|
||||
TODO:
|
||||
- identify 0,9 buttons (unused on the chess games)
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
@ -76,8 +73,7 @@ public:
|
||||
// machine configs
|
||||
void intel02(machine_config &config);
|
||||
|
||||
// reset button is tied directly to CPU RESET pin
|
||||
DECLARE_INPUT_CHANGED_MEMBER(reset_button) { m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE); }
|
||||
DECLARE_INPUT_CHANGED_MEMBER(reset_button);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
@ -132,6 +128,14 @@ void intel02_state::machine_start()
|
||||
save_item(NAME(m_led_active));
|
||||
}
|
||||
|
||||
INPUT_CHANGED_MEMBER(intel02_state::reset_button)
|
||||
{
|
||||
// reset button goes to 8080/8255 RESET pins simultaneously (via 7474, and also a maze of NAND gates to who knows where)
|
||||
m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
|
||||
if (newval)
|
||||
m_ppi8255->reset();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
@ -190,8 +194,8 @@ READ8_MEMBER(intel02_state::input_r)
|
||||
|
||||
WRITE8_MEMBER(intel02_state::digit_w)
|
||||
{
|
||||
// d0-d7: digit segment data
|
||||
m_digit_data = bitswap<8>(data,7,0,1,2,3,4,5,6);
|
||||
// d0-d6: digit segment data, d7: N/C
|
||||
m_digit_data = bitswap<7>(data,0,1,2,3,4,5,6);
|
||||
update_display();
|
||||
}
|
||||
|
||||
@ -246,10 +250,10 @@ void intel02_state::main_io(address_map &map)
|
||||
|
||||
static INPUT_PORTS_START( intel02 )
|
||||
PORT_START("IN.0")
|
||||
PORT_BIT(0x0007, IP_ACTIVE_HIGH, IPT_UNKNOWN)
|
||||
PORT_BIT(0x0007, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("View Position") PORT_CODE(KEYCODE_V)
|
||||
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Game Level") PORT_CODE(KEYCODE_L)
|
||||
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_UNKNOWN)
|
||||
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD)
|
||||
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_H)
|
||||
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G)
|
||||
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_F)
|
||||
@ -258,7 +262,7 @@ static INPUT_PORTS_START( intel02 )
|
||||
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_C)
|
||||
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_B)
|
||||
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_A)
|
||||
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_UNKNOWN)
|
||||
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD)
|
||||
|
||||
PORT_START("IN.1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
@ -288,7 +292,7 @@ void intel02_state::intel02(machine_config &config)
|
||||
m_ppi8255->out_pb_callback().set(FUNC(intel02_state::digit_w));
|
||||
m_ppi8255->tri_pb_callback().set_constant(0);
|
||||
m_ppi8255->out_pc_callback().set(FUNC(intel02_state::control_w));
|
||||
m_ppi8255->tri_pc_callback().set_constant(0);
|
||||
m_ppi8255->tri_pc_callback().set_constant(0x80);
|
||||
|
||||
/* video hardware */
|
||||
TIMER(config, m_delay_update).configure_generic(FUNC(intel02_state::delay_update));
|
||||
|
@ -1,10 +1,17 @@
|
||||
// license:GPL-2.0+
|
||||
// copyright-holders:Peter Trauner, Wilbert Pol, hap
|
||||
// thanks-to:Sean Riddle
|
||||
/******************************************************************************
|
||||
|
||||
Driver file to handle emulation of the Novag/Videomaster Chess Champion MK I
|
||||
Initial version by PeT mess@utanet.at 2000,2001.
|
||||
|
||||
TODO:
|
||||
- verify cncchess beeper duration/frequency
|
||||
- cncchess middle leds
|
||||
|
||||
*******************************************************************************
|
||||
|
||||
The MK I was a clone of Data Cash Systems's CompuChess (1977, one of the first
|
||||
chess computers). The ROM is identical. DCS sued Novag Industries for copyright
|
||||
infringement and somehow didn't manage to win the case.
|
||||
@ -43,16 +50,31 @@ MK I hardware description:
|
||||
- Hardware addressing is controlled by a HBF4001AE.
|
||||
- No speaker.
|
||||
|
||||
*******************************************************************************
|
||||
|
||||
Conic Computer Chess (aka Master I in Germany) is also based on DCS CompuChess,
|
||||
probably the 2nd edition. Conic have done a few changes, not enough to hide that
|
||||
they 'borrowed' code from CompuChess. They also added a piezo circuit.
|
||||
|
||||
Fairchild 3850PK CPU @ 2MHz (LC circuit), 3853PK
|
||||
2KB ROM (3216), 256 bytes RAM (2*2111A)
|
||||
555, 4001, 4011 for display blinking and beeper
|
||||
|
||||
"bP" buttons are F, G, H (instead of A, B, C)
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/f8/f8.h"
|
||||
#include "machine/f3853.h"
|
||||
#include "machine/timer.h"
|
||||
#include "sound/beep.h"
|
||||
#include "speaker.h"
|
||||
|
||||
// internal artwork
|
||||
#include "cmpchess.lh" // clickable
|
||||
#include "mk1.lh" // clickable
|
||||
#include "cncchess.lh" // clickable
|
||||
|
||||
|
||||
namespace {
|
||||
@ -63,6 +85,8 @@ public:
|
||||
mk1_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_beeper_off(*this, "beeper_off"),
|
||||
m_beeper(*this, "beeper"),
|
||||
m_keypad(*this, "LINE%u", 1U),
|
||||
m_delay_display(*this, "delay_display_%u", 0),
|
||||
m_out_digit(*this, "digit%u", 0U)
|
||||
@ -70,6 +94,7 @@ public:
|
||||
|
||||
void cmpchess(machine_config &config);
|
||||
void mk1(machine_config &config);
|
||||
void cnc(machine_config &config);
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(reset_switch);
|
||||
|
||||
@ -79,21 +104,32 @@ protected:
|
||||
private:
|
||||
// devices/pointers
|
||||
required_device<cpu_device> m_maincpu;
|
||||
optional_device<timer_device> m_beeper_off;
|
||||
optional_device<beep_device> m_beeper;
|
||||
required_ioport_array<4> m_keypad;
|
||||
required_device_array<timer_device, 4> m_delay_display;
|
||||
output_finder<4> m_out_digit;
|
||||
|
||||
void main_io(address_map &map);
|
||||
void main_map(address_map &map);
|
||||
void main_io(address_map &map);
|
||||
void cnc_io(address_map &map);
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(beeper_off) { m_beeper->set_state(0); }
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(blink) { m_blink = !m_blink; update_display(); }
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(delay_display);
|
||||
void update_display();
|
||||
|
||||
DECLARE_READ8_MEMBER(beeper_r);
|
||||
DECLARE_WRITE8_MEMBER(input_w);
|
||||
DECLARE_READ8_MEMBER(input_r);
|
||||
DECLARE_WRITE8_MEMBER(digit_select_w);
|
||||
DECLARE_WRITE8_MEMBER(digit_data_w);
|
||||
DECLARE_READ8_MEMBER(digit_data_r);
|
||||
|
||||
DECLARE_WRITE8_MEMBER(input_digit_select_w) { input_w(space, offset, data); digit_select_w(space, offset, data); }
|
||||
DECLARE_WRITE8_MEMBER(input_digit_data_w) { input_w(space, offset, data); digit_data_w(space, offset, data); }
|
||||
|
||||
u8 m_inp_mux;
|
||||
u8 m_digit_select;
|
||||
u8 m_digit_data;
|
||||
bool m_blink;
|
||||
@ -105,11 +141,13 @@ void mk1_state::machine_start()
|
||||
m_out_digit.resolve();
|
||||
|
||||
// zerofill
|
||||
m_inp_mux = 0;
|
||||
m_digit_select = 0;
|
||||
m_digit_data = 0;
|
||||
m_blink = false;
|
||||
|
||||
// register for savestates
|
||||
save_item(NAME(m_inp_mux));
|
||||
save_item(NAME(m_digit_select));
|
||||
save_item(NAME(m_digit_data));
|
||||
save_item(NAME(m_blink));
|
||||
@ -161,13 +199,29 @@ void mk1_state::update_display()
|
||||
}
|
||||
|
||||
|
||||
// F3850 ports
|
||||
// I/O handlers
|
||||
|
||||
READ8_MEMBER(mk1_state::beeper_r)
|
||||
{
|
||||
// cncchess: trigger beeper
|
||||
if (!machine().side_effects_disabled() && m_beeper != nullptr)
|
||||
{
|
||||
m_beeper->set_state(1);
|
||||
m_beeper_off->adjust(attotime::from_msec(50)); // guessed
|
||||
}
|
||||
|
||||
return m_maincpu->space(AS_PROGRAM).read_byte(offset);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(mk1_state::digit_data_w)
|
||||
{
|
||||
// digit segment data, and also input mux
|
||||
// digit segment data
|
||||
m_digit_data = data;
|
||||
update_display();
|
||||
}
|
||||
|
||||
READ8_MEMBER(mk1_state::digit_data_r)
|
||||
{
|
||||
return m_digit_data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(mk1_state::digit_select_w)
|
||||
@ -182,18 +236,24 @@ WRITE8_MEMBER(mk1_state::digit_select_w)
|
||||
update_display();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(mk1_state::input_w)
|
||||
{
|
||||
// input matrix is shared with either digit_data_w, or digit_select_w
|
||||
m_inp_mux = data;
|
||||
}
|
||||
|
||||
READ8_MEMBER(mk1_state::input_r)
|
||||
{
|
||||
u8 data = m_digit_data;
|
||||
u8 data = m_inp_mux;
|
||||
|
||||
// d0-d3: multiplexed inputs from d4-d7
|
||||
for (int i = 0; i < 4; i++)
|
||||
if (m_digit_data & m_keypad[i]->read())
|
||||
if (m_inp_mux & m_keypad[i]->read())
|
||||
data |= 1 << i;
|
||||
|
||||
// d4-d7: multiplexed inputs from d0-d3
|
||||
for (int i = 0; i < 4; i++)
|
||||
if (BIT(m_digit_data, i))
|
||||
if (BIT(m_inp_mux, i))
|
||||
data |= m_keypad[i]->read();
|
||||
|
||||
return data;
|
||||
@ -209,15 +269,23 @@ void mk1_state::main_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x07ff).rom();
|
||||
map(0x1800, 0x18ff).ram();
|
||||
map(0x8000, 0xffff).r(FUNC(mk1_state::beeper_r));
|
||||
}
|
||||
|
||||
void mk1_state::main_io(address_map &map)
|
||||
{
|
||||
map(0x00, 0x00).rw(FUNC(mk1_state::input_r), FUNC(mk1_state::digit_data_w));
|
||||
map(0x00, 0x00).rw(FUNC(mk1_state::input_r), FUNC(mk1_state::input_digit_data_w));
|
||||
map(0x01, 0x01).w(FUNC(mk1_state::digit_select_w));
|
||||
map(0x0c, 0x0f).rw("smi", FUNC(f3853_device::read), FUNC(f3853_device::write));
|
||||
}
|
||||
|
||||
void mk1_state::cnc_io(address_map &map)
|
||||
{
|
||||
map(0x00, 0x00).rw(FUNC(mk1_state::digit_data_r), FUNC(mk1_state::digit_data_w));
|
||||
map(0x01, 0x01).rw(FUNC(mk1_state::input_r), FUNC(mk1_state::input_digit_select_w));
|
||||
map(0x0c, 0x0f).rw("smi", FUNC(f3853_device::read), FUNC(f3853_device::write));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
@ -253,6 +321,35 @@ static INPUT_PORTS_START( cmpchess )
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_R) PORT_TOGGLE PORT_CHANGED_MEMBER(DEVICE_SELF, mk1_state, reset_switch, nullptr) PORT_NAME("Reset Switch") // L.S. switch on the MK I
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( cncchess )
|
||||
PORT_START("LINE1")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1 / Black Pawn")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2 / Black Rook")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3 / Black Knight")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4 / Black Bishop")
|
||||
|
||||
PORT_START("LINE2")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5 / Black Queen")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6 / Black King")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_S) PORT_NAME("7 / SP") // search piece (same as fp)
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_I) PORT_NAME("8 / IP") // insert piece (same as ep)
|
||||
|
||||
PORT_START("LINE3")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("A / White Pawn")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_B) PORT_NAME("B / White Rook")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("C / White Knight")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_NAME("D / White Bishop")
|
||||
|
||||
PORT_START("LINE4")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("E / White Queen")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("F / White King")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_M) PORT_NAME("G / MD") // more data
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("H / GO")
|
||||
|
||||
PORT_START("RESET")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_CHANGED_MEMBER(DEVICE_SELF, mk1_state, reset_switch, nullptr) PORT_NAME("Reset")
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
@ -289,6 +386,22 @@ void mk1_state::mk1(machine_config &config)
|
||||
config.set_default_layout(layout_mk1);
|
||||
}
|
||||
|
||||
void mk1_state::cnc(machine_config &config)
|
||||
{
|
||||
mk1(config);
|
||||
|
||||
/* basic machine hardware */
|
||||
m_maincpu->set_addrmap(AS_IO, &mk1_state::cnc_io);
|
||||
|
||||
config.set_default_layout(layout_cncchess);
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "speaker").front_center();
|
||||
BEEP(config, m_beeper, 2000); // guessed
|
||||
m_beeper->add_route(ALL_OUTPUTS, "speaker", 0.25);
|
||||
TIMER(config, "beeper_off").configure_generic(FUNC(mk1_state::beeper_off));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
@ -305,6 +418,12 @@ ROM_START( ccmk1 )
|
||||
ROM_LOAD("82c210-1", 0x0000, 0x0800, CRC(278f7bf3) SHA1(b384c95ba691d52dfdddd35987a71e9746a46170) )
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( cncchess )
|
||||
ROM_REGION( 0x0800, "maincpu", 0 )
|
||||
ROM_LOAD("c48170.u1", 0x0000, 0x0800, CRC(5beace32) SHA1(9df924037614831a86b73eb3a16bbc80c63257a2) ) // 2316B
|
||||
ROM_END
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
|
||||
@ -316,3 +435,5 @@ ROM_END
|
||||
// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
|
||||
CONS( 1977, cmpchess, 0, 0, cmpchess, cmpchess, mk1_state, empty_init, "Data Cash Systems", "CompuChess", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1978, ccmk1, cmpchess, 0, mk1, cmpchess, mk1_state, empty_init, "Novag", "Chess Champion: MK I", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
|
||||
CONS( 1979, cncchess, 0, 0, cnc, cncchess, mk1_state, empty_init, "Conic", "Computer Chess (Conic)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
|
277
src/mame/layout/cncchess.lay
Normal file
277
src/mame/layout/cncchess.lay
Normal file
@ -0,0 +1,277 @@
|
||||
<?xml version="1.0"?>
|
||||
<mamelayout version="2">
|
||||
|
||||
<!-- define elements -->
|
||||
|
||||
<element name="blackb"><rect><color red="0" green="0" blue="0" /></rect></element>
|
||||
<element name="disk_blackb"><disk><color red="0" green="0" blue="0" /></disk></element>
|
||||
<element name="black"><rect><color red="0.25" green="0.25" blue="0.25" /></rect></element>
|
||||
<element name="disk_black"><disk><color red="0.25" green="0.25" blue="0.25" /></disk></element>
|
||||
<element name="white"><rect><color red="0.75" green="0.75" blue="0.75" /></rect></element>
|
||||
<element name="orange"><rect><color red="0.75" green="0.35" blue="0.05" /></rect></element>
|
||||
<element name="red"><rect><color red="1.0" green="0.1" blue="0.15" /></rect></element>
|
||||
|
||||
<element name="digit" defstate="0">
|
||||
<led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg>
|
||||
</element>
|
||||
|
||||
<element name="led" defstate="0">
|
||||
<disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk>
|
||||
<disk state="0"><color red="0.15" green="0.02" blue="0.03" /></disk>
|
||||
</element>
|
||||
|
||||
<element name="hl" defstate="0">
|
||||
<text string=" ">
|
||||
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
</text>
|
||||
<rect state="1">
|
||||
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
</rect>
|
||||
</element>
|
||||
|
||||
<element name="text_br">
|
||||
<rect><color red="0.75" green="0.35" blue="0.05" /></rect>
|
||||
<text string="RESET"><color red="0.05" green="0.05" blue="0.05" /></text>
|
||||
</element>
|
||||
|
||||
<element name="text_b01a">
|
||||
<rect><color red="0.25" green="0.25" blue="0.25" /></rect>
|
||||
<text string="A"><color red="0.85" green="0.85" blue="0.85" /></text>
|
||||
</element>
|
||||
<element name="text_b01b">
|
||||
<rect><color red="0.25" green="0.25" blue="0.25" /></rect>
|
||||
<text string="[P]"><color red="0.85" green="0.85" blue="0.85" /></text>
|
||||
</element>
|
||||
<element name="text_b02a">
|
||||
<rect><color red="0.25" green="0.25" blue="0.25" /></rect>
|
||||
<text string="B"><color red="0.85" green="0.85" blue="0.85" /></text>
|
||||
</element>
|
||||
<element name="text_b02b">
|
||||
<rect><color red="0.25" green="0.25" blue="0.25" /></rect>
|
||||
<text string="[R]"><color red="0.85" green="0.85" blue="0.85" /></text>
|
||||
</element>
|
||||
<element name="text_b03a">
|
||||
<rect><color red="0.25" green="0.25" blue="0.25" /></rect>
|
||||
<text string="C"><color red="0.85" green="0.85" blue="0.85" /></text>
|
||||
</element>
|
||||
<element name="text_b03b">
|
||||
<rect><color red="0.25" green="0.25" blue="0.25" /></rect>
|
||||
<text string="[N]"><color red="0.85" green="0.85" blue="0.85" /></text>
|
||||
</element>
|
||||
<element name="text_b04a">
|
||||
<rect><color red="0.25" green="0.25" blue="0.25" /></rect>
|
||||
<text string="D"><color red="0.85" green="0.85" blue="0.85" /></text>
|
||||
</element>
|
||||
<element name="text_b04b">
|
||||
<rect><color red="0.25" green="0.25" blue="0.25" /></rect>
|
||||
<text string="[B]"><color red="0.85" green="0.85" blue="0.85" /></text>
|
||||
</element>
|
||||
<element name="text_b05a">
|
||||
<rect><color red="0.25" green="0.25" blue="0.25" /></rect>
|
||||
<text string="E"><color red="0.85" green="0.85" blue="0.85" /></text>
|
||||
</element>
|
||||
<element name="text_b05b">
|
||||
<rect><color red="0.25" green="0.25" blue="0.25" /></rect>
|
||||
<text string="[Q]"><color red="0.85" green="0.85" blue="0.85" /></text>
|
||||
</element>
|
||||
<element name="text_b06a">
|
||||
<rect><color red="0.25" green="0.25" blue="0.25" /></rect>
|
||||
<text string="F"><color red="0.85" green="0.85" blue="0.85" /></text>
|
||||
</element>
|
||||
<element name="text_b06b">
|
||||
<rect><color red="0.25" green="0.25" blue="0.25" /></rect>
|
||||
<text string="[K]"><color red="0.85" green="0.85" blue="0.85" /></text>
|
||||
</element>
|
||||
<element name="text_b07a">
|
||||
<rect><color red="0.25" green="0.25" blue="0.25" /></rect>
|
||||
<text string="G"><color red="0.85" green="0.85" blue="0.85" /></text>
|
||||
</element>
|
||||
<element name="text_b07b">
|
||||
<rect><color red="0.25" green="0.25" blue="0.25" /></rect>
|
||||
<text string="MD"><color red="0.85" green="0.85" blue="0.85" /></text>
|
||||
</element>
|
||||
<element name="text_b08a">
|
||||
<rect><color red="0.25" green="0.25" blue="0.25" /></rect>
|
||||
<text string="H"><color red="0.85" green="0.85" blue="0.85" /></text>
|
||||
</element>
|
||||
<element name="text_b08b">
|
||||
<rect><color red="0.25" green="0.25" blue="0.25" /></rect>
|
||||
<text string="GO"><color red="0.85" green="0.85" blue="0.85" /></text>
|
||||
</element>
|
||||
|
||||
<element name="text_b09a">
|
||||
<rect><color red="0.75" green="0.75" blue="0.75" /></rect>
|
||||
<text string="1"><color red="0.05" green="0.05" blue="0.05" /></text>
|
||||
</element>
|
||||
<element name="text_b09b">
|
||||
<rect><color red="0.75" green="0.75" blue="0.75" /></rect>
|
||||
<text string="[P]"><color red="0.05" green="0.05" blue="0.05" /></text>
|
||||
</element>
|
||||
<element name="text_b10a">
|
||||
<rect><color red="0.75" green="0.75" blue="0.75" /></rect>
|
||||
<text string="2"><color red="0.05" green="0.05" blue="0.05" /></text>
|
||||
</element>
|
||||
<element name="text_b10b">
|
||||
<rect><color red="0.75" green="0.75" blue="0.75" /></rect>
|
||||
<text string="[R]"><color red="0.05" green="0.05" blue="0.05" /></text>
|
||||
</element>
|
||||
<element name="text_b11a">
|
||||
<rect><color red="0.75" green="0.75" blue="0.75" /></rect>
|
||||
<text string="3"><color red="0.05" green="0.05" blue="0.05" /></text>
|
||||
</element>
|
||||
<element name="text_b11b">
|
||||
<rect><color red="0.75" green="0.75" blue="0.75" /></rect>
|
||||
<text string="[N]"><color red="0.05" green="0.05" blue="0.05" /></text>
|
||||
</element>
|
||||
<element name="text_b12a">
|
||||
<rect><color red="0.75" green="0.75" blue="0.75" /></rect>
|
||||
<text string="4"><color red="0.05" green="0.05" blue="0.05" /></text>
|
||||
</element>
|
||||
<element name="text_b12b">
|
||||
<rect><color red="0.75" green="0.75" blue="0.75" /></rect>
|
||||
<text string="[B]"><color red="0.05" green="0.05" blue="0.05" /></text>
|
||||
</element>
|
||||
<element name="text_b13a">
|
||||
<rect><color red="0.75" green="0.75" blue="0.75" /></rect>
|
||||
<text string="5"><color red="0.05" green="0.05" blue="0.05" /></text>
|
||||
</element>
|
||||
<element name="text_b13b">
|
||||
<rect><color red="0.75" green="0.75" blue="0.75" /></rect>
|
||||
<text string="[Q]"><color red="0.05" green="0.05" blue="0.05" /></text>
|
||||
</element>
|
||||
<element name="text_b14a">
|
||||
<rect><color red="0.75" green="0.75" blue="0.75" /></rect>
|
||||
<text string="6"><color red="0.05" green="0.05" blue="0.05" /></text>
|
||||
</element>
|
||||
<element name="text_b14b">
|
||||
<rect><color red="0.75" green="0.75" blue="0.75" /></rect>
|
||||
<text string="[K]"><color red="0.05" green="0.05" blue="0.05" /></text>
|
||||
</element>
|
||||
<element name="text_b15a">
|
||||
<rect><color red="0.75" green="0.75" blue="0.75" /></rect>
|
||||
<text string="7"><color red="0.05" green="0.05" blue="0.05" /></text>
|
||||
</element>
|
||||
<element name="text_b15b">
|
||||
<rect><color red="0.75" green="0.75" blue="0.75" /></rect>
|
||||
<text string="SP"><color red="0.05" green="0.05" blue="0.05" /></text>
|
||||
</element>
|
||||
<element name="text_b16a">
|
||||
<rect><color red="0.75" green="0.75" blue="0.75" /></rect>
|
||||
<text string="8"><color red="0.05" green="0.05" blue="0.05" /></text>
|
||||
</element>
|
||||
<element name="text_b16b">
|
||||
<rect><color red="0.75" green="0.75" blue="0.75" /></rect>
|
||||
<text string="IP"><color red="0.05" green="0.05" blue="0.05" /></text>
|
||||
</element>
|
||||
|
||||
|
||||
<!-- build screen -->
|
||||
|
||||
<view name="Internal Layout">
|
||||
<bounds left="8.8" right="55.3" top="20" bottom="42.5" />
|
||||
|
||||
<!-- outer part, display -->
|
||||
|
||||
<bezel element="black"><bounds x="8.7" y="22" width="46.7" height="0.7" /></bezel>
|
||||
<bezel element="black"><bounds x="8.7" y="23.4" width="46.7" height="0.7" /></bezel>
|
||||
<bezel element="black"><bounds x="8.7" y="24.8" width="46.7" height="0.7" /></bezel>
|
||||
<bezel element="blackb"><bounds x="20" y="20" width="28" height="20" /></bezel>
|
||||
|
||||
<bezel element="black"><bounds x="19.3" y="27.3" width="32.0" height="20" /></bezel>
|
||||
<bezel element="black"><bounds x="17.3" y="29.3" width="36.0" height="20" /></bezel>
|
||||
<bezel element="blackb"><bounds x="18" y="28" width="34.6" height="20" /></bezel>
|
||||
<bezel element="disk_black"><bounds x="17.3" y="27.3" width="4" height="4" /></bezel>
|
||||
<bezel element="disk_blackb"><bounds x="18" y="28" width="2.6" height="2.6" /></bezel>
|
||||
<bezel element="disk_black"><bounds x="49.3" y="27.3" width="4" height="4" /></bezel>
|
||||
<bezel element="disk_blackb"><bounds x="50" y="28" width="2.6" height="2.6" /></bezel>
|
||||
<bezel element="blackb"><bounds x="19.3" y="28" width="32.0" height="20" /></bezel>
|
||||
<bezel element="blackb"><bounds x="18" y="29.3" width="34.6" height="20" /></bezel>
|
||||
<bezel element="blackb"><bounds x="15" y="42.6" width="50" height="20" /></bezel>
|
||||
|
||||
<bezel element="blackb"><bounds x="25.3" y="22" width="20" height="6.5" /></bezel>
|
||||
<bezel name="digit0" element="digit"><bounds x="28.3" y="23" width="3" height="4.5" /></bezel>
|
||||
<bezel name="digit1" element="digit"><bounds x="31.3" y="23" width="3" height="4.5" /></bezel>
|
||||
<bezel name="digit2" element="digit"><bounds x="36.3" y="23" width="3" height="4.5" /></bezel>
|
||||
<bezel name="digit3" element="digit"><bounds x="39.3" y="23" width="3" height="4.5" /></bezel>
|
||||
<bezel name="ledx" element="led"><bounds x="35.15" y="24.0" width="0.45" height="0.45" /></bezel>
|
||||
<bezel name="ledx" element="led"><bounds x="35.0" y="26.05" width="0.45" height="0.45" /></bezel>
|
||||
<bezel element="red"><bounds x="25.3" y="22" width="20" height="6.5" /><color alpha="0.15" /></bezel>
|
||||
|
||||
<!-- button panel -->
|
||||
|
||||
<bezel element="black"><bounds x="20" y="30" width="2.6" height="4.5" /></bezel>
|
||||
<bezel element="black"><bounds x="24" y="30" width="2.6" height="4.5" /></bezel>
|
||||
<bezel element="black"><bounds x="28" y="30" width="2.6" height="4.5" /></bezel>
|
||||
<bezel element="black"><bounds x="32" y="30" width="2.6" height="4.5" /></bezel>
|
||||
<bezel element="black"><bounds x="36" y="30" width="2.6" height="4.5" /></bezel>
|
||||
<bezel element="black"><bounds x="40" y="30" width="2.6" height="4.5" /></bezel>
|
||||
<bezel element="black"><bounds x="44" y="30" width="2.6" height="4.5" /></bezel>
|
||||
<bezel element="black"><bounds x="48" y="30" width="2.6" height="4.5" /></bezel>
|
||||
<bezel element="white"><bounds x="20" y="36.2" width="2.6" height="4.5" /></bezel>
|
||||
<bezel element="white"><bounds x="24" y="36.2" width="2.6" height="4.5" /></bezel>
|
||||
<bezel element="white"><bounds x="28" y="36.2" width="2.6" height="4.5" /></bezel>
|
||||
<bezel element="white"><bounds x="32" y="36.2" width="2.6" height="4.5" /></bezel>
|
||||
<bezel element="white"><bounds x="36" y="36.2" width="2.6" height="4.5" /></bezel>
|
||||
<bezel element="white"><bounds x="40" y="36.2" width="2.6" height="4.5" /></bezel>
|
||||
<bezel element="white"><bounds x="44" y="36.2" width="2.6" height="4.5" /></bezel>
|
||||
<bezel element="white"><bounds x="48" y="36.2" width="2.6" height="4.5" /></bezel>
|
||||
|
||||
<bezel element="text_b01a"><bounds x="20.10" y="30.4" width="2.4" height="1.2" /></bezel>
|
||||
<bezel element="text_b01b"><bounds x="20.15" y="32.0" width="2.4" height="1.9" /></bezel>
|
||||
<bezel element="text_b02a"><bounds x="24.10" y="30.4" width="2.4" height="1.2" /></bezel>
|
||||
<bezel element="text_b02b"><bounds x="24.15" y="32.0" width="2.4" height="1.9" /></bezel>
|
||||
<bezel element="text_b03a"><bounds x="28.10" y="30.4" width="2.4" height="1.2" /></bezel>
|
||||
<bezel element="text_b03b"><bounds x="28.15" y="32.0" width="2.4" height="1.9" /></bezel>
|
||||
<bezel element="text_b04a"><bounds x="32.10" y="30.4" width="2.4" height="1.2" /></bezel>
|
||||
<bezel element="text_b04b"><bounds x="32.15" y="32.0" width="2.4" height="1.9" /></bezel>
|
||||
<bezel element="text_b05a"><bounds x="36.10" y="30.4" width="2.4" height="1.2" /></bezel>
|
||||
<bezel element="text_b05b"><bounds x="36.15" y="32.0" width="2.4" height="1.9" /></bezel>
|
||||
<bezel element="text_b06a"><bounds x="40.10" y="30.4" width="2.4" height="1.2" /></bezel>
|
||||
<bezel element="text_b06b"><bounds x="40.15" y="32.0" width="2.4" height="1.9" /></bezel>
|
||||
<bezel element="text_b07a"><bounds x="44.10" y="30.4" width="2.4" height="1.2" /></bezel>
|
||||
<bezel element="text_b07b"><bounds x="44.15" y="32.0" width="2.4" height="1.9" /></bezel>
|
||||
<bezel element="text_b08a"><bounds x="48.10" y="30.4" width="2.4" height="1.2" /></bezel>
|
||||
<bezel element="text_b08b"><bounds x="48.15" y="32.0" width="2.4" height="1.9" /></bezel>
|
||||
|
||||
<bezel element="text_b09a"><bounds x="20.10" y="36.6" width="2.4" height="1.2" /></bezel>
|
||||
<bezel element="text_b09b"><bounds x="20.15" y="38.2" width="2.4" height="1.9" /></bezel>
|
||||
<bezel element="text_b10a"><bounds x="24.10" y="36.6" width="2.4" height="1.2" /></bezel>
|
||||
<bezel element="text_b10b"><bounds x="24.15" y="38.2" width="2.4" height="1.9" /></bezel>
|
||||
<bezel element="text_b11a"><bounds x="28.10" y="36.6" width="2.4" height="1.2" /></bezel>
|
||||
<bezel element="text_b11b"><bounds x="28.15" y="38.2" width="2.4" height="1.9" /></bezel>
|
||||
<bezel element="text_b12a"><bounds x="32.10" y="36.6" width="2.4" height="1.2" /></bezel>
|
||||
<bezel element="text_b12b"><bounds x="32.15" y="38.2" width="2.4" height="1.9" /></bezel>
|
||||
<bezel element="text_b13a"><bounds x="36.10" y="36.6" width="2.4" height="1.2" /></bezel>
|
||||
<bezel element="text_b13b"><bounds x="36.15" y="38.2" width="2.4" height="1.9" /></bezel>
|
||||
<bezel element="text_b14a"><bounds x="40.10" y="36.6" width="2.4" height="1.2" /></bezel>
|
||||
<bezel element="text_b14b"><bounds x="40.15" y="38.2" width="2.4" height="1.9" /></bezel>
|
||||
<bezel element="text_b15a"><bounds x="44.10" y="36.6" width="2.4" height="1.2" /></bezel>
|
||||
<bezel element="text_b15b"><bounds x="44.15" y="38.2" width="2.4" height="1.9" /></bezel>
|
||||
<bezel element="text_b16a"><bounds x="48.10" y="36.6" width="2.4" height="1.2" /></bezel>
|
||||
<bezel element="text_b16b"><bounds x="48.15" y="38.2" width="2.4" height="1.9" /></bezel>
|
||||
|
||||
<bezel element="hl" inputtag="LINE3" inputmask="0x80"><bounds x="20" y="30" width="2.6" height="4.5" /><color alpha="0.25" /></bezel>
|
||||
<bezel element="hl" inputtag="LINE3" inputmask="0x40"><bounds x="24" y="30" width="2.6" height="4.5" /><color alpha="0.25" /></bezel>
|
||||
<bezel element="hl" inputtag="LINE3" inputmask="0x20"><bounds x="28" y="30" width="2.6" height="4.5" /><color alpha="0.25" /></bezel>
|
||||
<bezel element="hl" inputtag="LINE3" inputmask="0x10"><bounds x="32" y="30" width="2.6" height="4.5" /><color alpha="0.25" /></bezel>
|
||||
<bezel element="hl" inputtag="LINE4" inputmask="0x80"><bounds x="36" y="30" width="2.6" height="4.5" /><color alpha="0.25" /></bezel>
|
||||
<bezel element="hl" inputtag="LINE4" inputmask="0x40"><bounds x="40" y="30" width="2.6" height="4.5" /><color alpha="0.25" /></bezel>
|
||||
<bezel element="hl" inputtag="LINE4" inputmask="0x20"><bounds x="44" y="30" width="2.6" height="4.5" /><color alpha="0.25" /></bezel>
|
||||
<bezel element="hl" inputtag="LINE4" inputmask="0x10"><bounds x="48" y="30" width="2.6" height="4.5" /><color alpha="0.25" /></bezel>
|
||||
<bezel element="hl" inputtag="LINE1" inputmask="0x80"><bounds x="20" y="36.2" width="2.6" height="4.5" /><color alpha="0.25" /></bezel>
|
||||
<bezel element="hl" inputtag="LINE1" inputmask="0x40"><bounds x="24" y="36.2" width="2.6" height="4.5" /><color alpha="0.25" /></bezel>
|
||||
<bezel element="hl" inputtag="LINE1" inputmask="0x20"><bounds x="28" y="36.2" width="2.6" height="4.5" /><color alpha="0.25" /></bezel>
|
||||
<bezel element="hl" inputtag="LINE1" inputmask="0x10"><bounds x="32" y="36.2" width="2.6" height="4.5" /><color alpha="0.25" /></bezel>
|
||||
<bezel element="hl" inputtag="LINE2" inputmask="0x80"><bounds x="36" y="36.2" width="2.6" height="4.5" /><color alpha="0.25" /></bezel>
|
||||
<bezel element="hl" inputtag="LINE2" inputmask="0x40"><bounds x="40" y="36.2" width="2.6" height="4.5" /><color alpha="0.25" /></bezel>
|
||||
<bezel element="hl" inputtag="LINE2" inputmask="0x20"><bounds x="44" y="36.2" width="2.6" height="4.5" /><color alpha="0.25" /></bezel>
|
||||
<bezel element="hl" inputtag="LINE2" inputmask="0x10"><bounds x="48" y="36.2" width="2.6" height="4.5" /><color alpha="0.25" /></bezel>
|
||||
|
||||
<bezel element="orange"><bounds x="10.8" y="37.15" width="4.5" height="2.6" /></bezel>
|
||||
<bezel element="text_br"><bounds x="10.9" y="37.6" width="4.3" height="1.5" /></bezel>
|
||||
<bezel element="hl" inputtag="RESET" inputmask="0x01"><bounds x="10.8" y="37.15" width="4.5" height="2.6" /><color alpha="0.25" /></bezel>
|
||||
|
||||
</view>
|
||||
</mamelayout>
|
@ -99,8 +99,8 @@
|
||||
<bezel element="button" inputtag="IN.0" inputmask="0x0100"><bounds x="21.57" y="26.7" width="3" height="2.5" /></bezel>
|
||||
<bezel element="button" inputtag="IN.0" inputmask="0x0080"><bounds x="25.93" y="26.7" width="3" height="2.5" /></bezel>
|
||||
<bezel element="button" inputtag="IN.0" inputmask="0x0040"><bounds x="30.27" y="26.7" width="3" height="2.5" /></bezel>
|
||||
<bezel element="button" inputtag="IN.x" inputmask="0x01"><bounds x="34.64" y="26.7" width="3" height="2.5" /></bezel>
|
||||
<bezel element="button" inputtag="IN.x" inputmask="0x01"><bounds x="39" y="26.7" width="3" height="2.5" /></bezel>
|
||||
<bezel element="button" inputtag="IN.0" inputmask="0x0020"><bounds x="34.64" y="26.7" width="3" height="2.5" /></bezel>
|
||||
<bezel element="button" inputtag="IN.0" inputmask="0x4000"><bounds x="39" y="26.7" width="3" height="2.5" /></bezel>
|
||||
|
||||
</view>
|
||||
</mamelayout>
|
||||
|
@ -21743,6 +21743,7 @@ mjsister // (c) 1986 Toaplan
|
||||
@source:mk1.cpp
|
||||
ccmk1 // Chess Champion MK I
|
||||
cmpchess
|
||||
cncchess
|
||||
|
||||
@source:mk14.cpp
|
||||
mk14 //
|
||||
|
Loading…
Reference in New Issue
Block a user