diff --git a/common/include/Pcsx2Config.h b/common/include/Pcsx2Config.h index 6e48fb03bf..05a693f28b 100644 --- a/common/include/Pcsx2Config.h +++ b/common/include/Pcsx2Config.h @@ -171,8 +171,7 @@ public: bool INTCSTATSlow; bool IdleLoopFF; int VUCycleSteal; - bool vuFlagHack1; - bool vuFlagHack2; + bool vuFlagHack; bool vuMinMax; bool ESCExits; // this is a hack!? } Hacks; diff --git a/pcsx2/Linux/HacksDlg.cpp b/pcsx2/Linux/HacksDlg.cpp index 470425cbcf..e9ebc80936 100644 --- a/pcsx2/Linux/HacksDlg.cpp +++ b/pcsx2/Linux/HacksDlg.cpp @@ -75,13 +75,12 @@ void on_Speed_Hacks(GtkMenuItem *menuitem, gpointer user_data) GtkRange *vuScale = GTK_RANGE(lookup_widget(SpeedHacksDlg, "VUCycleHackScale")); GtkRange *eeScale = GTK_RANGE(lookup_widget(SpeedHacksDlg, "EECycleHackScale")); - set_checked(SpeedHacksDlg, "check_iop_cycle_rate", Config.Hacks.IOPCycleDouble); - set_checked(SpeedHacksDlg, "check_wait_cycles_sync_hack", Config.Hacks.WaitCycleExt); - set_checked(SpeedHacksDlg, "check_intc_sync_hack", Config.Hacks.INTCSTATSlow); - set_checked(SpeedHacksDlg, "check_idle_loop_fastforward", Config.Hacks.IdleLoopFF); - set_checked(SpeedHacksDlg, "check_microvu_flag_hack_1", Config.Hacks.vuFlagHack1); - set_checked(SpeedHacksDlg, "check_microvu_flag_hack_2", Config.Hacks.vuFlagHack2); - set_checked(SpeedHacksDlg, "check_microvu_min_max_hack", Config.Hacks.vuMinMax); + set_checked(SpeedHacksDlg, "check_iop_cycle_rate", Config.Hacks.IOPCycleDouble); + set_checked(SpeedHacksDlg, "check_wait_cycles_sync_hack", Config.Hacks.WaitCycleExt); + set_checked(SpeedHacksDlg, "check_intc_sync_hack", Config.Hacks.INTCSTATSlow); + set_checked(SpeedHacksDlg, "check_idle_loop_fastforward", Config.Hacks.IdleLoopFF); + set_checked(SpeedHacksDlg, "check_microvu_flag_hack", Config.Hacks.vuFlagHack); + set_checked(SpeedHacksDlg, "check_microvu_min_max_hack", Config.Hacks.vuMinMax); gtk_range_set_value(vuScale, Config.Hacks.VUCycleSteal); on_vu_slider_changed(vuScale, NULL); @@ -104,8 +103,7 @@ void on_Speed_Hack_OK(GtkButton *button, gpointer user_data) newhacks.WaitCycleExt = is_checked(SpeedHacksDlg, "check_wait_cycles_sync_hack"); newhacks.INTCSTATSlow = is_checked(SpeedHacksDlg, "check_intc_sync_hack"); newhacks.IdleLoopFF = is_checked(SpeedHacksDlg, "check_idle_loop_fastforward"); - newhacks.vuFlagHack1 = is_checked(SpeedHacksDlg, "check_microvu_flag_hack_1"); - newhacks.vuFlagHack2 = is_checked(SpeedHacksDlg, "check_microvu_flag_hack_2"); + newhacks.vuFlagHack = is_checked(SpeedHacksDlg, "check_microvu_flag_hack"); newhacks.vuMinMax = is_checked(SpeedHacksDlg, "check_microvu_min_max_hack"); newhacks.VUCycleSteal = gtk_range_get_value(GTK_RANGE(lookup_widget(SpeedHacksDlg, "VUCycleHackScale"))); diff --git a/pcsx2/Linux/Pref.cpp b/pcsx2/Linux/Pref.cpp index a6c9a79fdd..ff06af2b48 100644 --- a/pcsx2/Linux/Pref.cpp +++ b/pcsx2/Linux/Pref.cpp @@ -108,8 +108,7 @@ int LoadConfig() GetValuel("WaitCycleExt", Config.Hacks.WaitCycleExt); GetValuel("INTCSTATSlow", Config.Hacks.INTCSTATSlow); GetValuel("VUCycleSteal", Config.Hacks.VUCycleSteal); - GetValuel("vuFlagHack1", Config.Hacks.vuFlagHack1); - GetValuel("vuFlagHack2", Config.Hacks.vuFlagHack2); + GetValuel("vuFlagHack", Config.Hacks.vuFlagHack); GetValuel("vuMinMax", Config.Hacks.vuMinMax); GetValuel("IdleLoopFF", Config.Hacks.IdleLoopFF); GetValuel("ESCExits", Config.Hacks.ESCExits); diff --git a/pcsx2/windows/HacksDlg.cpp b/pcsx2/windows/HacksDlg.cpp index 709a0d13e5..8f7bfe1a24 100644 --- a/pcsx2/windows/HacksDlg.cpp +++ b/pcsx2/windows/HacksDlg.cpp @@ -43,14 +43,13 @@ BOOL APIENTRY HacksProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) CheckRadioButton( hDlg, IDC_EESYNC_DEFAULT, IDC_EESYNC3, IDC_EESYNC_DEFAULT + Config.Hacks.EECycleRate ); - if(Config.Hacks.IOPCycleDouble) CheckDlgButton(hDlg, IDC_IOPSYNC, TRUE); - if(Config.Hacks.WaitCycleExt) CheckDlgButton(hDlg, IDC_WAITCYCLES, TRUE); - if(Config.Hacks.INTCSTATSlow) CheckDlgButton(hDlg, IDC_INTCSTATHACK, TRUE); - if(Config.Hacks.IdleLoopFF) CheckDlgButton(hDlg, IDC_IDLELOOPFF, TRUE); - if(Config.Hacks.ESCExits) CheckDlgButton(hDlg, IDC_ESCHACK, TRUE); - if(Config.Hacks.vuFlagHack1) CheckDlgButton(hDlg, IDC_VUHACK1, TRUE); - if(Config.Hacks.vuFlagHack2) CheckDlgButton(hDlg, IDC_VUHACK2, TRUE); - if(Config.Hacks.vuMinMax) CheckDlgButton(hDlg, IDC_VUHACK3, TRUE); + if(Config.Hacks.IOPCycleDouble) CheckDlgButton(hDlg, IDC_IOPSYNC, TRUE); + if(Config.Hacks.WaitCycleExt) CheckDlgButton(hDlg, IDC_WAITCYCLES, TRUE); + if(Config.Hacks.INTCSTATSlow) CheckDlgButton(hDlg, IDC_INTCSTATHACK, TRUE); + if(Config.Hacks.IdleLoopFF) CheckDlgButton(hDlg, IDC_IDLELOOPFF, TRUE); + if(Config.Hacks.ESCExits) CheckDlgButton(hDlg, IDC_ESCHACK, TRUE); + if(Config.Hacks.vuFlagHack) CheckDlgButton(hDlg, IDC_VUHACK1, TRUE); + if(Config.Hacks.vuMinMax) CheckDlgButton(hDlg, IDC_VUHACK3, TRUE); SendDlgItemMessage(hDlg, IDC_VUCYCLE, TBM_SETRANGE, TRUE, MAKELONG(0, 4)); CheckVUCycleHack(hDlg, Config.Hacks.VUCycleSteal); @@ -93,8 +92,7 @@ BOOL APIENTRY HacksProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) newhacks.WaitCycleExt = !!IsDlgButtonChecked(hDlg, IDC_WAITCYCLES); newhacks.INTCSTATSlow = !!IsDlgButtonChecked(hDlg, IDC_INTCSTATHACK); newhacks.ESCExits = !!IsDlgButtonChecked(hDlg, IDC_ESCHACK); - newhacks.vuFlagHack1 = !!IsDlgButtonChecked(hDlg, IDC_VUHACK1); - newhacks.vuFlagHack2 = !!IsDlgButtonChecked(hDlg, IDC_VUHACK2); + newhacks.vuFlagHack = !!IsDlgButtonChecked(hDlg, IDC_VUHACK1); newhacks.vuMinMax = !!IsDlgButtonChecked(hDlg, IDC_VUHACK3); newhacks.IdleLoopFF = !!IsDlgButtonChecked(hDlg, IDC_IDLELOOPFF); newhacks.VUCycleSteal = SendDlgItemMessage(hDlg, IDC_VUCYCLE, TBM_GETPOS, 0, 0); diff --git a/pcsx2/windows/ini.cpp b/pcsx2/windows/ini.cpp index 93af72fd67..2a80ad212a 100644 --- a/pcsx2/windows/ini.cpp +++ b/pcsx2/windows/ini.cpp @@ -231,8 +231,7 @@ void IniFile::DoConfig( PcsxConfig& Conf ) Entry("WaitCycleExt", Config.Hacks.WaitCycleExt); Entry("INTCSTATSlow", Config.Hacks.INTCSTATSlow); Entry("VUCycleSteal", Config.Hacks.VUCycleSteal); - Entry("vuFlagHack1", Config.Hacks.vuFlagHack1); - Entry("vuFlagHack2", Config.Hacks.vuFlagHack2); + Entry("vuFlagHack", Config.Hacks.vuFlagHack); Entry("vuMinMax", Config.Hacks.vuMinMax); Entry("IdleLoopFF", Config.Hacks.IdleLoopFF); if (Conf.Hacks.VUCycleSteal < 0 || Conf.Hacks.VUCycleSteal > 4) diff --git a/pcsx2/windows/pcsx2.rc b/pcsx2/windows/pcsx2.rc index ea89271c47..aeec13377b 100644 --- a/pcsx2/windows/pcsx2.rc +++ b/pcsx2/windows/pcsx2.rc @@ -369,20 +369,18 @@ BEGIN LTEXT "Moderate speedup and works well with most games.",IDC_STATIC,25,90,129,19 CONTROL "INTC Sync Hack",IDC_INTCSTATHACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,43,127,10 LTEXT "Huge speedup in many games, and a pretty high compatibility rate (some games still work better with EE sync hacks).",IDC_STATIC,200,55,140,28 - CONTROL "",IDC_VUCYCLE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,372,152,36,15 - LTEXT "This space intentionally left blank",IDC_VUCYCLEDESC,383,171,142,26 - LTEXT "VU Cycle Stealing (experimental)",IDC_STATIC,408,157,105,8 + CONTROL "",IDC_VUCYCLE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,372,141,36,15 + LTEXT "This space intentionally left blank",IDC_VUCYCLEDESC,383,160,142,26 + LTEXT "VU Cycle Stealing (experimental)",IDC_STATIC,408,146,105,8 CONTROL "Idle Loop Fast-Forward (experimental)",IDC_IDLELOOPFF, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,179,139,10 LTEXT "Speedup for a few games, including FFX with no known side effects.",IDC_STATIC,200,193,144,23 GROUPBOX "EmotionEngine (EE) Misc Hacks",IDC_STATIC,177,26,179,192 GROUPBOX "Vertex Unit (VU) Hacks",IDC_STATIC,363,26,173,173 - CONTROL "Flag Hack 1 (microVU only)",IDC_VUHACK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,372,42,155,12 - CONTROL "Flag Hack 2 (microVU only)",IDC_VUHACK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,372,79,154,12 - LTEXT "Big Speedup and moderately compatible. May cause SPS and Infinite loop problems.",IDC_STATIC,386,56,142,19 - LTEXT "Big Speedup and moderately compatible. SuperVU does something similar by default.",IDC_STATIC,385,92,144,20 - CONTROL "Min / Max Hack (microVU only)",IDC_VUHACK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,372,115,156,12 - LTEXT "Small Speedup. May cause SPS, hanging, and missing geometry.",IDC_STATIC,386,130,143,19 + CONTROL "Status Flag Hack (microVU only)",IDC_VUHACK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,372,42,155,12 + LTEXT "Big Speedup and high compatibility.\nSuperVU does something similar by default.",IDC_STATIC,383,55,144,20 + CONTROL "Min / Max Hack (microVU only)",IDC_VUHACK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,372,85,156,12 + LTEXT "Small Speedup. May cause SPS, hanging, graphical corruption, and missing geometry.",IDC_STATIC,383,99,143,28 END @@ -409,6 +407,7 @@ BEGIN VERTGUIDE, 187 VERTGUIDE, 200 VERTGUIDE, 372 + VERTGUIDE, 383 TOPMARGIN, 7 BOTTOMMARGIN, 222 HORZGUIDE, 26 diff --git a/pcsx2/x86/microVU.cpp b/pcsx2/x86/microVU.cpp index 4adcf883a9..85980e3413 100644 --- a/pcsx2/x86/microVU.cpp +++ b/pcsx2/x86/microVU.cpp @@ -133,7 +133,6 @@ microVUf(void) mVUclearProg(int progIndex) { microVU* mVU = mVUx; mVU->prog.prog[progIndex].used = 1; mVU->prog.prog[progIndex].last_used = 3; - mVU->prog.prog[progIndex].sFlagHack = 0; mVU->prog.prog[progIndex].range[0] = -1; mVU->prog.prog[progIndex].range[1] = -1; mVU->prog.prog[progIndex].x86ptr = mVU->prog.prog[progIndex].x86start; @@ -148,7 +147,6 @@ microVUf(void) mVUcacheProg(int progIndex) { microVU* mVU = mVUx; memcpy_fast(mVU->prog.prog[progIndex].data, mVU->regs->Micro, mVU->microSize); mVUdumpProg(progIndex); - mVUcheckSflag(mVU, progIndex); } // Finds the least used program, (if program list full clears and returns an old program; if not-full, returns free program) diff --git a/pcsx2/x86/microVU.h b/pcsx2/x86/microVU.h index 5b3f640b50..d7cc0d114d 100644 --- a/pcsx2/x86/microVU.h +++ b/pcsx2/x86/microVU.h @@ -74,7 +74,6 @@ struct microProgram { u32 data[progSize]; u32 used; // Number of times its been used u32 last_used; // Counters # of frames since last use (starts at 3 and counts backwards to 0 for each 30fps vSync) - u32 sFlagHack; // Optimize out Status Flag Updates if Program doesn't use Status Flags s32 range[2]; // The range of microMemory that has already been recompiled for the current program u8* x86ptr; // Pointer to program's recompilation code u8* x86start; // Start of program's rec-cache diff --git a/pcsx2/x86/microVU_Compile.inl b/pcsx2/x86/microVU_Compile.inl index 5dd94ca18f..fded1265b0 100644 --- a/pcsx2/x86/microVU_Compile.inl +++ b/pcsx2/x86/microVU_Compile.inl @@ -168,10 +168,8 @@ microVUt(void) mVUendProgram(mV, int qInst, int pInst, int fStatus, int fMac, in } // Save Flag Instances - if (!mVUflagHack) { - mVUallocSFLAGc(gprT1, gprT2, fStatus); - MOV32RtoM((uptr)&mVU->regs->VI[REG_STATUS_FLAG].UL, gprT1); - } + mVUallocSFLAGc(gprT1, gprT2, fStatus); + MOV32RtoM((uptr)&mVU->regs->VI[REG_STATUS_FLAG].UL, gprT1); mVUallocMFLAGa(mVU, gprT1, fMac); mVUallocCFLAGa(mVU, gprT2, fClip); MOV32RtoM((uptr)&mVU->regs->VI[REG_MAC_FLAG].UL, gprT1); @@ -242,7 +240,7 @@ microVUf(void*) __fastcall mVUcompile(u32 startPC, uptr pState) { mVUpBlock = pBlock; mVUregs.flags = 0; mVUflagInfo = 0; - mVUsFlagHack = CHECK_VU_FLAGHACK2 | mVUflagHack; + mVUsFlagHack = CHECK_VU_FLAGHACK; bool eBitBranch = 0; // E-bit Set on Branch for (int branch = 0; mVUcount < (vuIndex ? (0x3fff/8) : (0xfff/8)); ) { diff --git a/pcsx2/x86/microVU_Flags.inl b/pcsx2/x86/microVU_Flags.inl index 7ed2e26245..94baea9b2f 100644 --- a/pcsx2/x86/microVU_Flags.inl +++ b/pcsx2/x86/microVU_Flags.inl @@ -153,7 +153,7 @@ microVUt(int) mVUsetFlags(mV, int* xStatus, int* xMac, int* xClip) { // Recompiles Code for Proper Flags on Block Linkings microVUt(void) mVUsetupFlags(mV, int* xStatus, int* xMac, int* xClip, int cycles) { - if (__Status && !mVUflagHack) { + if (__Status) { int bStatus[4]; sortFlag(xStatus, bStatus, cycles); MOV32RtoR(gprT1, getFlagReg1(bStatus[0])); diff --git a/pcsx2/x86/microVU_Lower.inl b/pcsx2/x86/microVU_Lower.inl index cef71c3874..234c742202 100644 --- a/pcsx2/x86/microVU_Lower.inl +++ b/pcsx2/x86/microVU_Lower.inl @@ -424,7 +424,7 @@ mVUop(mVU_FCAND) { mVUallocVIb(mVU, gprT1, 1); } pass3 { mVUlog("FCAND vi01, $%x", _Imm24_); } - pass4 { mVUflagInfo |= 0xf << (/*mVUcount +*/ 8); } + pass4 { mVUflagInfo |= 0xf << 8; } } mVUop(mVU_FCEQ) { @@ -437,7 +437,7 @@ mVUop(mVU_FCEQ) { mVUallocVIb(mVU, gprT1, 1); } pass3 { mVUlog("FCEQ vi01, $%x", _Imm24_); } - pass4 { mVUflagInfo |= 0xf << (/*mVUcount +*/ 8); } + pass4 { mVUflagInfo |= 0xf << 8; } } mVUop(mVU_FCGET) { @@ -448,7 +448,7 @@ mVUop(mVU_FCGET) { mVUallocVIb(mVU, gprT1, _It_); } pass3 { mVUlog("FCGET vi%02d", _Ft_); } - pass4 { mVUflagInfo |= 0xf << (/*mVUcount +*/ 8); } + pass4 { mVUflagInfo |= 0xf << 8; } } mVUop(mVU_FCOR) { @@ -461,7 +461,7 @@ mVUop(mVU_FCOR) { mVUallocVIb(mVU, gprT1, 1); } pass3 { mVUlog("FCOR vi01, $%x", _Imm24_); } - pass4 { mVUflagInfo |= 0xf << (/*mVUcount +*/ 8); } + pass4 { mVUflagInfo |= 0xf << 8; } } mVUop(mVU_FCSET) { @@ -486,7 +486,7 @@ mVUop(mVU_FMAND) { mVUallocVIb(mVU, gprT1, _It_); } pass3 { mVUlog("FMAND vi%02d, vi%02d", _Ft_, _Fs_); } - pass4 { mVUflagInfo |= 0xf << (/*mVUcount +*/ 4); } + pass4 { mVUflagInfo |= 0xf << 4; } } mVUop(mVU_FMEQ) { @@ -500,7 +500,7 @@ mVUop(mVU_FMEQ) { mVUallocVIb(mVU, gprT1, _It_); } pass3 { mVUlog("FMEQ vi%02d, vi%02d", _Ft_, _Fs_); } - pass4 { mVUflagInfo |= 0xf << (/*mVUcount +*/ 4); } + pass4 { mVUflagInfo |= 0xf << 4; } } mVUop(mVU_FMOR) { @@ -512,7 +512,7 @@ mVUop(mVU_FMOR) { mVUallocVIb(mVU, gprT1, _It_); } pass3 { mVUlog("FMOR vi%02d, vi%02d", _Ft_, _Fs_); } - pass4 { mVUflagInfo |= 0xf << (/*mVUcount +*/ 4); } + pass4 { mVUflagInfo |= 0xf << 4; } } //------------------------------------------------------------------ @@ -527,7 +527,7 @@ mVUop(mVU_FSAND) { mVUallocVIb(mVU, gprT1, _It_); } pass3 { mVUlog("FSAND vi%02d, $%x", _Ft_, _Imm12_); } - pass4 { mVUflagInfo |= 0xf << (/*mVUcount +*/ 0); mVUsFlagHack = 0; } + pass4 { mVUflagInfo |= 0xf; } } mVUop(mVU_FSOR) { @@ -538,7 +538,7 @@ mVUop(mVU_FSOR) { mVUallocVIb(mVU, gprT1, _It_); } pass3 { mVUlog("FSOR vi%02d, $%x", _Ft_, _Imm12_); } - pass4 { mVUflagInfo |= 0xf << (/*mVUcount +*/ 0); mVUsFlagHack = 0; } + pass4 { mVUflagInfo |= 0xf; } } mVUop(mVU_FSEQ) { @@ -570,7 +570,7 @@ mVUop(mVU_FSEQ) { mVUallocVIb(mVU, gprT1, _It_); } pass3 { mVUlog("FSEQ vi%02d, $%x", _Ft_, _Imm12_); } - pass4 { mVUflagInfo |= 0xf << (/*mVUcount +*/ 0); mVUsFlagHack = 0; } + pass4 { mVUflagInfo |= 0xf; } } mVUop(mVU_FSSET) { @@ -591,7 +591,6 @@ mVUop(mVU_FSSET) { if (imm) OR32ItoR(sReg, imm); } pass3 { mVUlog("FSSET $%x", _Imm12_); } - pass4 { mVUsFlagHack = 0; } } //------------------------------------------------------------------ diff --git a/pcsx2/x86/microVU_Misc.h b/pcsx2/x86/microVU_Misc.h index 48d2ebcd59..09c57215bc 100644 --- a/pcsx2/x86/microVU_Misc.h +++ b/pcsx2/x86/microVU_Misc.h @@ -154,7 +154,6 @@ declareAllVariables #define microVUx(aType) template aType #define microVUf(aType) template __forceinline aType - // Define Passes #define pass1 if (recPass == 0) #define pass2 if (recPass == 1) @@ -175,7 +174,6 @@ declareAllVariables #define mVUregsTemp mVUallocInfo.regsTemp #define iPC mVUallocInfo.curPC #define mVUsFlagHack mVUallocInfo.sFlagHack - #define mVUinfo mVUallocInfo.info[iPC / 2] #define mVUstall mVUinfo.stall #define mVUup mVUinfo.uOp @@ -183,10 +181,8 @@ declareAllVariables #define sFLAG mVUinfo.sFlag #define mFLAG mVUinfo.mFlag #define cFLAG mVUinfo.cFlag - #define mVUstartPC mVUallocInfo.startPC #define mVUflagInfo mVUregs.needExactMatch -#define mVUflagHack (mVUcurProg.sFlagHack) #define xPC ((iPC / 2) * 8) #define curI ((u32*)mVU->regs->Micro)[iPC] //mVUcurProg.data[iPC] #define setCode() { mVU->code = curI; } @@ -248,8 +244,7 @@ declareAllVariables #endif // Speed Hacks -#define CHECK_VU_FLAGHACK1 (u32)Config.Hacks.vuFlagHack1 // (Can cause Infinite loops, SPS, etc...) -#define CHECK_VU_FLAGHACK2 (u32)Config.Hacks.vuFlagHack2 // (Can cause Infinite loops, SPS, etc...) +#define CHECK_VU_FLAGHACK (u32)Config.Hacks.vuFlagHack // (Can cause Infinite loops, SPS, etc...) #define CHECK_VU_MINMAXHACK (u32)Config.Hacks.vuMinMax // (Can cause SPS, Black Screens, etc...) // Unknown Data diff --git a/pcsx2/x86/microVU_Misc.inl b/pcsx2/x86/microVU_Misc.inl index 138683c9e9..c780a55d70 100644 --- a/pcsx2/x86/microVU_Misc.inl +++ b/pcsx2/x86/microVU_Misc.inl @@ -295,24 +295,6 @@ microVUt(void) mVUrestoreRegs(mV) { MOV32ItoR(gprR, Roffset); // Restore gprR } -// Reads entire microProgram and finds out if Status Flag is Used -microVUt(void) mVUcheckSflag(mV, int progIndex) { - if (CHECK_VU_FLAGHACK1) { - int bFlagInfo = mVUflagInfo; - int bCode = mVU->code; - int bFlagHack = mVUsFlagHack; - mVUsFlagHack = 1; - for (u32 i = 0; i < mVU->progSize; i+=2) { - mVU->code = mVU->prog.prog[progIndex].data[i]; - mVUopL(mVU, 3); - } - mVUflagInfo = bFlagInfo; - mVU->code = bCode; - mVU->prog.prog[progIndex].sFlagHack = mVUsFlagHack; - mVUsFlagHack = bFlagHack; - } -} - static const u32 PCSX2_ALIGNED16(MIN_MAX_MASK1[4]) = {0xffffffff, 0x80000000, 0xffffffff, 0x80000000}; static const u32 PCSX2_ALIGNED16(MIN_MAX_MASK2[4]) = {0x00000000, 0x40000000, 0x00000000, 0x40000000};