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.cpp249
1 files changed, 247 insertions, 2 deletions
diff --git a/src/mame/drivers/hh_sm510.cpp b/src/mame/drivers/hh_sm510.cpp
index 4680977061c..bbe776ea9c7 100644
--- a/src/mame/drivers/hh_sm510.cpp
+++ b/src/mame/drivers/hh_sm510.cpp
@@ -1746,7 +1746,7 @@ MACHINE_CONFIG_END
- Japan: Gauntlet (published by Sega)
- UK: Gauntlet (published by Grandstand)
- Robin Hood is the same ROM, different LCD.
+ Robin Hood is the same MCU/ROM, different LCD.
***************************************************************************/
@@ -2627,10 +2627,12 @@ MACHINE_CONFIG_END
/***************************************************************************
- Tiger Robocop 2 (model 7-830)
+ Tiger Robocop 2 (model 7-830), The Rocketeer (model 7-864)
* Sharp SM510 under epoxy (die label M96)
* lcd screen with custom segments, 1-bit sound
+ The Rocketeer is the same MCU/ROM, different LCD.
+
***************************************************************************/
class trobocop2_state : public hh_sm510_state
@@ -2644,6 +2646,7 @@ public:
}
void trobocop2(machine_config &config);
+ void trockteer(machine_config &config);
};
// config
@@ -2689,6 +2692,20 @@ static INPUT_PORTS_START( trobocop2 )
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 INPUT_PORTS_START( trockteer )
+ PORT_INCLUDE( trobocop2 )
+
+ PORT_MODIFY("IN.0")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("P1 Up/Rocket Pack")
+
+ PORT_MODIFY("IN.3")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Fire Right")
+
+ PORT_MODIFY("IN.4")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Fire Up")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Fire Left")
+INPUT_PORTS_END
+
MACHINE_CONFIG_START(trobocop2_state::trobocop2)
/* basic machine hardware */
@@ -2716,6 +2733,15 @@ MACHINE_CONFIG_START(trobocop2_state::trobocop2)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END
+MACHINE_CONFIG_START(trobocop2_state::trockteer)
+ trobocop2(config);
+
+ /* video hardware */
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(1463, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1463-1, 0, 1080-1)
+MACHINE_CONFIG_END
+
@@ -3102,6 +3128,101 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Tiger X-Men (model 7-854)
+ * Sharp SM510 under epoxy (die label MA7)
+ * lcd screen with custom segments, 1-bit sound
+
+***************************************************************************/
+
+class txmen_state : public hh_sm510_state
+{
+public:
+ txmen_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
+ }
+
+ void txmen(machine_config &config);
+};
+
+// config
+
+static INPUT_PORTS_START( txmen )
+ 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( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Attack/Pick Right")
+ PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.4") // S5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Punch/Claws")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Attack/Pick Left")
+ PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.5") // S6
+ 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.6") // GND!
+ 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
+
+MACHINE_CONFIG_START(txmen_state::txmen)
+
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", SM510)
+ MCFG_SM510_R_MASK_OPTION(SM510_R_CONTROL_OUTPUT)
+ MCFG_SM510_WRITE_SEGS_CB(WRITE16(*this, hh_sm510_state, sm510_lcd_segment_w))
+ MCFG_SM510_READ_K_CB(READ8(*this, hh_sm510_state, input_r))
+ MCFG_SM510_WRITE_S_CB(WRITE8(*this, hh_sm510_state, input_w))
+ MCFG_SM510_WRITE_R_CB(WRITE8(*this, 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(1467, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1467-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 */
+ SPEAKER(config, "mono").front_center();
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
Tiger Double Dragon 3 - The Rosetta Stone (model 7-858)
* Sharp SM510 under epoxy (die label MA6)
* lcd screen with custom segments, 1-bit sound
@@ -4448,6 +4569,101 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Tiger Wayne's World (model 78-523)
+ * Sharp SM510 under epoxy (die label ME7)
+ * lcd screen with custom segments, 1-bit sound
+
+***************************************************************************/
+
+class twworld_state : public hh_sm510_state
+{
+public:
+ twworld_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_sm510_state(mconfig, type, tag)
+ {
+ m_inp_lines = 6;
+ m_inp_fixed = 6;
+ }
+
+ void twworld(machine_config &config);
+};
+
+// config
+
+static INPUT_PORTS_START( twworld )
+ 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_NAME("High Five")
+ 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( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Hockey Right")
+ PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.4") // S5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Shoot/Cassandra")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Hockey Left")
+ PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("IN.5") // S6
+ 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.6") // GND!
+ 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
+
+MACHINE_CONFIG_START(twworld_state::twworld)
+
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", SM510)
+ MCFG_SM510_R_MASK_OPTION(SM510_R_CONTROL_OUTPUT)
+ MCFG_SM510_WRITE_SEGS_CB(WRITE16(*this, hh_sm510_state, sm510_lcd_segment_w))
+ MCFG_SM510_READ_K_CB(READ8(*this, hh_sm510_state, input_r))
+ MCFG_SM510_WRITE_S_CB(WRITE8(*this, hh_sm510_state, input_w))
+ MCFG_SM510_WRITE_R_CB(WRITE8(*this, 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(1429, 1080)
+ MCFG_SCREEN_VISIBLE_AREA(0, 1429-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 */
+ SPEAKER(config, "mono").front_center();
+ MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
Tiger Jurassic Park (model 78-524)
* Sharp SM510 under epoxy (die label MF4)
* lcd screen with custom segments, 1-bit sound
@@ -6440,6 +6656,14 @@ ROM_START( trobocop2 )
ROM_LOAD( "trobocop2.svg", 0, 463532, CRC(c2b92868) SHA1(87912f02bea967c10ba1d8f7c810e3c44b0e3cff) )
ROM_END
+ROM_START( trockteer )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "m96", 0x0000, 0x1000, CRC(3704b60c) SHA1(04275833e1a79fd33226faf060890b66ae54e1d3) )
+
+ ROM_REGION( 558086, "svg", 0)
+ ROM_LOAD( "trockteer.svg", 0, 558086, CRC(8afe0f88) SHA1(702127a4ff72be492f72b24bd8917ae0e15f247d) )
+ROM_END
+
ROM_START( taltbeast )
ROM_REGION( 0x1000, "maincpu", 0 )
@@ -6477,6 +6701,15 @@ ROM_START( tspidman )
ROM_END
+ROM_START( txmen )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "ma7", 0x0000, 0x1000, CRC(6f3ff34f) SHA1(aa24fbc3a4117ea51ebf951ee343a36c77692b72) )
+
+ ROM_REGION( 543232, "svg", 0)
+ ROM_LOAD( "txmen.svg", 0, 543232, CRC(51daf7f9) SHA1(b59ecbd83e05478f4b2654a019291c7e06893112) )
+ROM_END
+
+
ROM_START( tddragon3 )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "ma6", 0x0000, 0x1000, CRC(8e2da0d9) SHA1(54dd05124b4c605975b0cb1eadd7456ff4a94d68) )
@@ -6609,6 +6842,15 @@ ROM_START( tsfight2 )
ROM_END
+ROM_START( twworld )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "me7", 0x0000, 0x1000, CRC(dcb16d98) SHA1(539989e12bbc4a719818546c5edcfda02b98210e) )
+
+ ROM_REGION( 527859, "svg", 0)
+ ROM_LOAD( "twworld.svg", 0, 527859, CRC(0a2cffce) SHA1(d8c3f2fef60357e47ce0b44d588d0bb39112c8b9) )
+ROM_END
+
+
ROM_START( tjpark )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "mf4", 0x0000, 0x1000, CRC(f66faf73) SHA1(4cfa743dcd6e44a3c1f56206d5824fddba16df01) )
@@ -6808,10 +7050,12 @@ CONS( 1990, tsharr2, 0, 0, tsharr2, tsharr2, tsharr2_state,
CONS( 1990, tstrider, 0, 0, tstrider, tstrider, tstrider_state, empty_init, "Tiger Electronics (licensed from Capcom)", "Strider (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1990, tgoldnaxe, 0, 0, tgoldnaxe, tgoldnaxe, tgoldnaxe_state, empty_init, "Tiger Electronics (licensed from Sega)", "Golden Axe (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1990, trobocop2, 0, 0, trobocop2, trobocop2, trobocop2_state, empty_init, "Tiger Electronics", "Robocop 2 (handheld)", MACHINE_SUPPORTS_SAVE )
+CONS( 1991, trockteer, trobocop2, 0, trockteer, trockteer, trobocop2_state, empty_init, "Tiger Electronics", "The Rocketeer (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1990, taltbeast, 0, 0, taltbeast, taltbeast, taltbeast_state, empty_init, "Tiger Electronics (licensed from Sega)", "Altered Beast (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1990, tsf2010, 0, 0, tsf2010, tsf2010, tsf2010_state, empty_init, "Tiger Electronics (licensed from Capcom)", "Street Fighter 2010 - The Final Fight (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1991, tswampt, 0, 0, tswampt, tswampt, tswampt_state, empty_init, "Tiger Electronics", "Swamp Thing (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1991, tspidman, 0, 0, tspidman, tspidman, tspidman_state, empty_init, "Tiger Electronics", "Spider-Man (handheld, Tiger 1991 version)", MACHINE_SUPPORTS_SAVE )
+CONS( 1991, txmen, 0, 0, txmen, txmen, txmen_state, empty_init, "Tiger Electronics", "X-Men (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1991, tddragon3, 0, 0, tddragon3, tddragon3, tddragon3_state, empty_init, "Tiger Electronics (licensed from Technos)", "Double Dragon 3 - The Rosetta Stone (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1991, tflash, 0, 0, tflash, tflash, tflash_state, empty_init, "Tiger Electronics", "The Flash (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1991, tmchammer, 0, 0, tmchammer, tmchammer, tmchammer_state, empty_init, "Tiger Electronics", "MC Hammer: U Can't Touch This (handheld)", MACHINE_SUPPORTS_SAVE )
@@ -6826,6 +7070,7 @@ CONS( 1992, tsonic, 0, 0, tsonic, tsonic, tsonic_state,
CONS( 1992, trobocop3, 0, 0, trobocop3, trobocop3, trobocop3_state, empty_init, "Tiger Electronics", "Robocop 3 (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1993, tdummies, 0, 0, tdummies, tdummies, tdummies_state, empty_init, "Tiger Electronics", "The Incredible Crash Dummies (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1993, tsfight2, 0, 0, tsfight2, tsfight2, tsfight2_state, empty_init, "Tiger Electronics (licensed from Capcom)", "Street Fighter II (handheld)", MACHINE_SUPPORTS_SAVE )
+CONS( 1992, twworld, 0, 0, twworld, twworld, twworld_state, empty_init, "Tiger Electronics", "Wayne's World (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1993, tjpark, 0, 0, tjpark, tjpark, tjpark_state, empty_init, "Tiger Electronics", "Jurassic Park (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1993, tsonic2, 0, 0, tsonic2, tsonic2, tsonic2_state, empty_init, "Tiger Electronics (licensed from Sega)", "Sonic The Hedgehog 2 (handheld)", MACHINE_SUPPORTS_SAVE )
CONS( 1993, tsddragon, 0, 0, tsddragon, tsddragon, tsddragon_state, empty_init, "Tiger Electronics (licensed from Technos)", "Super Double Dragon (handheld)", MACHINE_SUPPORTS_SAVE )