diff --git a/src/mame/drivers/hh_sm510.cpp b/src/mame/drivers/hh_sm510.cpp index 9fc771ed7e3..18a663de354 100644 --- a/src/mame/drivers/hh_sm510.cpp +++ b/src/mame/drivers/hh_sm510.cpp @@ -13,6 +13,7 @@ TODO: - improve/redo SVGs of: gnw_mc25, gnw_eg26, exospace - confirm gnw_mc25/gnw_eg26 rom (dumped from Soviet clone, but pretty confident that it's same) + - identify lcd segments for tgaiden ***************************************************************************/ @@ -1894,6 +1895,107 @@ MACHINE_CONFIG_END +/*************************************************************************** + + Tiger Ninja Gaiden (model 7-787) + * Sharp SM510 under epoxy (die label M82) + * lcd screen with custom segments, 1 led, 1-bit sound + +***************************************************************************/ + +class tgaiden_state : public hh_sm510_state +{ +public: + tgaiden_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_sm510_state(mconfig, type, tag) + { + m_inp_lines = 5; + m_inp_fixed = 5; + } + + DECLARE_WRITE8_MEMBER(write_r); +}; + +// handlers + +WRITE8_MEMBER(tgaiden_state::write_r) +{ + // R1: speaker out + piezo_r1_w(space, 0, data & 1); + + // R2: led + //.. +} + +// config + +static INPUT_PORTS_START( tgaiden ) + 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) PORT_NAME("Jump") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Attack/Pick") + 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") // 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 + +static MACHINE_CONFIG_START( tgaiden ) + + /* 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(hh_sm510_state, input_r)) + MCFG_SM510_WRITE_S_CB(WRITE8(hh_sm510_state, input_w)) + MCFG_SM510_WRITE_R_CB(WRITE8(tgaiden_state, write_r)) + 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(1920, 1080) + MCFG_SCREEN_VISIBLE_AREA(0, 1920-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 Batman (model 7-799) @@ -3099,6 +3201,15 @@ ROM_START( tkarnov ) ROM_END +ROM_START( tgaiden ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "m82", 0x0000, 0x1000, CRC(278eafb0) SHA1(14396a0010bade0fde705969151200ed432321e7) ) + + ROM_REGION( 100000, "svg", 0) + ROM_LOAD( "tgaiden.svg", 0, 100000, NO_DUMP ) +ROM_END + + ROM_START( tbatman ) ROM_REGION( 0x1000, "maincpu", 0 ) ROM_LOAD( "597", 0x0000, 0x1000, CRC(8b7acc97) SHA1(fe811675dc5c5ef9f6f969685c933926c8b9e868) ) @@ -3224,6 +3335,7 @@ CONS( 1989, tgaunt, 0, 0, tgaunt, tgaunt, tgaunt_state, 0, "T CONS( 1991, trobhood, tgaunt, 0, trobhood, trobhood, tgaunt_state, 0, "Tiger Electronics", "Robin Hood (handheld)", MACHINE_SUPPORTS_SAVE ) CONS( 1989, tddragon, 0, 0, tddragon, tddragon, tddragon_state, 0, "Tiger Electronics (licensed from Technos/Tradewest)", "Double Dragon (handheld)", MACHINE_SUPPORTS_SAVE ) CONS( 1989, tkarnov, 0, 0, tkarnov, tkarnov, tkarnov_state, 0, "Tiger Electronics (licensed from Data East)", "Karnov (handheld)", MACHINE_SUPPORTS_SAVE ) +CONS( 1989, tgaiden, 0, 0, tgaiden, tgaiden, tgaiden_state, 0, "Tiger Electronics (licensed from Tecmo)", "Ninja Gaiden (handheld)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) CONS( 1989, tbatman, 0, 0, tbatman, tbatman, tbatman_state, 0, "Tiger Electronics", "Batman (handheld)", MACHINE_SUPPORTS_SAVE ) CONS( 1990, tsharr2, 0, 0, tsharr2, tsharr2, tsharr2_state, 0, "Tiger Electronics (licensed from Sega)", "Space Harrier II (handheld)", MACHINE_SUPPORTS_SAVE ) CONS( 1990, taltbeast, 0, 0, taltbeast, taltbeast, taltbeast_state, 0, "Tiger Electronics (licensed from Sega)", "Altered Beast (handheld)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tispeak.cpp b/src/mame/drivers/tispeak.cpp index f71601cbfdb..ad22a585acc 100644 --- a/src/mame/drivers/tispeak.cpp +++ b/src/mame/drivers/tispeak.cpp @@ -636,8 +636,7 @@ WRITE16_MEMBER(tispeak_state::snspellc_write_r) WRITE16_MEMBER(tispeak_state::snspellc_write_o) { // O3210: TMS5100 CTL8124 - m_o = bitswap<8>(data,7,6,5,4,3,0,1,2); - m_tms5100->ctl_w(space, 0, m_o & 0xf); + m_tms5100->ctl_w(space, 0, bitswap<4>(data,3,0,1,2)); } READ8_MEMBER(tispeak_state::snspellc_read_k) @@ -689,7 +688,7 @@ void tispeak_state::k28_prepare_display(u8 old, u8 data) WRITE16_MEMBER(tispeak_state::k28_write_r) { // R1234: TMS5100 CTL8421 - m_tms5100->ctl_w(space, 0, bitswap<8>(data,0,0,0,0,1,2,3,4) & 0xf); + m_tms5100->ctl_w(space, 0, bitswap<4>(data,1,2,3,4)); // R0: TMS5100 PDC pin m_tms5100->pdc_w(data & 1); diff --git a/src/mame/drivers/tispellb.cpp b/src/mame/drivers/tispellb.cpp index b2eca5f3cd4..1c73e9d6692 100644 --- a/src/mame/drivers/tispellb.cpp +++ b/src/mame/drivers/tispellb.cpp @@ -199,7 +199,7 @@ WRITE16_MEMBER(tispellb_state::sub_write_o) READ8_MEMBER(tispellb_state::rev1_ctl_r) { // main CTL3210 <- sub O6043 - return bitswap<8>(m_sub_o,7,5,2,1,6,0,4,3) & 0xf; + return bitswap<4>(m_sub_o,6,0,4,3); } WRITE16_MEMBER(tispellb_state::sub_write_r) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 52b206bc560..65296a4c735 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -14722,6 +14722,7 @@ tbatfor // Tiger tbatman // Tiger tbtoads // Tiger tddragon // Tiger +tgaiden // Tiger tgaunt // Tiger tjdredd // Tiger tkarnov // Tiger