Register Cheat Sheet

Last Modified:
If you see a bug on this page, please report it on GitHub
Register Timing d7d6d5d4d3d2d1d0
$2100 INIDISP write
any
Force blank---Brightness
$2101 OBSEL write
f/v blank
Object SizeName selectBase 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 sizeMode 1 BG3 priorityBG mode
BG4BG3BG2BG1
$2106 MOSAIC write
f/v/h blank
Pixel sizeEnable
BG4BG3BG2BG1
$2107 BG1SC write
f/v blank
BG1 tilemap VRAM addressBG1 map size
$2108 BG2SC write
f/v blank
BG2 tilemap VRAM addressBG2 map size
$2109 BG3SC write
f/v blank
BG3 tilemap VRAM addressBG3 map size
$210a BG4SC write
f/v blank
BG4 tilemap VRAM addressBG4 map size
$210b BG12NBA write
f/v blank
BG2 character VRAM addressBG1 character VRAM address
$210c BG34NBA write
f/v blank
BG4 character VRAM addressBG3 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 incrementAddress 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 fillFill type----V flipH 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 2BG2 window 1BG1 window 2BG1 window 1
EnableInvertEnableInvertEnableInvertEnableInvert
$2124 W34SEL write
f/v/h blank
BG4 window 2BG4 window 1BG3 window 2BG3 window 1
EnableInvertEnableInvertEnableInvertEnableInvert
$2125 WOBJSEL write
f/v/h blank
Colour window 2Colour window 1OBJ window 2OBJ window 1
EnableInvertEnableInvertEnableInvertEnableInvert
$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 windowBG3 windowBG2 windowBG1 window
$212b WOBJLOG write
f/v/h blank
Window mask logic
--Colour windowOBJ window
$212c TM write
f/v/h blank
Main screen designation
---OBJBG4BG3BG2BG1
$212d TS write
f/v/h blank
Sub screen designation
---OBJBG4BG3BG2BG1
$212e TMW write
f/v/h blank
Window Mask designation for the main screen
---OBJBG4BG3BG2BG1
$212f TSW write
f/v/h blank
Window Mask designation for the sub screen
---OBJBG4BG3BG2BG1
$2130 CGWSEL write
f/v/h blank
Colour addition select
Clip colours to blackPrevent colour math--Add sub screenDirect colour mode
$2131 CGADSUB write
f/v/h blank
Add/SubtractHalf colour mathEnable color math
BackdropOBJBG4BG3BG2BG1
$2132 COLDATA write
f/v/h blank
Color plane(s)Intensity
BlueGreenRed
$2133 SETINI write
f/v/h blank
External syncMode 7 EXTBG--Psuedo hiresOverscan modeOBJ interlaceScreen 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 flagOBJ range over flagMaster/Slave flag-5C77 chip version
$213f STAT78 read
any
Interface fieldExternal latch flag-NTSC/PAL5C78 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
VerticalHorizontal
$4201 WRIO write
any
Port 2
Pin 6
Port 1
Pin 6
xxxxxx
$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 7Ch 6Ch 5Ch 4Ch 3Ch 2Ch 1Ch 0
$420c HDMAEN write
any
Enable HDMA channel
Ch 7Ch 6Ch 5Ch 4Ch 3Ch 2Ch 1Ch 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 flagH-blank flag-----Auto-joy flag
$4213 RDIO read
any
Port 2
Pin 6
Port 1
Pin 6
xxxxxx
$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 directionHDMA addressing mode-DMA address incrementFixed transferTransfer 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 selectLine count

Sources


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