mirror of https://github.com/PCSX2/pcsx2.git
Fixed optimisation problem on branch in branch delay slot. Fixes Dropship - United Peace Force. Props to MrCK1 for finding the issue.
This commit is contained in:
parent
290397d1af
commit
9b82449542
|
@ -1243,8 +1243,15 @@ mVUop(mVU_XGKICK) {
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
|
|
||||||
void setBranchA(mP, int x, int _x_) {
|
void setBranchA(mP, int x, int _x_) {
|
||||||
|
bool isBranchDelaySlot = false;
|
||||||
|
|
||||||
|
incPC(-2);
|
||||||
|
if (mVUlow.branch)
|
||||||
|
isBranchDelaySlot = true;
|
||||||
|
incPC(2);
|
||||||
|
|
||||||
pass1 {
|
pass1 {
|
||||||
if (_Imm11_ == 1 && !_x_) {
|
if (_Imm11_ == 1 && !_x_ && !isBranchDelaySlot) {
|
||||||
DevCon.WriteLn(Color_Green, "microVU%d: Branch Optimization", mVU.index);
|
DevCon.WriteLn(Color_Green, "microVU%d: Branch Optimization", mVU.index);
|
||||||
mVUlow.isNOP = true;
|
mVUlow.isNOP = true;
|
||||||
return;
|
return;
|
||||||
|
@ -1252,9 +1259,9 @@ void setBranchA(mP, int x, int _x_) {
|
||||||
mVUbranch = x;
|
mVUbranch = x;
|
||||||
mVUlow.branch = x;
|
mVUlow.branch = x;
|
||||||
}
|
}
|
||||||
pass2 { if (_Imm11_ == 1 && !_x_) { return; } mVUbranch = x; }
|
pass2 { if (_Imm11_ == 1 && !_x_ && !isBranchDelaySlot) { return; } mVUbranch = x; }
|
||||||
pass3 { mVUbranch = x; }
|
pass3 { mVUbranch = x; }
|
||||||
pass4 { if (_Imm11_ == 1 && !_x_) { return; } mVUbranch = x; }
|
pass4 { if (_Imm11_ == 1 && !_x_ && !isBranchDelaySlot) { return; } mVUbranch = x; }
|
||||||
}
|
}
|
||||||
|
|
||||||
void condEvilBranch(mV, int JMPcc) {
|
void condEvilBranch(mV, int JMPcc) {
|
||||||
|
|
Loading…
Reference in New Issue