|Question:||What is ASM? |
|Answer:||ASM (Assembler) is the low level programming code used by a CPU. 65c816 ASM is the language used by the SNES. |
|Question:||Where can I learn how to program in 65c816 ASM? |
|Answer:||There are two basic tutorials here. You can find more advanced info here, here, and here. Also available are compiled lessons from SMW Central's ASM Workshop 2019. |
|Question:||What can I use ASM for? |
|Answer:||For Super Mario World hacks, it can enable you to insert new custom sprites, blocks, gimmicks and features (UberASM and patches) to your hack. Interest in adding ASM to Yoshi's Island hacks is also increasing, too, through our Yoshi's Island patches and SPASM sections. |
|Question:||Sometimes I see code like "LDA.l" or "STA.w" or "LDX.b" - what do the extra letters at the end mean? |
|Answer:||These letters are used to specify the size of an instruction to be used by Asar. Many instructions can take different sizes, such as |
LDA #$000F versus
LDA #$0F. Normally, Asar tries to build the shortest logical code for maximum efficiency. Appending
.l will force Asar to load a specific size (2, 4 and 6 digits, respectively). This is commonly used when math is done on assembly in order to guarantee a properly-sized result (Ex.
|Question:||What is SA-1? |
|Answer:||The SA-1 chip is a co-processor used in certain special SNES games to grant various performance improvements. In SMW hacking, SA-1 can be enabled with this patch, which reduces or eliminates slowdown and increases the number of sprites allowed on screen at once. Note that resources must specifically be made to be compatible with SA-1; luckily, increasingly many resources available for download come pre-configured to automatically detect and work with an SA-1 enhanced ROM. Look for resources tagged as sa-1 to ensure compatibility. |
|Question:||Most of the blocks, sprites, patches and UberASM I download have |!addr written all over the code - what does that mean? |
|!addr is a standardized define used in SA-1 compatible resources. It is generally used to ensure that code is automatically converted to SA-1 format if an SA-1 ROM is detected, and leaves the code unaltered if not.