microVU: Fix constant recompilation problem in Street Fighter EX3

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4403 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
cottonvibes 2011-03-07 21:07:45 +00:00
parent 7893daa1a4
commit b2319c7636
2 changed files with 13 additions and 4 deletions

View File

@ -291,7 +291,10 @@ __ri void mVUanalyzeSflag(mV, int It) {
mVUsFlagHack = 0; // Don't Optimize Out Status Flags for this block
mVUinfo.swapOps = 1;
flagSet(mVU, 0);
if (mVUcount < 4) { mVUpBlock->pState.needExactMatch |= 1; }
if (mVUcount < 4) {
if (!(mVUpBlock->pState.needExactMatch & 1)) // The only time this should happen is on the first program block
DevCon.WriteLn(Color_Green, "microVU%d: pState's sFlag Info was expected to be set [%04x]", getIndex, xPC);
}
}
}
@ -312,7 +315,10 @@ __ri void mVUanalyzeMflag(mV, int Is, int It) {
else {
mVUinfo.swapOps = 1;
flagSet(mVU, 1);
if (mVUcount < 4) { mVUpBlock->pState.needExactMatch |= 2; }
if (mVUcount < 4) {
if (!(mVUpBlock->pState.needExactMatch & 2)) // The only time this should happen is on the first program block
DevCon.WriteLn(Color_Green, "microVU%d: pState's mFlag Info was expected to be set [%04x]", getIndex, xPC);
}
}
}
@ -323,7 +329,10 @@ __ri void mVUanalyzeMflag(mV, int Is, int It) {
__fi void mVUanalyzeCflag(mV, int It) {
mVUinfo.swapOps = 1;
mVUlow.readFlags = 1;
if (mVUcount < 4) { mVUpBlock->pState.needExactMatch |= 4; }
if (mVUcount < 4) {
if (!(mVUpBlock->pState.needExactMatch & 4)) // The only time this should happen is on the first program block
DevCon.WriteLn(Color_Green, "microVU%d: pState's cFlag Info was expected to be set [%04x]", getIndex, xPC);
}
analyzeVIreg2(It, mVUlow.VI_write, 1);
}

View File

@ -330,7 +330,7 @@ __fi bool doEarlyExit(microVU* mVU) {
// Saves Pipeline State for resuming from early exits
static __fi void mVUsavePipelineState(microVU* mVU) {
u32* lpS = (u32*)&mVU->prog.lpState.vi15;
u32* lpS = (u32*)&mVU->prog.lpState;
for (int i = 0; i < (sizeof(microRegInfo)-4)/4; i++, lpS++) {
xMOV(ptr32[lpS], lpS[0]);
}