diff --git a/src/mame/drivers/gamecube.cpp b/src/mame/drivers/gamecube.cpp index bb8f6fb77a1..2e685d1e9cc 100644 --- a/src/mame/drivers/gamecube.cpp +++ b/src/mame/drivers/gamecube.cpp @@ -1,5 +1,5 @@ -// license: GPL-2.0+ -// copyright-holders: Dirk Best +// license: BSD-3-Clause +// copyright-holders: Dirk Best, Segher Boessenkool /*************************************************************************** Nintendo GameCube @@ -60,7 +60,7 @@ INPUT_PORTS_END //************************************************************************** // bootrom descrambler reversed by segher -// Copyright 2008 Segher Boessenkool +// Copyright 2008-2017 Segher Boessenkool void gamecube_state::decrypt(uint8_t *data, unsigned size) { uint8_t acc = 0; @@ -149,15 +149,25 @@ MACHINE_CONFIG_END // ROM DEFINITIONS //************************************************************************** -ROM_START( gcjp ) +/* There are a lot of bad dumps of the gamecube IPLs floating around. + The following IPL dumps are known bad, with RAM/MAC address garbage in the last 0x8000 bytes: + ROM_LOAD("ipl_bad_ntsc_v10.bin", 0x000000, 0x200000, CRC(6d740ae7) SHA1(015808f637a984acde6a06efa7546e278293c6ee)) + ROM_LOAD("ipl_bad2_ntsc_v10.bin", 0x000000, 0x200000, CRC(8bdabbd4) SHA1(f1b0ef434cd74fd8fe23698e2fc911d945b45bf1)) + ROM_LOAD("ipl_bad_pal_v10.bin", 0x000000, 0x200000, CRC(dd8cab7c) SHA1(6f305c37dc1fbe332883bb8153eee26d3d325629)) + The following rom is flat out unknown and unseen in the wild, except for its checksums: + ROM_LOAD("ipl_unknown.bin", 0x000000, 0x200000, CRC(d235e3f9) SHA1(96f69a21645de73a5ba61e57951ef303d55788c5)) +*/ + +ROM_START( gcjp ) // DOL-001(JPN) and DOL-101(JPN); NTSC gamecube board, outputs NTSC color, NTSC timings; JPN Region jumper set ROM_REGION(0x200000, "ipl", 0) ROM_DEFAULT_BIOS("v12") - ROM_SYSTEM_BIOS(0, "v10", "IPL 1.0") - ROMX_LOAD("jpn_v10.bin", 0x000000, 0x200000, CRC(6dac1f2a) SHA1(a1837968288253ed541f2b11440b68f5a9b33875), ROM_BIOS(1)) - ROM_SYSTEM_BIOS(1, "v11", "IPL 1.1") - ROMX_LOAD("jpn_v11.bin", 0x000000, 0x200000, CRC(d235e3f9) SHA1(96f69a21645de73a5ba61e57951ef303d55788c5), ROM_BIOS(2)) - ROM_SYSTEM_BIOS(2, "v12", "IPL 1.2") - ROMX_LOAD("jpn_v12.bin", 0x000000, 0x200000, CRC(8bdabbd4) SHA1(f1b0ef434cd74fd8fe23698e2fc911d945b45bf1), ROM_BIOS(3)) + ROM_SYSTEM_BIOS(0, "v10", "NTSC Revision 1.0") + ROMX_LOAD("ipl_ntsc_v10.bin", 0x000000, 0x200000, CRC(6dac1f2a) SHA1(a1837968288253ed541f2b11440b68f5a9b33875), ROM_BIOS(1)) + ROM_SYSTEM_BIOS(1, "v11", "NTSC Revision 1.1") + ROMX_LOAD("ipl_ntsc_v11.bin", 0x000000, 0x200000, CRC(d5e6feea) SHA1(239eacd86527ff9a75aeb7282da65797baeef010), ROM_BIOS(2)) + ROM_SYSTEM_BIOS(2, "v12", "NTSC Revision 1.2") + ROMX_LOAD("ipl_ntsc_v12.bin", 0x000000, 0x200000, CRC(86573808) SHA1(ef9194ab4804aa0aa8540d846caf291b28331165), ROM_BIOS(3)) // not verified from console yet but seems good + // There may be another IPL with the same "NTSC Revision 1.2" string as above but not the same code. If so, it is undumped. ROM_REGION(0x20000, "dvd", 0) ROM_LOAD("20010608.bin", 0x00000, 0x20000, CRC(c047465a) SHA1(27872c201e87b06a19bf85d36c796ef383f8d52d)) @@ -169,15 +179,16 @@ ROM_START( gcjp ) ROM_LOAD("dsp_rom.bin", 0x0000, 0x2000, CRC(47daaa65) SHA1(3c6cc6e04fdd0b2a392d7a6ed769455444846be7)) ROM_END -ROM_START( gcus ) +ROM_START( gcus ) // DOL-001(USA) and DOL-101(USA); NTSC gamecube board, outputs NTSC color, NTSC timings; USA region jumper set ROM_REGION(0x200000, "ipl", 0) ROM_DEFAULT_BIOS("v12") - ROM_SYSTEM_BIOS(0, "v10", "IPL 1.0") - ROMX_LOAD("usa_v10.bin", 0x000000, 0x200000, CRC(6d740ae7) SHA1(015808f637a984acde6a06efa7546e278293c6ee), ROM_BIOS(1)) - ROM_SYSTEM_BIOS(1, "v11", "IPL 1.1") - ROMX_LOAD("usa_v11.bin", 0x000000, 0x200000, CRC(d5e6feea) SHA1(239eacd86527ff9a75aeb7282da65797baeef010), ROM_BIOS(2)) - ROM_SYSTEM_BIOS(2, "v12", "IPL 1.2") - ROMX_LOAD("usa_v12.bin", 0x000000, 0x200000, CRC(86573808) SHA1(ef9194ab4804aa0aa8540d846caf291b28331165), ROM_BIOS(3)) + ROM_SYSTEM_BIOS(0, "v10", "NTSC Revision 1.0") + ROMX_LOAD("ipl_ntsc_v10.bin", 0x000000, 0x200000, CRC(6dac1f2a) SHA1(a1837968288253ed541f2b11440b68f5a9b33875), ROM_BIOS(1)) + ROM_SYSTEM_BIOS(1, "v11", "NTSC Revision 1.1") + ROMX_LOAD("ipl_ntsc_v11.bin", 0x000000, 0x200000, CRC(d5e6feea) SHA1(239eacd86527ff9a75aeb7282da65797baeef010), ROM_BIOS(2)) + ROM_SYSTEM_BIOS(2, "v12", "NTSC Revision 1.2") + ROMX_LOAD("ipl_ntsc_v12.bin", 0x000000, 0x200000, CRC(86573808) SHA1(ef9194ab4804aa0aa8540d846caf291b28331165), ROM_BIOS(3)) // not verified from console yet but seems good + // There may be another IPL with the same "NTSC Revision 1.2" string as above but not the same code. If so, it is undumped. ROM_REGION(0x20000, "dvd", 0) ROM_LOAD("20010608.bin", 0x00000, 0x20000, CRC(c047465a) SHA1(27872c201e87b06a19bf85d36c796ef383f8d52d)) @@ -189,15 +200,14 @@ ROM_START( gcus ) ROM_LOAD("dsp_rom.bin", 0x0000, 0x2000, CRC(47daaa65) SHA1(3c6cc6e04fdd0b2a392d7a6ed769455444846be7)) ROM_END -ROM_START( gceu ) +ROM_START( gceu ) // DOL-001(EUR) and DOL-101(EUR); PAL gamecube board, outputs PAL-E color, PAL-E timings; EUR region (not sure if there is a separate jumper for this?) ROM_REGION(0x200000, "ipl", 0) ROM_DEFAULT_BIOS("v12") - ROM_SYSTEM_BIOS(0, "v10", "IPL 1.0") - ROMX_LOAD("pal_v10.bin", 0x000000, 0x200000, CRC(4f319f43) SHA1(f27c63e5394e2fd1606f70df004c4fc2d6027700), ROM_BIOS(1)) - ROM_SYSTEM_BIOS(1, "v11", "IPL 1.1") - ROMX_LOAD("pal_v11.bin", 0x000000, 0x200000, CRC(dd8cab7c) SHA1(6f305c37dc1fbe332883bb8153eee26d3d325629), ROM_BIOS(2)) - ROM_SYSTEM_BIOS(2, "v12", "IPL 1.2") - ROMX_LOAD("pal_v12.bin", 0x000000, 0x200000, CRC(ad1b7f16) SHA1(80b8744ff5e43585392f55546bd03a673d11ef5f), ROM_BIOS(3)) + ROM_SYSTEM_BIOS(0, "v10", "PAL Revision 1.0") + ROMX_LOAD("ipl_pal_v10.bin", 0x000000, 0x200000, CRC(4f319f43) SHA1(f27c63e5394e2fd1606f70df004c4fc2d6027700), ROM_BIOS(1)) + // there is an undumped "PAL Revision 1.1" IPL + ROM_SYSTEM_BIOS(1, "v12", "PAL Revision 1.2") + ROMX_LOAD("ipl_pal_v12.bin", 0x000000, 0x200000, CRC(ad1b7f16) SHA1(80b8744ff5e43585392f55546bd03a673d11ef5f), ROM_BIOS(2)) // not verified from console yet but seems good ROM_REGION(0x20000, "dvd", 0) ROM_LOAD("20010608.bin", 0x00000, 0x20000, CRC(c047465a) SHA1(27872c201e87b06a19bf85d36c796ef383f8d52d)) @@ -209,9 +219,9 @@ ROM_START( gceu ) ROM_LOAD("dsp_rom.bin", 0x0000, 0x2000, CRC(47daaa65) SHA1(3c6cc6e04fdd0b2a392d7a6ed769455444846be7)) ROM_END -ROM_START( gcbr ) - ROM_REGION(0x200000, "ipl", 0) - ROM_LOAD("bra_v10.bin", 0x000000, 0x200000, CRC(667d0b64) SHA1(f3cd0c7c61cbcefa85e7de3aff4cfa50bc508714)) +ROM_START( gcbr ) // DOL-002(BRA); NTSC gamecube board, outputs video with PAL-M color, and either PAL-E (for the IPL) or PAL-M (for games) timings; region jumper is unknown but probably USA + ROM_REGION(0x200000, "ipl", 0) // "MPAL Revision 1.1" + ROM_LOAD("ipl_mpal_v11.bin", 0x000000, 0x200000, CRC(667d0b64) SHA1(f3cd0c7c61cbcefa85e7de3aff4cfa50bc508714)) ROM_REGION(0x20000, "dvd", 0) ROM_LOAD("20010608.bin", 0x00000, 0x20000, CRC(c047465a) SHA1(27872c201e87b06a19bf85d36c796ef383f8d52d)) @@ -230,6 +240,6 @@ ROM_END // YEAR NAME PARENT MACHINE INPUT CLASS INIT ROTATION COMPANY FULLNAME FLAGS GAME( 2001, gcjp, 0, gc, gc, gamecube_state, 0, ROT0, "Nintendo", "GameCube (Japan)", MACHINE_IS_SKELETON ) -GAME( 2001, gcus, gcjp, gc, gc, gamecube_state, 0, ROT0, "Nintendo", "GameCube (US)", MACHINE_IS_SKELETON ) -GAME( 2002, gceu, gcjp, gc, gc, gamecube_state, 0, ROT0, "Nintendo", "GameCube (EU)", MACHINE_IS_SKELETON ) +GAME( 2001, gcus, gcjp, gc, gc, gamecube_state, 0, ROT0, "Nintendo", "GameCube (USA)", MACHINE_IS_SKELETON ) +GAME( 2002, gceu, gcjp, gc, gc, gamecube_state, 0, ROT0, "Nintendo", "GameCube (EUR)", MACHINE_IS_SKELETON ) GAME( 2002, gcbr, gcjp, gc, gc, gamecube_state, 0, ROT0, "Nintendo", "GameCube (Brazil)", MACHINE_IS_SKELETON )