From 3f1e8ad0ca010fe24ab5e119fdfe415270d9f4b0 Mon Sep 17 00:00:00 2001 From: hap Date: Mon, 30 Mar 2020 23:57:57 +0200 Subject: New working machines -------------------- Quickfire [hap, Sean Riddle] --- src/mame/drivers/fidel_elite.cpp | 20 +++--- src/mame/drivers/hh_tms1k.cpp | 129 +++++++++++++++++++++++++++++++++++++-- src/mame/layout/qfire.lay | 111 +++++++++++++++++++++++++++++++++ src/mame/mame.lst | 1 + 4 files changed, 246 insertions(+), 15 deletions(-) create mode 100644 src/mame/layout/qfire.lay diff --git a/src/mame/drivers/fidel_elite.cpp b/src/mame/drivers/fidel_elite.cpp index 526d214073b..ae76bd2e52e 100644 --- a/src/mame/drivers/fidel_elite.cpp +++ b/src/mame/drivers/fidel_elite.cpp @@ -46,7 +46,7 @@ it doesn't have the 8255 PPI, but has more RAM(7*TMM2016P). Some were released a 3.6MHz instead of 4MHz, perhaps due to hardware instability? Opening module PC16 was included by default, this module is the same as CB16 but at different form factor. -Elite Avant Garde (models 6081,6088,6089) is on the same hardware as EAS. +Elite Avant Garde (models 6081,6088,6089) is on similar hardware as EAS. Fidelity Elite Private Line were EAS/EAG conversions released by Fidelity Deutschland. The "Elite Privat" was probably for the local market and the "Private Line" for export. @@ -503,12 +503,12 @@ void eag_state::eag2100(machine_config &config) ROM_START( feasbu ) ROM_REGION( 0x10000, "mainmap", 0 ) - ROM_LOAD("eli_bu.6", 0x8000, 0x0800, CRC(93dcc23b) SHA1(2eb8c5a85e566948bc256d6b1804694e6b0ffa6f) ) // ST M27C64A, unknown label + ROM_LOAD("mh_6", 0x8000, 0x0800, CRC(93dcc23b) SHA1(2eb8c5a85e566948bc256d6b1804694e6b0ffa6f) ) // ST M27C64A ROM_CONTINUE( 0x9000, 0x0800 ) ROM_CONTINUE( 0x8800, 0x0800 ) ROM_CONTINUE( 0x9800, 0x0800 ) - ROM_LOAD("101-1052a02.5", 0xc000, 0x2000, CRC(859d69f1) SHA1(a8b057683369e2387f22fc7e916b6f3c75d44b21) ) // Mostek MK36C63N-5 - ROM_LOAD("101-1052a01.4", 0xe000, 0x2000, CRC(571a33a7) SHA1(43b110cf0918caf16643178f401e58b2dc73894f) ) // Mostek MK36C63N-5 + ROM_LOAD("101-1052a02", 0xc000, 0x2000, CRC(859d69f1) SHA1(a8b057683369e2387f22fc7e916b6f3c75d44b21) ) // Mostek MK36C63N-5 + ROM_LOAD("101-1052a01", 0xe000, 0x2000, CRC(571a33a7) SHA1(43b110cf0918caf16643178f401e58b2dc73894f) ) // Mostek MK36C63N-5 // speech ROM ROM_DEFAULT_BIOS("en") @@ -533,15 +533,15 @@ ROM_END ROM_START( feasgla ) ROM_REGION( 0x10000, "mainmap", 0 ) - ROM_LOAD("4,0_8.6", 0x8000, 0x0800, CRC(32784e2d) SHA1(dae060a5c49cc1993a78db293cd80464adfd892d) ) + ROM_LOAD("4,0_8_6", 0x8000, 0x0800, CRC(32784e2d) SHA1(dae060a5c49cc1993a78db293cd80464adfd892d) ) ROM_CONTINUE( 0x9000, 0x0800 ) ROM_CONTINUE( 0x8800, 0x0800 ) ROM_CONTINUE( 0x9800, 0x0800 ) - ROM_LOAD("c.5", 0xc000, 0x0800, CRC(ddb80412) SHA1(b1d9435d9a71b8eb241a2169bfbaa0499f510769) ) + ROM_LOAD("c_5", 0xc000, 0x0800, CRC(ddb80412) SHA1(b1d9435d9a71b8eb241a2169bfbaa0499f510769) ) ROM_CONTINUE( 0xd000, 0x0800 ) ROM_CONTINUE( 0xc800, 0x0800 ) ROM_CONTINUE( 0xd800, 0x0800 ) - ROM_LOAD("4,0_e.4", 0xe000, 0x0800, CRC(62a5305a) SHA1(a361bd9a54b903d7b0fbacabe55ea5ccbbc1dc51) ) + ROM_LOAD("4,0_e_4", 0xe000, 0x0800, CRC(62a5305a) SHA1(a361bd9a54b903d7b0fbacabe55ea5ccbbc1dc51) ) ROM_CONTINUE( 0xf000, 0x0800 ) ROM_CONTINUE( 0xe800, 0x0800 ) ROM_CONTINUE( 0xf800, 0x0800 ) @@ -569,15 +569,15 @@ ROM_END ROM_START( feasglaa ) ROM_REGION( 0x10000, "mainmap", 0 ) - ROM_LOAD("eli_gla.6", 0x8000, 0x0800, CRC(2fdddb4f) SHA1(6da0a328a45462f285ae6a0756f97c5a43148f97) ) + ROM_LOAD("p6", 0x8000, 0x0800, CRC(2fdddb4f) SHA1(6da0a328a45462f285ae6a0756f97c5a43148f97) ) ROM_CONTINUE( 0x9000, 0x0800 ) ROM_CONTINUE( 0x8800, 0x0800 ) ROM_CONTINUE( 0x9800, 0x0800 ) - ROM_LOAD("eli_gla.5", 0xc000, 0x0800, CRC(f094e625) SHA1(fef84c6a3da504aac15988ec9af94417e5fedfbd) ) + ROM_LOAD("p5", 0xc000, 0x0800, CRC(f094e625) SHA1(fef84c6a3da504aac15988ec9af94417e5fedfbd) ) ROM_CONTINUE( 0xd000, 0x0800 ) ROM_CONTINUE( 0xc800, 0x0800 ) ROM_CONTINUE( 0xd800, 0x0800 ) - ROM_LOAD("eli_gla.4", 0xe000, 0x0800, CRC(5f6845d1) SHA1(684eb16faf36a49560e5a73b55fd0022dc090e35) ) + ROM_LOAD("p4", 0xe000, 0x0800, CRC(5f6845d1) SHA1(684eb16faf36a49560e5a73b55fd0022dc090e35) ) ROM_CONTINUE( 0xf000, 0x0800 ) ROM_CONTINUE( 0xe800, 0x0800 ) ROM_CONTINUE( 0xf800, 0x0800 ) diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp index 5f8fe1a09d7..7d410e81c2e 100644 --- a/src/mame/drivers/hh_tms1k.cpp +++ b/src/mame/drivers/hh_tms1k.cpp @@ -72,7 +72,7 @@ @MP3208 TMS1000 1977, Milton Bradley Electronic Battleship (1977, model 4750B) @MP3226 TMS1000 1978, Milton Bradley Simon (Rev A) *MP3232 TMS1000 1979, Fonas 2-Player Baseball (no "MP" on chip label) - *MP3260 TMS1000 1979, Electroplay Quickfire + @MP3260 TMS1000 1979, Electroplay Quickfire @MP3300 TMS1000 1979, Milton Bradley Simon (Rev F) @MP3301A TMS1000 1979, Milton Bradley Big Trak @MP3320A TMS1000 1979, Coleco Head to Head: Electronic Basketball @@ -223,6 +223,7 @@ #include "mmerlin.lh" // clickable #include "monkeysee.lh" #include "phpball.lh" +#include "qfire.lh" // clickable #include "quizwizc.lh" #include "raisedvl.lh" #include "simon.lh" // clickable @@ -2282,7 +2283,7 @@ ROM_START( quizwizc ) ROM_LOAD( "m32001", 0x0000, 0x0400, CRC(053657eb) SHA1(38c84f7416f79aa679f434a3d35df54cd9aa528a) ) ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common3_micro.pla", 0, 867, CRC(80912d0a) SHA1(7ae5293ed4d93f5b7a64d43fe30c3639f39fbe5a) ) + ROM_LOAD( "tms1000_common4_micro.pla", 0, 867, CRC(80912d0a) SHA1(7ae5293ed4d93f5b7a64d43fe30c3639f39fbe5a) ) ROM_REGION( 365, "maincpu:opla", 0 ) ROM_LOAD( "tms1000_quizwizc_output.pla", 0, 365, CRC(475b7053) SHA1(8f61bf736eb41d7029a6b165cc0a184ba0a70a2a) ) ROM_END @@ -3146,6 +3147,122 @@ ROM_END +/*************************************************************************** + + Electroplay Quickfire + * TMS1000NLL MP3260 (die label same) + * 2 7seg LEDs, 5 lamps, 3 lightsensors, lightgun + + To play it in MAME, either use the clickable artwork with -mouse, or set + button 1 to "Z or X or C" and each lightsensor to one of those keys. + Although the game seems mostly playable without having to use the gun trigger + +***************************************************************************/ + +class qfire_state : public hh_tms1k_state +{ +public: + qfire_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) + { } + + DECLARE_WRITE16_MEMBER(write_r); + DECLARE_WRITE16_MEMBER(write_o); + DECLARE_READ8_MEMBER(read_k); + void qfire(machine_config &config); +}; + +// handlers + +WRITE16_MEMBER(qfire_state::write_r) +{ + // R1,R2,R5: input mux + m_inp_mux = (data >> 1 & 3) | (data >> 3 & 4); + + // R3,R4,R6-R8: leds (direct) + m_display->write_row(2, (data >> 3 & 3) | (data >> 4 & 0x1c)); + m_display->update(); + + // R9: speaker out + m_speaker->level_w(data >> 9 & 1); +} + +WRITE16_MEMBER(qfire_state::write_o) +{ + // O0: 1st digit "1" + // O1-O7: 2nd digit segments + m_display->write_row(0, (data & 1) ? 6 : 0); + m_display->write_row(1, data >> 1 & 0x7f); + m_display->update(); +} + +READ8_MEMBER(qfire_state::read_k) +{ + // K: multiplexed inputs + return read_inputs(3); +} + +// config + +static INPUT_PORTS_START( qfire ) + PORT_START("IN.0") // R1 + PORT_CONFNAME( 0x0f, 0x00, "Game" ) + PORT_CONFSETTING( 0x00, "1" ) + PORT_CONFSETTING( 0x08, "2" ) + PORT_CONFSETTING( 0x04, "3" ) + PORT_CONFSETTING( 0x02, "4" ) + PORT_CONFSETTING( 0x01, "5" ) + PORT_CONFSETTING( 0x06, "6" ) + + PORT_START("IN.1") // R2 + PORT_CONFNAME( 0x07, 0x04, DEF_STR( Difficulty ) ) + PORT_CONFSETTING( 0x04, "A" ) + PORT_CONFSETTING( 0x02, "B" ) + PORT_CONFSETTING( 0x01, "C" ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.2") // R5 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Lightsensor 1") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Lightsensor 2") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Lightsensor 3") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) // lightgun trigger, also turns on lightgun lamp +INPUT_PORTS_END + +void qfire_state::qfire(machine_config &config) +{ + /* basic machine hardware */ + TMS1000(config, m_maincpu, 375000); // approximation - RC osc. R=39K, C=47pF + m_maincpu->k().set(FUNC(qfire_state::read_k)); + m_maincpu->r().set(FUNC(qfire_state::write_r)); + m_maincpu->o().set(FUNC(qfire_state::write_o)); + + /* video hardware */ + PWM_DISPLAY(config, m_display).set_size(3, 7); + m_display->set_segmask(3, 0x7f); + config.set_default_layout(layout_qfire); + + /* sound hardware */ + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( qfire ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp3260", 0x0000, 0x0400, CRC(f6e28376) SHA1(6129584c55a1629b458694cdc97edccb77ab00ba) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common3_micro.pla", 0, 867, CRC(52f7c1f1) SHA1(dbc2634dcb98eac173ad0209df487cad413d08a5) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_qfire_output.pla", 0, 365, CRC(8f7668a9) SHA1(c8faeff0f88bfea8f032ce5bc583f049e8930c11) ) +ROM_END + + + + + /*************************************************************************** Entex (Electronic) Soccer @@ -7006,7 +7123,7 @@ ROM_START( simon ) ROM_LOAD( "tms1000.u1", 0x0000, 0x0400, CRC(9961719d) SHA1(35dddb018a8a2b31f377ab49c1f0cb76951b81c0) ) ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_simon_micro.pla", 0, 867, CRC(52f7c1f1) SHA1(dbc2634dcb98eac173ad0209df487cad413d08a5) ) + ROM_LOAD( "tms1000_common3_micro.pla", 0, 867, CRC(52f7c1f1) SHA1(dbc2634dcb98eac173ad0209df487cad413d08a5) ) ROM_REGION( 365, "maincpu:opla", 0 ) // unused ROM_LOAD( "tms1000_simon_output.pla", 0, 365, CRC(2943c71b) SHA1(bd5bb55c57e7ba27e49c645937ec1d4e67506601) ) ROM_END @@ -7016,7 +7133,7 @@ ROM_START( simonf ) ROM_LOAD( "mp3300", 0x0000, 0x0400, CRC(b9fcf93a) SHA1(45960e4242a08495f2a99fc5d44728eabd93cd9f) ) ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_simon_micro.pla", 0, 867, CRC(52f7c1f1) SHA1(dbc2634dcb98eac173ad0209df487cad413d08a5) ) + ROM_LOAD( "tms1000_common3_micro.pla", 0, 867, CRC(52f7c1f1) SHA1(dbc2634dcb98eac173ad0209df487cad413d08a5) ) ROM_REGION( 365, "maincpu:opla", 0 ) // unused ROM_LOAD( "tms1000_simon_output.pla", 0, 365, CRC(2943c71b) SHA1(bd5bb55c57e7ba27e49c645937ec1d4e67506601) ) ROM_END @@ -7369,7 +7486,7 @@ ROM_START( bigtrak ) ROM_LOAD( "mp3301a", 0x0000, 0x0400, CRC(1351bcdd) SHA1(68865389c25b541c09a742be61f8fb6488134d4e) ) ROM_REGION( 867, "maincpu:mpla", 0 ) - ROM_LOAD( "tms1000_common3_micro.pla", 0, 867, CRC(80912d0a) SHA1(7ae5293ed4d93f5b7a64d43fe30c3639f39fbe5a) ) + ROM_LOAD( "tms1000_common4_micro.pla", 0, 867, CRC(80912d0a) SHA1(7ae5293ed4d93f5b7a64d43fe30c3639f39fbe5a) ) ROM_REGION( 365, "maincpu:opla", 0 ) ROM_LOAD( "tms1000_bigtrak_output.pla", 0, 365, CRC(63be45f6) SHA1(918e38a223152db883c1a6f7acf56e87d7074734) ) ROM_END @@ -12306,6 +12423,8 @@ CONS( 1979, cnfball, 0, 0, cnfball, cnfball, cnfball_state, emp CONS( 1979, cnfball2, 0, 0, cnfball2, cnfball2, cnfball2_state, empty_init, "Conic", "Electronic Football II (Conic)", MACHINE_SUPPORTS_SAVE ) CONS( 1979, eleciq, 0, 0, eleciq, eleciq, eleciq_state, empty_init, "Conic", "Electronic I.Q.", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, qfire, 0, 0, qfire, qfire, qfire_state, empty_init, "Electroplay", "Quickfire", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) + CONS( 1979, esoccer, 0, 0, esoccer, esoccer, esoccer_state, empty_init, "Entex", "Electronic Soccer (Entex)", MACHINE_SUPPORTS_SAVE ) CONS( 1979, ebball, 0, 0, ebball, ebball, ebball_state, empty_init, "Entex", "Electronic Baseball (Entex)", MACHINE_SUPPORTS_SAVE ) CONS( 1979, ebball2, 0, 0, ebball2, ebball2, ebball2_state, empty_init, "Entex", "Electronic Baseball 2 (Entex)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/layout/qfire.lay b/src/mame/layout/qfire.lay new file mode 100644 index 00000000000..8bd183d544e --- /dev/null +++ b/src/mame/layout/qfire.lay @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 15b530508e5..3461e7d9670 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -15936,6 +15936,7 @@ merlin // Parker Bros mmerlin // Parker Bros monkeysee // Tandy Radio Shack phpball // Tomy +qfire // Electroplay quizwizc // Coleco raisedvl // Entex simon // Milton Bradley -- cgit v1.2.3