From a71bef5e43ee1a4fa9f91a4078179f5f84c9e392 Mon Sep 17 00:00:00 2001 From: algestam Date: Sat, 20 Jun 2020 22:20:52 +0200 Subject: New working machine added ---------- Micro Vs. System: Donkey Kong 3 [algestam, Ryan Holtz] --- src/mame/drivers/hh_sm510.cpp | 94 +++++++++++++++++++++++++++++++++++++++++-- src/mame/mame.lst | 1 + 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 " @@ -4185,6 +4186,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 @@ -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 -- cgit v1.2.3