[Project64] Better handling of div / 0
This commit is contained in:
parent
c51ff3a829
commit
10f662da94
|
@ -1760,7 +1760,7 @@ void R4300iOp::SPECIAL_MULTU()
|
||||||
|
|
||||||
void R4300iOp::SPECIAL_DIV()
|
void R4300iOp::SPECIAL_DIV()
|
||||||
{
|
{
|
||||||
if (_GPR[m_Opcode.rt].UDW != 0)
|
if (_GPR[m_Opcode.rt].W[0] != 0)
|
||||||
{
|
{
|
||||||
_RegLO->DW = _GPR[m_Opcode.rs].W[0] / _GPR[m_Opcode.rt].W[0];
|
_RegLO->DW = _GPR[m_Opcode.rs].W[0] / _GPR[m_Opcode.rt].W[0];
|
||||||
_RegHI->DW = _GPR[m_Opcode.rs].W[0] % _GPR[m_Opcode.rt].W[0];
|
_RegHI->DW = _GPR[m_Opcode.rs].W[0] % _GPR[m_Opcode.rt].W[0];
|
||||||
|
@ -2094,18 +2094,18 @@ void R4300iOp::REGIMM_BGEZAL()
|
||||||
m_JumpToLocation = (*_PROGRAM_COUNTER) + ((int16_t)m_Opcode.offset << 2) + 4;
|
m_JumpToLocation = (*_PROGRAM_COUNTER) + ((int16_t)m_Opcode.offset << 2) + 4;
|
||||||
if ((*_PROGRAM_COUNTER) == m_JumpToLocation)
|
if ((*_PROGRAM_COUNTER) == m_JumpToLocation)
|
||||||
{
|
{
|
||||||
if (g_Settings->LoadBool(Debugger_Enabled))
|
if (g_Settings->LoadBool(Debugger_Enabled))
|
||||||
{
|
{
|
||||||
if (g_Reg->m_PROGRAM_COUNTER < 0x80000400)
|
if (g_Reg->m_PROGRAM_COUNTER < 0x80000400)
|
||||||
{
|
{
|
||||||
// Break out of possible checksum halt
|
// Break out of possible checksum halt
|
||||||
g_Notify->DisplayMessage(5, "Broke out of permanent loop! Invalid checksum?");
|
g_Notify->DisplayMessage(5, "Broke out of permanent loop! Invalid checksum?");
|
||||||
m_JumpToLocation = (*_PROGRAM_COUNTER) + 8;
|
m_JumpToLocation = (*_PROGRAM_COUNTER) + 8;
|
||||||
_GPR[31].DW = (int32_t)((*_PROGRAM_COUNTER) + 8);
|
_GPR[31].DW = (int32_t)((*_PROGRAM_COUNTER) + 8);
|
||||||
R4300iOp::m_NextInstruction = DELAY_SLOT;
|
R4300iOp::m_NextInstruction = DELAY_SLOT;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!DelaySlotEffectsCompare((*_PROGRAM_COUNTER), m_Opcode.rs, 0))
|
if (!DelaySlotEffectsCompare((*_PROGRAM_COUNTER), m_Opcode.rs, 0))
|
||||||
{
|
{
|
||||||
CInterpreterCPU::InPermLoop();
|
CInterpreterCPU::InPermLoop();
|
||||||
|
|
Loading…
Reference in New Issue