MCPcopy Create free account
hub / github.com/ThirteenAG/WidescreenFixesPack / Init

Function Init

source/NFSProStreet.FusionFix/dllmain.cpp:47–99  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

45}
46
47void Init()
48{
49 auto pattern = hook::pattern("8B 0D ? ? ? ? 50 51 89 54 24");
50 hWnd.SetAddress(*pattern.get_first<HWND*>(2));
51
52 pattern = hook::pattern("A3 ? ? ? ? 89 35 ? ? ? ? C6 05");
53 ResX.SetAddress(*pattern.get_first<int*>(1));
54 ResY.SetAddress(*pattern.get_first<int*>(7));
55
56 pattern = hook::pattern("A1 ? ? ? ? 85 C0 75 ? C3 8B 40");
57 TheGameFlowManager.SetAddress(*pattern.get_first<GameFlowManager*>(1));
58
59 pattern = hook::pattern("8B 15 ? ? ? ? F7 DA 1B D2 83 E2 ? 3B C3");
60 dwWindowedMode.SetAddress(*pattern.get_first<uint32_t*>(2));
61
62 pattern = hook::pattern("6A ? 68 ? ? ? ? 64 A1 ? ? ? ? 50 83 EC ? 56 A1 ? ? ? ? 33 C4 50 8D 44 24 ? 64 A3 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? E8 ? ? ? ? E8");
63 shMainLoop = safetyhook::create_inline(pattern.get_first(), MainLoop);
64
65 pattern = hook::pattern("51 E9 ? ? ? ? 50 E8");
66 shMiniMainLoop = safetyhook::create_inline(pattern.get_first(), MiniMainLoop);
67
68 pattern = hook::pattern("E8 ? ? ? ? ? ? ? ? 84 C0 0F 57 C9");
69 GameFlowManager::IsPaused = decltype(GameFlowManager::IsPaused)(injector::GetBranchDestination(pattern.get_first()).get());
70
71 pattern = hook::pattern("F3 0F 10 05 ? ? ? ? B8 ? ? ? ? F3 0F 11 44 24");
72 Sim::Internal::mLastFrameTime.SetAddress(*pattern.get_first<float*>(4));
73
74 pattern = hook::pattern("A1 ? ? ? ? 53 8B 5C 24 08 56 57 8B 38 74 19");
75 Direct3DDevice.SetAddress(*pattern.get_first<IDirect3DDevice9***>(1));
76
77 pattern = hook::pattern("81 C7 ? ? ? ? 57 50 FF D2");
78 static auto BeforeResetHook = safetyhook::create_mid(pattern.get_first(), [](SafetyHookContext& regs)
79 {
80 WFP::onBeforeReset().executeAll();
81 });
82
83 pattern = hook::pattern("8B 91 ? ? ? ? 57 FF D2 ? ? 8B 48");
84 static auto BeforeEndSceneHook = safetyhook::create_mid(pattern.get_first(), [](SafetyHookContext& regs)
85 {
86 WFP::onEndScene().executeAll();
87 });
88
89 WFP::onInitEvent().executeAll();
90
91 static auto futures = WFP::onInitEventAsync().executeAllAsync();
92
93 WFP::onGameInitEvent() += []()
94 {
95 for (auto& f : futures.get())
96 f.wait();
97 futures.get().clear();
98 };
99}
100
101CEXP void InitializeASI()
102{

Callers

nothing calls this directly

Calls 6

SetAddressMethod · 0.80
executeAllMethod · 0.80
executeAllAsyncMethod · 0.80
GetBranchDestinationFunction · 0.50
getMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected