| |

Graphic Effects on the Amiga

March 25, 2014, GPU Technology Conference, San Jose, CA—Aske Simon Christiansen from Blueberry and Loonies described some of the programming tricks used to create graphics effects on the Amiga console. In 1987, the Amiga 500 became the first gaming machine to offer graphics effects that were not based on pixel manipulation or sprites.

These machines have a 7 MHz 68,000 processor and 512 K bytes of RAM. Although nominally a 16 bit machine, the instruction words were 32 bits. The console had custom circuits for graphics, sound, and other specialized functions. The Amiga required for cycles per operation and displayed an image of three 20 x 2 56 pixels at 30 frames per second, or 0.4 operations per pixel per frame. In comparison, a GForce GTX 780 can process at 5 teraflops to produce a full HD image getting 40,000 operations per pixel per frame.

As a result of the low processing capability in the Amiga, one technique was to not use or regenerate all the pixels. For example, dot effects are possible because the brain will fill in missing spaces. Numerous patterns are possible by displaying the dots in a moving pattern like sine waves, tunnels, and landscapes. These effects were possible because the graphics were refreshed in intervals with a bit plane determining color resolution at different intervals.

It’s possible to offset the planes for other kinds of effects and apparent motion. You can create interference patterns by moving data from four separate the planes against each other. Directional lighting effects are possible by changing color palettes within a bit plane without changing any other pixel information. All of these effects depend upon the use of a CRT monitor that scanned and retraced using both vertical and horizontal blanking intervals for the retraces.

Another interesting effect is playfield offset. In essence, you take a subset of the entire world and display only that subset. This process is accomplished with a leading module of 16-bit words, shifting, vertical skip, and a trail module to identify end of line and end of page. You need to identify the memory skip and start points for the lead and trail modules. If the module offset is negative, you can generate vertical bars. Motion blur is created by using four bit planes with varying offsets.

The Copper is a coprocessor that moves data to a hardware read or waits for the electron beam to be at some position. The Copper list restarts on the vertical blanking interval. Using various delays on separate bit planes enables split screen functions and rainbow animations by changing the colors at the vertical blanking interval and changing color, with and pointers at the scanned starting tire. In this way, you can display the same memory with alternating content.

A wavy checkerboard effect alternates the planes for changes in size and color of the images. Balls can be defined by alternating bit planes comprised of lines of color that changes with position to demark the ball edges. A stretched texture calls for selecting a color and texture from different bit planes.

Stretching an image depends upon shift registers for aligning the pixels from different planes. You change the value of the shift register to compress and expand parts of the image. Blitter is a block image transfer command to move graphics around in memory. It has three sources to shift up to 16 bits. The output is the logical combination of the various terms.

Chaos zoom takes feedback from the previous frame and feeds it into the next frame to create this feedback distortion effect. By exclusive or-ing data with itself and shifting one unit left you can create field images. Drawing a solid line only requires one pixel per scan line with this process because you fill in the vectors by shifting data through the planes.

You can also use front and rear polygons without computing intermediate results by just combining the planes to get transparency effects. Vertical fill can be used to create distortion by using one scan line before exclusive or-ing it with your current scan line. A plasma effect is a combination of a set color and a color gradient. A Blitter command changes the color list and blends the colors by alternating color planes. These plasmas can be further modified by a changing the Blitter inputs with code functions that can change with angles or other positional information.
 

Similar Posts