New working machine added (#5365)

----------
Game & Watch: Bomb Sweeper [algestam, Ryan Holtz]
This commit is contained in:
algestam 2019-07-21 12:58:54 +02:00 committed by hap
parent b1fd3a60b6
commit 62bffe2d22
2 changed files with 103 additions and 3 deletions

View File

@ -24,8 +24,8 @@ TODO:
- Currently there is no accurate way to dump the SM511/SM512 melody ROM - Currently there is no accurate way to dump the SM511/SM512 melody ROM
electronically. For the ones that weren't decapped, they were read by electronically. For the ones that weren't decapped, they were read by
playing back all melody data and reconstructing it to ROM. Visual(decap) playing back all melody data and reconstructing it to ROM. Visual(decap)
verification is wanted for: gnw_bfight, gnw_bjack, gnw_climber, gnw_dkjrp, verification is wanted for: gnw_bfight, gnw_bjack, gnw_bsweep, gnw_climber,
gnw_gcliff, gnw_sbuster, gnw_zelda gnw_dkjrp, gnw_gcliff, gnw_sbuster, gnw_zelda
**************************************************************************** ****************************************************************************
@ -72,7 +72,7 @@ TC-58 ms SM510 Life Boat
PB-59* ms SM511? Pinball PB-59* ms SM511? Pinball
BJ-60 ms SM512 Black Jack BJ-60 ms SM512 Black Jack
MG-61 ms SM510 Squish MG-61 ms SM510 Squish
BD-62* ms SM512 Bomb Sweeper BD-62 ms SM512 Bomb Sweeper
JB-63 ms SM511 Safe Buster JB-63 ms SM511 Safe Buster
MV-64 ms SM512 Gold Cliff MV-64 ms SM512 Gold Cliff
ZL-65 ms SM512 Zelda ZL-65 ms SM512 Zelda
@ -3126,6 +3126,104 @@ ROM_END
/***************************************************************************
Nintendo Game & Watch: Bomb Sweeper (model BD-62)
* PCB label BD-62
* Sharp SM512 label BD-62 8727 A (no decap)
* vertical dual lcd screens with custom segments, 1-bit sound
***************************************************************************/
class gnw_bsweep_state : public hh_sm510_state
{
public:
gnw_bsweep_state(const machine_config &mconfig, device_type type, const char *tag) :
hh_sm510_state(mconfig, type, tag)
{ }
void gnw_bsweep(machine_config &config);
};
// config
static INPUT_PORTS_START( gnw_bsweep )
PORT_START("IN.0") // S1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_CB(input_changed)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_CB(input_changed)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_CB(input_changed)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_CB(input_changed)
PORT_START("IN.1") // S2
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_CB(input_changed) PORT_NAME("Time")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_CHANGED_CB(input_changed) PORT_NAME("Game B")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_CHANGED_CB(input_changed) PORT_NAME("Game A")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_CHANGED_CB(input_changed) PORT_NAME("Alarm")
PORT_START("ACL")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_CHANGED_CB(acl_button) PORT_NAME("ACL")
PORT_START("BA")
PORT_CONFNAME( 0x01, 0x01, "Infinite Lives (Cheat)") // factory test, unpopulated on PCB
PORT_CONFSETTING( 0x01, DEF_STR( Off ) )
PORT_CONFSETTING( 0x00, DEF_STR( On ) )
PORT_START("B")
PORT_CONFNAME( 0x01, 0x01, "Level skip (Cheat)") // " -- Controller keys skips level when activated
PORT_CONFSETTING( 0x01, DEF_STR( Off ) )
PORT_CONFSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
void gnw_bsweep_state::gnw_bsweep(machine_config &config)
{
/* basic machine hardware */
SM512(config, m_maincpu);
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_top(SCREEN(config, "screen_top", SCREEN_TYPE_SVG));
screen_top.set_refresh_hz(60);
screen_top.set_size(1920/2, 1291/2);
screen_top.set_visarea_full();
screen_device &screen_bottom(SCREEN(config, "screen_bottom", SCREEN_TYPE_SVG));
screen_bottom.set_refresh_hz(60);
screen_bottom.set_size(1920/2, 1239/2);
screen_bottom.set_visarea_full();
config.set_default_layout(layout_gnw_dualv);
/* 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_bsweep )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "bd-62.program", 0x0000, 0x1000, CRC(f3ac66ea) SHA1(3fbf444ade5bc96cf0073ca72f1d583cb0f48fc5) )
ROM_REGION( 0x100, "maincpu:melody", 0 )
ROM_LOAD( "bd-62.melody", 0x000, 0x100, BAD_DUMP CRC(addc0368) SHA1(fc488bdf1c2ea5ca84cc66762126bb5874659d8f) ) // decap needed for verification
ROM_REGION( 218009, "screen_top", 0)
ROM_LOAD( "gnw_bsweep_top.svg", 0, 218009, CRC(240d0b2a) SHA1(f1b321fe0446f71e563732f5b8cdb8a043f00361) )
ROM_REGION( 277261, "screen_bottom", 0)
ROM_LOAD( "gnw_bsweep_bottom.svg", 0, 277261, CRC(e7028dbf) SHA1(546446ce2545424fdd319ddfb5fb8977d5ff94db) )
ROM_END
/*************************************************************************** /***************************************************************************
Nintendo Game & Watch: Safe Buster (model JB-63) Nintendo Game & Watch: Safe Buster (model JB-63)
@ -9551,6 +9649,7 @@ CONS( 1983, gnw_rshower, 0, 0, gnw_rshower, gnw_rshower, gnw_rshower_st
CONS( 1983, gnw_lboat, 0, 0, gnw_lboat, gnw_lboat, gnw_lboat_state, empty_init, "Nintendo", "Game & Watch: Lifeboat", MACHINE_SUPPORTS_SAVE) CONS( 1983, gnw_lboat, 0, 0, gnw_lboat, gnw_lboat, gnw_lboat_state, empty_init, "Nintendo", "Game & Watch: Lifeboat", MACHINE_SUPPORTS_SAVE)
CONS( 1985, gnw_bjack, 0, 0, gnw_bjack, gnw_bjack, gnw_bjack_state, empty_init, "Nintendo", "Game & Watch: Black Jack", MACHINE_SUPPORTS_SAVE) CONS( 1985, gnw_bjack, 0, 0, gnw_bjack, gnw_bjack, gnw_bjack_state, empty_init, "Nintendo", "Game & Watch: Black Jack", MACHINE_SUPPORTS_SAVE)
CONS( 1986, gnw_squish, 0, 0, gnw_squish, gnw_squish, gnw_squish_state, empty_init, "Nintendo", "Game & Watch: Squish", MACHINE_SUPPORTS_SAVE ) CONS( 1986, gnw_squish, 0, 0, gnw_squish, gnw_squish, gnw_squish_state, empty_init, "Nintendo", "Game & Watch: Squish", MACHINE_SUPPORTS_SAVE )
CONS( 1987, gnw_bsweep, 0, 0, gnw_bsweep, gnw_bsweep, gnw_bsweep_state, empty_init, "Nintendo", "Game & Watch: Bomb Sweeper", MACHINE_SUPPORTS_SAVE )
CONS( 1988, gnw_sbuster, 0, 0, gnw_sbuster, gnw_sbuster, gnw_sbuster_state, empty_init, "Nintendo", "Game & Watch: Safe Buster", MACHINE_SUPPORTS_SAVE ) CONS( 1988, gnw_sbuster, 0, 0, gnw_sbuster, gnw_sbuster, gnw_sbuster_state, empty_init, "Nintendo", "Game & Watch: Safe Buster", MACHINE_SUPPORTS_SAVE )
CONS( 1988, gnw_gcliff, 0, 0, gnw_gcliff, gnw_gcliff, gnw_gcliff_state, empty_init, "Nintendo", "Game & Watch: Gold Cliff", MACHINE_SUPPORTS_SAVE ) CONS( 1988, gnw_gcliff, 0, 0, gnw_gcliff, gnw_gcliff, gnw_gcliff_state, empty_init, "Nintendo", "Game & Watch: Gold Cliff", MACHINE_SUPPORTS_SAVE )
CONS( 1989, gnw_zelda, 0, 0, gnw_zelda, gnw_zelda, gnw_zelda_state, empty_init, "Nintendo", "Game & Watch: Zelda", MACHINE_SUPPORTS_SAVE ) CONS( 1989, gnw_zelda, 0, 0, gnw_zelda, gnw_zelda, gnw_zelda_state, empty_init, "Nintendo", "Game & Watch: Zelda", MACHINE_SUPPORTS_SAVE )

View File

@ -15260,6 +15260,7 @@ gnw_ball // Nintendo
gnw_bfight // Nintendo gnw_bfight // Nintendo
gnw_bjack // Nintendo gnw_bjack // Nintendo
gnw_boxing // Nintendo gnw_boxing // Nintendo
gnw_bsweep // Nintendo
gnw_chef // Nintendo gnw_chef // Nintendo
gnw_climber // Nintendo gnw_climber // Nintendo
gnw_climbcs // Nintendo gnw_climbcs // Nintendo