From dc0fe9c309c736326267429d6c597ff087bbf2fb Mon Sep 17 00:00:00 2001 From: hap Date: Mon, 22 Mar 2021 22:56:33 +0100 Subject: New working machines -------------------- Football 2 (Mattel) [hap, Sean Riddle] --- src/mame/drivers/hh_pps41.cpp | 116 +++++++++++++++++++++++++++- src/mame/layout/cnfball.lay | 45 +++++++---- src/mame/layout/cnfball2.lay | 6 +- src/mame/layout/cqback.lay | 9 +-- src/mame/layout/mfootb2.lay | 170 ++++++++++++++++++++++++++++++++++++++++++ src/mame/layout/tcfball.lay | 45 +++++++---- src/mame/layout/tcfballa.lay | 45 +++++++---- src/mame/layout/ttfball.lay | 45 +++++++---- src/mame/layout/us2pfball.lay | 9 +-- src/mame/mame.lst | 1 + 10 files changed, 418 insertions(+), 73 deletions(-) create mode 100644 src/mame/layout/mfootb2.lay diff --git a/src/mame/drivers/hh_pps41.cpp b/src/mame/drivers/hh_pps41.cpp index 8b94a02faeb..ec52595659d 100644 --- a/src/mame/drivers/hh_pps41.cpp +++ b/src/mame/drivers/hh_pps41.cpp @@ -30,6 +30,7 @@ ROM source notes when dumped from another publisher, but confident it's the same #include "horocomp.lh" #include "mastmind.lh" #include "memoquiz.lh" +#include "mfootb2.lh" #include "mwcfootb.lh" #include "rdqa.lh" #include "scrabsen.lh" @@ -636,6 +637,118 @@ ROM_END +/*************************************************************************** + + Mattel Football 2 (model 1050) + * PCB label: MATTEL, 1050-4369D + * MM77LA MCU (label B8000-12, die label B8000) + * 7 7seg leds, 30 other leds, 2-bit sound + + Through its production run, it was released as "Football 2" and "Football II". + +***************************************************************************/ + +class mfootb2_state : public hh_pps41_state +{ +public: + mfootb2_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_pps41_state(mconfig, type, tag) + { } + + void update_display(); + void write_d(u16 data); + void write_r(u16 data); + void write_spk(u8 data); + void mfootb2(machine_config &config); +}; + +// handlers + +void mfootb2_state::update_display() +{ + m_display->matrix(m_d, (m_r & 0x7f) | (m_d >> 4 & 0x80) | (m_r << 1 & 0x700)); +} + +void mfootb2_state::write_d(u16 data) +{ + // DIO0-DIO2, DIO6-DIO9: digit select + // DIO3-DIO5: led select + // DIO10: 4th digit DP + m_d = data; + update_display(); +} + +void mfootb2_state::write_r(u16 data) +{ + // RO01-RO10: led data + m_r = data; + update_display(); +} + +void mfootb2_state::write_spk(u8 data) +{ + // SPK: speaker out + m_speaker->level_w(data); +} + +// config + +static INPUT_PORTS_START( mfootb2 ) + PORT_START("IN.0") // PI + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START2 ) PORT_NAME("Score") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("Status") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Kick") + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Pass") + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY + + PORT_START("IN.1") // DIO11 + PORT_CONFNAME( 0x400, 0x000, DEF_STR( Difficulty ) ) + PORT_CONFSETTING( 0x000, "1" ) + PORT_CONFSETTING( 0x400, "2" ) +INPUT_PORTS_END + +void mfootb2_state::mfootb2(machine_config &config) +{ + /* basic machine hardware */ + MM77LA(config, m_maincpu, 380000); // approximation - VC osc. R=56K + m_maincpu->write_d().set(FUNC(mfootb2_state::write_d)); + m_maincpu->read_d().set_ioport("IN.1"); + m_maincpu->write_r().set(FUNC(mfootb2_state::write_r)); + m_maincpu->read_p().set_ioport("IN.0"); + m_maincpu->write_spk().set(FUNC(mfootb2_state::write_spk)); + + /* video hardware */ + PWM_DISPLAY(config, m_display).set_size(10, 11); + m_display->set_segmask(0x3c7, 0x7f); + m_display->set_segmask(0x002, 0xff); + m_display->set_bri_levels(0.015, 0.2); // ball led is brighter + config.set_default_layout(layout_mfootb2); + + /* sound hardware */ + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + static const double speaker_levels[4] = { 0.0, 1.0, -1.0, 0.0 }; + m_speaker->set_levels(4, speaker_levels); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( mfootb2 ) + ROM_REGION( 0x0800, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD( "b8000-12", 0x0000, 0x0600, CRC(5b65fc38) SHA1(4fafc9deb5609b16f09b18b7346ea96ffe8bf9e0) ) + + ROM_REGION( 317, "maincpu:opla", 0 ) + ROM_LOAD( "mm77la_mfootb2_output.pla", 0, 317, CRC(11c0bbfa) SHA1(939a0a6adeace8ca0f9e17290306a2e7ced21db3) ) +ROM_END + + + + + /*************************************************************************** Mattel Brain Baffler (model 1080) @@ -827,7 +940,7 @@ public: void horocomp_state::update_display() { - // 7seg display is upside-down + // 14seg display is upside-down u16 flip = m_r << 7 | m_r >> 7; m_display->matrix(m_inp_mux, bitswap<14>(flip, 6,5,13,12,11,4,3,10,9,8,7,2,1,0)); } @@ -1474,6 +1587,7 @@ CONS( 1979, dunksunk, 0, 0, dunksunk, dunksunk, dunksunk_state, empty_in CONS( 1978, memoquiz, 0, 0, memoquiz, memoquiz, memoquiz_state, empty_init, "M.E.M. Belgium", "Memoquiz", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +CONS( 1978, mfootb2, 0, 0, mfootb2, mfootb2, mfootb2_state, empty_init, "Mattel", "Football 2 (Mattel)", MACHINE_SUPPORTS_SAVE ) CONS( 1979, brainbaf, 0, 0, brainbaf, brainbaf, brainbaf_state, empty_init, "Mattel", "Brain Baffler", MACHINE_SUPPORTS_SAVE ) CONS( 1979, horocomp, 0, 0, horocomp, horocomp, horocomp_state, empty_init, "Mattel", "Horoscope Computer", MACHINE_SUPPORTS_SAVE ) CONS( 1980, mwcfootb, 0, 0, mwcfootb, mwcfootb, mwcfootb_state, empty_init, "Mattel", "World Championship Football", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/layout/cnfball.lay b/src/mame/layout/cnfball.lay index c49baaef4c2..64a73f26ca4 100644 --- a/src/mame/layout/cnfball.lay +++ b/src/mame/layout/cnfball.lay @@ -39,9 +39,22 @@ license:CC0 - - - + + + + + + + + + + + + + + + + @@ -52,18 +65,17 @@ license:CC0 - - + - - - - - - - + + + + + + + @@ -76,8 +88,7 @@ license:CC0 - - + @@ -139,5 +150,11 @@ license:CC0 + + + + + + diff --git a/src/mame/layout/cnfball2.lay b/src/mame/layout/cnfball2.lay index 7d7c8a88d7d..1fea46e943b 100644 --- a/src/mame/layout/cnfball2.lay +++ b/src/mame/layout/cnfball2.lay @@ -69,8 +69,7 @@ license:CC0 - - + @@ -144,8 +143,7 @@ license:CC0 - - + diff --git a/src/mame/layout/cqback.lay b/src/mame/layout/cqback.lay index 6c222e081d7..913560c2bcd 100644 --- a/src/mame/layout/cqback.lay +++ b/src/mame/layout/cqback.lay @@ -77,8 +77,7 @@ license:CC0 - - + @@ -141,8 +140,7 @@ license:CC0 - - + @@ -179,8 +177,7 @@ license:CC0 - - + diff --git a/src/mame/layout/mfootb2.lay b/src/mame/layout/mfootb2.lay new file mode 100644 index 00000000000..6834aa11c1c --- /dev/null +++ b/src/mame/layout/mfootb2.lay @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/tcfball.lay b/src/mame/layout/tcfball.lay index 4b40a78d1cd..19ab428a114 100644 --- a/src/mame/layout/tcfball.lay +++ b/src/mame/layout/tcfball.lay @@ -39,9 +39,22 @@ license:CC0 - - - + + + + + + + + + + + + + + + + @@ -52,18 +65,17 @@ license:CC0 - - + - - - - - - - + + + + + + + @@ -76,8 +88,7 @@ license:CC0 - - + @@ -139,5 +150,11 @@ license:CC0 + + + + + + diff --git a/src/mame/layout/tcfballa.lay b/src/mame/layout/tcfballa.lay index 10d3fdd809d..59e44b70751 100644 --- a/src/mame/layout/tcfballa.lay +++ b/src/mame/layout/tcfballa.lay @@ -39,9 +39,22 @@ license:CC0 - - - + + + + + + + + + + + + + + + + @@ -52,18 +65,17 @@ license:CC0 - - + - - - - - - - + + + + + + + @@ -73,8 +85,7 @@ license:CC0 - - + @@ -140,5 +151,11 @@ license:CC0 + + + + + + diff --git a/src/mame/layout/ttfball.lay b/src/mame/layout/ttfball.lay index 7f8d9feff0b..ee12cb26d1f 100644 --- a/src/mame/layout/ttfball.lay +++ b/src/mame/layout/ttfball.lay @@ -39,9 +39,22 @@ license:CC0 - - - + + + + + + + + + + + + + + + + @@ -52,18 +65,17 @@ license:CC0 - - + - - - - - - - + + + + + + + @@ -76,8 +88,7 @@ license:CC0 - - + @@ -139,5 +150,11 @@ license:CC0 + + + + + + diff --git a/src/mame/layout/us2pfball.lay b/src/mame/layout/us2pfball.lay index 4761e603057..39d6310172a 100644 --- a/src/mame/layout/us2pfball.lay +++ b/src/mame/layout/us2pfball.lay @@ -100,8 +100,7 @@ license:CC0 - - + @@ -135,8 +134,7 @@ license:CC0 - - + @@ -146,8 +144,7 @@ license:CC0 - - + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 58356fba38d..74347b3dd71 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -16185,6 +16185,7 @@ ftri1 // Fonas horocomp // Mattel mastmind // Invicta memoquiz // MEM +mfootb2 // Mattel mwcfootb // Mattel rdqa // Selchow & Righter scrabsen // Selchow & Righter -- cgit v1.2.3