Interactive-ASM-Cheats-Updater
This updater unlocks your ability of updating most of the ASM cheats for Nintendo Switch.
Table of Contents
Functions
Now supports (same logic with cheats makers updating their codes like AOB):
- Update game cheats to other locales (if they don't rewrite the game code, then yes)
- Search the whole main file for code features
- Update normal ASM codes
- Update code cave codes
- Skip page/pageoff codes
- Recognize branch codes and modify their pointer
- Auto fill cheat bids when saving .txt file
TODO:
- Save modified .NSO file base on cheats
- Updating codes in .rodata or somewhere else (aka. high probability breaking the new game
😰 )
Quick Start Guide
If you need a Chinese version introduction, please refer here. 中文版请参考此帖。
Pre-Requisites
- Windows 10 (
✔️ ), Windows 7 (❌ ), Mac/Linux (❓ ) - No python environment required
Downloading
Visit out releases page or download the latest version.
Usage
Dump main file from xci/nsp/nsz game/updates
There are lots of excellent works for you to dump the main file, like hactool and NSC_Builder. Please choose anyone you familiar with to dump two main files:
- Old Main File: dump from the game which old cheat runs on
- New main File: dump from the game which you want to update the old cheat to
Load main file and copy cheat codes
Build ID of the old main file will be shown after loading. Please make sure it is the same with the old cheat.
Interactively updating the cheat codes
Logs window has everything you need when updating cheat codes.
- Generate: Generate one code or title
- Skip: Skip one code or title, especially for pointer cheats.
- Undo: Undo the last operation.
- Restart: Restart the whole process.
- Wing Length: Decide how many asm code lines are extracted as code features before and after the target address. Supported input type like array [left_side, right_side] and integer "single_input" are listed below:
Type | Left Side | Right Side | Support Single Input |
---|---|---|---|
Normal ASM code | feature lines before ASM address | feature lines after ASM address |
|
Branch to code cave | feature lines before bl address | feature lines after bl address |
|
Branch with target address | wing length for bl address | wing length for bl target address |
|
- Regenerate: Useful when logs window show "address not found". Please change wing length and regenerate until single hit, or maybe double.
- Debug: Generate a debug folder with procedure files to show you what happend during the whole progress.
Save cheat codes with "SaveCHT" button
Building from Source
Pre-Requisites For Build
- Python 3.9
- Packages in requirements.txt
- upx (if bundling to one file need)
- Spec file for pyinstaller (refer here for more info)
Hints For Pre-Requisites
- Choose any python version lower than 3.9 will unleash the support of Windows 7, but not tested. Please use at your own risk.
- There is a main.spec template in project root directory, please change demanded parameters before use.
Usage For Build
Install Python and upx
- Don't forget to add environment variables.
Download source code
Use any command shell you familar with to install support packages
cd your_source_code_root_dir
py -3.9 -m pip install -r requirements.txt
Run the project
py -3.9 __main__.py
OR build the project
pyinstaller -F -w your_spec_name.spec --upx-dir your_upx_dir
Trouble Shooting
-
Why my new codes doesn't work?
A: On most cases, they are pointer cheat codes that can be recognized from the logs window. Please update these cheats with EdiZon SE or SE tools.
-
Why my new codes break the game?
A: Game developer will make a huge change for some specific version of games, like adding new function or improving code efficiency. In these cases, the ASM cheat codes need to be refind.
-
Why this application repeating same title over and over again?
A: It happened when the application failed to get main file bytes. Here are some major reasons: zero gap in bytes file fail to work in capstone (fixed), nsnsotool command failed (fixed), application folder structure destroyed. Please re-download this application or create an issue.
Contributing
Feel free to dive in! Open an issue or submit PRs.
Credits
Interactive ASM Cheats Updater is based on
a.) Keystone Engine and Capstone Engine: Without their brilliant work, Interactive ASM Cheats Updater will never be born.
b.) nsnsotool: This tiny program helps a lot on transforming nso files, made by 0CBH0.
Also thanks to:
Eiffel2018, donghui2199, 怪盗B and Geminize for their testing.
All cheat makers that sparing no effort in writing and updating cheat codes, you ARE the true heros!
All the helpers for bringing this project to life!
License
This project is licensed under GNU General Public License v3.0.
Refer the LICENSE file for more details.