summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/hh_sm510.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/hh_sm510.cpp')
-rw-r--r--src/mame/drivers/hh_sm510.cpp122
1 files changed, 114 insertions, 8 deletions
diff --git a/src/mame/drivers/hh_sm510.cpp b/src/mame/drivers/hh_sm510.cpp
index 6405c27b72f..bb250be85c6 100644
--- a/src/mame/drivers/hh_sm510.cpp
+++ b/src/mame/drivers/hh_sm510.cpp
@@ -1399,7 +1399,7 @@ READ8_MEMBER(tddragon_state::input_r)
static INPUT_PORTS_START( tddragon )
PORT_START("IN.0") // S1
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // Jump
PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.1") // S2
@@ -1408,12 +1408,12 @@ static INPUT_PORTS_START( tddragon )
PORT_BIT( 0x09, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.2") // S3
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // Sway
PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.3") // S4
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // Punch/Pick
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // Kick
PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.4") // S5
@@ -1431,7 +1431,7 @@ static INPUT_PORTS_START( tddragon )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POWER_OFF )
PORT_START("ACL")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("All Clear")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
INPUT_PORTS_END
static MACHINE_CONFIG_START( tddragon )
@@ -1466,6 +1466,102 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Tiger Space Jam
+ * Sharp SM510 under epoxy (die label KMS10, 23)
+ * lcd screen with custom segments, 1-bit sound
+
+***************************************************************************/
+
+class tsjam_state : public hh_sm510_state
+{
+public:
+ tsjam_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ { }
+
+ virtual DECLARE_READ8_MEMBER(input_r) override;
+};
+
+// handlers
+
+READ8_MEMBER(tsjam_state::input_r)
+{
+ // K: multiplexed inputs (note: Vdd row is always on)
+ return m_inp_matrix[5]->read() | read_inputs(5);
+}
+
+
+// config
+
+static INPUT_PORTS_START( tsjam )
+ PORT_START("IN.0") // S1
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.1") // S2
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x09, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.2") // S3
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.3") // S4
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // Shoot/Block
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // Tune/Steal
+ PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.4") // S5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Pause")
+ PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.5") // Vdd!
+ PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Power On/Start")
+
+ PORT_START("BA")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_NAME("Sound")
+
+ PORT_START("B")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POWER_OFF )
+
+ PORT_START("ACL")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( tsjam )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", SM510, XTAL_32_768kHz)
+ MCFG_SM510_WRITE_SEGS_CB(WRITE16(hh_sm510_state, sm510_lcd_segment_w))
+ MCFG_SM510_READ_K_CB(READ8(tsjam_state, input_r))
+ MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w))
+ MCFG_SM510_WRITE_R_CB(WRITE8(hh_sm510_state, piezo_r1_w))
+ MCFG_SM510_READ_BA_CB(IOPORT("BA"))
+ MCFG_SM510_READ_B_CB(IOPORT("B"))
+
+ /* video hardware */
+ MCFG_SCREEN_SVG_ADD("screen", "svg")
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(1421, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1421-1, 0, 1080-1)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_svg)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
Tiger Sonic The Hedgehog
* Sharp SM511 under epoxy (die label KMS73B, N71)
* lcd screen with custom segments, 2-bit sound
@@ -1520,7 +1616,7 @@ READ8_MEMBER(tsonic_state::input_r)
static INPUT_PORTS_START( tsonic )
PORT_START("IN.0") // S2
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // Jump
PORT_BIT( 0x0b, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.1") // S3
@@ -1533,7 +1629,7 @@ static INPUT_PORTS_START( tsonic )
PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.3") // S5
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // Super Sonic Spin
PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.4") // S6
@@ -1551,7 +1647,7 @@ static INPUT_PORTS_START( tsonic )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POWER_OFF )
PORT_START("ACL")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("All Clear")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, acl_button, nullptr) PORT_NAME("ACL")
INPUT_PORTS_END
static const s16 tsonic_speaker_levels[] = { 0, 0x7fff/3*1, 0x7fff/3*2, 0x7fff };
@@ -1793,6 +1889,15 @@ ROM_START( tsonic )
ROM_END
+ROM_START( tsjam )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "1023", 0x0000, 0x1000, CRC(6eaabfbd) SHA1(f0ecbd6f65fe72ce2d8a452685be2e77a63fc9f0) )
+
+ ROM_REGION( 1044640, "svg", 0)
+ ROM_LOAD( "tsjam.svg", 0, 1044640, CRC(4e33adee) SHA1(220bab1e2921032e254f3f8bdf6916a84abb6de4) )
+ROM_END
+
+
// YEAR NAME PARENT COMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
CONS( 1989, ktopgun, 0, 0, ktopgun, ktopgun, ktopgun_state, 0, "Konami", "Top Gun (handheld)", MACHINE_SUPPORTS_SAVE )
@@ -1819,3 +1924,4 @@ CONS( 1984, gnw_bx301, 0, 0, bx301, bx301, bx301_state, 0, "Ni
CONS( 1988, tddragon, 0, 0, tddragon, tddragon, tddragon_state, 0, "Tiger Electronics (licensed from Tradewest/Technos)", "Double Dragon (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1991, tsonic, 0, 0, tsonic, tsonic, tsonic_state, 0, "Tiger Electronics (licensed from Sega)", "Sonic The Hedgehog (handheld)", MACHINE_SUPPORTS_SAVE )
+CONS( 1996, tsjam, 0, 0, tsjam, tsjam, tsjam_state, 0, "Tiger Electronics", "Space Jam (handheld)", MACHINE_SUPPORTS_SAVE )