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.cpp146
1 files changed, 126 insertions, 20 deletions
diff --git a/src/mame/drivers/hh_sm510.cpp b/src/mame/drivers/hh_sm510.cpp
index d2f9c00af55..e60446987f5 100644
--- a/src/mame/drivers/hh_sm510.cpp
+++ b/src/mame/drivers/hh_sm510.cpp
@@ -5,8 +5,11 @@
Sharp SM510/SM511 handhelds.
TODO:
- - svg lcd screen background/foreground (not supported in core)
- - ktmnt: "LIMIT" flickers when going underwater on level 1
+ - svg lcd screen background/foreground (not supported in core),
+ or should it be for external artwork only?
+ - flickering segments, lcd physics? or screen update timing?
+ * ktmnt: "LIMIT" segment when going underwater on level 1
+ * gnw_dj101: cage and clock before you start the game
***************************************************************************/
@@ -19,6 +22,8 @@
#include "screen.h"
#include "speaker.h"
+// internal artwork
+#include "gnw_dualv.lh"
//#include "hh_sm510_test.lh" // common test-layout - use external artwork
@@ -388,6 +393,8 @@ MACHINE_CONFIG_END
Konami Gradius
* PCB label BH004
* Sharp SM511 under epoxy (die label KMS73B, KMS774)
+
+ Known in Japan as Nemesis.
***************************************************************************/
@@ -556,11 +563,17 @@ static MACHINE_CONFIG_START( dm53 )
MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r2_w))
/* video hardware */
- MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_SVG_ADD("top", "svg_top")
MCFG_SCREEN_REFRESH_RATE(50)
- MCFG_SCREEN_SIZE(802, 1080)
- MCFG_SCREEN_VISIBLE_AREA(0, 802-1, 0, 1080-1)
- MCFG_DEFAULT_LAYOUT(layout_svg)
+ MCFG_SCREEN_SIZE(1000, 645)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1000-1, 0, 645-1)
+
+ MCFG_SCREEN_SVG_ADD("bottom", "svg_bottom")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1000, 635)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1000-1, 0, 635-1)
+
+ MCFG_DEFAULT_LAYOUT(layout_gnw_dualv)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -623,10 +636,85 @@ static MACHINE_CONFIG_START( jr55 )
MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w))
/* video hardware */
+ MCFG_SCREEN_SVG_ADD("top", "svg_top")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1000, 638)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1000-1, 0, 638-1)
+
+ MCFG_SCREEN_SVG_ADD("bottom", "svg_bottom")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1000, 657)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1000-1, 0, 657-1)
+
+ MCFG_DEFAULT_LAYOUT(layout_gnw_dualv)
+
+ /* 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
+
+
+
+
+
+/***************************************************************************
+
+ Nintendo Game & Watch: Donkey Kong Jr. (model DJ-101)
+ * Sharp SM510 label DJ-101 52ZA (no decap)
+
+ This is the new wide screen version, there's also a tabletop version that
+ plays more like the arcade game.
+
+***************************************************************************/
+
+class dj101_state : public hh_sm510_state
+{
+public:
+ dj101_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( dj101 )
+ PORT_START("IN.0")
+ PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+
+ PORT_START("IN.1")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) 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_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+
+ PORT_START("IN.2")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Time")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game B")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game A")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alarm")
+
+ PORT_START("ACL")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( dj101 )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz)
+ MCFG_SM510_WRITE_SEGS_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(802, 1080)
- MCFG_SCREEN_VISIBLE_AREA(0, 802-1, 0, 1080-1)
+ MCFG_SCREEN_SIZE(1665, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1665-1, 0, 1080-1)
MCFG_DEFAULT_LAYOUT(layout_svg)
/* sound hardware */
@@ -643,6 +731,8 @@ MACHINE_CONFIG_END
Nintendo Game & Watch: Mario's Cement Factory (model ML-102)
* Sharp SM510 label ML-102 298D (die label CMS54C, KMS577)
+
+ This is the new wide screen version, there's also a tabletop version.
***************************************************************************/
@@ -798,7 +888,7 @@ ROM_START( ktopgun ) // except for filler/unused bytes, ROM listing in patent US
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_LOAD( "ktopgun.svg", 0, 423317, CRC(1e341717) SHA1(74f4ae3fa0e4aacfda76d46753a5a06f115d221f) ) // by Sean, ver. 11 apr 2017
ROM_END
@@ -810,7 +900,7 @@ ROM_START( kcontra ) // except for filler/unused bytes, ROM listing in patent US
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_LOAD( "kcontra.svg", 0, 710430, CRC(66cfc3a2) SHA1(bd38d62bb14321dfec2f99c1cd9346fb5f1fd856) ) // by Sean, ver. 11 apr 2017
ROM_END
@@ -822,7 +912,7 @@ ROM_START( ktmnt ) // except for filler/unused bytes, ROM listing in patent US51
ROM_LOAD( "kms73b_kms774.melody", 0x000, 0x100, CRC(8270d626) SHA1(bd91ca1d5cd7e2a62eef05c0033b19dcdbe441ca) )
ROM_REGION( 607424, "svg", 0)
- ROM_LOAD( "ktmnt.svg", 0, 607424, BAD_DUMP CRC(54ce0f2e) SHA1(1cd2d4c3026e8693f234ddfbbbe5f24311e5981d) ) // by Sean, ver. 11 apr 2017
+ ROM_LOAD( "ktmnt.svg", 0, 607424, CRC(54ce0f2e) SHA1(1cd2d4c3026e8693f234ddfbbbe5f24311e5981d) ) // by Sean, ver. 11 apr 2017
ROM_END
@@ -834,7 +924,7 @@ ROM_START( kgradius )
ROM_LOAD( "kms73b_kms771.melody", 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_LOAD( "kgradius.svg", 0, 628695, CRC(56ac8ee8) SHA1(c47190e7aaebbe84ed1ad55a8e88f5ebb18f939b) ) // by Sean, ver. 11 apr 2017
ROM_END
@@ -846,7 +936,7 @@ ROM_START( kloneran )
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_LOAD( "kloneran.svg", 0, 630184, CRC(9b254520) SHA1(c9c85df44cc16f59f25df418b2e1aeba9f2f470c) ) // by Sean, ver. 11 apr 2017
ROM_END
@@ -854,8 +944,11 @@ ROM_START( gnw_dm53 )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "dm53_cms54c_cms565", 0x0000, 0x1000, CRC(e21fc0f5) SHA1(3b65ccf9f98813319410414e11a3231b787cdee6) )
- ROM_REGION( 195362, "svg", 0)
- ROM_LOAD( "gnw_dm53.svg", 0, 195362, BAD_DUMP CRC(3aa1cdfa) SHA1(cc938d05160fdefb9f030e9d9caeaf6ff472ffe3) ) // by OG/hap, ver. 17 may 2017
+ ROM_REGION( 124249, "svg_top", 0)
+ ROM_LOAD( "gnw_dm53_top.svg", 0, 124249, CRC(d85ec1cc) SHA1(19828945c09defa3efc47eea8fa6128a0e5e9a2a) ) // by Sean/RColtrane/hap, ver. 6 jun 2017
+
+ ROM_REGION( 108485, "svg_bottom", 0)
+ ROM_LOAD( "gnw_dm53_bottom.svg", 0, 108485, CRC(c5649701) SHA1(b5bd436015927503a8e647a5d02bd9c87acd1e55) ) // "
ROM_END
@@ -863,8 +956,20 @@ ROM_START( gnw_jr55 )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "jr55_cms54c_kms560", 0x0000, 0x1000, CRC(46aed0ae) SHA1(72f75ccbd84aea094148c872fc7cc1683619a18a) )
- ROM_REGION( 405524, "svg", 0)
- ROM_LOAD( "gnw_jr55.svg", 0, 405524, BAD_DUMP CRC(5124fd7a) SHA1(5043fcb27975d79a358451824d5b341bd4f7193a) ) // by Reinier/hap, ver. 7 may 2017
+ ROM_REGION( 207510, "svg_top", 0)
+ ROM_LOAD( "gnw_jr55_top.svg", 0, 207510, CRC(598cc4b1) SHA1(ec485b73b8dcd521c236803d50c80203e0f29330) ) // by Reinier/hap, ver. 6 jun 2017
+
+ ROM_REGION( 200145, "svg_bottom", 0)
+ ROM_LOAD( "gnw_jr55_bottom.svg", 0, 200145, CRC(07285db4) SHA1(49e1fc394750457cab0fb3297b12957af685ac2d) ) // "
+ROM_END
+
+
+ROM_START( gnw_dj101 )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "dj101", 0x0000, 0x1000, CRC(8dcfb5d1) SHA1(e0ef578e9362eb9a3cab631376df3cf55978f2de) )
+
+ ROM_REGION( 277252, "svg", 0)
+ ROM_LOAD( "gnw_dj101.svg", 0, 277252, CRC(d7a3832d) SHA1(59e603d9a3ba503ebbf94574d6544cb5095a0df4) ) // by Sean/RColtrane, ver. 6 jun 2017
ROM_END
@@ -873,7 +978,7 @@ ROM_START( gnw_ml102 )
ROM_LOAD( "ml102_cms54c_kms577", 0x0000, 0x1000, CRC(c1128dea) SHA1(8647e36f43a0e37756a3c7b6a3f08d4c8243f1cc) )
ROM_REGION( 300571, "svg", 0)
- ROM_LOAD( "gnw_ml102.svg", 0, 300571, BAD_DUMP CRC(8d8be5a9) SHA1(ee3a761ee956b86c064c83a15e4b833f83c23520) ) // by Sean/hap/JonasP, ver. 17 may 2017
+ ROM_LOAD( "gnw_ml102.svg", 0, 300571, CRC(8d8be5a9) SHA1(ee3a761ee956b86c064c83a15e4b833f83c23520) ) // by Sean/hap/JonasP, ver. 17 may 2017
ROM_END
@@ -885,7 +990,7 @@ ROM_START( gnw_bx301 )
ROM_LOAD( "bx301_kms73b_kms744.melody", 0x000, 0x100, CRC(439d943d) SHA1(52880df15ec7513f96482f455ef3d9778aa24750) )
ROM_REGION( 258514, "svg", 0)
- ROM_LOAD( "gnw_bx301.svg", 0, 258514, BAD_DUMP CRC(7b251101) SHA1(002e41374517f1fd8cecd66a2b2338aac736f319) ) // by Sean, ver. 11 apr 2017
+ ROM_LOAD( "gnw_bx301.svg", 0, 258514, CRC(7b251101) SHA1(002e41374517f1fd8cecd66a2b2338aac736f319) ) // by Sean, ver. 11 apr 2017
ROM_END
@@ -899,5 +1004,6 @@ CONS( 1989, kloneran, 0, 0, kloneran, kloneran, kloneran_state, 0, "Kona
CONS( 1982, gnw_dm53, 0, 0, dm53, dm53, dm53_state, 0, "Nintendo", "Game & Watch: Mickey & Donald", MACHINE_SUPPORTS_SAVE )
CONS( 1983, gnw_jr55, 0, 0, jr55, jr55, jr55_state, 0, "Nintendo", "Game & Watch: Donkey Kong II", MACHINE_SUPPORTS_SAVE )
-CONS( 1983, gnw_ml102, 0, 0, ml102, ml102, ml102_state, 0, "Nintendo", "Game & Watch: Mario's Cement Factory", MACHINE_SUPPORTS_SAVE )
+CONS( 1982, gnw_dj101, 0, 0, dj101, dj101, dj101_state, 0, "Nintendo", "Game & Watch: Donkey Kong Jr. (new wide screen)", MACHINE_SUPPORTS_SAVE )
+CONS( 1983, gnw_ml102, 0, 0, ml102, ml102, ml102_state, 0, "Nintendo", "Game & Watch: Mario's Cement Factory (new wide screen)", MACHINE_SUPPORTS_SAVE )
CONS( 1984, gnw_bx301, 0, 0, bx301, bx301, bx301_state, 0, "Nintendo", "Game & Watch: Boxing", MACHINE_SUPPORTS_SAVE )