PPU Registers
Introduction
PPU (also knowing as Picture Processing Unit) is a co-processor of SNES used to send video data to TV. It includes a lot of registers that can be used to do graphic effects.
Registers $2100~$21FF
Extracted from Anomie's Register Doc "regs.txt"
$2100: Screen Display
It can be read/written at any time: Yes It can be read/written during H-Blank: Yes It can be read/written during V-Blank: Yes It can be read/written during force-blank: Yes Register is writable for an effect: Yes Register is readable for a value or effect (i.e. not open bus): Yes Read/Write style: Byte
Format:
x---bbbb
x = Force blank on when set. bbbb = Screen brightness, F=max, 0="off".
Note that force blank CAN be disabled mid-scanline. However, this can result in glitched graphics on that scanline, as the internal rendering buffers will not have been updated during force blank. Current theory is that BGs will be glitched for a few tiles (depending on how far in advance the PPU operates), and OBJ will be glitched for the entire scanline. Also, writing this register on the first line of V-Blank (225 or 240, depending on overscan) when force blank is currently active causes the OAM Address Reset to occur.
$2101: Object Size and Chr Address
It can be read/written at any time: No It can be read/written during H-Blank: ??? It can be read/written during V-Blank: Yes It can be read/written during force-blank: Yes Register is writable for an effect: Yes Register is readable for a value or effect (i.e. not open bus): No Read/Write style: Byte
Format:
sssnnbbb
sss = Object size:
- 000 = 8x8 and 16x16 sprites
- 001 = 8x8 and 32x32 sprites
- 010 = 8x8 and 64x64 sprites
- 011 = 16x16 and 32x32 sprites
- 100 = 16x16 and 64x64 sprites
- 101 = 32x32 and 64x64 sprites
- 110 = 16x32 and 32x64 sprites ('undocumented')
- 111 = 16x32 and 32x32 sprites ('undocumented')
nn = Name Select
bbb = Name Base Select (Addr>>14)
- See the section "SPRITES" below for details.