From f3b42285fc70ed509055b2ffe342b0861e714ba8 Mon Sep 17 00:00:00 2001 From: mdeslaur Date: Fri, 12 Aug 2022 11:09:13 -0400 Subject: [PATCH] pacman.cpp: Added Miss Packman Plus. (#10201) New working clones --------------------- Miss Packman Plus [Marc Deslauriers] --- plugins/hiscore/hiscore.dat | 1 + src/mame/mame.lst | 1 + src/mame/pacman/pacman.cpp | 85 +++++++++++++++++++++++++++---------- src/mame/pacman/pacman.h | 1 + 4 files changed, 66 insertions(+), 22 deletions(-) diff --git a/plugins/hiscore/hiscore.dat b/plugins/hiscore/hiscore.dat index 6729701eb3e..bd5936443bd 100644 --- a/plugins/hiscore/hiscore.dat +++ b/plugins/hiscore/hiscore.dat @@ -11168,6 +11168,7 @@ mspacmbmc: mspacmbn: mspacmnf: mspacpls: +mspackpls: msrumble: ; missing mssilad: ; missing newpuc2: diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 13920265dfa..02427d7515d 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -34169,6 +34169,7 @@ mspacmbmc // bootleg (Marti Colls / Falgas) mspacmbn // bootleg mspacmnf // hack mspacpls // hack +mspackpls // hack mspactwin // (c) 1992 SUSILU newpuc2 // hack newpuc2b // hack diff --git a/src/mame/pacman/pacman.cpp b/src/mame/pacman/pacman.cpp index 5d89c5fb71b..d25daabdb93 100644 --- a/src/mame/pacman/pacman.cpp +++ b/src/mame/pacman/pacman.cpp @@ -37,7 +37,6 @@ * mspactwin_map supposed ROM 0x2000 mirroring implementation doesn't make much sense, there's a bus conflict now Known to exist but dumps needed - * Ms Pac Plus * MTV Rock-N-Roll Trivia (Part 2), 1 bad rom. It's not a bad dump, the rom is bad. **************************************************************************** @@ -230,8 +229,8 @@ notes: - mspacpls: This romset is hacked. mspacatk.2 is more commonly known as the "cheat chip" and is used on bootleg ms pacs in place of boot2. It was created circa 1997 by Doc Cutlip and allows turbo speed and invulnerability. - mspacatk.5 and .6 contain the decoded maze data for ms pac plus. The actual dump is not available. - I believe the actual version contains more than just new maze data. + mspacatk.5 and .6 contain the decoded maze data for ms pac plus. The maze data was obtained from the mspackpls + romset. - pacgal: This is a common hack found on make trax and other boards. Mostly they use 4k eproms but Make Trax allows 4x2k for graphics. Boot5 and 6 are stacked on boot3 and 4, the refresh hack is used for addressing. Usually @@ -5965,6 +5964,40 @@ ROM_START( mspacpls ) ROM_LOAD( "82s126.3m", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) // Timing - not used ROM_END +// This is a bootleg Ms. Pac-Man auxiliary board that displays "Miss Packman Plus" at the title screen and +// contains alternate mazes. These are the mazes that were later hacked into the mspacpls romset. +// +// The auxiliary board contains a Z80, a PAL with "MTS" handwritten on it, and 3 2764 eproms labelled "E", +// "F", and "H". The eproms have data bits 3 and 4 swapped, and the PAL scrambles the addressing in 0x0800 +// chunks. +ROM_START( mspackpls ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "rom-h.bin", 0x0000, 0x0800, CRC(88c89824) SHA1(8fa49483864c79c50b4734896fc7bd3cc6531afb) ) + ROM_CONTINUE( 0x8800, 0x0800 ) + ROM_CONTINUE( 0x3000, 0x0800 ) + ROM_CONTINUE( 0x9800, 0x0800 ) + ROM_LOAD( "rom-f.bin", 0x2000, 0x0800, CRC(19620d5d) SHA1(3ab7dbdd6d72dd395b1d37b27e70f9a106e87971) ) + ROM_CONTINUE( 0x0800, 0x0800 ) + ROM_CONTINUE( 0x9000, 0x0800 ) + ROM_CONTINUE( 0x1800, 0x0800 ) + ROM_LOAD( "rom-e.bin", 0x8000, 0x0800, CRC(59cb7ea0) SHA1(bf6f84ea7c08be88ad14e13a6b45ae788804d850) ) + ROM_CONTINUE( 0x2800, 0x0800 ) + ROM_CONTINUE( 0x1000, 0x0800 ) + ROM_CONTINUE( 0x3800, 0x0800 ) + + ROM_REGION( 0x2000, "gfx1", 0 ) + ROM_LOAD( "5e", 0x0000, 0x1000, CRC(5c281d01) SHA1(5e8b472b615f12efca3fe792410c23619f067845) ) + ROM_LOAD( "5f", 0x1000, 0x1000, CRC(615af909) SHA1(fd6a1dde780b39aea76bf1c4befa5882573c2ef4) ) + + ROM_REGION( 0x0120, "proms", 0 ) + ROM_LOAD( "82s123.7f", 0x0000, 0x0020, CRC(2fc650bd) SHA1(8d0268dee78e47c712202b0ec4f1f51109b1f2a5) ) + ROM_LOAD( "82s126.4a", 0x0020, 0x0100, CRC(3eb3a8e4) SHA1(19097b5f60d1030f8b82d9f1d3a241f93e5c75d6) ) + + ROM_REGION( 0x0200, "namco", 0 ) // Sound PROMs + ROM_LOAD( "82s126.1m", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) ) + ROM_LOAD( "82s126.3m", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) // Timing - not used +ROM_END + ROM_START( mspacmanlai ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "1-cpu.6e", 0x0000, 0x1000, CRC(d16b31b7) SHA1(bc2247ec946b639dd1f00bfc603fa157d0baaa97) ) @@ -8168,6 +8201,13 @@ void mspactwin_state::init_mspactwin() } } +void pacman_state::init_mspackpls() +{ + uint8_t *rom = memregion("maincpu")->base(); + + for (int i = 0x0000; i < 0xa000; i++) + rom[i] = bitswap<8>(rom[i], 7, 6, 5, 3, 4, 2, 1, 0); +} /************************************* * @@ -8215,25 +8255,26 @@ GAME( 1980, pacmanug, puckman, pacman, pacman, pacman_state, empty_init, GAME( 1982, pacplus, 0, pacman, pacman, pacman_state, init_pacplus, ROT90, "Namco (Midway license)", "Pac-Man Plus", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mspacman, 0, mspacman, mspacman, pacman_state, init_mspacman, ROT90, "Midway / General Computer Corporation", "Ms. Pac-Man", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mspacmnf, mspacman, mspacman, mspacman, pacman_state, init_mspacman, ROT90, "hack", "Ms. Pac-Man (speedup hack)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mspacmat, mspacman, mspacman, mspacman, pacman_state, init_mspacman, ROT90, "hack", "Ms. Pac Attack", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, msheartb, mspacman, mspacman, mspacman, pacman_state, init_mspacman, ROT90, "hack (Two-Bit Score)", "Ms. Pac-Man Heart Burn", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, pacgal2, mspacman, mspacman, mspacman, pacman_state, init_mspacman, ROT90, "bootleg", "Pac-Gal (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mspacmancr, mspacman, mspacman, mspacman, pacman_state, init_mspacman, ROT90, "bootleg", "Ms. Pac-Man (bootleg on Crush Roller Hardware)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mspacmab, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg", "Ms. Pac-Man (bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mspacmab2, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg", "Ms. Pac-Man (bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mspacmab4, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg", "Ms. Pac-Man (bootleg, set 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mspacmbe, mspacman, woodpek, mspacman, pacman_state, init_mspacmbe, ROT90, "bootleg", "Ms. Pac-Man (bootleg, encrypted)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, mspacmbmc, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Marti Colls)", "Ms. Pac-Man (Marti Colls bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mspacmbn, mspacman, woodpek, mspacman, pacman_state, init_pengomc1, ROT90, "bootleg (Novatronic)", "Ms. Pac-Man (Novatronic bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, mspacmanlai,mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Leisure and Allied)", "Ms. Pac-Man (Leisure and Allied bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mspacii, mspacman, mspacii, mspacman, pacman_state, init_mspacii, ROT90, "bootleg (Orca)", "Ms. Pac-Man II (Orca bootleg set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mspacii2, mspacman, mspacii, mspacman, pacman_state, init_mspacii, ROT90, "bootleg (Orca)", "Ms. Pac-Man II (Orca bootleg set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, pacgal, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "hack", "Pac-Gal (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mspacpls, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "hack", "Ms. Pac-Man Plus", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, mschamp, mspacman, mschamp, mschamp, pacman_state, init_mschamp, ROT90, "hack", "Ms. Pacman Champion Edition / Zola-Puc Gal", MACHINE_SUPPORTS_SAVE ) // Rayglo version -GAME( 1995, mschamps, mspacman, mschamp, mschamp, pacman_state, init_mschamp, ROT90, "hack", "Ms. Pacman Champion Edition / Super Zola-Puc Gal", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mspacman, 0, mspacman, mspacman, pacman_state, init_mspacman, ROT90, "Midway / General Computer Corporation", "Ms. Pac-Man", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mspacmnf, mspacman, mspacman, mspacman, pacman_state, init_mspacman, ROT90, "hack", "Ms. Pac-Man (speedup hack)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mspacmat, mspacman, mspacman, mspacman, pacman_state, init_mspacman, ROT90, "hack", "Ms. Pac Attack", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, msheartb, mspacman, mspacman, mspacman, pacman_state, init_mspacman, ROT90, "hack (Two-Bit Score)", "Ms. Pac-Man Heart Burn", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, pacgal2, mspacman, mspacman, mspacman, pacman_state, init_mspacman, ROT90, "bootleg", "Pac-Gal (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mspacmancr, mspacman, mspacman, mspacman, pacman_state, init_mspacman, ROT90, "bootleg", "Ms. Pac-Man (bootleg on Crush Roller Hardware)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mspacmab, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg", "Ms. Pac-Man (bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mspacmab2, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg", "Ms. Pac-Man (bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mspacmab4, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg", "Ms. Pac-Man (bootleg, set 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mspacmbe, mspacman, woodpek, mspacman, pacman_state, init_mspacmbe, ROT90, "bootleg", "Ms. Pac-Man (bootleg, encrypted)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, mspacmbmc, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Marti Colls)", "Ms. Pac-Man (Marti Colls bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mspacmbn, mspacman, woodpek, mspacman, pacman_state, init_pengomc1, ROT90, "bootleg (Novatronic)", "Ms. Pac-Man (Novatronic bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, mspacmanlai,mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Leisure and Allied)", "Ms. Pac-Man (Leisure and Allied bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mspacii, mspacman, mspacii, mspacman, pacman_state, init_mspacii, ROT90, "bootleg (Orca)", "Ms. Pac-Man II (Orca bootleg set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mspacii2, mspacman, mspacii, mspacman, pacman_state, init_mspacii, ROT90, "bootleg (Orca)", "Ms. Pac-Man II (Orca bootleg set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, pacgal, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "hack", "Pac-Gal (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mspacpls, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "hack", "Ms. Pac-Man Plus", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, mschamp, mspacman, mschamp, mschamp, pacman_state, init_mschamp, ROT90, "hack", "Ms. Pacman Champion Edition / Zola-Puc Gal", MACHINE_SUPPORTS_SAVE ) // Rayglo version +GAME( 1995, mschamps, mspacman, mschamp, mschamp, pacman_state, init_mschamp, ROT90, "hack", "Ms. Pacman Champion Edition / Super Zola-Puc Gal", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mspackpls, mspacman, woodpek, mspacman, pacman_state, init_mspackpls, ROT90, "hack", "Miss Packman Plus", MACHINE_SUPPORTS_SAVE ) // These bootlegs have MADE IN GREECE clearly visible and etched into the PCBs. They were very common in Spain with several operators having their own versions. // Based on the PCBs and copyright dates shown they were produced late 80s / early 90s. Usually they run a version of Ms. Pacman, but were sometimes converted back to regular Pac-Man diff --git a/src/mame/pacman/pacman.h b/src/mame/pacman/pacman.h index 0b7878a374d..8fa463ae9fa 100644 --- a/src/mame/pacman/pacman.h +++ b/src/mame/pacman/pacman.h @@ -168,6 +168,7 @@ public: void init_maketrax(); void init_drivfrcp(); void init_mspacmbe(); + void init_mspackpls(); void init_ponpoko(); void init_eyes(); void init_woodpek();