From 590c0383fe07b7db2da89598a8251358cb5f8adf Mon Sep 17 00:00:00 2001 From: hap Date: Sat, 5 Mar 2022 20:20:45 +0100 Subject: New working machines -------------------- TC7: Air Traffic Control [hap, Sean Riddle] --- docs/source/techspecs/layout_files.rst | 4 +- src/mame/drivers/fidel_eag68k.cpp | 3 + src/mame/drivers/fidel_phantom.cpp | 1 - src/mame/drivers/hh_tms1k.cpp | 209 ++++++++++++++---- src/mame/layout/tc7atc.lay | 383 +++++++++++++++++++++++++++++++++ src/mame/mame.lst | 1 + 6 files changed, 561 insertions(+), 40 deletions(-) create mode 100644 src/mame/layout/tc7atc.lay diff --git a/docs/source/techspecs/layout_files.rst b/docs/source/techspecs/layout_files.rst index 96ccb902cb7..5dd1bba0758 100644 --- a/docs/source/techspecs/layout_files.rst +++ b/docs/source/techspecs/layout_files.rst @@ -1468,12 +1468,12 @@ internal layouts included in MAME. This system uses lamps for key gameplay elements. Blending modes are used for the translucent colour overlay placed over the monitor, and the lamps reflected in front of the monitor. Also uses collections to allow parts of - the layout to be disabled selectively. The shapes on the overlay are drawn - using embedded SVG images. + the layout to be disabled selectively. `armora.lay `_ This game’s monitor is viewed directly through a translucent colour overlay rather than being reflected from inside the cabinet. This means the overlay reflects ambient light as well as affecting the colour of the video image. + The shapes on the overlay are drawn using embedded SVG images. `tranz330.lay `_ A multi-segment alphanumeric display and keypad. The keys are clickable, and provide visual feedback when pressed. diff --git a/src/mame/drivers/fidel_eag68k.cpp b/src/mame/drivers/fidel_eag68k.cpp index 877039bae78..2726ca94d92 100644 --- a/src/mame/drivers/fidel_eag68k.cpp +++ b/src/mame/drivers/fidel_eag68k.cpp @@ -16,6 +16,9 @@ TODO: - V11 CPU should be M68EC060, not yet emulated. Now using M68EC040 in its place - V11 beeper is too high pitched, related to wrong CPU type too? maybe waitstates or clock divider on I/O access. +- Do the opening book modules work? It detects the rom, but then does nothing + with it. Maybe support is limited since the basic CB9/CB16 modules have no use + on newer chesscomputers with a large internal opening library. Currently(May 2020) when compared to the real chesscomputers, to get closer to the actual speed, overclock V10 and V11 to 230%. This can be done by starting MAME diff --git a/src/mame/drivers/fidel_phantom.cpp b/src/mame/drivers/fidel_phantom.cpp index cd1f192df5c..dba7549e32a 100644 --- a/src/mame/drivers/fidel_phantom.cpp +++ b/src/mame/drivers/fidel_phantom.cpp @@ -21,7 +21,6 @@ Hardware notes: Chesster Phantom is on the same base hardware, and adds the Chesster voice to it, using the same ROM as the original Chesster. Model 6124 extra hardware is on a daughterboard, the housing is the same as model 6100, except for button labels. - Model 6126 has a dedicated PCB, this version also has a motion sensor at the front and 2 leds to mimick eyes, and the housing color theme is green instead of beige. diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp index d0adf27c0c0..59e26917d1e 100644 --- a/src/mame/drivers/hh_tms1k.cpp +++ b/src/mame/drivers/hh_tms1k.cpp @@ -14,6 +14,49 @@ part of a series is (or will be) in its own driver, see: - tispellb: TI Spelling B series gen. 1 - tispeak: TI Speak & Spell series gen. 1 +About the approximated MCU frequency everywhere: The RC osc. is not that +stable on most of these handhelds. When comparing multiple video recordings +of the same game, it shows(and sounds) that the frequency range can differ +up to 50kHz. This is probably exaggerated due to components getting worn out +after many decades. TMS1000 RC curve is documented in the data manual, but +not for newer ones (rev. E or TMS1400 MCUs). TMS0970/0980 osc. is on-die. + +ROM source notes when dumped from another publisher, but confident it's the same: +- arrball: Tandy Zingo +- bcheetah: Fundimensions Incredible Brain Buggy +- cmsport: Conic Basketball +- cnbaskb: Cardinal Electronic Basketball +- cnfball: Elecsonic Football +- copycat: Sears Follow Me +- ditto: Tandy Electronic Pocket Repeat +- fxmcr165: Tandy Science Fair Microcomputer Trainer +- ginv1000: Tandy Cosmic 1000 Fire Away +- gjackpot: Entex Electronic Jackpot: Gin Rummy & Black Jack +- gpoker: Entex Electronic Poker +- matchnum: LJN Electronic Concentration +- palmf31: Toshiba BC-8018B +- ti1250: Texas Instruments TI-1200 +- ti25503: Texas Instruments TI-1265 +- ti5100: loose 1979 TMS1073NL chip + +TODO: +- Verify output PLA and microinstructions PLA for MCUs that have been dumped + electronically (mpla is usually the default, opla is often custom). +- unknown MCU clocks for some, especially if no YouTube videos are found +- Fake-press ON button when emulation starts for machines that have it on the + button matrix (doesn't look like any relies on it though). +- t7in1ss: in 2-player mode, game select and skill select can be configured after + selecting a game? Possibly BTANB, players are expected to quickly press the + "First Up" button after the alarm sound. +- bship discrete sound, netlist is documented +- finish bshipb SN76477 sound +- improve elecbowl driver +- tithermos temperature sensor comparator (right now just the digital clock works) +- is alphie(patent) the same as the final version? +- is starwbcp the same as MP3438? (starwbc is MP3438A) + +============================================================================ + Let's use this driver for a list of known devices and their serials, excluding most of TI's own products(they normally didn't use "MP" codes). For TI's calculators, a comprehensive list of MCU serials is available @@ -59,7 +102,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm @MP1221 TMS1100 1980, Entex Raise The Devil (6011) @MP1231 TMS1100 1984, Tandy 3 in 1 Sports Arena (model 60-2178) @MP1296 TMS1100 1982, Entex Black Knight Pinball (6081) - *MP1311 TMS1100 1981, Bandai TC7: Air Traffic Control + @MP1311 TMS1100 1981, Bandai TC7: Air Traffic Control @MP1312 TMS1100 1983, Gakken FX-Micom R-165/Radio Shack Science Fair Microcomputer Trainer *MP1359 TMS1100? 1985, Capsela CRC2000 @MP1525 TMS1170 1980, Coleco Head to Head: Electronic Baseball @@ -145,42 +188,6 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm (* means undumped unless noted, @ denotes it's in this driver) -============================================================================ - -ROM source notes when dumped from another publisher, but confident it's the same: -- arrball: Tandy Zingo -- bcheetah: Fundimensions Incredible Brain Buggy -- cmsport: Conic Basketball -- cnbaskb: Cardinal Electronic Basketball -- cnfball: Elecsonic Football -- copycat: Sears Follow Me -- ditto: Tandy Electronic Pocket Repeat -- fxmcr165: Tandy Science Fair Microcomputer Trainer -- ginv1000: Tandy Cosmic 1000 Fire Away -- gjackpot: Entex Electronic Jackpot: Gin Rummy & Black Jack -- gpoker: Entex Electronic Poker -- matchnum: LJN Electronic Concentration -- palmf31: Toshiba BC-8018B -- ti1250: Texas Instruments TI-1200 -- ti25503: Texas Instruments TI-1265 -- ti5100: loose 1979 TMS1073NL chip - -TODO: -- verify output PLA and microinstructions PLA for MCUs that have been dumped - electronically (mpla is usually the default, opla is often custom) -- unknown MCU clocks for some: TMS1000 RC curve is documented in the data manual, - but not for newer ones (rev. E or TMS1400 MCUs). TMS0970/0980 osc. is on-die. -- fake-press ON button when emulation starts for machines that have it on the button matrix - (doesn't look like any relies on it though) -- t7in1ss: in 2-player mode, game select and skill select can be configured after selecting a game? - Possibly BTANB, players are expected to quickly press the "First Up" button after the alarm sound. -- bship discrete sound, netlist is documented -- finish bshipb SN76477 sound -- improve elecbowl driver -- tithermos temperature sensor comparator (right now just the digital clock works) -- is alphie(patent) the same as the final version? -- is starwbcp the same as MP3438? (starwbc is MP3438A) - ***************************************************************************/ #include "emu.h" @@ -279,6 +286,7 @@ TODO: #include "tandy12.lh" // clickable #include "tbreakup.lh" #include "tc4.lh" +#include "tc7atc.lh" #include "tcfball.lh" #include "tcfballa.lh" #include "ti1250.lh" @@ -972,6 +980,132 @@ ROM_END +/*************************************************************************** + + Bandai TC7: Air Traffic Control + * TMS1100 MCU, label MP1311 (die label 1100E, MP1311) + * 4-digit 7seg LED display, 40 other LEDs, 1-bit sound + + It is a very complicated game, refer to the manual on how to play. + +***************************************************************************/ + +class tc7atc_state : public hh_tms1k_state +{ +public: + tc7atc_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) + { } + + void tc7atc(machine_config &config); + +private: + void update_display(); + void write_r(u16 data); + void write_o(u16 data); + u8 read_k(); +}; + +// handlers + +void tc7atc_state::update_display() +{ + m_display->matrix(m_r, m_o); +} + +void tc7atc_state::write_r(u16 data) +{ + // R5: speaker out + m_speaker->level_w(BIT(data, 5)); + + // R0-R4: input mux, led select + // R6-R9: digit select + m_inp_mux = m_r = data; + update_display(); +} + +void tc7atc_state::write_o(u16 data) +{ + // O0-O7: led data + m_o = data; + update_display(); +} + +u8 tc7atc_state::read_k() +{ + // K: multiplexed inputs + return read_inputs(5); +} + +// config + +static INPUT_PORTS_START( tc7atc ) + PORT_START("IN.0") // R0 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("High Score") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_H) PORT_NAME("Hazard") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("Clear") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Enter") + + PORT_START("IN.1") // R1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_W) PORT_NAME("West") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("East") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("Arrive") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("Depart") + + PORT_START("IN.2") // R2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("Flight Path A / Level 1") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("Flight Path B / Level 2") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("Flight Path C / Level 3") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("Flight Path D / Level 4") + + PORT_START("IN.3") // R3 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_NAME("Altitude Descend") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_NAME("Altitude Ascend") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("Air Speed Decrease") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("Air Speed Increase") + + PORT_START("IN.4") // R4 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_NAME("10%") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_NAME("20%") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_NAME("40%") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_NAME("80%") +INPUT_PORTS_END + +void tc7atc_state::tc7atc(machine_config &config) +{ + // basic machine hardware + TMS1100(config, m_maincpu, 350000); // approximation - RC osc. R=68K, C=47pF + m_maincpu->k().set(FUNC(tc7atc_state::read_k)); + m_maincpu->r().set(FUNC(tc7atc_state::write_r)); + m_maincpu->o().set(FUNC(tc7atc_state::write_o)); + + // video hardware + PWM_DISPLAY(config, m_display).set_size(10, 8); + m_display->set_segmask(0x3c0, 0x7f); + config.set_default_layout(layout_tc7atc); + + // sound hardware + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( tc7atc ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "mp1311", 0x0000, 0x0800, CRC(704f5e1b) SHA1(765dce31798640480eab7576550c5378d6351b65) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1100_tc7atc_output.pla", 0, 365, CRC(0e6e3096) SHA1(375beb43657af0cc3070e581b42e501878c0eaaa) ) +ROM_END + + + + + /*************************************************************************** Canon Palmtronic F-31, Canon Canola L813, Toshiba BC-8111B, Toshiba BC-8018B, @@ -14044,6 +14178,7 @@ CONS( 1980, arrball, 0, 0, arrball, arrball, arrball_state, emp COMP( 1980, mathmagi, 0, 0, mathmagi, mathmagi, mathmagi_state, empty_init, "APF Electronics Inc.", "Mathemagician", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) CONS( 1979, bcheetah, 0, 0, bcheetah, bcheetah, bcheetah_state, empty_init, "Bandai", "System Control Car: Cheetah", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_MECHANICAL ) // *** +CONS( 1981, tc7atc, 0, 0, tc7atc, tc7atc, tc7atc_state, empty_init, "Bandai", "TC7: Air Traffic Control", MACHINE_SUPPORTS_SAVE ) COMP( 1977, palmf31, 0, 0, palmf31, palmf31, palmf31_state, empty_init, "Canon", "Palmtronic F-31", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) COMP( 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/tc7atc.lay b/src/mame/layout/tc7atc.lay new file mode 100644 index 00000000000..23cfaf81ce2 --- /dev/null +++ b/src/mame/layout/tc7atc.lay @@ -0,0 +1,383 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 967f4363c77..e2218bc6fc3 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -16763,6 +16763,7 @@ t7in1ss // Tiger Electronics tandy12 // Tandy Corporation tbreakup // Tomy tc4 // Coleco +tc7atc // Bandai tcfball // Tandy Corporation tcfballa // Tandy Corporation ti1000 // Texas Instruments -- cgit v1.2.3