New working machines

--------------------
Quickfire [hap, Sean Riddle]
This commit is contained in:
hap 2020-03-30 23:57:57 +02:00
parent 73c1c3400f
commit 3f1e8ad0ca
4 changed files with 246 additions and 15 deletions

View File

@ -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 )

View File

@ -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 )

111
src/mame/layout/qfire.lay Normal file
View File

@ -0,0 +1,111 @@
<?xml version="1.0"?>
<!--
license:CC0
-->
<mamelayout version="2">
<!-- define elements -->
<element name="whited"><disk><color red="0.85" green="0.85" blue="0.85" /></disk></element>
<element name="blackd"><disk><color red="0" green="0" blue="0" /></disk></element>
<element name="redd"><disk><color red="0.8" green="0.14" blue="0.16" /></disk></element>
<element name="greend"><disk><color red="0.15" green="0.8" blue="0.1" /></disk></element>
<element name="yellowd"><disk><color red="0.8" green="0.78" blue="0.1" /></disk></element>
<element name="black"><rect><color red="0" green="0" blue="0" /></rect></element>
<element name="gray"><rect><color red="0.16" green="0.15" blue="0.15" /></rect></element>
<element name="text_skill"><text string="SKILL:"><color red="0.85" green="0.85" blue="0.85" /></text></element>
<element name="text_game"><text string="GAME:"><color red="0.85" green="0.85" blue="0.85" /></text></element>
<element name="text_sw"><text string="&#x25ba;"><color red="0.8" green="0.14" blue="0.16" /></text></element>
<element name="switch_skill" defstate="0">
<text state="0x04" string="A" align="2"><color red="0.85" green="0.85" blue="0.85" /></text>
<text state="0x02" string="B" align="2"><color red="0.85" green="0.85" blue="0.85" /></text>
<text state="0x01" string="C" align="2"><color red="0.85" green="0.85" blue="0.85" /></text>
</element>
<element name="switch_game" defstate="0">
<text state="0x00" string="1" align="2"><color red="0.85" green="0.85" blue="0.85" /></text>
<text state="0x08" string="2" align="2"><color red="0.85" green="0.85" blue="0.85" /></text>
<text state="0x04" string="3" align="2"><color red="0.85" green="0.85" blue="0.85" /></text>
<text state="0x02" string="4" align="2"><color red="0.85" green="0.85" blue="0.85" /></text>
<text state="0x01" string="5" align="2"><color red="0.85" green="0.85" blue="0.85" /></text>
<text state="0x06" string="6" align="2"><color red="0.85" green="0.85" blue="0.85" /></text>
</element>
<element name="hl" defstate="0">
<disk state="1"><color red="1" green="1" blue="1" /></disk>
</element>
<element name="ledr" defstate="0">
<disk state="0"><color red="0.2" green="0.04" blue="0.05" /></disk>
<disk state="1"><color red="1.0" green="0.2" blue="0.23" /></disk>
</element>
<element name="ledg" defstate="0">
<disk state="0"><color red="0.05" green="0.2" blue="0.04" /></disk>
<disk state="1"><color red="0.23" green="1.0" blue="0.2" /></disk>
</element>
<element name="ledy" defstate="0">
<disk state="0"><color red="0.2" green="0.18" blue="0.04" /></disk>
<disk state="1"><color red="1.0" green="0.9" blue="0.2" /></disk>
</element>
<element name="digit" defstate="0">
<led7seg><color red="1.0" green="0.2" blue="0.23" /></led7seg>
</element>
<!-- build screen -->
<view name="Internal Layout">
<bounds left="47" right="161" top="34" bottom="121" />
<!-- targets -->
<bezel element="yellowd"><bounds x="51" y="38" width="28" height="28" /></bezel>
<bezel element="whited"><bounds x="53" y="40" width="24" height="24" /></bezel>
<bezel element="black"><bounds x="53" y="51.75" width="24" height="0.5" /></bezel>
<bezel element="black"><bounds x="64.75" y="40" width="0.5" height="24" /></bezel>
<bezel element="blackd"><bounds x="63" y="50" width="4" height="4" /></bezel>
<bezel element="hl" inputtag="IN.2" inputmask="0x01"><bounds x="62" y="49" width="6" height="6" /><color alpha="0.25" /></bezel>
<bezel element="whited"><bounds x="63" y="75" width="4" height="4" /></bezel>
<bezel element="yellowd"><bounds x="63.625" y="75.625" width="2.75" height="2.75" /></bezel>
<bezel name="2.2" element="ledy"><bounds x="64.25" y="76.25" width="1.5" height="1.5" /></bezel>
<bezel element="redd"><bounds x="90" y="60" width="28" height="28" /></bezel>
<bezel element="whited"><bounds x="92" y="62" width="24" height="24" /></bezel>
<bezel element="black"><bounds x="92" y="73.75" width="24" height="0.5" /></bezel>
<bezel element="black"><bounds x="103.75" y="62" width="0.5" height="24" /></bezel>
<bezel element="blackd"><bounds x="102" y="72" width="4" height="4" /></bezel>
<bezel element="hl" inputtag="IN.2" inputmask="0x02"><bounds x="101" y="71" width="6" height="6" /><color alpha="0.25" /></bezel>
<bezel element="whited"><bounds x="102" y="47" width="4" height="4" /></bezel>
<bezel element="redd"><bounds x="102.625" y="47.625" width="2.75" height="2.75" /></bezel>
<bezel name="2.3" element="ledr"><bounds x="103.25" y="48.25" width="1.5" height="1.5" /></bezel>
<bezel element="greend"><bounds x="129" y="38" width="28" height="28" /></bezel>
<bezel element="whited"><bounds x="131" y="40" width="24" height="24" /></bezel>
<bezel element="black"><bounds x="131" y="51.75" width="24" height="0.5" /></bezel>
<bezel element="black"><bounds x="142.75" y="40" width="0.5" height="24" /></bezel>
<bezel element="blackd"><bounds x="141" y="50" width="4" height="4" /></bezel>
<bezel element="hl" inputtag="IN.2" inputmask="0x04"><bounds x="140" y="49" width="6" height="6" /><color alpha="0.25" /></bezel>
<bezel element="whited"><bounds x="141" y="75" width="4" height="4" /></bezel>
<bezel element="greend"><bounds x="141.625" y="75.625" width="2.75" height="2.75" /></bezel>
<bezel name="2.4" element="ledg"><bounds x="142.25" y="76.25" width="1.5" height="1.5" /></bezel>
<!-- score panel -->
<bezel element="gray"><bounds x="86" y="100" width="36" height="0.5" /></bezel>
<bezel name="digit0" element="digit"><bounds x="100" y="104" width="4" height="6" /></bezel>
<bezel name="digit1" element="digit"><bounds x="104" y="104" width="4" height="6" /></bezel>
<bezel name="2.0" element="ledr"><bounds x="90" y="106.25" width="1.5" height="1.5" /></bezel>
<bezel name="2.1" element="ledy"><bounds x="116.5" y="106.25" width="1.5" height="1.5" /></bezel>
<bezel element="text_game"><bounds x="85" y="115" width="8" height="2.5" /></bezel>
<bezel element="text_sw"><bounds x="93" y="115" width="2.5" height="2.5" /></bezel>
<bezel element="switch_game" inputtag="IN.0" inputmask="0x0f" inputraw="1"><bounds x="93" y="115" width="4" height="2.5" /></bezel>
<bezel element="text_skill"><bounds x="110" y="115" width="8" height="2.5" /></bezel>
<bezel element="text_sw"><bounds x="118" y="115" width="2.5" height="2.5" /></bezel>
<bezel element="switch_skill" inputtag="IN.1" inputmask="0x07" inputraw="1"><bounds x="118" y="115" width="4" height="2.5" /></bezel>
</view>
</mamelayout>

View File

@ -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