From c239f5a4d60cb022a49e5aa9de13c79f3397ed84 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Fri, 12 Jan 2018 00:46:25 +1100 Subject: [PATCH] (nw) fixed regression in mbrush and crushbl2. --- src/mame/drivers/pacman.cpp | 42 +++++++++++++++++++++++++++++++++++-- src/mame/includes/pacman.h | 2 ++ 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/mame/drivers/pacman.cpp b/src/mame/drivers/pacman.cpp index a12b651567c..2fc3cf84d96 100644 --- a/src/mame/drivers/pacman.cpp +++ b/src/mame/drivers/pacman.cpp @@ -655,6 +655,38 @@ READ8_MEMBER(pacman_state::maketrax_special_port3_r) } } +READ8_MEMBER(pacman_state::mbrush_prot_r) +{ + uint8_t data = ioport("DSW1")->read() & 0x3f; + + switch (offset) + { + case 0x00: + case 0x04: + case 0x07: + case 0x0e: + case 0x0f: + return 0xc0 | data; + case 0x40: + case 0x41: + case 0x47: + case 0x49: + case 0x4d: + case 0x5d: + return 0x00; + case 0x42: + case 0x43: + case 0x46: + case 0x4c: + case 0x50: + return 0x02; + case 0x7f: + return 0x10; + } + + return data; +} + READ8_MEMBER(pacman_state::korosuke_special_port2_r) { int data = ioport("DSW1")->read(); @@ -6867,6 +6899,12 @@ DRIVER_INIT_MEMBER(pacman_state,maketrax) save_item(NAME(m_maketrax_counter)); } +DRIVER_INIT_MEMBER(pacman_state,mbrush) +{ + /* set up protection handlers */ + m_maincpu->space(AS_PROGRAM).install_read_handler(0x5080, 0x50ff, read8_delegate(FUNC(pacman_state::mbrush_prot_r),this)); +} + void pacman_state::korosuke_rom_decode() { uint8_t *rom = memregion("maincpu")->base(); @@ -7351,10 +7389,10 @@ GAME( 1981, maketrxb, crush, maketrax, maketrax, pacman_state, maketrax, ROT GAME( 1981, korosuke, crush, korosuke, korosuke, pacman_state, korosuke, ROT90, "Alpha Denshi Co. / Kural Electric, Ltd.", "Korosuke Roller (Japan)", MACHINE_SUPPORTS_SAVE ) // ADK considers it a sequel? GAME( 1981, crushrlf, crush, pacman, maketrax, pacman_state, 0, ROT90, "bootleg", "Crush Roller (Famare SA PCB)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, crushbl, crush, pacman, maketrax, pacman_state, 0, ROT90, "bootleg", "Crush Roller (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, crushbl2, crush, maketrax, mbrush, pacman_state, maketrax, ROT90, "bootleg", "Crush Roller (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, crushbl2, crush, maketrax, mbrush, pacman_state, mbrush, ROT90, "bootleg", "Crush Roller (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, crushbl3, crush, maketrax, mbrush, pacman_state, maketrax, ROT90, "bootleg", "Crush Roller (bootleg set 3)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, crushs, crush, crushs, crushs, pacman_state, 0, ROT90, "bootleg (Sidam)", "Crush Roller (bootleg set 4)", MACHINE_SUPPORTS_SAVE ) // Sidam PCB, no Sidam text -GAME( 1981, mbrush, crush, maketrax, mbrush, pacman_state, maketrax, ROT90, "bootleg (Olympia)", "Magic Brush (bootleg of Crush Roller)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, mbrush, crush, maketrax, mbrush, pacman_state, mbrush, ROT90, "bootleg (Olympia)", "Magic Brush (bootleg of Crush Roller)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, paintrlr, crush, pacman, paintrlr, pacman_state, 0, ROT90, "bootleg", "Paint Roller (bootleg of Crush Roller)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, eyes, 0, pacman, eyes, pacman_state, eyes, ROT90, "Techstar (Rock-Ola license)", "Eyes (US set 1)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/includes/pacman.h b/src/mame/includes/pacman.h index e8c53755852..8f0ae2d9a8d 100644 --- a/src/mame/includes/pacman.h +++ b/src/mame/includes/pacman.h @@ -77,6 +77,7 @@ public: DECLARE_READ8_MEMBER(alibaba_mystery_1_r); DECLARE_READ8_MEMBER(alibaba_mystery_2_r); DECLARE_WRITE8_MEMBER(maketrax_protection_w); + DECLARE_READ8_MEMBER(mbrush_prot_r); DECLARE_READ8_MEMBER(maketrax_special_port2_r); DECLARE_READ8_MEMBER(maketrax_special_port3_r); DECLARE_READ8_MEMBER(korosuke_special_port2_r); @@ -142,6 +143,7 @@ public: DECLARE_DRIVER_INIT(porky); DECLARE_DRIVER_INIT(mspacman); DECLARE_DRIVER_INIT(mschamp); + DECLARE_DRIVER_INIT(mbrush); TILEMAP_MAPPER_MEMBER(pacman_scan_rows); TILE_GET_INFO_MEMBER(pacman_get_tile_info); TILE_GET_INFO_MEMBER(s2650_get_tile_info);