From 8b71ef3bc135c2f94e0137e8970a473a25ad935c Mon Sep 17 00:00:00 2001 From: zilmar Date: Thu, 7 Sep 2023 11:23:35 +0930 Subject: [PATCH] RSP: Add RSP_Vector_Reserved --- .../cpu/RSPInterpreterCPU.cpp | 38 +++++++++---------- .../cpu/RSPInterpreterOps.cpp | 13 +++++-- .../cpu/RSPInterpreterOps.h | 2 +- 3 files changed, 29 insertions(+), 24 deletions(-) diff --git a/Source/Project64-rsp-core/cpu/RSPInterpreterCPU.cpp b/Source/Project64-rsp-core/cpu/RSPInterpreterCPU.cpp index dfaff26e73..48b2266323 100644 --- a/Source/Project64-rsp-core/cpu/RSPInterpreterCPU.cpp +++ b/Source/Project64-rsp-core/cpu/RSPInterpreterCPU.cpp @@ -257,20 +257,20 @@ void BuildInterpreterCPU(void) RSP_Vector[15] = RSP_Vector_VMADH; RSP_Vector[16] = RSP_Vector_VADD; RSP_Vector[17] = RSP_Vector_VSUB; - RSP_Vector[18] = RSP_Vector_VSUT; + RSP_Vector[18] = RSP_Vector_Reserved; RSP_Vector[19] = RSP_Vector_VABS; RSP_Vector[20] = RSP_Vector_VADDC; RSP_Vector[21] = RSP_Vector_VSUBC; - RSP_Vector[22] = rsp_UnknownOpcode; - RSP_Vector[23] = rsp_UnknownOpcode; - RSP_Vector[24] = rsp_UnknownOpcode; - RSP_Vector[25] = rsp_UnknownOpcode; - RSP_Vector[26] = rsp_UnknownOpcode; - RSP_Vector[27] = rsp_UnknownOpcode; - RSP_Vector[28] = rsp_UnknownOpcode; + RSP_Vector[22] = RSP_Vector_Reserved; + RSP_Vector[23] = RSP_Vector_Reserved; + RSP_Vector[24] = RSP_Vector_Reserved; + RSP_Vector[25] = RSP_Vector_Reserved; + RSP_Vector[26] = RSP_Vector_Reserved; + RSP_Vector[27] = RSP_Vector_Reserved; + RSP_Vector[28] = RSP_Vector_Reserved; RSP_Vector[29] = RSP_Vector_VSAW; - RSP_Vector[30] = rsp_UnknownOpcode; - RSP_Vector[31] = rsp_UnknownOpcode; + RSP_Vector[30] = RSP_Vector_Reserved; + RSP_Vector[31] = RSP_Vector_Reserved; RSP_Vector[32] = RSP_Vector_VLT; RSP_Vector[33] = RSP_Vector_VEQ; RSP_Vector[34] = RSP_Vector_VNE; @@ -285,8 +285,8 @@ void BuildInterpreterCPU(void) RSP_Vector[43] = RSP_Vector_VNOR; RSP_Vector[44] = RSP_Vector_VXOR; RSP_Vector[45] = RSP_Vector_VNXOR; - RSP_Vector[46] = rsp_UnknownOpcode; - RSP_Vector[47] = rsp_UnknownOpcode; + RSP_Vector[46] = RSP_Vector_Reserved; + RSP_Vector[47] = RSP_Vector_Reserved; RSP_Vector[48] = RSP_Vector_VRCP; RSP_Vector[49] = RSP_Vector_VRCPL; RSP_Vector[50] = RSP_Vector_VRCPH; @@ -295,13 +295,13 @@ void BuildInterpreterCPU(void) RSP_Vector[53] = RSP_Vector_VRSQL; RSP_Vector[54] = RSP_Vector_VRSQH; RSP_Vector[55] = RSP_Vector_VNOOP; - RSP_Vector[56] = rsp_UnknownOpcode; - RSP_Vector[57] = rsp_UnknownOpcode; - RSP_Vector[58] = rsp_UnknownOpcode; - RSP_Vector[59] = rsp_UnknownOpcode; - RSP_Vector[60] = rsp_UnknownOpcode; - RSP_Vector[61] = rsp_UnknownOpcode; - RSP_Vector[62] = rsp_UnknownOpcode; + RSP_Vector[56] = RSP_Vector_Reserved; + RSP_Vector[57] = RSP_Vector_Reserved; + RSP_Vector[58] = RSP_Vector_Reserved; + RSP_Vector[59] = RSP_Vector_Reserved; + RSP_Vector[60] = RSP_Vector_Reserved; + RSP_Vector[61] = RSP_Vector_Reserved; + RSP_Vector[62] = RSP_Vector_Reserved; RSP_Vector[63] = rsp_UnknownOpcode; RSP_Lc2[0] = RSP_Opcode_LBV; diff --git a/Source/Project64-rsp-core/cpu/RSPInterpreterOps.cpp b/Source/Project64-rsp-core/cpu/RSPInterpreterOps.cpp index bdaa9386c2..eb08e0e6f0 100644 --- a/Source/Project64-rsp-core/cpu/RSPInterpreterOps.cpp +++ b/Source/Project64-rsp-core/cpu/RSPInterpreterOps.cpp @@ -1276,10 +1276,6 @@ void RSP_Vector_VSUB(void) RSP_Vect[RSPOpC.vd] = Result; } -void RSP_Vector_VSUT(void) -{ -} - void RSP_Vector_VABS(void) { RSPVector Result; @@ -1342,6 +1338,15 @@ void RSP_Vector_VSUBC(void) RSP_Vect[RSPOpC.vd] = Result; } +void RSP_Vector_Reserved(void) +{ + for (uint8_t el = 0; el < 8; el++) + { + RSP_ACCUM[el].HW[1] = RSP_Vect[RSPOpC.vs].s16(el) + RSP_Vect[RSPOpC.vt].se(el, RSPOpC.e); + } + RSP_Vect[RSPOpC.vd] = RSPVector(); +} + void RSP_Vector_VSAW(void) { RSPVector Result; diff --git a/Source/Project64-rsp-core/cpu/RSPInterpreterOps.h b/Source/Project64-rsp-core/cpu/RSPInterpreterOps.h index a1ebddd810..ea8b06ac1e 100644 --- a/Source/Project64-rsp-core/cpu/RSPInterpreterOps.h +++ b/Source/Project64-rsp-core/cpu/RSPInterpreterOps.h @@ -89,10 +89,10 @@ void RSP_Vector_VMADN(void); void RSP_Vector_VMADH(void); void RSP_Vector_VADD(void); void RSP_Vector_VSUB(void); -void RSP_Vector_VSUT(void); void RSP_Vector_VABS(void); void RSP_Vector_VADDC(void); void RSP_Vector_VSUBC(void); +void RSP_Vector_Reserved(void); void RSP_Vector_VSAW(void); void RSP_Vector_VLT(void); void RSP_Vector_VEQ(void);