diff options
author | 2020-12-21 20:46:56 -0500 | |
---|---|---|
committer | 2020-12-21 21:04:22 -0500 | |
commit | 39aefe64d35b9a06f7fb229031dab82a65df8c87 (patch) | |
tree | 84cabdd950b278c878a4b5475f1765e7ab38aa28 | |
parent | bb18b80300cb711b9c8bf92ec562627caabd78e1 (diff) |
bagmanmc, bagmanm2: Transplant to modern galaxian.cpp driver
-rw-r--r-- | src/mame/drivers/galaxian.cpp | 138 | ||||
-rw-r--r-- | src/mame/drivers/galaxold.cpp | 129 | ||||
-rw-r--r-- | src/mame/includes/galaxian.h | 4 | ||||
-rw-r--r-- | src/mame/includes/galaxold.h | 6 | ||||
-rw-r--r-- | src/mame/machine/galaxold.cpp | 5 | ||||
-rw-r--r-- | src/mame/mame.lst | 4 | ||||
-rw-r--r-- | src/mame/video/galaxold.cpp | 18 |
7 files changed, 142 insertions, 162 deletions
diff --git a/src/mame/drivers/galaxian.cpp b/src/mame/drivers/galaxian.cpp index ae64b60f45b..5827fd22c39 100644 --- a/src/mame/drivers/galaxian.cpp +++ b/src/mame/drivers/galaxian.cpp @@ -671,6 +671,11 @@ s) 'porter' but on the other side, due to code at 0x0910, player 1 BUTTON1 acts as a START1 button while player 1 BUTTON2 acts as a START2 button. Any help is welcome ! +t) 'bagmanmc' + + - DSW bit 6 was previously used for "Bonus Lives" settings, but it has no effect + in this set because of 'NOP' instructions from 0x3501 to 0x3507. + TODO: ---- @@ -1769,14 +1774,15 @@ void galaxian_state::bongo_io_map(address_map &map) void galaxian_state::ckongg_map_base(address_map &map) { map(0x0000, 0x5fff).rom().region("maincpu", 0); - map(0x6000, 0x6bff).ram(); + map(0x6000, 0x67ff).ram(); map(0x9000, 0x93ff).ram().w(FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); - map(0x9800, 0x98ff).ram().w(FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0x9800, 0x9bff).ram().w(FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); } void galaxian_state::ckongg_map(address_map &map) { ckongg_map_base(map); + map(0x6800, 0x6bff).ram(); map(0xc000, 0xc000).portr("IN0"); map(0xc000, 0xc001).w(FUNC(galaxian_state::start_lamp_w)); map(0xc002, 0xc002).w(FUNC(galaxian_state::coin_lock_w)); @@ -1797,6 +1803,7 @@ void galaxian_state::ckongmc_map(address_map &map) { ckongg_map_base(map); mooncrst_map_discrete(map); + map(0x6800, 0x6bff).ram(); map(0xa000, 0xa000).portr("IN0"); map(0xa001, 0xa002).w(FUNC(galaxian_state::start_lamp_w)); // GUESS // coin lockout & coin counter not written @@ -1809,6 +1816,27 @@ void galaxian_state::ckongmc_map(address_map &map) map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); } +void galaxian_state::bagmanmc_map(address_map &map) +{ + ckongg_map_base(map); + mooncrst_map_discrete(map); + map(0xa000, 0xa000).portr("IN0"); + map(0xa003, 0xa003).w(FUNC(galaxian_state::coin_count_0_w)); + map(0xa800, 0xa800).portr("IN1"); + map(0xb000, 0xb000).portr("IN2").nopw(); + map(0xb001, 0xb001).w(FUNC(galaxian_state::irq_enable_w)); + map(0xb002, 0xb002).w(FUNC(galaxian_state::galaxian_gfxbank_w)); + map(0xb006, 0xb006).w(FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0xb007, 0xb007).w(FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); +} + +void galaxian_state::bagmanmc_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x08, 0x09).nopw(); // remnant of AY-3-8910 port-based input +} + void galaxian_state::fantastc_map(address_map &map) { @@ -2019,6 +2047,7 @@ void galaxian_state::scorpion_map(address_map &map) void galaxian_state::ckongs_map(address_map &map) { ckongg_map_base(map); + map(0x6800, 0x6bff).ram(); map(0x7000, 0x7003).rw(m_ppi8255[0], FUNC(i8255_device::read), FUNC(i8255_device::write)); map(0x7800, 0x7803).rw(m_ppi8255[1], FUNC(i8255_device::read), FUNC(i8255_device::write)); map(0xa801, 0xa801).w(FUNC(galaxian_state::irq_enable_w)); @@ -5903,6 +5932,54 @@ static INPUT_PORTS_START( ckongs ) INPUT_PORTS_END +/* verified from Z80 code */ +static INPUT_PORTS_START( bagmanmc ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + + PORT_START("IN1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START2 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* stored to 0x6163 bit 4 but not tested */ + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) + + PORT_START("IN2") + PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x03, "2" ) + PORT_DIPSETTING( 0x02, "3" ) + PORT_DIPSETTING( 0x01, "4" ) + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x00, "A 2C/1C B 1C/1C" ) + PORT_DIPSETTING( 0x04, "A 1C/1C B 1C/2C" ) + PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x18, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Medium ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Language ) ) + PORT_DIPSETTING( 0x20, DEF_STR( English ) ) + PORT_DIPSETTING( 0x00, DEF_STR( French ) ) + PORT_DIPUNUSED( 0x40, IP_ACTIVE_LOW ) /* see notes */ + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) /* check code at 0x2d78 and 0x2e6b - affect initials entry */ + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +INPUT_PORTS_END + + static INPUT_PORTS_START( sfx ) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) @@ -7059,6 +7136,13 @@ void galaxian_state::ckongmc(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::ckongmc_map); } +void galaxian_state::bagmanmc(machine_config &config) +{ + mooncrst(config); + m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::bagmanmc_map); + m_maincpu->set_addrmap(AS_IO, &galaxian_state::bagmanmc_io_map); +} + void galaxian_state::fantastc(machine_config &config) { @@ -8180,6 +8264,16 @@ void galaxian_state::init_devilfsg() } +void galaxian_state::init_bagmanmc() +{ + /* video extensions */ + common_init(&galaxian_state::galaxian_draw_bullet, &galaxian_state::galaxian_draw_background, &galaxian_state::gmgalax_extend_tile_info, &galaxian_state::gmgalax_extend_sprite_info); + + /* IRQ line is INT, not NMI */ + m_irq_line = 0; +} + + void galaxian_state::init_zigzag() { /* video extensions */ @@ -11562,6 +11656,42 @@ ROM_START( ckongis ) ROM_END +ROM_START( bagmanmc ) + ROM_REGION( 0x6000, "maincpu", 0 ) + ROM_LOAD( "b1.bin", 0x0000, 0x1000, CRC(b74c75ee) SHA1(620083c30136e24a37b79eb4647d99b997107693) ) + ROM_LOAD( "b2.bin", 0x1000, 0x1000, CRC(a7d99916) SHA1(13185e8ff6de92ad5135895e5a7fc8b956f009d3) ) + ROM_LOAD( "b3.bin", 0x2000, 0x1000, CRC(c78f5360) SHA1(7ce9e94c33f1b8e60cc12a3df5f9555f1ca6130f) ) + ROM_LOAD( "b4.bin", 0x3000, 0x1000, CRC(eebd3bd1) SHA1(03200383e87b0759f607888d9b290a0a777b597e) ) + ROM_LOAD( "b5.bin", 0x4000, 0x1000, CRC(0fe24b8c) SHA1(205a36fd346d49d2dda6911198295e202caae81f) ) + ROM_LOAD( "b6.bin", 0x5000, 0x1000, CRC(f50390e7) SHA1(b4ebe647458c26e52461750d63856aea4262f110) ) + + ROM_REGION( 0x4000, "gfx1", 0 ) // if the gfx roms from bagmanm2 are used, then it works fine + ROM_LOAD( "g1-l.bin", 0x0000, 0x0800, BAD_DUMP CRC(2ae6b5ab) SHA1(59bdebf75d28a247293440ec2ad83eaf30e3de00) ) + ROM_LOAD( "g2-u.bin", 0x1000, 0x1000, CRC(a2790089) SHA1(7eb8634f26f6af52fb79bf90ec90b4e258c7c79f) ) + ROM_LOAD( "g2-l.bin", 0x2000, 0x0800, BAD_DUMP CRC(98b37397) SHA1(29914435a10cebbbce04382c45e13a64a0cd18cb) ) + ROM_LOAD( "g1-u.bin", 0x3000, 0x1000, CRC(b63cfae4) SHA1(3e0cb3dbeec8ad790bc482176ca599721bac31ee) ) + ROM_COPY("gfx1",0x3800,0x2800,0x0800) + ROM_COPY("gfx1",0x1800,0x0800,0x0800) + + ROM_REGION( 0x0020, "proms", 0 ) // not dumped, but the standard moon cresta prom works + ROM_LOAD( "bagmanmc.clr", 0x0000, 0x0020, BAD_DUMP CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) ) +ROM_END + +ROM_START( bagmanm2 ) + ROM_REGION( 0x6000, "maincpu", 0 ) + ROM_LOAD( "bagmanm2.1", 0x0000, 0x2000, CRC(53769ebe) SHA1(af5bf808a009a1cf94d0b73d23f7595bf72ba295) ) + ROM_LOAD( "bagmanm2.2", 0x2000, 0x2000, CRC(9435bb87) SHA1(97fa2dee3cb715ecd418873bc7bb007c3ab72195) ) + ROM_LOAD( "bagmanm2.3", 0x4000, 0x2000, CRC(f37ba7f6) SHA1(612ae21fbb94afa28dee096094a66a453a398fb2) ) + + ROM_REGION( 0x4000, "gfx1", 0 ) + ROM_LOAD( "bagmanm2.9", 0x0000, 0x2000, CRC(f1e70d9e) SHA1(b804727bba582e2b938811ba32106241b0606f5c) ) + ROM_LOAD( "bagmanm2.7", 0x2000, 0x2000, CRC(777e48c4) SHA1(7fee7f999bbc6fea3faf8745bf89417626bcca91) ) + + ROM_REGION( 0x0020, "proms", 0 ) // not dumped, but the standard moon cresta prom works + ROM_LOAD( "bagmanmc.clr", 0x0000, 0x0020, BAD_DUMP CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) ) +ROM_END + + ROM_START( mooncmw ) ROM_REGION( 0x8000, "maincpu", 0 ) ROM_LOAD( "60.1x", 0x0000, 0x0800, CRC(322859e6) SHA1(292dccb66c38c8de837ec3ac10928d092494958e) ) @@ -14639,13 +14769,15 @@ GAME( 1980, moonal2b, moonal2, mooncrst, moonal2, galaxian_state, init_ GAME( 198?, thepitm, thepit, thepitm, thepitm, galaxian_state, init_mooncrsu, ROT90, "bootleg (KZH)", "The Pit (bootleg on Moon Quasar hardware)", MACHINE_SUPPORTS_SAVE ) // on an original MQ-2FJ pcb, even if the memory map appears closer to Moon Cresta GAME( 1983, bongo, 0, bongo, bongo, galaxian_state, init_kong, ROT90, "Jetsoft", "Bongo", MACHINE_SUPPORTS_SAVE ) -// Crazy Kong bootlegs on galaxian/mooncrst hardware +// Crazy Kong & Bagman bootlegs on galaxian/mooncrst hardware GAME( 1981, ckongg, ckong, ckongg, ckongg, galaxian_state, init_ckongs, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) GAME( 1981, ckongmc, ckong, ckongmc, ckongmc, galaxian_state, init_ckongs, ROT90, "bootleg", "Crazy Kong (bootleg on Moon Cresta hardware, set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // set was marked as 'King Kong on Galaxian' GAME( 1981, ckongmc2, ckong, ckongmc, ckongmc2, galaxian_state, init_ckongs, ROT90, "bootleg", "Crazy Kong (bootleg on Moon Cresta hardware, set 2)", MACHINE_NO_COCKTAIL | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1981, ckonggx, ckong, ckongg, ckonggx, galaxian_state, init_ckonggx, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware, encrypted, set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) GAME( 1982, ckongcv, ckong, ckongg, ckonggx, galaxian_state, init_ckonggx, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware, encrypted, set 2)", MACHINE_NOT_WORKING ) GAME( 1982, ckongis, ckong, ckongg, ckonggx, galaxian_state, init_ckonggx, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware, encrypted, set 3)", MACHINE_NOT_WORKING ) +GAME( 1982, bagmanmc, bagman, bagmanmc, bagmanmc, galaxian_state, init_bagmanmc, ROT90, "bootleg", "Bagman (bootleg on Moon Cresta hardware, set 1)", MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, bagmanm2, bagman, bagmanmc, bagmanmc, galaxian_state, init_bagmanmc, ROT90, "bootleg (GIB)", "Bagman (bootleg on Moon Cresta hardware, set 2)", MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // Other games on basic mooncrst hardware GAME( 1982, porter, dockman, porter, porter, galaxian_state, init_pisces, ROT90, "bootleg", "Port Man (bootleg on Moon Cresta hardware)", MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL ) diff --git a/src/mame/drivers/galaxold.cpp b/src/mame/drivers/galaxold.cpp index 16ea1509d07..d84b86fc0d6 100644 --- a/src/mame/drivers/galaxold.cpp +++ b/src/mame/drivers/galaxold.cpp @@ -41,12 +41,7 @@ Stephh's notes (based on the games Z80 code and some tests) for other games : (check code at 0x1043 which changes player and routines that handle players inputs : 0x1741 UP and DOWN - 0x1796 LEFT and RIGHT - 0x24e6 BUTTON1 - 0x2615 BUTTON2). -2) 'bagmanmc' - - - DSW bit 6 was previously used for "Bonus Lives" settings, but it has no effect - in this set because of 'NOP' instructions from 0x3501 to 0x3507. - -3) 'tazzmang' +2) 'tazzmang' - If you press COIN2 during the boot-up sequence, you enter sort of "test mode" where you can access to all inputs, but this doesn't give a clue about what @@ -413,29 +408,6 @@ void galaxold_state::_4in1_map(address_map &map) } -void galaxold_state::bagmanmc_map(address_map &map) -{ - map(0x0000, 0x5fff).rom(); - map(0x6000, 0x67ff).ram(); - map(0x9000, 0x93ff).ram().w(FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); - map(0x9400, 0x97ff).r(FUNC(galaxold_state::galaxold_videoram_r)); - map(0x9800, 0x983f).ram().w(FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); - map(0x9840, 0x985f).ram().share("spriteram"); - map(0x9860, 0x987f).ram().share("bulletsram"); - map(0x9880, 0x98ff).ram(); - map(0xa000, 0xa000).portr("IN0"); - map(0xa003, 0xa003).w(FUNC(galaxold_state::galaxold_coin_counter_w)); - map(0xa800, 0xa800).portr("IN1"); - map(0xa803, 0xa803).w("cust", FUNC(galaxian_sound_device::noise_enable_w)); - map(0xb000, 0xb000).portr("DSW"); - map(0xb001, 0xb001).w(FUNC(galaxold_state::galaxold_nmi_enable_w)); - map(0xb002, 0xb002).w(FUNC(galaxold_state::galaxold_gfxbank_w)); - map(0xb006, 0xb006).w(FUNC(galaxold_state::galaxold_flip_screen_x_w)); - map(0xb007, 0xb007).w(FUNC(galaxold_state::galaxold_flip_screen_y_w)); - map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("cust", FUNC(galaxian_sound_device::pitch_w)); -} - - void galaxold_state::dkongjrm_map(address_map &map) { map(0x0000, 0x5fff).rom(); @@ -1242,54 +1214,6 @@ static INPUT_PORTS_START( 4in1 ) INPUT_PORTS_END -/* verified from Z80 code */ -static INPUT_PORTS_START( bagmanmc ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) - - PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START2 ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* stored to 0x6163 bit 4 but not tested */ - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) - - PORT_START("DSW") - PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x03, "2" ) - PORT_DIPSETTING( 0x02, "3" ) - PORT_DIPSETTING( 0x01, "4" ) - PORT_DIPSETTING( 0x00, "5" ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Coinage ) ) - PORT_DIPSETTING( 0x00, "A 2C/1C B 1C/1C" ) - PORT_DIPSETTING( 0x04, "A 1C/1C B 1C/2C" ) - PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) ) - PORT_DIPSETTING( 0x18, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Medium ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Hard ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Language ) ) - PORT_DIPSETTING( 0x20, DEF_STR( English ) ) - PORT_DIPSETTING( 0x00, DEF_STR( French ) ) - PORT_DIPUNUSED( 0x40, IP_ACTIVE_LOW ) /* see notes */ - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) /* check code at 0x2d78 and 0x2e6b - affect initials entry */ - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) -INPUT_PORTS_END - - /* Coinage Dips are spread across two input ports */ template <int Mask> CUSTOM_INPUT_MEMBER(galaxold_state::dkongjrm_coinage_r) @@ -2001,20 +1925,6 @@ void galaxold_state::_4in1(machine_config &config) } -void galaxold_state::bagmanmc(machine_config &config) -{ - mooncrst(config); - - /* basic machine hardware */ - m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::bagmanmc_map); - - MCFG_MACHINE_RESET_OVERRIDE(galaxold_state, devilfsg ) - - /* video hardware */ - MCFG_VIDEO_START_OVERRIDE(galaxold_state, bagmanmc) -} - - void galaxold_state::dkongjrm(machine_config &config) { mooncrst(config); @@ -2415,41 +2325,6 @@ ROM_START( 4in1 ) ROM_LOAD( "6l.bpr", 0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) ) ROM_END -ROM_START( bagmanmc ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "b1.bin", 0x0000, 0x1000, CRC(b74c75ee) SHA1(620083c30136e24a37b79eb4647d99b997107693) ) - ROM_LOAD( "b2.bin", 0x1000, 0x1000, CRC(a7d99916) SHA1(13185e8ff6de92ad5135895e5a7fc8b956f009d3) ) - ROM_LOAD( "b3.bin", 0x2000, 0x1000, CRC(c78f5360) SHA1(7ce9e94c33f1b8e60cc12a3df5f9555f1ca6130f) ) - ROM_LOAD( "b4.bin", 0x3000, 0x1000, CRC(eebd3bd1) SHA1(03200383e87b0759f607888d9b290a0a777b597e) ) - ROM_LOAD( "b5.bin", 0x4000, 0x1000, CRC(0fe24b8c) SHA1(205a36fd346d49d2dda6911198295e202caae81f) ) - ROM_LOAD( "b6.bin", 0x5000, 0x1000, CRC(f50390e7) SHA1(b4ebe647458c26e52461750d63856aea4262f110) ) - - ROM_REGION( 0x4000, "gfx1", 0 ) // if the gfx roms from bagmanm2 are used, then it works fine - ROM_LOAD( "g1-l.bin", 0x0000, 0x0800, BAD_DUMP CRC(2ae6b5ab) SHA1(59bdebf75d28a247293440ec2ad83eaf30e3de00) ) - ROM_LOAD( "g2-u.bin", 0x1000, 0x1000, CRC(a2790089) SHA1(7eb8634f26f6af52fb79bf90ec90b4e258c7c79f) ) - ROM_LOAD( "g2-l.bin", 0x2000, 0x0800, BAD_DUMP CRC(98b37397) SHA1(29914435a10cebbbce04382c45e13a64a0cd18cb) ) - ROM_LOAD( "g1-u.bin", 0x3000, 0x1000, CRC(b63cfae4) SHA1(3e0cb3dbeec8ad790bc482176ca599721bac31ee) ) - ROM_COPY("gfx1",0x3800,0x2800,0x0800) - ROM_COPY("gfx1",0x1800,0x0800,0x0800) - - ROM_REGION( 0x0020, "proms", 0 ) // not dumped, but the standard moon cresta prom works - ROM_LOAD( "bagmanmc.clr", 0x0000, 0x0020, BAD_DUMP CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) ) -ROM_END - -ROM_START( bagmanm2 ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "bagmanm2.1", 0x0000, 0x2000, CRC(53769ebe) SHA1(af5bf808a009a1cf94d0b73d23f7595bf72ba295) ) - ROM_LOAD( "bagmanm2.2", 0x2000, 0x2000, CRC(9435bb87) SHA1(97fa2dee3cb715ecd418873bc7bb007c3ab72195) ) - ROM_LOAD( "bagmanm2.3", 0x4000, 0x2000, CRC(f37ba7f6) SHA1(612ae21fbb94afa28dee096094a66a453a398fb2) ) - - ROM_REGION( 0x4000, "gfx1", 0 ) - ROM_LOAD( "bagmanm2.9", 0x0000, 0x2000, CRC(f1e70d9e) SHA1(b804727bba582e2b938811ba32106241b0606f5c) ) - ROM_LOAD( "bagmanm2.7", 0x2000, 0x2000, CRC(777e48c4) SHA1(7fee7f999bbc6fea3faf8745bf89417626bcca91) ) - - ROM_REGION( 0x0020, "proms", 0 ) // not dumped, but the standard moon cresta prom works - ROM_LOAD( "bagmanmc.clr", 0x0000, 0x0020, BAD_DUMP CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) ) -ROM_END - ROM_START( dkongjrm ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "a1", 0x0000, 0x1000, CRC(299486e9) SHA1(cc4143ff8cb7a37c151bebab007a932381ae733b) ) @@ -2901,8 +2776,6 @@ GAME( 1981, scramb3, scramble, scramb3, scramb2, galaxold_state, empty_ini GAME( 1981, scrambler, scramble, scrambler, scrambler, galaxold_state, empty_init, ROT90, "bootleg (Reben S.A.)", "Scramble (Reben S.A. Spanish bootleg)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) GAME( 1981, scrambleo, scramble, scrambleo, scrambleo, galaxold_state, empty_init, ROT90, "bootleg (Okapi)", "Scramble (Okapi bootleg)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) GAME( 1981, 4in1, 0, _4in1, 4in1, galaxold_state, init_4in1, ROT90, "Armenia / Food and Fun", "4 Fun in 1", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, bagmanmc, bagman, bagmanmc, bagmanmc, galaxold_state, empty_init, ROT90, "bootleg", "Bagman (bootleg on Moon Cresta hardware, set 1)", MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, bagmanm2, bagman, bagmanmc, bagmanmc, galaxold_state, empty_init, ROT90, "bootleg (GIB)", "Bagman (bootleg on Moon Cresta hardware, set 2)", MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) GAME( 1982, dkongjrm, dkongjr, dkongjrm, dkongjrm, galaxold_state, empty_init, ROT90, "bootleg", "Donkey Kong Jr. (bootleg on Moon Cresta hardware, set 1)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) GAME( 1982, dkongjrmc, dkongjr, dkongjrmc, dkongjrmc, galaxold_state, empty_init, ROT90, "bootleg (Centromatic)", "Donkey Kong Jr. (bootleg on Moon Cresta hardware, set 2)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // sprites leave artifacts GAME( 1982, tazzmang, tazmania, tazzmang, tazzmang, galaxold_state, empty_init, ROT90, "bootleg", "Tazz-Mania (bootleg on Galaxian hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/includes/galaxian.h b/src/mame/includes/galaxian.h index 118a49bc81b..6e43cdfcf4d 100644 --- a/src/mame/includes/galaxian.h +++ b/src/mame/includes/galaxian.h @@ -193,6 +193,7 @@ public: void init_pacmanbl(); void init_tenspot(); void init_devilfsg(); + void init_bagmanmc(); void init_zigzag(); void init_jumpbug(); void init_checkman(); @@ -363,6 +364,7 @@ public: void scorpnmc(machine_config &config); void ckongg(machine_config &config); void ckongmc(machine_config &config); + void bagmanmc(machine_config &config); void fourplay(machine_config &config); void videight(machine_config &config); void astroamb(machine_config &config); @@ -378,6 +380,8 @@ protected: void anteatergg_map(address_map &map); void anteateruk_map(address_map &map); void astroamb_map(address_map &map); + void bagmanmc_map(address_map &map); + void bagmanmc_io_map(address_map &map); void bongo_map(address_map &map); void bongo_io_map(address_map &map); void checkmaj_sound_map(address_map &map); diff --git a/src/mame/includes/galaxold.h b/src/mame/includes/galaxold.h index 1b85bdd7c39..f9c70f8c9b2 100644 --- a/src/mame/includes/galaxold.h +++ b/src/mame/includes/galaxold.h @@ -173,7 +173,6 @@ public: TILE_GET_INFO_MEMBER(harem_get_tile_info); DECLARE_MACHINE_RESET(galaxold); - DECLARE_MACHINE_RESET(devilfsg); DECLARE_MACHINE_RESET(hunchbkg); void galaxold_palette(palette_device &palette); @@ -209,7 +208,6 @@ public: DECLARE_VIDEO_START(ad2083); DECLARE_VIDEO_START(dambustr); DECLARE_VIDEO_START(harem); - DECLARE_VIDEO_START(bagmanmc); uint32_t screen_update_galaxold(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_dambustr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -263,8 +261,6 @@ public: void start_stars_scroll_timer(); void draw_bullets_common(bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites(bitmap_ind16 &bitmap, uint8_t *spriteram, size_t spriteram_size); - void bagmanmc_modify_charcode(uint16_t *code, uint8_t x); - void bagmanmc_modify_spritecode(uint8_t *spriteram, int *code, int *flipx, int *flipy, int offs); void machine_reset_common(int line); void galaxian(machine_config &config); void galaxold_base(machine_config &config); @@ -279,7 +275,6 @@ public: void scrambler(machine_config &config); void spcwarp(machine_config &config); void dkongjrmc(machine_config &config); - void bagmanmc(machine_config &config); void bullsdrtg(machine_config &config); void drivfrcg(machine_config &config); void rockclim(machine_config &config); @@ -291,7 +286,6 @@ public: void galaxian_audio(machine_config &config); void mooncrst_audio(machine_config &config); void _4in1_map(address_map &map); - void bagmanmc_map(address_map &map); void bullsdrtg_data_map(address_map &map); void dkongjrm_map(address_map &map); void dkongjrmc_map(address_map &map); diff --git a/src/mame/machine/galaxold.cpp b/src/mame/machine/galaxold.cpp index b595b635b51..c7a57bd1754 100644 --- a/src/mame/machine/galaxold.cpp +++ b/src/mame/machine/galaxold.cpp @@ -74,11 +74,6 @@ MACHINE_RESET_MEMBER(galaxold_state,galaxold) machine_reset_common(INPUT_LINE_NMI); } -MACHINE_RESET_MEMBER(galaxold_state,devilfsg) -{ - machine_reset_common(0); -} - MACHINE_RESET_MEMBER(galaxold_state,hunchbkg) { machine_reset_common(0); diff --git a/src/mame/mame.lst b/src/mame/mame.lst index c8325e2b6ef..3568f530143 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -14197,6 +14197,8 @@ atlantis // (c) 1981 Comsoft atlantis2 // (c) 1981 Comsoft atlantisb // bootleg azurian // (c) 1982 Rait Electronics Ltd +bagmanm2 // (c) 1984 Valadon Automation / GIB +bagmanmc // bootleg batman2 // bootleg blkhole // TDS (Tokyo Denshi Sekkei) & MINTS bomber // @@ -14423,8 +14425,6 @@ zigzagb2 // (c) 1982 LAX (bootleg) @source:galaxold.cpp 4in1 // (c) 1981 Armenia / Food and Fun -bagmanm2 // (c) 1984 Valadon Automation / GIB -bagmanmc // bootleg bullsdrtg // 1985 Senko dkongjrm // bootleg dkongjrmc // bootleg (Centromatic) diff --git a/src/mame/video/galaxold.cpp b/src/mame/video/galaxold.cpp index b1f857df4da..9fa197b8e02 100644 --- a/src/mame/video/galaxold.cpp +++ b/src/mame/video/galaxold.cpp @@ -1721,21 +1721,3 @@ uint32_t galaxold_state::screen_update_dambustr(screen_device &screen, bitmap_in return 0; } - -void galaxold_state::bagmanmc_modify_charcode(uint16_t *code, uint8_t x) -{ - *code |= (m_gfxbank[0] << 9); -} - -void galaxold_state::bagmanmc_modify_spritecode(uint8_t *spriteram, int *code, int *flipx, int *flipy, int offs) -{ - *code |= (m_gfxbank[0] << 7) | 0x40; -} - -VIDEO_START_MEMBER(galaxold_state,bagmanmc) -{ - VIDEO_START_CALL_MEMBER(galaxold); - - m_modify_charcode = &galaxold_state::bagmanmc_modify_charcode; - m_modify_spritecode = &galaxold_state::bagmanmc_modify_spritecode; -} |