summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2020-12-21 20:46:56 -0500
committer AJR <ajrhacker@users.noreply.github.com>2020-12-21 21:04:22 -0500
commit39aefe64d35b9a06f7fb229031dab82a65df8c87 (patch)
tree84cabdd950b278c878a4b5475f1765e7ab38aa28
parentbb18b80300cb711b9c8bf92ec562627caabd78e1 (diff)
bagmanmc, bagmanm2: Transplant to modern galaxian.cpp driver
-rw-r--r--src/mame/drivers/galaxian.cpp138
-rw-r--r--src/mame/drivers/galaxold.cpp129
-rw-r--r--src/mame/includes/galaxian.h4
-rw-r--r--src/mame/includes/galaxold.h6
-rw-r--r--src/mame/machine/galaxold.cpp5
-rw-r--r--src/mame/mame.lst4
-rw-r--r--src/mame/video/galaxold.cpp18
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;
-}