rework the Seibu Cup Soccer debug mode code so that it can be enabled for all sets rather than just the non-functional bootlegs, also documented how you get the Olympic Soccer '92 title screen and disable a debug display in the Cup Soccer Selection sets. The COP could be involved in providing a rom overlay for this area. (nw)

This commit is contained in:
David Haywood 2014-09-04 12:29:39 +00:00
parent 8ef61ebf4c
commit 860e923503
2 changed files with 54 additions and 14 deletions

View File

@ -2387,20 +2387,57 @@ ROM_START( cupsocsb3 )
ROM_END
/* Does the COP or something else on the PCB provide a rom overlay for the last part of ROM?
In Seibu Cup Soccer Selection the only way I've found to not display debug text is by changing this
area, and for Olympic Soccer '92 it appears to be the only way to get the Olympic Soccer '92 titles
to be used instead of the reagular Seibu Cup Soccer one (and AFAIK both dumps are confirmed to show
that on hardware, as are all early versions with the advertising boards of dubious legality)
You can also enable other debug menus by patching this area of ROM, but some initial tests appear to
show those menus are still inaccessible with a patched rom on real hardware, again indicating there
could be a rom overlay causing the patches to be ignored.
*/
// if this is 1 then P1 Button 3 during gameplay enters the 'Game Master' debug menu, with extensive
// debugging features.
#define CUPSOC_DEBUG_MODE 0
DRIVER_INIT_MEMBER(legionna_state, cupsoc_debug)
{
#if CUPSOC_DEBUG_MODE
UINT16 *ROM = (UINT16 *)memregion("maincpu")->base();
ROM[0xffffa/2] = 0x0000;
ROM[0xffff6/2] ^= 0x00ff;
#endif
}
DRIVER_INIT_MEMBER(legionna_state, olysoc92)
{
UINT16 *ROM = (UINT16 *)memregion("maincpu")->base();
ROM[0xffffe/2] ^= 0x0003; // show Olympic Soccer '92 title
DRIVER_INIT_CALL(cupsoc_debug);
}
DRIVER_INIT_MEMBER(legionna_state, cupsocs)
{
UINT16 *ROM = (UINT16 *)memregion("maincpu")->base();
ROM[0xffffa/2] = 0x00ff; // disable debug text (this is already 0x00ff in the bootleg sets for the same reason)
DRIVER_INIT_CALL(cupsoc_debug);
}
DRIVER_INIT_MEMBER(legionna_state,cupsoc)
{
#if CUPSOC_DEBUG_MODE
UINT16 *ROM = (UINT16 *)memregion("maincpu")->base();
/*Press p1 button 3 to enter into debug mode during gameplay*/
ROM[0xffffb/2] = 0x0000;
ROM[0xffff7/2] = 0x0000;
#endif
DRIVER_INIT_CALL(cupsoc_debug);
}
DRIVER_INIT_MEMBER(legionna_state,denjinmk)
{
/* problem with audio comms? */
@ -2428,13 +2465,13 @@ GAME( 1993, godzilla, 0, godzilla, godzilla, driver_device, 0, RO
GAME( 1993, grainbow, 0, grainbow, grainbow, driver_device, 0, ROT0, "Banpresto", "SD Gundam Sangokushi Rainbow Tairiku Senki", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 1993, denjinmk, 0, denjinmk, denjinmk, legionna_state,denjinmk, ROT0, "Winkysoft (Banpresto license)", "Denjin Makai", GAME_IMPERFECT_GRAPHICS )
GAME( 1992, cupsoc, 0, cupsoc, cupsoc, driver_device, 0, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer (set 1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 1992, cupsoca, cupsoc, cupsoc, cupsoc, driver_device, 0, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer (set 2)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 1992, cupsocb, cupsoc, cupsoc, cupsoc, driver_device, 0, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer (set 3)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 1992, cupsocs, cupsoc, cupsocs, cupsoc, driver_device, 0, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer :Selection: (set 1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 1992, cupsocs2, cupsoc, cupsocs, cupsoc, driver_device, 0, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer :Selection: (set 2)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 1992, cupsoc, 0, cupsoc, cupsoc, legionna_state, cupsoc, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer (set 1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 1992, cupsoca, cupsoc, cupsoc, cupsoc, legionna_state, cupsoc, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer (set 2)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 1992, cupsocb, cupsoc, cupsoc, cupsoc, legionna_state, cupsocs, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer (set 3)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 1992, cupsocs, cupsoc, cupsocs, cupsoc, legionna_state, cupsocs, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer :Selection: (set 1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 1992, cupsocs2, cupsoc, cupsocs, cupsoc, legionna_state, cupsocs, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer :Selection: (set 2)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 1992, cupsocsb, cupsoc, cupsocbl, cupsoc, legionna_state, cupsoc, ROT0, "bootleg", "Seibu Cup Soccer :Selection: (bootleg, set 1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 1992, cupsocsb2,cupsoc, cupsocbl, cupsoc, legionna_state, cupsoc, ROT0, "bootleg", "Seibu Cup Soccer :Selection: (bootleg, set 2)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 1992, cupsocsb3,cupsoc, cupsocbl, cupsoc, legionna_state, cupsoc, ROT0, "bootleg", "Seibu Cup Soccer :Selection: (bootleg, set 3)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 1992, olysoc92, cupsoc, cupsoc, cupsoc, driver_device, 0, ROT0, "Seibu Kaihatsu", "Olympic Soccer '92 (set 1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 1992, olysoc92a,cupsoc, cupsoc, cupsoc, driver_device, 0, ROT0, "Seibu Kaihatsu", "Olympic Soccer '92 (set 2)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 1992, olysoc92, cupsoc, cupsoc, cupsoc, legionna_state, olysoc92, ROT0, "Seibu Kaihatsu", "Olympic Soccer '92 (set 1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 1992, olysoc92a,cupsoc, cupsoc, cupsoc, legionna_state, olysoc92, ROT0, "Seibu Kaihatsu", "Olympic Soccer '92 (set 2)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )

View File

@ -42,7 +42,10 @@ public:
DECLARE_WRITE16_MEMBER(legionna_text_w);
DECLARE_WRITE8_MEMBER(okim_rombank_w);
DECLARE_DRIVER_INIT(legiongfx);
DECLARE_DRIVER_INIT(cupsoc_debug);
DECLARE_DRIVER_INIT(cupsoc);
DECLARE_DRIVER_INIT(cupsocs);
DECLARE_DRIVER_INIT(olysoc92);
DECLARE_DRIVER_INIT(denjinmk);
TILE_GET_INFO_MEMBER(get_back_tile_info);
TILE_GET_INFO_MEMBER(get_mid_tile_info);