From 97ebbf91c93ff20f977951c6f47b453ed6134899 Mon Sep 17 00:00:00 2001 From: hap Date: Thu, 20 Apr 2023 17:12:21 +0200 Subject: New working systems ------------------- Star Wars: Electronic Laser Battle Game [hap, Sean Riddle] --- src/mame/handheld/hh_tms1k.cpp | 133 ++++++++++++++++++++++++++++++++++++++--- src/mame/layout/starwbc.lay | 4 +- src/mame/layout/starwlb.lay | 124 ++++++++++++++++++++++++++++++++++++++ src/mame/mame.lst | 1 + 4 files changed, 252 insertions(+), 10 deletions(-) create mode 100644 src/mame/layout/starwlb.lay diff --git a/src/mame/handheld/hh_tms1k.cpp b/src/mame/handheld/hh_tms1k.cpp index 94105f2d446..d1d29633de1 100644 --- a/src/mame/handheld/hh_tms1k.cpp +++ b/src/mame/handheld/hh_tms1k.cpp @@ -134,7 +134,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm @MP3206 TMS1000 1978, Concept 2000 Mr. Mus-I-Cal (model 560) @MP3207 TMS1000 1978, Concept 2000 Lite 'n Learn: Electronic Organ (model 554) @MP3208 TMS1000 1978, Milton Bradley Electronic Battleship (1977, model 4750B) - *MP3209 TMS1000 1978, Kenner Star Wars: Electronic Laser Battle Game + @MP3209 TMS1000 1978, Kenner Star Wars: Electronic Laser Battle Game @MP3226 TMS1000 1978, Milton Bradley Simon (Rev A) *MP3228 TMS1000 1979, Texas Instruments OEM melody chip *MP3232 TMS1000 1979, Fonas 2 Player Baseball (no "MP" on chip label) @@ -323,6 +323,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm #include "ssimon.lh" // clickable #include "ssports4.lh" #include "starwbc.lh" // clickable +#include "starwlb.lh" // clickable #include "stopthief.lh" // clickable #include "subwars.lh" #include "t3in1sa.lh" @@ -2151,7 +2152,7 @@ ROM_END /******************************************************************************* Coleco Electronic Quarterback (model 2120) - * TMS1100NLL MP3415 (die label same) + * TMS1100NLL MP3415 (die label: 1100B, MP3415) * 9-digit LED grid, 1-bit sound known releases: @@ -2280,7 +2281,7 @@ ROM_END /******************************************************************************* Coleco Head to Head: Electronic Football (model 2140) - * TMS1100NLLE (rev. E!) MP3460 (die label same) + * TMS1100NLLE (rev. E!) MP3460 (die label: 1100E, MP3460) * 2*SN75492N LED display drivers, 9-digit LED grid, 1-bit sound LED electronic football game. To distinguish between offense and defense, @@ -3692,7 +3693,7 @@ ROM_END Conic Electronic Multisport * PCB label: CONIC 101-027(1979), or CONIC 101-021 REV A(1980, with DS8871N) - * TMS1000 MP0168 (die label same) + * TMS1000 MP0168 (die label: 1000B, MP0168) * 2 7seg LEDs, 33 other LEDs, 1-bit sound This handheld includes 3 games: Basketball, Ice Hockey, Soccer. @@ -3822,7 +3823,7 @@ ROM_END /******************************************************************************* Conic Electronic Football - * TMS1000 MP0170 (die label same) + * TMS1000 MP0170 (die label: 1000B, MP0170) * DS8874N, 3*9 LED array, 7 7seg LEDs, 1-bit sound This is a clone of Mattel Football. Apparently Mattel tried to keep imports @@ -4253,8 +4254,9 @@ ROM_END /******************************************************************************* Electroplay Quickfire - * TMS1000NLL MP3260 (die label same) - * 2 7seg LEDs, 5 lamps, 3 lightsensors, lightgun + * TMS1000NLL MP3260 (die label: 1000C, MP3260) + * 2 7seg LEDs, 5 lamps, 1-bit sound + * 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. @@ -4288,7 +4290,7 @@ void qfire_state::write_r(u32 data) m_display->write_row(2, (data >> 3 & 3) | (data >> 4 & 0x1c)); // R9: speaker out - m_speaker->level_w(data >> 9 & 1); + m_speaker->level_w(BIT(data, 9)); } void qfire_state::write_o(u16 data) @@ -7252,6 +7254,120 @@ ROM_END +/******************************************************************************* + + Star Wars: Electronic Laser Battle Game (model 40090) + * TMS1000NLL MP3209 (die label: 1000C, MP3209) + * 12 LEDs, 1 lamp, 1-bit sound + + known releases: + - USA: Star Wars: Electronic Laser Battle Game, published by Kenner + - France: La Guerre des Etoiles: Bataille Spatiale Électronique, published by Meccano + +*******************************************************************************/ + +class starwlb_state : public hh_tms1k_state +{ +public: + starwlb_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) + { } + + void starwlb(machine_config &config); + +private: + void update_display(); + void write_r(u32 data); + void write_o(u16 data); + u8 read_k(); +}; + +// handlers + +void starwlb_state::update_display() +{ + m_display->matrix(1, (m_r & 0x7ff) | (m_o << 4 & 0x800) | (m_o << 10 & 0x1000)); +} + +void starwlb_state::write_r(u32 data) +{ + // R0-R10: leds + m_r = data; + update_display(); +} + +void starwlb_state::write_o(u16 data) +{ + // O0,O1: input mux + m_inp_mux = data & 3; + + // O3-O6(tied together): speaker out (actually only writes 0x0 or 0xf) + m_speaker->level_w(population_count_32(data >> 3 & 0xf)); + + // O2: lamp + // O7: one more led + m_o = data; + update_display(); +} + +u8 starwlb_state::read_k() +{ + // K: multiplexed inputs + return read_inputs(2); +} + +// inputs + +static INPUT_PORTS_START( starwlb ) + PORT_START("IN.0") // O0 + PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Button B") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Button F") + + PORT_START("IN.1") // O1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL PORT_NAME("P2 Button B") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Button F") + PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) +INPUT_PORTS_END + +// config + +void starwlb_state::starwlb(machine_config &config) +{ + // basic machine hardware + TMS1000(config, m_maincpu, 350000); // approximation - RC osc. R=33K, C=100pF + m_maincpu->read_k().set(FUNC(starwlb_state::read_k)); + m_maincpu->write_r().set(FUNC(starwlb_state::write_r)); + m_maincpu->write_o().set(FUNC(starwlb_state::write_o)); + + // video hardware + PWM_DISPLAY(config, m_display).set_size(1, 13); + config.set_default_layout(layout_starwlb); + + // sound hardware + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + static const double speaker_levels[5] = { 0.0, 1.0/4.0, 2.0/4.0, 3.0/4.0, 1.0 }; + m_speaker->set_levels(5, speaker_levels); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( starwlb ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "mp3209", 0x0000, 0x0400, CRC(99628f9c) SHA1(5db191462521c4ae0b6955b31d5e8c6de65dd6a0) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_common1_micro.pla", 0, 867, CRC(4becec19) SHA1(3c8a9be0f00c88c81f378b76886c39b10304f330) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_starwlb_output.pla", 0, 365, CRC(80a2d158) SHA1(8c74ca6af5d76425ff451bb5140a8dd2cfde850a) ) +ROM_END + + + + + /******************************************************************************* Kenner Star Wars: Electronic Battle Command Game (model 40370) @@ -16417,6 +16533,7 @@ SYST( 1981, fxmcr165, 0, 0, fxmcr165, fxmcr165, fxmcr165_state, SYST( 1979, elecdet, 0, 0, elecdet, elecdet, elecdet_state, empty_init, "Ideal Toy Corporation", "Electronic Detective", MACHINE_SUPPORTS_SAVE ) // *** +SYST( 1978, starwlb, 0, 0, starwlb, starwlb, starwlb_state, empty_init, "Kenner", "Star Wars: Electronic Laser Battle Game", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) SYST( 1979, starwbc, 0, 0, starwbc, starwbc, starwbc_state, empty_init, "Kenner", "Star Wars: Electronic Battle Command Game", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) SYST( 1979, starwbcp, starwbc, 0, starwbc, starwbc, starwbc_state, empty_init, "Kenner", "Star Wars: Electronic Battle Command Game (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) SYST( 1980, liveafb, 0, 0, liveafb, liveafb, liveafb_state, empty_init, "Kenner", "Live Action Football", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/layout/starwbc.lay b/src/mame/layout/starwbc.lay index 1543ce5abb0..522b2dffefb 100644 --- a/src/mame/layout/starwbc.lay +++ b/src/mame/layout/starwbc.lay @@ -35,14 +35,14 @@ license:CC0-1.0 - + - + diff --git a/src/mame/layout/starwlb.lay b/src/mame/layout/starwlb.lay new file mode 100644 index 00000000000..ffc7f50180c --- /dev/null +++ b/src/mame/layout/starwlb.lay @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 791f3ec24a1..f3b479ada09 100755 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -18991,6 +18991,7 @@ ssimon // Milton Bradley ssports4 // US Games starwbc // Kenner starwbcp // Kenner (patent) +starwlb // Kenner stopthief // Parker Bros stopthiefp // Parker Bros (patent) subwars // Tiger Electronics -- cgit v1.2.3