diff options
author | hap <happppp@users.noreply.github.com> | 2022-01-21 16:41:15 +0100 |
---|---|---|
committer | hap <happppp@users.noreply.github.com> | 2022-01-21 16:41:37 +0100 |
commit | 3e3a081b928c91f11b710b72bd7e26e18cf38d56 (patch) | |
tree | ae415a902f0a1a5dd307ab062947d0c1ef234411 | |
parent | 7c1ec79705837675f6a3960eb5ebd43eb008f0f0 (diff) |
New working machines
--------------------
Look Alive! Football [hap, Sean Riddle, Rik]
-rw-r--r-- | src/mame/drivers/hh_cop400.cpp | 117 | ||||
-rw-r--r-- | src/mame/layout/lafootb.lay | 103 | ||||
-rw-r--r-- | src/mame/layout/mwcbaseb.lay | 4 | ||||
-rw-r--r-- | src/mame/mame.lst | 1 |
4 files changed, 222 insertions, 3 deletions
diff --git a/src/mame/drivers/hh_cop400.cpp b/src/mame/drivers/hh_cop400.cpp index d78ace0e8cf..abf9cebe622 100644 --- a/src/mame/drivers/hh_cop400.cpp +++ b/src/mame/drivers/hh_cop400.cpp @@ -40,6 +40,7 @@ TODO: #include "h2hbaskbc.lh" #include "h2hhockeyc.lh" #include "h2hsoccerc.lh" +#include "lafootb.lh" #include "lchicken.lh" // clickable #include "lightfgt.lh" // clickable #include "mdallas.lh" @@ -1170,6 +1171,119 @@ ROM_END /*************************************************************************** + Mattel Look Alive! Football (model 1998) + * COP421L MCU bonded directly to PCB (rom serial HCJ) + * 2 7seg LEDs, LED matrix and overlay mask, 1-bit sound + + 1st-person view versions for Baseball and Basketball were also announced, + but not released. + +***************************************************************************/ + +class lafootb_state : public hh_cop400_state +{ +public: + lafootb_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_cop400_state(mconfig, type, tag) + { } + + void update_display(); + void write_l(u8 data); + void write_d(u8 data); + u8 read_g(); + void lafootb(machine_config &config); +}; + +// handlers + +void lafootb_state::update_display() +{ + m_display->matrix(~m_d, m_l); +} + +void lafootb_state::write_l(u8 data) +{ + // L: led data + m_l = data; + update_display(); +} + +void lafootb_state::write_d(u8 data) +{ + // D: led select, D2,D3: input mux + m_d = data & 0xf; + m_inp_mux = data >> 2 & 3; + update_display(); +} + +u8 lafootb_state::read_g() +{ + // G: multiplexed inputs + return read_inputs(2, 7) | (m_inputs[2]->read() & 8); +} + +// config + +static INPUT_PORTS_START( lafootb ) + PORT_START("IN.0") // D2 port G + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_16WAY PORT_NAME("Right / Home") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Kick / Yards to go") + + PORT_START("IN.1") // D3 port G + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_16WAY PORT_NAME("Left / Visitors") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_16WAY PORT_NAME("Up / Time") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Pass / Status") + + PORT_START("IN.2") // G3 + PORT_CONFNAME( 0x08, 0x08, DEF_STR( Difficulty ) ) + PORT_CONFSETTING( 0x08, "1" ) + PORT_CONFSETTING( 0x00, "2" ) +INPUT_PORTS_END + +void lafootb_state::lafootb(machine_config &config) +{ + /* basic machine hardware */ + COP421(config, m_maincpu, 900000); // approximation - RC osc. R=51K, C=100pF + m_maincpu->set_config(COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, false); // guessed + m_maincpu->write_l().set(FUNC(lafootb_state::write_l)); + m_maincpu->write_d().set(FUNC(lafootb_state::write_d)); + m_maincpu->read_g().set(FUNC(lafootb_state::read_g)); + m_maincpu->write_sk().set(m_speaker, FUNC(speaker_sound_device::level_w)); + + /* video hardware */ + screen_device &mask(SCREEN(config, "mask", SCREEN_TYPE_SVG)); + mask.set_refresh_hz(60); + mask.set_size(1920, 864); + mask.set_visarea_full(); + + PWM_DISPLAY(config, m_display).set_size(4, 8); + m_display->set_segmask(0x4, 0x7f); + m_display->set_segmask(0x8, 0xff); // right digit has dp + m_display->set_bri_levels(0.005); + config.set_default_layout(layout_lafootb); + + /* sound hardware */ + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( lafootb ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "cop421l-hcj", 0x0000, 0x0400, CRC(a9cc1e94) SHA1(7a39f5a5f10b8a2bd72da3ff3f3fcfaad35ead5f) ) + + ROM_REGION( 38608, "mask", 0) + ROM_LOAD( "lafootb.svg", 0, 38608, CRC(35387445) SHA1(7cd9db170820fc84d47545c3db8d991b2c5f4f7f) ) +ROM_END + + + + + +/*************************************************************************** + Mattel Dalla$ (J.R. handheld) * COP444 MCU label COP444L-HYN/N * 8-digit 7seg display, 1-bit sound @@ -1304,7 +1418,7 @@ void mdallas_state::mdallas(machine_config &config) ROM_START( mdallas ) ROM_REGION( 0x0800, "maincpu", 0 ) - ROM_LOAD( "copl444l-hyn_n", 0x0000, 0x0800, CRC(7848b78c) SHA1(778d24512180892f58c49df3c72ca77b2618d63b) ) + ROM_LOAD( "cop444l-hyn_n", 0x0000, 0x0800, CRC(7848b78c) SHA1(778d24512180892f58c49df3c72ca77b2618d63b) ) ROM_END @@ -2095,6 +2209,7 @@ CONS( 1980, lchicken, 0, 0, lchicken, lchicken, lchicken_state, e CONS( 1979, funjacks, 0, 0, funjacks, funjacks, funjacks_state, empty_init, "Mattel", "Funtronics: Jacks", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1979, funrlgl, 0, 0, funrlgl, funrlgl, funrlgl_state, empty_init, "Mattel", "Funtronics: Red Light Green Light", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1980, funtag, 0, 0, funtag, funtag, funtag_state, empty_init, "Mattel", "Funtronics: Tag", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1980, lafootb, 0, 0, lafootb, lafootb, lafootb_state, empty_init, "Mattel", "Look Alive! Football", MACHINE_SUPPORTS_SAVE ) CONS( 1981, mdallas, 0, 0, mdallas, mdallas, mdallas_state, empty_init, "Mattel", "Dalla$ (J.R. handheld)", MACHINE_SUPPORTS_SAVE ) // *** CONS( 1980, plus1, 0, 0, plus1, plus1, plus1_state, empty_init, "Milton Bradley", "Plus One", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_CONTROLS ) // *** diff --git a/src/mame/layout/lafootb.lay b/src/mame/layout/lafootb.lay new file mode 100644 index 00000000000..e391b268c23 --- /dev/null +++ b/src/mame/layout/lafootb.lay @@ -0,0 +1,103 @@ +<?xml version="1.0"?> +<!-- +license:CC0 +--> +<mamelayout version="2"> + +<!-- define elements --> + + <element name="black"><rect><color red="0" green="0" blue="0" /></rect></element> + <element name="white"><rect><color red="0.8" green="0.8" blue="0.8" /></rect></element> + <element name="yellow"><rect><color red="0.6" green="0.5" blue="0.1" /></rect></element> + <element name="yellowd"><disk><color red="0.6" green="0.5" blue="0.1" /></disk></element> + <element name="text_r"><text string="R"><color red="0.6" green="0.5" blue="0.1" /></text></element> + + <element name="digit" defstate="0"> + <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg> + </element> + + <element name="led" defstate="0"> + <rect state="0"><color red="0.1" green="0.01" blue="0.015" /></rect> + <rect state="1"><color red="1.0" green="0.1" blue="0.15" /></rect> + </element> + + +<!-- led mask --> + + <group name="leds"> + <element ref="led" name="0.5"><bounds x="21" y="0" width="6" height="9" /></element> + <element ref="led" name="0.6"><bounds x="34" y="0" width="6" height="9" /></element> + <element ref="led" name="1.7"><bounds x="47" y="0" width="6" height="9" /></element> + <element ref="led" name="1.6"><bounds x="60" y="0" width="6" height="9" /></element> + <element ref="led" name="1.5"><bounds x="74" y="0" width="6" height="9" /></element> + + <element ref="led" name="1.4"><bounds x="10" y="17" width="6.5" height="10" /></element> + <element ref="led" name="1.3"><bounds x="28" y="17" width="6.5" height="10" /></element> + <element ref="led" name="1.2"><bounds x="47" y="17" width="6.5" height="10" /></element> + <element ref="led" name="1.1"><bounds x="65" y="17" width="6.5" height="10" /></element> + <element ref="led" name="1.0"><bounds x="83" y="17" width="6.5" height="10" /></element> + + <element ref="led" name="0.4"><bounds x="0" y="34" width="7" height="11" /></element> + <element ref="led" name="0.3"><bounds x="23" y="34" width="7" height="11" /></element> + <element ref="led" name="0.2"><bounds x="46" y="34" width="7" height="11" /></element> + <element ref="led" name="0.1"><bounds x="70" y="34" width="7" height="11" /></element> + <element ref="led" name="0.0"><bounds x="93" y="34" width="7" height="11" /></element> + + <screen index="0" blend="multiply"><bounds x="0" y="0" width="100" height="45" /></screen> + </group> + + +<!-- build screen --> + + <view name="Internal Layout"> + <bounds left="25" right="175" top="34" bottom="132" /> + <group ref="leds"><bounds x="50" y="50" width="100" height="45" /></group> + + <repeat count="250"> + <param name="x" start="74" increment="-0.2" /> + <param name="y" start="48" increment="0.2" /> + <element ref="white"><bounds x="~x~" y="~y~" width="0.5" height="0.5" /></element> + </repeat> + + <repeat count="250"> + <param name="x" start="126" increment="0.2" /> + <param name="y" start="48" increment="0.2" /> + <element ref="white"><bounds x="~x~" y="~y~" width="0.5" height="0.5" /></element> + </repeat> + + <repeat count="24"> + <param name="x" start="80" increment="-1.5" /> + <param name="y" start="51" increment="3.4" /> + <element ref="white"><bounds x="~x~" y="~y~" width="2" height="0.3" /></element> + </repeat> + + <repeat count="24"> + <param name="x" start="118" increment="1.5" /> + <param name="y" start="51" increment="3.4" /> + <element ref="white"><bounds x="~x~" y="~y~" width="2" height="0.3" /></element> + </repeat> + + <element ref="white"><bounds x="99.5" y="40" width="1" height="9.5" /></element> + <element ref="white"><bounds x="92.5" y="34" width="15" height="11" /></element> + <element ref="black"><bounds x="93.5" y="33" width="13" height="11" /></element> + + <element ref="white"><bounds x="74" y="48" width="52.5" height="0.2" /></element> + <element ref="white"><bounds x="63.3" y="58.8" width="74.1" height="0.3" /></element> + <element ref="white"><bounds x="55.4" y="66.7" width="89.8" height="0.45" /></element> + <element ref="white"><bounds x="42.6" y="79.5" width="115.3" height="0.6" /></element> + <element ref="white"><bounds x="20.0" y="102" width="160.4" height="0.9" /></element> + + <element ref="black"><bounds x="0" y="70" width="25" height="50" /></element> + <element ref="black"><bounds x="175" y="70" width="25" height="50" /></element> + + <element ref="text_r"><bounds x="100" y="60" width="10" height="10" /></element> + + <element ref="yellowd"><bounds x="95" y="107" width="9" height="9" /></element> + <element ref="yellow"><bounds x="88.5" y="114.5" width="22" height="17.5" /></element> + <element ref="black"><bounds x="89.3" y="115.3" width="20.4" height="17.5" /></element> + + <element name="digit2" ref="digit"><bounds x="91.5" y="117.5" width="8" height="12" /></element> + <element name="digit3" ref="digit"><bounds x="99.5" y="117.5" width="8" height="12" /></element> + + </view> +</mamelayout> diff --git a/src/mame/layout/mwcbaseb.lay b/src/mame/layout/mwcbaseb.lay index c5ddaedd338..ee0f58da91d 100644 --- a/src/mame/layout/mwcbaseb.lay +++ b/src/mame/layout/mwcbaseb.lay @@ -4,12 +4,12 @@ license:CC0 --> <mamelayout version="2"> - <!-- define elements --> +<!-- define elements --> <element name="gray"><disk><color red="0.45" green="0.45" blue="0.45" /></disk></element> - <!-- build screen --> +<!-- build screen --> <view name="Internal Layout"> <screen index="0"><bounds x="0" y="0" width="96" height="23.9" /></screen> diff --git a/src/mame/mame.lst b/src/mame/mame.lst index c1f57b80dfa..9cd5a849ad7 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -16397,6 +16397,7 @@ funtag // Mattel h2hbaskbc // Coleco h2hhockeyc // Coleco h2hsoccerc // Coleco +lafootb // Mattel lchicken // LJN lightfgt // Milton Bradley mdallas // Mattel |