diff --git a/game_payload/blob/core.o b/game_payload/blob/core.o index 9924748..4232312 100644 Binary files a/game_payload/blob/core.o and b/game_payload/blob/core.o differ diff --git a/game_payload/src/hi3.c b/game_payload/src/hi3.c index f3e2c65..bcd43c3 100644 --- a/game_payload/src/hi3.c +++ b/game_payload/src/hi3.c @@ -3,16 +3,28 @@ #include +const char *HI3_TXS_SECTION_NAME_OLD = ".bh3"; +const char *HI3_TXS_SECTION_NAME_NEW = ".ace"; + const char *HI3_BASE_MODULE_NAME = "BH3Base.dll"; const char *HI3_ASSEMBLY_PATH = "BH3_Data\\Native\\UserAssembly.dll"; -const char *HI3_TXS_SECTION_NAME = ".bh3"; const char *HI3_TVM_SECTION_NAME = ".tvm0"; void hi3_fill_data(struct game_data *buf) { + // !!! TEMPORARY WORKAROUND FOR HI3 6.8.0 -> 6.9.0 + const uint32_t NEW_CHECKSUM = 0x885b4c63; + + uint32_t crc = utils_file_crc32c(L"UnityPlayer.dll"); + + if (crc == NEW_CHECKSUM) { + buf->txs_section_name = HI3_TXS_SECTION_NAME_NEW; + } else { + buf->txs_section_name = HI3_TXS_SECTION_NAME_OLD; + } + buf->base_module_name = HI3_BASE_MODULE_NAME; buf->assembly_path = HI3_ASSEMBLY_PATH; - buf->txs_section_name = HI3_TXS_SECTION_NAME; buf->tvm_section_name = HI3_TVM_SECTION_NAME; buf->unityplayer_callback = NULL;