From 5e2b015cc0dd01becac7b5de2a3395c801ed81b4 Mon Sep 17 00:00:00 2001 From: mkrsym1 Date: Fri, 4 Aug 2023 00:19:02 +0300 Subject: [PATCH] Optimize game_data struct --- game_payload/blob/core.o | Bin 8019 -> 8019 bytes game_payload/include/ace.h | 4 +++- game_payload/include/game.h | 3 +-- game_payload/src/ace.c | 5 ++--- game_payload/src/hi3.c | 6 ++---- game_payload/src/hsr.c | 6 ++---- game_payload/src/main.c | 2 +- 7 files changed, 11 insertions(+), 15 deletions(-) diff --git a/game_payload/blob/core.o b/game_payload/blob/core.o index d366e71a5a7759b234ea8e5fd46c17aee76926cc..65bf6216deb2a23ca584f7b8b9ac4cb8a8d3c497 100644 GIT binary patch delta 141 zcmca?ciC>keHKQE%@0_dnHUWwtFRvqwP0Xi@aVk$0!T4@=FevXVm|?o&cpnI4E%x~ z0v_FN3Lc%+8Xld_3Sc!pz1{|%oi_|mdUUgb^mz1&p8Ng(zehKNNAnSd=(u=~{|_ci lw&7@DwBLM?qn3$VoP~iQ1gMaOL4C6)w>t|^d?NoLegLkeHKQA%@0_dnHVi5tFRvqbzop%@aVk$0!T4@=FevXVm|?o&I$t{BTT`g z^Dw_41HYh$0KZ^>0$7nxueXI~=MBS?9^I@UO&-0XXMg|y@6pZR(R@T9IxgPh|AWak k94(9vn-6l-GI2|=FffDw)v+*WZ1&`KX90>& +#include + void ace_fake_driver_files(); -HMODULE ace_load_base_module(const char *exeName); +HMODULE ace_load_base_module(struct game_data *game); HMODULE ace_load_driver_module(); diff --git a/game_payload/include/game.h b/game_payload/include/game.h index c238b7a..322f976 100644 --- a/game_payload/include/game.h +++ b/game_payload/include/game.h @@ -22,9 +22,8 @@ typedef void (*unityplayer_callback_t)(HMODULE unityModule); struct game_data { enum game_id id; // Temporary - const char *name; + const char *base_module_name; const char *assembly_name; - const char *tp6_section_name; // Unused for now const char *tvm_section_name; unityplayer_callback_t unityplayer_callback; diff --git a/game_payload/src/ace.c b/game_payload/src/ace.c index 88064ab..8675f2e 100644 --- a/game_payload/src/ace.c +++ b/game_payload/src/ace.c @@ -70,10 +70,9 @@ static HMODULE _load_module_patched(wchar_t *path) { return module; } -HMODULE ace_load_base_module(const char *exeName) { +HMODULE ace_load_base_module(struct game_data *game) { wchar_t baseModuleName[MAX_PATH]; - swprintf(baseModuleName, MAX_PATH, L"%sBase.dll", exeName); - wcslwr(baseModuleName); + MultiByteToWideChar(CP_UTF8, 0, game->base_module_name, strlen(game->base_module_name) + 1, baseModuleName, MAX_PATH); return _load_module_patched(baseModuleName); } diff --git a/game_payload/src/hi3.c b/game_payload/src/hi3.c index dfd1467..22f0da8 100644 --- a/game_payload/src/hi3.c +++ b/game_payload/src/hi3.c @@ -3,9 +3,8 @@ #include -const char *HI3_NAME = "BH3"; +const char *HI3_BASE_MODULE_NAME = "BH3Base.dll"; const char *HI3_ASSEMBLY_NAME = "UserAssembly.dll"; -const char *HI3_TP6_SECTION_NAME = ".bh3"; const char *HI3_TVM_SECTION_NAME = ".tvm0"; struct crc_id_pair { @@ -39,9 +38,8 @@ void hi3_fill_data(struct game_data *buf) { } buf->id = id; - buf->name = HI3_NAME; + buf->base_module_name = HI3_BASE_MODULE_NAME; buf->assembly_name = HI3_ASSEMBLY_NAME; - buf->tp6_section_name = HI3_TP6_SECTION_NAME; buf->tvm_section_name = HI3_TVM_SECTION_NAME; buf->unityplayer_callback = NULL; diff --git a/game_payload/src/hsr.c b/game_payload/src/hsr.c index f253b40..f855362 100644 --- a/game_payload/src/hsr.c +++ b/game_payload/src/hsr.c @@ -4,9 +4,8 @@ #include -const char *HSR_NAME = "StarRail"; +const char *HSR_BASE_MODULE_NAME = "StarRailBase.dll"; const char *HSR_ASSEMBLY_NAME = "GameAssembly.dll"; -const char *HSR_TP6_SECTION_NAME = ".ace"; const char *HSR_TVM_SECTION_NAME = ".tvm0"; struct crc_id_pair { @@ -85,9 +84,8 @@ void hsr_fill_data(struct game_data *buf) { } buf->id = id; - buf->name = HSR_NAME; + buf->base_module_name = HSR_BASE_MODULE_NAME; buf->assembly_name = HSR_ASSEMBLY_NAME; - buf->tp6_section_name = HSR_TP6_SECTION_NAME; buf->tvm_section_name = HSR_TVM_SECTION_NAME; buf->unityplayer_callback = &_unityplayer_callback; diff --git a/game_payload/src/main.c b/game_payload/src/main.c index 51804ff..0c4718d 100644 --- a/game_payload/src/main.c +++ b/game_payload/src/main.c @@ -42,7 +42,7 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) { ace_fake_driver_files(); // Load both ACE modules - HMODULE baseModule = ace_load_base_module(game.name); + HMODULE baseModule = ace_load_base_module(&game); ace_load_driver_module(); // ...magic