diff --git a/Source/Project64-core/N64System/Interpreter/InterpreterOps.cpp b/Source/Project64-core/N64System/Interpreter/InterpreterOps.cpp index 7bc7447a5..b3825546f 100644 --- a/Source/Project64-core/N64System/Interpreter/InterpreterOps.cpp +++ b/Source/Project64-core/N64System/Interpreter/InterpreterOps.cpp @@ -274,11 +274,11 @@ R4300iOp::Func * R4300iOp::BuildInterpreter() Jump_Regimm[31] = UnknownOpcode; Jump_CoP0[0] = COP0_MF; - Jump_CoP0[1] = UnknownOpcode; + Jump_CoP0[1] = COP0_MF; Jump_CoP0[2] = UnknownOpcode; Jump_CoP0[3] = UnknownOpcode; Jump_CoP0[4] = COP0_MT; - Jump_CoP0[5] = UnknownOpcode; + Jump_CoP0[5] = COP0_MT; Jump_CoP0[6] = UnknownOpcode; Jump_CoP0[7] = UnknownOpcode; Jump_CoP0[8] = UnknownOpcode; @@ -1882,6 +1882,7 @@ void R4300iOp::COP0_MT() case 16: // Config case 18: // WatchLo case 19: // WatchHi + case 20: // XContext case 28: // Tag lo case 29: // Tag Hi case 30: // ErrEPC diff --git a/Source/Project64-core/N64System/Mips/Register.cpp b/Source/Project64-core/N64System/Mips/Register.cpp index ac1cc4a2d..8b67d3505 100644 --- a/Source/Project64-core/N64System/Mips/Register.cpp +++ b/Source/Project64-core/N64System/Mips/Register.cpp @@ -67,6 +67,7 @@ CP0registers::CP0registers(uint32_t * _CP0) : STATUS_REGISTER(_CP0[12]), CAUSE_REGISTER(_CP0[13]), EPC_REGISTER(_CP0[14]), + PREVID_REGISTER(_CP0[15]), CONFIG_REGISTER(_CP0[16]), TAGLO_REGISTER(_CP0[28]), TAGHI_REGISTER(_CP0[29]), diff --git a/Source/Project64-core/N64System/Mips/Register.h b/Source/Project64-core/N64System/Mips/Register.h index 331f24e7d..23828392f 100644 --- a/Source/Project64-core/N64System/Mips/Register.h +++ b/Source/Project64-core/N64System/Mips/Register.h @@ -37,6 +37,7 @@ public: uint32_t & STATUS_REGISTER; uint32_t & CAUSE_REGISTER; uint32_t & EPC_REGISTER; + uint32_t & PREVID_REGISTER; uint32_t & CONFIG_REGISTER; uint32_t & TAGLO_REGISTER; uint32_t & TAGHI_REGISTER; diff --git a/Source/Project64-core/N64System/N64System.cpp b/Source/Project64-core/N64System/N64System.cpp index bd8125cf1..11471cf5f 100644 --- a/Source/Project64-core/N64System/N64System.cpp +++ b/Source/Project64-core/N64System/N64System.cpp @@ -1035,7 +1035,8 @@ void CN64System::InitRegisters(bool bPostPif, CMipsMemoryVM & MMU) m_Reg.EPC_REGISTER = 0xFFFFFFFF; m_Reg.BAD_VADDR_REGISTER = 0xFFFFFFFF; m_Reg.ERROREPC_REGISTER = 0xFFFFFFFF; - m_Reg.CONFIG_REGISTER = 0x0006E463; + m_Reg.PREVID_REGISTER = 0x00000B22; + m_Reg.CONFIG_REGISTER = 0x7006E463; m_Reg.STATUS_REGISTER = 0x34000000; // N64DD registers