diff --git a/Core/Compatibility.cpp b/Core/Compatibility.cpp index 29a8874039a4..9a46b1f56785 100644 --- a/Core/Compatibility.cpp +++ b/Core/Compatibility.cpp @@ -134,6 +134,7 @@ void Compatibility::CheckSettings(IniFile &iniFile, const std::string &gameID) { CheckSetting(iniFile, gameID, "Fontltn12Hack", &flags_.Fontltn12Hack); CheckSetting(iniFile, gameID, "LoadCLUTFromCurrentFrameOnly", &flags_.LoadCLUTFromCurrentFrameOnly); CheckSetting(iniFile, gameID, "ForceUMDReadSpeed", &flags_.ForceUMDReadSpeed); + CheckSetting(iniFile, gameID, "DrawSyncEatFewCycles", &flags_.DrawSyncEatFewCycles); } void Compatibility::CheckVRSettings(IniFile &iniFile, const std::string &gameID) { diff --git a/Core/Compatibility.h b/Core/Compatibility.h index a917d17e5e22..9e1a476bc7e8 100644 --- a/Core/Compatibility.h +++ b/Core/Compatibility.h @@ -104,6 +104,7 @@ struct CompatFlags { bool Fontltn12Hack; bool LoadCLUTFromCurrentFrameOnly; bool ForceUMDReadSpeed; + bool DrawSyncEatFewCycles; }; struct VRCompat { diff --git a/Core/HLE/sceGe.cpp b/Core/HLE/sceGe.cpp index 639791f687be..68ca519ae836 100644 --- a/Core/HLE/sceGe.cpp +++ b/Core/HLE/sceGe.cpp @@ -391,6 +391,8 @@ static u32 sceGeDrawSync(u32 mode) { //wait/check entire drawing state if (PSP_CoreParameter().compat.flags().DrawSyncEatCycles) hleEatCycles(500000); //HACK(?) : Potential fix for Crash Tag Team Racing and a few Gundam games + else if (PSP_CoreParameter().compat.flags().DrawSyncEatFewCycles) + hleEatCycles(31); else hleEatCycles(1240); DEBUG_LOG(SCEGE, "sceGeDrawSync(mode=%d) (0=wait for completion, 1=peek)", mode);