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

Function Init

source/Bully.WidescreenFix/dllmain.cpp:20–183  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

18 float fHudVerticalOffsetWide;
19} Screen;
20
21void Init()
22{
23 CIniReader iniReader("");
24 static auto fFOVFactor = iniReader.ReadFloat("MAIN", "FOVFactor", 0.0f);
25
26 //Unlocking a bit more resolutions
27 auto pattern = hook::pattern("81 FF ? ? ? ? 8B 54 24 14 7C 53 81 FA ? ? ? ? 7C 4B 8B 0D ? ? ? ? 85 C9");
28 injector::WriteMemory(pattern.get_first(2), 640, true);
29 injector::WriteMemory(pattern.get_first(14), 480, true);
30 //Last resolution doesn't get reset
31 pattern = hook::pattern("3D ? ? ? ? 0F 96 C0 C3");
32 injector::WriteMemory(pattern.get_first(1), 5000, true);
33
34 //Resolution
35 pattern = hook::pattern("C7 05 ? ? ? ? ? ? ? ? C7 05 ? ? ? ? ? ? ? ? C7 05 ? ? ? ? ? ? ? ? C6 05 ? ? ? ? ? C7 05 ? ? ? ? ? ? ? ? 83 C4 28 C3");
36 static auto nWidth = std::ref(**pattern.get_first<uint32_t*>(2));
37 static auto nHeight = std::ref(**pattern.get_first<uint32_t*>(12));
38 std::tie(Screen.nWidth, Screen.nHeight) = GetDesktopRes();
39 injector::WriteMemory(pattern.get_first(6), Screen.nWidth, true);
40 injector::WriteMemory(pattern.get_first(16), Screen.nHeight, true);
41
42 static auto GetRes = []()
43 {
44 Screen.nWidth = nWidth;
45 Screen.nHeight = nHeight;
46 Screen.fWidth = static_cast<float>(Screen.nWidth);
47 Screen.fHeight = static_cast<float>(Screen.nHeight);
48 Screen.fAspectRatio = Screen.fWidth / Screen.fHeight;
49 Screen.nWidth43 = static_cast<uint32_t>(Screen.fHeight * (4.0f / 3.0f));
50 Screen.fWidth43 = static_cast<float>(Screen.nWidth43);
51 Screen.fHudOffset = ((480.0f * Screen.fAspectRatio) - 640.0f) / 2.0f;
52 Screen.fHudOffsetReal = (Screen.fWidth - Screen.fHeight * (4.0f / 3.0f)) / 2.0f;
53 Screen.fHudScale = (4.0f / 3.0f) / Screen.fAspectRatio;
54 Screen.fHudFullWidth = 640.0f * (Screen.fAspectRatio / (4.0f / 3.0f));
55 Screen.fHudVerticalOffset = ((480.0f * (Screen.fAspectRatio / (4.0f / 3.0f))) - 480.0f) / 2.0f;
56 Screen.fHudVerticalOffsetWide = ((480.0f * (Screen.fAspectRatio / (16.0f / 9.0f))) - 480.0f) / 2.0f;
57 };
58
59 pattern = hook::pattern("C6 44 24 18 00 8B 4C 24 18 52");
60 struct ResHook1
61 {
62 void operator()(injector::reg_pack& regs)
63 {
64 *(uint8_t*)(regs.esp + 0x18) = 0;
65 GetRes();
66 }
67 }; injector::MakeInline<ResHook1>(pattern.get_first(0)); //0x4052F1
68
69 pattern = hook::pattern("A3 ? ? ? ? A1 ? ? ? ? 89 15 ? ? ? ? A3 ? ? ? ? 89 0D ? ? ? ? E8 ? ? ? ? 84 C0");
70 static auto dword_BCBC68 = *pattern.get_first<uint32_t*>(1);
71 struct ResHook2
72 {
73 void operator()(injector::reg_pack& regs)
74 {
75 *dword_BCBC68 = regs.eax;
76 GetRes();
77 }

Callers

nothing calls this directly

Calls 4

GetDesktopResFunction · 0.85
pattern_strFunction · 0.85
to_bytesFunction · 0.85
getMethod · 0.45

Tested by

no test coverage detected