summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/hh_pic16.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/hh_pic16.cpp')
-rw-r--r--src/mame/drivers/hh_pic16.cpp288
1 files changed, 151 insertions, 137 deletions
diff --git a/src/mame/drivers/hh_pic16.cpp b/src/mame/drivers/hh_pic16.cpp
index c5ee7247cf9..c15623a3a55 100644
--- a/src/mame/drivers/hh_pic16.cpp
+++ b/src/mame/drivers/hh_pic16.cpp
@@ -3,9 +3,9 @@
// thanks-to:Sean Riddle, Kevin Horton
/***************************************************************************
- GI PIC 16xx-driven dedicated handhelds or other simple devices.
+GI PIC 16xx-driven dedicated handhelds or other simple devices.
- known chips:
+known chips:
serial device etc.
-----------------------------------------------------------
@@ -16,7 +16,7 @@
@036 1655A 1979, Ideal Maniac
@043 1655A 1979, Caprice Pro-Action Baseball
@049 1655A 1980, Kingsford Match Me(?)/Mini Match Me
- @051 1655A 1979, Tandy Electronic Basketball
+ @051 1655A 1979, Kmart Dr. Dunk/Tandy Electronic Basketball
@053 1655A 1979, Atari Touch Me
@0?? 1655A 1979, Tiger Half Court Computer Basketball/Sears Electronic Basketball (custom label)
@061 1655A 1980, Lakeside Le Boom
@@ -38,25 +38,35 @@
(* means undumped unless noted, @ denotes it's in this driver)
-
- TODO:
- - tweak MCU frequency for games when video/audio recording surfaces(YouTube etc.)
- - us2pfball player led is brighter, but I can't get a stable picture
- - ttfball: discrete sound part, for volume gating?
- - what's the relation between hccbaskb and tbaskb? Is one the bootleg of the
- other? Or are they both made by the same subcontractor? I presume Toytronic.
- - uspbball and pabball internal artwork
+ROM source notes when dumped from another publisher, but confident it's the same game:
+- drdunk: Tandy Electronic Basketball
+- flash: Radio Shack Sound Effects Chassis
+- hccbaskb: Sears Electronic Basketball
+- us2pfball: Tandy 2-Player Football
+- uspbball: Tandy 2-Player Baseball
+
+TODO:
+- tweak MCU frequency for games when video/audio recording surfaces(YouTube etc.)
+- us2pfball player led is brighter, but I can't get a stable picture
+- ttfball: discrete sound part, for volume gating?
+- what's the relation between drdunk and hccbaskb? Probably made by the same
+ Hong Kong subcontractor? I presume Toytronic.
+- uspbball and pabball internal artwork
***************************************************************************/
#include "emu.h"
+
#include "cpu/pic16c5x/pic16c5x.h"
#include "video/pwm.h"
#include "machine/clock.h"
#include "machine/timer.h"
#include "sound/spkrdev.h"
+
#include "speaker.h"
+// internal artwork
+#include "drdunk.lh"
#include "flash.lh" // clickable
#include "hccbaskb.lh"
#include "leboom.lh" // clickable
@@ -64,7 +74,6 @@
#include "melodym.lh" // clickable
#include "matchme.lh" // clickable
#include "rockpin.lh"
-#include "tbaskb.lh"
#include "touchme.lh" // clickable
#include "ttfball.lh"
#include "us2pfball.lh"
@@ -804,10 +813,11 @@ ROM_END
* 8 lamps, 1-bit sound
Known releases:
- - USA(1): Match Me/Mini Match Me(latter is the handheld version, same game)
+ - USA(1): Match Me/Mini Match Me, published by Kingsford
- USA(2): Me Too, published by Talbot
- Hong Kong: Gotcha!/Encore/Follow Me, published by Toytronic
+ Match Me is the tabletop version, Mini Match Me is the handheld.
The original is probably by Toytronic, Kingsford's version being licensed from them.
Known revisions:
@@ -953,6 +963,128 @@ ROM_END
/***************************************************************************
+ Kmart Dr. Dunk (manufactured in Hong Kong)
+ * PIC 1655A-51
+ * 2 7seg LEDs + 21 other LEDs, 1-bit sound
+
+ It is a clone of Mattel Basketball, but at lower speed.
+ The ROM is nearly identical to hccbaskb, the housing/overlay is similar to
+ U.S. Games/Tandy Trick Shot Basketball.
+
+ known releases:
+ - USA(1): Dr. Dunk, published by Kmart
+ - USA(2): Electronic Basketball (model 60-2146), published by Tandy
+
+***************************************************************************/
+
+class drdunk_state : public hh_pic16_state
+{
+public:
+ drdunk_state(const machine_config &mconfig, device_type type, const char *tag) :
+ hh_pic16_state(mconfig, type, tag)
+ { }
+
+ void update_display();
+ u8 read_a();
+ void write_b(u8 data);
+ void write_c(u8 data);
+ void drdunk(machine_config &config);
+};
+
+// handlers
+
+void drdunk_state::update_display()
+{
+ m_display->matrix(m_b, m_c);
+}
+
+u8 drdunk_state::read_a()
+{
+ // A2: skill switch, A3: multiplexed inputs
+ return m_inputs[5]->read() | read_inputs(5, 8) | 3;
+}
+
+void drdunk_state::write_b(u8 data)
+{
+ // B0: RTCC pin
+ m_maincpu->set_input_line(PIC16C5x_RTCC, data & 1);
+
+ // B0-B4: input mux
+ m_inp_mux = ~data & 0x1f;
+
+ // B0-B3: led select
+ // B4,B5: digit select
+ m_b = data;
+ update_display();
+}
+
+void drdunk_state::write_c(u8 data)
+{
+ // C7: speaker out
+ m_speaker->level_w(data >> 7 & 1);
+
+ // C0-C6: led data
+ m_c = ~data;
+ update_display();
+}
+
+// config
+
+static INPUT_PORTS_START( drdunk )
+ PORT_START("IN.0") // B0 port A3
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_16WAY
+
+ PORT_START("IN.1") // B1 port A3
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_16WAY
+
+ PORT_START("IN.2") // B2 port A3
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_16WAY
+
+ PORT_START("IN.3") // B3 port A3
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_16WAY
+
+ PORT_START("IN.4") // B4 port A3
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
+
+ PORT_START("IN.5") // port A2
+ PORT_CONFNAME( 0x04, 0x04, DEF_STR( Difficulty ) )
+ PORT_CONFSETTING( 0x04, "1" )
+ PORT_CONFSETTING( 0x00, "2" )
+INPUT_PORTS_END
+
+void drdunk_state::drdunk(machine_config &config)
+{
+ /* basic machine hardware */
+ PIC1655(config, m_maincpu, 800000); // approximation - RC osc. R=18K, C=47pF
+ m_maincpu->read_a().set(FUNC(drdunk_state::read_a));
+ m_maincpu->write_b().set(FUNC(drdunk_state::write_b));
+ m_maincpu->read_c().set_constant(0xff);
+ m_maincpu->write_c().set(FUNC(drdunk_state::write_c));
+
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(6, 7);
+ m_display->set_segmask(0x30, 0x7f);
+ m_display->set_bri_levels(0.01, 0.2); // player led is brighter
+ config.set_default_layout(layout_drdunk);
+
+ /* sound hardware */
+ SPEAKER(config, "mono").front_center();
+ SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
+}
+
+// roms
+
+ROM_START( drdunk )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "pic_1655a-051", 0x0000, 0x0400, CRC(92534b40) SHA1(7055e32846c913e68f7d35f279cd537f6325f4f2) )
+ROM_END
+
+
+
+
+
+/***************************************************************************
+
Lakeside Le Boom
* PIC 1655A-061
* 1 led, 1-bit sound with RC circuit for volume decay
@@ -1117,130 +1249,12 @@ ROM_END
/***************************************************************************
- Tandy Electronic Basketball (model 60-2146)
- * PIC 1655A-51
- * 2 7seg LEDs + 21 other LEDs, 1-bit sound
-
- It is a clone of Mattel Basketball, but at lower speed.
- The ROM is nearly identical to hccbaskb, the housing/overlay is the same as
- U.S. Games/Tandy Trick Shot Basketball.
-
-***************************************************************************/
-
-class tbaskb_state : public hh_pic16_state
-{
-public:
- tbaskb_state(const machine_config &mconfig, device_type type, const char *tag) :
- hh_pic16_state(mconfig, type, tag)
- { }
-
- void update_display();
- u8 read_a();
- void write_b(u8 data);
- void write_c(u8 data);
- void tbaskb(machine_config &config);
-};
-
-// handlers
-
-void tbaskb_state::update_display()
-{
- m_display->matrix(m_b, m_c);
-}
-
-u8 tbaskb_state::read_a()
-{
- // A2: skill switch, A3: multiplexed inputs
- return m_inputs[5]->read() | read_inputs(5, 8) | 3;
-}
-
-void tbaskb_state::write_b(u8 data)
-{
- // B0: RTCC pin
- m_maincpu->set_input_line(PIC16C5x_RTCC, data & 1);
-
- // B0-B4: input mux
- m_inp_mux = ~data & 0x1f;
-
- // B0-B3: led select
- // B4,B5: digit select
- m_b = data;
- update_display();
-}
-
-void tbaskb_state::write_c(u8 data)
-{
- // C7: speaker out
- m_speaker->level_w(data >> 7 & 1);
-
- // C0-C6: led data
- m_c = ~data;
- update_display();
-}
-
-// config
-
-static INPUT_PORTS_START( tbaskb )
- PORT_START("IN.0") // B0 port A3
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_16WAY
-
- PORT_START("IN.1") // B1 port A3
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_16WAY
-
- PORT_START("IN.2") // B2 port A3
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_16WAY
-
- PORT_START("IN.3") // B3 port A3
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_16WAY
-
- PORT_START("IN.4") // B4 port A3
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
-
- PORT_START("IN.5") // port A2
- PORT_CONFNAME( 0x04, 0x04, DEF_STR( Difficulty ) )
- PORT_CONFSETTING( 0x04, "1" )
- PORT_CONFSETTING( 0x00, "2" )
-INPUT_PORTS_END
-
-void tbaskb_state::tbaskb(machine_config &config)
-{
- /* basic machine hardware */
- PIC1655(config, m_maincpu, 800000); // approximation - RC osc. R=18K, C=47pF
- m_maincpu->read_a().set(FUNC(tbaskb_state::read_a));
- m_maincpu->write_b().set(FUNC(tbaskb_state::write_b));
- m_maincpu->read_c().set_constant(0xff);
- m_maincpu->write_c().set(FUNC(tbaskb_state::write_c));
-
- /* video hardware */
- PWM_DISPLAY(config, m_display).set_size(6, 7);
- m_display->set_segmask(0x30, 0x7f);
- m_display->set_bri_levels(0.01, 0.2); // player led is brighter
- config.set_default_layout(layout_tbaskb);
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-// roms
-
-ROM_START( tbaskb )
- ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "pic_1655a-051", 0x0000, 0x0400, CRC(92534b40) SHA1(7055e32846c913e68f7d35f279cd537f6325f4f2) )
-ROM_END
-
-
-
-
-
-/***************************************************************************
-
Tiger Electronics Rocket Pinball (model 7-460)
* PIC 1650A-110, 69-11397
* 3 7seg LEDs + 44 other LEDs, 1-bit sound
known releases:
- - Hong Kong(1): Rocket Pinball
+ - Hong Kong(1): Rocket Pinball, published by Tiger
- Hong Kong(2): Spaceship Pinball, published by Toytronic
- USA(1): Rocket Pinball (model 60-2140), published by Tandy
- USA(2): Cosmic Pinball (model 49-65456), published by Sears
@@ -1361,7 +1375,7 @@ ROM_END
* 2 7seg LEDs + 26 other LEDs, 1-bit sound
known releases:
- - Hong Kong: Half Court Computer Basketball
+ - Hong Kong: Half Court Computer Basketball, published by Tiger
- USA: Electronic Basketball (model 49-65453), published by Sears
***************************************************************************/
@@ -1646,7 +1660,7 @@ ROM_END
* 3 7seg LEDs + 36 other LEDs, 1-bit sound
known releases:
- - USA(1): Programmable Baseball
+ - USA(1): Programmable Baseball, published by U.S. Games
- USA(2): Electronic 2-Player Baseball (model 60-2157), published by Tandy
***************************************************************************/
@@ -1764,7 +1778,7 @@ ROM_END
* 8 7seg LEDs + 2 other LEDs, 1-bit sound
known releases:
- - USA(1): Electronic 2-Player Football
+ - USA(1): Electronic 2-Player Football, published by U.S. Games
- USA(2): Electronic 2-Player Football (model 60-2156), published by Tandy
***************************************************************************/
@@ -1917,9 +1931,9 @@ CONS( 1980, flash, 0, 0, flash, flash, flash_state, empty_
CONS( 1980, matchme, 0, 0, matchme, matchme, matchme_state, empty_init, "Kingsford", "Match Me", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1980, leboom, 0, 0, leboom, leboom, leboom_state, empty_init, "Lakeside", "Le Boom", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1979, drdunk, 0, 0, drdunk, drdunk, drdunk_state, empty_init, "Kmart", "Dr. Dunk", MACHINE_SUPPORTS_SAVE )
-CONS( 1979, tbaskb, 0, 0, tbaskb, tbaskb, tbaskb_state, empty_init, "Tandy Corporation", "Electronic Basketball (Tandy)", MACHINE_SUPPORTS_SAVE )
+CONS( 1980, leboom, 0, 0, leboom, leboom, leboom_state, empty_init, "Lakeside", "Le Boom", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1979, rockpin, 0, 0, rockpin, rockpin, rockpin_state, empty_init, "Tiger Electronics", "Rocket Pinball", MACHINE_SUPPORTS_SAVE )
CONS( 1979, hccbaskb, 0, 0, hccbaskb, hccbaskb, hccbaskb_state, empty_init, "Tiger Electronics", "Half Court Computer Basketball", MACHINE_SUPPORTS_SAVE )