Super NES Programming/SNES Hardware Registers
Address | Register name | Comment |
---|---|---|
0x2100 | Screen Display Register | a000bbbb a: 0=screen on 1=screen off, b = brightness |
0x2101 | OAM Size and Data Area Designation | aaabbccc a = Size, b = Name Selection, c = Base Selection |
0x2102 | Address for Accessing OAM | |
0x2104 | OAM Data Write | |
0x2105 | BG Mode and Tile Size Setting | abcdefff abcd = BG tile size (4321): 0 = 8x8 1 = 16x16, e = BG 3 High Priority, f = BG Mode |
0x2106 | Mosaic Size and BG Enable | aaaabbbb a = Mosaic Size b = Mosaic BG Enable |
0x2107 | BG 1 Address and Size | aaaaaabb a = Screen Base Address (Upper 6-bit), b = Screen Size |
0x2108 | BG 2 Address and Size | aaaaaabb a = Screen Base Address (Upper 6-bit), b = Screen Size |
0x2109 | BG 3 Address and Size | aaaaaabb a = Screen Base Address (Upper 6-bit), b = Screen Size |
0x210A | BG 4 Address and Size | aaaaaabb a = Screen Base Address (Upper 6-bit), b = Screen Size |
0x210b | BG 1 & 2 Tile Data Designation | aaaabbbb a = BG 2 Tile Base Address, b = BG 1 Tile Base Address |
0x210c | BG 3 & 4 Tile Data Designation | aaaabbbb a = BG 4 Tile Base Address, b = BG 3 Tile Base Address |
0x210d | BG 1 Horizontal Scroll Offset | Scroll offset registers are all 16 bits wide. |
0x210e | BG 1 Vertical Scroll Offset | |
0x210f | BG 2 Horizontal Scroll Offset | |
0x2110 | BG 2 Vertical Scroll Offset | |
0x2111 | BG 3 Horizontal Scroll Offset | |
0x2112 | BG 3 Vertical Scroll Offset | |
0x2113 | BG 4 Horizontal Scroll Offset | |
0x2114 | BG 4 Vertical Scroll Offset | |
0x2115 | VRAM Address Increment Value | |
0x2116 | Address for VRAM Read/Write (Low Byte) | |
0x2117 | Address for VRAM Read/Write (High Byte) | |
0x2118 | Data for VRAM Write (Low Byte) | |
0x2119 | Data for VRAM Write (High Byte) | |
0x211a | Initial Setting for Mode 7 | aa0000bc a = Screen Over b = Vertical Flip c = Horizontal Flip |
0x211b | Mode 7 Matrix Parameter A | Registers 211b through 2120 are 16 bits wide. 0x211B is also used as the 16-bit multiplicand for registers 0x2134-6 (write twice) 0x211C is also used as the 8-bit multiplier for registers 0x2134-6 |
0x211c | Mode 7 Matrix Parameter B | |
0x211d | Mode 7 Matrix Parameter C | |
0x211e | Mode 7 Matrix Parameter D | |
0x211f | Mode 7 Center Position X | |
0x2120 | Mode 7 Center Position Y | |
0x2121 | Address for CG-RAM Write | |
0x2122 | Data for CG-RAM Write | |
0x2123 | BG 1 and 2 Window Mask Settings | aaaabbbb a = BG 2 Window Settings b = BG 1 Window Settings |
0x2124 | BG 3 and 4 Window Mask Settings | aaaabbbb a = BG 4 Window Settings b = BG 3 Window Settings |
0x2125 | OBJ and Color Window Settings | aaaabbbb a = Color Window Settings b = OBJ Window Settings |
0x2126 | Window 1 Left Position Designation | |
0x2127 | Window 1 Right Position Designation | |
0x2128 | Window 2 Left Position Designation | |
0x2129 | Window 2 Right Position Designation | |
0x212a | BG 1, 2, 3 and 4 Window Logic Settings | aabbccdd a = BG 4 b = BG 3 c = BG 2 d = BG 1 |
0x212b | Color and OBJ Window Logic Settings | 0000aabb a = Color Window b = OBJ Window |
0x212c | Background and Object Enable (Main Screen) | 000abcde a = Object b = BG 4 c = BG 3 d = BG 2 e = BG 1 |
0x212d | Background and Object Enable (Sub Screen) | 000abcde a = Object b = BG 4 c = BG 3 d = BG 2 e = BG 1 |
0x212e | Window Mask Designation for Main Screen | 000abcde a = Object b = BG 4 c = BG 3 d = BG 2 e = BG 1 |
0x212f | Window Mask Designation for Sub Screen | 000abcde a = Object b = BG 4 c = BG 3 d = BG 2 e = BG 1 |
0x2130 | Initial Settings for Color Addition | aabb00cd a = Main Color Window On/Off, b = Sub Color Window On/Off, c = Fixed Color Add/Subtract Enable, d = Direct Select |
0x2131 | Add/Subtract Select and Enable | abcdefgh a = 0 for Addition, 1 for Subtraction, b = 1/2 Enable c = Back Enable, d = Object Enable, efgh = Enable BG 4, 3, 2, 1 |
0x2132 | Fixed Color Data | abcddddd a = Blue b = Green c = Red ddddd = Color Data |
0x2133 | Screen Initial Settings | ab00cdef a = External Sync, b = ExtBG Mode, c = Pseudo 512 Mode, d = Vertical Size, e = Object-V Select, f = Interlace |
0x2134 | Multiplication Result (Low Byte) | |
0x2135 | Multiplication Result (Mid Byte) | |
0x2136 | Multiplication Result (High Byte) | |
0x2137 | Software Latch for H/V Counter | |
0x2138 | Read Data from OAM (Low-High) | |
0x2139 | Read Data from VRAM (Low) | |
0x213a | Read Data from VRAM (High) | |
0x213b | Read Data from CG-RAM (Low-High) | |
0x213c | H-Counter Data | |
0x213d | V-Counter Data | |
0x213e | PPU Status Flag | |
0x213f | ||
0x2140 | APU I/O Port | |
0x2141 | ||
0x2142 | ||
0x2143 | ||
0x2180 | Indirect Work RAM access port | The address in 0x2181 through 0x2183 auto-increments after each access |
0x2181 | Indirect Work RAM access address (Low byte) | |
0x2182 | Indirect Work RAM access address (Middle byte) | |
0x2183 | Indirect Work RAM access address (High bit) | 0000000a a : Memory bank, 0 = 0x7E, 1 = 0x7F |
0x4200 | NMI, V/H Count, and Joypad Enable | a0bc000d a = NMI b = V-Count c = H-Count d = Joypad |
0x4201 | Programmable I/O Port Output | |
0x4202 | Multiplicand A | |
0x4203 | Multplier B | |
0x4204 | Dividend (Low Byte) | |
0x4205 | Dividend (High-Byte) | |
0x4206 | Divisor B | |
0x4207 | H-Count Timer (Upper 8 Bits) | |
0x4208 | H-Count Timer MSB (Bit 0) | |
0x4209 | V-Count Timer (Upper 8 Bits) | |
0x420a | V-Count Timer MSB (Bit 0) | |
0x420b | Regular DMA Channel Enable | abcdefgh a = Channel 7...h = Channel 0: 1 = Enable 0 = Disable |
0x420c | H-DMA Channel Enable | abcdefgh a = Channel 7 .. h = Channel 0: 1 = Enable 0 = Disable |
0x420d | Cycle Speed Designation | 0000000a a: 0 = 2.68 MHz, 1 = 3.58 MHz |
0x4210 | NMI Flag and CPU version number | a000bbbb a = NMI occurred b = CPU Version number |
0x4211 | IRQ Flag By H/V Count Timer | |
0x4212 | H/V Blank Flags and Joypad Status | |
0x4213 | Programmable I/O Port Input | |
0x4214 | Quotient of Divide Result (Low Byte) | |
0x4215 | Quotient of Divide Result (High Byte) | |
0x4216 | Product/Remainder Result (Low Byte) | |
0x4217 | Product/Remainder Result (High Byte) | |
0x4218 | Joypad 1 Data (Low Byte) | abcd0000 a = Button A b = X c = L d = R |
0x421a | Joypad 2 Data (Low Byte) | |
0x421c | Joypad 3 Data (Low Byte) | |
0x421e | Joypad 4 Data (Low Byte) | |
0x4219 | Joypad 1 Data (High Byte) | abcdefgh a = B b = Y c = Select d = Start efgh = Up/Dn/Lt/Rt |
0x421b | Joypad 2 Data (High Byte) | |
0x421d | Joypad 3 Data (High Byte) | |
0x421f | Joypad 4 Data (High Byte) |
DMA Registers
edit'X' being from 0 to 7:
Address | Register name | Comment |
---|---|---|
0x43X0 | Parameters for DMA Transfer | ab0cdeee a = Direction b = Type c = Inc/Dec d = Auto/Fixed e = Word Size Select |
0x43X1 | B Address | |
0x43X2 | A Address (Low Byte) | |
0x43X3 | A Address (High Byte) | |
0x43X4 | A Address Bank | |
0x43X5 | Number Bytes to Transfer (Low Byte) (DMA) | |
0x43X6 | Number Bytes to Transfer (High Byte) (DMA) | |
0x43X7 | Data Bank (H-DMA) | |
0x43X8 | A2 Table Address (Low Byte) | |
0x43X9 | A2 Table Address (High Byte) | |
0x43Xa | Number of Lines to Transfer (H-DMA) |