# VIC-II Register Map — Quick Reference VIC-II base address: $D000 (53248) | Offset | Address | Dec | Name | Description | |--------|---------|-----|------|-------------| | +0 | $D000 | 53248 | SP0X | Sprite 0 X position | | +1 | $D001 | 53249 | SP0Y | Sprite 0 Y position | | +2 | $D002 | 53250 | SP1X | Sprite 1 X | | +3 | $D003 | 53251 | SP1Y | Sprite 1 Y | | +4 | $D004 | 53252 | SP2X | Sprite 2 X | | +5 | $D005 | 53253 | SP2Y | Sprite 2 Y | | +6 | $D006 | 53254 | SP3X | Sprite 3 X | | +7 | $D007 | 53255 | SP3Y | Sprite 3 Y | | +8 | $D008 | 53256 | SP4X | Sprite 4 X | | +9 | $D009 | 53257 | SP4Y | Sprite 4 Y | | +A | $D00A | 53258 | SP5X | Sprite 5 X | | +B | $D00B | 53259 | SP5Y | Sprite 5 Y | | +C | $D00C | 53260 | SP6X | Sprite 6 X | | +D | $D00D | 53261 | SP6Y | Sprite 6 Y | | +E | $D00E | 53262 | SP7X | Sprite 7 X | | +F | $D00F | 53263 | SP7Y | Sprite 7 Y | | +10 | $D010 | 53264 | MSIGX | Sprites X MSB (bit N = sprite N X bit 8) | | +11 | $D011 | 53265 | SCROLY | Vertical scroll/control | | +12 | $D012 | 53266 | RASTER | Raster counter / IRQ line | | +13 | $D013 | 53267 | LPENX | Light pen X (read-only) | | +14 | $D014 | 53268 | LPENY | Light pen Y (read-only) | | +15 | $D015 | 53269 | SPENA | Sprite enable (bit N) | | +16 | $D016 | 53270 | SCROLX | Horizontal scroll/control | | +17 | $D017 | 53271 | YXPAND | Sprite Y expansion (bit N) | | +18 | $D018 | 53272 | VMCSB | Memory control (screen/char base) | | +19 | $D019 | 53273 | VICIRQ | IRQ status (read/ack) | | +1A | $D01A | 53274 | IRQMSK | IRQ mask enable | | +1B | $D01B | 53275 | SPBGPR | Sprite-BG priority | | +1C | $D01C | 53276 | SPMC | Sprite multicolor enable | | +1D | $D01D | 53277 | XXPAND | Sprite X expansion | | +1E | $D01E | 53278 | SPSPCL | Sprite-sprite collision (clears on read) | | +1F | $D01F | 53279 | SPBGCL | Sprite-BG collision (clears on read) | | +20 | $D020 | 53280 | EXTCOL | Border color | | +21 | $D021 | 53281 | BGCOL0 | Background color 0 | | +22 | $D022 | 53282 | BGCOL1 | Background color 1 | | +23 | $D023 | 53283 | BGCOL2 | Background color 2 | | +24 | $D024 | 53284 | BGCOL3 | Background color 3 | | +25 | $D025 | 53285 | SPMC0 | Sprite multicolor 0 | | +26 | $D026 | 53286 | SPMC1 | Sprite multicolor 1 | | +27 | $D027 | 53287 | SP0COL | Sprite 0 color | | +28 | $D028 | 53288 | SP1COL | Sprite 1 color | | +29 | $D029 | 53289 | SP2COL | Sprite 2 color | | +2A | $D02A | 53290 | SP3COL | Sprite 3 color | | +2B | $D02B | 53291 | SP4COL | Sprite 4 color | | +2C | $D02C | 53292 | SP5COL | Sprite 5 color | | +2D | $D02D | 53293 | SP6COL | Sprite 6 color | | +2E | $D02E | 53294 | SP7COL | Sprite 7 color | ## $D011 — SCROLY Bit Fields | Bit | Name | Description | |-----|------|-------------| | 7 | RST8 | Raster line bit 8 | | 6 | ECM | Extended Color Mode | | 5 | BMM | Bitmap Mode | | 4 | DEN | Display Enable | | 3 | RSEL | Row select: 1=25 rows, 0=24 rows | | 2-0 | YSCL | Vertical fine scroll (0-7) | ## $D016 — SCROLX Bit Fields | Bit | Name | Description | |-----|------|-------------| | 4 | MCM | Multicolor Mode | | 3 | CSEL | Column select: 1=40 cols, 0=38 cols | | 2-0 | XSCL | Horizontal fine scroll (0-7) | ## $D018 — VMCSB Memory Control | Bits | Name | Description | |------|------|-------------| | 7-4 | VM | Screen RAM base: value × $0400 within VIC bank | | 3-1 | CB | Char set base: value × $0800 within VIC bank | Default $10: screen at $0400, chars at $1000 (ROM mirror in bank 0). ## $D019 — VICIRQ / $D01A — IRQMSK | Bit | Event | |-----|-------| | 3 | Light pen | | 2 | Sprite-BG collision | | 1 | Sprite-sprite collision | | 0 | Raster IRQ | To acknowledge: read $D019, then write the value back (write-1-to-clear).