|
@@ -102,11 +102,11 @@ bool MacroInterpreter::Step(const std::vector<u32>& code, bool is_delay_slot) {
|
|
|
if (taken) {
|
|
if (taken) {
|
|
|
// Ignore the delay slot if the branch has the annul bit.
|
|
// Ignore the delay slot if the branch has the annul bit.
|
|
|
if (opcode.branch_annul) {
|
|
if (opcode.branch_annul) {
|
|
|
- pc = base_address + (opcode.immediate << 2);
|
|
|
|
|
|
|
+ pc = base_address + opcode.GetBranchTarget();
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- delayed_pc = base_address + (opcode.immediate << 2);
|
|
|
|
|
|
|
+ delayed_pc = base_address + opcode.GetBranchTarget();
|
|
|
// Execute one more instruction due to the delay slot.
|
|
// Execute one more instruction due to the delay slot.
|
|
|
return Step(code, true);
|
|
return Step(code, true);
|
|
|
}
|
|
}
|