diff --git a/pcsx2/Config.h b/pcsx2/Config.h index 1cad6e583c..a7d5edb61d 100644 --- a/pcsx2/Config.h +++ b/pcsx2/Config.h @@ -431,7 +431,8 @@ struct Pcsx2Config FpuMulHack :1, // Tales of Destiny hangs. FpuNegDivHack :1, // Gundam games messed up camera-view. XgKickHack :1, // Erementar Gerad, adds more delay to VU XGkick instructions. Corrects the color of some graphics, but breaks Tri-ace games and others. - IPUWaitHack :1; + IPUWaitHack :1, // FFX FMV, makes GIF flush before doing IPU work. Fixes bad graphics overlay. + EETimingHack :1; // General purpose timing hack. BITFIELD_END // all gamefixes are disabled by default. @@ -559,7 +560,7 @@ TraceLogFilters& SetTraceConfig(); #define CHECK_IOPREC (EmuConfig.Cpu.Recompiler.EnableIOP && GetSysCoreAlloc().IsRecAvailable_IOP()) //------------ SPECIAL GAME FIXES!!! --------------- -#define NUM_OF_GAME_FIXES 7 +#define NUM_OF_GAME_FIXES 8 #define CHECK_VUADDSUBHACK (EmuConfig.Gamefixes.VuAddSubHack) // Special Fix for Tri-ace games, they use an encryption algorithm that requires VU addi opcode to be bit-accurate. #define CHECK_FPUCOMPAREHACK (EmuConfig.Gamefixes.FpuCompareHack) // Special Fix for Digimon Rumble Arena 2, fixes spinning/hanging on intro-menu. @@ -568,6 +569,7 @@ TraceLogFilters& SetTraceConfig(); #define CHECK_FPUNEGDIVHACK (EmuConfig.Gamefixes.FpuNegDivHack) // Special Fix for Gundam games messed up camera-view. #define CHECK_XGKICKHACK (EmuConfig.Gamefixes.XgKickHack) // Special Fix for Erementar Gerad, adds more delay to VU XGkick instructions. Corrects the color of some graphics. #define CHECK_IPUWAITHACK (EmuConfig.Gamefixes.IPUWaitHack) // Special Fix for Erementar Gerad, adds more delay to VU XGkick instructions. Corrects the color of some graphics. +#define CHECK_EETIMINGHACK (EmuConfig.Gamefixes.EETimingHack) // Fix all scheduled events to happen in 1 cycle. //------------ Advanced Options!!! --------------- #define CHECK_VU_OVERFLOW (EmuConfig.Cpu.Recompiler.vuOverflow) diff --git a/pcsx2/Pcsx2Config.cpp b/pcsx2/Pcsx2Config.cpp index 98f89ef29a..024e7098b3 100644 --- a/pcsx2/Pcsx2Config.cpp +++ b/pcsx2/Pcsx2Config.cpp @@ -258,6 +258,7 @@ void Pcsx2Config::GamefixOptions::LoadSave( IniInterface& ini ) IniBitBool( FpuNegDivHack ); IniBitBool( XgKickHack ); IniBitBool( IPUWaitHack ); + IniBitBool( EETimingHack ); } Pcsx2Config::Pcsx2Config() diff --git a/pcsx2/R5900.cpp b/pcsx2/R5900.cpp index 87938fc7d5..bc2e2a2b9b 100644 --- a/pcsx2/R5900.cpp +++ b/pcsx2/R5900.cpp @@ -551,10 +551,10 @@ __forceinline void CPU_INT( u32 n, s32 ecycle) DevCon.Warning( "***** EE > Twice-thrown int on IRQ %d", n ); } - // Abusing the IPU hack to also fix EE events to happen 1 cycle in the future. + // EE events happen 1 cycle in the future instead of whatever was requested. // This can be used on games with PATH3 masking issues for example, or when // some FMV look bad. - //if(CHECK_IPUWAITHACK) ecycle = 1; + if(CHECK_EETIMINGHACK) ecycle = 1; cpuRegs.interrupt|= 1 << n; cpuRegs.sCycle[n] = cpuRegs.cycle; diff --git a/pcsx2/gui/Panels/GameFixesPanel.cpp b/pcsx2/gui/Panels/GameFixesPanel.cpp index 2511b300ee..3ac05a2633 100644 --- a/pcsx2/gui/Panels/GameFixesPanel.cpp +++ b/pcsx2/gui/Panels/GameFixesPanel.cpp @@ -37,34 +37,37 @@ Panels::GameFixesPanel::GameFixesPanel( wxWindow* parent ) : const CheckTextMess check_text[NUM_OF_GAME_FIXES] = { { - _("VU Add Hack - fixes Tri-Ace games boot crash (Enable IPU hack as well.)"), + _("VU Add Hack - Fixes Tri-Ace games boot crash."), _("Games that need this hack to boot:\n * Star Ocean 3\n * Radiata Stories\n * Valkyrie Profile 2") }, { - _("VU Clip Flag Hack - for Persona games (SuperVU recompiler only!)"), + _("VU Clip Flag Hack - For Persona games (SuperVU recompiler only!)"), wxEmptyString }, { - _("FPU Compare Hack - for Digimon Rumble Arena 2."), + _("FPU Compare Hack - For Digimon Rumble Arena 2."), wxEmptyString }, { - _("FPU Multiply Hack - for Tales of Destiny."), + _("FPU Multiply Hack - For Tales of Destiny."), wxEmptyString }, { - _("FPU Negative Div Hack - for Gundam games."), + _("FPU Negative Div Hack - For Gundam games."), wxEmptyString }, { - _("VU XGkick Hack - for Erementar Gerad."), + _("VU XGkick Hack - For Erementar Gerad."), wxEmptyString }, { - _("EE timing hack / FFX videos fix - Multi purpose hack. Try if all else fails."), + _("FFX videos fix - Fixes bad graphics overlay in FFX videos."), + wxEmptyString + }, + { + _("EE timing hack - Multi purpose hack. Try if all else fails."), pxE( ".Tooltips:Gamefixes:EE Timing Hack", L"Known to affect following games:\n" - L" * Final Fantasy 10 (Fixes FMV)\n" L" * Digital Devil Saga (Fixes FMV and crashes)\n" L" * SSX (Fixes bad graphics and crashes)\n" L" * Resident Evil: Dead Aim (Causes garbled textures)"