Register Cheat Sheet

Last Modified:
If you see a bug on this page, please report it on GitHub
Register Timing d7 d6 d5 d4 d3 d2 d1 d0
$2100 INIDISP write
any
Force blank - - - Brightness
$2101 OBSEL write
f/v blank
Object SizeName select Base address
$2102 OAMADDL write
f/v blank
OAM address
$2103 OAMADDH write
f/v blank
Sprite priority rotation - - - - - - OAM table
$2104 OAMDATA write
f/v blank
OAM data write (write twice[^oamdata])
$2105 BGMODE write
f/v/h blank
BG character size Mode 1 BG3 priority BG mode
BG4 BG3 BG2 BG1
$2106 MOSAIC write
f/v/h blank
Pixel size Enable
BG4 BG3 BG2 BG1
$2107 BG1SC write
f/v blank
BG1 tilemap VRAM address BG1 map size
$2108 BG2SC write
f/v blank
BG2 tilemap VRAM address BG2 map size
$2109 BG3SC write
f/v blank
BG3 tilemap VRAM address BG3 map size
$210a BG4SC write
f/v blank
BG4 tilemap VRAM address BG4 map size
$210b BG12NBA write
f/v blank
BG2 character VRAM address BG1 character VRAM address
$210c BG34NBA write
f/v blank
BG4 character VRAM address BG3 character VRAM address
$210d BG1HOFS
M7HOFS
write
f/v/h blank
BG1 Horizontal Offset (10 bits (13 signed bits in Mode 7), write twice)
$210e BG1VOFS
M7VOFS
write
f/v/h blank
BG1 Vertical Offset (10 bits (13 signed bits in Mode 7), write twice)
$210f BG2HOFS write
f/v/h blank
BG2 Horizontal Offset (10 bits, write twice)
$2110 BG2VOFS write
f/v/h blank
BG2 Vertical Offset (10 bits, write twice)
$2111 BG3HOFS write
f/v/h blank
BG3 Horizontal Offset (10 bits, write twice)
$2112 BG3VOFS write
f/v/h blank
BG3 Vertical Offset (10 bits, write twice)
$2113 BG4HOFS write
f/v/h blank
BG4 Horizontal Offset (10 bits, write twice)
$2114 BG4VOFS write
f/v/h blank
BG4 Vertical Offset (10 bits, write twice)
$2115 VMAIN write
f/v blank
Increment register - - - Address increment Address remapping
$2116 VMADDL write
f/v blank
VRAM word address
$2117 VMADDH write
f/v blank
$2118 VMDATAL write
f/v blank
VRAM data write low byte
$2119 VMDATAH write
f/v blank
VRAM data write high byte
$211a M7SEL write
f/v blank
Mode 7 settings
Out of field fill Fill type - - - - V flip H flip
$211b M7A write
f/v/h blank
Mode 7 matrix A (1:7:8 signed fixed point, write twice)
$211c M7B write
f/v/h blank
Mode 7 matrix B (1:7:8 signed fixed point, write twice)
$211d M7C write
f/v/h blank
Mode 7 matrix C (1:7:8 signed fixed point, write twice)
$211e M7D write
f/v/h blank
Mode 7 matrix D (1:7:8 signed fixed point, write twice)
$211f M7X write
f/v/h blank
Mode 7 centre X (13 signed bits, write twice)
$2120 M7Y write
f/v/h blank
Mode 7 centre Y (13 signed bits, write twice)
$2121 CGADD write
f/v/h blank
CGRAM word address
$2122 CGDATA write
f/v/h blank
CGRAM data write (write twice)
$2123 W12SEL write
f/v/h blank
BG2 window 2 BG2 window 1 BG1 window 2 BG1 window 1
Enable Invert Enable Invert Enable Invert Enable Invert
$2124 W34SEL write
f/v/h blank
BG4 window 2 BG4 window 1 BG3 window 2 BG3 window 1
Enable Invert Enable Invert Enable Invert Enable Invert
$2125 WOBJSEL write
f/v/h blank
Colour window 2 Colour window 1 OBJ window 2 OBJ window 1
Enable Invert Enable Invert Enable Invert Enable Invert
$2126 WH0 write
f/v/h blank
Window 1 left position
$2127 WH1 write
f/v/h blank
Window 1 right position
$2128 WH2 write
f/v/h blank
Window 2 left position
$2129 WH3 write
f/v/h blank
Window 2 right position
$212a WBGLOG write
f/v/h blank
Window mask logic
BG4 window BG3 window BG2 window BG1 window
$212b WOBJLOG write
f/v/h blank
Window mask logic
- - Colour window OBJ window
$212c TM write
f/v/h blank
Main screen designation
- - - OBJ BG4 BG3 BG2 BG1
$212d TS write
f/v/h blank
Sub screen designation
- - - OBJ BG4 BG3 BG2 BG1
$212e TMW write
f/v/h blank
Window Mask designation for the main screen
- - - OBJ BG4 BG3 BG2 BG1
$212f TSW write
f/v/h blank
Window Mask designation for the sub screen
- - - OBJ BG4 BG3 BG2 BG1
$2130 CGWSEL write
f/v/h blank
Colour addition select
Clip colours to black Prevent colour math - - Add sub screen Direct colour mode
$2131 CGADSUB write
f/v/h blank
Add/Subtract Half colour math Enable color math
Backdrop OBJ BG4 BG3 BG2 BG1
$2132 COLDATA write
f/v/h blank
Color plane(s) Intensity
Blue Green Red
$2133 SETINI write
f/v/h blank
External sync Mode 7 EXTBG - - Psuedo hires Overscan mode OBJ interlace Screen interlace
$2134 MPYL read
not mode 7
Multiplication result
{signed 16 bit value of `M7A`} *
$2135 MPYM read
not mode 7
$2136 MPYH read
not mode 7
$2137 SLHV read
any
Software latch for H/V counter
$2138 OAMDATAREAD read
f/v blank
OAM data read
$2139 VMDATALREAD read
f/v blank
VRAM data read low byte
$213a VMDATAHREAD read
f/v blank
VRAM data read high byte
$213b CGDATAREAD read
f/v/h blank
CGRAM data read (read twice)
$213c OPHCT read
any
Horizontal scanline location (9 bits, read twice)
$213d OPVCT read
any
Vertical scanline location (9 bits, read twice)
$213e STAT77 read
any
OBJ time over flag OBJ range over flag Master/Slave flag - 5C77 chip version
$213f STAT78 read
any
Interface field External latch flag - NTSC/PAL 5C78 chip version
$2140 APUIO0 read/write
any
APU I/O register 0
$2141 APUIO1 read/write
any
APU I/O register 1
$2142 APUIO2 read/write
any
APU I/O register 2
$2143 APUIO3 read/write
any
APU I/O register 3
$2180 WMDATA read/write
any
WRAM data read/write
$2181 WMADDL write
any
WRAM address (17 bit)
$2182 WMADDM write
any
$2183 WMADDH write
any
$4016 JOYSER0
(write)
write
not auto‑joy
- - - - - - - Latch Line
JOYSER0
(read)
read
not auto‑joy
- - - - - - Port 1
Data 2
Port 1
Data 1
$4017 JOYSER1 read
not auto‑joy
- - - - - - Port 2
Data 2
Port 2
Data 1
$4200 NMITIMEN write
any
Enable NMI - Enable IRQ - - - Enable auto‑joy
Vertical Horizontal
$4201 WRIO write
any
Port 2
Pin 6
Port 1
Pin 6
x x x x x x
$4202 WRMPYA write
any
Multiplicand A
$4203 WRMPYB write
any
Multiplicand B
$4204 WRDIVL write
any
Dividend C
$4205 WRDIVH write
any
$4206 WRDIVB write
any
Divisor B
$4207 HTIMEL write
any
H-count timer (9 bits)
$4208 HTIMEH write
any
$4209 VTIMEL write
any
V-count timer (9 bits)
$420a VTIMEH write
any
$420b MDMAEN write
any
Enable DMA channel
Ch 7 Ch 6 Ch 5 Ch 4 Ch 3 Ch 2 Ch 1 Ch 0
$420c HDMAEN write
any
Enable HDMA channel
Ch 7 Ch 6 Ch 5 Ch 4 Ch 3 Ch 2 Ch 1 Ch 0
$420d MSEL write
any
- - - - - - - FastROM enable
$4210 RDNMI read
any
NMI flag - - - 5A22 chip version
$4211 TIMEUP read
any
IRQ flag - - - - - - -
$4212 HVBJOY read
any
V-blank flag H-blank flag - - - - - Auto-joy flag
$4213 RDIO read
any
Port 2
Pin 6
Port 1
Pin 6
x x x x x x
$4214 RDDIVL read
any
Quotient of divide result
Unsigned 16 bit result of `{WRDIVH WRDIVL} / {WRDIVB}`. (16 CPU cycles after writing to `WRDIVB`)
$4215 RDDIVH read
any
$4216 RDMPYL read
any
Divide remainder
Unsigned 16 bit result of `{WRDIVH WRDIVL} % {WRDIVB}`. (16 CPU cycles after writing to `WRDIVB`)
-OR-
Multiplication product
Unsigned 16 bit result of `{WRMPYA} * {WRMPYB}` (8 CPU cycles after writing to `WRMPYB`)
$4217 RDMPYH read
any
$4218 JOY1L read
not auto‑joy
Joypad 1 data
$4219 JOY1H read
not auto‑joy
$421a JOY2L read
not auto‑joy
Joypad 2 data
$422b JOY2H read
not auto‑joy
$421c JOY3L read
not auto‑joy
Joypad 3 data
$421d JOY3H read
not auto‑joy
$421e JOY4L read
not auto‑joy
Joypad 4 data
$421f JOY4H read
not auto‑joy
$43x0 DMAPx read/write
any
Transfer direction HDMA addressing mode - DMA address increment Fixed transfer Transfer mode
$43x1 BBADx read/write
any
DMA bus B address
$43x2 A1TxL read/write
any
DMA bus A address
$43x3 A1TxH read/write
any
$43x4 A1Bx read/write
any
DMA bus A bank
$43x5 DASxL read/write
any
DMA size
-OR-
HDMA indirect address
$43x6 DASxH read/write
any
$43x7 DASBx read/write
any
HDMA indirect address bank
$43x8 A2AxL read/write
any
HDMA table address
$43x9 A2AxH read/write
any
$43xa NLTRx read/write
any
Repeat select Line count

Sources


  1. OAMDATA register is write twice if OAMDATA writes to the low table, write once if OAMDATA writes to the high table.