diff --git a/src/core/bios.cpp b/src/core/bios.cpp index 0e7365939..699e8ba66 100644 --- a/src/core/bios.cpp +++ b/src/core/bios.cpp @@ -44,110 +44,110 @@ static constexpr ImageInfo::Hash MakeHashFromString(const char str[]) // PS2 is de-prioritized due to requiring a dynamic fast boot patch. // PS2 PAL is further de-prioritized due to additonal region checks. static constexpr const ImageInfo s_image_info_by_hash[] = { - {"SCPH-1000, DTL-H1000 (v1.0)", ConsoleRegion::NTSC_J, MakeHashFromString("239665b1a3dade1b5a52c06338011044"), ImageInfo::FastBootPatch::Type1, 50}, - {"SCPH-1001, 5003, DTL-H1201, H3001 (v2.2 12-04-95 A)", ConsoleRegion::NTSC_U, MakeHashFromString("924e392ed05558ffdb115408c263dccf"), ImageInfo::FastBootPatch::Type1, 10}, - {"SCPH-1002, DTL-H1002 (v2.0 05-10-95 E)", ConsoleRegion::PAL, MakeHashFromString("54847e693405ffeb0359c6287434cbef"), ImageInfo::FastBootPatch::Type1, 10}, - {"SCPH-1002, DTL-H1102 (v2.1 07-17-95 E)", ConsoleRegion::PAL, MakeHashFromString("417b34706319da7cf001e76e40136c23"), ImageInfo::FastBootPatch::Type1, 10}, - {"SCPH-1002, DTL-H1202, H3002 (v2.2 12-04-95 E)", ConsoleRegion::PAL, MakeHashFromString("e2110b8a2b97a8e0b857a45d32f7e187"), ImageInfo::FastBootPatch::Type1, 10}, - {"DTL-H1100 (v2.2 03-06-96 D)", ConsoleRegion::NTSC_J, MakeHashFromString("ca5cfc321f916756e3f0effbfaeba13b"), ImageInfo::FastBootPatch::Type1, 20}, - {"SCPH-3000, DTL-H1000H (v1.1 01-22-95)", ConsoleRegion::NTSC_J, MakeHashFromString("849515939161e62f6b866f6853006780"), ImageInfo::FastBootPatch::Type1, 10}, - {"SCPH-1001, DTL-H1001 (v2.0 05-07-95 A)", ConsoleRegion::NTSC_U, MakeHashFromString("dc2b9bf8da62ec93e868cfd29f0d067d"), ImageInfo::FastBootPatch::Type1, 10}, - {"SCPH-3500 (v2.1 07-17-95 J)", ConsoleRegion::NTSC_J, MakeHashFromString("cba733ceeff5aef5c32254f1d617fa62"), ImageInfo::FastBootPatch::Type1, 10}, - {"SCPH-1001, DTL-H1101 (v2.1 07-17-95 A)", ConsoleRegion::NTSC_U, MakeHashFromString("da27e8b6dab242d8f91a9b25d80c63b8"), ImageInfo::FastBootPatch::Type1, 10}, - {"SCPH-5000, DTL-H1200, H3000 (v2.2 12-04-95 J)", ConsoleRegion::NTSC_J, MakeHashFromString("57a06303dfa9cf9351222dfcbb4a29d9"), ImageInfo::FastBootPatch::Type1, 5}, - {"SCPH-5500 (v3.0 09-09-96 J)", ConsoleRegion::NTSC_J, MakeHashFromString("8dd7d5296a650fac7319bce665a6a53c"), ImageInfo::FastBootPatch::Type1, 5}, - {"SCPH-5501, 5503, 7003 (v3.0 11-18-96 A)", ConsoleRegion::NTSC_U, MakeHashFromString("490f666e1afb15b7362b406ed1cea246"), ImageInfo::FastBootPatch::Type1, 5}, - {"SCPH-5502, 5552 (v3.0 01-06-97 E)", ConsoleRegion::PAL, MakeHashFromString("32736f17079d0b2b7024407c39bd3050"), ImageInfo::FastBootPatch::Type1, 5}, - {"SCPH-7000, 7500, 9000 (v4.0 08-18-97 J)", ConsoleRegion::NTSC_J, MakeHashFromString("8e4c14f567745eff2f0408c8129f72a6"), ImageInfo::FastBootPatch::Type1, 10}, - {"SCPH-7000W (v4.1 11-14-97 A)", ConsoleRegion::NTSC_J, MakeHashFromString("b84be139db3ee6cbd075630aa20a6553"), ImageInfo::FastBootPatch::Type1, 10}, - {"SCPH-7001, 7501, 7503, 9001, 9003, 9903 (v4.1 12-16-97 A)", ConsoleRegion::NTSC_U, MakeHashFromString("1e68c231d0896b7eadcad1d7d8e76129"), ImageInfo::FastBootPatch::Type1, 10}, - {"SCPH-7002, 7502, 9002 (v4.1 12-16-97 E)", ConsoleRegion::PAL, MakeHashFromString("b9d9a0286c33dc6b7237bb13cd46fdee"), ImageInfo::FastBootPatch::Type1, 20}, - {"SCPH-100 (v4.3 03-11-00 J)", ConsoleRegion::NTSC_J, MakeHashFromString("8abc1b549a4a80954addc48ef02c4521"), ImageInfo::FastBootPatch::Type1, 10}, - {"SCPH-101 (v4.4 03-24-00 A)", ConsoleRegion::NTSC_U, MakeHashFromString("9a09ab7e49b422c007e6d54d7c49b965"), ImageInfo::FastBootPatch::Type1, 10}, - {"SCPH-101 (v4.5 05-25-00 A)", ConsoleRegion::NTSC_U, MakeHashFromString("6e3735ff4c7dc899ee98981385f6f3d0"), ImageInfo::FastBootPatch::Type1, 10}, - {"SCPH-102 (v4.4 03-24-00 E)", ConsoleRegion::PAL, MakeHashFromString("b10f5e0e3d9eb60e5159690680b1e774"), ImageInfo::FastBootPatch::Type1, 20}, - {"SCPH-102 (v4.5 05-25-00 E)", ConsoleRegion::PAL, MakeHashFromString("de93caec13d1a141a40a79f5c86168d6"), ImageInfo::FastBootPatch::Type1, 20}, - {"SCPH-1000R (v4.5 05-25-00 J)", ConsoleRegion::NTSC_J, MakeHashFromString("476d68a94ccec3b9c8303bbd1daf2810"), ImageInfo::FastBootPatch::Type1, 10}, - {"PS2, SCPH-18000 (v5.0 10-27-00 J)", ConsoleRegion::NTSC_J, MakeHashFromString("d8f485717a5237285e4d7c5f881b7f32"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-30003 (v5.0 09-02-00 E)", ConsoleRegion::PAL, MakeHashFromString("71f50ef4f4e17c163c78908e16244f7d"), ImageInfo::FastBootPatch::Type2, 150}, - {"PS2, DTL-H10000 (v5.0 01/17/00 T)", ConsoleRegion::Auto, MakeHashFromString("32f2e4d5ff5ee11072a6bc45530f5765"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-10000 (v5.0 01/17/00 T)", ConsoleRegion::Auto, MakeHashFromString("acf4730ceb38ac9d8c7d8e21f2614600"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, DTL-H10000 (v5.0 02/17/00 T)", ConsoleRegion::Auto, MakeHashFromString("acf9968c8f596d2b15f42272082513d1"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-10000/SCPH-15000 (v5.0 02/17/00 T)", ConsoleRegion::Auto, MakeHashFromString("b1459d7446c69e3e97e6ace3ae23dd1c"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, DTL-H10000 (v5.0 02/24/00 T)", ConsoleRegion::Auto, MakeHashFromString("d3f1853a16c2ec18f3cd1ae655213308"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, DTL-H30001 (v5.0 07/27/00 A)", ConsoleRegion::NTSC_U, MakeHashFromString("63e6fd9b3c72e0d7b920e80cf76645cd"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-30001 (v5.0 07/27/00 A)", ConsoleRegion::NTSC_U, MakeHashFromString("a20c97c02210f16678ca3010127caf36"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-30001 (v5.0 09/02/00 A)", ConsoleRegion::NTSC_U, MakeHashFromString("8db2fbbac7413bf3e7154c1e0715e565"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, DTL-H30002 (v5.0 09/02/00 E)", ConsoleRegion::PAL, MakeHashFromString("91c87cb2f2eb6ce529a2360f80ce2457"), ImageInfo::FastBootPatch::Type2, 150}, - {"PS2, DTL-H30102 (v5.0 09/02/00 E)", ConsoleRegion::PAL, MakeHashFromString("3016b3dd42148a67e2c048595ca4d7ce"), ImageInfo::FastBootPatch::Type2, 150}, - {"PS2, SCPH-30002/SCPH-30003/SCPH-30004 (v5.0 09/02/00 E)", ConsoleRegion::PAL, MakeHashFromString("b7fa11e87d51752a98b38e3e691cbf17"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-18000 (GH-003) (v5.0 10/27/00 J)", ConsoleRegion::NTSC_J, MakeHashFromString("f63bc530bd7ad7c026fcd6f7bd0d9525"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-18000 (GH-008) (v5.0 10/27/00 J)", ConsoleRegion::NTSC_J, MakeHashFromString("cee06bd68c333fc5768244eae77e4495"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, DTL-H30101 (v5.0 12/28/00 A)", ConsoleRegion::NTSC_U, MakeHashFromString("0bf988e9c7aaa4c051805b0fa6eb3387"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-30001/SCPH-35001 (v5.0 12/28/00 A)", ConsoleRegion::NTSC_U, MakeHashFromString("8accc3c49ac45f5ae2c5db0adc854633"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, DTL-H30102 (v5.0 12/28/00 E)", ConsoleRegion::PAL, MakeHashFromString("6f9a6feb749f0533aaae2cc45090b0ed"), ImageInfo::FastBootPatch::Type2, 150}, - {"PS2, SCPH-30002/SCPH-30003/SCPH-30004/SCHP-35002/SCPH-35003/SCPH-35004 (v5.0 12/28/00 E)", ConsoleRegion::PAL, MakeHashFromString("838544f12de9b0abc90811279ee223c8"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, DTL-H30000 (v5.0 01/18/01 J)", ConsoleRegion::NTSC_J, MakeHashFromString("bb6bbc850458fff08af30e969ffd0175"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-30000/SCPH-35000 (v5.0 01/18/01 J)", ConsoleRegion::NTSC_J, MakeHashFromString("815ac991d8bc3b364696bead3457de7d"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-30001R (v5.0 04/27/01 A)", ConsoleRegion::NTSC_U, MakeHashFromString("b107b5710042abe887c0f6175f6e94bb"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-30000 (v5.0 04/27/01 J)", ConsoleRegion::NTSC_J, MakeHashFromString("ab55cceea548303c22c72570cfd4dd71"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-30001R (v5.0 07/04/01 A)", ConsoleRegion::NTSC_U, MakeHashFromString("18bcaadb9ff74ed3add26cdf709fff2e"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-30002R/SCPH-30003R/SCPH-30004R (v5.0 07/04/01 E)", ConsoleRegion::PAL, MakeHashFromString("491209dd815ceee9de02dbbc408c06d6"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-30001R (v5.0 10/04/01 A)", ConsoleRegion::NTSC_U, MakeHashFromString("7200a03d51cacc4c14fcdfdbc4898431"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-30002R/SCPH-30003R/SCPH-30004R (v5.0 10/04/01 E)", ConsoleRegion::PAL, MakeHashFromString("8359638e857c8bc18c3c18ac17d9cc3c"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-30005R/SCPH-30006R/SCPH-30007R (v5.0 07/30/01 J)", ConsoleRegion::NTSC_J, MakeHashFromString("352d2ff9b3f68be7e6fa7e6dd8389346"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-39001 (v5.0 02/07/02 A)", ConsoleRegion::NTSC_U, MakeHashFromString("d5ce2c7d119f563ce04bc04dbc3a323e"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-39002/SCPH-39003/SCPH-39004 (v5.0 03/19/02 E)", ConsoleRegion::PAL, MakeHashFromString("0d2228e6fd4fb639c9c39d077a9ec10c"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-37000/SCPH-39000 (v5.0 04/26/02 J)", ConsoleRegion::NTSC_J, MakeHashFromString("72da56fccb8fcd77bba16d1b6f479914"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-39008 (v5.0 04/26/02 E)", ConsoleRegion::PAL, MakeHashFromString("5b1f47fbeb277c6be2fccdd6344ff2fd"), ImageInfo::FastBootPatch::Type2, 150}, - {"PS2, SCPH-39005/SCPH-39006/SCPH-39007 (v5.0 04/26/02 J)", ConsoleRegion::NTSC_J, MakeHashFromString("315a4003535dfda689752cb25f24785c"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, DTL-H50000 (v5.0 02/06/03 J)", ConsoleRegion::NTSC_J, MakeHashFromString("54ecde087258557e2ddb5c3ddb004028"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-50000/SCPH-55000 (v5.0 02/06/03 J)", ConsoleRegion::NTSC_J, MakeHashFromString("312ad4816c232a9606e56f946bc0678a"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, DTL-H50002 (v5.0 02/27/03 E)", ConsoleRegion::PAL, MakeHashFromString("666018ffec65c5c7e04796081295c6c7"), ImageInfo::FastBootPatch::Type2, 150}, - {"PS2, SCPH-50002/SCPH-50003/SCPH-50004 (v5.0 02/27/03 E)", ConsoleRegion::PAL, MakeHashFromString("6e69920fa6eef8522a1d688a11e41bc6"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, DTL-H50001 (v5.0 03/25/03 A)", ConsoleRegion::NTSC_U, MakeHashFromString("eb960de68f0c0f7f9fa083e9f79d0360"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-50001 (v5.0 03/25/03 A)", ConsoleRegion::NTSC_U, MakeHashFromString("8aa12ce243210128c5074552d3b86251"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, DTL-H50009 (v5.0 02/24/03 J)", ConsoleRegion::NTSC_J, MakeHashFromString("240d4c5ddd4b54069bdc4a3cd2faf99d"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, DESR-5000/DESR-5100/DESR-7000/DESR-7100 (v5.0 10/28/03 J)", ConsoleRegion::NTSC_J, MakeHashFromString("1c6cd089e6c83da618fbf2a081eb4888"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-55000 (v5.0 06/23/03 J)", ConsoleRegion::NTSC_J, MakeHashFromString("463d87789c555a4a7604e97d7db545d1"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, DTL-H50001 (v5.0 06/23/03 A)", ConsoleRegion::NTSC_U, MakeHashFromString("ab9d49ad40ae49f19856ad187777b1b3"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-50001/SCPH-50010 (v5.0 06/23/03 A)", ConsoleRegion::NTSC_U, MakeHashFromString("35461cecaa51712b300b2d6798825048"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-50002/SCPH-50003/SCPH-50004 (v5.0 06/23/03 E)", ConsoleRegion::PAL, MakeHashFromString("bd6415094e1ce9e05daabe85de807666"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-50006/SCPH-50007 (v5.0 06/23/03 J)", ConsoleRegion::NTSC_J, MakeHashFromString("2e70ad008d4ec8549aada8002fdf42fb"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-50005 (v5.0 06/23/03 J)", ConsoleRegion::NTSC_J, MakeHashFromString("50d5b97b57d8c9b6534adcb46c2027d4"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-50008 (v5.0 06/23/03 E)", ConsoleRegion::PAL, MakeHashFromString("b53d51edc7fc086685e31b811dc32aad"), ImageInfo::FastBootPatch::Type2, 150}, - {"PS2, SCPH-50009 (v5.0 06/23/03 J)", ConsoleRegion::NTSC_J, MakeHashFromString("1b6e631b536247756287b916f9396872"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-50000 (v5.0 08/22/03 J)", ConsoleRegion::NTSC_J, MakeHashFromString("00da1b177096cfd2532c8fa22b43e667"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-50004 (v5.0 08/22/03 E)", ConsoleRegion::PAL, MakeHashFromString("afde410bd026c16be605a1ae4bd651fd"), ImageInfo::FastBootPatch::Type2, 150}, - {"PS2, SCPH-50011 (v5.0 03/29/04 A)", ConsoleRegion::NTSC_U, MakeHashFromString("81f4336c1de607dd0865011c0447052e"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-70000 (v5.0 06/14/04 J)", ConsoleRegion::NTSC_J, MakeHashFromString("0eee5d1c779aa50e94edd168b4ebf42e"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-70001/SCPH-70011/SCPH-70012 (v5.0 06/14/04 A)", ConsoleRegion::NTSC_U, MakeHashFromString("d333558cc14561c1fdc334c75d5f37b7"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-70002/SCPH-70003/SCPH-70004/SCPH-70008 (v5.0 06/14/04 E)", ConsoleRegion::PAL, MakeHashFromString("dc752f160044f2ed5fc1f4964db2a095"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-70002 (v5.0 06/14/04 E)", ConsoleRegion::PAL, MakeHashFromString("7ebb4fc5eab6f79a27d76ac9aad392b2"), ImageInfo::FastBootPatch::Type2, 150}, - {"PS2, DTL-H70002 (v5.0 06/14/04 E)", ConsoleRegion::PAL, MakeHashFromString("63ead1d74893bf7f36880af81f68a82d"), ImageInfo::FastBootPatch::Type2, 150}, - {"PS2, SCPH-70005/SCPH-70006/SCPH-70007 (v5.0 06/14/04 J)", ConsoleRegion::NTSC_J, MakeHashFromString("3e3e030c0f600442fa05b94f87a1e238"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, DESR-5500/DESR-5700/DESR-7500/DESR-7700 (v5.0 09/17/04 J)", ConsoleRegion::NTSC_J, MakeHashFromString("1ad977bb539fc9448a08ab276a836bbc"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, DTL-H75000 (v5.0 06/20/05 J)", ConsoleRegion::NTSC_J, MakeHashFromString("bf0078ba5e19d57eae18047407f3b6e5"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-75000 (v5.0 06/20/05 J)", ConsoleRegion::NTSC_J, MakeHashFromString("eb4f40fcf4911ede39c1bbfe91e7a89a"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, DTL-H75000A (v5.0 06/20/05 A)", ConsoleRegion::NTSC_U, MakeHashFromString("9959ad7a8685cad66206e7752ca23f8b"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-75001/SCPH-75010 (v5.0 06/20/05 A)", ConsoleRegion::NTSC_U, MakeHashFromString("929a14baca1776b00869f983aa6e14d2"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-75002/SCPH-75003/SCPH-75004/SCPH-75008 (v5.0 06/20/05 E)", ConsoleRegion::PAL, MakeHashFromString("573f7d4a430c32b3cc0fd0c41e104bbd"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-75006 (v5.0 06/20/05 J)", ConsoleRegion::NTSC_J, MakeHashFromString("df63a604e8bff5b0599bd1a6c2721bd0"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-77000 (v5.0 02/10/06 J)", ConsoleRegion::NTSC_J, MakeHashFromString("5b1ba4bb914406fae75ab8e38901684d"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-77001/SCPH-77010 (v5.0 02/10/06 A)", ConsoleRegion::NTSC_U, MakeHashFromString("cb801b7920a7d536ba07b6534d2433ca"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-77002/SCPH-77003/SCPH-77004/SCPH-77008 (v5.0 02/10/06 E)", ConsoleRegion::PAL, MakeHashFromString("af60e6d1a939019d55e5b330d24b1c25"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-77006/SCPH-77007 (v5.0 02/10/06 J)", ConsoleRegion::NTSC_J, MakeHashFromString("549a66d0c698635ca9fa3ab012da7129"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, DTL-H90000 (v5.0 09/05/06 J)", ConsoleRegion::NTSC_J, MakeHashFromString("5e2014472c88f74f7547d8c2c60eca45"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-79000/SCPH-90000 (v5.0 09/05/06 J)", ConsoleRegion::NTSC_J, MakeHashFromString("5de9d0d730ff1e7ad122806335332524"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, DTL-H90000 (v5.0 09/05/06 A)", ConsoleRegion::NTSC_U, MakeHashFromString("21fe4cad111f7dc0f9af29477057f88d"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-79001/SCPH-79010/SCPH-90001 (v5.0 09/05/06 A)", ConsoleRegion::NTSC_U, MakeHashFromString("40c11c063b3b9409aa5e4058e984e30c"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-79002/SCPH-79003/SCPH-79004/SCPH-79008/SCPH-90002/SCPH-90003/SCPH-90004 (v5.0 09/05/06 E)", ConsoleRegion::PAL, MakeHashFromString("80bbb237a6af9c611df43b16b930b683"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-79006/SCPH-79007/SCPH-90006/SCPH-90007 (v5.0 09/05/06 J)", ConsoleRegion::NTSC_J, MakeHashFromString("c37bce95d32b2be480f87dd32704e664"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-90000 (v5.0 02/20/08 J)", ConsoleRegion::NTSC_J, MakeHashFromString("80ac46fa7e77b8ab4366e86948e54f83"), ImageInfo::FastBootPatch::Type2, 100}, - {"PS2, SCPH-90001/SCPH-90010 (v5.0 02/20/08 A)", ConsoleRegion::NTSC_U, MakeHashFromString("21038400dc633070a78ad53090c53017"), ImageInfo::FastBootPatch::Type2, 100 }, - {"PS2, SCPH-90002/SCPH-90003/SCPH-90004/SCPH-90008 (v5.0 02/20/08 E)", ConsoleRegion::PAL, MakeHashFromString("dc69f0643a3030aaa4797501b483d6c4"), ImageInfo::FastBootPatch::Type2, 100 }, - {"PS2, SCPH-90005/SCPH-90006/SCPH-90007 (v5.0 02/20/08 J)", ConsoleRegion::NTSC_J, MakeHashFromString("30d56e79d89fbddf10938fa67fe3f34e"), ImageInfo::FastBootPatch::Type2, 100 }, - {"PS2, KDL-22PX300 (v5.0 04/15/10 E)", ConsoleRegion::PAL, MakeHashFromString("93ea3bcee4252627919175ff1b16a1d9"), ImageInfo::FastBootPatch::Type2, 150}, + {"SCPH-1000, DTL-H1000 (v1.0)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type1, 50, MakeHashFromString("239665b1a3dade1b5a52c06338011044")}, + {"SCPH-1001, 5003, DTL-H1201, H3001 (v2.2 12-04-95 A)", ConsoleRegion::NTSC_U, false, ImageInfo::FastBootPatch::Type1, 10, MakeHashFromString("924e392ed05558ffdb115408c263dccf")}, + {"SCPH-1002, DTL-H1002 (v2.0 05-10-95 E)", ConsoleRegion::PAL, false, ImageInfo::FastBootPatch::Type1, 10, MakeHashFromString("54847e693405ffeb0359c6287434cbef")}, + {"SCPH-1002, DTL-H1102 (v2.1 07-17-95 E)", ConsoleRegion::PAL, false, ImageInfo::FastBootPatch::Type1, 10, MakeHashFromString("417b34706319da7cf001e76e40136c23")}, + {"SCPH-1002, DTL-H1202, H3002 (v2.2 12-04-95 E)", ConsoleRegion::PAL, false, ImageInfo::FastBootPatch::Type1, 10, MakeHashFromString("e2110b8a2b97a8e0b857a45d32f7e187")}, + {"DTL-H1100 (v2.2 03-06-96 D)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type1, 20, MakeHashFromString("ca5cfc321f916756e3f0effbfaeba13b")}, + {"SCPH-3000, DTL-H1000H (v1.1 01-22-95)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type1, 10, MakeHashFromString("849515939161e62f6b866f6853006780")}, + {"SCPH-1001, DTL-H1001 (v2.0 05-07-95 A)", ConsoleRegion::NTSC_U, false, ImageInfo::FastBootPatch::Type1, 10, MakeHashFromString("dc2b9bf8da62ec93e868cfd29f0d067d")}, + {"SCPH-3500 (v2.1 07-17-95 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type1, 10, MakeHashFromString("cba733ceeff5aef5c32254f1d617fa62")}, + {"SCPH-1001, DTL-H1101 (v2.1 07-17-95 A)", ConsoleRegion::NTSC_U, false, ImageInfo::FastBootPatch::Type1, 10, MakeHashFromString("da27e8b6dab242d8f91a9b25d80c63b8")}, + {"SCPH-5000, DTL-H1200, H3000 (v2.2 12-04-95 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type1, 5, MakeHashFromString("57a06303dfa9cf9351222dfcbb4a29d9")}, + {"SCPH-5500 (v3.0 09-09-96 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type1, 5, MakeHashFromString("8dd7d5296a650fac7319bce665a6a53c")}, + {"SCPH-5501, 5503, 7003 (v3.0 11-18-96 A)", ConsoleRegion::NTSC_U, false, ImageInfo::FastBootPatch::Type1, 5, MakeHashFromString("490f666e1afb15b7362b406ed1cea246")}, + {"SCPH-5502, 5552 (v3.0 01-06-97 E)", ConsoleRegion::PAL, false, ImageInfo::FastBootPatch::Type1, 5, MakeHashFromString("32736f17079d0b2b7024407c39bd3050")}, + {"SCPH-7000, 7500, 9000 (v4.0 08-18-97 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type1, 10, MakeHashFromString("8e4c14f567745eff2f0408c8129f72a6")}, + {"SCPH-7000W (v4.1 11-14-97 A)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type1, 10, MakeHashFromString("b84be139db3ee6cbd075630aa20a6553")}, + {"SCPH-7001, 7501, 7503, 9001, 9003, 9903 (v4.1 12-16-97 A)", ConsoleRegion::NTSC_U, false, ImageInfo::FastBootPatch::Type1, 10, MakeHashFromString("1e68c231d0896b7eadcad1d7d8e76129")}, + {"SCPH-7002, 7502, 9002 (v4.1 12-16-97 E)", ConsoleRegion::PAL, false, ImageInfo::FastBootPatch::Type1, 20, MakeHashFromString("b9d9a0286c33dc6b7237bb13cd46fdee")}, + {"SCPH-100 (v4.3 03-11-00 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type1, 10, MakeHashFromString("8abc1b549a4a80954addc48ef02c4521")}, + {"SCPH-101 (v4.4 03-24-00 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type1, 10, MakeHashFromString("9a09ab7e49b422c007e6d54d7c49b965")}, + {"SCPH-101 (v4.5 05-25-00 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type1, 10, MakeHashFromString("6e3735ff4c7dc899ee98981385f6f3d0")}, + {"SCPH-102 (v4.4 03-24-00 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type1, 20, MakeHashFromString("b10f5e0e3d9eb60e5159690680b1e774")}, + {"SCPH-102 (v4.5 05-25-00 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type1, 20, MakeHashFromString("de93caec13d1a141a40a79f5c86168d6")}, + {"SCPH-1000R (v4.5 05-25-00 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type1, 10, MakeHashFromString("476d68a94ccec3b9c8303bbd1daf2810")}, + {"PS2, SCPH-18000 (v5.0 10-27-00 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("d8f485717a5237285e4d7c5f881b7f32")}, + {"PS2, SCPH-30003 (v5.0 09-02-00 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 150, MakeHashFromString("71f50ef4f4e17c163c78908e16244f7d")}, + {"PS2, DTL-H10000 (v5.0 01/17/00 T)", ConsoleRegion::Auto, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("32f2e4d5ff5ee11072a6bc45530f5765")}, + {"PS2, SCPH-10000 (v5.0 01/17/00 T)", ConsoleRegion::Auto, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("acf4730ceb38ac9d8c7d8e21f2614600")}, + {"PS2, DTL-H10000 (v5.0 02/17/00 T)", ConsoleRegion::Auto, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("acf9968c8f596d2b15f42272082513d1")}, + {"PS2, SCPH-10000/SCPH-15000 (v5.0 02/17/00 T)", ConsoleRegion::Auto, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("b1459d7446c69e3e97e6ace3ae23dd1c")}, + {"PS2, DTL-H10000 (v5.0 02/24/00 T)", ConsoleRegion::Auto, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("d3f1853a16c2ec18f3cd1ae655213308")}, + {"PS2, DTL-H30001 (v5.0 07/27/00 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("63e6fd9b3c72e0d7b920e80cf76645cd")}, + {"PS2, SCPH-30001 (v5.0 07/27/00 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("a20c97c02210f16678ca3010127caf36")}, + {"PS2, SCPH-30001 (v5.0 09/02/00 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("8db2fbbac7413bf3e7154c1e0715e565")}, + {"PS2, DTL-H30002 (v5.0 09/02/00 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 150, MakeHashFromString("91c87cb2f2eb6ce529a2360f80ce2457")}, + {"PS2, DTL-H30102 (v5.0 09/02/00 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 150, MakeHashFromString("3016b3dd42148a67e2c048595ca4d7ce")}, + {"PS2, SCPH-30002/SCPH-30003/SCPH-30004 (v5.0 09/02/00 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("b7fa11e87d51752a98b38e3e691cbf17")}, + {"PS2, SCPH-18000 (GH-003) (v5.0 10/27/00 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("f63bc530bd7ad7c026fcd6f7bd0d9525")}, + {"PS2, SCPH-18000 (GH-008) (v5.0 10/27/00 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("cee06bd68c333fc5768244eae77e4495")}, + {"PS2, DTL-H30101 (v5.0 12/28/00 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("0bf988e9c7aaa4c051805b0fa6eb3387")}, + {"PS2, SCPH-30001/SCPH-35001 (v5.0 12/28/00 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("8accc3c49ac45f5ae2c5db0adc854633")}, + {"PS2, DTL-H30102 (v5.0 12/28/00 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 150, MakeHashFromString("6f9a6feb749f0533aaae2cc45090b0ed")}, + {"PS2, SCPH-30002/SCPH-30003/SCPH-30004/SCHP-35002/SCPH-35003/SCPH-35004 (v5.0 12/28/00 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("838544f12de9b0abc90811279ee223c8")}, + {"PS2, DTL-H30000 (v5.0 01/18/01 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("bb6bbc850458fff08af30e969ffd0175")}, + {"PS2, SCPH-30000/SCPH-35000 (v5.0 01/18/01 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("815ac991d8bc3b364696bead3457de7d")}, + {"PS2, SCPH-30001R (v5.0 04/27/01 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("b107b5710042abe887c0f6175f6e94bb")}, + {"PS2, SCPH-30000 (v5.0 04/27/01 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("ab55cceea548303c22c72570cfd4dd71")}, + {"PS2, SCPH-30001R (v5.0 07/04/01 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("18bcaadb9ff74ed3add26cdf709fff2e")}, + {"PS2, SCPH-30002R/SCPH-30003R/SCPH-30004R (v5.0 07/04/01 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("491209dd815ceee9de02dbbc408c06d6")}, + {"PS2, SCPH-30001R (v5.0 10/04/01 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("7200a03d51cacc4c14fcdfdbc4898431")}, + {"PS2, SCPH-30002R/SCPH-30003R/SCPH-30004R (v5.0 10/04/01 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("8359638e857c8bc18c3c18ac17d9cc3c")}, + {"PS2, SCPH-30005R/SCPH-30006R/SCPH-30007R (v5.0 07/30/01 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("352d2ff9b3f68be7e6fa7e6dd8389346")}, + {"PS2, SCPH-39001 (v5.0 02/07/02 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("d5ce2c7d119f563ce04bc04dbc3a323e")}, + {"PS2, SCPH-39002/SCPH-39003/SCPH-39004 (v5.0 03/19/02 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("0d2228e6fd4fb639c9c39d077a9ec10c")}, + {"PS2, SCPH-37000/SCPH-39000 (v5.0 04/26/02 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("72da56fccb8fcd77bba16d1b6f479914")}, + {"PS2, SCPH-39008 (v5.0 04/26/02 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 150, MakeHashFromString("5b1f47fbeb277c6be2fccdd6344ff2fd")}, + {"PS2, SCPH-39005/SCPH-39006/SCPH-39007 (v5.0 04/26/02 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("315a4003535dfda689752cb25f24785c")}, + {"PS2, DTL-H50000 (v5.0 02/06/03 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("54ecde087258557e2ddb5c3ddb004028")}, + {"PS2, SCPH-50000/SCPH-55000 (v5.0 02/06/03 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("312ad4816c232a9606e56f946bc0678a")}, + {"PS2, DTL-H50002 (v5.0 02/27/03 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 150, MakeHashFromString("666018ffec65c5c7e04796081295c6c7")}, + {"PS2, SCPH-50002/SCPH-50003/SCPH-50004 (v5.0 02/27/03 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("6e69920fa6eef8522a1d688a11e41bc6")}, + {"PS2, DTL-H50001 (v5.0 03/25/03 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("eb960de68f0c0f7f9fa083e9f79d0360")}, + {"PS2, SCPH-50001 (v5.0 03/25/03 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("8aa12ce243210128c5074552d3b86251")}, + {"PS2, DTL-H50009 (v5.0 02/24/03 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("240d4c5ddd4b54069bdc4a3cd2faf99d")}, + {"PS2, DESR-5000/DESR-5100/DESR-7000/DESR-7100 (v5.0 10/28/03 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("1c6cd089e6c83da618fbf2a081eb4888")}, + {"PS2, SCPH-55000 (v5.0 06/23/03 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("463d87789c555a4a7604e97d7db545d1")}, + {"PS2, DTL-H50001 (v5.0 06/23/03 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("ab9d49ad40ae49f19856ad187777b1b3")}, + {"PS2, SCPH-50001/SCPH-50010 (v5.0 06/23/03 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("35461cecaa51712b300b2d6798825048")}, + {"PS2, SCPH-50002/SCPH-50003/SCPH-50004 (v5.0 06/23/03 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("bd6415094e1ce9e05daabe85de807666")}, + {"PS2, SCPH-50006/SCPH-50007 (v5.0 06/23/03 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("2e70ad008d4ec8549aada8002fdf42fb")}, + {"PS2, SCPH-50005 (v5.0 06/23/03 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("50d5b97b57d8c9b6534adcb46c2027d4")}, + {"PS2, SCPH-50008 (v5.0 06/23/03 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 150, MakeHashFromString("b53d51edc7fc086685e31b811dc32aad")}, + {"PS2, SCPH-50009 (v5.0 06/23/03 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("1b6e631b536247756287b916f9396872")}, + {"PS2, SCPH-50000 (v5.0 08/22/03 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("00da1b177096cfd2532c8fa22b43e667")}, + {"PS2, SCPH-50004 (v5.0 08/22/03 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 150, MakeHashFromString("afde410bd026c16be605a1ae4bd651fd")}, + {"PS2, SCPH-50011 (v5.0 03/29/04 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("81f4336c1de607dd0865011c0447052e")}, + {"PS2, SCPH-70000 (v5.0 06/14/04 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("0eee5d1c779aa50e94edd168b4ebf42e")}, + {"PS2, SCPH-70001/SCPH-70011/SCPH-70012 (v5.0 06/14/04 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("d333558cc14561c1fdc334c75d5f37b7")}, + {"PS2, SCPH-70002/SCPH-70003/SCPH-70004/SCPH-70008 (v5.0 06/14/04 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("dc752f160044f2ed5fc1f4964db2a095")}, + {"PS2, SCPH-70002 (v5.0 06/14/04 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 150, MakeHashFromString("7ebb4fc5eab6f79a27d76ac9aad392b2")}, + {"PS2, DTL-H70002 (v5.0 06/14/04 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 150, MakeHashFromString("63ead1d74893bf7f36880af81f68a82d")}, + {"PS2, SCPH-70005/SCPH-70006/SCPH-70007 (v5.0 06/14/04 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("3e3e030c0f600442fa05b94f87a1e238")}, + {"PS2, DESR-5500/DESR-5700/DESR-7500/DESR-7700 (v5.0 09/17/04 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("1ad977bb539fc9448a08ab276a836bbc")}, + {"PS2, DTL-H75000 (v5.0 06/20/05 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("bf0078ba5e19d57eae18047407f3b6e5")}, + {"PS2, SCPH-75000 (v5.0 06/20/05 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("eb4f40fcf4911ede39c1bbfe91e7a89a")}, + {"PS2, DTL-H75000A (v5.0 06/20/05 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("9959ad7a8685cad66206e7752ca23f8b")}, + {"PS2, SCPH-75001/SCPH-75010 (v5.0 06/20/05 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("929a14baca1776b00869f983aa6e14d2")}, + {"PS2, SCPH-75002/SCPH-75003/SCPH-75004/SCPH-75008 (v5.0 06/20/05 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("573f7d4a430c32b3cc0fd0c41e104bbd")}, + {"PS2, SCPH-75006 (v5.0 06/20/05 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("df63a604e8bff5b0599bd1a6c2721bd0")}, + {"PS2, SCPH-77000 (v5.0 02/10/06 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("5b1ba4bb914406fae75ab8e38901684d")}, + {"PS2, SCPH-77001/SCPH-77010 (v5.0 02/10/06 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("cb801b7920a7d536ba07b6534d2433ca")}, + {"PS2, SCPH-77002/SCPH-77003/SCPH-77004/SCPH-77008 (v5.0 02/10/06 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("af60e6d1a939019d55e5b330d24b1c25")}, + {"PS2, SCPH-77006/SCPH-77007 (v5.0 02/10/06 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("549a66d0c698635ca9fa3ab012da7129")}, + {"PS2, DTL-H90000 (v5.0 09/05/06 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("5e2014472c88f74f7547d8c2c60eca45")}, + {"PS2, SCPH-79000/SCPH-90000 (v5.0 09/05/06 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("5de9d0d730ff1e7ad122806335332524")}, + {"PS2, DTL-H90000 (v5.0 09/05/06 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("21fe4cad111f7dc0f9af29477057f88d")}, + {"PS2, SCPH-79001/SCPH-79010/SCPH-90001 (v5.0 09/05/06 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("40c11c063b3b9409aa5e4058e984e30c")}, + {"PS2, SCPH-79002/SCPH-79003/SCPH-79004/SCPH-79008/SCPH-90002/SCPH-90003/SCPH-90004 (v5.0 09/05/06 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("80bbb237a6af9c611df43b16b930b683")}, + {"PS2, SCPH-79006/SCPH-79007/SCPH-90006/SCPH-90007 (v5.0 09/05/06 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("c37bce95d32b2be480f87dd32704e664")}, + {"PS2, SCPH-90000 (v5.0 02/20/08 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100, MakeHashFromString("80ac46fa7e77b8ab4366e86948e54f83")}, + {"PS2, SCPH-90001/SCPH-90010 (v5.0 02/20/08 A)", ConsoleRegion::NTSC_U, true, ImageInfo::FastBootPatch::Type2, 100 , MakeHashFromString("21038400dc633070a78ad53090c53017")}, + {"PS2, SCPH-90002/SCPH-90003/SCPH-90004/SCPH-90008 (v5.0 02/20/08 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 100 , MakeHashFromString("dc69f0643a3030aaa4797501b483d6c4")}, + {"PS2, SCPH-90005/SCPH-90006/SCPH-90007 (v5.0 02/20/08 J)", ConsoleRegion::NTSC_J, true, ImageInfo::FastBootPatch::Type2, 100 , MakeHashFromString("30d56e79d89fbddf10938fa67fe3f34e")}, + {"PS2, KDL-22PX300 (v5.0 04/15/10 E)", ConsoleRegion::PAL, true, ImageInfo::FastBootPatch::Type2, 150, MakeHashFromString("93ea3bcee4252627919175ff1b16a1d9")}, }; // clang-format on @@ -160,6 +160,25 @@ static constexpr u32 s_openbios_signature_offset = 0x78; } // namespace BIOS +bool BIOS::ImageInfo::CanSlowBootDisc(DiscRegion disc_region) const +{ + // BIOSes without region checks can slow boot anything, those with region checks can't slow boot mismatched games. + if (!region_check) + return true; + + switch (region) + { + case ConsoleRegion::NTSC_J: + return (disc_region == DiscRegion::NTSC_J); + case ConsoleRegion::NTSC_U: + return (disc_region == DiscRegion::NTSC_U); + case ConsoleRegion::PAL: + return (disc_region == DiscRegion::PAL); + default: + return false; + } +} + TinyString BIOS::ImageInfo::GetHashString(const BIOS::ImageInfo::Hash& hash) { return TinyString::from_format( diff --git a/src/core/bios.h b/src/core/bios.h index 119cb368e..c18232571 100644 --- a/src/core/bios.h +++ b/src/core/bios.h @@ -40,11 +40,13 @@ struct ImageInfo const char* description; ConsoleRegion region; - Hash hash; + bool region_check; FastBootPatch fastboot_patch; u8 priority; + alignas(16) Hash hash; bool SupportsFastBoot() const { return (fastboot_patch != FastBootPatch::Unsupported); } + bool CanSlowBootDisc(DiscRegion disc_region) const; static TinyString GetHashString(const Hash& hash); }; diff --git a/src/core/save_state_version.h b/src/core/save_state_version.h index 58c53690f..cb692265f 100644 --- a/src/core/save_state_version.h +++ b/src/core/save_state_version.h @@ -6,7 +6,7 @@ #include "common/types.h" static constexpr u32 SAVE_STATE_MAGIC = 0x43435544; -static constexpr u32 SAVE_STATE_VERSION = 73; +static constexpr u32 SAVE_STATE_VERSION = 74; static constexpr u32 SAVE_STATE_MINIMUM_VERSION = 42; static_assert(SAVE_STATE_VERSION >= SAVE_STATE_MINIMUM_VERSION); diff --git a/src/core/system.cpp b/src/core/system.cpp index 2cebaeffa..55ad064c9 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -151,7 +151,7 @@ static void LogUnsafeSettingsToConsole(const SmallStringBase& messages); static bool Initialize(bool force_software_renderer, Error* error); static bool LoadBIOS(Error* error); -static bool SetBootMode(BootMode new_boot_mode, Error* error); +static bool SetBootMode(BootMode new_boot_mode, DiscRegion disc_region, Error* error); static void InternalReset(); static void ClearRunningGame(); static void DestroySystem(); @@ -1493,7 +1493,7 @@ void System::ResetSystem() const BootMode new_boot_mode = (s_boot_mode == BootMode::BootEXE || s_boot_mode == BootMode::BootPSF) ? s_boot_mode : (g_settings.bios_patch_fast_boot ? BootMode::FastBoot : BootMode::FullBoot); - if (Error error; !SetBootMode(new_boot_mode, &error)) + if (Error error; !SetBootMode(new_boot_mode, CDROM::GetDiscRegion(), &error)) ERROR_LOG("Failed to reload BIOS on boot mode change, the system may be unstable: {}", error.GetDescription()); // Have to turn on turbo if fast forwarding boot. @@ -1758,7 +1758,7 @@ bool System::BootSystem(SystemBootParameters parameters, Error* error) } // Load BIOS image. - if (!SetBootMode(boot_mode, error)) + if (!SetBootMode(boot_mode, disc_region, error)) { s_state = State::Shutdown; ClearRunningGame(); @@ -2409,7 +2409,17 @@ bool System::DoState(StateWrapper& sw, GPUTexture** host_texture, bool update_di if (!sw.DoMarker("System")) return false; - sw.Do(&s_region); + if (sw.GetVersion() < 74) [[unlikely]] + { + u32 region32 = static_cast(s_region); + sw.Do(®ion32); + s_region = static_cast(region32); + } + else + { + sw.Do(&s_region); + } + sw.Do(&s_frame_number); sw.Do(&s_internal_frame_number); @@ -2568,14 +2578,16 @@ void System::InternalReset() s_internal_frame_number = 0; } -bool System::SetBootMode(BootMode new_boot_mode, Error* error) +bool System::SetBootMode(BootMode new_boot_mode, DiscRegion disc_region, Error* error) { // Can we actually fast boot? If starting, s_bios_image_info won't be valid. const bool can_fast_boot = - (CDROM::IsMediaPS1Disc() && + ((disc_region != DiscRegion::NonPS1) && (s_state == State::Starting || (s_bios_image_info && s_bios_image_info->SupportsFastBoot()))); const System::BootMode actual_new_boot_mode = - (new_boot_mode == BootMode::FastBoot) ? (can_fast_boot ? BootMode::FastBoot : BootMode::FullBoot) : new_boot_mode; + (new_boot_mode == BootMode::FastBoot || (s_bios_image_info && s_bios_image_info->CanSlowBootDisc(disc_region))) ? + (can_fast_boot ? BootMode::FastBoot : BootMode::FullBoot) : + new_boot_mode; if (actual_new_boot_mode == s_boot_mode) return true; @@ -2583,7 +2595,11 @@ bool System::SetBootMode(BootMode new_boot_mode, Error* error) if (!LoadBIOS(error)) return false; - s_boot_mode = actual_new_boot_mode; + // Handle the case of BIOSes not being able to full boot. + s_boot_mode = (actual_new_boot_mode == BootMode::FullBoot && s_bios_image_info && + !s_bios_image_info->CanSlowBootDisc(disc_region)) ? + BootMode::FastBoot : + actual_new_boot_mode; if (s_boot_mode == BootMode::FastBoot) { if (s_bios_image_info && s_bios_image_info->SupportsFastBoot()) diff --git a/src/core/types.h b/src/core/types.h index 1f671cbf4..21b46d28d 100644 --- a/src/core/types.h +++ b/src/core/types.h @@ -23,7 +23,7 @@ enum class MemoryAccessSize : u32 using TickCount = s32; using GlobalTicks = u64; -enum class ConsoleRegion +enum class ConsoleRegion : u8 { Auto, NTSC_J, diff --git a/src/duckstation-qt/biossettingswidget.h b/src/duckstation-qt/biossettingswidget.h index e6ad8d54d..6b46d04b0 100644 --- a/src/duckstation-qt/biossettingswidget.h +++ b/src/duckstation-qt/biossettingswidget.h @@ -9,7 +9,7 @@ class SettingsWindow; -enum class ConsoleRegion; +enum class ConsoleRegion : u8; namespace BIOS { struct ImageInfo; } diff --git a/src/duckstation-qt/qtutils.h b/src/duckstation-qt/qtutils.h index ac0bbb714..cdd9ebe6d 100644 --- a/src/duckstation-qt/qtutils.h +++ b/src/duckstation-qt/qtutils.h @@ -32,7 +32,7 @@ class QVariant; class QWidget; class QUrl; -enum class ConsoleRegion; +enum class ConsoleRegion : u8; enum class DiscRegion : u8; namespace GameDatabase { enum class CompatibilityRating : u8;