This repository contains game patches for Xenia Canary.
Game patches are now included with Xenia Canary.
- Xenia Canary must be set to portable. See all patches
- Delete
patches
folder. - Continue to Installing all patches.
- Download the zip file.
- Extract the patches folder to the proper location:
Location Default Documents\xenia
portable.txt (Portable mode) Same directory as xenia.exe
- Continue to enabling patches.
- Open the patch file on GitHub.
- Right click
Raw
, and clickSave Page As
. - Place the file into the
patches
folder. - Continue to enabling patches.
apply_patches
must be set to true
in the Xenia Canary config!
To enable patches, open the .patch.toml file that corresponds to your game in a text editor (Notepad, VSCode, VSCodium, Notepad++, etc.), and change is_enabled
from false
to true
.
These patches do not increase resolution!
While most aspect ratio patches are 21:9 (3440/1440), they can be changed to other aspect ratios as well;
- Divide your monitor's resolution width by height (i.e. 3440/1440)
- Convert the result to hex.
- Change the value to
0x########
replacing########
with the hex value.
If the above sections didn't help, you can try the following:
- Make sure you followed Enabling patches.
- Try deleting all of your patches and updating them.
- Try commenting out the
hash
of the patch like so:This isn't guaranteed to work, and may cause crashes.# Add # before hash hash = "################" # like this #hash = "################"
Hashes are used to verify the correct version of a game is being patched, and this bypasses it.
However, superficial differences (title/media ID, etc) can generate a different hash, even if the underlying code is the same.
- When submitting a patch, create a Pull Request for a file to be added to
/patches
. - New file must be named
Title ID - Game Title.patch.toml
For example, a patch file for Blue Dragon must be called4D5307DF - Blue Dragon.patch.toml
. - If the game you are submitting a patch for already has a file, then add to that file.
- New file must contain the module hash, which can be automatically or manually obtained.
- For games with multiple executables or discs, it can have multiple hashes, but they must be commented out like so: https://github.com/xenia-canary/game-patches/blob/0ddf1f67d8843f30162a695c66084f6d8485397a/patches/4D5307DF%20-%20Blue%20Dragon.patch.toml#L1-L5
- File must contain an empty line at the end.
- Cheat Engine
- Ghidra
- IDA Pro
- Text editors:
- Recommended but optional:
- ESLint TOML plugin
- Visual Studio Code/VSCodium extensions:
Memory Breakpoints can be set in Cheat Engine or MSVC with emit_source_annotations = true
. This will give annotations in disassembly.
- Cheat Engine 7.2+ includes Big Endian types, but they must be enabled;
- Click
Edit
>Options
>Extra Custom Types
and check all of them.
- Click
- Go to
Scan Settings
and enableMEM_MAPPED
. - Change 'Memory Scan Options' to:
All Start 100000000
Stop 200000000
- This may change depending on the programs you have running.
- Once you find a value you can attach Cheat Engine's debugger to see what reads/writes to that address.
This will show an xex address when a breakpoint is hit, although there is currently no way to set a breakpoint on execution within the Xenia Debugger.
To make things easier, it's recommended to put Xenia Canary in the directory that contains /patches
and run it with portable.txt
.
- Set
log_level
to at least2
(default) in the Xenia Canary config; See How to use for location. - Run the game at least once.
- Close Xenia.
- Obtain module hash/title ID/title name;
- Search Ctrl+F for
Module hash:
inxenia.log
You should see something like:i> ######## Module \Device\Cdrom0\default.xex: Module Hash: ################
- Search Ctrl+F for