diff --git a/src/mame/drivers/hh_sm510.cpp b/src/mame/drivers/hh_sm510.cpp index b61de6e5090..0315ffd257e 100644 --- a/src/mame/drivers/hh_sm510.cpp +++ b/src/mame/drivers/hh_sm510.cpp @@ -45,7 +45,7 @@ Game list (* denotes not emulated yet) Serial Series MCU Title --------------------------------------------- AC-01 s SM5A Ball (aka Toss-Up) -FL-02 s SM5A Flagman +FL-02 s SM5A Flagman (aka Flag Man) MT-03 s SM5A Vermin (aka The Exterminator) RC-04 s SM5A Fire (aka Fireman Fireman) IP-05* s SM5A? Judge @@ -238,8 +238,9 @@ WRITE16_MEMBER(hh_sm510_state::sm510_lcd_segment_w) m_display_state[offset] = data; } -WRITE8_MEMBER(hh_sm510_state::sm500_lcd_segment_w) +WRITE16_MEMBER(hh_sm510_state::sm500_lcd_segment_w) { + m_display_wait = 32; set_display_size(4, 4, 1); m_display_state[offset] = data; } @@ -247,6 +248,9 @@ WRITE8_MEMBER(hh_sm510_state::sm500_lcd_segment_w) // generic input handlers - usually S output is input mux, and K input for buttons +#define PORT_CHANGED_CB(x) \ + PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, x, 0) + u8 hh_sm510_state::read_inputs(int columns, int fixed) { u8 ret = 0; @@ -339,882 +343,6 @@ WRITE8_MEMBER(hh_sm510_state::piezo2bit_input_w) namespace { -#define PORT_CHANGED_CB(x) \ - PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, x, 0) - -/*************************************************************************** - - Konami Double Dribble - * Sharp SM510 under epoxy (die label CMS54C, KMS584) - * lcd screen with custom segments, 1-bit sound - - BTANB: At the basket, the ball goes missing sometimes for 1 frame, or - may show 2 balls at the same time. It's the same on the real handheld. - Another BTANB? If a period is over at the same time a defender on the - 2nd column grabs the ball, his arm won't be erased until it's redrawn. - -***************************************************************************/ - -class kdribble_state : public hh_sm510_state -{ -public: - kdribble_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_sm510_state(mconfig, type, tag) - { } - - void kdribble(machine_config &config); -}; - -// config - -static INPUT_PORTS_START( kdribble ) - PORT_START("IN.0") // S1 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) - - PORT_START("IN.1") // S2 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Level Select") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) - - PORT_START("IN.2") // S3 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") - PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) - - PORT_START("ACL") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") -INPUT_PORTS_END - -void kdribble_state::kdribble(machine_config &config) -{ - /* basic machine hardware */ - SM510(config, m_maincpu); - m_maincpu->set_r_mask_option(2); // confirmed - m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); - m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); - m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); - m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); - screen.set_refresh_hz(60); - screen.set_size(1524, 1080); - screen.set_visarea_full(); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25); -} - -// roms - -ROM_START( kdribble ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "584", 0x0000, 0x1000, CRC(1d9022c8) SHA1(64567f9f161e830a0634d5c89917ab866c26c0f8) ) - - ROM_REGION( 450339, "screen", 0) - ROM_LOAD( "kdribble.svg", 0, 450339, CRC(86c3ecc4) SHA1(8dfaeb0f3b35d4b680daaa9f478a6f3decf6ea0a) ) -ROM_END - - - - - -/*************************************************************************** - - Konami Top Gun - * PCB label BH003 - * Sharp SM510 under epoxy (die label CMS54C, KMS598) - * lcd screen with custom segments, 1-bit sound - -***************************************************************************/ - -class ktopgun_state : public hh_sm510_state -{ -public: - ktopgun_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_sm510_state(mconfig, type, tag) - { } - - void ktopgun(machine_config &config); -}; - -// config - -static INPUT_PORTS_START( ktopgun ) - PORT_START("IN.0") // S1 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) - - PORT_START("IN.1") // S2 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) - - PORT_START("IN.2") // S3 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") - PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) - - PORT_START("ACL") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") -INPUT_PORTS_END - -void ktopgun_state::ktopgun(machine_config &config) -{ - /* basic machine hardware */ - SM510(config, m_maincpu); - m_maincpu->set_r_mask_option(2); // confirmed - m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); - m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); - m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); - m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); - screen.set_refresh_hz(60); - screen.set_size(1515, 1080); - screen.set_visarea_full(); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - SPEAKER_SOUND(config, m_speaker); - m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); -} - -// roms - -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( "598", 0x0000, 0x1000, CRC(50870b35) SHA1(cda1260c2e1c180995eced04b7d7ff51616dcef5) ) - - ROM_REGION( 425832, "screen", 0) - ROM_LOAD( "ktopgun.svg", 0, 425832, CRC(dc488ac0) SHA1(5a47e5639cb1e61dad3f2169efb99efe3d75896f) ) -ROM_END - - - - - -/*************************************************************************** - - Konami Contra - * PCB label BH002 - * Sharp SM511 under epoxy (die label KMS73B, KMS773) - * lcd screen with custom segments, 1-bit sound - - Contra handheld is titled simply "C" in the USA. - -***************************************************************************/ - -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) - { } - - void kcontra(machine_config &config); -}; - -// config - -static INPUT_PORTS_START( kcontra ) - PORT_START("IN.0") // S1 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) - - PORT_START("IN.1") // S2 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) - - PORT_START("IN.2") // S3 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") - PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) - - PORT_START("ACL") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") -INPUT_PORTS_END - -void kcontra_state::kcontra(machine_config &config) -{ - /* basic machine hardware */ - SM511(config, m_maincpu); - m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); - m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); - m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); - m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); - screen.set_refresh_hz(60); - screen.set_size(1505, 1080); - screen.set_visarea_full(); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - SPEAKER_SOUND(config, m_speaker); - m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); -} - -// roms - -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( "773.program", 0x0000, 0x1000, CRC(bf834877) SHA1(055dd56ec16d63afba61ab866481fd9c029fb54d) ) - - ROM_REGION( 0x100, "maincpu:melody", 0 ) - ROM_LOAD( "773.melody", 0x000, 0x100, CRC(23d02b99) SHA1(703938e496db0eeacd14fe7605d4b5c39e0a5bc8) ) - - ROM_REGION( 721005, "screen", 0) - ROM_LOAD( "kcontra.svg", 0, 721005, CRC(b5370d0f) SHA1(2f401222d24fa32a4659ef2b64ddac8ac3973c69) ) -ROM_END - - - - - -/*************************************************************************** - - Konami Teenage Mutant Ninja Turtles - * PCB label BH005 - * Sharp SM511 under epoxy (die label KMS73B, KMS774) - * lcd screen with custom segments, 1-bit sound - -***************************************************************************/ - -class ktmnt_state : public hh_sm510_state -{ -public: - ktmnt_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_sm510_state(mconfig, type, tag) - { } - - void ktmnt(machine_config &config); -}; - -// config - -static INPUT_PORTS_START( ktmnt ) - PORT_START("IN.0") // S1 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) - - PORT_START("IN.1") // S2 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") - - PORT_START("IN.2") // S3 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_CHANGED_CB(input_changed) - - PORT_START("ACL") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") -INPUT_PORTS_END - -void ktmnt_state::ktmnt(machine_config &config) -{ - /* basic machine hardware */ - SM511(config, m_maincpu); - m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); - m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); - m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); - m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); - screen.set_refresh_hz(60); - screen.set_size(1505, 1080); - screen.set_visarea_full(); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - SPEAKER_SOUND(config, m_speaker); - m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); -} - -// roms - -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( "774.program", 0x0000, 0x1000, CRC(a1064f87) SHA1(92156c35fbbb414007ee6804fe635128a741d5f1) ) - - ROM_REGION( 0x100, "maincpu:melody", 0 ) - ROM_LOAD( "774.melody", 0x000, 0x100, CRC(8270d626) SHA1(bd91ca1d5cd7e2a62eef05c0033b19dcdbe441ca) ) - - ROM_REGION( 610270, "screen", 0) - ROM_LOAD( "ktmnt.svg", 0, 610270, CRC(ad9412ed) SHA1(154ee44efcd340dafa1cb84c37a9c3cd42cb42ab) ) -ROM_END - - - - - -/*************************************************************************** - - Konami Gradius - * PCB label BH004 - * Sharp SM511 under epoxy (die label KMS73B, KMS774) - * lcd screen with custom segments, 1-bit sound - - Known in Japan as Nemesis. - -***************************************************************************/ - -class kgradius_state : public hh_sm510_state -{ -public: - kgradius_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_sm510_state(mconfig, type, tag) - { } - - void kgradius(machine_config &config); -}; - -// config - -static INPUT_PORTS_START( kgradius ) - PORT_START("IN.0") // S1 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") - - PORT_START("IN.1") // S2 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) - - PORT_START("ACL") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") -INPUT_PORTS_END - -void kgradius_state::kgradius(machine_config &config) -{ - /* basic machine hardware */ - SM511(config, m_maincpu); - m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); - m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); - m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); - m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); - screen.set_refresh_hz(60); - screen.set_size(1420, 1080); - screen.set_visarea_full(); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - SPEAKER_SOUND(config, m_speaker); - m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); -} - -// roms - -ROM_START( kgradius ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "771.program", 0x0000, 0x1000, CRC(830c2afc) SHA1(bb9ebd4e52831cc02cd92dd4b37675f34cf37b8c) ) - - ROM_REGION( 0x100, "maincpu:melody", 0 ) - ROM_LOAD( "771.melody", 0x000, 0x100, CRC(4c586b73) SHA1(14c5ab2898013a577f678970a648c374749cc66d) ) - - ROM_REGION( 638097, "screen", 0) - ROM_LOAD( "kgradius.svg", 0, 638097, CRC(3adbc0f1) SHA1(fe426bf2335ce30395ea14ecab6399a93c67816a) ) -ROM_END - - - - - -/*************************************************************************** - - Konami Lone Ranger - * PCB label BH009 - * Sharp SM511 under epoxy (die label KMS73B, KMS781) - * lcd screen with custom segments, 1-bit sound - -***************************************************************************/ - -class kloneran_state : public hh_sm510_state -{ -public: - kloneran_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_sm510_state(mconfig, type, tag) - { } - - void kloneran(machine_config &config); -}; - -// config - -static INPUT_PORTS_START( kloneran ) - PORT_START("IN.0") // S1 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) - - PORT_START("IN.1") // S2 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Pause") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") - - PORT_START("ACL") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") -INPUT_PORTS_END - -void kloneran_state::kloneran(machine_config &config) -{ - /* basic machine hardware */ - SM511(config, m_maincpu); - m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); - m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); - m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); - m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); - screen.set_refresh_hz(60); - screen.set_size(1497, 1080); - screen.set_visarea_full(); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - SPEAKER_SOUND(config, m_speaker); - m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); -} - -// roms - -ROM_START( kloneran ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "781.program", 0x0000, 0x1000, CRC(52b9735f) SHA1(06c5ef6e7e781b1176d4c1f2445f765ccf18b3f7) ) - - ROM_REGION( 0x100, "maincpu:melody", 0 ) - ROM_LOAD( "781.melody", 0x000, 0x100, CRC(a393de36) SHA1(55089f04833ccb318524ab2b584c4817505f4019) ) - - ROM_REGION( 633120, "screen", 0) - ROM_LOAD( "kloneran.svg", 0, 633120, CRC(f55e5292) SHA1(d0a91b5cd8a1894e7abc9c505fff4a8e1d3bec7a) ) -ROM_END - - - - - -/*************************************************************************** - - Konami Blades of Steel - * PCB label BH011 - * Sharp SM511 under epoxy (die label KMS73B, KMS782) - * lcd screen with custom segments, 1-bit sound - -***************************************************************************/ - -class kblades_state : public hh_sm510_state -{ -public: - kblades_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_sm510_state(mconfig, type, tag) - { } - - void kblades(machine_config &config); -}; - -// config - -static INPUT_PORTS_START( kblades ) - PORT_START("IN.0") // S1 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) - - PORT_START("IN.1") // S2 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Pause") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") - - PORT_START("IN.2") // S3 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) - - PORT_START("ACL") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") -INPUT_PORTS_END - -void kblades_state::kblades(machine_config &config) -{ - /* basic machine hardware */ - SM511(config, m_maincpu); - m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); - m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); - m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); - m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); - screen.set_refresh_hz(60); - screen.set_size(1516, 1080); - screen.set_visarea_full(); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - SPEAKER_SOUND(config, m_speaker); - m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); -} - -// roms - -ROM_START( kblades ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "782.program", 0x0000, 0x1000, CRC(3351a35d) SHA1(84c64b65d3cabfa20c18f4649c9ede2578b82523) ) - - ROM_REGION( 0x100, "maincpu:melody", 0 ) - ROM_LOAD( "782.melody", 0x000, 0x100, CRC(e8bf48ba) SHA1(3852c014dc9136566322b4f9e2aab0e3ec3a7387) ) - - ROM_REGION( 455113, "screen", 0) - ROM_LOAD( "kblades.svg", 0, 455113, CRC(e22f44c8) SHA1(ac95a837e20f87f3afc6c234f7407cbfcc438011) ) -ROM_END - - - - - -/*************************************************************************** - - Konami NFL Football - * Sharp SM511 under epoxy (die label KMS73B, KMS786) - * lcd screen with custom segments, 1-bit sound - - This is the 1989 version. It was rereleased in 1992, assumed to be the same - game underneath. - -***************************************************************************/ - -class knfl_state : public hh_sm510_state -{ -public: - knfl_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_sm510_state(mconfig, type, tag) - { } - - void knfl(machine_config &config); -}; - -// config - -static INPUT_PORTS_START( knfl ) - PORT_START("IN.0") // S1 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) - - PORT_START("IN.1") // S2 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Pause") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") - - PORT_START("IN.2") // S3 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) - - PORT_START("ACL") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") -INPUT_PORTS_END - -void knfl_state::knfl(machine_config &config) -{ - /* basic machine hardware */ - SM511(config, m_maincpu); - m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); - m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); - m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); - m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); - screen.set_refresh_hz(60); - screen.set_size(1449, 1080); - screen.set_visarea_full(); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - SPEAKER_SOUND(config, m_speaker); - m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); -} - -// roms - -ROM_START( knfl ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "786.program", 0x0000, 0x1000, CRC(0535c565) SHA1(44cdcd284713ff0b194b24beff9f1b94c8bc63b2) ) - - ROM_REGION( 0x100, "maincpu:melody", 0 ) - ROM_LOAD( "786.melody", 0x000, 0x100, CRC(6c80263b) SHA1(d3c21e2f8491fef101907b8e0871b1e1c1ed58f5) ) - - ROM_REGION( 571134, "screen", 0) - ROM_LOAD( "knfl.svg", 0, 571134, CRC(f2c63235) SHA1(70b9232700f5498d3c63c63dd5904c0e19482cc2) ) -ROM_END - - - - - -/*************************************************************************** - - Konami The Adventures of Bayou Billy - * Sharp SM511 under epoxy (die label KMS73B, KMS788) - * lcd screen with custom segments, 1-bit sound - -***************************************************************************/ - -class kbilly_state : public hh_sm510_state -{ -public: - kbilly_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_sm510_state(mconfig, type, tag) - { } - - void kbilly(machine_config &config); -}; - -// config - -static INPUT_PORTS_START( kbilly ) - PORT_START("IN.0") // S1 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) - - PORT_START("IN.1") // S2 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Pause") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") - - PORT_START("IN.2") // S3 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) - - PORT_START("ACL") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") -INPUT_PORTS_END - -void kbilly_state::kbilly(machine_config &config) -{ - /* basic machine hardware */ - SM511(config, m_maincpu); - m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); - m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); - m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); - m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); - screen.set_refresh_hz(60); - screen.set_size(1490, 1080); - screen.set_visarea_full(); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - SPEAKER_SOUND(config, m_speaker); - m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); -} - -// roms - -ROM_START( kbilly ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "788.program", 0x0000, 0x1000, CRC(b8b1f734) SHA1(619dd527187b43276d081cdb1b13e0a9a81f2c6a) ) - - ROM_REGION( 0x100, "maincpu:melody", 0 ) - ROM_LOAD( "788.melody", 0x000, 0x100, CRC(cd488bea) SHA1(8fc60081f46e392978d6950c74711fb7ebd154de) ) - - ROM_REGION( 598276, "screen", 0) - ROM_LOAD( "kbilly.svg", 0, 598276, CRC(2969319e) SHA1(5cd1b0a6eee3168142c1d24f167b9ef38ad88402) ) -ROM_END - - - - - -/*************************************************************************** - - Konami Bucky O'Hare - * Sharp SM511 under epoxy (die label KMS73B, N58) - * lcd screen with custom segments, 1-bit sound - -***************************************************************************/ - -class kbucky_state : public hh_sm510_state -{ -public: - kbucky_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_sm510_state(mconfig, type, tag) - { } - - void kbucky(machine_config &config); -}; - -// config - -static INPUT_PORTS_START( kbucky ) - PORT_START("IN.0") // S1 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Pause") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") - - PORT_START("IN.1") // S2 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") - - PORT_START("ACL") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") -INPUT_PORTS_END - -void kbucky_state::kbucky(machine_config &config) -{ - /* basic machine hardware */ - SM511(config, m_maincpu); - m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); - m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); - m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); - m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); - screen.set_refresh_hz(60); - screen.set_size(1490, 1080); - screen.set_visarea_full(); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - SPEAKER_SOUND(config, m_speaker); - m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); -} - -// roms - -ROM_START( kbucky ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "n58.program", 0x0000, 0x1000, CRC(7c36a0c4) SHA1(1b55ac64a71af746fd0a0f44266fcc92cca77482) ) - - ROM_REGION( 0x100, "maincpu:melody", 0 ) - ROM_LOAD( "n58.melody", 0x000, 0x100, CRC(7e99e469) SHA1(3e9a3843c6ab392f5989f3366df87a2d26cb8620) ) - - ROM_REGION( 727841, "screen", 0) - ROM_LOAD( "kbucky.svg", 0, 727841, CRC(c1d78488) SHA1(9ba4fdbce977455b8f1ad4bd2b01faa44bd05bc7) ) -ROM_END - - - - - -/*************************************************************************** - - Konami Garfield - * Sharp SM511 under epoxy (die label KMS73B, N62) - * lcd screen with custom segments, 1-bit sound - -***************************************************************************/ - -class kgarfld_state : public hh_sm510_state -{ -public: - kgarfld_state(const machine_config &mconfig, device_type type, const char *tag) : - hh_sm510_state(mconfig, type, tag) - { } - - void kgarfld(machine_config &config); -}; - -// config - -static INPUT_PORTS_START( kgarfld ) - PORT_START("IN.0") // S1 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") - - PORT_START("IN.1") // S2 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Pause") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") - - PORT_START("IN.2") // S3 - PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) - - PORT_START("ACL") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") -INPUT_PORTS_END - -void kgarfld_state::kgarfld(machine_config &config) -{ - /* basic machine hardware */ - SM511(config, m_maincpu); - m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); - m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); - m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); - m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); - screen.set_refresh_hz(60); - screen.set_size(1500, 1080); - screen.set_visarea_full(); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - SPEAKER_SOUND(config, m_speaker); - m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); -} - -// roms - -ROM_START( kgarfld ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "n62.program", 0x0000, 0x1000, CRC(5a762049) SHA1(26d4d891160d254dfd752734e1047126243f88dd) ) - - ROM_REGION( 0x100, "maincpu:melody", 0 ) - ROM_LOAD( "n62.melody", 0x000, 0x100, CRC(232b7d55) SHA1(76f6a19e8182ee3f00c9f4ef007b5dde75a9c00d) ) - - ROM_REGION( 581107, "screen", 0) - ROM_LOAD( "kgarfld.svg", 0, 581107, CRC(bf09a170) SHA1(075cb95535873018409eb15675183490c61b29b9) ) -ROM_END - - - - - /*************************************************************************** Nintendo Game & Watch: Ball (model AC-01) @@ -1725,8 +853,9 @@ ROM_END * Sharp SM5A label OC-22 204A (no decap) * lcd screen with custom segments, 1-bit sound - Also cloned in 1989 by Elektronika(USSR) as Тайны океана (Tayny okeana), - it is close to identical, graphics as well. + Also cloned in 1989 by Elektronika(USSR) as Тайны океана (Tayny okeana, export + version: Mysteries of the Ocean), ROM is identical, graphics as well except + for the AM/PM/GAME segments. ***************************************************************************/ @@ -2178,7 +1307,8 @@ ROM_END * Sharp SM5A label FR-27 523B (no decap) * lcd screen with custom segments, 1-bit sound - This is the wide screen version, there's also a silver version. + This is the wide screen version, there's also a silver version. Doing a + hex-compare between the two, this one seems to be a complete rewrite. In 1989 Elektronika(USSR) released a clone: Космический мост (Kosmicheskiy most, export version: Space Bridge). This game shares the same ROM, though the @@ -4842,6 +3972,879 @@ ROM_END +/*************************************************************************** + + Konami Double Dribble + * Sharp SM510 under epoxy (die label CMS54C, KMS584) + * lcd screen with custom segments, 1-bit sound + + BTANB: At the basket, the ball goes missing sometimes for 1 frame, or + may show 2 balls at the same time. It's the same on the real handheld. + Another BTANB? If a period is over at the same time a defender on the + 2nd column grabs the ball, his arm won't be erased until it's redrawn. + +***************************************************************************/ + +class kdribble_state : public hh_sm510_state +{ +public: + kdribble_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_sm510_state(mconfig, type, tag) + { } + + void kdribble(machine_config &config); +}; + +// config + +static INPUT_PORTS_START( kdribble ) + PORT_START("IN.0") // S1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) + + PORT_START("IN.1") // S2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Level Select") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) + + PORT_START("IN.2") // S3 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") + PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") +INPUT_PORTS_END + +void kdribble_state::kdribble(machine_config &config) +{ + /* basic machine hardware */ + SM510(config, m_maincpu); + m_maincpu->set_r_mask_option(2); // confirmed + m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); + m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); + m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); + m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); + + /* video hardware */ + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); + screen.set_refresh_hz(60); + screen.set_size(1524, 1080); + screen.set_visarea_full(); + + /* sound hardware */ + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( kdribble ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "584", 0x0000, 0x1000, CRC(1d9022c8) SHA1(64567f9f161e830a0634d5c89917ab866c26c0f8) ) + + ROM_REGION( 450339, "screen", 0) + ROM_LOAD( "kdribble.svg", 0, 450339, CRC(86c3ecc4) SHA1(8dfaeb0f3b35d4b680daaa9f478a6f3decf6ea0a) ) +ROM_END + + + + + +/*************************************************************************** + + Konami Top Gun + * PCB label BH003 + * Sharp SM510 under epoxy (die label CMS54C, KMS598) + * lcd screen with custom segments, 1-bit sound + +***************************************************************************/ + +class ktopgun_state : public hh_sm510_state +{ +public: + ktopgun_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_sm510_state(mconfig, type, tag) + { } + + void ktopgun(machine_config &config); +}; + +// config + +static INPUT_PORTS_START( ktopgun ) + PORT_START("IN.0") // S1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) + + PORT_START("IN.1") // S2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) + + PORT_START("IN.2") // S3 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") + PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") +INPUT_PORTS_END + +void ktopgun_state::ktopgun(machine_config &config) +{ + /* basic machine hardware */ + SM510(config, m_maincpu); + m_maincpu->set_r_mask_option(2); // confirmed + m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); + m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); + m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); + m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); + + /* video hardware */ + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); + screen.set_refresh_hz(60); + screen.set_size(1515, 1080); + screen.set_visarea_full(); + + /* sound hardware */ + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +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( "598", 0x0000, 0x1000, CRC(50870b35) SHA1(cda1260c2e1c180995eced04b7d7ff51616dcef5) ) + + ROM_REGION( 425832, "screen", 0) + ROM_LOAD( "ktopgun.svg", 0, 425832, CRC(dc488ac0) SHA1(5a47e5639cb1e61dad3f2169efb99efe3d75896f) ) +ROM_END + + + + + +/*************************************************************************** + + Konami Contra + * PCB label BH002 + * Sharp SM511 under epoxy (die label KMS73B, KMS773) + * lcd screen with custom segments, 1-bit sound + + Contra handheld is titled simply "C" in the USA. + +***************************************************************************/ + +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) + { } + + void kcontra(machine_config &config); +}; + +// config + +static INPUT_PORTS_START( kcontra ) + PORT_START("IN.0") // S1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) + + PORT_START("IN.1") // S2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) + + PORT_START("IN.2") // S3 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") + PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") +INPUT_PORTS_END + +void kcontra_state::kcontra(machine_config &config) +{ + /* basic machine hardware */ + SM511(config, m_maincpu); + m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); + m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); + m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); + m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); + + /* video hardware */ + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); + screen.set_refresh_hz(60); + screen.set_size(1505, 1080); + screen.set_visarea_full(); + + /* sound hardware */ + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +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( "773.program", 0x0000, 0x1000, CRC(bf834877) SHA1(055dd56ec16d63afba61ab866481fd9c029fb54d) ) + + ROM_REGION( 0x100, "maincpu:melody", 0 ) + ROM_LOAD( "773.melody", 0x000, 0x100, CRC(23d02b99) SHA1(703938e496db0eeacd14fe7605d4b5c39e0a5bc8) ) + + ROM_REGION( 721005, "screen", 0) + ROM_LOAD( "kcontra.svg", 0, 721005, CRC(b5370d0f) SHA1(2f401222d24fa32a4659ef2b64ddac8ac3973c69) ) +ROM_END + + + + + +/*************************************************************************** + + Konami Teenage Mutant Ninja Turtles + * PCB label BH005 + * Sharp SM511 under epoxy (die label KMS73B, KMS774) + * lcd screen with custom segments, 1-bit sound + +***************************************************************************/ + +class ktmnt_state : public hh_sm510_state +{ +public: + ktmnt_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_sm510_state(mconfig, type, tag) + { } + + void ktmnt(machine_config &config); +}; + +// config + +static INPUT_PORTS_START( ktmnt ) + PORT_START("IN.0") // S1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) + + PORT_START("IN.1") // S2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") + + PORT_START("IN.2") // S3 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_CHANGED_CB(input_changed) + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") +INPUT_PORTS_END + +void ktmnt_state::ktmnt(machine_config &config) +{ + /* basic machine hardware */ + SM511(config, m_maincpu); + m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); + m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); + m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); + m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); + + /* video hardware */ + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); + screen.set_refresh_hz(60); + screen.set_size(1505, 1080); + screen.set_visarea_full(); + + /* sound hardware */ + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +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( "774.program", 0x0000, 0x1000, CRC(a1064f87) SHA1(92156c35fbbb414007ee6804fe635128a741d5f1) ) + + ROM_REGION( 0x100, "maincpu:melody", 0 ) + ROM_LOAD( "774.melody", 0x000, 0x100, CRC(8270d626) SHA1(bd91ca1d5cd7e2a62eef05c0033b19dcdbe441ca) ) + + ROM_REGION( 610270, "screen", 0) + ROM_LOAD( "ktmnt.svg", 0, 610270, CRC(ad9412ed) SHA1(154ee44efcd340dafa1cb84c37a9c3cd42cb42ab) ) +ROM_END + + + + + +/*************************************************************************** + + Konami Gradius + * PCB label BH004 + * Sharp SM511 under epoxy (die label KMS73B, KMS774) + * lcd screen with custom segments, 1-bit sound + + Known in Japan as Nemesis. + +***************************************************************************/ + +class kgradius_state : public hh_sm510_state +{ +public: + kgradius_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_sm510_state(mconfig, type, tag) + { } + + void kgradius(machine_config &config); +}; + +// config + +static INPUT_PORTS_START( kgradius ) + PORT_START("IN.0") // S1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") + + PORT_START("IN.1") // S2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") +INPUT_PORTS_END + +void kgradius_state::kgradius(machine_config &config) +{ + /* basic machine hardware */ + SM511(config, m_maincpu); + m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); + m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); + m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); + m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); + + /* video hardware */ + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); + screen.set_refresh_hz(60); + screen.set_size(1420, 1080); + screen.set_visarea_full(); + + /* sound hardware */ + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( kgradius ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "771.program", 0x0000, 0x1000, CRC(830c2afc) SHA1(bb9ebd4e52831cc02cd92dd4b37675f34cf37b8c) ) + + ROM_REGION( 0x100, "maincpu:melody", 0 ) + ROM_LOAD( "771.melody", 0x000, 0x100, CRC(4c586b73) SHA1(14c5ab2898013a577f678970a648c374749cc66d) ) + + ROM_REGION( 638097, "screen", 0) + ROM_LOAD( "kgradius.svg", 0, 638097, CRC(3adbc0f1) SHA1(fe426bf2335ce30395ea14ecab6399a93c67816a) ) +ROM_END + + + + + +/*************************************************************************** + + Konami Lone Ranger + * PCB label BH009 + * Sharp SM511 under epoxy (die label KMS73B, KMS781) + * lcd screen with custom segments, 1-bit sound + +***************************************************************************/ + +class kloneran_state : public hh_sm510_state +{ +public: + kloneran_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_sm510_state(mconfig, type, tag) + { } + + void kloneran(machine_config &config); +}; + +// config + +static INPUT_PORTS_START( kloneran ) + PORT_START("IN.0") // S1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) + + PORT_START("IN.1") // S2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Pause") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") +INPUT_PORTS_END + +void kloneran_state::kloneran(machine_config &config) +{ + /* basic machine hardware */ + SM511(config, m_maincpu); + m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); + m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); + m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); + m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); + + /* video hardware */ + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); + screen.set_refresh_hz(60); + screen.set_size(1497, 1080); + screen.set_visarea_full(); + + /* sound hardware */ + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( kloneran ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "781.program", 0x0000, 0x1000, CRC(52b9735f) SHA1(06c5ef6e7e781b1176d4c1f2445f765ccf18b3f7) ) + + ROM_REGION( 0x100, "maincpu:melody", 0 ) + ROM_LOAD( "781.melody", 0x000, 0x100, CRC(a393de36) SHA1(55089f04833ccb318524ab2b584c4817505f4019) ) + + ROM_REGION( 633120, "screen", 0) + ROM_LOAD( "kloneran.svg", 0, 633120, CRC(f55e5292) SHA1(d0a91b5cd8a1894e7abc9c505fff4a8e1d3bec7a) ) +ROM_END + + + + + +/*************************************************************************** + + Konami Blades of Steel + * PCB label BH011 + * Sharp SM511 under epoxy (die label KMS73B, KMS782) + * lcd screen with custom segments, 1-bit sound + +***************************************************************************/ + +class kblades_state : public hh_sm510_state +{ +public: + kblades_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_sm510_state(mconfig, type, tag) + { } + + void kblades(machine_config &config); +}; + +// config + +static INPUT_PORTS_START( kblades ) + PORT_START("IN.0") // S1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) + + PORT_START("IN.1") // S2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Pause") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") + + PORT_START("IN.2") // S3 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") +INPUT_PORTS_END + +void kblades_state::kblades(machine_config &config) +{ + /* basic machine hardware */ + SM511(config, m_maincpu); + m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); + m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); + m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); + m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); + + /* video hardware */ + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); + screen.set_refresh_hz(60); + screen.set_size(1516, 1080); + screen.set_visarea_full(); + + /* sound hardware */ + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( kblades ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "782.program", 0x0000, 0x1000, CRC(3351a35d) SHA1(84c64b65d3cabfa20c18f4649c9ede2578b82523) ) + + ROM_REGION( 0x100, "maincpu:melody", 0 ) + ROM_LOAD( "782.melody", 0x000, 0x100, CRC(e8bf48ba) SHA1(3852c014dc9136566322b4f9e2aab0e3ec3a7387) ) + + ROM_REGION( 455113, "screen", 0) + ROM_LOAD( "kblades.svg", 0, 455113, CRC(e22f44c8) SHA1(ac95a837e20f87f3afc6c234f7407cbfcc438011) ) +ROM_END + + + + + +/*************************************************************************** + + Konami NFL Football + * Sharp SM511 under epoxy (die label KMS73B, KMS786) + * lcd screen with custom segments, 1-bit sound + + This is the 1989 version. It was rereleased in 1992, assumed to be the same + game underneath. + +***************************************************************************/ + +class knfl_state : public hh_sm510_state +{ +public: + knfl_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_sm510_state(mconfig, type, tag) + { } + + void knfl(machine_config &config); +}; + +// config + +static INPUT_PORTS_START( knfl ) + PORT_START("IN.0") // S1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) + + PORT_START("IN.1") // S2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Pause") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") + + PORT_START("IN.2") // S3 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") +INPUT_PORTS_END + +void knfl_state::knfl(machine_config &config) +{ + /* basic machine hardware */ + SM511(config, m_maincpu); + m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); + m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); + m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); + m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); + + /* video hardware */ + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); + screen.set_refresh_hz(60); + screen.set_size(1449, 1080); + screen.set_visarea_full(); + + /* sound hardware */ + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( knfl ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "786.program", 0x0000, 0x1000, CRC(0535c565) SHA1(44cdcd284713ff0b194b24beff9f1b94c8bc63b2) ) + + ROM_REGION( 0x100, "maincpu:melody", 0 ) + ROM_LOAD( "786.melody", 0x000, 0x100, CRC(6c80263b) SHA1(d3c21e2f8491fef101907b8e0871b1e1c1ed58f5) ) + + ROM_REGION( 571134, "screen", 0) + ROM_LOAD( "knfl.svg", 0, 571134, CRC(f2c63235) SHA1(70b9232700f5498d3c63c63dd5904c0e19482cc2) ) +ROM_END + + + + + +/*************************************************************************** + + Konami The Adventures of Bayou Billy + * Sharp SM511 under epoxy (die label KMS73B, KMS788) + * lcd screen with custom segments, 1-bit sound + +***************************************************************************/ + +class kbilly_state : public hh_sm510_state +{ +public: + kbilly_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_sm510_state(mconfig, type, tag) + { } + + void kbilly(machine_config &config); +}; + +// config + +static INPUT_PORTS_START( kbilly ) + PORT_START("IN.0") // S1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) + + PORT_START("IN.1") // S2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Pause") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") + + PORT_START("IN.2") // S3 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") +INPUT_PORTS_END + +void kbilly_state::kbilly(machine_config &config) +{ + /* basic machine hardware */ + SM511(config, m_maincpu); + m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); + m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); + m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); + m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); + + /* video hardware */ + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); + screen.set_refresh_hz(60); + screen.set_size(1490, 1080); + screen.set_visarea_full(); + + /* sound hardware */ + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( kbilly ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "788.program", 0x0000, 0x1000, CRC(b8b1f734) SHA1(619dd527187b43276d081cdb1b13e0a9a81f2c6a) ) + + ROM_REGION( 0x100, "maincpu:melody", 0 ) + ROM_LOAD( "788.melody", 0x000, 0x100, CRC(cd488bea) SHA1(8fc60081f46e392978d6950c74711fb7ebd154de) ) + + ROM_REGION( 598276, "screen", 0) + ROM_LOAD( "kbilly.svg", 0, 598276, CRC(2969319e) SHA1(5cd1b0a6eee3168142c1d24f167b9ef38ad88402) ) +ROM_END + + + + + +/*************************************************************************** + + Konami Bucky O'Hare + * Sharp SM511 under epoxy (die label KMS73B, N58) + * lcd screen with custom segments, 1-bit sound + +***************************************************************************/ + +class kbucky_state : public hh_sm510_state +{ +public: + kbucky_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_sm510_state(mconfig, type, tag) + { } + + void kbucky(machine_config &config); +}; + +// config + +static INPUT_PORTS_START( kbucky ) + PORT_START("IN.0") // S1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Pause") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") + + PORT_START("IN.1") // S2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") +INPUT_PORTS_END + +void kbucky_state::kbucky(machine_config &config) +{ + /* basic machine hardware */ + SM511(config, m_maincpu); + m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); + m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); + m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); + m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); + + /* video hardware */ + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); + screen.set_refresh_hz(60); + screen.set_size(1490, 1080); + screen.set_visarea_full(); + + /* sound hardware */ + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( kbucky ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "n58.program", 0x0000, 0x1000, CRC(7c36a0c4) SHA1(1b55ac64a71af746fd0a0f44266fcc92cca77482) ) + + ROM_REGION( 0x100, "maincpu:melody", 0 ) + ROM_LOAD( "n58.melody", 0x000, 0x100, CRC(7e99e469) SHA1(3e9a3843c6ab392f5989f3366df87a2d26cb8620) ) + + ROM_REGION( 727841, "screen", 0) + ROM_LOAD( "kbucky.svg", 0, 727841, CRC(c1d78488) SHA1(9ba4fdbce977455b8f1ad4bd2b01faa44bd05bc7) ) +ROM_END + + + + + +/*************************************************************************** + + Konami Garfield + * Sharp SM511 under epoxy (die label KMS73B, N62) + * lcd screen with custom segments, 1-bit sound + +***************************************************************************/ + +class kgarfld_state : public hh_sm510_state +{ +public: + kgarfld_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_sm510_state(mconfig, type, tag) + { } + + void kgarfld(machine_config &config); +}; + +// config + +static INPUT_PORTS_START( kgarfld ) + PORT_START("IN.0") // S1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POWER_OFF ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(input_changed) PORT_NAME("Sound") + + PORT_START("IN.1") // S2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Pause") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_CB(input_changed) PORT_NAME("Power On/Start") + + PORT_START("IN.2") // S3 + PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) + + PORT_START("ACL") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("All Clear") +INPUT_PORTS_END + +void kgarfld_state::kgarfld(machine_config &config) +{ + /* basic machine hardware */ + SM511(config, m_maincpu); + m_maincpu->write_segs().set(FUNC(hh_sm510_state::sm510_lcd_segment_w)); + m_maincpu->read_k().set(FUNC(hh_sm510_state::input_r)); + m_maincpu->write_s().set(FUNC(hh_sm510_state::input_w)); + m_maincpu->write_r().set(FUNC(hh_sm510_state::piezo_r1_w)); + + /* video hardware */ + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); + screen.set_refresh_hz(60); + screen.set_size(1500, 1080); + screen.set_visarea_full(); + + /* sound hardware */ + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( kgarfld ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "n62.program", 0x0000, 0x1000, CRC(5a762049) SHA1(26d4d891160d254dfd752734e1047126243f88dd) ) + + ROM_REGION( 0x100, "maincpu:melody", 0 ) + ROM_LOAD( "n62.melody", 0x000, 0x100, CRC(232b7d55) SHA1(76f6a19e8182ee3f00c9f4ef007b5dde75a9c00d) ) + + ROM_REGION( 581107, "screen", 0) + ROM_LOAD( "kgarfld.svg", 0, 581107, CRC(bf09a170) SHA1(075cb95535873018409eb15675183490c61b29b9) ) +ROM_END + + + + + /*************************************************************************** Tiger Gauntlet (model 7-778), Robin Hood (model 7-861) @@ -10068,18 +10071,6 @@ ROM_END ***************************************************************************/ // YEAR NAME PARENT COMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS -// Konami -CONS( 1989, kdribble, 0, 0, kdribble, kdribble, kdribble_state, empty_init, "Konami", "Double Dribble (handheld)", MACHINE_SUPPORTS_SAVE ) -CONS( 1989, ktopgun, 0, 0, ktopgun, ktopgun, ktopgun_state, empty_init, "Konami", "Top Gun (handheld)", MACHINE_SUPPORTS_SAVE ) -CONS( 1989, kcontra, 0, 0, kcontra, kcontra, kcontra_state, empty_init, "Konami", "Contra (handheld)", MACHINE_SUPPORTS_SAVE ) -CONS( 1989, ktmnt, 0, 0, ktmnt, ktmnt, ktmnt_state, empty_init, "Konami", "Teenage Mutant Ninja Turtles (handheld)", MACHINE_SUPPORTS_SAVE ) -CONS( 1989, kgradius, 0, 0, kgradius, kgradius, kgradius_state, empty_init, "Konami", "Gradius (handheld)", MACHINE_SUPPORTS_SAVE ) -CONS( 1989, kloneran, 0, 0, kloneran, kloneran, kloneran_state, empty_init, "Konami", "Lone Ranger (handheld)", MACHINE_SUPPORTS_SAVE ) -CONS( 1989, kblades, 0, 0, kblades, kblades, kblades_state, empty_init, "Konami", "Blades of Steel (handheld)", MACHINE_SUPPORTS_SAVE ) -CONS( 1989, knfl, 0, 0, knfl, knfl, knfl_state, empty_init, "Konami", "NFL Football (handheld)", MACHINE_SUPPORTS_SAVE ) -CONS( 1989, kbilly, 0, 0, kbilly, kbilly, kbilly_state, empty_init, "Konami", "The Adventures of Bayou Billy (handheld)", MACHINE_SUPPORTS_SAVE ) -CONS( 1991, kbucky, 0, 0, kbucky, kbucky, kbucky_state, empty_init, "Konami", "Bucky O'Hare (handheld)", MACHINE_SUPPORTS_SAVE ) -CONS( 1991, kgarfld, 0, 0, kgarfld, kgarfld, kgarfld_state, empty_init, "Konami", "Garfield (handheld)", MACHINE_SUPPORTS_SAVE ) // Nintendo G&W: silver/gold (initial series is uncategorized, "silver" was made up later) CONS( 1980, gnw_ball, 0, 0, gnw_ball, gnw_ball, gnw_ball_state, empty_init, "Nintendo", "Game & Watch: Ball", MACHINE_SUPPORTS_SAVE ) @@ -10137,6 +10128,19 @@ CONS( 1983, gnw_mbaway, 0, 0, gnw_mbaway, gnw_mbaway, gnw_mbaway_sta // 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 ) +// Konami +CONS( 1989, kdribble, 0, 0, kdribble, kdribble, kdribble_state, empty_init, "Konami", "Double Dribble (handheld)", MACHINE_SUPPORTS_SAVE ) +CONS( 1989, ktopgun, 0, 0, ktopgun, ktopgun, ktopgun_state, empty_init, "Konami", "Top Gun (handheld)", MACHINE_SUPPORTS_SAVE ) +CONS( 1989, kcontra, 0, 0, kcontra, kcontra, kcontra_state, empty_init, "Konami", "Contra (handheld)", MACHINE_SUPPORTS_SAVE ) +CONS( 1989, ktmnt, 0, 0, ktmnt, ktmnt, ktmnt_state, empty_init, "Konami", "Teenage Mutant Ninja Turtles (handheld)", MACHINE_SUPPORTS_SAVE ) +CONS( 1989, kgradius, 0, 0, kgradius, kgradius, kgradius_state, empty_init, "Konami", "Gradius (handheld)", MACHINE_SUPPORTS_SAVE ) +CONS( 1989, kloneran, 0, 0, kloneran, kloneran, kloneran_state, empty_init, "Konami", "Lone Ranger (handheld)", MACHINE_SUPPORTS_SAVE ) +CONS( 1989, kblades, 0, 0, kblades, kblades, kblades_state, empty_init, "Konami", "Blades of Steel (handheld)", MACHINE_SUPPORTS_SAVE ) +CONS( 1989, knfl, 0, 0, knfl, knfl, knfl_state, empty_init, "Konami", "NFL Football (handheld)", MACHINE_SUPPORTS_SAVE ) +CONS( 1989, kbilly, 0, 0, kbilly, kbilly, kbilly_state, empty_init, "Konami", "The Adventures of Bayou Billy (handheld)", MACHINE_SUPPORTS_SAVE ) +CONS( 1991, kbucky, 0, 0, kbucky, kbucky, kbucky_state, empty_init, "Konami", "Bucky O'Hare (handheld)", MACHINE_SUPPORTS_SAVE ) +CONS( 1991, kgarfld, 0, 0, kgarfld, kgarfld, kgarfld_state, empty_init, "Konami", "Garfield (handheld)", MACHINE_SUPPORTS_SAVE ) + // Tiger 7-xxx/78-xxx models CONS( 1989, tgaunt, 0, 0, tgaunt, tgaunt, tgaunt_state, empty_init, "Tiger Electronics (licensed from Tengen)", "Gauntlet (handheld)", MACHINE_SUPPORTS_SAVE ) CONS( 1991, trobhood, tgaunt, 0, trobhood, trobhood, tgaunt_state, empty_init, "Tiger Electronics", "Robin Hood (handheld)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mephisto_polgar.cpp b/src/mame/drivers/mephisto_polgar.cpp index f270685a684..363a46e2e4e 100644 --- a/src/mame/drivers/mephisto_polgar.cpp +++ b/src/mame/drivers/mephisto_polgar.cpp @@ -433,8 +433,8 @@ ROM_END /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ CONS( 1989, polgar, 0, 0, polgar, polgar, mephisto_polgar_state, empty_init, "Hegener + Glaser", "Mephisto Polgar", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1990, polgar10, polgar, 0, polgar10, polgar, mephisto_polgar_state, empty_init, "Hegener + Glaser", "Mephisto Polgar 10MHz", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1992, mrisc, 0, 0, mrisc, polgar, mephisto_risc_state, empty_init, "Hegener + Glaser", "Mephisto RISC 1MB", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1994, mrisc2, mrisc, 0, mrisc, polgar, mephisto_risc_state, empty_init, "Hegener + Glaser", "Mephisto RISC II", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1992, mrisc, 0, 0, mrisc, polgar, mephisto_risc_state, empty_init, "Hegener + Glaser / Tasc", "Mephisto RISC 1MB", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1994, mrisc2, mrisc, 0, mrisc, polgar, mephisto_risc_state, empty_init, "Hegener + Glaser / Tasc", "Mephisto RISC II", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // not modular boards CONS( 1989, academy, 0, 0, academy, polgar, mephisto_academy_state, empty_init, "Hegener + Glaser", "Mephisto Academy", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/drivers/novag_const.cpp b/src/mame/drivers/novag_const.cpp index fafb9e52d2b..24ce1577239 100644 --- a/src/mame/drivers/novag_const.cpp +++ b/src/mame/drivers/novag_const.cpp @@ -6,6 +6,8 @@ Novag Super Sensor IV (model 812) Novag Constellation (model 831) Novag Super Constellation (model 844) +Novag Constellation 3.6MHz (model 845) +Novag Constellation Quattro (model 862) The chess engine is by David Kittinger, Super Sensor IV is his first one working under Novag. The Constellation engine is completely different. diff --git a/src/mame/drivers/saitek_risc2500.cpp b/src/mame/drivers/saitek_risc2500.cpp index b9b1a328ebc..bd4b2de5543 100644 --- a/src/mame/drivers/saitek_risc2500.cpp +++ b/src/mame/drivers/saitek_risc2500.cpp @@ -332,5 +332,5 @@ ROM_END /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -CONS( 1992, risc2500, 0, 0, risc2500, risc2500, risc2500_state, empty_init, "Saitek", "Kasparov RISC 2500", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_SOUND ) -CONS( 1995, montreux, 0, 0, risc2500, risc2500, risc2500_state, empty_init, "Saitek", "Mephisto Montreux", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_SOUND ) // after Saitek bought Hegener + Glaser +CONS( 1992, risc2500, 0, 0, risc2500, risc2500, risc2500_state, empty_init, "Saitek / Tasc", "Kasparov RISC 2500", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_SOUND ) +CONS( 1995, montreux, 0, 0, risc2500, risc2500, risc2500_state, empty_init, "Saitek / Tasc", "Mephisto Montreux", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_SOUND ) // after Saitek bought Hegener + Glaser diff --git a/src/mame/includes/hh_sm510.h b/src/mame/includes/hh_sm510.h index cb42456da1e..878fee2b4c8 100644 --- a/src/mame/includes/hh_sm510.h +++ b/src/mame/includes/hh_sm510.h @@ -24,7 +24,7 @@ public: m_out_x(*this, "%u.%u.%u", 0U, 0U, 0U), m_inp_lines(0), m_inp_fixed(-1), - m_display_wait(33) + m_display_wait(16) { } // devices @@ -48,7 +48,7 @@ public: virtual DECLARE_INPUT_CHANGED_MEMBER(input_changed); virtual DECLARE_INPUT_CHANGED_MEMBER(acl_button); virtual DECLARE_WRITE16_MEMBER(sm510_lcd_segment_w); - virtual DECLARE_WRITE8_MEMBER(sm500_lcd_segment_w); + virtual DECLARE_WRITE16_MEMBER(sm500_lcd_segment_w); virtual DECLARE_READ8_MEMBER(input_r); virtual DECLARE_WRITE8_MEMBER(input_w); virtual DECLARE_WRITE8_MEMBER(piezo_r1_w); @@ -58,7 +58,7 @@ public: virtual DECLARE_WRITE8_MEMBER(piezo2bit_input_w); // display common - int m_display_wait; // lcd segment on/off-delay in milliseconds (default 33ms) + int m_display_wait; // lcd segment on/off-delay in milliseconds (default 16ms) u8 m_display_x_len; // lcd number of groups u8 m_display_y_len; // lcd number of segments u8 m_display_z_len; // lcd number of commons