diff options
author | Robbbert <robbbert@users.noreply.github.com> | 2012-11-16 13:28:04 +0000 |
---|---|---|
committer | Robbbert <robbbert@users.noreply.github.com> | 2012-11-16 13:28:04 +0000 |
commit | 66ce4efe84aed9986e74fcfab7fac4db99e7fe80 (patch) | |
tree | 703128b558d9fd9b299a37248be91fbd1635ef73 | |
parent | 3dfb3b76ed67a3dae303a8416681ee2d9434b56b (diff) |
Improved bagmanmc. Add new working clone. [Robbbert]
bagmanmc : fixed loading of gfx roms, and the bank switching, but some roms are bad.
New Working Clone: Bagman on Moon Cresta hardware (1984 version) [from Misfitmame]
-rw-r--r-- | src/mame/drivers/galaxold.c | 57 | ||||
-rw-r--r-- | src/mame/includes/galaxold.h | 1 | ||||
-rw-r--r-- | src/mame/mame.lst | 1 | ||||
-rw-r--r-- | src/mame/video/galaxold.c | 19 |
4 files changed, 48 insertions, 30 deletions
diff --git a/src/mame/drivers/galaxold.c b/src/mame/drivers/galaxold.c index b30b557f4e2..1d71524f605 100644 --- a/src/mame/drivers/galaxold.c +++ b/src/mame/drivers/galaxold.c @@ -655,6 +655,7 @@ static ADDRESS_MAP_START( bagmanmc_map, AS_PROGRAM, 8, galaxold_state ) AM_RANGE(0xa803, 0xa803) AM_DEVWRITE_LEGACY(GAL_AUDIO, galaxian_noise_enable_w) AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w) + AM_RANGE(0xb002, 0xb002) AM_WRITE(galaxold_gfxbank_w) AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w) AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w) AM_RANGE(0xb800, 0xb800) AM_READ(watchdog_reset_r) AM_DEVWRITE_LEGACY(GAL_AUDIO, galaxian_pitch_w) @@ -1970,17 +1971,6 @@ static const gfx_layout pacmanbl_spritelayout = 32*8 }; -static const gfx_layout bagmanmc_charlayout = -{ - 8,8, - 512, - 2, - { 0, 512*8*8 }, - { 0, 1, 2, 3, 4, 5, 6, 7 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, - 8*8 -}; - static const gfx_layout _4in1_charlayout = { 8,8, @@ -2034,12 +2024,6 @@ static GFXDECODE_START( gmgalax ) GFXDECODE_ENTRY( "gfx1", 0x0000, galaxold_spritelayout, 0, 16 ) GFXDECODE_END -/* separate character and sprite ROMs */ -static GFXDECODE_START( bagmanmc ) - GFXDECODE_ENTRY( "gfx1", 0x0000, bagmanmc_charlayout, 0, 8 ) - GFXDECODE_ENTRY( "gfx1", 0x2000, pacmanbl_spritelayout, 0, 8 ) -GFXDECODE_END - static GFXDECODE_START( _4in1 ) GFXDECODE_ENTRY( "gfx1", 0x0000, _4in1_charlayout, 0, 8 ) GFXDECODE_ENTRY( "gfx1", 0x4000, _4in1_spritelayout, 0, 8 ) @@ -2182,9 +2166,7 @@ static MACHINE_CONFIG_DERIVED( bagmanmc, galaxian ) MCFG_MACHINE_RESET_OVERRIDE(galaxold_state, devilfsg ) /* video hardware */ - MCFG_GFXDECODE(bagmanmc) - - MCFG_VIDEO_START_OVERRIDE(galaxold_state,pisces) + MCFG_VIDEO_START_OVERRIDE(galaxold_state, bagmanmc) MACHINE_CONFIG_END @@ -2630,16 +2612,30 @@ ROM_START( bagmanmc ) ROM_LOAD( "b5.bin", 0x4000, 0x1000, CRC(0fe24b8c) SHA1(205a36fd346d49d2dda6911198295e202caae81f) ) ROM_LOAD( "b6.bin", 0x5000, 0x1000, CRC(f50390e7) SHA1(b4ebe647458c26e52461750d63856aea4262f110) ) - ROM_REGION( 0x3000, "gfx1", 0 ) - ROM_LOAD( "g1-u.bin", 0x0000, 0x0800, CRC(b63cfae4) SHA1(3e0cb3dbeec8ad790bc482176ca599721bac31ee) ) - ROM_CONTINUE( 0x2000, 0x0800 ) - ROM_LOAD( "g2-u.bin", 0x1000, 0x0800, CRC(a2790089) SHA1(7eb8634f26f6af52fb79bf90ec90b4e258c7c79f) ) - ROM_CONTINUE( 0x2800, 0x0800 ) - ROM_LOAD( "g1-l.bin", 0x0800, 0x0800, CRC(2ae6b5ab) SHA1(59bdebf75d28a247293440ec2ad83eaf30e3de00) ) - ROM_LOAD( "g2-l.bin", 0x1800, 0x0800, CRC(98b37397) SHA1(29914435a10cebbbce04382c45e13a64a0cd18cb) ) + 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 ) - ROM_LOAD( "bagmanmc.clr", 0x0000, 0x0020, NO_DUMP ) // missing + 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 ) @@ -3071,7 +3067,8 @@ GAME( 1981, ckongmc, ckong, ckongmc, ckongmc, driver_device, 0, ROT GAME( 1981, scramblb, scramble, scramblb, scramblb, driver_device, 0, ROT90, "bootleg", "Scramble (bootleg on Galaxian hardware)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) GAME( 1981, scramb2, scramble, scramb2, scramb2, driver_device, 0, ROT90, "bootleg", "Scramble (bootleg)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) GAME( 1981, 4in1, 0, 4in1, 4in1, galaxold_state, 4in1, ROT90, "Armenia / Food and Fun", "4 Fun in 1", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) -GAME( 1982, bagmanmc, bagman, bagmanmc, bagmanmc, driver_device, 0, ROT90, "bootleg", "Bagman (bootleg on Moon Cresta hardware)", GAME_WRONG_COLORS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) +GAME( 1982, bagmanmc, bagman, bagmanmc, bagmanmc, driver_device, 0, ROT90, "Valadon Automation", "Bagman (bootleg on Moon Cresta hardware)", GAME_IMPERFECT_COLORS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) +GAME( 1984, bagmanm2, bagman, bagmanmc, bagmanmc, driver_device, 0, ROT90, "Valadon Automation / GIB", "Bagman (Moon Cresta hardware)", GAME_IMPERFECT_COLORS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) GAME( 1982, dkongjrm, dkongjr, dkongjrm, dkongjrm, driver_device, 0, ROT90, "bootleg", "Donkey Kong Jr. (bootleg on Moon Cresta hardware)", GAME_WRONG_COLORS | GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) GAME( 1982, porter, dockman, mooncrst, porter, driver_device, 0, ROT90, "bootleg", "Port Man (bootleg on Moon Cresta hardware)", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL ) // missing GFX bank switch! GAME( 1982, tazzmang, tazmania, tazzmang, tazzmang, driver_device, 0, ROT90, "bootleg", "Tazz-Mania (bootleg on Galaxian hardware)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/galaxold.h b/src/mame/includes/galaxold.h index 5b2392575bc..95132b015b5 100644 --- a/src/mame/includes/galaxold.h +++ b/src/mame/includes/galaxold.h @@ -185,6 +185,7 @@ public: TIMER_DEVICE_CALLBACK_MEMBER(galaxold_interrupt_timer); DECLARE_WRITE_LINE_MEMBER(galaxold_7474_9m_2_q_callback); DECLARE_WRITE_LINE_MEMBER(galaxold_7474_9m_1_callback); + DECLARE_VIDEO_START(bagmanmc); }; /*----------- defined in video/galaxold.c -----------*/ diff --git a/src/mame/mame.lst b/src/mame/mame.lst index aaf2c837007..a4c961354fc 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -247,6 +247,7 @@ scorpionmc // bootleg frogg // bootleg 4in1 // (c) 1981 Armenia / Food and Fun bagmanmc // bootleg +bagmanm2 // (c) 1984 Valadon Automation / GIB dkongjrm // bootleg ozon1 // (c) 1983 Proma ladybugg // bootleg diff --git a/src/mame/video/galaxold.c b/src/mame/video/galaxold.c index 75d7e7eb6cc..ec89207af61 100644 --- a/src/mame/video/galaxold.c +++ b/src/mame/video/galaxold.c @@ -1860,3 +1860,22 @@ UINT32 galaxold_state::screen_update_dambustr(screen_device &screen, bitmap_ind1 return 0; } +static void bagmanmc_modify_charcode(running_machine &machine, UINT16 *code, UINT8 x) +{ + galaxold_state *state = machine.driver_data<galaxold_state>(); + *code |= (state->m_gfxbank[0] << 9); +} + +static void bagmanmc_modify_spritecode(running_machine &machine, UINT8 *spriteram, int *code, int *flipx, int *flipy, int offs) +{ + galaxold_state *state = machine.driver_data<galaxold_state>(); + *code |= (state->m_gfxbank[0] << 7) | 0x40; +} + +VIDEO_START_MEMBER(galaxold_state,bagmanmc) +{ + VIDEO_START_CALL_MEMBER(galaxold); + + m_modify_charcode = bagmanmc_modify_charcode; + m_modify_spritecode = bagmanmc_modify_spritecode; +} |