Software-driven graphics modes for the Atari 8-bit computers

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

This article describes software driven graphics modes for the Atari 8-bit computers. That is, graphics displays reliant on CPU intervention and additional software that enhance the inherent capabilities of the Atari 8-bit computers' ANTIC and CTIA/GTIA graphics chips. These modes use combinations of mixed display lists, scrolling, page flipping, and display list interrupts to achieve displays with alternate resolution and increased color that are not possible using the hardware alone.

Any Point, Any Color[edit]

The APAC System, or Any Point, Any Color was a software-driven display mode capable of displaying an image using all 256 of the Atari's possible colors. By taking 80×192 mode lines that displayed 16 hues, and those that displayed 16 shades, and either interlacing rows of them, quickly alternating between rows of them, or both, a screen displaying 80×96 or 80×192 pixels in 256 colors could be perceived.

APAC was created in early 1987 and later introduced in the magazine A.N.A.L.O.G. Computing, Issue #60, May 1988 in an article by Tom Tanida. The source code was written in 6502 assembly language.

APAC used a Display List Interrupt, or DLI, after each line of the screen was drawn to alternate between GTIA Graphics Mode 11 (15 hues) and 9 (15 shades of grey) of the GTIA chip. The hues and luminances would blend together on the screen (usually a television) to create the effect of a palette of 256 visible colors, with the artifact of a thinner, horizontal blank line in between each visible line.

APAC used a very basic API consisting of four functions:

  • Init, used to place the computer into the APAC mode
  • Exit, used to exit the APAC mode
  • Plot, used to place a point of a specified color on the screen
  • Draw, used to draw a line between the last plotted point to the given point

A second article for an "APAC-II" mode was hinted at in the original article. This mode would have alternated the GTIA 9 and 11 modes during a vertical blank interrupt, or VBI. The article was neither completed nor published.[1]

APACView[edit]

In 1992, Jeff D. Potter created a GIF decoder and image viewer for the Atari called APACView.

ColrView mode[edit]

Later, Potter created another GIF decoder, and later a JPEG decoder was created, which broke an image into the three red, green and blue channels. 16 shades of each, at 80×192 pixels, would be displayed in an interlaced and flickering fashion. The human eye's persistence of vision would allow the viewer to see 4096 colors (12 bpp) at 80×192, with slight 'rolling' artifacts in solid red, green or blue fields in the image. This was called ColrView mode.[2]

Pryzm[edit]

Independently, in 1990 Darryl Yong created a similar software-driven display mode called Pryzm capable of producing an image that could be perceived to use all 256 of the Atari's possible colors with full 80×192 resolution. This was achieved using vertical blank interrupts to rapidly change between GTIA Graphics Modes 9 and 11. Programming interfaces for Atari Basic, Action!, Turbo-Basic XL were included.

Interpainter[edit]

In 1993, Michael Franczak of the Polish demo group TIGHT wrote a graphics paint program called InterPainter. It creates 160x192 pictures which use 9 colors, by switching two 160x192 bitmaps every Vertical Blank Interrupt.

FlickerTerm 80[edit]

In 1994, Clay Halliwell created FlickerTerm 80, an ANSI/VT100 terminal emulator program, which uses 40×24 text mode, combined with two character sets with an identical 4×8 font—one with the pixels on the left half of the 8×8 grid, the other on the right. By alternating where in memory ANTIC looks for graphics, and which font to display, an 80×24 character screen can be displayed. It uses less memory (about 2 KB) and can be more quickly manipulated, compared to rendering 80×24 characters using a 320×192 bitmap mode (which would require about 8 KB). The disadvantage of this mode is the 60Hz flicker on all displayed charactes (50Hz on PAL systems). As such, it was most legible on monitors with high-persistence phosphors.

HARD Interlacing Picture[edit]

In 1996, Atari demo coders HARD Software from Hungary created HARD Interlacing Picture (HIP), which can display 160×192 pixels in 30 shades of grey. It interlaces two modes — 80×192 with 16 shades of grey, 80×192 with 9 paletted colors — and utilizes a bug in the GTIA chip that causes one of the modes to be shifted ½ pixel, allowing for a perceived 160 pixels across.[3]

Later, other demo coders created RIP graphics mode, which is similar to HIP, but can display 160×192 pixels in color.[4]

Another variant is the TIP mode, which alternates between Graphics 9, 10, and 11 and can display 256 colors at about 160x100 resolution.[5]

Champions Interlace[edit]

In 1996, the Polish demo group Atari Programming Champions released Champions Interlace (CIN), a viewer which shows pictures in 160x192 bitmap mode with 64 colors. The technique involves switching between Graphics 15 and Graphics 11 every scanline, giving off 16 colors at 4 luminances.

SuperIRG[edit]

In 1998, Bill Kendrick created a puzzle video game for the Atari (Gem Drop) which utilized a similar effect, but by using two alternating character sets (fonts) in colored text. (Each character is 4×8 pixels, each pixel being one of 4 colors.) No color palette changes occurred, and ANTIC's display list wasn't altered — only a vertical blank interrupt was used to change the character set. This allowed for approximately 13 colors on the screen. Solid color fields that were based on two actual colors (e.g., dark red created by flickering between red and black) had less artifacting because they could be drawn in a checkerboard fashion. This mode was called SuperIRG. (Normal 4×8 multi-colored text on the Atari is called IRG.) [6][7]

Text modes related to Super IRG[edit]

In 2010, Bobby Clark documented an additional 18 display modes which are related to Super IRG, in that these modes are also based on a Vertical Blank Interrupt that changes the character set.[8] In addition other flags, such as the GTIA setting and color registers, are modified as well. Here is a listing of these display modes:

Super IRG 2: A modification of Super IRG, in which color register data is shifted every VBI in addition to the character set, allowing for 23 colors on screen, but with no character dithering.

Super 0: This mode is based out of GRAPHICS 0 (ANTIC 2) and shifts the character set, background color and text luminance every VBI. As a result, each character is 8x8 pixels and can display 4 colors. When Graphics 0 artifacting is taken into account, 16 colors can be perceived on screen.

DIN (Display Interlace): This mode shifts the Display List every VBI, between ANTIC 4 and ANTIC 2. The result is an 8x8 character grid with two colors, overlaid by a 4x8 4-color character grid which adds additional color data, allowing an effective character resolution of 8x8 with 10 colors available. With Graphics 0 artifacting, there are 20 colors perceivable.

Super 9: This mode is based out of Graphics 0, but with the GTIA flag set so that it displays GRAPHICS 9, the 16 monochrome shade mode. The character set and background register are modified every VBI, resulting in a 2x8 character grid which can display 256 duo-tone shades.

Super 10: Similar to Super 9, this mode instead has the GTIA flag set to GRAPHICS 10, the 9 color palette mode. As in Super IRG, only the character set is shifted every VBI, allowing for a perceivable 45 colors at 2x8 character grid resolution. A dithering pattern can be used in this mode, in a similar fashion as Super IRG.

Super 11: Similar to Super 9, except that in this case the GTIA flag is set to GRAPHICS 11, the 15 hue mode. The background register is shifted every VBI, which affects the brightness of these graphics, allowing for a 2x8 character grid which can display 256 colors at 3 luminance levels.

APAC 0: This is the text equivalent of the APAC mode. The GTIA flag is cycled between GRAPHICS 9 and 11 every VBI, in addition to the character set flip. This allows for any of the Atari's 256 color palette (16 hue x 16 luminance) to be displayed in a 2x8 character grid.

HIP 0: This is a text mode variation of the HIP mode. The GTIA flag is cycled between GRAPHICS 9 and 10 every VBI, in addition to the character set flip. A 2x8 character grid with 16 monochrome shades displayable, is overlaid with a 2x8 9 color palette character grid, which has been shifted one color clock to the right. This gives an apparent pixel resolution of 160x192 for the display mode, with 144 colors displayable per character cell.

CHIP 0: This display mode is a modification of HIP 0, except that the GTIA flag is cycled between GRAPHICS 10 and GRAPHICS 11. Anywhere between 128 and 144 colors can be displayed per character cell, at an apparent pixel resolution of 160x192 for the display mode.

CIN 12/13: Inspired by the Champions Interlace bitmap mode, this mode is based out of an ANTIC 4 display list, but with the GTIA flag being cycled between normal mode, and GRAPHICS 11, and the 4 playfield color registers in ANTIC 4 set to monochrome values. A 4x8 character grid which can display 4 monochrome shades, is overlaid onto a 2x8 character grid which can display 14 different hues. The result is a character resolution of 4x8 with 60 colors displayable.

Super CIN: A modification of CIN 12/13, but with a display list shift (as in the DIN mode) between ANTIC 2 and ANTIC 4 added. The GTIA flag shifts between normal mode and GRAPHICS 11, with the display list shift increasing the color resolution to 80 colors (16 hue by 5 monochromme) at 4x8 character resolution.

MIN 12/13 and Super MIN (Monochrome Interlace): Similar to the CIN text modes, except that the GTIA flag is shifted between normal mode and GRAPHICS 9 monochrome under an ANTIC 4 display list, allowing between 60 to 80 colors (5 hue by 16 monochrome) to be displayed, at 4x8 character resolution.

PCIN 12/13 and Super PCIN (Programmable CIN): This variation on the CIN text modes shifts the GTIA flag between normal mode and GRAPHICS 10 under an ANTIC 4 display list, allowing for the display of 34 to 35 colors at a character resolution of 4x8. Because GRAPHICS 10 and ANTIC 4 share 4 color registers, a dithering pattern can be used to reduce flicker, as in Super IRG, when using these colors.

CIN 0, MIN 0, and PCIN 0: These variations of CIN, MIN, and PCIN involve an ANTIC 2 (Graphics 0) display list, and a GTIA shift between normal mode, and one of the three GTIA modes. A 2x8 GTIA character grid is overlaid onto an 8x8 2-color character grid, enabling display of 32 colors with CIN 0 and MIN 0, or 18 colors with PCIN 0. Making use of Graphics 0 artifacts will double these colors.

A font editor called ICE (Interface Character Editor) is being written which will edit fonts in these display modes.

XL Paint[edit]

In 2006 the MadTeam of Poland created XL Paint, a graphics creator inspired by InterPainter, but instead allowed 16 colors in 160x192 interlace mode.[9]

480i[edit]

In 2009 Australian coder Gary Ryan created a demo called MemoPad 480i which demonstrates true 480i resolution on the Atari 8-bit. Stellar Shuttle 480i, an update of the classic Brøderbund Software game Stellar Shuttle, was also coded by Ryan and Matt Rutter, and is the first game to be coded in this interlace mode.[10][11]

See also[edit]

References[edit]

External links[edit]