6 Commits

Author SHA1 Message Date
d22ded3d27 v3.0.7 2023-08-30 01:06:26 +03:00
15c403b0d1 Improve invalid checksum error message 2023-08-30 01:05:53 +03:00
1cc16ecbd9 Document HSR 1.3.0 support 2023-08-28 18:21:13 +03:00
ffe75e9de7 Update checksums to HSR 1.3.0 2023-08-28 18:19:36 +03:00
243e39d04b Optimized memory allocation in core 2023-08-26 21:24:56 +03:00
daa5585527 Update game version list in the readme 2023-08-17 23:11:46 +03:00
5 changed files with 13 additions and 11 deletions

View File

@ -1,8 +1,8 @@
### Games and regions ### Games and regions
- **3rd**: glb/sea/tw/kr/jp **v6.8.0**, **cn v6.9.0 broken** - **3rd**: glb/sea/tw/kr/jp **v6.8.0**, cn **v6.9.0+**
- **SR**: os/cn **v1.2.0** (potentially unsafe, but no bans were reported since v1.1.0) - **SR**: os/cn **v1.3.0** (potentially unsafe, but no bans were reported since v1.1.0)
~~You can expect newer versions of 3rd to work immediately after release with the same jadeite binary. However, that is not the case for SR: you will have to update your jadeite binary to run newer versions.~~ 6.9.0 investigation is in progress, please wait. #25 You can expect newer versions to work immediately after release with the same jadeite binary if the version is specified with a + above.
### Information ### 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`). 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`).

Binary file not shown.

View File

@ -9,6 +9,8 @@ const char *HSR_ASSEMBLY_PATH = "GameAssembly.dll";
const char *HSR_TXS_SECTION_NAME = ".ace"; const char *HSR_TXS_SECTION_NAME = ".ace";
const char *HSR_TVM_SECTION_NAME = ".tvm0"; const char *HSR_TVM_SECTION_NAME = ".tvm0";
#define HSR_VERSION "1.3.0"
enum hsr_region { enum hsr_region {
HSR_INVALID, HSR_INVALID,
HSR_OS, HSR_OS,
@ -21,14 +23,14 @@ struct crc_region_pair {
}; };
const struct crc_region_pair HSR_REGIONS[] = { const struct crc_region_pair HSR_REGIONS[] = {
{ 0x9eb3084e, HSR_OS }, // os v1.2.0 { 0x748c8f9c, HSR_OS }, // os v1.3.0
{ 0x14be07e9, HSR_CN } // cn v1.2.0 { 0x76e85a40, HSR_CN } // cn v1.3.0
}; };
#define JUMP_SIZE (6 + sizeof(void*)) #define JUMP_SIZE (6 + sizeof(void*))
// Temporarily hardcoded offset // Temporarily hardcoded offset
// v1.2.0, same for os and cn // v1.3.0, same for os and cn
#define WTSUD_PATCH_OFFSET 0x16430 #define WTSUD_PATCH_OFFSET 0x16430
char wtsud_original_bytes[JUMP_SIZE]; char wtsud_original_bytes[JUMP_SIZE];
@ -86,7 +88,7 @@ void hsr_fill_data(struct game_data *buf) {
} }
if (id == HSR_INVALID) { if (id == HSR_INVALID) {
msg_err_a("Invalid UnityPlayer.dll checksum: 0x%08x. This usually happens when the patch is outdated", crc); msg_err_a("Invalid UnityPlayer.dll checksum: 0x%08x. This patch is intended to be used with HSR v" HSR_VERSION, crc);
} }
buf->base_module_name = HSR_BASE_MODULE_NAME; buf->base_module_name = HSR_BASE_MODULE_NAME;

View File

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

View File

@ -1,6 +1,6 @@
{ {
"jadeite": { "jadeite": {
"version": "3.0.6" "version": "3.0.7"
}, },
"games": { "games": {
"hi3rd": { "hi3rd": {
@ -32,11 +32,11 @@
"hsr": { "hsr": {
"global": { "global": {
"status": "verified", "status": "verified",
"version": "1.2.0" "version": "1.3.0"
}, },
"china": { "china": {
"status": "verified", "status": "verified",
"version": "1.2.0" "version": "1.3.0"
} }
} }
} }