MOS Technology · 1981 · MOS Technology 6567 / 6569 Video Interface Chip II
The graphics chip of the Commodore 64: sixteen fixed colours, eight hardware sprites and raster interrupts — the feature that let programmers split the screen and multiply those sprites far beyond eight.
Albert Charpentier and Charles Winterble designed the VIC-II at MOS Technology, completing it in November 1981 for the machine that became the Commodore 64. It was produced in NTSC versions (6567 and later revisions) and PAL versions (6569 and successors), and was also used in the Commodore 128 and the Japan-focused MAX Machine. The chip produces a 320 by 200 bitmap (160 by 200 in multicolour mode) or 40 by 25 text, drawn from a fixed palette of 16 colours. It offers three character modes and two bitmap modes, and addresses a 16 KB window of memory for screen, character and sprite data. Its designers took the idea of hardware sprites from Texas Instruments' TMS9918 and collision detection from the Intellivision; around three quarters of the chip's surface is devoted to sprite logic. It can show eight sprites, each 24 by 21 pixels (12 by 21 in multicolour), with hardware smooth scrolling in both directions. The feature that defined C64 programming was the raster interrupt. The VIC-II can signal the CPU when the beam reaches a chosen scanline, and by changing registers mid-frame programmers could reuse the same eight sprites lower down the screen, change colours or modes partway down, and build status bars that did not scroll with the playfield. Sprite multiplexing, split-screen scrolling and the colour-bar effects of the demoscene all grew from that one capability. The cost was that the VIC-II shares the memory bus with the 6510 CPU and steals cycles on certain "bad lines", so timing-critical C64 code had to be written around the video chip.
| Designers | Albert Charpentier, Charles Winterble |
|---|---|
| Resolution | 320×200 (160×200 multicolour); 40×25 text |
| Colours | 16-colour fixed palette |
| Sprites | 8 per scanline, 24×21 pixels (12×21 multicolour) |
| Features | Raster interrupts, smooth scrolling, sprite collision detection |
| Variants | 6567 (NTSC), 6569 (PAL) and later revisions |