mirror of https://github.com/PCSX2/pcsx2.git
iop rec: plug GTE (aka COP2) in the recompiler
Code isn't enabled yet to avoid any breakage Edit iR3000ATables.cpp line 1446
This commit is contained in:
parent
b6693c4345
commit
d78d515acb
|
@ -37,6 +37,16 @@ static void rpsx##f() { \
|
|||
/* branch = 2; */\
|
||||
}
|
||||
|
||||
// Same as above but with a different naming convension (to avoid various rename)
|
||||
#define REC_GTE_FUNC(f) \
|
||||
static void rgte##f() { \
|
||||
xMOV(ptr32[&psxRegs.code], (u32)psxRegs.code); \
|
||||
_psxFlushCall(FLUSH_EVERYTHING); \
|
||||
xFastCall((void*)(uptr)gte##f); \
|
||||
PSX_DEL_CONST(_Rt_); \
|
||||
/* branch = 2; */\
|
||||
}
|
||||
|
||||
extern void psxLWL();
|
||||
extern void psxLWR();
|
||||
extern void psxSWL();
|
||||
|
@ -1381,6 +1391,36 @@ void rpsxRFE()
|
|||
xFastCall((void*)(uptr)&iopTestIntc );
|
||||
}
|
||||
|
||||
//// COP2
|
||||
REC_GTE_FUNC(RTPS);
|
||||
REC_GTE_FUNC(NCLIP);
|
||||
REC_GTE_FUNC(OP);
|
||||
REC_GTE_FUNC(DPCS);
|
||||
REC_GTE_FUNC(INTPL);
|
||||
REC_GTE_FUNC(MVMVA);
|
||||
REC_GTE_FUNC(NCDS);
|
||||
REC_GTE_FUNC(CDP);
|
||||
REC_GTE_FUNC(NCDT);
|
||||
REC_GTE_FUNC(NCCS);
|
||||
REC_GTE_FUNC(CC);
|
||||
REC_GTE_FUNC(NCS);
|
||||
REC_GTE_FUNC(NCT);
|
||||
REC_GTE_FUNC(SQR);
|
||||
REC_GTE_FUNC(DCPL);
|
||||
REC_GTE_FUNC(DPCT);
|
||||
REC_GTE_FUNC(AVSZ3);
|
||||
REC_GTE_FUNC(AVSZ4);
|
||||
REC_GTE_FUNC(RTPT);
|
||||
REC_GTE_FUNC(GPF);
|
||||
REC_GTE_FUNC(GPL);
|
||||
REC_GTE_FUNC(NCCT);
|
||||
|
||||
REC_GTE_FUNC(MFC2);
|
||||
REC_GTE_FUNC(CFC2);
|
||||
REC_GTE_FUNC(MTC2);
|
||||
REC_GTE_FUNC(CTC2);
|
||||
|
||||
|
||||
// R3000A tables
|
||||
extern void (*rpsxBSC[64])();
|
||||
extern void (*rpsxSPC[64])();
|
||||
|
@ -1392,7 +1432,8 @@ extern void (*rpsxCP2BSC[32])();
|
|||
static void rpsxSPECIAL() { rpsxSPC[_Funct_](); }
|
||||
static void rpsxREGIMM() { rpsxREG[_Rt_](); }
|
||||
static void rpsxCOP0() { rpsxCP0[_Rs_](); }
|
||||
//static void rpsxBASIC() { rpsxCP2BSC[_Rs_](); }
|
||||
static void rpsxCOP2() { rpsxCP2[_Funct_](); }
|
||||
static void rpsxBASIC() { rpsxCP2BSC[_Rs_](); }
|
||||
|
||||
static void rpsxNULL() {
|
||||
Console.WriteLn("psxUNK: %8.8x", psxRegs.code);
|
||||
|
@ -1402,7 +1443,7 @@ void (*rpsxBSC[64])() = {
|
|||
rpsxSPECIAL, rpsxREGIMM, rpsxJ , rpsxJAL , rpsxBEQ , rpsxBNE , rpsxBLEZ, rpsxBGTZ,
|
||||
rpsxADDI , rpsxADDIU , rpsxSLTI, rpsxSLTIU, rpsxANDI, rpsxORI , rpsxXORI, rpsxLUI ,
|
||||
rpsxCOP0 , rpsxNULL , rpsxNULL, rpsxNULL , rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL,
|
||||
rpsxNULL , rpsxNULL , rpsxNULL, rpsxNULL , rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL,
|
||||
rpsxNULL , rpsxNULL , rpsxNULL /*rpsxCOP2*/, rpsxNULL , rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL,
|
||||
rpsxLB , rpsxLH , rpsxLWL , rpsxLW , rpsxLBU , rpsxLHU , rpsxLWR , rpsxNULL,
|
||||
rpsxSB , rpsxSH , rpsxSWL , rpsxSW , rpsxNULL, rpsxNULL, rpsxSWR , rpsxNULL,
|
||||
rpsxNULL , rpsxNULL , rpsxNULL, rpsxNULL , rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL,
|
||||
|
@ -1434,6 +1475,24 @@ void (*rpsxCP0[32])() = {
|
|||
rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL
|
||||
};
|
||||
|
||||
void (*rpsxCP2[64])() = {
|
||||
rpsxBASIC, rgteRTPS , rpsxNULL , rpsxNULL, rpsxNULL, rpsxNULL , rgteNCLIP, rpsxNULL, // 00
|
||||
rpsxNULL , rpsxNULL , rpsxNULL , rpsxNULL, rgteOP , rpsxNULL , rpsxNULL , rpsxNULL, // 08
|
||||
rgteDPCS , rgteINTPL, rgteMVMVA, rgteNCDS, rgteCDP , rpsxNULL , rgteNCDT , rpsxNULL, // 10
|
||||
rpsxNULL , rpsxNULL , rpsxNULL , rgteNCCS, rgteCC , rpsxNULL , rgteNCS , rpsxNULL, // 18
|
||||
rgteNCT , rpsxNULL , rpsxNULL , rpsxNULL, rpsxNULL, rpsxNULL , rpsxNULL , rpsxNULL, // 20
|
||||
rgteSQR , rgteDCPL , rgteDPCT , rpsxNULL, rpsxNULL, rgteAVSZ3, rgteAVSZ4, rpsxNULL, // 28
|
||||
rgteRTPT , rpsxNULL , rpsxNULL , rpsxNULL, rpsxNULL, rpsxNULL , rpsxNULL , rpsxNULL, // 30
|
||||
rpsxNULL , rpsxNULL , rpsxNULL , rpsxNULL, rpsxNULL, rgteGPF , rgteGPL , rgteNCCT // 38
|
||||
};
|
||||
|
||||
void(*rpsxCP2BSC[32])() = {
|
||||
rgteMFC2, rpsxNULL, rgteCFC2, rpsxNULL, rgteMTC2, rpsxNULL, rgteCTC2, rpsxNULL,
|
||||
rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL,
|
||||
rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL,
|
||||
rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL, rpsxNULL
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////
|
||||
// Back-Prob Function Tables - Gathering Info //
|
||||
////////////////////////////////////////////////
|
||||
|
|
Loading…
Reference in New Issue