mirror of
https://github.com/hedge-dev/XenonRecomp.git
synced 2025-06-06 18:31:03 +00:00
Swap between instructions in absoluteSwitch for tag 2 pattern
This commit is contained in:
parent
da9d2e950a
commit
c7d9e1e1b2
@ -26,11 +26,11 @@ void ReadTable(Image& image, SwitchTable& table)
|
||||
uint32_t pOffset;
|
||||
ppc_insn insn;
|
||||
auto* code = (uint32_t*)image.Find(table.base);
|
||||
ppc::Disassemble(code, table.base, insn);
|
||||
pOffset = insn.operands[1] << 16;
|
||||
ppc::Disassemble(code, table.base, insn); // lis
|
||||
pOffset = insn.operands[1] << 16; // Upper 16 bits
|
||||
|
||||
ppc::Disassemble(code + 1, table.base + 4, insn);
|
||||
pOffset += insn.operands[2];
|
||||
ppc::Disassemble(code + 2, table.base + 8, insn); // addi (skip rlwinm at +4)
|
||||
pOffset += insn.operands[2]; // Lower 16 bits
|
||||
|
||||
if (table.type == SWITCH_ABSOLUTE)
|
||||
{
|
||||
@ -250,14 +250,15 @@ int main(int argc, char** argv)
|
||||
}
|
||||
};
|
||||
|
||||
// adjusted for tag 2
|
||||
uint32_t absoluteSwitch[] =
|
||||
{
|
||||
PPC_INST_LIS,
|
||||
PPC_INST_RLWINM, // (slwi alias)
|
||||
PPC_INST_ADDI,
|
||||
PPC_INST_RLWINM,
|
||||
PPC_INST_LWZX,
|
||||
PPC_INST_MTCTR,
|
||||
PPC_INST_BCTR,
|
||||
PPC_INST_BCTR
|
||||
};
|
||||
|
||||
uint32_t computedSwitch[] =
|
||||
|
Loading…
x
Reference in New Issue
Block a user