bagmanmc, bagmanm2: Transplant to modern galaxian.cpp driver

This commit is contained in:
AJR 2020-12-21 20:46:56 -05:00
parent bb18b80300
commit 39aefe64d3
7 changed files with 142 additions and 162 deletions

View File

@ -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 )

View File

@ -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 )

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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)

View File

@ -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;
}