Merge pull request #4331 from algestam/gnw-climber

New working machine added
This commit is contained in:
MooglyGuy 2018-11-24 15:18:28 +01:00 committed by GitHub
commit 39450ca043
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 95 additions and 0 deletions

View File

@ -1884,6 +1884,87 @@ MACHINE_CONFIG_END
/***************************************************************************
Nintendo Game & Watch: Climber (model: see below)
* Sharp SM511 label DR-106 9038B (new wide screen version) (no decap)
* lcd screen with custom segments, 1-bit sound
First released in 1986 on Crystal Screen (model DR-802), rereleased on
New Wide Screen in 1988 (model DR-106). The graphic LCD elements look the same
in both versions but the graphical background is slightly different.
Until further proof, it's assumed that the ROM is the same for both models.
***************************************************************************/
class gnw_climber_state : public hh_sm510_state
{
public:
gnw_climber_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_sm510_state(mconfig, type, tag)
{
m_inp_lines = 3;
}
void gnw_climber(machine_config &config);
};
// config
static INPUT_PORTS_START( gnw_climber )
PORT_START("IN.0") // S1
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_START1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Game")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) PORT_NAME("Alarm")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.1") // S2
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
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_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr)
PORT_START("IN.2") // S3
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_sm510_state, input_changed, nullptr) // Jump
PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
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("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
MACHINE_CONFIG_START(gnw_climber_state::gnw_climber)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", SM511)
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_B_CB(IOPORT("B"))
/* video hardware */
MCFG_SCREEN_SVG_ADD("screen", "svg")
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_SIZE(1677, 1080)
MCFG_SCREEN_VISIBLE_AREA(0, 1677-1, 0, 1080-1)
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_sm510_state, display_decay_tick, attotime::from_msec(1))
/* sound hardware */
SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END
/***************************************************************************
Nintendo Game & Watch: Boxing (model BX-301)
@ -6901,6 +6982,18 @@ ROM_START( gnw_smb )
ROM_END
ROM_START( gnw_climber )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "dr-106.program", 0x0000, 0x1000, CRC(2adcbd6d) SHA1(110dc08c65120ab2c76ee647e89aa2726e24ac1a) )
ROM_REGION( 0x100, "maincpu:melody", 0 )
ROM_LOAD( "dr-106.melody", 0x000, 0x100, CRC(c99d7998) SHA1(4f8cf35b13f8b7654e7186bfd67d197d9053e949) )
ROM_REGION( 542332, "svg", 0)
ROM_LOAD( "gnw_climber.svg", 0, 542332, CRC(d7e84c21) SHA1(a5b5b68c8cdb3a09966bfb91b281791bef311248) )
ROM_END
ROM_START( gnw_boxing )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "bx-301_744.program", 0x0000, 0x1000, CRC(0fdf0303) SHA1(0b791c9d4874e9534d0a9b7a8968ce02fe4bee96) )
@ -7417,6 +7510,7 @@ CONS( 1982, gnw_dkjr, 0, 0, gnw_dkjr, gnw_dkjr, gnw_dkjr_state
CONS( 1983, gnw_mariocm, 0, 0, gnw_mariocm, gnw_mariocm, gnw_mariocm_state, empty_init, "Nintendo", "Game & Watch: Mario's Cement Factory (new wide screen)", MACHINE_SUPPORTS_SAVE )
CONS( 1985, gnw_tfish, 0, 0, gnw_tfish, gnw_tfish, gnw_tfish_state, empty_init, "Nintendo", "Game & Watch: Tropical Fish", MACHINE_SUPPORTS_SAVE )
CONS( 1988, gnw_smb, 0, 0, gnw_smb, gnw_smb, gnw_smb_state, empty_init, "Nintendo", "Game & Watch: Super Mario Bros. (new wide screen)", MACHINE_SUPPORTS_SAVE )
CONS( 1988, gnw_climber, 0, 0, gnw_climber, gnw_climber, gnw_climber_state, empty_init, "Nintendo", "Game & Watch: Climber (new wide screen)", MACHINE_SUPPORTS_SAVE )
// micro vs.
CONS( 1984, gnw_boxing, 0, 0, gnw_boxing, gnw_boxing, gnw_boxing_state, empty_init, "Nintendo", "Game & Watch: Boxing", MACHINE_SUPPORTS_SAVE )

View File

@ -14969,6 +14969,7 @@ uspbball // US Games
@source:hh_sm510.cpp
exospace // Elektronika
gnw_boxing // Nintendo
gnw_climber // Nintendo
gnw_dkjr // Nintendo
gnw_dkong // Nintendo
gnw_dkong2 // Nintendo