Polling Controller Input

In this tutorial, you'll learn to read the joypad registers and react to player input ;). We're going to need to store the player's input somewhere, so we'll declare some variables in the system's RAM ($0000-$1FFF). If you make your own variables later in this part of RAM, keep in mind that the stack is set to $1FFF, so try not to get too close to that area (of course). We'll define variables ...

Stunt Race FX

Stunt Race FX / Wild Trax

The following information is for the US version of the game.

Track Data


Offset Description
1F4A5 - 1F4F8 Track Data pointers (3 bytes per track, 28 tracks)
28000 Menu "Track" Data
28074 00- ...


Address Bus B Registers

TODO: note on fast access time

Register Address Name Style Access Timing
Screen Display Register $2100 INIDISP single write any time
Object Size and ...

Making a Small Game - Tic-Tac-Toe

When you have finished this tutorial, you will have written a small game. Things you have to know before you start:

  • 65816 assembly
  • Interrupts (What are NMI and VBlank)
  • What is VRAM, CGRAM, and their basic structures
  • What is DMA and how to use it
  • Video modes (mode 0), using backgrounds
  • How to get information on player input
  • Optional: Using 16x16 tiles

If you have problems ...

Satellaview Soundlink

Soundlink, also known as "Live Voice" and various other aliases, is a Satellaview function in which Streaming Satellite Radio from St.GIGA is played at the same time as software data is broadcast, downloaded and played. This is intended to give the illusion of a game being played with high-quality audio. This was a selling feature of the Satellaview and was used in a lot of it's software.

Soun ...

Mega Man X3

Mega Man X3

Decompression Routine

People always assume "OMG MMX3! this game uses a C4 chip, the C4 chip does the decompression blah blah blah" well I proved them WRONG! C4 chip is ONLY responsible for OpenGL-lik ...

Satellaview AV selector

Satellaview AV Selector

The satellaview AV selector was conceived in order to prepare the decoded satellite signal for the satellaview, prevent the super famicom from monopolizing the TV's AV input, and allow for the use of a second BS decoder along with the one provided by ST. Giga. As is evident in the following diagram, the selector's internal circuit can be divided in three discrete units, ...

Grog's Guide to DMA and HDMA on the SNES

Introduction to DMA

Most computer systems have some form of Direct Memory Access controller, which is basically a piece of hardware that allows I/O devices to copy to and from main memory independently of CPU control. In the SNES, as usual, Nintendo came up with an odd design for their DMA system. There are 8 DMA "channels", each of which can control a separate transfer from CPU memory t ...