summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/mame/drivers/hh_sm510.cpp94
-rw-r--r--src/mame/mame.lst1
2 files changed, 92 insertions, 3 deletions
diff --git a/src/mame/drivers/hh_sm510.cpp b/src/mame/drivers/hh_sm510.cpp
index 569d0ae7ba7..582c9038c3c 100644
--- a/src/mame/drivers/hh_sm510.cpp
+++ b/src/mame/drivers/hh_sm510.cpp
@@ -30,8 +30,9 @@ TODO:
electronically. For the ones that weren't decapped, they were read by
playing back all melody data and reconstructing it to ROM. Visual(decap)
verification is wanted for: gnw_bfightn, gnw_bjack, gnw_bsweep, gnw_climbern,
- gnw_dkcirc, gnw_dkjrp, gnw_gcliff, gnw_mariocmt, gnw_mariotj, gnw_mbaway,
- gnw_mmousep, gnw_pinball, gnw_popeyep, gnw_sbuster, gnw_snoopyp, gnw_zelda
+ gnw_dkcirc, gnw_dkjrp, gnw_dkong3, gnw_gcliff, gnw_mariocmt, gnw_mariotj,
+ gnw_mbaway, gnw_mmousep, gnw_pinball, gnw_popeyep, gnw_sbuster, gnw_snoopyp,
+ gnw_zelda
****************************************************************************
@@ -103,7 +104,7 @@ MB-108 nws SM511 Mario The Juggler
BU-201 sc SM510 Spitball Sparky
UD-202 sc SM510 Crab Grab
BX-301 mvs SM511 Boxing (aka Punch Out)
-AK-302* mvs SM511? Donkey Kong 3
+AK-302 mvs SM511 Donkey Kong 3
HK-303* mvs SM511? Donkey Kong Hockey
YM-801 cs SM511 Super Mario Bros. (assume same ROM as nws version)
DR-802 cs SM511 Climber "
@@ -4187,6 +4188,92 @@ ROM_END
/***************************************************************************
+ Nintendo Micro Vs. System: Donkey Kong 3 (model AK-302)
+ * Sharp SM511 label AK-302 299D (no decap)
+ * wide lcd screen with custom segments, 1-bit sound
+
+***************************************************************************/
+
+class gnw_dkong3_state : public hh_sm510_state
+{
+public:
+ gnw_dkong3_state(const machine_config &mconfig, device_type type, const char *tag) :
+ hh_sm510_state(mconfig, type, tag)
+ { }
+
+ void gnw_dkong3(machine_config &config);
+};
+
+// config
+
+static INPUT_PORTS_START( gnw_dkong3 )
+ PORT_START("IN.0") // S1
+ PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) PORT_PLAYER(2) // Spray
+
+ PORT_START("IN.1") // S2
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) // Spray
+ PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.2") // S3
+ PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) PORT_PLAYER(2)
+
+ PORT_START("IN.3") // S4
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed)
+ PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.4") // S5
+ PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) PORT_PLAYER(2)
+
+ PORT_START("IN.5") // S6
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed)
+ PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.6") // S7
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Time")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_CB(input_changed) PORT_NAME("Game B")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_CB(input_changed) PORT_NAME("Game A")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_CB(input_changed) PORT_NAME("Alarm")
+
+ PORT_START("ACL")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL")
+
+ PORT_START("B")
+ PORT_CONFNAME( 0x01, 0x01, "P1 Infinite Health (Cheat)") // "
+ PORT_CONFSETTING( 0x01, DEF_STR( Off ) )
+ PORT_CONFSETTING( 0x00, DEF_STR( On ) )
+INPUT_PORTS_END
+
+void gnw_dkong3_state::gnw_dkong3(machine_config &config)
+{
+ sm511_common(config, 1920, 563);
+}
+
+// roms
+
+ROM_START( gnw_dkong3 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "ak-302.program", 0x0000, 0x1000, CRC(ed59c15e) SHA1(94f6ce23677d2150c9f86c4b1954f5f531693b21) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "ak-302.melody", 0x000, 0x100, BAD_DUMP CRC(8b8f3d55) SHA1(54ebdeff4dd56a8bc2cd39bca1deada14bb90cce) ) // decap needed for verification
+
+ ROM_REGION( 292480, "screen", 0)
+ ROM_LOAD( "gnw_dkong3.svg", 0, 292480, CRC(980d2486) SHA1(8578bdf4a3814401d9a79867252ee09ed7df253c) )
+ROM_END
+
+
+
+
+
+/***************************************************************************
+
Konami Double Dribble
* Sharp SM510 under epoxy (die label CMS54C, KMS584)
* lcd screen with custom segments, 1-bit sound
@@ -9217,6 +9304,7 @@ CONS( 1984, gnw_cgrab, 0, 0, gnw_cgrab, gnw_cgrab, gnw_cgrab_stat
// Nintendo G&W: Micro Vs. System (actually, no official Game & Watch logo anywhere)
CONS( 1984, gnw_boxing, 0, 0, gnw_boxing, gnw_boxing, gnw_boxing_state, empty_init, "Nintendo", "Micro Vs. System: Boxing", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1984, gnw_dkong3, 0, 0, gnw_dkong3, gnw_dkong3, gnw_dkong3_state, empty_init, "Nintendo", "Micro Vs. System: Donkey Kong 3", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
// Konami
CONS( 1989, kdribble, 0, 0, kdribble, kdribble, kdribble_state, empty_init, "Konami", "Double Dribble (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 37323d8c9b5..0005816046c 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -15902,6 +15902,7 @@ gnw_dkjr // Nintendo
gnw_dkjrp // Nintendo
gnw_dkong // Nintendo
gnw_dkong2 // Nintendo
+gnw_dkong3 // Nintendo
gnw_egg // Nintendo
gnw_fire // Nintendo
gnw_fireatk // Nintendo