diff --git a/.github/workflows/msvc_x86.yml b/.github/workflows/msvc_x86.yml index bf430a1b..1af7d1c5 100644 --- a/.github/workflows/msvc_x86.yml +++ b/.github/workflows/msvc_x86.yml @@ -13,7 +13,7 @@ on: - '**/*.txt' concurrency: - group: ${{ github.ref }} + group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: diff --git a/readme.md b/readme.md index 69cb8d48..10886854 100644 --- a/readme.md +++ b/readme.md @@ -18,10 +18,9 @@ The original repository has no support for GFWL (it does have support for outdat - Fix the missing `Multiplayer` button on the phone by changing a simple check in the `spcellphonemain.sco` and `spcellphonenetwork.sco`. Thanks to [ClaudeIII](https://github.com/ClaudeIII) for helping with the ASM part of the code. - Fix the Multiplayer Tutorial. Editing the `spcellphonetutorial.sco` and `multitutorial.sco` made the multiplayer tutorial somewhat functional. Thanks to [sTc2201](https://github.com/sTc2201) for providing the `multitutorial.sco` fixes. - Fix crash on viewing leaderboard. Thanks to [sTc2201](https://github.com/sTc2201) for providing the fix. -- Chang the default option of `SkipMenu` to 0 to be able to load into DLC's first. +- Change the default option of `SkipMenu` to 0 to be able to load into DLC's first. Following changes also deviate from the original code, resulting in a subpar experience in some places: -- [Comment out a fix for the loading text speed, as it didn't let the game boot for some reason and I have no clue how to work with patterns to even attempt to fix this.](https://github.com/gillian-guide/GTAIV.EFLC.FusionFix-GFWL/blob/5855b9caf1936ac2da3c295ef68e16e0905fa94a/source/frameratevigilante.ixx#L54) - Change the default option of `RecoilFix` to 0 to avoid being as disadvantage to other players in the multiplayer. Keep in mind that you still want additional mods to be used for a pleasant GFWL multiplayer experience, including disabling the mod check to even allow this fork to work. diff --git a/source/framelimit.ixx b/source/framelimit.ixx index c6adac84..6bca1e34 100644 --- a/source/framelimit.ixx +++ b/source/framelimit.ixx @@ -240,17 +240,18 @@ public: } }; injector::MakeInline(pattern.get_first(0), pattern.get_first(6)); } + }; + FusionFix::onGameInitEvent() += []() + { // Off Route infinite loading - { - auto pattern = hook::pattern("E8 ? ? ? ? 83 C4 08 84 C0 74 E2"); - if (!pattern.empty()) - injector::MakeCALL(pattern.get_first(), sub_403CD0, true); + auto pattern = hook::pattern("E8 ? ? ? ? 83 C4 08 84 C0 74 E2"); + if (!pattern.empty()) + injector::MakeCALL(pattern.get_first(), sub_403CD0, true); - pattern = hook::pattern("E8 ? ? ? ? 83 C4 0C 84 C0 75 25"); - if (!pattern.empty()) - injector::MakeCALL(pattern.get_first(), sub_403CD0, true); - } + pattern = hook::pattern("E8 ? ? ? ? 83 C4 0C 84 C0 75 25"); + if (!pattern.empty()) + injector::MakeCALL(pattern.get_first(), sub_403CD0, true); }; FusionFix::onShutdownEvent() += []() diff --git a/source/frameratevigilante.ixx b/source/frameratevigilante.ixx index c8f6541d..d589c2e4 100644 --- a/source/frameratevigilante.ixx +++ b/source/frameratevigilante.ixx @@ -51,10 +51,10 @@ public: }; injector::MakeInline(pattern.get_first(0), pattern.get_first(6)); } - /*pattern = hook::pattern("F3 0F 10 05 ? ? ? ? F3 0F 58 C1 F3 0F 11 05 ? ? ? ? EB 36"); - static auto f1032790 = *pattern.get_first(4); + pattern = hook::pattern("F3 0F 10 05 ? ? ? ? F3 0F 58 C1 F3 0F 11 05 ? ? ? ? EB 36"); if (!pattern.empty()) { + static auto f1032790 = *pattern.get_first(4); struct LoadingTextSpeed { void operator()(SafetyHookContext& regs) @@ -62,7 +62,7 @@ public: regs.xmm0.f32[0] = (*f1032790) / 10.0f; } }; injector::MakeInline2(pattern.get_first(0), pattern.get_first(8)); - }*/ + } pattern = hook::pattern("F3 0F 59 05 ? ? ? ? F3 0F 59 05 ? ? ? ? F3 0F 59 05 ? ? ? ? F3 0F 58 05 ? ? ? ? F3 0F 11 05"); if (!pattern.empty())