ASM Hacking

ASM Hacking is the name given to the process of modifying the games code.

This can be done using hooks, your modified code can be written in either ARM Assembly (ASM), and / or in C++ using the ASM patch template.

Hooks
Hooks are used to modify the games code at a certain address.

Hooks can either be done to arm9.bin or an overlay, here are some examples:
 * hook_0200da0c: hooks to 0x0200da0c in arm9.bin
 * hook_020b0cc4_ov_02: hooks to 0x020b0cc4 in Overlay_002.bin

There are 3 types of hooks:
 * hook: replaces the instruction at the given address with a b to a piece of code that executes the original instruction at the address, saves registers r0-r12 and r14, calls the function with a bl, restores the saved registers and branches to the instruction following the one that was replaced
 * nsub: replaces the instruction at the given address with a b to the function or label (new subroutine)
 * repl: replaces the instruction at the given address with a bl to the function or label

ASM patch template
The ASM patch template is a C++ template you can use to write code in C++, it contains lots of symbols and defines some structs used by the game.

ASM Patches
You can find all kinds of public ASM Patches in pants64's repo and Splatterboy's repo.