Skip to content

Commit 9117724

Browse files
committed
Sven Co-op 5.11 support
1 parent 07e6928 commit 9117724

2 files changed

Lines changed: 67 additions & 8 deletions

File tree

src/SvenBXT.cpp

Lines changed: 48 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,21 @@ void SvenBXT_FindEngineStuff()
9797
switch (pattern - patterns::engine::ClientDLL_Init.cbegin())
9898
{
9999
default:
100-
case 0: // Sven-5.23
100+
case 0: // Sven-5.11
101+
Sys_Printf("Searching cl_enginefuncs in Sven-5.11 pattern...\n");
102+
g_lpEngfuncs = *reinterpret_cast<cl_enginefunc_t**>(reinterpret_cast<uintptr_t>(ClientDLL_Init) + 1);
103+
104+
if (g_lpEngfuncs)
105+
{
106+
Sys_Printf("[Engine] Found cl_enginefuncs at 0x%p.\n", g_lpEngfuncs);
107+
SvenBXT_HookClient();
108+
}
109+
else
110+
Sys_Printf("[Engine] Failed to find cl_enginefuncs. Can't hook client.\n");
111+
112+
break;
113+
114+
case 1: // Sven-5.23
101115
Sys_Printf("Searching cl_enginefuncs in Sven-5.23 pattern...\n");
102116
g_lpEngfuncs = *reinterpret_cast<cl_enginefunc_t**>(reinterpret_cast<uintptr_t>(ClientDLL_Init) + 1);
103117

@@ -111,7 +125,7 @@ void SvenBXT_FindEngineStuff()
111125

112126
break;
113127

114-
case 1: // Sven-5.25
128+
case 2: // Sven-5.25
115129
Sys_Printf("Searching cl_enginefuncs in Sven-5.25 pattern...\n");
116130
g_lpEngfuncs = *reinterpret_cast<cl_enginefunc_t**>(reinterpret_cast<uintptr_t>(ClientDLL_Init) + 332);
117131

@@ -121,7 +135,7 @@ void SvenBXT_FindEngineStuff()
121135
SvenBXT_HookClient();
122136
}
123137
break;
124-
case 2: // Sven-5.26-rc1
138+
case 3: // Sven-5.26-rc1
125139
Sys_Printf("Searching cl_enginefuncs in Sven-5.26-rc1 pattern...\n");
126140
g_lpEngfuncs = *reinterpret_cast<cl_enginefunc_t**>(reinterpret_cast<uintptr_t>(ClientDLL_Init) + 354);
127141

@@ -143,10 +157,25 @@ void SvenBXT_FindEngineStuff()
143157
switch (pattern - patterns::engine::LoadThisDll.cbegin())
144158
{
145159
default:
146-
case 0: // Sven-5.25
160+
case 0: // Sven-5.11
161+
Sys_Printf("Searching g_engfuncs in Sven-5.11 pattern...\n");
162+
g_engfuncs = *reinterpret_cast<enginefuncs_t**>(reinterpret_cast<uintptr_t>(LoadThisDll) + 91);
163+
gpGlobals = *reinterpret_cast<globalvars_t**>(reinterpret_cast<uintptr_t>(LoadThisDll) + 86);
164+
165+
if (g_engfuncs)
166+
Sys_Printf("[Engine] Found g_engfuncs at 0x%p.\n", g_engfuncs);
167+
else
168+
Sys_Printf("[Engine] Failed to find g_engfuncs.\n");
169+
170+
if (gpGlobals)
171+
Sys_Printf("[Engine] Found gpGlobals at 0x%p.\n", gpGlobals);
172+
else
173+
Sys_Printf("[Engine] Failed to find gpGlobals.\n");
174+
175+
break;
176+
case 1: // Sven-5.25
147177
Sys_Printf("Searching g_engfuncs in Sven-5.25 pattern...\n");
148-
enginefuncs_t** p_engfuncs = *reinterpret_cast<enginefuncs_t***>(reinterpret_cast<uintptr_t>(LoadThisDll) + 109);
149-
g_engfuncs = (*p_engfuncs);
178+
g_engfuncs = *reinterpret_cast<enginefuncs_t**>(reinterpret_cast<uintptr_t>(LoadThisDll) + 109);
150179
gpGlobals = *reinterpret_cast<globalvars_t**>(reinterpret_cast<uintptr_t>(LoadThisDll) + 67);
151180

152181
if (g_engfuncs)
@@ -172,7 +201,19 @@ void SvenBXT_FindEngineStuff()
172201
switch (pattern - patterns::engine::Host_ClearMemory.cbegin())
173202
{
174203
default:
175-
case 0: // Sven-5.25
204+
case 0: // Sven-5.11
205+
Sys_Printf("Searching sv in Sven-5.11 pattern...\n");
206+
sv = *reinterpret_cast<server_t**>(reinterpret_cast<uintptr_t>(Host_ClearMemory) + 0x5B);
207+
if (sv)
208+
{
209+
Sys_Printf("[Engine] Found sv at 0x%p.\n", sv);
210+
}
211+
else
212+
{
213+
Sys_Printf("[Engine] Failed to find sv.\n");
214+
}
215+
break;
216+
case 1: // Sven-5.25
176217
Sys_Printf("Searching sv in Sven-5.25 pattern...\n");
177218
sv = *reinterpret_cast<server_t**>(reinterpret_cast<uintptr_t>(Host_ClearMemory) + 0x98);
178219
if (sv)

src/engine_patterns.hpp

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ namespace patterns
2121
"Sven-5.25",
2222
"A1 ?? ?? ?? ?? 83 EC 74 F3 0F 10 00",
2323
"Sven-5.23",
24-
"8B 41 ?? 56 85 C0 75 ?? 33 F6 EB ?? 8B B0 ?? ?? ?? ?? 6A 00 6A 00 FF 15 ?? ?? ?? ?? 83 C4 08 8B 04 85 ?? ?? ?? ?? 68 ?? ?? ?? ?? 6A 00 6A 00 6A 64"
24+
"8B 41 ?? 56 85 C0 75 ?? 33 F6 EB ?? 8B B0 ?? ?? ?? ?? 6A 00 6A 00 FF 15 ?? ?? ?? ?? 83 C4 08 8B 04 85 ?? ?? ?? ?? 68 ?? ?? ?? ?? 6A 00 6A 00 6A 64",
25+
"Sven-5.11",
26+
"8B 41 ?? 56 85 C0 75 ?? 33 F6 EB ?? 8B B0 ?? ?? ?? ?? 6A 00 6A 00 FF 15 ?? ?? ?? ?? D9 05 ?? ?? ?? ?? 8B 04 85 ?? ?? ?? ?? 83 C4 08 68 ?? ?? ?? ??"
2527
);
2628
}
2729

@@ -32,6 +34,8 @@ namespace patterns
3234
// ScreenShake
3335
// ScreenFade
3436
PATTERNS(ClientDLL_Init,
37+
"Sven-5.11",
38+
"68 ?? ?? ?? ?? FF 15 ?? ?? ?? ?? A1 ?? ?? ?? ?? 83 C4 24 85 C0 74 0A 68 ?? ?? ?? ?? FF D0 83 C4 04 E8 ?? ?? ?? ?? 8B ?? ?? ?? ??",
3539
"Sven-5.23",
3640
"68 ?? ?? ?? ?? FF 15 ?? ?? ?? ?? A1 ?? ?? ?? ?? 83 C4 1C 85 C0 74 0A 68 ?? ?? ?? ?? FF D0 83 C4 04 E8 ?? ?? ?? ?? 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 C4 04 A3 ?? ?? ?? ?? 85 C0 74 3A",
3741
"Sven-5.25",
@@ -41,20 +45,28 @@ namespace patterns
4145
);
4246

4347
PATTERNS(GL_Begin2D, // a.k.a GLBeginHud
48+
"Sven-5.11",
49+
"A1 ?? ?? ?? ?? 8B 0D ?? ?? ?? ?? 8B 15 ?? ?? ?? ?? 50 A1 ?? ?? ?? ?? 51 52 50 FF 15 ?? ?? ?? ?? 68 01 17 00 00 FF 15 ?? ?? ?? ?? FF 15 ?? ?? ?? ?? FF 15 ?? ?? ?? ?? DD 05 ?? ?? ?? ?? 83 EC 30 DD 5C 24 ?? DD 05 ?? ?? ?? ?? DD 5C 24 ?? D9 EE DD 54 24 ?? DB 05 ?? ?? ?? ?? DD 5C 24 ?? DB 05 ?? ?? ?? ?? DD 5C 24 ?? DD 1C 24 FF 15 ?? ?? ?? ?? 68 00 17 00 00 FF 15 ?? ?? ?? ?? FF 15 ?? ?? ?? ?? FF 15 ?? ?? ?? ?? 68 71 0B 00 00",
4450
"Sven-5.25",
4551
"56 FF 35 ?? ?? ?? ?? FF 35 ?? ?? ?? ?? FF 35 ?? ?? ?? ?? FF 35 ?? ?? ?? ?? FF 15 ?? ?? ?? ?? 68 01 17 00 00 FF 15 ?? ?? ?? ?? FF 15 ?? ?? ?? ?? 8B 35 ?? ?? ?? ?? FF D6 DD 05 ?? ?? ?? ?? 83 EC 30");
4652

4753
PATTERNS(GL_Finish2D,
54+
"Sven-5.11",
55+
"68 01 17 00 00 FF 15 ?? ?? ?? ?? FF 15 ?? ?? ?? ?? 68 00 17 00 00 FF 15 ?? ?? ?? ?? FF 15 ?? ?? ?? ?? 68 71 0B 00 00 FF 15 ?? ?? ?? ?? 68 44 0B 00 00 FF 15 ?? ?? ?? ?? 68 E2 0B 00 00 FF 15 ?? ?? ?? ??",
4856
"Sven-5.25",
4957
"56 68 01 17 00 00 FF 15 ?? ?? ?? ?? 8B 35 ?? ?? ?? ?? FF D6 68 00 17 00 00");
5058

5159
// STRINGS
5260
// Clearing memory
5361
PATTERNS(Host_ClearMemory,
62+
"Sven-5.11",
63+
"E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 7C 24 ?? 00 75 ?? 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 C4 04 E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 3D ?? ?? ?? ?? 00 74 ?? E8 ?? ?? ?? ?? A1 ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? 83 C4 04 C7 05 ?? ?? ?? ?? 00 00 00 00 E8 ?? ?? ?? ?? 68 00 B1 4B 00 6A 00 68 ?? ?? ?? ?? E8 ?? ?? ?? ??",
5464
"Sven-5.25",
5565
"E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 7C 24 ?? 00 75 ??");
5666

5767
PATTERNS(LoadThisDll,
68+
"Sven-5.11",
69+
"53 8B 5C 24 ?? 57 53 E8 ?? ?? ?? ?? 8B F8 83 C4 04 85 FF 75 ?? FF 15 ?? ?? ?? ?? 50 53 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 C4 0C 5F 5B C3 68 ?? ?? ?? ?? 57 FF 15 ?? ?? ?? ?? 85 C0 75 ?? 53 68 ?? ?? ?? ??",
5870
"Sven-5.25",
5971
"53 57 8B 7C 24 ?? 57 E8 ?? ?? ?? ?? 8B D8 83 C4 04 85 DB 75 ?? E8 ?? ?? ?? ??");
6072

@@ -71,14 +83,20 @@ namespace patterns
7183
"Sven-5.25", "83 EC 74 A1 ?? ?? ?? ?? 33 C4 89 44 24 ?? 53 8B 5C 24 ??");
7284

7385
PATTERNS(SCR_BeginLoadingPlaque,
86+
"Sven-5.11",
87+
"6A 01 E8 ?? ?? ?? ?? A1 ?? ?? ?? ?? 83 C4 04 83 F8 03 74 ?? 83 F8 04 74 ?? 83 F8 05 75 ?? 83 3D ?? ?? ?? ?? 02 75 ?? E8 ?? ?? ?? ?? D9 EE 6A 0C D9 15 ?? ?? ?? ?? 68 ?? ?? ?? ?? D9 1D ?? ?? ?? ??",
7488
"Sven-5.25",
7589
"?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 83 C4 04 83 F8 03 74 ?? 83 F8 04 74 ?? 83 F8 05 75 ?? 83 3D ?? ?? ?? ?? 02");
7690

7791
PATTERNS(SCR_EndLoadingPlaque,
92+
"Sven-5.11",
93+
"33 C0 A3 ?? ?? ?? ?? A3 ?? ?? ?? ?? E8 ?? ?? ?? ?? 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? E8 ?? ?? ?? ??",
7894
"Sven-5.25",
7995
"?? ?? ?? ?? ?? ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 C4 08 C7 05 ?? ?? ?? ?? 00 00 00 00");
8096

8197
PATTERNS(GL_EndRendering,
98+
"Sven-5.11",
99+
"55 8B EC 83 E4 C0 83 EC 30 53 55 33 DB 56 57 39 1D ?? ?? ?? ?? 0F 84 ?? ?? ?? ?? 53 8D 44 24 ?? 50 8D 4C 24 ?? 51 E8 ?? ?? ?? ?? 83 C4 0C 39 1D ?? ?? ?? ?? 74 ?? 8B 15 ?? ?? ?? ?? 52 68 A9 8C 00 00",
82100
"Sven-5.25",
83101
"?? ?? ?? ?? ?? ?? ?? ?? 30 83 3D ?? ?? ?? ?? 00 53 55 56 57 0F 84 ?? ?? ?? ??");
84102

0 commit comments

Comments
 (0)