diff --git a/Core/HLE/ReplaceTables.cpp b/Core/HLE/ReplaceTables.cpp index 34215cd8d2..de6ae4671b 100644 --- a/Core/HLE/ReplaceTables.cpp +++ b/Core/HLE/ReplaceTables.cpp @@ -1351,6 +1351,15 @@ static int Hook_gow_fps_hack() { return 0; } +static int Hook_gow_vortex_hack() { + if (PSP_CoreParameter().compat.flags().Fixed60FPShack) { + if (currentMIPS->r[MIPS_REG_S1] == 0) { + currentMIPS->r[MIPS_REG_S1] = 1; + } + } + return 0; +} + #define JITFUNC(f) (&MIPSComp::MIPSFrontendInterface::f) // Can either replace with C functions or functions emitted in Asm/ArmAsm. @@ -1468,6 +1477,7 @@ static const ReplacementTableEntry entries[] = { { "openseason_data_decode", &Hook_openseason_data_decode, 0, REPFLAG_HOOKENTER, 0x2F0 }, { "soltrigger_render_ucschar", &Hook_soltrigger_render_ucschar, 0, REPFLAG_HOOKENTER, 0 }, { "gow_fps_hack", &Hook_gow_fps_hack, 0, REPFLAG_HOOKEXIT , 0 }, + { "gow_vortex_hack", &Hook_gow_vortex_hack, 0, REPFLAG_HOOKENTER, 0x60 }, {} }; diff --git a/Core/MIPS/MIPSAnalyst.cpp b/Core/MIPS/MIPSAnalyst.cpp index 2822f54847..0630a91fee 100644 --- a/Core/MIPS/MIPSAnalyst.cpp +++ b/Core/MIPS/MIPSAnalyst.cpp @@ -508,6 +508,7 @@ static const HardHashTableEntry hardcodedHashes[] = { { 0xffc8f5f8f946152c, 192, "dl_write_light_color", }, { 0x249a3c5981c73480, 1472, "openseason_data_decode", }, // Open Season { 0x795d940ad0a605f8, 40, "gow_fps_hack", }, // God of War (all) + { 0x4c75043b7b0c643b, 512, "gow_vortex_hack", } // God of War: Ghost of Sparta vortex timer hack, still wrong, but it's a start }; namespace MIPSAnalyst { diff --git a/assets/compat.ini b/assets/compat.ini index ea4d0e6f27..94b4e495c8 100644 --- a/assets/compat.ini +++ b/assets/compat.ini @@ -805,17 +805,18 @@ NPJH50017 = true [Fixed60FPShack] # Replaces ForceMax60FPS for GOW games, should provide smoother experience # Unfortunately just like the latter still causes softlock in GOW:GOS , see #8299 +# Worked around by another hack, but still have to work on that # GOW : Ghost of Sparta -# UCUS98737 = true -# UCAS40323 = true -# NPHG00092 = true -# NPEG00044 = true -# NPEG00045 = true -# NPJG00120 = true -# NPUG80508 = true -# UCJS10114 = true -# UCES01401 = true -# UCES01473 = true +UCUS98737 = true +UCAS40323 = true +NPHG00092 = true +NPEG00044 = true +NPEG00045 = true +NPJG00120 = true +NPUG80508 = true +UCJS10114 = true +UCES01401 = true +UCES01473 = true # GOW : Ghost of Sparta Demo NPEG90035 = true NPUG70125 = true