Understanding SNES hardware is essential for effective game development.
| Document | Description |
|---|---|
| Memory Map | RAM, ROM, and register layout |
| Registers | Complete hardware register reference |
| OAM | Sprite attribute memory documentation |
For graphics (PPU, tiles, modes, palettes), see the SNES Graphics Guide. For audio (SPC700, DSP, BRR, SNESMOD), see the SNES Sound Guide.
| Component | Specification |
|---|---|
| CPU | 65816 @ 3.58 MHz (NTSC) / 3.55 MHz (PAL) |
| Work RAM | 128 KB |
| VRAM | 64 KB |
| OAM | 544 bytes (128 sprites + size/position bits) |
| CGRAM | 512 bytes (256 colors x 2 bytes) |
| APU | SPC700 @ 1.024 MHz + DSP |
| Audio RAM | 64 KB |
| Mode | Resolution |
|---|---|
| NTSC | 256x224 or 256x239 |
| PAL | 256x239 or 256x268 |
| Hi-res | 512x224 (limited use) |
0BBBBBGGGGGRRRRRThe PPU draws the screen line by line. VBlank is the period when the PPU is not drawing (returning to top of screen). This is the only safe time to update VRAM, OAM, and CGRAM.
Tiles are 8x8 pixel graphics used for both backgrounds and sprites.
Sprites (Objects/OBJ) are movable graphics composed of one or more tiles:
| Mode | BG1 | BG2 | BG3 | BG4 | Colors |
|---|---|---|---|---|---|
| 0 | 4 | 4 | 4 | 4 | 4 per BG |
| 1 | 16 | 16 | 4 | - | Common |
| 2 | 16 | 16 | - | - | Per-tile offset |
| 3 | 256 | 16 | - | - | Direct color |
| 4 | 256 | 4 | - | - | Per-tile offset |
| 5 | 16 | 4 | - | - | Hi-res |
| 6 | 16 | - | - | - | Hi-res + offset |
| 7 | 256 | - | - | - | Mode 7 rotation |
Most games use Mode 1 (good balance of features).
The 65816 has a 24-bit address space divided into 256 "banks" of 64KB each:
ROM mapping modes affect how cartridge ROM appears in the address space:
| Mode | ROM Start | Max Size | Common Use |
|---|---|---|---|
| LoROM | $80:8000 | 4 MB | Most games |
| HiROM | $C0:0000 | 4 MB | Large games |
| ExHiROM | Varies | 8 MB | Very large games |
OpenSNES uses LoROM by default.