Optimize game_data struct

This commit is contained in:
mkrsym1 2023-08-04 00:19:02 +03:00
parent 7beab899a6
commit 5e2b015cc0
7 changed files with 11 additions and 15 deletions

Binary file not shown.

View File

@ -2,7 +2,9 @@
#include <windows.h> #include <windows.h>
#include <game.h>
void ace_fake_driver_files(); 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(); HMODULE ace_load_driver_module();

View File

@ -22,9 +22,8 @@ typedef void (*unityplayer_callback_t)(HMODULE unityModule);
struct game_data { struct game_data {
enum game_id id; // Temporary enum game_id id; // Temporary
const char *name; const char *base_module_name;
const char *assembly_name; const char *assembly_name;
const char *tp6_section_name; // Unused for now
const char *tvm_section_name; const char *tvm_section_name;
unityplayer_callback_t unityplayer_callback; unityplayer_callback_t unityplayer_callback;

View File

@ -70,10 +70,9 @@ static HMODULE _load_module_patched(wchar_t *path) {
return module; return module;
} }
HMODULE ace_load_base_module(const char *exeName) { HMODULE ace_load_base_module(struct game_data *game) {
wchar_t baseModuleName[MAX_PATH]; wchar_t baseModuleName[MAX_PATH];
swprintf(baseModuleName, MAX_PATH, L"%sBase.dll", exeName); MultiByteToWideChar(CP_UTF8, 0, game->base_module_name, strlen(game->base_module_name) + 1, baseModuleName, MAX_PATH);
wcslwr(baseModuleName);
return _load_module_patched(baseModuleName); return _load_module_patched(baseModuleName);
} }

View File

@ -3,9 +3,8 @@
#include <game.h> #include <game.h>
const char *HI3_NAME = "BH3"; const char *HI3_BASE_MODULE_NAME = "BH3Base.dll";
const char *HI3_ASSEMBLY_NAME = "UserAssembly.dll"; const char *HI3_ASSEMBLY_NAME = "UserAssembly.dll";
const char *HI3_TP6_SECTION_NAME = ".bh3";
const char *HI3_TVM_SECTION_NAME = ".tvm0"; const char *HI3_TVM_SECTION_NAME = ".tvm0";
struct crc_id_pair { struct crc_id_pair {
@ -39,9 +38,8 @@ void hi3_fill_data(struct game_data *buf) {
} }
buf->id = id; buf->id = id;
buf->name = HI3_NAME; buf->base_module_name = HI3_BASE_MODULE_NAME;
buf->assembly_name = HI3_ASSEMBLY_NAME; buf->assembly_name = HI3_ASSEMBLY_NAME;
buf->tp6_section_name = HI3_TP6_SECTION_NAME;
buf->tvm_section_name = HI3_TVM_SECTION_NAME; buf->tvm_section_name = HI3_TVM_SECTION_NAME;
buf->unityplayer_callback = NULL; buf->unityplayer_callback = NULL;

View File

@ -4,9 +4,8 @@
#include <game.h> #include <game.h>
const char *HSR_NAME = "StarRail"; const char *HSR_BASE_MODULE_NAME = "StarRailBase.dll";
const char *HSR_ASSEMBLY_NAME = "GameAssembly.dll"; const char *HSR_ASSEMBLY_NAME = "GameAssembly.dll";
const char *HSR_TP6_SECTION_NAME = ".ace";
const char *HSR_TVM_SECTION_NAME = ".tvm0"; const char *HSR_TVM_SECTION_NAME = ".tvm0";
struct crc_id_pair { struct crc_id_pair {
@ -85,9 +84,8 @@ void hsr_fill_data(struct game_data *buf) {
} }
buf->id = id; buf->id = id;
buf->name = HSR_NAME; buf->base_module_name = HSR_BASE_MODULE_NAME;
buf->assembly_name = HSR_ASSEMBLY_NAME; buf->assembly_name = HSR_ASSEMBLY_NAME;
buf->tp6_section_name = HSR_TP6_SECTION_NAME;
buf->tvm_section_name = HSR_TVM_SECTION_NAME; buf->tvm_section_name = HSR_TVM_SECTION_NAME;
buf->unityplayer_callback = &_unityplayer_callback; buf->unityplayer_callback = &_unityplayer_callback;

View File

@ -42,7 +42,7 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) {
ace_fake_driver_files(); ace_fake_driver_files();
// Load both ACE modules // Load both ACE modules
HMODULE baseModule = ace_load_base_module(game.name); HMODULE baseModule = ace_load_base_module(&game);
ace_load_driver_module(); ace_load_driver_module();
// ...magic // ...magic