Core: Add LLD opcode

This commit is contained in:
zilmar 2023-09-14 16:31:37 +09:30
parent f559aed2ad
commit c02858c7a0
4 changed files with 16 additions and 1 deletions

View File

@ -154,7 +154,7 @@ R4300iOp::Func * R4300iOp::BuildInterpreter()
Jump_Opcode[49] = LWC1;
Jump_Opcode[50] = UnknownOpcode;
Jump_Opcode[51] = UnknownOpcode;
Jump_Opcode[52] = UnknownOpcode;
Jump_Opcode[52] = LLD;
Jump_Opcode[53] = LDC1;
Jump_Opcode[54] = UnknownOpcode;
Jump_Opcode[55] = LD;
@ -1228,6 +1228,15 @@ void R4300iOp::LD()
}
}
void R4300iOp::LLD()
{
uint64_t Address = _GPR[m_Opcode.base].DW + (int16_t)m_Opcode.offset;
if (g_MMU->LD_Memory(Address, _GPR[m_Opcode.rt].UDW))
{
(*_LLBit) = 1;
}
}
void R4300iOp::LDC1()
{
if (TestCop1UsableException())

View File

@ -57,6 +57,7 @@ public:
static void CACHE();
static void LL();
static void LWC1();
static void LLD();
static void LDC1();
static void LD();
static void SC();

View File

@ -542,6 +542,10 @@ void R4300iInstruction::DecodeName(void)
strcpy(m_Name, "LWC1");
sprintf(m_Param, "%s, 0x%04X (%s)", CRegName::FPR[m_Instruction.rt], m_Instruction.offset, CRegName::GPR[m_Instruction.base]);
break;
case R4300i_LLD:
strcpy(m_Name, "LLD");
sprintf(m_Param, "%s, 0x%04X (%s)", CRegName::FPR[m_Instruction.rt], m_Instruction.offset, CRegName::GPR[m_Instruction.base]);
break;
case R4300i_LDC1:
strcpy(m_Name, "LDC1");
sprintf(m_Param, "%s, 0x%04X (%s)", CRegName::FPR[m_Instruction.rt], m_Instruction.offset, CRegName::GPR[m_Instruction.base]);

View File

@ -108,6 +108,7 @@ enum R4300iOpCodes
R4300i_CACHE = 47,
R4300i_LL = 48,
R4300i_LWC1 = 49,
R4300i_LLD = 52,
R4300i_LDC1 = 53,
R4300i_LD = 55,
R4300i_SC = 56,