7 releases (stable)
1.0.5 | Dec 11, 2021 |
---|---|
1.0.4 | Aug 29, 2020 |
1.0.3 | Aug 27, 2020 |
1.0.0 | Aug 26, 2020 |
0.1.0 | Aug 26, 2020 |
#203 in Games
150KB
1K
SLoC
sm64gs2pc
Convert Super Mario 64 GameShark codes to SM64 PC port patches
About
This tool converts GameShark cheat codes for Super Mario 64 into patches for PC ports of Super Mario 64, such as sm64-port and sm64ex. It's available as both a web app and a command-line tool.
Web app
A web app can be accessed at https://sm64gs2pc.github.io
Compiling
To compile the sm64gs2pc web app yourself:
- Install wasm-pack
cd sm64gs2pc-web
./build.sh
- The web app will be built in
static/
Command-line tool
Installing
- Install Rust
- Run
cargo install sm64gs2pc
- On Unix, this installs to
~/.cargo/bin
by default
- On Unix, this installs to
Usage
sm64gs2pc --code <code> --name <name> > output.patch
--code <code>
- Path to file with GameShark code to convert--name <name>
- Name of GameShark cheat
The output patch file can be applied to a PC port fork, but a base patch must be applied first.
Limitations
Certain types of codes are unsupported
Function patching
Codes that patch functions are unsupported, because compiler and CPU differences make function patching infeasible. This is unlikely to ever be supported.
GameShark button
Codes that use the GameShark (GS) button are unsupported, because it's not clear which key it should be, and how it should be handled with the different PC port forks. It's possible to add support after figuring this out, though.
Read-only data patching
Certain data is read-only in the PC ports, and can't be modified at runtime. One
example is the player model, so color-changing hat codes unfortunately won't
work. Any declarations with const
or static
have this problem. This might be
possible to fix, but it's unclear how to get the memory addresses of these
declarations from the decompilation repo.
Unknown code types
Some GameShark code types have unknown functionality, and it's almost impossible
to find any information on them. Even Nintendo 64 emulators don't support them.
One example is the A4
code type. Basically, if a code is unsupported in
Mupen64Plus or Project64, sm64gs2pc definitely won't support it.
Dependencies
~4–12MB
~131K SLoC