ppu disasm: Fix AA BC formatting

This commit is contained in:
Eladash 2019-09-26 22:31:00 +03:00 committed by Ani
parent c4ccac9a9c
commit 5978b1f28f
2 changed files with 24 additions and 6 deletions

View File

@ -1,4 +1,4 @@
#include "stdafx.h"
#include "stdafx.h"
#include "PPUDisAsm.h"
#include "PPUFunction.h"
@ -844,6 +844,7 @@ void PPUDisAsm::BC(ppu_opcode_t op)
case 0x1: inst = "ble"; break;
case 0x2: inst = "bne"; break;
case 0x3: inst = "bns"; break;
default: ASSUME(0); break;
}
}
else if (!bo0 && !bo1 && bo2 && bo3 && !bo4)
@ -855,6 +856,7 @@ void PPUDisAsm::BC(ppu_opcode_t op)
case 0x1: inst = "ble"; break;
case 0x2: inst = "bne"; break;
case 0x3: inst = "bns"; break;
default: ASSUME(0); break;
}
}
else if (!bo0 && !bo1 && bo2 && bo3 && bo4)
@ -866,6 +868,7 @@ void PPUDisAsm::BC(ppu_opcode_t op)
case 0x1: inst = "ble"; break;
case 0x2: inst = "bne"; break;
case 0x3: inst = "bns"; break;
default: ASSUME(0); break;
}
}
else if (!bo0 && bo1 && bo2 && !bo3 && !bo4)
@ -876,6 +879,7 @@ void PPUDisAsm::BC(ppu_opcode_t op)
case 0x1: inst = "bgt"; break;
case 0x2: inst = "beq"; break;
case 0x3: inst = "bso"; break;
default: ASSUME(0); break;
}
}
else if (!bo0 && bo1 && bo2 && bo3 && !bo4)
@ -887,6 +891,7 @@ void PPUDisAsm::BC(ppu_opcode_t op)
case 0x1: inst = "bgt"; break;
case 0x2: inst = "beq"; break;
case 0x3: inst = "bso"; break;
default: ASSUME(0); break;
}
}
else if (!bo0 && bo1 && bo2 && bo3 && bo4)
@ -898,15 +903,24 @@ void PPUDisAsm::BC(ppu_opcode_t op)
case 0x1: inst = "bgt"; break;
case 0x2: inst = "beq"; break;
case 0x3: inst = "bso"; break;
default: ASSUME(0); break;
}
}
if (inst[0] == '\0')
else
{
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)

View File

@ -239,6 +239,10 @@ private:
{
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:
u32 disasm(u32 pc) override;