From SMWiki
Jump to: navigation, search

Assembly (ASM for short) is a second-generation programming language used in all the Super Nintendo games, which is 65c816 assembly in this case. Of course, assembly is used in Super Mario World too. 65c816 assembly uses 3-letter instructions.


How it is used

Assembly was used to develop the Super Nintendo games. Coding in assembly is efficient since you're dealing with code which translates into machine code very easily. Learning ASM is pretty difficult; it might take a few years to fully understand it, and learn when to use it properly. To use assembly you have to know binary, decimal, hexadecimal, and you need to be creative when it comes to solving ASM problems.

Usage in Super Mario World

Without ASM hacking stuff such as custom sprites, blocks, music, ExGFX, and patches wouldn't be possible. Lunar Magic installs ASM hacks to insert ExGFX for example. If you simply inject graphics into a ROM without doing anything else, the graphics won't get used since the game doesn't know it has been injected. To create a custom sprite, you need decent ASM skills and patience. To create custom blocks you need basic ASM skills, and to create patches you'll need to be careful about not overwriting the game's original vital ASM data.

Debugging ASM

You can use a debugger such as snes9x debugger to debug Super Mario World. You can trace instructions and the SNES hardware and RAM. If a crash occurs, you can trace it and figure out what causes the problem. Debugging is a vital part of ASM hacking; figuring out problems without a debugger would be very tedious, puzzling, confusing and difficult (and maybe stressful).

Assembling instructions into machine code

To assemble a code, you'll have to use an assembler such as xkas. Of course, you can do it manually too but it'll be a waste of time and mistakes are bound to happen.

Personal tools