Skip to content

Commit de761f6

Browse files
committed
Some fixes and changes
1 parent 9737216 commit de761f6

File tree

6 files changed

+29
-29
lines changed

6 files changed

+29
-29
lines changed

data/cdata/ui_scripts/achievements/menu.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ LUI.MenuBuilder.registerType("achievements_menu", function(root, controller)
3434

3535
local currentbackground = nil
3636
local changebackground = function(background, isvideobg)
37-
if (currentbackground == background) then
37+
if (not Engine.InFrontend() or currentbackground == background) then
3838
return
3939
end
4040

src/client/component/fps.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ namespace fps
3333

3434
game::dvar_t* cg_draw_game_time = nullptr;
3535

36-
game::dvar_t* com_accurate_fps = nullptr;
36+
game::dvar_t* com_accurate_max_fps = nullptr;
3737

3838
float fps_color_good[4] = {0.6f, 1.0f, 0.0f, 1.0f};
3939
float fps_color_ok[4] = {1.0f, 0.7f, 0.3f, 1.0f};
@@ -363,7 +363,7 @@ namespace fps
363363

364364
void r_process_workers_with_timeout_stub(void* a1, void* a2)
365365
{
366-
if (com_accurate_fps->current.enabled)
366+
if (com_accurate_max_fps->current.enabled)
367367
{
368368
return;
369369
}
@@ -373,7 +373,7 @@ namespace fps
373373

374374
void com_frame_stub()
375375
{
376-
if (!com_accurate_fps->current.enabled)
376+
if (!com_accurate_max_fps->current.enabled)
377377
{
378378
return com_frame_hook.invoke<void>();
379379
}
@@ -434,7 +434,7 @@ namespace fps
434434
cg_draw_game_time = dvars::register_bool("cg_drawGameTime", false, game::DVAR_FLAG_SAVED, "Draw game time");
435435

436436
// Make fps capping accurate
437-
com_accurate_fps = dvars::register_bool("com_accurateFps", false, game::DVAR_FLAG_SAVED, "Accurate fps capping");
437+
com_accurate_max_fps = dvars::register_bool("com_accurateMaxFps", false, game::DVAR_FLAG_SAVED, "Accurate fps capping");
438438
utils::hook::call(0x1405A38B9, r_process_workers_with_timeout_stub);
439439
com_frame_hook.create(0x1405A3740, com_frame_stub);
440440
}

src/client/component/gsc/script_error.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ namespace gsc
289289

290290
void g_model_index_no_cache_error_stub(const char* model)
291291
{
292-
scr_error(true, "model \"%s\" must be precached", model);
292+
scr_error(false, "model \"%s\" must be precached", model);
293293
}
294294
}
295295

src/client/component/patches.cpp

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,6 @@ namespace patches
1515
utils::hook::detour gscr_set_save_dvar_hook;
1616
utils::hook::detour dvar_register_float_hook;
1717

18-
void* sub_46148()
19-
{
20-
static uint64_t off_11C52460 = 0x140AD0C58;
21-
return &off_11C52460;
22-
}
23-
2418
DECLSPEC_NORETURN void quit_stub()
2519
{
2620
utils::hook::invoke<void>(0x1408B1BA0);
@@ -79,10 +73,10 @@ namespace patches
7973
public:
8074
void post_unpack() override
8175
{
82-
// Fix startup crashes
83-
utils::hook::set(0x140272F70, 0xC301B0);
84-
utils::hook::jump(0x140046148, sub_46148);
85-
76+
// Disable battle net game service
77+
utils::hook::set<std::uint32_t>(0x140272F70, 0xC301B0);
78+
// 'Fix' tls index conflict crash
79+
utils::hook::set<std::uint8_t>(0x140046166, 0xEB);
8680
// Fix shutdown crash
8781
utils::hook::jump(0x1408B1CD0, 0x1408B1BA0);
8882

src/client/component/ui_scripting.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -931,13 +931,18 @@ namespace ui_scripting
931931
utils::hook::jump(0x14031E700, 0x1402D86E0);
932932

933933
utils::hook::jump(0x1402BFCC0, removed_function_stub); // io
934-
utils::hook::jump(0x14017EE60, removed_function_stub); // profile
935934
utils::hook::jump(0x1402C0150, removed_function_stub); // os
936-
utils::hook::jump(0x14017F730, removed_function_stub); // serialize
935+
utils::hook::jump(0x1402C1020, removed_function_stub); // serialize
937936
utils::hook::jump(0x1402C0FF0, removed_function_stub); // hks
938-
utils::hook::jump(0x14017EC60, removed_function_stub); // debug
937+
utils::hook::jump(0x1402C0470, removed_function_stub); // debug
939938
utils::hook::nop(0x1402BFC48, 5); // coroutine
940939

940+
// profile
941+
utils::hook::jump(0x1402B6250, removed_function_stub);
942+
utils::hook::jump(0x1402B6260, removed_function_stub);
943+
utils::hook::jump(0x1402B6270, removed_function_stub);
944+
utils::hook::jump(0x1402B6330, removed_function_stub);
945+
941946
utils::hook::jump(0x1402B7FD0, removed_function_stub);
942947
utils::hook::jump(0x1402B7C40, removed_function_stub);
943948
utils::hook::jump(0x1402BAC30, removed_function_stub);

src/client/loader/loader.cpp

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -180,24 +180,25 @@ void loader::load_tls(const utils::nt::library& target, const utils::nt::library
180180
{
181181
if (source.get_optional_header()->DataDirectory[IMAGE_DIRECTORY_ENTRY_TLS].Size)
182182
{
183-
auto* target_tls = tls::allocate_tls_index();
184-
/* target_tls = reinterpret_cast<PIMAGE_TLS_DIRECTORY>(library.get_ptr() + library.get_optional_header()
185-
->DataDirectory[IMAGE_DIRECTORY_ENTRY_TLS].VirtualAddress); */
186-
auto* const source_tls = reinterpret_cast<PIMAGE_TLS_DIRECTORY>(target.get_ptr() + source.get_optional_header()
183+
const auto target_tls = tls::allocate_tls_index();
184+
185+
const auto source_tls = reinterpret_cast<PIMAGE_TLS_DIRECTORY>(target.get_ptr() + source.get_optional_header()
187186
->DataDirectory[IMAGE_DIRECTORY_ENTRY_TLS].VirtualAddress);
188187

189188
const auto tls_size = source_tls->EndAddressOfRawData - source_tls->StartAddressOfRawData;
190189
const auto tls_index = *reinterpret_cast<DWORD*>(target_tls->AddressOfIndex);
191190
utils::hook::set<DWORD>(source_tls->AddressOfIndex, tls_index);
192191

192+
const auto target_start = PVOID(target_tls->StartAddressOfRawData);
193+
const auto source_start = PVOID(source_tls->StartAddressOfRawData);
194+
193195
DWORD old_protect;
194-
VirtualProtect(PVOID(target_tls->StartAddressOfRawData),
195-
source_tls->EndAddressOfRawData - source_tls->StartAddressOfRawData, PAGE_READWRITE,
196-
&old_protect);
196+
VirtualProtect(target_start, tls_size, PAGE_READWRITE, &old_protect);
197+
198+
const auto tls_base = *reinterpret_cast<LPVOID*>(__readgsqword(0x58) + 8ull * tls_index);
197199

198-
auto* const tls_base = *reinterpret_cast<LPVOID*>(__readgsqword(0x58) + 8ull * tls_index);
199-
std::memmove(tls_base, PVOID(source_tls->StartAddressOfRawData), tls_size);
200-
std::memmove(PVOID(target_tls->StartAddressOfRawData), PVOID(source_tls->StartAddressOfRawData), tls_size);
200+
std::memmove(tls_base, source_start, tls_size);
201+
std::memmove(target_start, source_start, tls_size);
201202

202203
VirtualProtect(target_tls, sizeof(*target_tls), PAGE_READWRITE, &old_protect);
203204
*target_tls = *source_tls;

0 commit comments

Comments
 (0)