Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cb3db372df | |||
| 2fee742f75 | |||
| b36d217284 | |||
| 8520356083 | |||
| 9bd1379244 | |||
| 7d7967f477 | |||
| 8550abdf9f | |||
| 912bc2e55f | |||
| f0da1b8456 |
@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2023 mkrsym1 <mkrsym1@gmail.com>
|
Copyright (c) 2023-2024 mkrsym1 <mkrsym1@gmail.com>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
12
README.md
12
README.md
@ -1,10 +1,14 @@
|
|||||||
# Jadeite Autopatcher
|
# Jadeite Autopatcher
|
||||||
### Current game support:
|
### Current game support:
|
||||||
- **3rd**: glb/sea/tw/kr/jp **v7.1.0+**, cn **v7.2.0+**
|
- **3rd**: glb/sea/tw/kr/jp **v7.2.0+**, cn **v7.3.0+**
|
||||||
- **SR**: os/cn **v1.6.0**
|
- **SR**: os/cn **v2.0.0**\*
|
||||||
|
|
||||||
You can expect newer versions to work immediately after release with the same jadeite binary if the version is specified with a + above.
|
You can expect newer versions to work immediately after release with the same jadeite binary if the version is specified with a + above.
|
||||||
|
|
||||||
|
**Note:** you can test the experimental version-independent patching method for SR. See [#37](https://codeberg.org/mkrsym1/jadeite/issues/37).
|
||||||
|
|
||||||
|
**Note:** the Steam version of 3rd was reported to work, however I neither tested it nor intend to support it, so it might break at any time. Use at your own risk.
|
||||||
|
|
||||||
## 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`).
|
||||||
|
|
||||||
@ -38,8 +42,12 @@ Example command: `jadeite.exe 'Z:\path\to\game.exe' -- -screen-fullscreen 1`
|
|||||||
## Configuration
|
## Configuration
|
||||||
These environment variables can be used to configure the behaviour of the tool. Any value except empty string counts as set. `1` will be used in all examples.
|
These environment variables can be used to configure the behaviour of the tool. Any value except empty string counts as set. `1` will be used in all examples.
|
||||||
|
|
||||||
|
**Global**:
|
||||||
- `WAIT_BEFORE_RESUME=1` - show a messagebox and wait for user input before resuming the game process. Useful on my side for debugging
|
- `WAIT_BEFORE_RESUME=1` - show a messagebox and wait for user input before resuming the game process. Useful on my side for debugging
|
||||||
|
|
||||||
|
**SR-specific**:
|
||||||
|
- `BREAK_CRYPTCAT=1` - use the experimental patching method. See [#37](https://codeberg.org/mkrsym1/jadeite/issues/37) for details
|
||||||
|
|
||||||
## Internals and building
|
## Internals and building
|
||||||
To compile jadeite, you will need meson, mingw and nasm. You can probably install all three using your repository's package manager. Once all dependencies are installed, run `./build.sh` in this directory. The compiled files will be located in `./out`.
|
To compile jadeite, you will need meson, mingw and nasm. You can probably install all three using your repository's package manager. Once all dependencies are installed, run `./build.sh` in this directory. The compiled files will be located in `./out`.
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,7 @@ 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.6.0"
|
#define HSR_VERSION "2.0.0"
|
||||||
|
|
||||||
enum hsr_region {
|
enum hsr_region {
|
||||||
HSR_INVALID,
|
HSR_INVALID,
|
||||||
@ -23,14 +23,14 @@ struct crc_region_pair {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const struct crc_region_pair HSR_REGIONS[] = {
|
const struct crc_region_pair HSR_REGIONS[] = {
|
||||||
{ 0x5741ce50, HSR_OS }, // os v1.6.0
|
{ 0x5be3a560, HSR_OS }, // os v2.0.0
|
||||||
{ 0xce891f97, HSR_CN } // cn v1.6.0
|
{ 0x974e826f, HSR_CN } // cn v2.0.0
|
||||||
};
|
};
|
||||||
|
|
||||||
#define JUMP_SIZE (6 + sizeof(void*))
|
#define JUMP_SIZE (6 + sizeof(void*))
|
||||||
|
|
||||||
// Temporarily hardcoded offset
|
// Temporarily hardcoded offset
|
||||||
// v1.6.0, same for os and cn
|
// v2.0.0, same for os and cn
|
||||||
#define WTSUD_PATCH_OFFSET 0x16510
|
#define WTSUD_PATCH_OFFSET 0x16510
|
||||||
|
|
||||||
char wtsud_original_bytes[JUMP_SIZE];
|
char wtsud_original_bytes[JUMP_SIZE];
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
project('jadeite', 'c', version: '3.1.0')
|
project('jadeite', 'c', version: '3.1.1')
|
||||||
|
|
||||||
nasm = find_program('nasm')
|
nasm = find_program('nasm')
|
||||||
gen_res = find_program('gen_resources.sh')
|
gen_res = find_program('gen_resources.sh')
|
||||||
|
|||||||
@ -1,42 +1,42 @@
|
|||||||
{
|
{
|
||||||
"jadeite": {
|
"jadeite": {
|
||||||
"version": "3.1.0"
|
"version": "3.1.1"
|
||||||
},
|
},
|
||||||
"games": {
|
"games": {
|
||||||
"hi3rd": {
|
"hi3rd": {
|
||||||
"global": {
|
"global": {
|
||||||
"status": "verified",
|
"status": "verified",
|
||||||
"version": "7.1.0"
|
"version": "7.2.0"
|
||||||
},
|
},
|
||||||
"sea": {
|
"sea": {
|
||||||
"status": "verified",
|
"status": "verified",
|
||||||
"version": "7.1.0"
|
"version": "7.2.0"
|
||||||
},
|
},
|
||||||
"china": {
|
"china": {
|
||||||
"status": "verified",
|
"status": "verified",
|
||||||
"version": "7.2.0"
|
"version": "7.3.0"
|
||||||
},
|
},
|
||||||
"taiwan": {
|
"taiwan": {
|
||||||
"status": "verified",
|
"status": "verified",
|
||||||
"version": "7.1.0"
|
"version": "7.2.0"
|
||||||
},
|
},
|
||||||
"korea": {
|
"korea": {
|
||||||
"status": "verified",
|
"status": "verified",
|
||||||
"version": "7.1.0"
|
"version": "7.2.0"
|
||||||
},
|
},
|
||||||
"japan": {
|
"japan": {
|
||||||
"status": "verified",
|
"status": "verified",
|
||||||
"version": "7.1.0"
|
"version": "7.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"hsr": {
|
"hsr": {
|
||||||
"global": {
|
"global": {
|
||||||
"status": "verified",
|
"status": "unverified",
|
||||||
"version": "1.6.0"
|
"version": "2.0.0"
|
||||||
},
|
},
|
||||||
"china": {
|
"china": {
|
||||||
"status": "verified",
|
"status": "unverified",
|
||||||
"version": "1.6.0"
|
"version": "2.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user