diff --git a/src/mame/drivers/ninjakd2.c b/src/mame/drivers/ninjakd2.c index 4d3c6231b97..9a52698da08 100644 --- a/src/mame/drivers/ninjakd2.c +++ b/src/mame/drivers/ninjakd2.c @@ -1467,6 +1467,29 @@ DRIVER_INIT_MEMBER(ninjakd2_state,mnight) } +static void robokid_motion_error_kludge(UINT8 *ROM) +{ + // patch out rare "5268 MOTION ERROR" (MT 05024) + // It looks like it's due to a buggy random number generator, + // then it possibly happens on the real arcade cabinet too. + // I doubt it is protection related, but you can never be sure. + ROM[0] = 0xe6; + ROM[1] = 0x03; // and 3 + ROM[2] = 0x18; + ROM[3] = 0xf6; // jr $-8 +} + +DRIVER_INIT_MEMBER(ninjakd2_state,robokid) +{ + robokid_motion_error_kludge(memregion("maincpu")->base() + 0x5247); +} + +DRIVER_INIT_MEMBER(ninjakd2_state,robokidj) +{ + robokid_motion_error_kludge(memregion("maincpu")->base() + 0x5266); +} + + /************************************* * @@ -1481,8 +1504,8 @@ GAME( 1987, ninjakd2b, ninjakd2, ninjakd2, rdaction, ninjakd2_state, bootleg, R GAME( 1987, rdaction, ninjakd2, ninjakd2, rdaction, ninjakd2_state, ninjakd2, ROT0, "UPL (World Games license)", "Rad Action / NinjaKun Ashura no Shou", 0 ) GAME( 1987, mnight, 0, mnight, mnight, ninjakd2_state, mnight, ROT0, "UPL (Kawakus license)", "Mutant Night", 0 ) GAME( 1988, arkarea, 0, arkarea, arkarea, ninjakd2_state, mnight, ROT0, "UPL", "Ark Area", 0 ) -GAME( 1988, robokid, 0, robokid, robokid, driver_device, 0, ROT0, "UPL", "Atomic Robo-kid", 0 ) -GAME( 1988, robokidj, robokid, robokid, robokidj, driver_device, 0, ROT0, "UPL", "Atomic Robo-kid (Japan, set 1)", 0 ) -GAME( 1988, robokidj2, robokid, robokid, robokidj, driver_device, 0, ROT0, "UPL", "Atomic Robo-kid (Japan, set 2)", 0 ) +GAME( 1988, robokid, 0, robokid, robokid, ninjakd2_state, robokid, ROT0, "UPL", "Atomic Robo-kid", 0 ) +GAME( 1988, robokidj, robokid, robokid, robokidj, ninjakd2_state, robokidj, ROT0, "UPL", "Atomic Robo-kid (Japan, set 1)", 0 ) +GAME( 1988, robokidj2, robokid, robokid, robokidj, ninjakd2_state, robokidj, ROT0, "UPL", "Atomic Robo-kid (Japan, set 2)", 0 ) GAME( 1989, omegaf, 0, omegaf, omegaf, driver_device, 0, ROT270, "UPL", "Omega Fighter", 0 ) GAME( 1989, omegafs, omegaf, omegaf, omegaf, driver_device, 0, ROT270, "UPL", "Omega Fighter Special", 0 ) diff --git a/src/mame/includes/ninjakd2.h b/src/mame/includes/ninjakd2.h index e185bc08db7..5c8d698078b 100644 --- a/src/mame/includes/ninjakd2.h +++ b/src/mame/includes/ninjakd2.h @@ -59,6 +59,8 @@ public: DECLARE_DRIVER_INIT(mnight); DECLARE_DRIVER_INIT(ninjakd2); DECLARE_DRIVER_INIT(bootleg); + DECLARE_DRIVER_INIT(robokid); + DECLARE_DRIVER_INIT(robokidj); TILE_GET_INFO_MEMBER(get_fg_tile_info); TILE_GET_INFO_MEMBER(ninjakd2_get_bg_tile_info); TILE_GET_INFO_MEMBER(mnight_get_bg_tile_info);