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") @@ -622,11 +635,86 @@ static MACHINE_CONFIG_START( jr55 ) 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("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 ) diff --git a/src/mame/layout/gnw_dualv.lay b/src/mame/layout/gnw_dualv.lay new file mode 100644 index 00000000000..0d35b3c09c4 --- /dev/null +++ b/src/mame/layout/gnw_dualv.lay @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 0c54b5d2992..5cefa6f1481 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -14504,6 +14504,7 @@ nupogodi // @source:hh_sm510.cpp gnw_bx301 // Nintendo +gnw_dj101 // Nintendo gnw_dm53 // Nintendo gnw_jr55 // Nintendo gnw_ml102 // Nintendo