mirror of
https://github.com/holub/mame
synced 2025-04-22 08:22:15 +03:00
pacman/pacman.cpp: Swapped G-B color lines in mspacmanbgf and mspacmanbco sets
to match the real hardware. Removed the IMPERFECT_COLORS flag.
This commit is contained in:
parent
3156ebbbe6
commit
94c15a0b45
@ -3753,6 +3753,18 @@ void pacman_state::woodpek(machine_config &config)
|
||||
}
|
||||
|
||||
|
||||
void pacman_state::woodpek_rbg(machine_config &config)
|
||||
{
|
||||
pacman(config);
|
||||
|
||||
// Basic machine hardware
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::woodpek_map);
|
||||
|
||||
// Video hardware
|
||||
m_palette->set_init(FUNC(pacman_state::pacman_rbg_palette));
|
||||
}
|
||||
|
||||
|
||||
void clubpacm_state::clubpacm(machine_config &config)
|
||||
{
|
||||
mspacman(config);
|
||||
@ -8400,18 +8412,18 @@ GAME( 1981, mspackpls, mspacman, woodpek, mspacman, pacman_state, init_mspack
|
||||
|
||||
// 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
|
||||
GAME( 198?, mspacmanbg, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg", "Ms. Pac-Man ('Made in Greece' bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1997, mspacmanbg2, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg", "Ms. Pac-Man ('Made in Greece' bootleg, set 2)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, mspacmanbgd, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Datamat)", "Miss Pukman ('Made in Greece' Datamat bootleg)", MACHINE_SUPPORTS_SAVE ) // shows 'Miss Pukman 1991/1992' but confirmed to be the bootleg distributed by Datamat
|
||||
GAME( 1988, mspacmanbgf, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Fermin)", "Mr Pac-Turbo ('Made in Greece' Fermin bootleg)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) // Argentine bootleg with turbo speed. B-G color lines are intended swapped, showing a Ms PacMan purple/pink.
|
||||
GAME( 1992, mspacmanblt, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Triunvi)", "Come-Cocos (Ms. Pac-Man) ('Made in Greece' Triunvi bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, mspacmanblt2, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Triunvi)", "Come-Cocos (Ms. Pac-Man) ('Made in Greece' Triunvi bootleg, set 2)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1991, mspacmanbcc, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Tecnausa)", "Come-Cocos (Ms. Pac-Man) ('Made in Greece' Tecnausa bootleg)", MACHINE_SUPPORTS_SAVE ) // ^ same PCB, also dated 1991, distributed by Tecnausa
|
||||
GAME( 1991, mspacmanbhe, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Herle SA)", "Come-Cocos (Ms. Pac-Man) ('Made in Greece' Herle SA bootleg)", MACHINE_SUPPORTS_SAVE ) // ^ same PCB
|
||||
GAME( 1992, mspacmanbco, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Cocamatic)", "Come-Cocos (Ms. Pac-Man) (Cocamatic bootleg)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) // this PCB have swapped Blue and Green color lines (Ms.Pac-Man sprite should be pink), no "MADE IN GREECE" text at PCB
|
||||
GAME( 1993, mspacmanbi, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Impeuropex)", "Ms. Pac-Man (Impeuropex bootleg)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, mspacmanbgc, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Enavi)", "Ms. Pac-Man ('Made in Greece' Enavi bootleg)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 198?, pacmansp, puckman, pacman, pacmansp, pacman_state, empty_init, ROT90, "bootleg (Video Game SA)", "Puck Man (Spanish, 'Made in Greece' bootleg)", MACHINE_SUPPORTS_SAVE ) // probably a further conversion of the mspacmanbg bootleg, still has some MS Pacman code + extra features
|
||||
GAME( 198?, mspacmanbg, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg", "Ms. Pac-Man ('Made in Greece' bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1997, mspacmanbg2, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg", "Ms. Pac-Man ('Made in Greece' bootleg, set 2)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, mspacmanbgd, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Datamat)", "Miss Pukman ('Made in Greece' Datamat bootleg)", MACHINE_SUPPORTS_SAVE ) // shows 'Miss Pukman 1991/1992' but confirmed to be the bootleg distributed by Datamat
|
||||
GAME( 1988, mspacmanbgf, mspacman, woodpek_rbg, mspacman, pacman_state, empty_init, ROT90, "bootleg (Fermin)", "Mr Pac-Turbo ('Made in Greece' Fermin bootleg)", MACHINE_SUPPORTS_SAVE ) // Argentine bootleg with turbo speed. B-G color lines are intended swapped, showing a Ms PacMan purple/pink.
|
||||
GAME( 1992, mspacmanblt, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Triunvi)", "Come-Cocos (Ms. Pac-Man) ('Made in Greece' Triunvi bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, mspacmanblt2, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Triunvi)", "Come-Cocos (Ms. Pac-Man) ('Made in Greece' Triunvi bootleg, set 2)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1991, mspacmanbcc, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Tecnausa)", "Come-Cocos (Ms. Pac-Man) ('Made in Greece' Tecnausa bootleg)", MACHINE_SUPPORTS_SAVE ) // ^ same PCB, also dated 1991, distributed by Tecnausa
|
||||
GAME( 1991, mspacmanbhe, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Herle SA)", "Come-Cocos (Ms. Pac-Man) ('Made in Greece' Herle SA bootleg)", MACHINE_SUPPORTS_SAVE ) // ^ same PCB
|
||||
GAME( 1992, mspacmanbco, mspacman, woodpek_rbg, mspacman, pacman_state, empty_init, ROT90, "bootleg (Cocamatic)", "Come-Cocos (Ms. Pac-Man) (Cocamatic bootleg)", MACHINE_SUPPORTS_SAVE ) // this PCB have swapped Blue and Green color lines (Ms.Pac-Man sprite should be pink), no "MADE IN GREECE" text at PCB
|
||||
GAME( 1993, mspacmanbi, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Impeuropex)", "Ms. Pac-Man (Impeuropex bootleg)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, mspacmanbgc, mspacman, woodpek, mspacman, pacman_state, empty_init, ROT90, "bootleg (Enavi)", "Ms. Pac-Man ('Made in Greece' Enavi bootleg)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 198?, pacmansp, puckman, pacman, pacmansp, pacman_state, empty_init, ROT90, "bootleg (Video Game SA)", "Puck Man (Spanish, 'Made in Greece' bootleg)", MACHINE_SUPPORTS_SAVE ) // probably a further conversion of the mspacmanbg bootleg, still has some MS Pacman code + extra features
|
||||
|
||||
GAME( 1992, mspactwin, 0, mspactwin, mspactwin, mspactwin_state, init_mspactwin, ROT90, "hack (Susilu)", "Ms Pac Man Twin (Argentina, set 1)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, mspactwina, mspactwin, mspactwin, mspactwin, mspactwin_state, init_mspactwin, ROT90, "hack (Susilu)", "Ms Pac Man Twin (Argentina, set 2)", MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -192,6 +192,7 @@ protected:
|
||||
TILE_GET_INFO_MEMBER(jrpacman_get_tile_info);
|
||||
DECLARE_VIDEO_START(pacman);
|
||||
void pacman_palette(palette_device &palette) const;
|
||||
void pacman_rbg_palette(palette_device &palette) const;
|
||||
DECLARE_VIDEO_START(birdiy);
|
||||
DECLARE_VIDEO_START(s2650games);
|
||||
DECLARE_MACHINE_RESET(mschamp);
|
||||
@ -224,6 +225,7 @@ public:
|
||||
void vanvan(machine_config &config);
|
||||
void s2650games(machine_config &config);
|
||||
void woodpek(machine_config &config);
|
||||
void woodpek_rbg(machine_config &config);
|
||||
void crushs(machine_config &config);
|
||||
void superabc(machine_config &config);
|
||||
void numcrash(machine_config &config);
|
||||
|
@ -114,6 +114,59 @@ void pacman_state::pacman_palette(palette_device &palette) const
|
||||
}
|
||||
}
|
||||
|
||||
void pacman_state::pacman_rbg_palette(palette_device &palette) const
|
||||
{
|
||||
const uint8_t *color_prom = memregion("proms")->base();
|
||||
static constexpr int resistances[3] = { 1000, 470, 220 };
|
||||
|
||||
// compute the color output resistor weights
|
||||
double rweights[3], gweights[3], bweights[2];
|
||||
compute_resistor_weights(0, 255, -1.0,
|
||||
3, &resistances[0], rweights, 0, 0,
|
||||
3, &resistances[0], gweights, 0, 0,
|
||||
2, &resistances[1], bweights, 0, 0);
|
||||
|
||||
// create a lookup table for the palette
|
||||
for (int i = 0; i < 32; i++)
|
||||
{
|
||||
int bit0, bit1, bit2;
|
||||
|
||||
// red component
|
||||
bit0 = BIT(color_prom[i], 0);
|
||||
bit1 = BIT(color_prom[i], 1);
|
||||
bit2 = BIT(color_prom[i], 2);
|
||||
int const r = combine_weights(rweights, bit0, bit1, bit2);
|
||||
|
||||
// green component
|
||||
bit0 = BIT(color_prom[i], 3);
|
||||
bit1 = BIT(color_prom[i], 4);
|
||||
bit2 = BIT(color_prom[i], 5);
|
||||
int const g = combine_weights(gweights, bit0, bit1, bit2);
|
||||
|
||||
// blue component
|
||||
bit0 = BIT(color_prom[i], 6);
|
||||
bit1 = BIT(color_prom[i], 7);
|
||||
int const b = combine_weights(bweights, bit0, bit1);
|
||||
|
||||
palette.set_indirect_color(i, rgb_t(r, b, g));
|
||||
}
|
||||
|
||||
// color_prom now points to the beginning of the lookup table
|
||||
color_prom += 32;
|
||||
|
||||
// allocate the colortable
|
||||
for (int i = 0; i < 64*4; i++)
|
||||
{
|
||||
uint8_t const ctabentry = color_prom[i] & 0x0f;
|
||||
|
||||
// first palette bank
|
||||
palette.set_pen_indirect(i, ctabentry);
|
||||
|
||||
// second palette bank
|
||||
palette.set_pen_indirect(i + 64*4, 0x10 | ctabentry);
|
||||
}
|
||||
}
|
||||
|
||||
TILEMAP_MAPPER_MEMBER(pacman_state::pacman_scan_rows)
|
||||
{
|
||||
int offs;
|
||||
|
Loading…
Reference in New Issue
Block a user