|
|
|
|
@@ -354,202 +354,202 @@ void PIF::HLE(const bool pal, const CICType cicType) const {
|
|
|
|
|
Util::warn("Unknown CIC type!");
|
|
|
|
|
break;
|
|
|
|
|
case CIC_NUS_6101:
|
|
|
|
|
regs.Write(0, 0x0000000000000000);
|
|
|
|
|
regs.Write(1, 0x0000000000000000);
|
|
|
|
|
regs.Write(2, 0xFFFFFFFFDF6445CC);
|
|
|
|
|
regs.Write(3, 0xFFFFFFFFDF6445CC);
|
|
|
|
|
regs.Write(4, 0x00000000000045CC);
|
|
|
|
|
regs.Write(5, 0x0000000073EE317A);
|
|
|
|
|
regs.Write(6, 0xFFFFFFFFA4001F0C);
|
|
|
|
|
regs.Write(7, 0xFFFFFFFFA4001F08);
|
|
|
|
|
regs.Write(8, 0x00000000000000C0);
|
|
|
|
|
regs.Write(9, 0x0000000000000000);
|
|
|
|
|
regs.Write(10, 0x0000000000000040);
|
|
|
|
|
regs.Write(11, 0xFFFFFFFFA4000040);
|
|
|
|
|
regs.Write(12, 0xFFFFFFFFC7601FAC);
|
|
|
|
|
regs.Write(13, 0xFFFFFFFFC7601FAC);
|
|
|
|
|
regs.Write(14, 0xFFFFFFFFB48E2ED6);
|
|
|
|
|
regs.Write(15, 0xFFFFFFFFBA1A7D4B);
|
|
|
|
|
regs.Write(16, 0x0000000000000000);
|
|
|
|
|
regs.Write(17, 0x0000000000000000);
|
|
|
|
|
regs.Write(18, 0x0000000000000000);
|
|
|
|
|
regs.Write(19, 0x0000000000000000);
|
|
|
|
|
regs.Write(20, 0x0000000000000001);
|
|
|
|
|
regs.Write(21, 0x0000000000000000);
|
|
|
|
|
regs.Write(23, 0x0000000000000001);
|
|
|
|
|
regs.Write(24, 0x0000000000000002);
|
|
|
|
|
regs.Write(25, 0xFFFFFFFF905F4718);
|
|
|
|
|
regs.Write(26, 0x0000000000000000);
|
|
|
|
|
regs.Write(27, 0x0000000000000000);
|
|
|
|
|
regs.Write(28, 0x0000000000000000);
|
|
|
|
|
regs.Write(29, 0xFFFFFFFFA4001FF0);
|
|
|
|
|
regs.Write(30, 0x0000000000000000);
|
|
|
|
|
regs.Write(31, 0xFFFFFFFFA4001550);
|
|
|
|
|
regs.Write<u64>(0, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(1, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(2, 0xFFFFFFFFDF6445CC);
|
|
|
|
|
regs.Write<u64>(3, 0xFFFFFFFFDF6445CC);
|
|
|
|
|
regs.Write<u64>(4, 0x00000000000045CC);
|
|
|
|
|
regs.Write<u64>(5, 0x0000000073EE317A);
|
|
|
|
|
regs.Write<u64>(6, 0xFFFFFFFFA4001F0C);
|
|
|
|
|
regs.Write<u64>(7, 0xFFFFFFFFA4001F08);
|
|
|
|
|
regs.Write<u64>(8, 0x00000000000000C0);
|
|
|
|
|
regs.Write<u64>(9, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(10, 0x0000000000000040);
|
|
|
|
|
regs.Write<u64>(11, 0xFFFFFFFFA4000040);
|
|
|
|
|
regs.Write<u64>(12, 0xFFFFFFFFC7601FAC);
|
|
|
|
|
regs.Write<u64>(13, 0xFFFFFFFFC7601FAC);
|
|
|
|
|
regs.Write<u64>(14, 0xFFFFFFFFB48E2ED6);
|
|
|
|
|
regs.Write<u64>(15, 0xFFFFFFFFBA1A7D4B);
|
|
|
|
|
regs.Write<u64>(16, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(17, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(18, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(19, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(20, 0x0000000000000001);
|
|
|
|
|
regs.Write<u64>(21, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(23, 0x0000000000000001);
|
|
|
|
|
regs.Write<u64>(24, 0x0000000000000002);
|
|
|
|
|
regs.Write<u64>(25, 0xFFFFFFFF905F4718);
|
|
|
|
|
regs.Write<u64>(26, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(27, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(28, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(29, 0xFFFFFFFFA4001FF0);
|
|
|
|
|
regs.Write<u64>(30, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(31, 0xFFFFFFFFA4001550);
|
|
|
|
|
|
|
|
|
|
regs.lo = 0xFFFFFFFFBA1A7D4Bll;
|
|
|
|
|
regs.hi = 0xFFFFFFFF997EC317ll;
|
|
|
|
|
break;
|
|
|
|
|
case CIC_NUS_7102:
|
|
|
|
|
regs.Write(0, 0x0000000000000000);
|
|
|
|
|
regs.Write(1, 0x0000000000000001);
|
|
|
|
|
regs.Write(2, 0x000000001E324416);
|
|
|
|
|
regs.Write(3, 0x000000001E324416);
|
|
|
|
|
regs.Write(4, 0x0000000000004416);
|
|
|
|
|
regs.Write(5, 0x000000000EC5D9AF);
|
|
|
|
|
regs.Write(6, 0xFFFFFFFFA4001F0C);
|
|
|
|
|
regs.Write(7, 0xFFFFFFFFA4001F08);
|
|
|
|
|
regs.Write(8, 0x00000000000000C0);
|
|
|
|
|
regs.Write(9, 0x0000000000000000);
|
|
|
|
|
regs.Write(10, 0x0000000000000040);
|
|
|
|
|
regs.Write(11, 0xFFFFFFFFA4000040);
|
|
|
|
|
regs.Write(12, 0x00000000495D3D7B);
|
|
|
|
|
regs.Write(13, 0xFFFFFFFF8B3DFA1E);
|
|
|
|
|
regs.Write(14, 0x000000004798E4D4);
|
|
|
|
|
regs.Write(15, 0xFFFFFFFFF1D30682);
|
|
|
|
|
regs.Write(16, 0x0000000000000000);
|
|
|
|
|
regs.Write(17, 0x0000000000000000);
|
|
|
|
|
regs.Write(18, 0x0000000000000000);
|
|
|
|
|
regs.Write(19, 0x0000000000000000);
|
|
|
|
|
regs.Write(20, 0x0000000000000000);
|
|
|
|
|
regs.Write(21, 0x0000000000000000);
|
|
|
|
|
regs.Write(22, 0x000000000000003F);
|
|
|
|
|
regs.Write(23, 0x0000000000000007);
|
|
|
|
|
regs.Write(24, 0x0000000000000000);
|
|
|
|
|
regs.Write(25, 0x0000000013D05CAB);
|
|
|
|
|
regs.Write(26, 0x0000000000000000);
|
|
|
|
|
regs.Write(27, 0x0000000000000000);
|
|
|
|
|
regs.Write(28, 0x0000000000000000);
|
|
|
|
|
regs.Write(29, 0xFFFFFFFFA4001FF0);
|
|
|
|
|
regs.Write(30, 0x0000000000000000);
|
|
|
|
|
regs.Write(31, 0xFFFFFFFFA4001554);
|
|
|
|
|
regs.Write<u64>(0, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(1, 0x0000000000000001);
|
|
|
|
|
regs.Write<u64>(2, 0x000000001E324416);
|
|
|
|
|
regs.Write<u64>(3, 0x000000001E324416);
|
|
|
|
|
regs.Write<u64>(4, 0x0000000000004416);
|
|
|
|
|
regs.Write<u64>(5, 0x000000000EC5D9AF);
|
|
|
|
|
regs.Write<u64>(6, 0xFFFFFFFFA4001F0C);
|
|
|
|
|
regs.Write<u64>(7, 0xFFFFFFFFA4001F08);
|
|
|
|
|
regs.Write<u64>(8, 0x00000000000000C0);
|
|
|
|
|
regs.Write<u64>(9, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(10, 0x0000000000000040);
|
|
|
|
|
regs.Write<u64>(11, 0xFFFFFFFFA4000040);
|
|
|
|
|
regs.Write<u64>(12, 0x00000000495D3D7B);
|
|
|
|
|
regs.Write<u64>(13, 0xFFFFFFFF8B3DFA1E);
|
|
|
|
|
regs.Write<u64>(14, 0x000000004798E4D4);
|
|
|
|
|
regs.Write<u64>(15, 0xFFFFFFFFF1D30682);
|
|
|
|
|
regs.Write<u64>(16, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(17, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(18, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(19, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(20, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(21, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(22, 0x000000000000003F);
|
|
|
|
|
regs.Write<u64>(23, 0x0000000000000007);
|
|
|
|
|
regs.Write<u64>(24, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(25, 0x0000000013D05CAB);
|
|
|
|
|
regs.Write<u64>(26, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(27, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(28, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(29, 0xFFFFFFFFA4001FF0);
|
|
|
|
|
regs.Write<u64>(30, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(31, 0xFFFFFFFFA4001554);
|
|
|
|
|
|
|
|
|
|
regs.lo = 0xFFFFFFFFF1D30682ll;
|
|
|
|
|
regs.hi = 0x0000000010054A98;
|
|
|
|
|
break;
|
|
|
|
|
case CIC_NUS_6102_7101:
|
|
|
|
|
regs.Write(0, 0x0000000000000000);
|
|
|
|
|
regs.Write(1, 0x0000000000000001);
|
|
|
|
|
regs.Write(2, 0x000000000EBDA536);
|
|
|
|
|
regs.Write(3, 0x000000000EBDA536);
|
|
|
|
|
regs.Write(4, 0x000000000000A536);
|
|
|
|
|
regs.Write(5, 0xFFFFFFFFC0F1D859);
|
|
|
|
|
regs.Write(6, 0xFFFFFFFFA4001F0C);
|
|
|
|
|
regs.Write(7, 0xFFFFFFFFA4001F08);
|
|
|
|
|
regs.Write(8, 0x00000000000000C0);
|
|
|
|
|
regs.Write(9, 0x0000000000000000);
|
|
|
|
|
regs.Write(10, 0x0000000000000040);
|
|
|
|
|
regs.Write(11, 0xFFFFFFFFA4000040);
|
|
|
|
|
regs.Write(12, 0xFFFFFFFFED10D0B3);
|
|
|
|
|
regs.Write(13, 0x000000001402A4CC);
|
|
|
|
|
regs.Write(14, 0x000000002DE108EA);
|
|
|
|
|
regs.Write(15, 0x000000003103E121);
|
|
|
|
|
regs.Write(16, 0x0000000000000000);
|
|
|
|
|
regs.Write(17, 0x0000000000000000);
|
|
|
|
|
regs.Write(18, 0x0000000000000000);
|
|
|
|
|
regs.Write(19, 0x0000000000000000);
|
|
|
|
|
regs.Write(20, 0x0000000000000001);
|
|
|
|
|
regs.Write(21, 0x0000000000000000);
|
|
|
|
|
regs.Write(23, 0x0000000000000000);
|
|
|
|
|
regs.Write(24, 0x0000000000000000);
|
|
|
|
|
regs.Write(25, 0xFFFFFFFF9DEBB54F);
|
|
|
|
|
regs.Write(26, 0x0000000000000000);
|
|
|
|
|
regs.Write(27, 0x0000000000000000);
|
|
|
|
|
regs.Write(28, 0x0000000000000000);
|
|
|
|
|
regs.Write(29, 0xFFFFFFFFA4001FF0);
|
|
|
|
|
regs.Write(30, 0x0000000000000000);
|
|
|
|
|
regs.Write(31, 0xFFFFFFFFA4001550);
|
|
|
|
|
regs.Write<u64>(0, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(1, 0x0000000000000001);
|
|
|
|
|
regs.Write<u64>(2, 0x000000000EBDA536);
|
|
|
|
|
regs.Write<u64>(3, 0x000000000EBDA536);
|
|
|
|
|
regs.Write<u64>(4, 0x000000000000A536);
|
|
|
|
|
regs.Write<u64>(5, 0xFFFFFFFFC0F1D859);
|
|
|
|
|
regs.Write<u64>(6, 0xFFFFFFFFA4001F0C);
|
|
|
|
|
regs.Write<u64>(7, 0xFFFFFFFFA4001F08);
|
|
|
|
|
regs.Write<u64>(8, 0x00000000000000C0);
|
|
|
|
|
regs.Write<u64>(9, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(10, 0x0000000000000040);
|
|
|
|
|
regs.Write<u64>(11, 0xFFFFFFFFA4000040);
|
|
|
|
|
regs.Write<u64>(12, 0xFFFFFFFFED10D0B3);
|
|
|
|
|
regs.Write<u64>(13, 0x000000001402A4CC);
|
|
|
|
|
regs.Write<u64>(14, 0x000000002DE108EA);
|
|
|
|
|
regs.Write<u64>(15, 0x000000003103E121);
|
|
|
|
|
regs.Write<u64>(16, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(17, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(18, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(19, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(20, 0x0000000000000001);
|
|
|
|
|
regs.Write<u64>(21, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(23, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(24, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(25, 0xFFFFFFFF9DEBB54F);
|
|
|
|
|
regs.Write<u64>(26, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(27, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(28, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(29, 0xFFFFFFFFA4001FF0);
|
|
|
|
|
regs.Write<u64>(30, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(31, 0xFFFFFFFFA4001550);
|
|
|
|
|
|
|
|
|
|
regs.hi = 0x000000003FC18657;
|
|
|
|
|
regs.lo = 0x000000003103E121;
|
|
|
|
|
|
|
|
|
|
if (pal) {
|
|
|
|
|
regs.Write(20, 0x0000000000000000);
|
|
|
|
|
regs.Write(23, 0x0000000000000006);
|
|
|
|
|
regs.Write(31, 0xFFFFFFFFA4001554);
|
|
|
|
|
regs.Write<u64>(20, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(23, 0x0000000000000006);
|
|
|
|
|
regs.Write<u64>(31, 0xFFFFFFFFA4001554);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case CIC_NUS_6103_7103:
|
|
|
|
|
regs.Write(0, 0x0000000000000000);
|
|
|
|
|
regs.Write(1, 0x0000000000000001);
|
|
|
|
|
regs.Write(2, 0x0000000049A5EE96);
|
|
|
|
|
regs.Write(3, 0x0000000049A5EE96);
|
|
|
|
|
regs.Write(4, 0x000000000000EE96);
|
|
|
|
|
regs.Write(5, 0xFFFFFFFFD4646273);
|
|
|
|
|
regs.Write(6, 0xFFFFFFFFA4001F0C);
|
|
|
|
|
regs.Write(7, 0xFFFFFFFFA4001F08);
|
|
|
|
|
regs.Write(8, 0x00000000000000C0);
|
|
|
|
|
regs.Write(9, 0x0000000000000000);
|
|
|
|
|
regs.Write(10, 0x0000000000000040);
|
|
|
|
|
regs.Write(11, 0xFFFFFFFFA4000040);
|
|
|
|
|
regs.Write(12, 0xFFFFFFFFCE9DFBF7);
|
|
|
|
|
regs.Write(13, 0xFFFFFFFFCE9DFBF7);
|
|
|
|
|
regs.Write(14, 0x000000001AF99984);
|
|
|
|
|
regs.Write(15, 0x0000000018B63D28);
|
|
|
|
|
regs.Write(16, 0x0000000000000000);
|
|
|
|
|
regs.Write(17, 0x0000000000000000);
|
|
|
|
|
regs.Write(18, 0x0000000000000000);
|
|
|
|
|
regs.Write(19, 0x0000000000000000);
|
|
|
|
|
regs.Write(20, 0x0000000000000001);
|
|
|
|
|
regs.Write(21, 0x0000000000000000);
|
|
|
|
|
regs.Write(23, 0x0000000000000000);
|
|
|
|
|
regs.Write(24, 0x0000000000000000);
|
|
|
|
|
regs.Write(25, 0xFFFFFFFF825B21C9);
|
|
|
|
|
regs.Write(26, 0x0000000000000000);
|
|
|
|
|
regs.Write(27, 0x0000000000000000);
|
|
|
|
|
regs.Write(28, 0x0000000000000000);
|
|
|
|
|
regs.Write(29, 0xFFFFFFFFA4001FF0);
|
|
|
|
|
regs.Write(30, 0x0000000000000000);
|
|
|
|
|
regs.Write(31, 0xFFFFFFFFA4001550);
|
|
|
|
|
regs.Write<u64>(0, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(1, 0x0000000000000001);
|
|
|
|
|
regs.Write<u64>(2, 0x0000000049A5EE96);
|
|
|
|
|
regs.Write<u64>(3, 0x0000000049A5EE96);
|
|
|
|
|
regs.Write<u64>(4, 0x000000000000EE96);
|
|
|
|
|
regs.Write<u64>(5, 0xFFFFFFFFD4646273);
|
|
|
|
|
regs.Write<u64>(6, 0xFFFFFFFFA4001F0C);
|
|
|
|
|
regs.Write<u64>(7, 0xFFFFFFFFA4001F08);
|
|
|
|
|
regs.Write<u64>(8, 0x00000000000000C0);
|
|
|
|
|
regs.Write<u64>(9, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(10, 0x0000000000000040);
|
|
|
|
|
regs.Write<u64>(11, 0xFFFFFFFFA4000040);
|
|
|
|
|
regs.Write<u64>(12, 0xFFFFFFFFCE9DFBF7);
|
|
|
|
|
regs.Write<u64>(13, 0xFFFFFFFFCE9DFBF7);
|
|
|
|
|
regs.Write<u64>(14, 0x000000001AF99984);
|
|
|
|
|
regs.Write<u64>(15, 0x0000000018B63D28);
|
|
|
|
|
regs.Write<u64>(16, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(17, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(18, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(19, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(20, 0x0000000000000001);
|
|
|
|
|
regs.Write<u64>(21, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(23, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(24, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(25, 0xFFFFFFFF825B21C9);
|
|
|
|
|
regs.Write<u64>(26, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(27, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(28, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(29, 0xFFFFFFFFA4001FF0);
|
|
|
|
|
regs.Write<u64>(30, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(31, 0xFFFFFFFFA4001550);
|
|
|
|
|
|
|
|
|
|
regs.lo = 0x0000000018B63D28;
|
|
|
|
|
regs.hi = 0x00000000625C2BBE;
|
|
|
|
|
|
|
|
|
|
if (pal) {
|
|
|
|
|
regs.Write(20, 0x0000000000000000);
|
|
|
|
|
regs.Write(23, 0x0000000000000006);
|
|
|
|
|
regs.Write(31, 0xFFFFFFFFA4001554);
|
|
|
|
|
regs.Write<u64>(20, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(23, 0x0000000000000006);
|
|
|
|
|
regs.Write<u64>(31, 0xFFFFFFFFA4001554);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case CIC_NUS_6105_7105:
|
|
|
|
|
regs.Write(0, 0x0000000000000000);
|
|
|
|
|
regs.Write(1, 0x0000000000000000);
|
|
|
|
|
regs.Write(2, 0xFFFFFFFFF58B0FBF);
|
|
|
|
|
regs.Write(3, 0xFFFFFFFFF58B0FBF);
|
|
|
|
|
regs.Write(4, 0x0000000000000FBF);
|
|
|
|
|
regs.Write(5, 0xFFFFFFFFDECAAAD1);
|
|
|
|
|
regs.Write(6, 0xFFFFFFFFA4001F0C);
|
|
|
|
|
regs.Write(7, 0xFFFFFFFFA4001F08);
|
|
|
|
|
regs.Write(8, 0x00000000000000C0);
|
|
|
|
|
regs.Write(9, 0x0000000000000000);
|
|
|
|
|
regs.Write(10, 0x0000000000000040);
|
|
|
|
|
regs.Write(11, 0xFFFFFFFFA4000040);
|
|
|
|
|
regs.Write(12, 0xFFFFFFFF9651F81E);
|
|
|
|
|
regs.Write(13, 0x000000002D42AAC5);
|
|
|
|
|
regs.Write(14, 0x00000000489B52CF);
|
|
|
|
|
regs.Write(15, 0x0000000056584D60);
|
|
|
|
|
regs.Write(16, 0x0000000000000000);
|
|
|
|
|
regs.Write(17, 0x0000000000000000);
|
|
|
|
|
regs.Write(18, 0x0000000000000000);
|
|
|
|
|
regs.Write(19, 0x0000000000000000);
|
|
|
|
|
regs.Write(20, 0x0000000000000001);
|
|
|
|
|
regs.Write(21, 0x0000000000000000);
|
|
|
|
|
regs.Write(23, 0x0000000000000000);
|
|
|
|
|
regs.Write(24, 0x0000000000000002);
|
|
|
|
|
regs.Write(25, 0xFFFFFFFFCDCE565F);
|
|
|
|
|
regs.Write(26, 0x0000000000000000);
|
|
|
|
|
regs.Write(27, 0x0000000000000000);
|
|
|
|
|
regs.Write(28, 0x0000000000000000);
|
|
|
|
|
regs.Write(29, 0xFFFFFFFFA4001FF0);
|
|
|
|
|
regs.Write(30, 0x0000000000000000);
|
|
|
|
|
regs.Write(31, 0xFFFFFFFFA4001550);
|
|
|
|
|
regs.Write<u64>(0, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(1, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(2, 0xFFFFFFFFF58B0FBF);
|
|
|
|
|
regs.Write<u64>(3, 0xFFFFFFFFF58B0FBF);
|
|
|
|
|
regs.Write<u64>(4, 0x0000000000000FBF);
|
|
|
|
|
regs.Write<u64>(5, 0xFFFFFFFFDECAAAD1);
|
|
|
|
|
regs.Write<u64>(6, 0xFFFFFFFFA4001F0C);
|
|
|
|
|
regs.Write<u64>(7, 0xFFFFFFFFA4001F08);
|
|
|
|
|
regs.Write<u64>(8, 0x00000000000000C0);
|
|
|
|
|
regs.Write<u64>(9, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(10, 0x0000000000000040);
|
|
|
|
|
regs.Write<u64>(11, 0xFFFFFFFFA4000040);
|
|
|
|
|
regs.Write<u64>(12, 0xFFFFFFFF9651F81E);
|
|
|
|
|
regs.Write<u64>(13, 0x000000002D42AAC5);
|
|
|
|
|
regs.Write<u64>(14, 0x00000000489B52CF);
|
|
|
|
|
regs.Write<u64>(15, 0x0000000056584D60);
|
|
|
|
|
regs.Write<u64>(16, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(17, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(18, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(19, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(20, 0x0000000000000001);
|
|
|
|
|
regs.Write<u64>(21, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(23, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(24, 0x0000000000000002);
|
|
|
|
|
regs.Write<u64>(25, 0xFFFFFFFFCDCE565F);
|
|
|
|
|
regs.Write<u64>(26, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(27, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(28, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(29, 0xFFFFFFFFA4001FF0);
|
|
|
|
|
regs.Write<u64>(30, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(31, 0xFFFFFFFFA4001550);
|
|
|
|
|
|
|
|
|
|
regs.lo = 0x0000000056584D60;
|
|
|
|
|
regs.hi = 0x000000004BE35D1F;
|
|
|
|
|
|
|
|
|
|
if (pal) {
|
|
|
|
|
regs.Write(20, 0x0000000000000000);
|
|
|
|
|
regs.Write(23, 0x0000000000000006);
|
|
|
|
|
regs.Write(31, 0xFFFFFFFFA4001554);
|
|
|
|
|
regs.Write<u64>(20, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(23, 0x0000000000000006);
|
|
|
|
|
regs.Write<u64>(31, 0xFFFFFFFFA4001554);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mem.Write<u32>(regs, IMEM_REGION_START + 0x00, 0x3C0DBFC0);
|
|
|
|
|
@@ -562,49 +562,49 @@ void PIF::HLE(const bool pal, const CICType cicType) const {
|
|
|
|
|
mem.Write<u32>(regs, IMEM_REGION_START + 0x1C, 0x3C0BB000);
|
|
|
|
|
break;
|
|
|
|
|
case CIC_NUS_6106_7106:
|
|
|
|
|
regs.Write(0, 0x0000000000000000);
|
|
|
|
|
regs.Write(1, 0x0000000000000000);
|
|
|
|
|
regs.Write(2, 0xFFFFFFFFA95930A4);
|
|
|
|
|
regs.Write(3, 0xFFFFFFFFA95930A4);
|
|
|
|
|
regs.Write(4, 0x00000000000030A4);
|
|
|
|
|
regs.Write(5, 0xFFFFFFFFB04DC903);
|
|
|
|
|
regs.Write(6, 0xFFFFFFFFA4001F0C);
|
|
|
|
|
regs.Write(7, 0xFFFFFFFFA4001F08);
|
|
|
|
|
regs.Write(8, 0x00000000000000C0);
|
|
|
|
|
regs.Write(9, 0x0000000000000000);
|
|
|
|
|
regs.Write(10, 0x0000000000000040);
|
|
|
|
|
regs.Write(11, 0xFFFFFFFFA4000040);
|
|
|
|
|
regs.Write(12, 0xFFFFFFFFBCB59510);
|
|
|
|
|
regs.Write(13, 0xFFFFFFFFBCB59510);
|
|
|
|
|
regs.Write(14, 0x000000000CF85C13);
|
|
|
|
|
regs.Write(15, 0x000000007A3C07F4);
|
|
|
|
|
regs.Write(16, 0x0000000000000000);
|
|
|
|
|
regs.Write(17, 0x0000000000000000);
|
|
|
|
|
regs.Write(18, 0x0000000000000000);
|
|
|
|
|
regs.Write(19, 0x0000000000000000);
|
|
|
|
|
regs.Write(20, 0x0000000000000001);
|
|
|
|
|
regs.Write(21, 0x0000000000000000);
|
|
|
|
|
regs.Write(23, 0x0000000000000000);
|
|
|
|
|
regs.Write(24, 0x0000000000000002);
|
|
|
|
|
regs.Write(25, 0x00000000465E3F72);
|
|
|
|
|
regs.Write(26, 0x0000000000000000);
|
|
|
|
|
regs.Write(27, 0x0000000000000000);
|
|
|
|
|
regs.Write(28, 0x0000000000000000);
|
|
|
|
|
regs.Write(29, 0xFFFFFFFFA4001FF0);
|
|
|
|
|
regs.Write(30, 0x0000000000000000);
|
|
|
|
|
regs.Write(31, 0xFFFFFFFFA4001550);
|
|
|
|
|
regs.Write<u64>(0, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(1, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(2, 0xFFFFFFFFA95930A4);
|
|
|
|
|
regs.Write<u64>(3, 0xFFFFFFFFA95930A4);
|
|
|
|
|
regs.Write<u64>(4, 0x00000000000030A4);
|
|
|
|
|
regs.Write<u64>(5, 0xFFFFFFFFB04DC903);
|
|
|
|
|
regs.Write<u64>(6, 0xFFFFFFFFA4001F0C);
|
|
|
|
|
regs.Write<u64>(7, 0xFFFFFFFFA4001F08);
|
|
|
|
|
regs.Write<u64>(8, 0x00000000000000C0);
|
|
|
|
|
regs.Write<u64>(9, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(10, 0x0000000000000040);
|
|
|
|
|
regs.Write<u64>(11, 0xFFFFFFFFA4000040);
|
|
|
|
|
regs.Write<u64>(12, 0xFFFFFFFFBCB59510);
|
|
|
|
|
regs.Write<u64>(13, 0xFFFFFFFFBCB59510);
|
|
|
|
|
regs.Write<u64>(14, 0x000000000CF85C13);
|
|
|
|
|
regs.Write<u64>(15, 0x000000007A3C07F4);
|
|
|
|
|
regs.Write<u64>(16, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(17, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(18, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(19, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(20, 0x0000000000000001);
|
|
|
|
|
regs.Write<u64>(21, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(23, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(24, 0x0000000000000002);
|
|
|
|
|
regs.Write<u64>(25, 0x00000000465E3F72);
|
|
|
|
|
regs.Write<u64>(26, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(27, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(28, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(29, 0xFFFFFFFFA4001FF0);
|
|
|
|
|
regs.Write<u64>(30, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(31, 0xFFFFFFFFA4001550);
|
|
|
|
|
regs.lo = 0x000000007A3C07F4;
|
|
|
|
|
regs.hi = 0x0000000023953898;
|
|
|
|
|
|
|
|
|
|
if (pal) {
|
|
|
|
|
regs.Write(20, 0x0000000000000000);
|
|
|
|
|
regs.Write(23, 0x0000000000000006);
|
|
|
|
|
regs.Write(31, 0xFFFFFFFFA4001554);
|
|
|
|
|
regs.Write<u64>(20, 0x0000000000000000);
|
|
|
|
|
regs.Write<u64>(23, 0x0000000000000006);
|
|
|
|
|
regs.Write<u64>(31, 0xFFFFFFFFA4001554);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
regs.Write(22, (cicSeeds[cicType] >> 8) & 0xFF);
|
|
|
|
|
regs.Write<u8>(22, (cicSeeds[cicType] >> 8) & 0xFF);
|
|
|
|
|
regs.cop0.Reset();
|
|
|
|
|
mem.Write<u32>(regs, 0x04300004, 0x01010101);
|
|
|
|
|
std::copy_n(mem.rom.cart.begin(), 0x1000, mem.mmio.rsp.dmem.begin());
|
|
|
|
|
|