mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-06 06:51:26 +12:00
ppu disasm: Fix AA BC formatting
This commit is contained in:
parent
c4ccac9a9c
commit
5978b1f28f
2 changed files with 24 additions and 6 deletions
|
@ -1,4 +1,4 @@
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "PPUDisAsm.h"
|
#include "PPUDisAsm.h"
|
||||||
#include "PPUFunction.h"
|
#include "PPUFunction.h"
|
||||||
|
|
||||||
|
@ -844,6 +844,7 @@ void PPUDisAsm::BC(ppu_opcode_t op)
|
||||||
case 0x1: inst = "ble"; break;
|
case 0x1: inst = "ble"; break;
|
||||||
case 0x2: inst = "bne"; break;
|
case 0x2: inst = "bne"; break;
|
||||||
case 0x3: inst = "bns"; break;
|
case 0x3: inst = "bns"; break;
|
||||||
|
default: ASSUME(0); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!bo0 && !bo1 && bo2 && bo3 && !bo4)
|
else if (!bo0 && !bo1 && bo2 && bo3 && !bo4)
|
||||||
|
@ -855,6 +856,7 @@ void PPUDisAsm::BC(ppu_opcode_t op)
|
||||||
case 0x1: inst = "ble"; break;
|
case 0x1: inst = "ble"; break;
|
||||||
case 0x2: inst = "bne"; break;
|
case 0x2: inst = "bne"; break;
|
||||||
case 0x3: inst = "bns"; break;
|
case 0x3: inst = "bns"; break;
|
||||||
|
default: ASSUME(0); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!bo0 && !bo1 && bo2 && bo3 && bo4)
|
else if (!bo0 && !bo1 && bo2 && bo3 && bo4)
|
||||||
|
@ -866,6 +868,7 @@ void PPUDisAsm::BC(ppu_opcode_t op)
|
||||||
case 0x1: inst = "ble"; break;
|
case 0x1: inst = "ble"; break;
|
||||||
case 0x2: inst = "bne"; break;
|
case 0x2: inst = "bne"; break;
|
||||||
case 0x3: inst = "bns"; break;
|
case 0x3: inst = "bns"; break;
|
||||||
|
default: ASSUME(0); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!bo0 && bo1 && bo2 && !bo3 && !bo4)
|
else if (!bo0 && bo1 && bo2 && !bo3 && !bo4)
|
||||||
|
@ -876,6 +879,7 @@ void PPUDisAsm::BC(ppu_opcode_t op)
|
||||||
case 0x1: inst = "bgt"; break;
|
case 0x1: inst = "bgt"; break;
|
||||||
case 0x2: inst = "beq"; break;
|
case 0x2: inst = "beq"; break;
|
||||||
case 0x3: inst = "bso"; break;
|
case 0x3: inst = "bso"; break;
|
||||||
|
default: ASSUME(0); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!bo0 && bo1 && bo2 && bo3 && !bo4)
|
else if (!bo0 && bo1 && bo2 && bo3 && !bo4)
|
||||||
|
@ -887,6 +891,7 @@ void PPUDisAsm::BC(ppu_opcode_t op)
|
||||||
case 0x1: inst = "bgt"; break;
|
case 0x1: inst = "bgt"; break;
|
||||||
case 0x2: inst = "beq"; break;
|
case 0x2: inst = "beq"; break;
|
||||||
case 0x3: inst = "bso"; break;
|
case 0x3: inst = "bso"; break;
|
||||||
|
default: ASSUME(0); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!bo0 && bo1 && bo2 && bo3 && bo4)
|
else if (!bo0 && bo1 && bo2 && bo3 && bo4)
|
||||||
|
@ -898,15 +903,24 @@ void PPUDisAsm::BC(ppu_opcode_t op)
|
||||||
case 0x1: inst = "bgt"; break;
|
case 0x1: inst = "bgt"; break;
|
||||||
case 0x2: inst = "beq"; break;
|
case 0x2: inst = "beq"; break;
|
||||||
case 0x3: inst = "bso"; break;
|
case 0x3: inst = "bso"; break;
|
||||||
|
default: ASSUME(0); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
if (inst[0] == '\0')
|
|
||||||
{
|
{
|
||||||
return Write(fmt::format("bc 0x%x, 0x%x, 0x%x, %d, %d", bo, bi, bd, aa, lk));
|
return Write(fmt::format("bc 0x%x, 0x%x, 0x%x, %d, %d", bo, bi, bd, aa, lk));
|
||||||
}
|
}
|
||||||
|
|
||||||
DisAsm_CR_BRANCH(std::string(inst) + (lk ? "l" : "") + (aa ? "a" : "") + sign, bi / 4, bd);
|
const auto msg = std::string(inst) + (lk ? "l" : "") + (aa ? "a" : "") + sign;
|
||||||
|
|
||||||
|
if (aa)
|
||||||
|
{
|
||||||
|
DisAsm_CR_BRANCH_A(msg, bi / 4, bd);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DisAsm_CR_BRANCH(msg, bi / 4, bd);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PPUDisAsm::SC(ppu_opcode_t op)
|
void PPUDisAsm::SC(ppu_opcode_t op)
|
||||||
|
@ -1576,7 +1590,7 @@ void PPUDisAsm::OR(ppu_opcode_t op)
|
||||||
case 0x7fbdeb78: return Write("db10cyc");
|
case 0x7fbdeb78: return Write("db10cyc");
|
||||||
case 0x7fdef378: return Write("db12cyc");
|
case 0x7fdef378: return Write("db12cyc");
|
||||||
case 0x7ffffb78: return Write("db16cyc");
|
case 0x7ffffb78: return Write("db16cyc");
|
||||||
default : DisAsm_R2_RC("mr", op.ra, op.rb, op.rc);
|
default: DisAsm_R2_RC("mr", op.ra, op.rb, op.rc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -239,6 +239,10 @@ private:
|
||||||
{
|
{
|
||||||
Write(fmt::format("%s cr%d,0x%x ", FixOp(op).c_str(), cr, DisAsmBranchTarget(pc)));
|
Write(fmt::format("%s cr%d,0x%x ", FixOp(op).c_str(), cr, DisAsmBranchTarget(pc)));
|
||||||
}
|
}
|
||||||
|
void DisAsm_CR_BRANCH_A(const std::string& op, u32 cr, const int pc)
|
||||||
|
{
|
||||||
|
Write(fmt::format("%s cr%d,0x%x ", FixOp(op).c_str(), cr, pc));
|
||||||
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
u32 disasm(u32 pc) override;
|
u32 disasm(u32 pc) override;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue