Super NES Programming

This book is an open work designed for people interested in learning to program for the Super Nintendo Entertainment System and assumes some basic knowledge on how to program in assembly language, use a command prompt and emulator.

This book will cover how to write programs for the Super Nintendo Entertainment System. As the CPU of the SNES has a 65c816 core, programming for the SNES is done with 65c816 assembly language.

If you find any problems with terms or concepts, you can contribute an explanation to it. Feel free to participate and fix errors; you are welcome to do so.

Part One: Tutorials

 * Introduction to 65816 assembly
 * Initializing the SNES and changing the background color
 * DMA transfer
 * Using tiles and palettes
 * Creating graphics for your SNES programs
 * Loading SPC700 programs for the SNES sound co-processor
 * Using Pointer Tables
 * Joypad Input
 * Using the Super FX chip

Programming Techniques

 * multiplication
 * Animated Sprites
 * Platform Physics
 * Multijointed Sprite Bosses
 * How NOT to cause slowdown

Appendices

 * Technical specifications
 * Memory map
 * 65c816 reference
 * SPC700 reference
 * Homebrew Super NES games
 * SNES Emulators
 * SNES hardware registers
 * Snes_Init.asm Code

Tools

 * The WLA-65816 Micro Assembler is an open-source, cross-platform 65816 assembler used for these tutorials.
 * Geiger's debugging version of Snes9x lets you step through a SNES ROM's execution, set breakpoints, examine audio and video memory, and more. Only available for Windows.
 * higan (formerly bsnes) is an SNES emulator written by byuu that strives for more exact hardware emulation. It strays away from using ROM-specific hacks and the like, but requires higher machine specs than other emulators.

Resources

 * SNES Development Wiki Technical Documents, Tutorials and References
 * Vintage Dev (broken) is a great set of in-depth SNES programming tutorials & tools. Vintage Dev at Wayback Machine (archived January 20, 2010)
 * #snesdev, a Super NES development channel on the EFnet server. (on IRC)
 * Some SNES technical documents
 * ROMhacking.net has a variety of documents on assembly programming, SNES hardware info, and sample source code!

Contributors
Put your name here if you have contributed to this Wikibook.
 * Snarius --Started this book, wrote most of it.

슈퍼 패미컴 프로그래밍