15 Commits

Author SHA1 Message Date
19d6139e13 v3.0.11 2023-11-15 18:50:56 +02:00
0047d7b64f Marked SR 1.5.0 as concerning 2023-11-13 23:08:53 +02:00
264cdc2528 Documentation update 2023-11-13 22:18:26 +02:00
ab4615dfe9 SR 1.5.0: updated checksums, patch address 2023-11-13 22:13:43 +02:00
cf34ac6e01 Mark 3rd cn v7.1.0 verified 2023-11-09 16:23:48 +02:00
6c7bbabced v3.0.10 2023-10-27 08:26:18 +03:00
81ddaeeda7 Marked 3rd 7.0.0 as verified 2023-10-27 08:25:58 +03:00
b9cae22212 Removed section name workaround for 3rd 2023-10-27 08:23:50 +03:00
8201e29e26 Remove misleading remark in readme 2023-10-11 17:55:48 +00:00
71144b4cd1 Mark HSR v1.4.0 as verified 2023-10-11 17:54:44 +00:00
5af8d2463a Set v3.0.9 in metadata.json 2023-10-10 22:02:36 +00:00
ea1d2f91f2 v3.0.9 2023-10-11 00:14:36 +03:00
f0ed718cf3 Document HSR 1.4.0 support 2023-10-09 19:27:24 +03:00
bc09349b8e Update checksums for HSR 1.4.0 2023-10-09 19:22:07 +03:00
66e51c6d9a Mark HI3 cn v7.0.0 verified 2023-10-01 11:04:01 +03:00
5 changed files with 25 additions and 45 deletions

View File

@ -1,14 +1,12 @@
### Games and regions
- **3rd**: glb/sea/tw/kr/jp **v6.9.0+**, cn **v6.9.0+**
- **SR**: os/cn **v1.3.0** (potentially unsafe, but no bans were reported since v1.1.0)
- **3rd**: glb/sea/tw/kr/jp **v7.0.0+**, cn **v7.1.0+**
- **SR**: os/cn **v1.5.0** (WARNING: currently potentially unsafe, there were some concerning changes in the last update)
You can expect newer versions to work immediately after release with the same jadeite binary if the version is specified with a + above (currently none).
You can expect newer versions to work immediately after release with the same jadeite binary if the version is specified with a + above.
### Information
The anticheat the games use is fundamentally incompatible with Wine in multiple ways. This tool launches the game without it (`injector`) and imitates it's behaviour (`game_payload`).
**SR-specific**: this tool disables the use of DirectX shared resources in a rather hacky way. It is required, as there is no (and most likely never will be) shared resources support in DirectX translation layers (WineD3D/DXVK). Refer to [configuration](#configuration) if you wish to run the game without the fix.
**Using third-party software (such as this tool) with the games violates their Terms of Service**. Therefore, **you may receive a ban**. No bans were ever reported with 3rd, however the legacy patch for SR did cause many. **Use at your own risk and only if you understand all the possible consequences**.
**This is not a cheating tool**. Using it with Windows is not possible, and Windows support is not planned or intended in any way. However, as it does not perform any on-disk file modifications, you may reuse the same game install for Windows if you have a dual-boot setup.
@ -38,9 +36,6 @@ These environment variables can be used to configure the behaviour of the tool.
- `WAIT_BEFORE_RESUME=1` - show a messagebox and wait for user input before resuming the game process. Useful on my side for debugging
**SR-exclusive**:
- `SRFIX_DISABLE=1` - disable shared resources fix. Not recommended. Doing so will most likely cause the game to not run at all
### Internals
This tool consists of three parts: the main injector (`injector/src/exe.c`), the launcher payload (`injector/src/dll.c`) and the game payload (`game_payload`).

View File

@ -5,31 +5,16 @@
#include <game.h>
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 = ".ace";
const char *HI3_TVM_SECTION_NAME = ".tvm0";
void hi3_fill_data(struct game_data *buf) {
// !!! TEMPORARY WORKAROUND
// Name in exe matches name in base module
HMODULE exe = GetModuleHandleA(NULL);
if (pe_find_section(exe, HI3_TXS_SECTION_NAME_OLD)) {
// Old name
buf->txs_section_name = HI3_TXS_SECTION_NAME_OLD;
} else if (pe_find_section(exe, HI3_TXS_SECTION_NAME_NEW)) {
// New name
buf->txs_section_name = HI3_TXS_SECTION_NAME_NEW;
} else {
// This should not happen
msg_err_a("Could not determine region-specific section name. " ISSUE_SUFFIX);
}
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;

View File

@ -9,7 +9,7 @@ const char *HSR_ASSEMBLY_PATH = "GameAssembly.dll";
const char *HSR_TXS_SECTION_NAME = ".ace";
const char *HSR_TVM_SECTION_NAME = ".tvm0";
#define HSR_VERSION "1.3.0"
#define HSR_VERSION "1.5.0"
enum hsr_region {
HSR_INVALID,
@ -23,15 +23,15 @@ struct crc_region_pair {
};
const struct crc_region_pair HSR_REGIONS[] = {
{ 0x748c8f9c, HSR_OS }, // os v1.3.0
{ 0x76e85a40, HSR_CN } // cn v1.3.0
{ 0xb90cbc61, HSR_OS }, // os v1.5.0
{ 0xee3eebfb, HSR_CN } // cn v1.5.0
};
#define JUMP_SIZE (6 + sizeof(void*))
// Temporarily hardcoded offset
// v1.3.0, same for os and cn
#define WTSUD_PATCH_OFFSET 0x16430
// v1.5.0, same for os and cn
#define WTSUD_PATCH_OFFSET 0x1b800 // 0x16550 will also work
char wtsud_original_bytes[JUMP_SIZE];
char *wtsud_patch_addr;
@ -49,12 +49,12 @@ static void _wtsud_stub() {
}
static void _unityplayer_callback(HMODULE unityModule) {
if (utils_env_enabled("SRFIX_DISABLE")) {
msg_info_a("Shared resources fix disabled. The game may not work");
if (utils_env_enabled("CHECKSUM_PATCH_DISABLE")) {
msg_info_a("DirectX library verification patch disabled. The game will not work");
return;
}
// Remove dependency on shared resources by patching WriteTextureStatisticUserData
// Remove check by patching WriteTextureStatisticUserData
unload_ctr_inc();
wtsud_patch_addr = ((char*)unityModule) + WTSUD_PATCH_OFFSET;

View File

@ -1,4 +1,4 @@
project('jadeite', 'c', version: '3.0.8')
project('jadeite', 'c', version: '3.0.11')
nasm = find_program('nasm')
gen_res = find_program('gen_resources.sh')

View File

@ -1,42 +1,42 @@
{
"jadeite": {
"version": "3.0.8"
"version": "3.0.11"
},
"games": {
"hi3rd": {
"global": {
"status": "verified",
"version": "6.9.0"
"version": "7.0.0"
},
"sea": {
"status": "verified",
"version": "6.9.0"
"version": "7.0.0"
},
"china": {
"status": "verified",
"version": "6.9.0"
"version": "7.1.0"
},
"taiwan": {
"status": "verified",
"version": "6.9.0"
"version": "7.0.0"
},
"korea": {
"status": "verified",
"version": "6.9.0"
"version": "7.0.0"
},
"japan": {
"status": "verified",
"version": "6.9.0"
"version": "7.0.0"
}
},
"hsr": {
"global": {
"status": "verified",
"version": "1.3.0"
"status": "concerning",
"version": "1.5.0"
},
"china": {
"status": "verified",
"version": "1.3.0"
"status": "concerning",
"version": "1.5.0"
}
}
}