diff options
author | 2019-03-02 22:25:24 +0100 | |
---|---|---|
committer | 2019-03-02 22:25:24 +0100 | |
commit | 08f3a160b35f3fc43f2e5ab3113ff7ed38b53da5 (patch) | |
tree | 91a27e02a636272b86ac0b24c2cd23144bb11743 | |
parent | 8f273e02b3e2d2f442dd501e5ecb664dcfb99fe9 (diff) |
New working machine added (#4711)
-----------
Game & Watch: Turtle Bridge [Henrik Algestam]
-rw-r--r-- | src/mame/drivers/hh_sm510.cpp | 90 | ||||
-rw-r--r-- | src/mame/mame.lst | 1 |
2 files changed, 91 insertions, 0 deletions
diff --git a/src/mame/drivers/hh_sm510.cpp b/src/mame/drivers/hh_sm510.cpp index 534a59dfaec..d72beeb4dd8 100644 --- a/src/mame/drivers/hh_sm510.cpp +++ b/src/mame/drivers/hh_sm510.cpp @@ -1496,6 +1496,95 @@ ROM_END /*************************************************************************** + Nintendo Game & Watch: Turtle Bridge (model TL-28) + * PCB label TL-28 + * Sharp SM510 label TL-28 523C (no decap) + * lcd screen with custom segments, 1-bit sound + +***************************************************************************/ + +class gnw_tbridge_state : public hh_sm510_state +{ +public: + gnw_tbridge_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_sm510_state(mconfig, type, tag) + { } + + void gnw_tbridge(machine_config &config); +}; + +// config + +static INPUT_PORTS_START( gnw_tbridge ) + PORT_START("IN.0") // S1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_16WAY + + PORT_START("IN.1") // S2 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Time") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game B") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game A") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alarm") + + 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") + + PORT_START("BA") // MCU BA(alpha) pin pulled to GND + PORT_CONFNAME( 0x01, 0x01, "Increase Score (Cheat)") + PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) + PORT_CONFSETTING( 0x00, DEF_STR( On ) ) + + PORT_START("B") // MCU B(beta) pin pulled to GND + PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") + PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) + PORT_CONFSETTING( 0x00, DEF_STR( On ) ) +INPUT_PORTS_END + +void gnw_tbridge_state::gnw_tbridge(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)); + m_maincpu->read_ba().set_ioport("BA"); + m_maincpu->read_b().set_ioport("B"); + + /* video hardware */ + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); + screen.set_svg_region("svg"); + screen.set_refresh_hz(50); + screen.set_size(1587, 1080); + screen.set_visarea(0, 1587-1, 0, 1080-1); + + TIMER(config, "display_decay").configure_periodic(FUNC(hh_sm510_state::display_decay_tick), attotime::from_msec(1)); + + /* sound hardware */ + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( gnw_tbridge ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "tl-28", 0x0000, 0x1000, CRC(284e7224) SHA1(b50d7f3a527ffe50771ef55fdf8214929bfa2253) ) + + ROM_REGION( 242781, "svg", 0) + ROM_LOAD( "gnw_tbridge.svg", 0, 242781, CRC(c0473e53) SHA1(bb43f12f517a3b657b5b35b50baf176e01ce041d) ) +ROM_END + + + + + +/*************************************************************************** + Nintendo Game & Watch: Snoopy Tennis (model SP-30) * PCB label SP-30 * Sharp SM510 label SP-30 525B (no decap) @@ -8427,6 +8516,7 @@ CONS( 1981, gnw_egg, gnw_mmouse, 0, gnw_egg, gnw_mmouse, gnw_mmouse_sta CONS( 1984, nupogodi, gnw_mmouse, 0, nupogodi, gnw_mmouse, gnw_mmouse_state, empty_init, "Elektronika", "Nu, pogodi!", MACHINE_SUPPORTS_SAVE ) CONS( 1989, exospace, gnw_mmouse, 0, exospace, exospace, gnw_mmouse_state, empty_init, "Elektronika", "Explorers of Space", MACHINE_SUPPORTS_SAVE ) CONS( 1981, gnw_fire, 0, 0, gnw_fire, gnw_fire, gnw_fire_state, empty_init, "Nintendo", "Game & Watch: Fire (wide screen)", MACHINE_SUPPORTS_SAVE ) +CONS( 1982, gnw_tbridge, 0, 0, gnw_tbridge, gnw_tbridge, gnw_tbridge_state, empty_init, "Nintendo", "Game & Watch: Turtle Bridge", MACHINE_SUPPORTS_SAVE ) CONS( 1982, gnw_stennis, 0, 0, gnw_stennis, gnw_stennis, gnw_stennis_state, empty_init, "Nintendo", "Game & Watch: Snoopy Tennis", MACHINE_SUPPORTS_SAVE ) // Nintendo G&W: multi screen diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 83f7c28fa3d..cae0679f046 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -15089,6 +15089,7 @@ gnw_rshower // Nintendo gnw_smb // Nintendo gnw_squish // Nintendo gnw_stennis // Nintendo +gnw_tbridge // Nintendo gnw_tfish // Nintendo kbilly // Konami kblades // Konami |