Graphics Hardware, Part 2 Codexery

MOS Technology VIC-II

Custom graphics chip for Commodore 64 and 128.

MOS Technology VIC-II

The VIC-II (Video Interface Chip II) is a microchip that produces Y/C video signals (later combined into composite video by the RF modulator) and handles DRAM refresh signals for the Commodore 64 and Commodore 128 home computers. Its specific model numbers include the 6567, 6566, 8562, and 8564 for NTSC systems, and the 6569, 8565, and 8566 for PAL systems. It replaced the earlier MOS Technology VIC chip found in the VIC-20 and, alongside the MOS Technology 6581 sound chip, formed one of the two key custom chips in the Commodore 64.

The chip was primarily designed by Albert Charpentier and Charles Winterble at MOS Technology, Inc., as a follow-up to the MOS Technology 6560 VIC. Before this, the team had unsuccessfully attempted to create two other graphics chips—the MOS Technology 6562 for the Commodore TOI computer and the MOS Technology 6564 for the Color PET—both of which failed due to memory speed limitations. To build the VIC-II, Charpentier and Winterble surveyed existing home computers and video games, listing their features and deciding which ones to include. The concept of sprites was borrowed from the TI-99/4A computer and its TMS9918 graphics coprocessor, while collision detection support came from the Mattel Intellivision. The Atari 800 contributed the idea of bitmap mode, a feature the MOS team wanted because all major Commodore rivals had bitmap graphics, whereas the VIC-20 only offered redefinable characters. Roughly three-quarters of the chip’s surface area is dedicated to sprite functionality.

The chip was designed using a mix of electronic design automation tools from Applicon (now part of UGS Corp.) and manual layout on vellum paper. Debugging was done by fabricating chips containing small subsets of the design, which could be tested individually—a straightforward process because MOS Technology’s research lab and semiconductor plant were on the same site. The first batch of test chips worked almost perfectly, with only one sprite malfunctioning. The VIC-II was built using 5-micrometer technology. Work on the chip concluded in November 1981, at the same time Robert Yannes was developing the SID chip. Both chips, along with the Commodore 64 itself, were completed in time for the Consumer Electronics Show in early January 1982.

The VIC-II features a 16 KB address space for screen, character, and sprite memory.

Designers
Albert Charpentier and Charles Winterble
Company
MOS Technology, Inc.
Completion date
November 1981
Process technology
5 micrometer
Control registers
47
Sprite registers
34
Video resolution
320 × 200 pixels (160 × 200 in multi-color mode)
Text resolution
40 × 25 characters
Colors
16
Sprites per scanline
8

Lore & Background

The VIC-II chip was designed primarily by Albert Charpentier and Charles Winterble at MOS Technology, Inc. as a successor to the MOS Technology 6560 'VIC'. The team had previously failed to produce two graphics chips named MOS Technology 6562 for the Commodore TOI computer and MOS Technology 6564 for the Color PET due to memory speed constraints. To construct the VIC-II, Charpentier and Winterble made a market survey of current home computers and video games, listing features they wanted. The idea of adding sprites came from the TI-99/4A computer and its TMS9918 graphics coprocessor. The idea to support collision detection came from the Mattel Intellivision. The Atari 800 was mined for bitmap mode, a desired goal as all of Commodore's principal home computer rivals had bitmap graphics while the VIC-20 only had redefinable characters. About 3/4 of the chip surface is used for sprite functionality.

The chip was partly laid out using electronic design automation tools from Applicon and partly laid out manually on vellum paper. The design was partly debugged by fabricating chips containing small subsets of the design, which could then be tested separately. The initial batch of test chips came out almost fully functional, with only one bad sprite. The work on the VIC-II was completed in November 1981 while Robert Yannes was simultaneously working on the SID chip. Both chips, like the Commodore 64, were finished in time for the Consumer Electronics Show in the first weekend of January 1982.

The VIC-II is programmed by manipulating its 47 control registers (up from 16 in the VIC), memory mapped to the range $D000–$D02E in the C64 address space. Of these registers, 34 deal exclusively with sprite control (sprites called MOBs, 'Movable Object Blocks', in the VIC-II documentation). Like its predecessor, the VIC-II handles light pen input, and with help from the C64's standard character ROM, provided the original PETSCII character set from 1977 on a similarly dimensioned display as the 40-column PET series.

Reader's Guide

The VIC-II's significance lies in its role as a key custom chip enabling the Commodore 64's graphical capabilities. Its sprite system, occupying about 3/4 of the chip surface, allowed concurrent handling of 8 sprites per scanline, each 24×21 pixels (12×21 multicolor). By reloading control registers via raster interrupt routines, programmers could generate significantly more than 8 concurrent sprites (sprite multiplexing) and give every program-defined slice of the screen different scrolling, resolution, and color properties. The hardware limitation of 8 sprites per scanline could be increased further by letting sprites flicker rapidly on and off. Mastery of the raster interrupt was essential to unleash the VIC-II's capabilities; many demos and later games established a fixed 'lock-step' between the CPU and the VIC-II to manipulate registers at exactly the right moment.

The VIC-II provided 16 KB address space for screen, character, and sprite memory, with 320×200 pixel resolution (160×200 multicolor) and 40×25 character text resolution. It offered three character display modes and two bitmap modes, 16 colors, smooth scrolling, independent dynamic RAM refresh, and bus mastering for a 6502-style system bus, with the CPU and VIC-II accessing the bus during alternating half-clock cycles (the VIC-II halting the CPU when it needed extra cycles). The bitmap mode, a primary design goal, was organized in 8×8 and 4×8 tiles, but was generally impractical for in-game graphics due to high system resource requirements and inability to scroll, thus most commonly seen on loader and title screens.

More in Graphics Hardware, Part 2 1-24

Spotted an error? Know more?

Reader corrections go straight into our review queue. Suggest an edit · How this site is sourced

Comments

Loading…
Open in the interactive codex →