diff options
-rw-r--r-- | src/devices/cpu/pps41/mm75.h | 5 | ||||
-rw-r--r-- | src/devices/cpu/pps41/mm75op.cpp | 28 | ||||
-rw-r--r-- | src/devices/cpu/pps41/mm76.cpp | 3 | ||||
-rw-r--r-- | src/devices/cpu/pps41/mm76op.cpp | 12 | ||||
-rw-r--r-- | src/devices/cpu/pps41/pps41base.cpp | 41 | ||||
-rw-r--r-- | src/devices/cpu/pps41/pps41base.h | 14 | ||||
-rw-r--r-- | src/mame/drivers/hh_pps41.cpp | 161 | ||||
-rw-r--r-- | src/mame/layout/mastmind.lay | 61 | ||||
-rw-r--r-- | src/mame/layout/memoquiz.lay | 55 | ||||
-rw-r--r-- | src/mame/mame.lst | 1 |
10 files changed, 349 insertions, 32 deletions
diff --git a/src/devices/cpu/pps41/mm75.h b/src/devices/cpu/pps41/mm75.h index 5dd036a1086..39a14245cae 100644 --- a/src/devices/cpu/pps41/mm75.h +++ b/src/devices/cpu/pps41/mm75.h @@ -43,8 +43,11 @@ protected: virtual void device_start() override; // opcode handlers - virtual void op_ibm() override; virtual void op_ios() override; + virtual void op_i2c() override; + + virtual void op_ibm() override; + virtual void op_int1h() override; }; diff --git a/src/devices/cpu/pps41/mm75op.cpp b/src/devices/cpu/pps41/mm75op.cpp index 3f0769ebc8f..93e61af3ae9 100644 --- a/src/devices/cpu/pps41/mm75op.cpp +++ b/src/devices/cpu/pps41/mm75op.cpp @@ -9,14 +9,34 @@ // opcodes (differences with mm76_device) -void mm75_device::op_ibm() +// unsupported opcodes + +void mm75_device::op_ios() { - // IBM: does not PI5-8 pins + // IOS: does not have serial I/O op_illegal(); } -void mm75_device::op_ios() +void mm75_device::op_i2c() { - // IOS: does not have serial I/O + // I2C: does not PI5-8 pins + m_a = 0; op_illegal(); } + + +// slightly different opcodes + +void mm75_device::op_ibm() +{ + // IBM: INT1 is shared with RIO8 + mm76_device::op_ibm(); + m_a &= ~(m_int_line[1] << 3); +} + +void mm75_device::op_int1h() +{ + // INT1H: INT1 is shared with RIO8 + int state = (m_read_r() & m_r_output) >> 7 & m_int_line[1]; + m_skip = bool(state); +} diff --git a/src/devices/cpu/pps41/mm76.cpp b/src/devices/cpu/pps41/mm76.cpp index 38ce96ea67a..5ebda16f281 100644 --- a/src/devices/cpu/pps41/mm76.cpp +++ b/src/devices/cpu/pps41/mm76.cpp @@ -12,7 +12,7 @@ #include "pps41d.h" -DEFINE_DEVICE_TYPE(MM76, mm76_device, "mm76", "Rockwell MM76") // 640 bytes ROM, 48 bytes RAM +DEFINE_DEVICE_TYPE(MM76, mm76_device, "mm76", "Rockwell MM76") // 640 bytes ROM, 48 nibbles RAM DEFINE_DEVICE_TYPE(MM76L, mm76l_device, "mm76l", "Rockwell MM76L") // low-power DEFINE_DEVICE_TYPE(MM76E, mm76e_device, "mm76e", "Rockwell MM76E") // ROM extended to 1KB DEFINE_DEVICE_TYPE(MM76EL, mm76el_device, "mm76el", "Rockwell MM76EL") // low-power @@ -60,6 +60,7 @@ void mm76e_device::program_1k(address_map &map) void mm76_device::data_48x4(address_map &map) { map(0x00, 0x2f).ram(); + map(0x30, 0x3f).lr8(NAME([]() { return 0xf; })).nopw(); } diff --git a/src/devices/cpu/pps41/mm76op.cpp b/src/devices/cpu/pps41/mm76op.cpp index eb0537cb78e..0b50cfeb9dc 100644 --- a/src/devices/cpu/pps41/mm76op.cpp +++ b/src/devices/cpu/pps41/mm76op.cpp @@ -428,25 +428,27 @@ void mm76_device::op_i2c() void mm76_device::op_int1h() { // INT1H: skip on INT1 - op_todo(); + m_skip = bool(m_int_line[1]); } void mm76_device::op_din1() { // DIN1: test INT1 flip-flop - op_todo(); + m_skip = !m_int_ff[1]; + m_int_ff[1] = 1; } void mm76_device::op_int0l() { - // INT1H: skip on INT0 - op_todo(); + // INT0L: skip on INT0 + m_skip = !m_int_line[0]; } void mm76_device::op_din0() { // DIN0: test INT0 flip-flop - op_todo(); + m_skip = !m_int_ff[0]; + m_int_ff[0] = 1; } void mm76_device::op_seg1() diff --git a/src/devices/cpu/pps41/pps41base.cpp b/src/devices/cpu/pps41/pps41base.cpp index d0d99dc960d..e28b99ff1ab 100644 --- a/src/devices/cpu/pps41/pps41base.cpp +++ b/src/devices/cpu/pps41/pps41base.cpp @@ -38,8 +38,8 @@ TODO: but again does not explain why - documentation is conflicting whether or not MM76/MM75 can (re)set interrupt flip- flops with SOS/ROS opcodes +- add MCU mask options, there's one for inverting interrupts - add serial i/o -- add pseudo interrupts - add MM78 */ @@ -88,6 +88,10 @@ void pps41_base_device::device_start() m_read_r.resolve_safe(0xff); m_write_r.resolve_safe(); + // init RAM with 0xf + for (int i = 0; i <= m_datamask; i++) + m_data->write_byte(i, 0xf); + // zerofill m_pc = 0; m_prev_pc = 0; @@ -116,6 +120,8 @@ void pps41_base_device::device_start() m_d_mask = (1 << m_d_pins) - 1; m_d_output = 0; m_r_output = 0; + m_int_line[0] = m_int_line[1] = 1; + m_int_ff[0] = m_int_ff[1] = 0; // register for savestates save_item(NAME(m_pc)); @@ -143,6 +149,8 @@ void pps41_base_device::device_start() save_item(NAME(m_d_output)); save_item(NAME(m_r_output)); + save_item(NAME(m_int_line)); + save_item(NAME(m_int_ff)); // register state for debugger state_add(STATE_GENPC, "GENPC", m_pc).formatstr("%03X").noshow(); @@ -184,6 +192,37 @@ void pps41_base_device::device_reset() //------------------------------------------------- +// inputline handling +//------------------------------------------------- + +void pps41_base_device::execute_set_input(int line, int state) +{ + // negative voltage, Vdd=0, Vss(GND)=1 + state = (state) ? 0 : 1; + + switch (line) + { + case PPS41_INPUT_LINE_INT0: + // reset flip-flop on rising edge + if (state && !m_int_line[0]) + m_int_ff[0] = 0; + m_int_line[0] = state; + break; + + case PPS41_INPUT_LINE_INT1: + // reset flip-flop on falling edge + if (!state && m_int_line[1]) + m_int_ff[1] = 0; + m_int_line[1] = state; + break; + + default: + break; + } +} + + +//------------------------------------------------- // execute //------------------------------------------------- diff --git a/src/devices/cpu/pps41/pps41base.h b/src/devices/cpu/pps41/pps41base.h index 0834a38fb96..24a35f56c32 100644 --- a/src/devices/cpu/pps41/pps41base.h +++ b/src/devices/cpu/pps41/pps41base.h @@ -13,6 +13,12 @@ #include "machine/pla.h" +enum +{ + PPS41_INPUT_LINE_INT0 = 0, + PPS41_INPUT_LINE_INT1 +}; + class pps41_base_device : public cpu_device { @@ -31,10 +37,6 @@ public: auto read_r() { return m_read_r.bind(); } auto write_r() { return m_write_r.bind(); } - // set MCU mask options: - - //.. - protected: // construction/destruction pps41_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data); @@ -46,6 +48,8 @@ protected: // device_execute_interface overrides virtual u32 execute_min_cycles() const noexcept override { return 1; } virtual u32 execute_max_cycles() const noexcept override { return 2; } + virtual u32 execute_input_lines() const noexcept override { return 2; } + virtual void execute_set_input(int line, int state) override; virtual void execute_run() override; virtual void execute_one() = 0; @@ -103,6 +107,8 @@ protected: u16 m_d_mask; u16 m_d_output; u8 m_r_output; + int m_int_line[2]; + int m_int_ff[2]; // misc handlers virtual bool op_is_tr(u8 op) = 0; diff --git a/src/mame/drivers/hh_pps41.cpp b/src/mame/drivers/hh_pps41.cpp index 85ff6ccaf5f..34c943a8aa7 100644 --- a/src/mame/drivers/hh_pps41.cpp +++ b/src/mame/drivers/hh_pps41.cpp @@ -16,6 +16,7 @@ // internal artwork #include "mastmind.lh" +#include "memoquiz.lh" //#include "hh_pps41_test.lh" // common test-layout - use external artwork @@ -35,7 +36,7 @@ public: required_device<pps41_base_device> m_maincpu; optional_device<pwm_display_device> m_display; optional_device<speaker_sound_device> m_speaker; - optional_ioport_array<4> m_inputs; // max 4 + optional_ioport_array<5> m_inputs; // max 5 u16 m_inp_mux = 0; @@ -105,6 +106,7 @@ namespace { Invicta is the owner of the Mastermind game rights. The back of the unit says (C) 1977, but this electronic handheld version came out in 1979. + Or maybe there's an older revision. ***************************************************************************/ @@ -154,7 +156,7 @@ u8 mastmind_state::read_p() static INPUT_PORTS_START( mastmind ) PORT_START("IN.0") // DIO0 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Try") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Try") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_F) PORT_NAME("Fail") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) // display test? PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) @@ -163,7 +165,7 @@ static INPUT_PORTS_START( mastmind ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("Set") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("Clear") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("Clear") PORT_START("IN.2") // DIO2 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4") @@ -187,8 +189,8 @@ void mastmind_state::mastmind(machine_config &config) m_maincpu->read_p().set(FUNC(mastmind_state::read_p)); /* video hardware */ - PWM_DISPLAY(config, m_display).set_size(7, 7); - m_display->set_segmask(0x7f, 0x7f); + PWM_DISPLAY(config, m_display).set_size(8, 7); + m_display->set_segmask(0xff, 0x7f); config.set_default_layout(layout_mastmind); /* no sound! */ @@ -207,6 +209,153 @@ ROM_END + + +/*************************************************************************** + + M.E.M. Belgium Memoquiz + * PCB label: MEMOQUIZ MO3 + * MM75 MCU (label M7505 A7505-12, die label A7505) + * 9-digit 7seg VFD display, no sound + + It's a Mastermind game, not as straightforward as Invicta's version. + To start, press the "?" button to generate a new code, then try to guess it, + confirming with the "=" button. CD reveals the answer, PE is for player entry. + + known releases: + - Europe: Memoquiz + - UK: Memoquiz, published by Polymark + - USA: Mind Boggler (model 2626), published by Mattel + +***************************************************************************/ + +class memoquiz_state : public hh_pps41_state +{ +public: + memoquiz_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_pps41_state(mconfig, type, tag) + { } + + DECLARE_INPUT_CHANGED_MEMBER(digits_switch) { set_digits(); } + void set_digits(); + + void update_display(); + void write_d(u16 data); + void write_r(u8 data); + u8 read_p(); + void memoquiz(machine_config &config); + +protected: + virtual void machine_reset() override; +}; + +void memoquiz_state::machine_reset() +{ + hh_pps41_state::machine_reset(); + set_digits(); +} + +// handlers + +void memoquiz_state::set_digits() +{ + // digits switch is tied to MCU interrupt pins + u8 inp = m_inputs[4]->read(); + m_maincpu->set_input_line(0, (inp & 1) ? ASSERT_LINE : CLEAR_LINE); + m_maincpu->set_input_line(1, (inp & 2) ? CLEAR_LINE : ASSERT_LINE); +} + +void memoquiz_state::update_display() +{ + m_display->matrix(m_inp_mux, (m_inp_mux << 2 & 0x80) | (~m_r & 0x7f)); +} + +void memoquiz_state::write_d(u16 data) +{ + // DIO0-DIO7: digit select, DIO5 is also DP segment + // DIO0-DIO3: input mux + m_inp_mux = data; + update_display(); + + // DIO08: N/C, looks like they planned to add sound, but didn't +} + +void memoquiz_state::write_r(u8 data) +{ + // RIO1-RIO7: digit segment data + m_r = data; + update_display(); +} + +u8 memoquiz_state::read_p() +{ + // PI1-PI4: multiplexed inputs + return ~read_inputs(4); +} + +// config + +static INPUT_PORTS_START( memoquiz ) + PORT_START("IN.0") // DIO0 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0") + + PORT_START("IN.1") // DIO1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4") + + PORT_START("IN.2") // DIO2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("AC") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("CE") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8") + + PORT_START("IN.3") // DIO3 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("=") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("?") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("PE") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("CD") + + PORT_START("IN.4") + PORT_CONFNAME( 0x03, 0x01, "Digits" ) PORT_CHANGED_MEMBER(DEVICE_SELF, memoquiz_state, digits_switch, 0) + PORT_CONFSETTING( 0x01, "3" ) // INT0, Vdd when closed, pulled to GND when open + PORT_CONFSETTING( 0x02, "4" ) // INT1, GND when closed, pulled to Vdd when open + PORT_CONFSETTING( 0x00, "5" ) +INPUT_PORTS_END + +void memoquiz_state::memoquiz(machine_config &config) +{ + /* basic machine hardware */ + MM75(config, m_maincpu, 100000); // approximation + m_maincpu->write_d().set(FUNC(memoquiz_state::write_d)); + m_maincpu->write_r().set(FUNC(memoquiz_state::write_r)); + m_maincpu->read_p().set(FUNC(memoquiz_state::read_p)); + + /* video hardware */ + PWM_DISPLAY(config, m_display).set_size(8, 8); + m_display->set_segmask(0xff, 0xff); + config.set_default_layout(layout_memoquiz); + + /* no sound! */ +} + +// roms + +ROM_START( memoquiz ) + ROM_REGION( 0x0400, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD( "m7505_a7505-12", 0x0000, 0x0200, CRC(47223508) SHA1(97b62e0c453ae2e65d48e039ad65857dae2d4d76) ) + ROM_CONTINUE( 0x0380, 0x0080 ) + + ROM_REGION( 314, "maincpu:opla", 0 ) + ROM_LOAD( "mm76_memoquiz_output.pla", 0, 314, CRC(a5799b50) SHA1(9b4923b37c9ba8221ecece5a3370c605a880a453) ) +ROM_END + + + } // anonymous namespace /*************************************************************************** @@ -217,3 +366,5 @@ ROM_END // YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS CONS( 1979, mastmind, 0, 0, mastmind, mastmind, mastmind_state, empty_init, "Invicta Plastics", "Electronic Master Mind (Invicta)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) + +CONS( 1978, memoquiz, 0, 0, memoquiz, memoquiz, memoquiz_state, empty_init, "M.E.M. Belgium", "Memoquiz", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/layout/mastmind.lay b/src/mame/layout/mastmind.lay index 507bfc93422..78b6f9719d1 100644 --- a/src/mame/layout/mastmind.lay +++ b/src/mame/layout/mastmind.lay @@ -4,21 +4,60 @@ license:CC0 --> <mamelayout version="2"> +<!-- define elements --> + + <element name="mul"><rect><color red="0.5" green="0.4" blue="0.05" /></rect></element> + + <element name="text_1"><text string="1"><color red="1" green="1" blue="1" /></text></element> + <element name="text_2"><text string="2"><color red="1" green="1" blue="1" /></text></element> + <element name="text_3"><text string="3"><color red="1" green="1" blue="1" /></text></element> + <element name="text_4"><text string="4"><color red="1" green="1" blue="1" /></text></element> + <element name="text_5"><text string="5"><color red="1" green="1" blue="1" /></text></element> + <element name="text_x"><text string="X"><color red="1" green="1" blue="1" /></text></element> + + <element name="text_v"> + <text string="V"> + <bounds x="0" y="0" width="1" height="1" /> + <color red="1" green="1" blue="1" /> + </text> + <disk> + <bounds x="0" y="0" width="0.5" height="0.5" /> + <color red="0" green="0" blue="0" /> + </disk> + </element> + <element name="digit" defstate="0"> <led7seg><color red="0.2" green="1.0" blue="0.85" /></led7seg> </element> + +<!-- build screen --> + <view name="Internal Layout"> - <bounds left="0" right="90" top="0" bottom="15" /> - - <element name="digit7" ref="digit"><bounds x="0" y="0" width="10" height="15" /></element> <!-- N/C on mastmind --> - <element name="digit0" ref="digit"><bounds x="10" y="0" width="10" height="15" /></element> - <element name="digit1" ref="digit"><bounds x="20" y="0" width="10" height="15" /></element> - <element name="digit2" ref="digit"><bounds x="30" y="0" width="10" height="15" /></element> - <element name="digit3" ref="digit"><bounds x="40" y="0" width="10" height="15" /></element> - <element name="digit4" ref="digit"><bounds x="50" y="0" width="10" height="15" /></element> - <element ref="digit"><bounds x="60" y="0" width="10" height="15" /></element> <!-- N/C --> - <element name="digit5" ref="digit"><bounds x="70" y="0" width="10" height="15" /></element> - <element name="digit6" ref="digit"><bounds x="80" y="0" width="10" height="15" /></element> + + <!-- labels (actually, it looks like some units didn't have them) --> + <collection name="Labels"> + <element ref="text_1"><bounds x="20" y="0" width="10" height="10" /></element> + <element ref="text_2"><bounds x="30" y="0" width="10" height="10" /></element> + <element ref="text_3"><bounds x="40" y="0" width="10" height="10" /></element> + <element ref="text_4"><bounds x="50" y="0" width="10" height="10" /></element> + <element ref="text_5"><bounds x="60" y="0" width="10" height="10" /></element> + <element ref="text_v"><bounds x="80" y="0" width="10" height="10" /></element> + <element ref="text_x"><bounds x="90" y="0" width="10" height="10" /></element> + + <element ref="mul" blend="multiply"><bounds x="8" y="0" width="94" height="28" /></element> + </collection> + + <!-- display --> + <element ref="digit"><bounds x="10" y="10" width="10" height="15" /></element> <!-- N/C --> + <element name="digit0" ref="digit"><bounds x="20" y="10" width="10" height="15" /></element> + <element name="digit1" ref="digit"><bounds x="30" y="10" width="10" height="15" /></element> + <element name="digit2" ref="digit"><bounds x="40" y="10" width="10" height="15" /></element> + <element name="digit3" ref="digit"><bounds x="50" y="10" width="10" height="15" /></element> + <element name="digit4" ref="digit"><bounds x="60" y="10" width="10" height="15" /></element> + <element ref="digit"><bounds x="70" y="10" width="10" height="15" /></element> <!-- N/C --> + <element name="digit5" ref="digit"><bounds x="80" y="10" width="10" height="15" /></element> + <element name="digit6" ref="digit"><bounds x="90" y="10" width="10" height="15" /></element> + </view> </mamelayout> diff --git a/src/mame/layout/memoquiz.lay b/src/mame/layout/memoquiz.lay new file mode 100644 index 00000000000..82a27da4c70 --- /dev/null +++ b/src/mame/layout/memoquiz.lay @@ -0,0 +1,55 @@ +<?xml version="1.0"?> +<!-- +license:CC0 +--> +<mamelayout version="2"> + +<!-- define elements --> + + <element name="mul"><rect><color red="0.8" green="0.8" blue="0.8" /></rect></element> + + <element name="text_l1"><text string="cd"><color red="1" green="1" blue="1" /></text></element> + <element name="text_l2"><text string="1"><color red="1" green="1" blue="1" /></text></element> + <element name="text_l3"><text string="2"><color red="1" green="1" blue="1" /></text></element> + <element name="text_l4"><text string="3"><color red="1" green="1" blue="1" /></text></element> + <element name="text_l5"><text string="4"><color red="1" green="1" blue="1" /></text></element> + <element name="text_l6"><text string="5"><color red="1" green="1" blue="1" /></text></element> + <element name="text_l7"><text string="h"><color red="1" green="1" blue="1" /></text></element> + <element name="text_l8"><text string="s"><color red="1" green="1" blue="1" /></text></element> + + <element name="digit" defstate="0"> + <led7seg><color red="0.2" green="1.0" blue="0.85" /></led7seg> + </element> + + +<!-- build screen --> + + <view name="Internal Layout"> + + <!-- labels --> + <collection name="Labels"> + <element ref="text_l1"><bounds x="10" y="26" width="10" height="7.5" /></element> + <element ref="text_l2"><bounds x="20" y="26" width="10" height="7.5" /></element> + <element ref="text_l3"><bounds x="30" y="26" width="10" height="7.5" /></element> + <element ref="text_l4"><bounds x="40" y="26" width="10" height="7.5" /></element> + <element ref="text_l5"><bounds x="50" y="26" width="10" height="7.5" /></element> + <element ref="text_l6"><bounds x="60" y="26" width="10" height="7.5" /></element> + <element ref="text_l7"><bounds x="80" y="26" width="10" height="7.5" /></element> + <element ref="text_l8"><bounds x="90" y="26" width="10" height="7.5" /></element> + + <element ref="mul" blend="multiply"><bounds x="8" y="7" width="94" height="28" /></element> + </collection> + + <!-- display --> + <element name="digit5" ref="digit"><bounds x="10" y="10" width="10" height="15" /></element> + <element name="digit0" ref="digit"><bounds x="20" y="10" width="10" height="15" /></element> + <element name="digit1" ref="digit"><bounds x="30" y="10" width="10" height="15" /></element> + <element name="digit2" ref="digit"><bounds x="40" y="10" width="10" height="15" /></element> + <element name="digit3" ref="digit"><bounds x="50" y="10" width="10" height="15" /></element> + <element name="digit4" ref="digit"><bounds x="60" y="10" width="10" height="15" /></element> + <element ref="digit"><bounds x="70" y="10" width="10" height="15" /></element> <!-- N/C --> + <element name="digit7" ref="digit"><bounds x="80" y="10" width="10" height="15" /></element> + <element name="digit6" ref="digit"><bounds x="90" y="10" width="10" height="15" /></element> + + </view> +</mamelayout> diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 37fc14acf4c..396087582f1 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -16173,6 +16173,7 @@ uspbball // US Games @source:hh_pps41.cpp mastmind // Invicta +memoquiz // MEM @source:hh_sm510.cpp auslalom // Elektronika |