Widespread Myths

[[!redirects Widespread Myths on wheels]] These are myths that frequently show up that mislead people into writing bad code based on false perception of what the system actually does.

Myth: The PPU steals cycles from the CPU if there are a lot of sprites on-screen.

Fact: The PPU does not stea ...

How to display sprites

Just like the NES, the SNES has a special area of memory called the OAM, that stores the attributes of sprites. For the NES using sprites is pretty straight forward:

  1. During the main game routine, write sprites to an OAM buffer.

  2. At the end of the main game routine, move the unused sprite ...


The SNES has 128 independent sprites. The sprite definitions are stored in Object Attribute Memory, or OAM.


OAM consists of 544 bytes, organized into a low table of 512 bytes and a high table of 32 bytes. Both tables are made up of 128 records. OAM is accessed by setting the word add ...

SNES Sprites

This was very large and I had to write more sections in different parts of the tutorial, so please tell me if anything is confusing. I have not proofread any of this.

Sprites are important to every game. They are coined after the objects that move in a game, and there are ALOT of moving objects i ...

Finding free VRAM spots for 32x32 and 16x16 sprites

[[!redirects Find free VRAM spots for 32x32 and 16x16 sprites]] [[!redirects How to automatically find empty places in VRAM for random 16x16 and 32x32 sprite graphics]] This code will allow you to automatically find an empty space in VRAM so you can fit a 16x16 or 32x32 sprite pattern as needed. ...


Address Bus B Registers

TODO: note on fast access time

Register Address Name Style Access Timing
Screen Display ...


This is a document intended to describe various aspects of SNES timing. It will probably not be useful unless you already know a good bit about the SNES.

BTW, special credit to byuu for the critical observation that the SNES returns to a known timing position on reset. Thus, a deterministic ROM ( ...