microVU: more flag "stuff" xD

<JakeStine>cotton: your commits always contain "stuff"
<JakeStine>I think you should rename one of your files to "microVU_stuff"
<Dwarg>And maybe others called "microVU_junk" and "microVU_crap"
<Dwarg>Then you could be much clearer
<Dwarg>"Fixed some junk, broke some crap, added some stuff...."
<JakeStine>lol
<cotton>lol

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@972 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
cottonvibes 2009-04-14 03:34:47 +00:00
parent 6cceed6268
commit ac1ecd5812
3 changed files with 16 additions and 7 deletions

View File

@ -255,7 +255,12 @@ microVUt(void) mVUanalyzeSflag(int It) {
microVUt(void) mVUanalyzeFSSET() {
microVU* mVU = mVUx;
mVUinfo |= _isFSSSET;
mVUinfo |= _isFSSET;
// mVUinfo &= ~_doStatus;
// Note: I'm not entirely sure if the non-sticky flags
// should be taken from the current upper instruction
// or if they should be taken from the previous instruction
// Uncomment the above line if the latter-case is true
}
//------------------------------------------------------------------

View File

@ -60,17 +60,21 @@ microVUt(void) mVUstatusFlagOp() {
microVU* mVU = mVUx;
int curPC = iPC;
int i = mVUcount;
bool runLoop = 1;
if (doStatus) { mVUinfo |= _isSflag; }
else {
for (; i > 0; i--) {
incPC2(-2);
if (isSflag) { runLoop = 0; break; }
if (doStatus) { mVUinfo |= _isSflag; break; }
}
}
for (; i > 0; i--) {
incPC2(-2);
if (isSflag) break;
mVUinfo &= ~(_doStatus|_doDivFlag);
if (runLoop) {
for (; i > 0; i--) {
incPC2(-2);
if (isSflag) break;
mVUinfo &= ~_doStatus;
}
}
iPC = curPC;
}
@ -98,7 +102,7 @@ microVUt(void) mVUsetFlags(int* bStatus, int* bMac) {
int xCount = mVUcount; // Backup count
iPC = mVUstartPC;
for (mVUcount = 0; mVUcount < xCount; mVUcount++) {
if ((xCount - mVUcount) > aCount) mVUstatusFlagOp<vuIndex>(); // Don't Optimize out on the last ~4+ instructions
if (((xCount - mVUcount) > aCount) && isFSSET) mVUstatusFlagOp<vuIndex>(); // Don't Optimize out on the last ~4+ instructions
yS += (mVUstall > 3) ? 3 : mVUstall;
if (yS > zS) {

View File

@ -184,7 +184,7 @@ declareAllVariables
#define _memReadIt (1<<24) // Read If (VI reg) from memory (used by branches)
#define _writesVI (1<<25) // Current Instruction writes to VI
#define _swapOps (1<<26) // Runs Lower Instruction Before Upper Instruction
#define _isFSSSET (1<<27) // Cur Instruction is FSSET
#define _isFSSET (1<<27) // Cur Instruction is FSSET
#define _doDivFlag (1<<28) // Transfer Div flag to Status Flag
//#define _isBranch2 (1<<31) // Cur Instruction is a Branch that writes VI regs (BAL/JALR)