Implement COP1_D_ROUND_L in cpu interpreter

This commit is contained in:
LegendOfDragoon 2016-05-22 23:37:45 -07:00
parent de00171747
commit 32ade84138
3 changed files with 9 additions and 2 deletions

View File

@ -546,7 +546,7 @@ R4300iOp::Func * R4300iOp::BuildInterpreter()
Jump_CoP1_D[5] = COP1_D_ABS; Jump_CoP1_D[5] = COP1_D_ABS;
Jump_CoP1_D[6] = COP1_D_MOV; Jump_CoP1_D[6] = COP1_D_MOV;
Jump_CoP1_D[7] = COP1_D_NEG; Jump_CoP1_D[7] = COP1_D_NEG;
Jump_CoP1_D[8] = UnknownOpcode; Jump_CoP1_D[8] = COP1_D_ROUND_L;
Jump_CoP1_D[9] = COP1_D_TRUNC_L; //added by Witten Jump_CoP1_D[9] = COP1_D_TRUNC_L; //added by Witten
Jump_CoP1_D[10] = COP1_D_CEIL_L; //added by Witten Jump_CoP1_D[10] = COP1_D_CEIL_L; //added by Witten
Jump_CoP1_D[11] = COP1_D_FLOOR_L; //added by Witten Jump_CoP1_D[11] = COP1_D_FLOOR_L; //added by Witten
@ -2658,6 +2658,12 @@ void R4300iOp::COP1_D_NEG()
*(double *)_FPR_D[m_Opcode.fd] = (*(double *)_FPR_D[m_Opcode.fs] * -1.0); *(double *)_FPR_D[m_Opcode.fd] = (*(double *)_FPR_D[m_Opcode.fs] * -1.0);
} }
void R4300iOp::COP1_D_ROUND_L()
{
TEST_COP1_USABLE_EXCEPTION();
Double_RoundToInteger64(&*(uint64_t *)_FPR_S[m_Opcode.fd], &*(double *)_FPR_D[m_Opcode.fs], FE_TONEAREST);
}
void R4300iOp::COP1_D_TRUNC_L() void R4300iOp::COP1_D_TRUNC_L()
{ //added by Witten { //added by Witten
TEST_COP1_USABLE_EXCEPTION(); TEST_COP1_USABLE_EXCEPTION();

View File

@ -182,6 +182,7 @@ public:
static void COP1_D_ABS(); static void COP1_D_ABS();
static void COP1_D_MOV(); static void COP1_D_MOV();
static void COP1_D_NEG(); static void COP1_D_NEG();
static void COP1_D_ROUND_L();
static void COP1_D_TRUNC_L(); //added by Witten static void COP1_D_TRUNC_L(); //added by Witten
static void COP1_D_CEIL_L(); //added by Witten static void COP1_D_CEIL_L(); //added by Witten
static void COP1_D_FLOOR_L(); //added by Witten static void COP1_D_FLOOR_L(); //added by Witten

View File

@ -441,7 +441,7 @@ R4300iOp32::Func * R4300iOp32::BuildInterpreter()
Jump_CoP1_D[5] = R4300iOp::COP1_D_ABS; Jump_CoP1_D[5] = R4300iOp::COP1_D_ABS;
Jump_CoP1_D[6] = R4300iOp::COP1_D_MOV; Jump_CoP1_D[6] = R4300iOp::COP1_D_MOV;
Jump_CoP1_D[7] = R4300iOp::COP1_D_NEG; Jump_CoP1_D[7] = R4300iOp::COP1_D_NEG;
Jump_CoP1_D[8] = R4300iOp::UnknownOpcode; Jump_CoP1_D[8] = R4300iOp::COP1_D_ROUND_L;
Jump_CoP1_D[9] = R4300iOp::COP1_D_TRUNC_L; //added by Witten Jump_CoP1_D[9] = R4300iOp::COP1_D_TRUNC_L; //added by Witten
Jump_CoP1_D[10] = R4300iOp::COP1_D_CEIL_L; //added by Witten Jump_CoP1_D[10] = R4300iOp::COP1_D_CEIL_L; //added by Witten
Jump_CoP1_D[11] = R4300iOp::COP1_D_FLOOR_L; //added by Witten Jump_CoP1_D[11] = R4300iOp::COP1_D_FLOOR_L; //added by Witten