From 9ba5d7019ebe26dde80d9af357d5cf4b44eec424 Mon Sep 17 00:00:00 2001 From: hap Date: Mon, 3 Feb 2025 23:29:00 +0100 Subject: [PATCH] New working systems ------------------- Basketbol (Elektronika) [hap, Milan Galcik] --- src/mame/handheld/hh_sm510.cpp | 281 +++++++++++++++++++++++---------- src/mame/handheld/hh_sm510.h | 17 +- src/mame/layout/elbaskb.lay | 138 ++++++++++++++++ src/mame/mame.lst | 1 + 4 files changed, 344 insertions(+), 93 deletions(-) create mode 100644 src/mame/layout/elbaskb.lay diff --git a/src/mame/handheld/hh_sm510.cpp b/src/mame/handheld/hh_sm510.cpp index e5f256f989f..37bec6ec4bf 100644 --- a/src/mame/handheld/hh_sm510.cpp +++ b/src/mame/handheld/hh_sm510.cpp @@ -157,6 +157,8 @@ The MCUs used were not imported from Sharp, but cloned by USSR, renamed to #include "hh_sm510_dualh.lh" #include "hh_sm510_tripleh.lh" +#include "elbaskb.lh" + //#include "hh_sm510_test.lh" // common test-layout - use external artwork #include "hh_sm500_test.lh" // " @@ -217,7 +219,7 @@ void hh_sm510_state::machine_reset() // lcd panel - on lcd handhelds, usually not a generic x/y screen device // deflicker here, especially needed for SM500/SM5A with the active shift register -TIMER_CALLBACK_MEMBER(hh_sm510_state::display_decay_tick) +void hh_sm510_state::update_display() { u8 z_mask = (1 << m_display_z_len) - 1; u8 zx_len = 1 << (m_display_x_len + m_display_z_len); @@ -592,7 +594,7 @@ static INPUT_PORTS_START( gnw_ball ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Time") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_CB(input_changed) PORT_NAME("Game B") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_CB(input_changed) PORT_NAME("Game A") - PORT_CONFNAME( 0x08, 0x00, "Invincibility (Cheat)") // factory test, unpopulated on PCB -- disable after boot + PORT_CONFNAME( 0x08, 0x00, "Invincibility (Cheat)" ) // factory test, unpopulated on PCB -- disable after boot PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x08, DEF_STR( On ) ) @@ -667,7 +669,7 @@ static INPUT_PORTS_START( gnw_flagman ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // factory test, unpopulated on PCB -- only works after power-on + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // factory test, unpopulated on PCB -- only works after power-on PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) @@ -726,7 +728,7 @@ static INPUT_PORTS_START( gnw_vermin ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Time") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_CB(input_changed) PORT_NAME("Game B") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_CB(input_changed) PORT_NAME("Game A") - PORT_CONFNAME( 0x08, 0x00, "Infinite Lives (Cheat)") // factory test, unpopulated on PCB -- disable after boot + PORT_CONFNAME( 0x08, 0x00, "Infinite Lives (Cheat)" ) // factory test, unpopulated on PCB -- disable after boot PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x08, DEF_STR( On ) ) @@ -793,7 +795,7 @@ static INPUT_PORTS_START( gnw_fires ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Time") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_CB(input_changed) PORT_NAME("Game B") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_CB(input_changed) PORT_NAME("Game A") - PORT_CONFNAME( 0x08, 0x00, "Invincibility (Cheat)") // factory test, unpopulated on PCB -- disable after boot + PORT_CONFNAME( 0x08, 0x00, "Invincibility (Cheat)" ) // factory test, unpopulated on PCB -- disable after boot PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x08, DEF_STR( On ) ) @@ -870,7 +872,7 @@ static INPUT_PORTS_START( gnw_judge ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Increase Computer's Operation Time (Cheat)") // factory test, unpopulated on PCB -- only works after power-on + PORT_CONFNAME( 0x01, 0x01, "Increase Computer's Operation Time (Cheat)" ) // factory test, unpopulated on PCB -- only works after power-on PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) @@ -950,7 +952,7 @@ static INPUT_PORTS_START( gnw_manholeg ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) // display test? PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) @@ -1009,7 +1011,7 @@ static INPUT_PORTS_START( gnw_helmet ) PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.1") // R3 - PORT_CONFNAME( 0x01, 0x00, "Invincibility (Cheat)") // factory test, unpopulated on PCB -- disable after boot + PORT_CONFNAME( 0x01, 0x00, "Invincibility (Cheat)" ) // factory test, unpopulated on PCB -- disable after boot PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x01, DEF_STR( On ) ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) // same as 0x01? @@ -1088,7 +1090,7 @@ public: static INPUT_PORTS_START( gnw_lion ) PORT_START("IN.0") // R2 - PORT_CONFNAME( 0x01, 0x00, "Increase Speed (Cheat)") // factory test, unpopulated on PCB -- disable after boot + PORT_CONFNAME( 0x01, 0x00, "Increase Speed (Cheat)" ) // factory test, unpopulated on PCB -- disable after boot PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x01, DEF_STR( On ) ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) // same as 0x01? @@ -1111,7 +1113,7 @@ static INPUT_PORTS_START( gnw_lion ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) // display test? PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) @@ -1166,7 +1168,7 @@ static INPUT_PORTS_START( gnw_pchute ) PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.1") // R3 - PORT_CONFNAME( 0x01, 0x00, "Infinite Lives (Cheat)") // factory test, unpopulated on PCB -- disable after boot + PORT_CONFNAME( 0x01, 0x00, "Infinite Lives (Cheat)" ) // factory test, unpopulated on PCB -- disable after boot PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x01, DEF_STR( On ) ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) // same as 0x01? @@ -1238,7 +1240,7 @@ public: static INPUT_PORTS_START( gnw_octopus ) PORT_START("IN.0") // R2 - PORT_CONFNAME( 0x01, 0x00, "Invincibility (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x00, "Invincibility (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x01, DEF_STR( On ) ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) // same as 0x01? @@ -1323,7 +1325,7 @@ public: static INPUT_PORTS_START( gnw_popeye ) PORT_START("IN.0") // R2 - PORT_CONFNAME( 0x01, 0x00, "Infinite Lives (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x00, "Infinite Lives (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x01, DEF_STR( On ) ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) // same as 0x01? @@ -1416,7 +1418,7 @@ static INPUT_PORTS_START( gnw_chef ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // factory test, unpopulated on PCB -- only works after power-on + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // factory test, unpopulated on PCB -- only works after power-on PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -1502,7 +1504,7 @@ static INPUT_PORTS_START( gnw_mmouse ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // factory test, unpopulated on PCB -- only works after power-on + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // factory test, unpopulated on PCB -- only works after power-on PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -1573,7 +1575,7 @@ public: static INPUT_PORTS_START( gnw_fire ) PORT_START("IN.0") // R2 - PORT_CONFNAME( 0x01, 0x00, "Infinite Lives (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x00, "Infinite Lives (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x01, DEF_STR( On ) ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) // same as 0x01? @@ -1675,12 +1677,12 @@ static INPUT_PORTS_START( gnw_tbridge ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -1744,12 +1746,12 @@ static INPUT_PORTS_START( gnw_fireatk ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -1813,12 +1815,12 @@ static INPUT_PORTS_START( gnw_stennis ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -1882,12 +1884,12 @@ static INPUT_PORTS_START( gnw_opanic ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -1958,7 +1960,7 @@ static INPUT_PORTS_START( gnw_dkong ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -2025,7 +2027,7 @@ static INPUT_PORTS_START( gnw_mickdon ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -2101,12 +2103,12 @@ static INPUT_PORTS_START( gnw_ghouse ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -2177,7 +2179,7 @@ static INPUT_PORTS_START( gnw_dkong2 ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -2244,12 +2246,12 @@ static INPUT_PORTS_START( gnw_mario ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -2322,12 +2324,12 @@ static INPUT_PORTS_START( gnw_rshower ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -2394,12 +2396,12 @@ static INPUT_PORTS_START( gnw_lboat ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -2466,12 +2468,12 @@ static INPUT_PORTS_START( gnw_pinball ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB -- this one multiplies scoring factor + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB -- this one multiplies scoring factor PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -2609,12 +2611,12 @@ static INPUT_PORTS_START( gnw_squish ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Bonus Life (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Bonus Life (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -2681,12 +2683,12 @@ static INPUT_PORTS_START( gnw_bsweep ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Level Skip (Cheat)") // " -- Controller keys skips level when activated + PORT_CONFNAME( 0x01, 0x01, "Level Skip (Cheat)" ) // " -- Controller keys skips level when activated PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -2755,12 +2757,12 @@ static INPUT_PORTS_START( gnw_sbuster ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -2834,12 +2836,12 @@ static INPUT_PORTS_START( gnw_gcliff ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Level Skip (Cheat)") // " -- Left or right skips level when activated + PORT_CONFNAME( 0x01, 0x01, "Level Skip (Cheat)" ) // " -- Left or right skips level when activated PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -2913,12 +2915,12 @@ static INPUT_PORTS_START( gnw_zelda ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)") // " -- Invincibility when playing on bottom screen only + PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)" ) // " -- Invincibility when playing on bottom screen only PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -2994,12 +2996,12 @@ static INPUT_PORTS_START( gnw_mariocmt ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -3080,12 +3082,12 @@ static INPUT_PORTS_START( gnw_snoopyp ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -3159,12 +3161,12 @@ static INPUT_PORTS_START( gnw_popeyep ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives and Stronger Punch (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives and Stronger Punch (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -3241,12 +3243,12 @@ static INPUT_PORTS_START( gnw_dkjrp ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -3313,12 +3315,12 @@ static INPUT_PORTS_START( gnw_mbaway ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -3395,12 +3397,12 @@ static INPUT_PORTS_START( gnw_mmousep ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -3489,12 +3491,12 @@ static INPUT_PORTS_START( gnw_dkjr ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -3559,12 +3561,12 @@ static INPUT_PORTS_START( gnw_mariocm ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -3632,12 +3634,12 @@ static INPUT_PORTS_START( gnw_manhole ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -3701,7 +3703,7 @@ static INPUT_PORTS_START( gnw_tfish ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -3778,7 +3780,7 @@ static INPUT_PORTS_START( gnw_smb ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -3875,7 +3877,7 @@ static INPUT_PORTS_START( gnw_climber ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -3974,7 +3976,7 @@ static INPUT_PORTS_START( gnw_bfight ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -4057,7 +4059,7 @@ static INPUT_PORTS_START( gnw_mariotj ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -4124,12 +4126,12 @@ static INPUT_PORTS_START( gnw_ssparky ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -4193,12 +4195,12 @@ static INPUT_PORTS_START( gnw_cgrab ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Do not release crabs (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Do not release crabs (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -4289,12 +4291,12 @@ static INPUT_PORTS_START( gnw_boxing ) PORT_INCLUDE( microvs_shared ) PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "P2 Decrease Health (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "P2 Decrease Health (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "P1 Infinite Health (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "P1 Infinite Health (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -4348,7 +4350,7 @@ static INPUT_PORTS_START( gnw_dkong3 ) PORT_INCLUDE( microvs_shared ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "P1 Infinite Lives (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "P1 Infinite Lives (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -4402,12 +4404,12 @@ static INPUT_PORTS_START( gnw_dkhockey ) PORT_INCLUDE( microvs_shared ) PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Any Goal Scores 10 Points (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Any Goal Scores 10 Points (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "P2 Goals Scores No Points (Cheat)") // " + PORT_CONFNAME( 0x01, 0x01, "P2 Goals Scores No Points (Cheat)" ) // " PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -4485,7 +4487,7 @@ static INPUT_PORTS_START( bassmate ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Skip Compute Animation (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Skip Compute Animation (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -4852,6 +4854,110 @@ ROM_END +/******************************************************************************* + + Elektronika Баскетбол (Basketbol) (model ИМ-55) + * PCB label: ЕНСК.758726.002/3 + * KB1013VK1-2 MCU + * 26 LEDs + 4 7seg LEDs, 1-bit sound + + It's a LED game with an LCD driver MCU, that's unconventional. + +*******************************************************************************/ + +class elbaskb_state : public hh_sm510_state +{ +public: + elbaskb_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_sm510_state(mconfig, type, tag), + m_digits(*this, "digit%u", 0U) + { } + + void elbaskb(machine_config &config); + +protected: + virtual void machine_start() override ATTR_COLD; + virtual void update_display() override; + +private: + output_finder<4> m_digits; +}; + +void elbaskb_state::machine_start() +{ + hh_sm510_state::machine_start(); + m_digits.resolve(); +} + +// handlers + +void elbaskb_state::update_display() +{ + hh_sm510_state::update_display(); + + // convert to digit segments + for (int i = 0; i < 4; i++) + { + u8 data = 0; + for (int seg = 0; seg < 7; seg++) + { + int x = ((i << 1) | (seg >> 2 ^ 1)) & 3; + int y = seg & 3; + int z = i >> 1 ^ 1; + + data = data >> 1 | (m_out_x[x][y][z] ? 0x40 : 0); + } + + m_digits[i] = data; + } +} + +// inputs + +static INPUT_PORTS_START( elbaskb ) + PORT_START("IN.0") // R2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed) PORT_COCKTAIL + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed) PORT_COCKTAIL + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed) PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) PORT_COCKTAIL // Отбор + + PORT_START("IN.1") // R3 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) 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_LEFT ) PORT_CHANGED_CB(input_changed) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_CB(input_changed) // Отбор + + PORT_START("IN.2") // R4 + PORT_BIT( 0x09, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_CONFNAME( 0x06, 0x02, DEF_STR( Difficulty ) ) PORT_CHANGED_CB(input_changed) + PORT_CONFSETTING( 0x02, "1" ) + PORT_CONFSETTING( 0x04, "2" ) + + PORT_START("B") + PORT_CONFNAME( 0x01, 0x01, DEF_STR( Players ) ) + PORT_CONFSETTING( 0x00, "1" ) + PORT_CONFSETTING( 0x01, "2" ) +INPUT_PORTS_END + +// config + +void elbaskb_state::elbaskb(machine_config &config) +{ + sm5a_common(config, 0, 0); // КБ1013ВК1-2, R mask option ? + config.set_default_layout(layout_elbaskb); +} + +// roms + +ROM_START( elbaskb ) + ROM_REGION( 0x800, "maincpu", 0 ) + ROM_LOAD( "im-55.bin", 0x0000, 0x0740, CRC(006f82d0) SHA1(aca582dcb387345cd09a08e42a954c43430772fc) ) +ROM_END + + + + + /******************************************************************************* Konami Double Dribble (model BH001) @@ -11376,7 +11482,7 @@ static INPUT_PORTS_START( trsrescue ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Time") PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) @@ -11456,12 +11562,12 @@ static INPUT_PORTS_START( trsgkeep ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_CB(input_changed) PORT_NAME("Alarm") PORT_START("BA") - PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") // factory test, unpopulated on PCB -- this one multiplies scoring factor with 10 + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)" ) // factory test, unpopulated on PCB -- this one multiplies scoring factor with 10 PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) @@ -11522,7 +11628,7 @@ public: static INPUT_PORTS_START( trspacmis ) PORT_START("IN.0") // R2 - PORT_CONFNAME( 0x01, 0x00, "Invincibility (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x00, "Invincibility (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x01, DEF_STR( On ) ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) // same as 0x01? @@ -11623,7 +11729,7 @@ static INPUT_PORTS_START( trdivadv ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_CB(input_changed) PORT_NAME("Alarm") PORT_START("B") - PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)") // factory test, unpopulated on PCB + PORT_CONFNAME( 0x01, 0x01, "Invincibility (Cheat)" ) // factory test, unpopulated on PCB PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( On ) ) @@ -11853,7 +11959,7 @@ SYST( 1984, gnw_dkhockey, 0, 0, gnw_dkhockey, gnw_dkhockey, gnw_d // Nintendo G&W hardware licensed to other companies (not part of G&W series) SYST( 1984, bassmate, 0, 0, bassmate, bassmate, bassmate_state, empty_init, "Telko / Nintendo", "Bassmate Computer", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) -// Elektronika (mostly G&W clones) +// Elektronika (G&W clones) SYST( 1988, taynyoke, gnw_octopus, 0, taynyoke, gnw_octopus, gnw_octopus_state, empty_init, "bootleg (Elektronika)", "Tayny okeana", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) SYST( 1989, vespovar, gnw_chef, 0, vespovar, gnw_chef, gnw_chef_state, empty_init, "bootleg (Elektronika)", "Vesyolyy povar", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) SYST( 1984, nupogodi, gnw_mmouse, 0, nupogodi, gnw_mmouse, nupogodi_state, empty_init, "bootleg (Elektronika)", "Nu, pogodi!", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) @@ -11871,7 +11977,10 @@ SYST( 1992, atakaast, gnw_mmouse, 0, atakaast, gnw_mmouse, nupog SYST( 19??, ecircus, gnw_mmouse, 0, ecircus, gnw_mmouse, nupogodi_state, empty_init, "bootleg (Elektronika)", "Circus (Elektronika)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) SYST( 1991, naltair, gnw_mmouse, 0, vfutbol, naltair, nupogodi_state, empty_init, "bootleg (Nauchpribor)", "Altair (Nauchpribor)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_IMPERFECT_CONTROLS ) SYST( 1989, kosmicmt, gnw_fire, 0, kosmicmt, gnw_fire, gnw_fire_state, empty_init, "bootleg (Elektronika)", "Kosmicheskiy most", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) + +// Elektronika (original) SYST( 1990, auslalom, 0, 0, auslalom, auslalom, auslalom_state, empty_init, "Elektronika", "Autoslalom", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) +SYST( 199?, elbaskb, 0, 0, elbaskb, elbaskb, elbaskb_state, empty_init, "Elektronika", "Basketbol (Elektronika)", MACHINE_SUPPORTS_SAVE ) // Konami SYST( 1989, kdribble, 0, 0, kdribble, kdribble, kdribble_state, empty_init, "Konami", "Double Dribble (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) diff --git a/src/mame/handheld/hh_sm510.h b/src/mame/handheld/hh_sm510.h index 9dafa81dee4..4fcc49ea0d9 100644 --- a/src/mame/handheld/hh_sm510.h +++ b/src/mame/handheld/hh_sm510.h @@ -58,16 +58,18 @@ protected: u8 read_inputs(int columns, int fixed = -1); virtual void update_k_line(); - virtual void sm510_lcd_segment_w(offs_t offset, u16 data); - virtual void sm500_lcd_segment_w(offs_t offset, u16 data); virtual u8 input_r(); virtual void input_w(u8 data); + virtual void piezo_r1_w(u8 data); virtual void piezo_r2_w(u8 data); virtual void piezo_input_w(u8 data); virtual void piezo2bit_r1_w(u8 data); virtual void piezo2bit_input_w(u8 data); + virtual void machine_start() override ATTR_COLD; + virtual void machine_reset() override ATTR_COLD; + // display common int m_decay_pivot = 8; // lcd segment off-to-on delay in 1kHz ticks (affects input lag) int m_decay_len = 17; // lcd segment on-to-off delay in 1kHz ticks (lcd persistence) @@ -77,12 +79,13 @@ protected: u32 m_display_state[0x20] = { }; // lcd segment data (max. 5-bit offset) u8 m_display_decay[0x20][0x20] = { }; // (internal use) - void set_display_size(u8 x, u8 y, u8 z); - TIMER_CALLBACK_MEMBER(display_decay_tick); - emu_timer *m_display_decay_timer = nullptr; + virtual void update_display(); + virtual void sm510_lcd_segment_w(offs_t offset, u16 data); + virtual void sm500_lcd_segment_w(offs_t offset, u16 data); - virtual void machine_start() override ATTR_COLD; - virtual void machine_reset() override ATTR_COLD; + void set_display_size(u8 x, u8 y, u8 z); + TIMER_CALLBACK_MEMBER(display_decay_tick) { update_display(); } + emu_timer *m_display_decay_timer = nullptr; // machine configs void mcfg_cpu_common(machine_config &config); diff --git a/src/mame/layout/elbaskb.lay b/src/mame/layout/elbaskb.lay new file mode 100644 index 00000000000..326d3cabca9 --- /dev/null +++ b/src/mame/layout/elbaskb.lay @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index a7297cbfdc0..f66b6545748 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -19294,6 +19294,7 @@ bassmate // Telko biathlon // Elektronika ecircus // Elektronika ehockey // Elektronika +elbaskb // Elektronika gnw_ball // Nintendo gnw_bfight // Nintendo gnw_bfightn // Nintendo