summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commit3e3a081b928c91f11b710b72bd7e26e18cf38d56 (patch)
treeae415a902f0a1a5dd307ab062947d0c1ef234411
parent7c1ec79705837675f6a3960eb5ebd43eb008f0f0 (diff)
New working machines
-------------------- Look Alive! Football [hap, Sean Riddle, Rik]
-rw-r--r--src/mame/drivers/hh_cop400.cpp117
-rw-r--r--src/mame/layout/lafootb.lay103
-rw-r--r--src/mame/layout/mwcbaseb.lay4
-rw-r--r--src/mame/mame.lst1
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