Core: Add BGEZALL to interrupter
This commit is contained in:
parent
e724595ac2
commit
71ddfd885d
|
@ -259,7 +259,7 @@ R4300iOp::Func * R4300iOp::BuildInterpreter()
|
||||||
Jump_Regimm[16] = REGIMM_BLTZAL;
|
Jump_Regimm[16] = REGIMM_BLTZAL;
|
||||||
Jump_Regimm[17] = REGIMM_BGEZAL;
|
Jump_Regimm[17] = REGIMM_BGEZAL;
|
||||||
Jump_Regimm[18] = UnknownOpcode;
|
Jump_Regimm[18] = UnknownOpcode;
|
||||||
Jump_Regimm[19] = UnknownOpcode;
|
Jump_Regimm[19] = REGIMM_BGEZALL;
|
||||||
Jump_Regimm[20] = UnknownOpcode;
|
Jump_Regimm[20] = UnknownOpcode;
|
||||||
Jump_Regimm[21] = UnknownOpcode;
|
Jump_Regimm[21] = UnknownOpcode;
|
||||||
Jump_Regimm[22] = UnknownOpcode;
|
Jump_Regimm[22] = UnknownOpcode;
|
||||||
|
@ -1813,6 +1813,21 @@ void R4300iOp::REGIMM_BGEZAL()
|
||||||
_GPR[31].DW = (int32_t)((*_PROGRAM_COUNTER) + 8);
|
_GPR[31].DW = (int32_t)((*_PROGRAM_COUNTER) + 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void R4300iOp::REGIMM_BGEZALL()
|
||||||
|
{
|
||||||
|
g_System->m_PipelineStage = PIPELINE_STAGE_DELAY_SLOT;
|
||||||
|
if (_GPR[m_Opcode.rs].DW >= 0)
|
||||||
|
{
|
||||||
|
g_System->m_JumpToLocation = (*_PROGRAM_COUNTER) + ((int16_t)m_Opcode.offset << 2) + 4;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_System->m_PipelineStage = PIPELINE_STAGE_JUMP;
|
||||||
|
g_System->m_JumpToLocation = (*_PROGRAM_COUNTER) + 8;
|
||||||
|
}
|
||||||
|
_GPR[31].DW = (int32_t)((*_PROGRAM_COUNTER) + 8);
|
||||||
|
}
|
||||||
|
|
||||||
void R4300iOp::REGIMM_TEQI()
|
void R4300iOp::REGIMM_TEQI()
|
||||||
{
|
{
|
||||||
if (_GPR[m_Opcode.rs].DW == (int64_t)((int16_t)m_Opcode.immediate))
|
if (_GPR[m_Opcode.rs].DW == (int64_t)((int16_t)m_Opcode.immediate))
|
||||||
|
|
|
@ -121,6 +121,7 @@ public:
|
||||||
static void REGIMM_BGEZL();
|
static void REGIMM_BGEZL();
|
||||||
static void REGIMM_BLTZAL();
|
static void REGIMM_BLTZAL();
|
||||||
static void REGIMM_BGEZAL();
|
static void REGIMM_BGEZAL();
|
||||||
|
static void REGIMM_BGEZALL();
|
||||||
static void REGIMM_TEQI();
|
static void REGIMM_TEQI();
|
||||||
static void REGIMM_TGEI();
|
static void REGIMM_TGEI();
|
||||||
static void REGIMM_TGEIU();
|
static void REGIMM_TGEIU();
|
||||||
|
|
Loading…
Reference in New Issue