mirror of
https://github.com/liuk7071/ChonkyStation.git
synced 2025-04-02 10:52:38 -04:00
1058 lines
No EOL
21 KiB
C++
1058 lines
No EOL
21 KiB
C++
#pragma once
|
|
#include "gte.h"
|
|
|
|
// GTE
|
|
class testGTE {
|
|
public:
|
|
gte GTE;
|
|
uint32_t command; // To pass to the GTE
|
|
void assignRegisters(uint32_t* cop2c, uint32_t* cop2d) {
|
|
for (int i = 0; i < 32; i++) {
|
|
GTE.cop2c.raw[i] = cop2c[i];
|
|
GTE.cop2d.raw[i] = cop2d[i];
|
|
}
|
|
}
|
|
virtual void checkResult(uint32_t* resCop2c, uint32_t* resCop2d) {
|
|
for (int i = 0; i < 32; i++) {
|
|
if (GTE.cop2c.raw[i] != resCop2c[i]) {
|
|
printf("%s register mismatch: got 0x%08x expected 0x%08x\n", GTE.cop2cNames[i].c_str(), GTE.cop2c.raw[i], resCop2c[i]);
|
|
}
|
|
}
|
|
for (int i = 0; i < 32; i++) {
|
|
if (GTE.readCop2d(i) != resCop2d[i]) {
|
|
printf("%s register mismatch: got 0x%08x expected 0x%08x\n", GTE.cop2dNames[i].c_str(), GTE.readCop2d(i), resCop2d[i]);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
class testRTPS : public testGTE {
|
|
public:
|
|
uint32_t cop2c[32] = {
|
|
0x00000ffb,
|
|
0xffb7ff44,
|
|
0xf9ca0ebc,
|
|
0x063700ad,
|
|
0x00000eb7,
|
|
0x00000000,
|
|
0xfffffeac,
|
|
0x00001700,
|
|
0x00000000,
|
|
0x00000fa0,
|
|
0x0000f060,
|
|
0x0000f060,
|
|
0x00000000,
|
|
0x00000640,
|
|
0x00000640,
|
|
0x00000640,
|
|
0x0bb80fa0,
|
|
0x0fa00fa0,
|
|
0x0fa00bb8,
|
|
0x0bb80fa0,
|
|
0x00000fa0,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x01400000,
|
|
0x00f00000,
|
|
0x00000400,
|
|
0xfffffec8,
|
|
0x01400000,
|
|
0x00000155,
|
|
0x00000100,
|
|
0x00000000,
|
|
};
|
|
uint32_t cop2d[32] = {
|
|
0x00000b50,
|
|
0xfffff4b0,
|
|
0x00e700d5,
|
|
0xfffffe21,
|
|
0x00b90119,
|
|
0xfffffe65,
|
|
0x2094a539,
|
|
0x00000000,
|
|
0x00001000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000020,
|
|
};
|
|
uint32_t resCop2c[32] = {
|
|
0x00000ffb,
|
|
0xffb7ff44,
|
|
0xf9ca0ebc,
|
|
0x063700ad,
|
|
0x00000eb7,
|
|
0x00000000,
|
|
0xfffffeac,
|
|
0x00001700,
|
|
0x00000000,
|
|
0x00000fa0,
|
|
0x0000f060,
|
|
0x0000f060,
|
|
0x00000000,
|
|
0x00000640,
|
|
0x00000640,
|
|
0x00000640,
|
|
0x0bb80fa0,
|
|
0x0fa00fa0,
|
|
0x0fa00bb8,
|
|
0x0bb80fa0,
|
|
0x00000fa0,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x01400000,
|
|
0x00f00000,
|
|
0x00000400,
|
|
0xfffffec8,
|
|
0x01400000,
|
|
0x00000155,
|
|
0x00000100,
|
|
0x00000000,
|
|
};
|
|
uint32_t resCop2d[32] = {
|
|
0x00000b50,
|
|
0xfffff4b0,
|
|
0x00e700d5,
|
|
0xfffffe21,
|
|
0x00b90119,
|
|
0xfffffe65,
|
|
0x2094a539,
|
|
0x00000000,
|
|
0x00000e08,
|
|
0x00000bd1,
|
|
0x000002dc,
|
|
0x00000d12,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x01d003ff,
|
|
0x01d003ff,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000d12,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00e08388,
|
|
0x00000bd1,
|
|
0x000002dc,
|
|
0x00000d12,
|
|
0x000068b7,
|
|
0x000068b7,
|
|
0x00000000,
|
|
0x00000020,
|
|
};
|
|
|
|
void doTest() {
|
|
command = 0x00080001;
|
|
printf("testing GTE::RTPS...\n");
|
|
assignRegisters(cop2c, cop2d);
|
|
GTE.execute(command, nullptr);
|
|
checkResult(resCop2c, resCop2d);
|
|
}
|
|
};
|
|
class testRTPT : public testGTE {
|
|
public:
|
|
uint32_t cop2c[32] = {
|
|
0x00000ffb,
|
|
0xffb7ff44,
|
|
0xf9ca0ebc,
|
|
0x063700ad,
|
|
0x00000eb7,
|
|
0x00000000,
|
|
0xfffffeac,
|
|
0x00001700,
|
|
0x00000000,
|
|
0x00000fa0,
|
|
0x0000f060,
|
|
0x0000f060,
|
|
0x00000000,
|
|
0x00000640,
|
|
0x00000640,
|
|
0x00000640,
|
|
0x0bb80fa0,
|
|
0x0fa00fa0,
|
|
0x0fa00bb8,
|
|
0x0bb80fa0,
|
|
0x00000fa0,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x01400000,
|
|
0x00f00000,
|
|
0x00000400,
|
|
0xfffffec8,
|
|
0x01400000,
|
|
0x00000155,
|
|
0x00000100,
|
|
0x00000000,
|
|
};
|
|
uint32_t cop2d[32] = {
|
|
0x00e70119,
|
|
0xfffffe65,
|
|
0x00e700d5,
|
|
0xfffffe21,
|
|
0x00b90119,
|
|
0xfffffe65,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000020,
|
|
};
|
|
uint32_t resCop2c[32] = {
|
|
0x00000ffb,
|
|
0xffb7ff44,
|
|
0xf9ca0ebc,
|
|
0x063700ad,
|
|
0x00000eb7,
|
|
0x00000000,
|
|
0xfffffeac,
|
|
0x00001700,
|
|
0x00000000,
|
|
0x00000fa0,
|
|
0x0000f060,
|
|
0x0000f060,
|
|
0x00000000,
|
|
0x00000640,
|
|
0x00000640,
|
|
0x00000640,
|
|
0x0bb80fa0,
|
|
0x0fa00fa0,
|
|
0x0fa00bb8,
|
|
0x0bb80fa0,
|
|
0x00000fa0,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x01400000,
|
|
0x00f00000,
|
|
0x00000400,
|
|
0xfffffec8,
|
|
0x01400000,
|
|
0x00000155,
|
|
0x00000100,
|
|
0x00000000,
|
|
};
|
|
uint32_t resCop2d[32] = {
|
|
0x00e70119,
|
|
0xfffffe65,
|
|
0x00e700d5,
|
|
0xfffffe21,
|
|
0x00b90119,
|
|
0xfffffe65,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00001000,
|
|
0x0000012b,
|
|
0xfffffff0,
|
|
0x000015d9,
|
|
0x00f40176,
|
|
0x00f9016b,
|
|
0x00ed0176,
|
|
0x00ed0176,
|
|
0x00000000,
|
|
0x000015eb,
|
|
0x000015aa,
|
|
0x000015d9,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x0106e038,
|
|
0x0000012b,
|
|
0xfffffff0,
|
|
0x000015d9,
|
|
0x00007c02,
|
|
0x00007c02,
|
|
0x00000000,
|
|
0x00000020,
|
|
};
|
|
|
|
void doTest() {
|
|
command = 0x00080030;
|
|
printf("testing GTE::RTPT... \n");
|
|
assignRegisters(cop2c, cop2d);
|
|
GTE.execute(command, nullptr);
|
|
checkResult(resCop2c, resCop2d);
|
|
printf("Done.\n");
|
|
}
|
|
};
|
|
class testNCDS : public testGTE {
|
|
public:
|
|
uint32_t cop2c[32] = {
|
|
0x00000ffb,
|
|
0xffb7ff44,
|
|
0xf9ca0ebc,
|
|
0x063700ad,
|
|
0x00000eb7,
|
|
0x00000000,
|
|
0xfffffeac,
|
|
0x00001700,
|
|
0x00000000,
|
|
0x00000fa0,
|
|
0x0000f060,
|
|
0x0000f060,
|
|
0x00000000,
|
|
0x00000640,
|
|
0x00000640,
|
|
0x00000640,
|
|
0x0bb80fa0,
|
|
0x0fa00fa0,
|
|
0x0fa00bb8,
|
|
0x0bb80fa0,
|
|
0x00000fa0,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x01400000,
|
|
0x00f00000,
|
|
0x00000400,
|
|
0xfffffec8,
|
|
0x01400000,
|
|
0x00000155,
|
|
0x00000100,
|
|
0x00000000,
|
|
};
|
|
uint32_t cop2d[32] = {
|
|
0x00000b50,
|
|
0xfffff4b0,
|
|
0x00e700d5,
|
|
0xfffffe21,
|
|
0x00b90119,
|
|
0xfffffe65,
|
|
0x2094a539,
|
|
0x00000572,
|
|
0x00001000,
|
|
0x0000012b,
|
|
0xfffffff0,
|
|
0x000015d9,
|
|
0x00f40176,
|
|
0x00f9016b,
|
|
0x00ed0176,
|
|
0x00ed0176,
|
|
0x00000000,
|
|
0x000015eb,
|
|
0x000015aa,
|
|
0x000015d9,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00572786,
|
|
0x0000012b,
|
|
0xfffffff0,
|
|
0x000015d9,
|
|
0x00007c02,
|
|
0x00007c02,
|
|
0x00000000,
|
|
0x00000020,
|
|
};
|
|
uint32_t resCop2c[32] = {
|
|
0x00000ffb,
|
|
0xffb7ff44,
|
|
0xf9ca0ebc,
|
|
0x063700ad,
|
|
0x00000eb7,
|
|
0x00000000,
|
|
0xfffffeac,
|
|
0x00001700,
|
|
0x00000000,
|
|
0x00000fa0,
|
|
0x0000f060,
|
|
0x0000f060,
|
|
0x00000000,
|
|
0x00000640,
|
|
0x00000640,
|
|
0x00000640,
|
|
0x0bb80fa0,
|
|
0x0fa00fa0,
|
|
0x0fa00bb8,
|
|
0x0bb80fa0,
|
|
0x00000fa0,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x01400000,
|
|
0x00f00000,
|
|
0x00000400,
|
|
0xfffffec8,
|
|
0x01400000,
|
|
0x00000155,
|
|
0x00000100,
|
|
0x81f00000,
|
|
};
|
|
uint32_t resCop2d[32] = {
|
|
0x00000b50,
|
|
0xfffff4b0,
|
|
0x00e700d5,
|
|
0xfffffe21,
|
|
0x00b90119,
|
|
0xfffffe65,
|
|
0x2094a539,
|
|
0x00000572,
|
|
0x00001000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00f40176,
|
|
0x00f9016b,
|
|
0x00ed0176,
|
|
0x00ed0176,
|
|
0x00000000,
|
|
0x000015eb,
|
|
0x000015aa,
|
|
0x000015d9,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x20000000,
|
|
0x00000000,
|
|
0x00572786,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000020,
|
|
};
|
|
|
|
void doTest() {
|
|
command = 0x00080413;
|
|
printf("testing GTE::NCDS... \n");
|
|
assignRegisters(cop2c, cop2d);
|
|
GTE.execute(command, nullptr);
|
|
checkResult(resCop2c, resCop2d);
|
|
printf("Done.\n");
|
|
}
|
|
};
|
|
class testNCLIP : public testGTE {
|
|
public:
|
|
uint32_t cop2c[32] = {
|
|
0x00000ffb,
|
|
0xffb7ff44,
|
|
0xf9ca0ebc,
|
|
0x063700ad,
|
|
0x00000eb7,
|
|
0x00000000,
|
|
0xfffffeac,
|
|
0x00001700,
|
|
0x00000000,
|
|
0x00000fa0,
|
|
0x0000f060,
|
|
0x0000f060,
|
|
0x00000000,
|
|
0x00000640,
|
|
0x00000640,
|
|
0x00000640,
|
|
0x0bb80fa0,
|
|
0x0fa00fa0,
|
|
0x0fa00bb8,
|
|
0x0bb80fa0,
|
|
0x00000fa0,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x01400000,
|
|
0x00f00000,
|
|
0x00000400,
|
|
0xfffffec8,
|
|
0x01400000,
|
|
0x00000155,
|
|
0x00000100,
|
|
0x00001000,
|
|
};
|
|
uint32_t cop2d[32] = {
|
|
0x00e70119,
|
|
0xfffffe65,
|
|
0x00e700d5,
|
|
0xfffffe21,
|
|
0x00b90119,
|
|
0xfffffe65,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00001000,
|
|
0x0000012b,
|
|
0xfffffff0,
|
|
0x000015d9,
|
|
0x00f40176,
|
|
0x00f9016b,
|
|
0x00ed0176,
|
|
0x00ed0176,
|
|
0x00000000,
|
|
0x000015eb,
|
|
0x000015aa,
|
|
0x000015d9,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x0106e038,
|
|
0x0000012b,
|
|
0xfffffff0,
|
|
0x000015d9,
|
|
0x00007c02,
|
|
0x00007c02,
|
|
0x00000000,
|
|
0x00000020,
|
|
};
|
|
uint32_t resCop2c[32] = {
|
|
0x00000ffb,
|
|
0xffb7ff44,
|
|
0xf9ca0ebc,
|
|
0x063700ad,
|
|
0x00000eb7,
|
|
0x00000000,
|
|
0xfffffeac,
|
|
0x00001700,
|
|
0x00000000,
|
|
0x00000fa0,
|
|
0x0000f060,
|
|
0x0000f060,
|
|
0x00000000,
|
|
0x00000640,
|
|
0x00000640,
|
|
0x00000640,
|
|
0x0bb80fa0,
|
|
0x0fa00fa0,
|
|
0x0fa00bb8,
|
|
0x0bb80fa0,
|
|
0x00000fa0,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x01400000,
|
|
0x00f00000,
|
|
0x00000400,
|
|
0xfffffec8,
|
|
0x01400000,
|
|
0x00000155,
|
|
0x00000100,
|
|
0x00000000,
|
|
};
|
|
uint32_t resCop2d[32] = {
|
|
0x00e70119,
|
|
0xfffffe65,
|
|
0x00e700d5,
|
|
0xfffffe21,
|
|
0x00b90119,
|
|
0xfffffe65,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00001000,
|
|
0x0000012b,
|
|
0xfffffff0,
|
|
0x000015d9,
|
|
0x00f40176,
|
|
0x00f9016b,
|
|
0x00ed0176,
|
|
0x00ed0176,
|
|
0x00000000,
|
|
0x000015eb,
|
|
0x000015aa,
|
|
0x000015d9,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x0000004d,
|
|
0x0000012b,
|
|
0xfffffff0,
|
|
0x000015d9,
|
|
0x00007c02,
|
|
0x00007c02,
|
|
0x00000000,
|
|
0x00000020,
|
|
};
|
|
|
|
void doTest() {
|
|
command = 0x00000006;
|
|
printf("testing GTE::NCLIP...\n");
|
|
assignRegisters(cop2c, cop2d);
|
|
GTE.execute(command, nullptr);
|
|
checkResult(resCop2c, resCop2d);
|
|
printf("Done.\n");
|
|
}
|
|
};
|
|
class testMVMVA : public testGTE {
|
|
public:
|
|
uint32_t cop2c[32] = {
|
|
0xff35cdf4,
|
|
0xf8acd6a6,
|
|
0x1954aa70,
|
|
0xae7b5062,
|
|
0x00000c63,
|
|
0xcad4cc39,
|
|
0xb9c11958,
|
|
0xa942b312,
|
|
0xaf436779,
|
|
0x3c2d507a,
|
|
0x95f99741,
|
|
0x72413224,
|
|
0x0000499d,
|
|
0x0a37d280,
|
|
0xdbe8feec,
|
|
0x2395909a,
|
|
0x47364c98,
|
|
0x795c2ed7,
|
|
0x637e48f4,
|
|
0x89557da5,
|
|
0xffff997a,
|
|
0x690eb551,
|
|
0x3dfb368e,
|
|
0x2bbe355f,
|
|
0xb07c9d22,
|
|
0x030c876b,
|
|
0x00003b7d,
|
|
0x0000765a,
|
|
0x228c2901,
|
|
0xffffe86f,
|
|
0xffffaf93,
|
|
0xc741f000,
|
|
};
|
|
uint32_t cop2d[32] = {
|
|
0x91d5c574,
|
|
0xffffdf9c,
|
|
0xcea213bc,
|
|
0x0000143e,
|
|
0x2360a947,
|
|
0x00003248,
|
|
0x1747e72e,
|
|
0x0000cc08,
|
|
0x0000381d,
|
|
0xffffe2ff,
|
|
0xffffe0f8,
|
|
0xffffe1b6,
|
|
0x9da7438d,
|
|
0xff60f0ed,
|
|
0xbf5961ab,
|
|
0xbf5961ab,
|
|
0x0000b1c1,
|
|
0x0000dda6,
|
|
0x0000ce75,
|
|
0x0000b2d1,
|
|
0xdb01b77a,
|
|
0x19cd28cd,
|
|
0x1a75d97a,
|
|
0xe91dc0ad,
|
|
0x764e464f,
|
|
0x4aa5a1e5,
|
|
0x3b1a1977,
|
|
0x39fb3f5f,
|
|
0xfe8de0c9,
|
|
0x00000007,
|
|
};
|
|
uint32_t resCop2c[32] = {
|
|
0xff35cdf4,
|
|
0xf8acd6a6,
|
|
0x1954aa70,
|
|
0xae7b5062,
|
|
0x00000c63,
|
|
0xcad4cc39,
|
|
0xb9c11958,
|
|
0xa942b312,
|
|
0xaf436779,
|
|
0x3c2d507a,
|
|
0x95f99741,
|
|
0x72413224,
|
|
0x0000499d,
|
|
0x0a37d280,
|
|
0xdbe8feec,
|
|
0x2395909a,
|
|
0x47364c98,
|
|
0x795c2ed7,
|
|
0x637e48f4,
|
|
0x89557da5,
|
|
0xffff997a,
|
|
0x690eb551,
|
|
0x3dfb368e,
|
|
0x2bbe355f,
|
|
0xb07c9d22,
|
|
0x030c876b,
|
|
0x00003b7d,
|
|
0x0000765a,
|
|
0x228c2901,
|
|
0xffffe86f,
|
|
0xffffaf93,
|
|
0x81c00000,
|
|
};
|
|
uint32_t resCop2d[32] = {
|
|
0x91d5c574,
|
|
0xffffdf9c,
|
|
0xcea213bc,
|
|
0x0000143e,
|
|
0x2360a947,
|
|
0x00003248,
|
|
0x1747e72e,
|
|
0x0000cc08,
|
|
0x0000381d,
|
|
0xffff8000,
|
|
0xffff8000,
|
|
0xffff8000,
|
|
0x9da7438d,
|
|
0xff60f0ed,
|
|
0xbf5961ab,
|
|
0xbf5961ab,
|
|
0x0000b1c1,
|
|
0x0000dda6,
|
|
0x0000ce75,
|
|
0x0000b2d1,
|
|
0xdb01b77a,
|
|
0x19cd28cd,
|
|
0x1a75d97a,
|
|
0xe91dc0ad,
|
|
0x764e464f,
|
|
0xcad5dc86,
|
|
0xb9c34e06,
|
|
0xa943a529,
|
|
0xfe8de0c9,
|
|
0x00000007,
|
|
};
|
|
|
|
void doTest() {
|
|
command = 0x00080012;
|
|
printf("testing GTE::MVMVA... \n");
|
|
assignRegisters(cop2c, cop2d);
|
|
GTE.execute(command, nullptr);
|
|
checkResult(resCop2c, resCop2d);
|
|
printf("Done.\n");
|
|
}
|
|
};
|
|
class testDPCS : public testGTE {
|
|
public:
|
|
uint32_t cop2c[32] = {
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xfffff000,
|
|
};
|
|
uint32_t cop2d[32] = {
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0x0000ffff,
|
|
0xffffffff,
|
|
0x00000f80,
|
|
0x00000f80,
|
|
0x00000f80,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0x0000ffff,
|
|
0x0000ffff,
|
|
0x0000ffff,
|
|
0x0000ffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0x00007fff,
|
|
0x00007fff,
|
|
0xffffffff,
|
|
0x00000020,
|
|
};
|
|
uint32_t resCop2c[32] = {
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
};
|
|
uint32_t resCop2d[32] = {
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0x0000ffff,
|
|
0xffffffff,
|
|
0x00000ff0,
|
|
0x00000ff0,
|
|
0x00000ff0,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0x0000ffff,
|
|
0x0000ffff,
|
|
0x0000ffff,
|
|
0x0000ffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0xffffffff,
|
|
0x00000ff0,
|
|
0x00000ff0,
|
|
0x00000ff0,
|
|
0x00007fff,
|
|
0x00007fff,
|
|
0xffffffff,
|
|
0x00000020,
|
|
};
|
|
|
|
void doTest() {
|
|
command = 0x00080010;
|
|
printf("testing GTE::DPCS... \n");
|
|
assignRegisters(cop2c, cop2d);
|
|
GTE.execute(command, nullptr);
|
|
checkResult(resCop2c, resCop2d);
|
|
printf("Done.\n");
|
|
}
|
|
};
|
|
class testNCT : public testGTE {
|
|
public:
|
|
uint32_t cop2c[32] = {
|
|
0xff35cdf4,
|
|
0xf8acd6a6,
|
|
0x1954aa70,
|
|
0xae7b5062,
|
|
0x00000c63,
|
|
0xcad4cc39,
|
|
0xb9c11958,
|
|
0xa942b312,
|
|
0xaf436779,
|
|
0x3c2d507a,
|
|
0x95f99741,
|
|
0x72413224,
|
|
0x0000499d,
|
|
0x0a37d280,
|
|
0xdbe8feec,
|
|
0x2395909a,
|
|
0x47364c98,
|
|
0x795c2ed7,
|
|
0x637e48f4,
|
|
0x89557da5,
|
|
0xffff997a,
|
|
0x690eb551,
|
|
0x3dfb368e,
|
|
0x2bbe355f,
|
|
0x307c9d22,
|
|
0x030c876b,
|
|
0x00003b7d,
|
|
0x0000765a,
|
|
0x228c2901,
|
|
0xffffe86f,
|
|
0xffffaf93,
|
|
0xc741f000,
|
|
};
|
|
uint32_t cop2d[32] = {
|
|
0x91d5c574,
|
|
0xffffdf9c,
|
|
0xcea213bc,
|
|
0x0000143e,
|
|
0x2360a947,
|
|
0x00003248,
|
|
0x1747e72e,
|
|
0x0000cc08,
|
|
0x0000381d,
|
|
0xffffe2ff,
|
|
0xffffe0f8,
|
|
0xffffe1b6,
|
|
0x9da7438d,
|
|
0xff60f0ed,
|
|
0xbf5961ab,
|
|
0xbf5961ab,
|
|
0x0000b1c1,
|
|
0x0000dda6,
|
|
0x0000ce75,
|
|
0x0000b2d1,
|
|
0xdb01b77a,
|
|
0x19cd28cd,
|
|
0x1a75d97a,
|
|
0xe91dc0ad,
|
|
0x764e464f,
|
|
0x4aa5a1e5,
|
|
0x3b1a1977,
|
|
0x39fb3f5f,
|
|
0x00000000,
|
|
0x00000000,
|
|
0xfe8de0c9,
|
|
0x00000007,
|
|
};
|
|
uint32_t resCop2c[32] = {
|
|
0xff35cdf4,
|
|
0xf8acd6a6,
|
|
0x1954aa70,
|
|
0xae7b5062,
|
|
0x00000c63,
|
|
0xcad4cc39,
|
|
0xb9c11958,
|
|
0xa942b312,
|
|
0xaf436779,
|
|
0x3c2d507a,
|
|
0x95f99741,
|
|
0x72413224,
|
|
0x0000499d,
|
|
0x0a37d280,
|
|
0xdbe8feec,
|
|
0x2395909a,
|
|
0x47364c98,
|
|
0x795c2ed7,
|
|
0x637e48f4,
|
|
0x89557da5,
|
|
0xffff997a,
|
|
0x690eb551,
|
|
0x3dfb368e,
|
|
0x2bbe355f,
|
|
0x307c9d22,
|
|
0x030c876b,
|
|
0x00003b7d,
|
|
0x0000765a,
|
|
0x228c2901,
|
|
0xffffe86f,
|
|
0xffffaf93,
|
|
0x81f80000,
|
|
};
|
|
uint32_t resCop2d[32] = {
|
|
0x91d5c574,
|
|
0xffffdf9c,
|
|
0xcea213bc,
|
|
0x0000143e,
|
|
0x2360a947,
|
|
0x00003248,
|
|
0x1747e72e,
|
|
0x0000cc08,
|
|
0x0000381d,
|
|
0x00007fff,
|
|
0xffff8000,
|
|
0x00007fff,
|
|
0x9da7438d,
|
|
0xff60f0ed,
|
|
0xbf5961ab,
|
|
0xbf5961ab,
|
|
0x0000b1c1,
|
|
0x0000dda6,
|
|
0x0000ce75,
|
|
0x0000b2d1,
|
|
0x17ff00ff,
|
|
0x17ff00ff,
|
|
0x17ff00ff,
|
|
0xe91dc0ad,
|
|
0x764e464f,
|
|
0x0a34aac5,
|
|
0xdbe60855,
|
|
0x239224a0,
|
|
0x00007c1f,
|
|
0x00007c1f,
|
|
0xfe8de0c9,
|
|
0x00000007,
|
|
};
|
|
|
|
void doTest() {
|
|
command = 0x00080020;
|
|
printf("testing GTE::NCT... \n");
|
|
assignRegisters(cop2c, cop2d);
|
|
GTE.execute(command, nullptr);
|
|
checkResult(resCop2c, resCop2d);
|
|
printf("Done.\n");
|
|
}
|
|
}; |