Raster interrupt

From Wikipedia, the free encyclopedia
Jump to: navigation, search

A raster interrupt is a computer interrupt signal that is used for display timing purposes. It is usually, though not always, generated by the system's graphics chip. On some platforms the feature is called Horizontal Blank Interrupt (HBI).

Often, the graphics chips used in home computers and video game consoles had limited capabilities. Raster interrupts were incorporated into these video chips allowing skilled programmers to transcend these limitations. A software-serviced interrupt would be set to trigger when a given screen line was refreshed, and the interrupt routine could then reload the chip's registers. In doing so, the graphics chip state could be changed at a specific screen position allowing sprites to be repositioned, additional colors inserted, or graphics modes to be changed giving the graphics hardware the appearance of greater capability than it was inherently endowed.

Several popular home computers and video game consoles included graphics chips supporting raster interrupts or had features that could be combined to work like raster interrupts. Dates below reflect the year the chips were designed.

Atari's ANTIC (1978)[edit]

The ANTIC chip used by the Atari 8-bit family includes display list interrupts (DLIs), which perform much the same function as raster interrupts. The ANTIC chip itself is considerably powerful and inherently capable of many features which other systems require raster interrupts to duplicate. ANTIC can mix multiple graphics modes on the screen, display horizontal and vertical overscan graphics, and fine scroll selected horizontal regions. DLIs on the Atari are typically used to add additional color to the display and reuse Player/Missile graphics elements (aka: sprites).

C64's MOS Technology VIC-II (1981)[edit]

The MOS Technology VIC-II chip used in the Commodore 64 can only handle eight sprites simultaneously and has no facility to mix graphics modes onscreen. The C64's VIC-II has a flexible raster interrupt system, which is used extensively by the demoscene. Raster interrupts and CPU intervention are necessary to reuse sprites on the screen, mix graphics modes, and selectively scroll screen regions.

NES's PPU (1982)[edit]

The Nintendo Entertainment System's PPU graphics chip does not support true raster interrupts - an interrupt can be set to trigger during the vertical blank interval, but not at any arbitrary scan line - instead required polling of a "hit flag" that indicated when the first sprite was being drawn. Although early games like Super Mario Bros., Castlevania, and The Legend of Zelda managed to produce effective split-screen scrolling with this method, it is quite CPU-intensive, and some later cartridges incorporated MMC circuitry (most prominently Nintendo's MMC3 chip) that kept track of the PPU's address and data lines and generated raster interrupts.

Amiga's Copper (1984)[edit]

The Amiga computers include substantial custom hardware. One of the many custom hardware chips is a "co-processor" called the "Copper" which effectively functions as a processor dedicated to servicing raster interrupts. The Copper runs a program of simple instructions directing it to wait for a specific vertical scan line AND horizontal beam position and to then update the contents of a custom chip hardware register. This is typically used for modifying display parameters -- mixing display modes, reusing sprites, changing color registers, etc. -- at high speed and horizontal pixel accuracy without requiring any CPU interaction.

See also[edit]