I wanted to share this utility I've created (at the suggestion of a user here that filed an issue on my GitHub), but I've created a utility called CheatASM which aims to provide an assembly-like language for writing cheats for games. It has full support for every cheat opcode supported by Atmosphere (and will receive updates as new opcodes get added).
(Due to being a brand new account I cannot link to the project, but a quick google search of "github CheatASM" should land you there. Once my account is unrestricted I'll update with a link here.)
Staff edit
https://github.com/tslater2006/CheatASM
The basic usage is you can either -a to assemble a cheat or -d to disassemble a cheat. There is also a --repl mode for you to play around with CheatASM. i've tried to put together an exhaustive readme on the repository and have published a portable release which should be runable anywhere you can install dotnet (it runs on .NET 5.0).
There are some example files in the repository, but please note, I don't actually write cheats for games, so the examples are a bit contrived/senseless as they were intended to test out the features of the assembler, and not actually make sense
To give a small taste of what this utility enables:
Assembles to:
And something like this:
Assembles down to:
I hope some of you may find this utility useful and welcome any feedback/issues on the repository.
(Due to being a brand new account I cannot link to the project, but a quick google search of "github CheatASM" should land you there. Once my account is unrestricted I'll update with a link here.)
Staff edit
https://github.com/tslater2006/CheatASM
The basic usage is you can either -a to assemble a cheat or -d to disassemble a cheat. There is also a --repl mode for you to play around with CheatASM. i've tried to put together an exhaustive readme on the repository and have published a portable release which should be runable anywhere you can install dotnet (it runs on .NET 5.0).
There are some example files in the repository, but please note, I don't actually write cheats for games, so the examples are a bit contrived/senseless as they were intended to test out the features of the assembler, and not actually make sense
To give a small taste of what this utility enables:
Code:
.if.q R4 == 0x1234
mov.b [MAIN+R5], 0x5
.else
mov.b [MAIN+R5], 0x6
.fi
Assembles to:
Code:
C0854400 00000000 00001234
01050000 00000000 00000005
21000000
01050000 00000000 00000006
20000000
And something like this:
Code:
.title {1234}
.build {1234}
floatTest: .f32 4.83
mainOffset: .u32 const 0x1234
coinOffset: .u32 const 0x12
ten: .u32 0xA
.cheat master "Setup"
mov.d [R0 + 0x123], floatTest
mov.q R0, [MAIN + mainOffset]
.cheat "Always 10 coins"
mov.d [R0 + coinOffset], ten
mov.q [R1 + 0x123], floatTest
Assembles down to:
Code:
[Assembled by CheatASM]
{Setup}
400F0000 00000000 409A8F5C
A4F00200 00000123
58000000 00001234
[Always 10 coins]
400F0000 00000000 0000000A
400E0000 00000000 409A8F5C
A4F00200 00000012
A8E10200 00000123
I hope some of you may find this utility useful and welcome any feedback/issues on the repository.