From cde686467854f85c1f6c640113a0869636b7a09d Mon Sep 17 00:00:00 2001 From: AJR Date: Tue, 15 Dec 2020 15:24:20 -0500 Subject: [PATCH] mspacii, mspacii2: Fix regression --- src/mame/drivers/pacman.cpp | 27 +++++++++++++++++++++++++-- src/mame/includes/pacman.h | 4 +++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/mame/drivers/pacman.cpp b/src/mame/drivers/pacman.cpp index 94bb74f1e7f..5b18c3be30f 100644 --- a/src/mame/drivers/pacman.cpp +++ b/src/mame/drivers/pacman.cpp @@ -520,6 +520,14 @@ void pacman_state::nmouse_interrupt_vector_w(uint8_t data) } +void pacman_state::mspacii_interrupt_vector_w(uint8_t data) +{ + if (data == 0xfb) data = 0xfe; + if (data == 0xfc) data = 0xfc; + m_interrupt_vector = data; +} + + /************************************* * @@ -1436,6 +1444,12 @@ void epospm_state::epos_portmap(address_map &map) map(0x00, 0xff).r(FUNC(epospm_state::epos_decryption_w)); /* Switch protection logic */ } +void pacman_state::mspacii_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).mirror(0xff).w(FUNC(pacman_state::mspacii_interrupt_vector_w)); +} + void pacman_state::mschamp_portmap(address_map &map) { writeport(map); @@ -3973,6 +3987,15 @@ void pacman_state::rocktrv2(machine_config &config) } +void pacman_state::mspacii(machine_config &config) +{ + woodpek(config); + + // Basic machine hardware + m_maincpu->set_addrmap(AS_IO, &pacman_state::mspacii_portmap); +} + + void pacman_state::mschamp(machine_config &config) { pacman(config); @@ -7873,8 +7896,8 @@ GAME( 1981, mspacmab4, mspacman, woodpek, mspacman, pacman_state, empty_init, 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( 1981, mspacii, mspacman, woodpek, mspacman, pacman_state, init_mspacii, ROT90, "bootleg (Orca)", "Ms. Pac-Man II (Orca bootleg set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, mspacii2, mspacman, woodpek, mspacman, pacman_state, init_mspacii, ROT90, "bootleg (Orca)", "Ms. Pac-Man II (Orca bootleg set 2)", 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, mspacpls, 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 diff --git a/src/mame/includes/pacman.h b/src/mame/includes/pacman.h index 4395d415b69..dbf4ec7ef5f 100644 --- a/src/mame/includes/pacman.h +++ b/src/mame/includes/pacman.h @@ -50,6 +50,7 @@ protected: void dremshpr_map(address_map &map); void dremshpr_portmap(address_map &map); void drivfrcp_portmap(address_map &map); + void mspacii_portmap(address_map &map); void mschamp_map(address_map &map); void mschamp_portmap(address_map &map); void mspacman_map(address_map &map); @@ -105,6 +106,7 @@ protected: void pacman_interrupt_vector_w(uint8_t data); void piranha_interrupt_vector_w(uint8_t data); void nmouse_interrupt_vector_w(uint8_t data); + void mspacii_interrupt_vector_w(uint8_t data); IRQ_CALLBACK_MEMBER(interrupt_vector_r); DECLARE_WRITE_LINE_MEMBER(coin_counter_w); DECLARE_WRITE_LINE_MEMBER(coin_lockout_global_w); @@ -199,7 +201,6 @@ protected: uint32_t screen_update_s2650games(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); DECLARE_WRITE_LINE_MEMBER(vblank_irq); INTERRUPT_GEN_MEMBER(periodic_irq); - DECLARE_WRITE_LINE_MEMBER(rocktrv2_vblank_irq); DECLARE_WRITE_LINE_MEMBER(vblank_nmi); DECLARE_WRITE_LINE_MEMBER(s2650_interrupt); @@ -215,6 +216,7 @@ public: void rocktrv2(machine_config &config); void mspacman(machine_config &config); void dremshpr(machine_config &config); + void mspacii(machine_config &config); void mschamp(machine_config &config); void nmouse(machine_config &config); void vanvan(machine_config &config);