diff options
Diffstat (limited to 'src/mame/drivers/hh_pic16.cpp')
-rw-r--r-- | src/mame/drivers/hh_pic16.cpp | 288 |
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 ) |