diff options
| author | 2026-05-20 02:37:54 +0200 | |
|---|---|---|
| committer | 2026-05-20 02:38:09 +0200 | |
| commit | 14ebd84b4e1d821fceb9965c94945dccffc318f9 (patch) | |
| tree | e1a98089b0997fccaadf3a183c78dd7c0af47bbb | |
| parent | 54a21a47ba886b8f9c6aa7d10977cacee112a2ae (diff) | |
New working systems
-------------------
Microtronic 2090 [hap, Jason T. Jacques, Decle, Michael A. Wessel]
| -rw-r--r-- | src/mame/handheld/hh_tms1k.cpp | 342 | ||||
| -rw-r--r-- | src/mame/layout/mt2090.lay | 256 | ||||
| -rw-r--r-- | src/mame/mame.lst | 1 | ||||
| -rw-r--r-- | src/mame/novag/emerclp.cpp | 2 | ||||
| -rw-r--r-- | src/mame/taito/gunbustr_link.cpp | 2 | ||||
| -rw-r--r-- | src/mame/videogames/looping.cpp | 2 |
6 files changed, 601 insertions, 4 deletions
diff --git a/src/mame/handheld/hh_tms1k.cpp b/src/mame/handheld/hh_tms1k.cpp index ba0c9b46b71..433650c44b1 100644 --- a/src/mame/handheld/hh_tms1k.cpp +++ b/src/mame/handheld/hh_tms1k.cpp @@ -210,7 +210,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm @MP7334 TMS1400 1981, Coleco Total Control 4 @MP7351 TMS1400 1982, Parker Brothers Master Merlin @MP7551 TMS1670 1980, Entex Color Football 4 (6009) - *MP7574 TMS1600 1981, Busch Microtronic 2090 (actually, label is TMS1600NLL7574, no MP label) + @MP7574 TMS1600 1981, Busch Microtronic 2090 (actually, label is TMS1600NLL7574, no MP label) @MPF553 TMS1670 1980, Gakken/Entex Jackpot: Gin Rummy & Black Jack (6008) (note: assume F to be a misprint) MP7573 TMS1670 1981, Entex Select-A-Game cartridge: Football 4 -> entex/sag.cpp *M30026 TMS2370 1983, Yaesu FT-757 Display Unit part @@ -323,6 +323,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm #include "mmarvin.lh" #include "mmerlin.lh" #include "monkeysee.lh" +#include "mt2090.lh" #include "palmf31.lh" #include "palmmd8.lh" #include "pbmastm.lh" @@ -1502,6 +1503,343 @@ ROM_END /******************************************************************************* + Busch Microtronic 2090 + * PCB label: BUSCH 2090, F0601/4 + * TMS1600 MP7574 (no decap) + * 1Kx4 SRAM (uPD2114LC), 6-digit 7seg display, 2+5 other LEDs + * 4-bit I/O port, for connecting wires to additional components, such as a + piezo, button, or a 1Hz timer + + It's a German programmable educational computer, up to 256 program steps. + + The I/O port connections to on-board components are crudely emulated via config + switches. If more custom I/O is needed, eg. via LUA script, set the input port + to Custom, it'll then read from IN.9. Outputs are sent to output tag "7.x" where + x = 0-3, no matter how the output port is configured. + +*******************************************************************************/ + +class mt2090_state : public hh_tms1k_state +{ +public: + mt2090_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag), + m_1hz(*this, "1hz"), + m_beeper(*this, "beeper") + { } + + void mt2090(machine_config &config); + +protected: + virtual void machine_start() override ATTR_COLD; + +private: + required_device<clock_device> m_1hz; + required_device<beep_device> m_beeper; + + u8 m_output = 0; + u8 m_ram[0x400] = { }; + u16 m_ram_address = 0; + + void update_display(); + void write_r(u32 data); + void write_o(u16 data); + u8 input_port(); + u8 read_k(); +}; + +void mt2090_state::machine_start() +{ + hh_tms1k_state::machine_start(); + + // register for savestates + save_item(NAME(m_output)); + save_item(NAME(m_ram)); + save_item(NAME(m_ram_address)); +} + +// handlers + +void mt2090_state::update_display() +{ + // standard 7segs + const u8 select = BIT(m_r, 12) ? (m_r & 0x3f) : 0; + m_display->matrix_partial(0, 6, select, m_o); + + // direct leds + m_display->write_row(6, m_r >> 14 & 3); + m_display->write_row(7, m_output | (m_1hz->signal_r() ? 0x10 : 0)); +} + +void mt2090_state::write_r(u32 data) +{ + // R0-R5: input mux + // R6: enable input port + // R11: enable RAM inputs (TMS1600 K/L pin) + m_inp_mux = data; + + // R7-R10: output port (only piezo is supported) + m_output = ~m_r >> 7 & 0xf; + m_beeper->set_state((m_output & m_inputs[7]->read()) ? 1 : 0); + + // R0-R5: RAM address high + m_ram_address = (m_ram_address & 0xf) | (data << 4 & 0x3f0); + + // R7-R10: RAM data (inverted) + // R13: RAM /W + if (BIT(data & ~m_r, 13)) + m_ram[m_ram_address] = m_output; + + // R0-R5: digit select + // R12: enable 7seg panel + // R14,R15: direct leds + m_r = data; + update_display(); +} + +void mt2090_state::write_o(u16 data) +{ + // O0-O3: RAM address low + m_ram_address = (m_ram_address & 0x3f0) | (data & 0xf); + + // O0-O7: digit segments + m_o = data; + update_display(); +} + +u8 mt2090_state::input_port() +{ + u8 data = 0; + + for (int i = 3; i >= 0; i--) + { + data <<= 1; + const u8 conf = m_inputs[8]->read() >> (i * 4) & 0xf; + + switch (conf) + { + // GND + case 0: + default: + break; + + // VCC + case 1: + data |= 1; + break; + + // buttons + case 2: case 3: + data |= BIT(m_inputs[6]->read(), conf & 1); + break; + + // output port + case 4: case 5: case 6: case 7: + data |= BIT(m_output, conf & 3); + break; + + // 1Hz clock + case 8: + data |= m_1hz->signal_r(); + break; + + // custom + case 9: + data |= BIT(m_inputs[9]->read(), i); + break; + } + } + + return data; +} + +u8 mt2090_state::read_k() +{ + // read from RAM + if (BIT(m_inp_mux, 11)) + return m_ram[m_ram_address]; + + // read input port + else if (BIT(m_inp_mux, 6)) + return input_port(); + + // read buttons + else + return read_inputs(6); +} + +// inputs + +static INPUT_PORTS_START( mt2090 ) + PORT_START("IN.0") // R0 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("C") + + PORT_START("IN.1") // R1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5") + 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_D) PORT_NAME("D") + + PORT_START("IN.2") // R2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2") + 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_A) PORT_NAME("A") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("E") + + PORT_START("IN.3") // R3 + 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_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("B") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_F) PORT_NAME("F") + + PORT_START("IN.4") // R4 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("C/CE") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("RUN") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_K) PORT_NAME("BKP") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_N) PORT_NAME("NEXT") + + PORT_START("IN.5") // R5 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_P) PORT_NAME("PGM") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_H) PORT_NAME("HALT") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("STEP") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_G) PORT_NAME("REG") + + PORT_START("IN.6") // misc buttons + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Button G") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Button H") + + PORT_START("IN.7") // output port... + PORT_CONFNAME( 0x01, 0x00, "Output 1" ) + PORT_CONFSETTING( 0x00, DEF_STR( None ) ) + PORT_CONFSETTING( 0x01, "Piezo" ) + + PORT_CONFNAME( 0x02, 0x00, "Output 2" ) + PORT_CONFSETTING( 0x00, DEF_STR( None ) ) + PORT_CONFSETTING( 0x02, "Piezo" ) + + PORT_CONFNAME( 0x04, 0x00, "Output 3" ) + PORT_CONFSETTING( 0x00, DEF_STR( None ) ) + PORT_CONFSETTING( 0x04, "Piezo" ) + + PORT_CONFNAME( 0x08, 0x00, "Output 4" ) + PORT_CONFSETTING( 0x00, DEF_STR( None ) ) + PORT_CONFSETTING( 0x08, "Piezo" ) + + PORT_START("IN.8") // input port... + PORT_CONFNAME( 0x000f, 0x0000, "Input 1" ) + PORT_CONFSETTING( 0x0000, "GND" ) + PORT_CONFSETTING( 0x0001, "VCC" ) + PORT_CONFSETTING( 0x0002, "Button G" ) + PORT_CONFSETTING( 0x0003, "Button H" ) + PORT_CONFSETTING( 0x0004, "Output 1" ) + PORT_CONFSETTING( 0x0005, "Output 2" ) + PORT_CONFSETTING( 0x0006, "Output 3" ) + PORT_CONFSETTING( 0x0007, "Output 4" ) + PORT_CONFSETTING( 0x0008, "1Hz Clock" ) + PORT_CONFSETTING( 0x0009, "Custom" ) + + PORT_CONFNAME( 0x00f0, 0x0000, "Input 2" ) + PORT_CONFSETTING( 0x0000, "GND" ) + PORT_CONFSETTING( 0x0010, "VCC" ) + PORT_CONFSETTING( 0x0020, "Button G" ) + PORT_CONFSETTING( 0x0030, "Button H" ) + PORT_CONFSETTING( 0x0040, "Output 1" ) + PORT_CONFSETTING( 0x0050, "Output 2" ) + PORT_CONFSETTING( 0x0060, "Output 3" ) + PORT_CONFSETTING( 0x0070, "Output 4" ) + PORT_CONFSETTING( 0x0080, "1Hz Clock" ) + PORT_CONFSETTING( 0x0090, "Custom" ) + + PORT_CONFNAME( 0x0f00, 0x0000, "Input 3" ) + PORT_CONFSETTING( 0x0000, "GND" ) + PORT_CONFSETTING( 0x0100, "VCC" ) + PORT_CONFSETTING( 0x0200, "Button G" ) + PORT_CONFSETTING( 0x0300, "Button H" ) + PORT_CONFSETTING( 0x0400, "Output 1" ) + PORT_CONFSETTING( 0x0500, "Output 2" ) + PORT_CONFSETTING( 0x0600, "Output 3" ) + PORT_CONFSETTING( 0x0700, "Output 4" ) + PORT_CONFSETTING( 0x0800, "1Hz Clock" ) + PORT_CONFSETTING( 0x0900, "Custom" ) + + PORT_CONFNAME( 0xf000, 0x0000, "Input 4" ) + PORT_CONFSETTING( 0x0000, "GND" ) + PORT_CONFSETTING( 0x1000, "VCC" ) + PORT_CONFSETTING( 0x2000, "Button G" ) + PORT_CONFSETTING( 0x3000, "Button H" ) + PORT_CONFSETTING( 0x4000, "Output 1" ) + PORT_CONFSETTING( 0x5000, "Output 2" ) + PORT_CONFSETTING( 0x6000, "Output 3" ) + PORT_CONFSETTING( 0x7000, "Output 4" ) + PORT_CONFSETTING( 0x8000, "1Hz Clock" ) + PORT_CONFSETTING( 0x9000, "Custom" ) + + PORT_START("IN.9") // custom input pins + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Custom Input 1") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Custom Input 2") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Custom Input 3") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Custom Input 4") + + PORT_START("RESET") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_F1) PORT_NAME("Reset") PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(hh_tms1k_state::reset_button), 0) +INPUT_PORTS_END + +// config + +// output PLA is not decapped, this was made by hand +static const u16 mt2090_output_pla[0x20] = +{ + // literal 0-f for RAM address + 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, + + // 7segs (digit b has DP segment) + 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x67, 0x77, 0xfc, 0x39, 0x5e, 0x79, 0x71 +}; + +void mt2090_state::mt2090(machine_config &config) +{ + // basic machine hardware + TMS1600(config, m_maincpu, 600000); // approximation - RC osc. R=22K, C=56pF + m_maincpu->set_output_pla(mt2090_output_pla); + m_maincpu->read_k().set(FUNC(mt2090_state::read_k)); + m_maincpu->write_r().set(FUNC(mt2090_state::write_r)); + m_maincpu->write_o().set(FUNC(mt2090_state::write_o)); + + CLOCK(config, m_1hz, 32.768_kHz_XTAL / 0x8000); + m_1hz->signal_handler().set([this] (int state) { update_display(); }); + + // video hardware + PWM_DISPLAY(config, m_display).set_size(8, 8); + m_display->set_segmask(0x3f, 0xff); + config.set_default_layout(layout_mt2090); + + // sound hardware + SPEAKER(config, "mono").front_center(); + BEEP(config, m_beeper, 2000); // guessed frequency + m_beeper->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( mt2090 ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "tms1600nll7574", 0x0000, 0x1000, CRC(dcd56aa0) SHA1(57602b3ef1251b636036762c858a5724c8ab785c) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, BAD_DUMP CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) // not verified + ROM_REGION( 557, "maincpu:opla", ROMREGION_ERASE00 ) + ROM_LOAD( "tms1400_mt2090_output.pla", 0, 557, NO_DUMP ) +ROM_END + + + + + +/******************************************************************************* + Canon Palmtronic F-31, Canon Canola L813, Toshiba BC-8111B, Toshiba BC-8018B, Triumph-Adler 81 SN, Silver-Reed 8J, more * TMS1040 MCU label TMS1045NL (die label: 1040A, 1045) @@ -17465,6 +17803,8 @@ SYST( 1980, racetime, 0, 0, racetime, racetime, racetime_state, SYST( 1981, tc7atc, 0, 0, tc7atc, tc7atc, tc7atc_state, empty_init, "Bandai", "TC7: Air Traffic Control", MACHINE_SUPPORTS_SAVE ) SYST( 1982, uboat, 0, 0, uboat, uboat, uboat_state, empty_init, "Bandai", "U-Boat", MACHINE_SUPPORTS_SAVE ) +SYST( 1981, mt2090, 0, 0, mt2090, mt2090, mt2090_state, empty_init, "Busch", "Microtronic 2090", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_CONTROLS ) + SYST( 1977, palmf31, 0, 0, palmf31, palmf31, palmf31_state, empty_init, "Canon", "Palmtronic F-31", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) SYST( 1977, palmmd8, 0, 0, palmmd8, palmmd8, palmmd8_state, empty_init, "Canon", "Palmtronic MD-8 (Multi 8)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/layout/mt2090.lay b/src/mame/layout/mt2090.lay new file mode 100644 index 00000000000..46e75500825 --- /dev/null +++ b/src/mame/layout/mt2090.lay @@ -0,0 +1,256 @@ +<?xml version="1.0"?> +<!-- +license:CC0-1.0 +authors:hap +--> +<mamelayout version="2"> + +<!-- define elements --> + + <element name="blackb"><rect><color red="0" green="0" blue="0" /></rect></element> + <element name="blackd"><disk><color red="0" green="0" blue="0" /></disk></element> + <element name="gray"><rect><color red="0.66" green="0.66" blue="0.68" /></rect></element> + + <element name="text_g"><text string="G"><color red="0.66" green="0.66" blue="0.68" /></text></element> + <element name="text_h"><text string="H"><color red="0.66" green="0.66" blue="0.68" /></text></element> + <element name="text_reset"><text string="Reset"><color red="0.66" green="0.66" blue="0.68" /></text></element> + + <element name="butr" defstate="0"> + <rect state="0"><color red="0.8" green="0.1" blue="0.1" /></rect> + <rect state="1"><color red="0.8" green="0.1" blue="0.1" alpha="0.75" /></rect> + </element> + + <element name="butg" defstate="0"> + <rect state="0"><color red="0.1" green="0.6" blue="0.2" /></rect> + <rect state="1"><color red="0.1" green="0.6" blue="0.2" alpha="0.7" /></rect> + </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.125" green="0.012" blue="0.019" /></disk> + </element> + + +<!-- i/o panel --> + + <element name="text_1"><text string="1"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_2"><text string="2"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_3"><text string="3"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_4"><text string="4"><color red="0.01" green="0.01" blue="0.01" /></text></element> + + <element name="text_l1"><text string="Ausgänge/Outputs"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_l2"><text string="Eingänge/Inputs"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_l3"><text string="Takt/Clock"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_l4"><text string="1 Hz"><color red="0.01" green="0.01" blue="0.01" /></text></element> + + <element name="switch_output" defstate="0"> + <disk><color red="0" green="0" blue="0" /></disk> + <text state="0x00" string="-"><color red="0.9" green="0.9" blue="0.2" /></text> + <text state="0x01" string="P"><color red="0.9" green="0.9" blue="0.2" /></text> + </element> + + <element name="switch_input" defstate="0"> + <disk><color red="0" green="0" blue="0" /></disk> + <text state="0x00" string="-"><color red="0.9" green="0.9" blue="0.2" /></text> + <text state="0x01" string="+"><color red="0.9" green="0.9" blue="0.2" /></text> + <text state="0x02" string="G"><color red="0.9" green="0.9" blue="0.2" /></text> + <text state="0x03" string="H"><color red="0.9" green="0.9" blue="0.2" /></text> + <text state="0x04" string="1"><color red="0.9" green="0.9" blue="0.2" /></text> + <text state="0x05" string="2"><color red="0.9" green="0.9" blue="0.2" /></text> + <text state="0x06" string="3"><color red="0.9" green="0.9" blue="0.2" /></text> + <text state="0x07" string="4"><color red="0.9" green="0.9" blue="0.2" /></text> + <text state="0x08" string="C"><color red="0.9" green="0.9" blue="0.2" /></text> + <text state="0x09" string="?"><color red="0.9" green="0.9" blue="0.2" /></text> + </element> + + <group name="io"> + <bounds x="0" y="1.4" width="35.3" height="4" /> + + <element ref="gray"><bounds x="0" y="1.4" width="35.3" height="4" /></element> + + <!-- text labels --> + <repeat count="4"> + <param name="x1" start="2" increment="3" /> + <param name="x2" start="17" increment="3" /> + <param name="i" start="1" increment="1" /> + + <element ref="text_~i~"><bounds xc="~x1~" y="2.8" width="2" height="1" /></element> + <element ref="text_~i~"><bounds xc="~x2~" y="2.8" width="2" height="1" /></element> + </repeat> + + <element ref="text_l1"><bounds x="1.5" y="1.6" width="10" height="1" /></element> + <element ref="text_l2"><bounds x="16.5" y="1.6" width="10" height="1" /></element> + <element ref="text_l3"><bounds xc="32" y="1.6" width="6" height="1" /></element> + <element ref="text_l4"><bounds xc="32" y="2.8" width="5" height="1" /></element> + + <!-- i/o plugs --> + <element ref="switch_output" inputtag="IN.7" inputmask="0x01" inputraw="yes"><bounds xc="2" y="4" width="1" height="1" /></element> + <element ref="switch_output" inputtag="IN.7" inputmask="0x02" inputraw="yes"><bounds xc="5" y="4" width="1" height="1" /></element> + <element ref="switch_output" inputtag="IN.7" inputmask="0x04" inputraw="yes"><bounds xc="8" y="4" width="1" height="1" /></element> + <element ref="switch_output" inputtag="IN.7" inputmask="0x08" inputraw="yes"><bounds xc="11" y="4" width="1" height="1" /></element> + + <element ref="switch_input" inputtag="IN.8" inputmask="0x000f" inputraw="yes"><bounds xc="17" y="4" width="1" height="1" /></element> + <element ref="switch_input" inputtag="IN.8" inputmask="0x00f0" inputraw="yes"><bounds xc="20" y="4" width="1" height="1" /></element> + <element ref="switch_input" inputtag="IN.8" inputmask="0x0f00" inputraw="yes"><bounds xc="23" y="4" width="1" height="1" /></element> + <element ref="switch_input" inputtag="IN.8" inputmask="0xf000" inputraw="yes"><bounds xc="26" y="4" width="1" height="1" /></element> + + <element ref="blackd"><bounds xc="32" y="4" width="1" height="1" /></element> + + <!-- pcb leds --> + <element name="7.0" ref="led"><bounds xc="2" y="5.8" width="1" height="1" /></element> + <element name="7.1" ref="led"><bounds xc="5" y="5.8" width="1" height="1" /></element> + <element name="7.2" ref="led"><bounds xc="8" y="5.8" width="1" height="1" /></element> + <element name="7.3" ref="led"><bounds xc="11" y="5.8" width="1" height="1" /></element> + + <element name="7.4" ref="led"><bounds xc="32" y="5.8" width="1" height="1" /></element> + </group> + + +<!-- display panel --> + + <element name="text_c"><text string="C"><color red="0.66" green="0.66" blue="0.68" /></text></element> + <element name="text_z"><text string="Z"><color red="0.66" green="0.66" blue="0.68" /></text></element> + + <element name="digit" defstate="0"> + <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg> + </element> + + <group name="display"> + <bounds x="0" y="0" width="16" height="3" /> + + <element ref="text_c"><bounds x="1.25" y="0" width="1" height="1" /></element> + <element ref="text_z"><bounds x="1.25" y="2" width="1" height="1" /></element> + + <element name="6.0" ref="led"><bounds x="2.5" y="0" width="1" height="1" /></element> + <element name="6.1" ref="led"><bounds x="2.5" y="2" width="1" height="1" /></element> + + <element name="digit5" ref="digit"><bounds x="4" y="0" width="2" height="3" /></element> + <element name="digit4" ref="digit"><bounds x="6" y="0" width="2" height="3" /></element> + <element name="digit3" ref="digit"><bounds x="8" y="0" width="2" height="3" /></element> + <element name="digit2" ref="digit"><bounds x="10" y="0" width="2" height="3" /></element> + <element name="digit1" ref="digit"><bounds x="12" y="0" width="2" height="3" /></element> + <element name="digit0" ref="digit"><bounds x="14" y="0" width="2" height="3" /></element> + </group> + + +<!-- button panel --> + + <element name="text_b11"><text string="C"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b12"><text string="D"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b13"><text string="E"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b14"><text string="F"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b15"><text string="NEXT"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b16"><text string="REG"><color red="0.01" green="0.01" blue="0.01" /></text></element> + + <element name="text_b21"><text string="8"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b22"><text string="9"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b23"><text string="A"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b24"><text string="B"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b25"><text string="BKP"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b26"><text string="STEP"><color red="0.01" green="0.01" blue="0.01" /></text></element> + + <element name="text_b31"><text string="4"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b32"><text string="5"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b33"><text string="6"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b34"><text string="7"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b35"><text string="RUN"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b36"><text string="HALT"><color red="0.01" green="0.01" blue="0.01" /></text></element> + + <element name="text_b41"><text string="0"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b42"><text string="1"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b43"><text string="2"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b44"><text string="3"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b45"><text string="C/CE"><color red="0.01" green="0.01" blue="0.01" /></text></element> + <element name="text_b46"><text string="PGM"><color red="0.01" green="0.01" blue="0.01" /></text></element> + + <element name="but" defstate="0"> + <rect state="0"><color red="0.15" green="0.15" blue="0.15" /></rect> + <rect state="1"><color red="0.25" green="0.25" blue="0.25" /></rect> + </element> + + <group name="buttons"> + <bounds x="0" y="-1" width="19.3" height="12" /> + + <element ref="gray"><bounds x="0" y="-1" width="19.3" height="12" /></element> + + <repeat count="4"> + <param name="y" start="0.25" increment="2.5" /> + <element ref="blackb"><bounds x="1" y="~y~" width="17.3" height="0.05" /><color alpha="0.3" /></element> + </repeat> + + <element ref="gray"><bounds xc="12.5" y="-1" width="1" height="12" /></element> + <element ref="blackb"><bounds xc="12.5" y="-1" width="0.1" height="12" /></element> + + <!-- button labels --> + <repeat count="4"> + <param name="y" start="0.85" increment="2.5" /> + <param name="i1" start="1" increment="1" /> + + <repeat count="4"> + <param name="x" start="2" increment="3" /> + <param name="i2" start="1" increment="1" /> + + <element ref="text_b~i1~~i2~"><bounds xc="~x~" yc="~y~" width="2.5" height="1" /></element> + </repeat> + </repeat> + + <repeat count="4"> + <param name="y" start="0.85" increment="2.5" /> + <param name="i1" start="1" increment="1" /> + + <repeat count="2"> + <param name="x" start="14.15" increment="3" /> + <param name="i2" start="5" increment="1" /> + + <element ref="text_b~i1~~i2~"><bounds xc="~x~" yc="~y~" width="2.5" height="1" /></element> + </repeat> + </repeat> + + <!-- actual buttons --> + <repeat count="4"> + <param name="y" start="2" increment="2.5" /> + <param name="mask" start="0x08" rshift="1" /> + + <repeat count="4"> + <param name="x" start="2" increment="3" /> + <param name="i" start="0" increment="1" /> + + <element ref="blackb"><bounds xc="~x~" yc="~y~" width="2" height="1" /></element> + <element ref="but" inputtag="IN.~i~" inputmask="~mask~"><bounds xc="~x~" yc="~y~" width="1.85" height="0.85" /></element> + </repeat> + </repeat> + + <repeat count="4"> + <param name="y" start="2" increment="2.5" /> + <param name="mask" start="0x08" rshift="1" /> + + <repeat count="2"> + <param name="x" start="14.15" increment="3" /> + <param name="i" start="4" increment="1" /> + + <element ref="blackb"><bounds xc="~x~" yc="~y~" width="2.3" height="1" /></element> + <element ref="but" inputtag="IN.~i~" inputmask="~mask~"><bounds xc="~x~" yc="~y~" width="2.15" height="0.85" /></element> + </repeat> + </repeat> + </group> + + +<!-- build screen --> + + <view name="Internal Layout"> + <bounds left="0" right="35.3" top="0" bottom="17.8" /> + + <group ref="io"><bounds x="0" y="0" width="35.3" height="4" /></group> + <group ref="display"><bounds x="-1" y="8.2" width="16" height="3" /></group> + <group ref="buttons"><bounds x="16" y="5.8" width="19.3" height="12" /></group> + + <element ref="text_g"><bounds xc="4" y="13.6" width="2" height="1" /></element> + <element ref="text_h"><bounds xc="8" y="13.6" width="2" height="1" /></element> + <element ref="text_reset"><bounds xc="12" y="13.6" width="5" height="1" /></element> + + <element ref="butr" inputtag="IN.6" inputmask="0x01"><bounds xc="4" y="14.8" width="2" height="2" /></element> + <element ref="butr" inputtag="IN.6" inputmask="0x02"><bounds xc="8" y="14.8" width="2" height="2" /></element> + <element ref="butg" inputtag="RESET" inputmask="0x01"><bounds xc="12" y="14.8" width="2" height="2" /></element> + </view> + +</mamelayout> diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 0c21ffc4e15..0eba398f577 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -20340,6 +20340,7 @@ mmarvin mmerlin monkeysee mrmusical +mt2090 palmf31 palmmd8 pbmastm diff --git a/src/mame/novag/emerclp.cpp b/src/mame/novag/emerclp.cpp index 6e8247f00fc..1c1d3e69272 100644 --- a/src/mame/novag/emerclp.cpp +++ b/src/mame/novag/emerclp.cpp @@ -24,7 +24,7 @@ Hardware notes: H8/325 C88 MCU is used in: - Novag Emerald Classic Plus -- Novag Amber (suspected) +- Novag Amber - Novag Turquoise (suspected) - Excalibur Karpov 2294 (Excalibur brand Emerald Classic Plus) diff --git a/src/mame/taito/gunbustr_link.cpp b/src/mame/taito/gunbustr_link.cpp index f65d93acf26..19a36808163 100644 --- a/src/mame/taito/gunbustr_link.cpp +++ b/src/mame/taito/gunbustr_link.cpp @@ -9,7 +9,7 @@ To use this: * Enable Link Simulation in MAME's Machine Configuration menu. - * Access the game's Tet Mode Menu, and select Configuration. + * Access the game's Test Mode Menu, and select Configuration. * Set Link Play to On, and set the ID Number to 0 for one instance and 1 for the other instance (it helps to have separate NVRAM directories for the two instances). diff --git a/src/mame/videogames/looping.cpp b/src/mame/videogames/looping.cpp index 0a3a7c59ad8..90c0cd2cb3c 100644 --- a/src/mame/videogames/looping.cpp +++ b/src/mame/videogames/looping.cpp @@ -23,7 +23,7 @@ down a bit due to instabilities (not as bad as MAME)? The European set (looping) does not check protection at all, even though it's confirmed to still have the COP420 chip. -For loopinguc, the reset jump is at $32ba, for the other US sets at 3360. +For loopinguc, the reset jump is at $32ba, for the other US sets at $3360. Inserting a NOP would probably prevent the resets, but without guarantee of not running into other issues. |
