New working systems

-------------------
Star Wars: Electronic Laser Battle Game [hap, Sean Riddle]
This commit is contained in:
hap 2023-04-20 17:12:21 +02:00
parent d8f4411f39
commit 97ebbf91c9
4 changed files with 252 additions and 10 deletions

View File

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

View File

@ -35,14 +35,14 @@ license:CC0-1.0
<bounds x="0.4" y="0.4" width="0.2" height="0.2" />
</disk>
<disk state="0">
<color red="0.2" green="0.02" blue="0.03" />
<color red="0.15" green="0.015" blue="0.0225" />
<bounds x="0.4" y="0.4" width="0.2" height="0.2" />
</disk>
</element>
<element name="nlamp" defstate="0">
<disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk>
<disk state="0"><color red="0.2" green="0.02" blue="0.03" /></disk>
<disk state="0"><color red="0.15" green="0.015" blue="0.0225" /></disk>
</element>
<element name="text_a"><text string="A"><color red="0.7" green="0.7" blue="0.7" /></text></element>

124
src/mame/layout/starwlb.lay Normal file
View File

@ -0,0 +1,124 @@
<?xml version="1.0"?>
<!--
license:CC0-1.0
-->
<mamelayout version="2">
<!-- define elements -->
<element name="blackb"><rect><color red="0" green="0" blue="0" /></rect></element>
<element name="black"><rect><color red="0.13" green="0.13" blue="0.13" /></rect></element>
<element name="blackd"><disk><color red="0.13" green="0.13" blue="0.13" /></disk></element>
<element name="led" defstate="0">
<disk>
<bounds xc="0" yc="0" width="10" height="10" />
<color red="0.0" green="0.0" blue="0.0" />
</disk>
<disk state="1">
<bounds xc="0" yc="0" width="6" height="6" />
<color red="1.0" green="0.1" blue="0.15" />
</disk>
<disk state="0">
<bounds xc="0" yc="0" width="6" height="6" />
<color red="0.15" green="0.015" blue="0.0225" />
</disk>
</element>
<element name="lamp" defstate="0">
<disk state="1"><color red="1.0" green="1.0" blue="1.0" /></disk>
<disk state="0"><color red="0.25" green="0.25" blue="0.25" /></disk>
</element>
<element name="hl" defstate="0">
<rect state="1"><color red="0" green="0" blue="0" /></rect>
</element>
<element name="butf">
<rect>
<bounds xc="0" yc="0" width="10" height="10" />
<color red="0" green="0" blue="0" />
</rect>
<rect>
<bounds xc="0" yc="0" width="8.5" height="8.5" />
<color red="0.8" green="0.3" blue="0.1" />
</rect>
<text string="F">
<bounds xc="0" yc="0" width="9.5" height="9.5" />
<color red="0.6" green="0.225" blue="0.075" />
</text>
</element>
<element name="butb">
<rect>
<bounds xc="0" yc="0" width="10" height="10" />
<color red="0" green="0" blue="0" />
</rect>
<rect>
<bounds xc="0" yc="0" width="8.5" height="8.5" />
<color red="0.8" green="0.8" blue="0.1" />
</rect>
<text string="B">
<bounds xc="0" yc="0" width="9.5" height="9.5" />
<color red="0.6" green="0.6" blue="0.075" />
</text>
</element>
<element name="text_1">
<rect><color red="0.13" green="0.13" blue="0.13" /></rect>
<text string="1"><color red="0" green="0" blue="0" /></text>
</element>
<element name="text_2">
<rect><color red="0.13" green="0.13" blue="0.13" /></rect>
<text string="2"><color red="0" green="0" blue="0" /></text>
</element>
<!-- build screen -->
<view name="Internal Layout">
<bounds left="-7" right="27" top="-9.75" bottom="64.75" />
<element ref="black"><bounds xc="10" y="-2" width="5" height="60" /></element>
<element ref="blackd"><bounds xc="10" yc="27.5" width="27" height="27" /></element>
<element ref="blackd"><bounds xc="10" yc="-8.75" width="20" height="20" /></element>
<element ref="blackd"><bounds xc="10" yc="63.75" width="20" height="20" /></element>
<element ref="text_2"><bounds xc="10" yc="-7" width="2" height="2" /><orientation rotate="180" /></element>
<element ref="text_1"><bounds xc="10" yc="62" width="2" height="2" /></element>
<element ref="blackb"><bounds xc="10" y="-29.75" width="30" height="20" /></element>
<element ref="blackb"><bounds xc="10" y="64.75" width="30" height="20" /></element>
<element name="0.0" ref="led"><bounds xc="10" yc="55" width="1.5" height="1.5" /></element>
<element name="0.1" ref="led"><bounds xc="10" yc="52" width="1.5" height="1.5" /></element>
<element name="0.2" ref="led"><bounds xc="10" yc="49" width="1.5" height="1.5" /></element>
<element name="0.3" ref="led"><bounds xc="10" yc="46" width="1.5" height="1.5" /></element>
<element name="0.4" ref="led"><bounds xc="10" yc="43" width="1.5" height="1.5" /></element>
<element name="0.5" ref="led"><bounds xc="10" yc="40" width="1.5" height="1.5" /></element>
<element name="0.11" ref="led"><bounds xc="10" yc="15" width="1.5" height="1.5" /></element>
<element name="0.10" ref="led"><bounds xc="10" yc="12" width="1.5" height="1.5" /></element>
<element name="0.9" ref="led"><bounds xc="10" yc="9" width="1.5" height="1.5" /></element>
<element name="0.8" ref="led"><bounds xc="10" yc="6" width="1.5" height="1.5" /></element>
<element name="0.7" ref="led"><bounds xc="10" yc="3" width="1.5" height="1.5" /></element>
<element name="0.6" ref="led"><bounds xc="10" yc="0" width="1.5" height="1.5" /></element>
<element name="0.12" ref="lamp"><bounds xc="10" yc="27.5" width="20" height="20" /></element>
<element ref="butb"><bounds x="4" y="-7.75" width="5" height="5" /><orientation rotate="180" /></element>
<element ref="butf"><bounds x="11" y="-7.75" width="5" height="5" /><orientation rotate="180" /></element>
<element ref="hl" inputtag="IN.1" inputmask="0x01"><bounds x="4" y="-7.75" width="5" height="5" /><color alpha="0.25" /></element>
<element ref="hl" inputtag="IN.1" inputmask="0x02"><bounds x="11" y="-7.75" width="5" height="5" /><color alpha="0.25" /></element>
<element ref="butf"><bounds x="4" y="57.75" width="5" height="5" /></element>
<element ref="butb"><bounds x="11" y="57.75" width="5" height="5" /></element>
<element ref="hl" inputtag="IN.0" inputmask="0x08"><bounds x="4" y="57.75" width="5" height="5" /><color alpha="0.25" /></element>
<element ref="hl" inputtag="IN.0" inputmask="0x04"><bounds x="11" y="57.75" width="5" height="5" /><color alpha="0.25" /></element>
</view>
</mamelayout>

View File

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