summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/hh_sm510.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/hh_sm510.cpp')
-rw-r--r--src/mame/drivers/hh_sm510.cpp218
1 files changed, 156 insertions, 62 deletions
diff --git a/src/mame/drivers/hh_sm510.cpp b/src/mame/drivers/hh_sm510.cpp
index 9515983b463..4e3342733c0 100644
--- a/src/mame/drivers/hh_sm510.cpp
+++ b/src/mame/drivers/hh_sm510.cpp
@@ -10,9 +10,13 @@
***************************************************************************/
#include "emu.h"
+
#include "cpu/sm510/sm510.h"
#include "cpu/sm510/kb1013vk1-2.h"
#include "sound/spkrdev.h"
+
+#include "rendlay.h"
+#include "screen.h"
#include "speaker.h"
#include "hh_sm510_test.lh" // common test-layout - use external artwork
@@ -45,8 +49,9 @@ public:
virtual DECLARE_INPUT_CHANGED_MEMBER(input_changed);
virtual DECLARE_READ8_MEMBER(input_r);
virtual DECLARE_WRITE8_MEMBER(input_w);
+ virtual DECLARE_WRITE8_MEMBER(piezo_r1_w);
+ virtual DECLARE_WRITE8_MEMBER(piezo_r2_w);
virtual DECLARE_WRITE16_MEMBER(lcd_segment_w);
- virtual DECLARE_WRITE8_MEMBER(sm511_melody_w);
protected:
virtual void machine_start() override;
@@ -145,12 +150,18 @@ READ8_MEMBER(hh_sm510_state::input_r)
// other generic output handlers
-WRITE8_MEMBER(hh_sm510_state::sm511_melody_w)
+WRITE8_MEMBER(hh_sm510_state::piezo_r1_w)
{
- // SM511 R pin is melody output
+ // R1 to piezo (SM511 R pin is melody output)
m_speaker->level_w(data & 1);
}
+WRITE8_MEMBER(hh_sm510_state::piezo_r2_w)
+{
+ // R2 to piezo
+ m_speaker->level_w(data >> 1 & 1);
+}
+
@@ -177,18 +188,8 @@ public:
{
m_inp_lines = 3;
}
-
- DECLARE_WRITE8_MEMBER(speaker_w);
};
-// handlers
-
-WRITE8_MEMBER(ktopgun_state::speaker_w)
-{
- m_speaker->level_w(data >> 0 & 1);
-}
-
-
// config
static INPUT_PORTS_START( ktopgun )
@@ -218,9 +219,80 @@ static MACHINE_CONFIG_START( ktopgun, ktopgun_state )
MCFG_SM510_WRITE_SEGBS_CB(WRITE16(hh_sm510_state, lcd_segment_w))
MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
- MCFG_SM510_WRITE_R_CB(WRITE8(ktopgun_state, speaker_w))
+ MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w))
- MCFG_DEFAULT_LAYOUT(layout_hh_sm510_test)
+ /* video hardware */
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1611, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1611-1, 0, 1080-1)
+ MCFG_DEFAULT_LAYOUT(layout_svg)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
+ Konami Contra
+ * PCB label BH002
+ * Sharp SM511 under epoxy (die label KMS 73B, KMS 773)
+
+***************************************************************************/
+
+class kcontra_state : public hh_sm510_state
+{
+public:
+ kcontra_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 3;
+ }
+};
+
+// config
+
+static INPUT_PORTS_START( kcontra )
+ PORT_START("IN.0")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+
+ PORT_START("IN.1")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Sound")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+
+ PORT_START("IN.2")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_ON ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( kcontra, kcontra_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", SM511, XTAL_32_768kHz)
+ MCFG_SM510_WRITE_SEGA_CB(WRITE16(hh_sm510_state, lcd_segment_w))
+ MCFG_SM510_WRITE_SEGB_CB(WRITE16(hh_sm510_state, lcd_segment_w))
+ MCFG_SM510_WRITE_SEGBS_CB(WRITE16(hh_sm510_state, lcd_segment_w))
+ MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
+ MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
+ MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w))
+
+ /* video hardware */
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1501, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1501-1, 0, 1080-1)
+ MCFG_DEFAULT_LAYOUT(layout_svg)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -260,12 +332,10 @@ static INPUT_PORTS_START( ktmnt )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
PORT_START("IN.1")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game Select")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Sound")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_POWER_ON ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("On/Start")
- //Wouldn't be better if IPT_START for "On/Start" was used???
- //Well, this here is a very preliminary driver, nothing final yet. How about some tea???
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_POWER_ON ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
PORT_START("IN.2")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
@@ -283,9 +353,14 @@ static MACHINE_CONFIG_START( ktmnt, ktmnt_state )
MCFG_SM510_WRITE_SEGBS_CB(WRITE16(hh_sm510_state, lcd_segment_w))
MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
- MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, sm511_melody_w))
+ MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w))
- MCFG_DEFAULT_LAYOUT(layout_hh_sm510_test)
+ /* video hardware */
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1380, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1380-1, 0, 1080-1)
+ MCFG_DEFAULT_LAYOUT(layout_svg)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -340,9 +415,14 @@ static MACHINE_CONFIG_START( kgradius, kgradius_state )
MCFG_SM510_WRITE_SEGBS_CB(WRITE16(hh_sm510_state, lcd_segment_w))
MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
- MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, sm511_melody_w))
+ MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w))
- MCFG_DEFAULT_LAYOUT(layout_hh_sm510_test)
+ /* video hardware */
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1435, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1435-1, 0, 1080-1)
+ MCFG_DEFAULT_LAYOUT(layout_svg)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -397,9 +477,14 @@ static MACHINE_CONFIG_START( kloneran, kloneran_state )
MCFG_SM510_WRITE_SEGBS_CB(WRITE16(hh_sm510_state, lcd_segment_w))
MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
- MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, sm511_melody_w))
+ MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w))
- MCFG_DEFAULT_LAYOUT(layout_hh_sm510_test)
+ /* video hardware */
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1495, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1495-1, 0, 1080-1)
+ MCFG_DEFAULT_LAYOUT(layout_svg)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -410,6 +495,7 @@ MACHINE_CONFIG_END
+
/***************************************************************************
Nintendo Game & Watch: Mickey & Donald (model DM-53)
@@ -418,29 +504,19 @@ MACHINE_CONFIG_END
***************************************************************************/
-class gnwmndon_state : public hh_sm510_state
+class dm53_state : public hh_sm510_state
{
public:
- gnwmndon_state(const machine_config &mconfig, device_type type, const char *tag)
+ dm53_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_sm510_state(mconfig, type, tag)
{
m_inp_lines = 2;
}
-
- DECLARE_WRITE8_MEMBER(speaker_w);
};
-// handlers
-
-WRITE8_MEMBER(gnwmndon_state::speaker_w)
-{
- m_speaker->level_w(data >> 1 & 1);
-}
-
-
// config
-static INPUT_PORTS_START( gnwmndon )
+static INPUT_PORTS_START( dm53 )
PORT_START("IN.0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
@@ -454,7 +530,7 @@ static INPUT_PORTS_START( gnwmndon )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // alarm
INPUT_PORTS_END
-static MACHINE_CONFIG_START( gnwmndon, gnwmndon_state )
+static MACHINE_CONFIG_START( dm53, dm53_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz)
@@ -463,7 +539,7 @@ static MACHINE_CONFIG_START( gnwmndon, gnwmndon_state )
MCFG_SM510_WRITE_SEGBS_CB(WRITE16(hh_sm510_state, lcd_segment_w))
MCFG_SM510_READ_K_CB(READ8(hh_sm510_state, input_r))
MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
- MCFG_SM510_WRITE_R_CB(WRITE8(gnwmndon_state, speaker_w))
+ MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r2_w))
MCFG_DEFAULT_LAYOUT(layout_hh_sm510_test)
@@ -526,48 +602,66 @@ MACHINE_CONFIG_END
ROM_START( ktopgun ) // except for filler/unused bytes, ROM listing in patent US5137277 "BH003 Top Gun" is same
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "cms54c_kms598", 0x0000, 0x1000, CRC(50870b35) SHA1(cda1260c2e1c180995eced04b7d7ff51616dcef5) )
+
+ ROM_REGION( 423317, "svg", 0)
+ ROM_LOAD( "ktopgun.svg", 0, 423317, BAD_DUMP CRC(1e341717) SHA1(74f4ae3fa0e4aacfda76d46753a5a06f115d221f) ) // by sean, ver. 11 apr 2017
ROM_END
-ROM_START( ktmnt ) // except for filler/unused bytes, ROM listing in patent US5150899 "BH005 TMNT" prog/music is same
+ROM_START( kcontra ) // except for filler/unused bytes, ROM listing in patent US5120057 "BH002 C (Contra)" program/melody is same
ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "kms73b_kms774.prog", 0x0000, 0x1000, CRC(a1064f87) SHA1(92156c35fbbb414007ee6804fe635128a741d5f1) )
+ ROM_LOAD( "kms73b_kms773.program", 0x0000, 0x1000, CRC(bf834877) SHA1(055dd56ec16d63afba61ab866481fd9c029fb54d) )
- ROM_REGION( 0x100, "maincpu:music", 0 )
- ROM_LOAD( "kms73b_kms774.music", 0x000, 0x100, CRC(8270d626) SHA1(bd91ca1d5cd7e2a62eef05c0033b19dcdbe441ca) )
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "kms73b_kms773.melody", 0x000, 0x100, CRC(23d02b99) SHA1(703938e496db0eeacd14fe7605d4b5c39e0a5bc8) )
+
+ ROM_REGION( 710430, "svg", 0)
+ ROM_LOAD( "kcontra.svg", 0, 710430, BAD_DUMP CRC(66cfc3a2) SHA1(bd38d62bb14321dfec2f99c1cd9346fb5f1fd856) ) // by sean, ver. 11 apr 2017
ROM_END
-ROM_START( kcontra ) // except for filler/unused bytes, ROM listing in patent US5120057 "BH002 C (Contra)" prog/music is same
+ROM_START( ktmnt ) // except for filler/unused bytes, ROM listing in patent US5150899 "BH005 TMNT" program/melody is same
ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "kms73b_kms773.prog", 0x0000, 0x1000, CRC(bf834877) SHA1(055dd56ec16d63afba61ab866481fd9c029fb54d) )
+ ROM_LOAD( "kms73b_kms774.program", 0x0000, 0x1000, CRC(a1064f87) SHA1(92156c35fbbb414007ee6804fe635128a741d5f1) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "kms73b_kms774.melody", 0x000, 0x100, CRC(8270d626) SHA1(bd91ca1d5cd7e2a62eef05c0033b19dcdbe441ca) )
- ROM_REGION( 0x100, "maincpu:music", 0 )
- ROM_LOAD( "kms73b_kms773.music", 0x000, 0x100, CRC(23d02b99) SHA1(703938e496db0eeacd14fe7605d4b5c39e0a5bc8) )
+ ROM_REGION( 607424, "svg", 0)
+ ROM_LOAD( "ktmnt.svg", 0, 607424, BAD_DUMP CRC(54ce0f2e) SHA1(1cd2d4c3026e8693f234ddfbbbe5f24311e5981d) ) // by sean, ver. 11 apr 2017
ROM_END
ROM_START( kgradius )
ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "kms73b_kms771.prog", 0x0000, 0x1000, CRC(830c2afc) SHA1(bb9ebd4e52831cc02cd92dd4b37675f34cf37b8c) )
+ ROM_LOAD( "kms73b_kms771.program", 0x0000, 0x1000, CRC(830c2afc) SHA1(bb9ebd4e52831cc02cd92dd4b37675f34cf37b8c) )
+
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "kms73b_kms771.melody", 0x000, 0x100, CRC(4c586b73) SHA1(14c5ab2898013a577f678970a648c374749cc66d) )
- ROM_REGION( 0x100, "maincpu:music", 0 )
- ROM_LOAD( "kms73b_kms771.music", 0x000, 0x100, CRC(4c586b73) SHA1(14c5ab2898013a577f678970a648c374749cc66d) )
+ ROM_REGION( 628695, "svg", 0)
+ ROM_LOAD( "kgradius.svg", 0, 628695, BAD_DUMP CRC(56ac8ee8) SHA1(c47190e7aaebbe84ed1ad55a8e88f5ebb18f939b) ) // by sean, ver. 11 apr 2017
ROM_END
ROM_START( kloneran )
ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD( "kms73b_kms781.prog", 0x0000, 0x1000, CRC(52b9735f) SHA1(06c5ef6e7e781b1176d4c1f2445f765ccf18b3f7) )
+ ROM_LOAD( "kms73b_kms781.program", 0x0000, 0x1000, CRC(52b9735f) SHA1(06c5ef6e7e781b1176d4c1f2445f765ccf18b3f7) )
- ROM_REGION( 0x100, "maincpu:music", 0 )
- ROM_LOAD( "kms73b_kms781.music", 0x000, 0x100, CRC(a393de36) SHA1(55089f04833ccb318524ab2b584c4817505f4019) )
+ ROM_REGION( 0x100, "maincpu:melody", 0 )
+ ROM_LOAD( "kms73b_kms781.melody", 0x000, 0x100, CRC(a393de36) SHA1(55089f04833ccb318524ab2b584c4817505f4019) )
+
+ ROM_REGION( 630184, "svg", 0)
+ ROM_LOAD( "kloneran.svg", 0, 630184, BAD_DUMP CRC(9b254520) SHA1(c9c85df44cc16f59f25df418b2e1aeba9f2f470c) ) // by sean, ver. 11 apr 2017
ROM_END
-ROM_START( gnwmndon )
+ROM_START( gnw_dm53 )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "dm53_cms54c_565", 0x0000, 0x1000, CRC(e21fc0f5) SHA1(3b65ccf9f98813319410414e11a3231b787cdee6) )
+
+ ROM_REGION( 100000, "svg", 0)
+ ROM_LOAD( "gnw_dm53.svg", 0, 100000, NO_DUMP )
ROM_END
@@ -579,12 +673,12 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
-CONS( 1989, kcontra, 0, 0, ktmnt, ktopgun, driver_device, 0, "Konami", "Contra (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
-CONS( 1989, ktopgun, 0, 0, ktopgun, ktopgun, driver_device, 0, "Konami", "Top Gun (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
-CONS( 1989, ktmnt, 0, 0, ktmnt, ktmnt, driver_device, 0, "Konami", "Teenage Mutant Ninja Turtles (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
-CONS( 1989, kgradius, 0, 0, kgradius, kgradius, driver_device, 0, "Konami", "Gradius (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
-CONS( 1989, kloneran, 0, 0, kloneran, kloneran, driver_device, 0, "Konami", "Lone Ranger (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
+CONS( 1989, ktopgun, 0, 0, ktopgun, ktopgun, driver_device, 0, "Konami", "Top Gun (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+CONS( 1989, kcontra, 0, 0, kcontra, kcontra, driver_device, 0, "Konami", "Contra (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+CONS( 1989, ktmnt, 0, 0, ktmnt, ktmnt, driver_device, 0, "Konami", "Teenage Mutant Ninja Turtles (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+CONS( 1989, kgradius, 0, 0, kgradius, kgradius, driver_device, 0, "Konami", "Gradius (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+CONS( 1989, kloneran, 0, 0, kloneran, kloneran, driver_device, 0, "Konami", "Lone Ranger (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-CONS( 1982, gnwmndon, 0, 0, gnwmndon, gnwmndon, driver_device, 0, "Nintendo", "Game & Watch: Mickey & Donald", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
+CONS( 1982, gnw_dm53, 0, 0, dm53, dm53, driver_device, 0, "Nintendo", "Game & Watch: Mickey & Donald", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-CONS( 1984, nupogodi, 0, 0, nupogodi, nupogodi, driver_device, 0, "Elektronika", "Nu, pogodi!", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
+CONS( 1984, nupogodi, 0, 0, nupogodi, nupogodi, driver_device, 0, "Elektronika", "Nu, pogodi!", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )