The Sprite wiki last edited by Jagged85 on 02/08/15 10:41PM View full history

Overview

A sprite is a two-dimensional (2D) bitmap graphic object that can be a static image or animation that is integrated into a larger scene. Sprites are used in games to collectively create a scene. Each sprite is used to represent each object. A "Sprite Sheet" is simply a collection of still images that progress. Once displayed sequentially it creates animation.

Sprites can be used for two-dimensional games, or pseudo-3D sprite-scaling (such as Super Scaler, Mode 7 and Ray Casting), or pre-rendered games.

Sprites can also be used for, and have been used in, three-dimensional games. The way that they are typically used within 3D games is through rendering or imitating a rendered frame from certain perspectives. This removes the computational overhead of rendering each position dynamically. Sprites are also often used in 3D games today to display grass and foliage, in the form of billboarding. Sprites can also be used in conjunction with cel-shading.

In recent years, sprites have been used beyond gaming, such as CSS sprites which are used in web design as a way to improve performance by combining numerous small images or icons into a larger image called a sprite sheet or tile set, and selecting which icon to show on the rendered page using Cascading Style Sheets.

Sprite Drawing Methods

The following are the two most common methods for drawing sprites.

Buffering / Blitting

Using the buffering method, or blitting method, the CPU (central processing unit) and/or GPU (graphics processing unit) modify a frame-buffer held in RAM (random-access memory), which requires more memory cycles to load and store the pixels and refresh the backgrounds behind moving objects. The sprites are usually processed through a display list. This method frequently requires double buffering to avoid flickering and tearing, but place fewer restrictions on the size and number of moving objects.

This method is ideal for systems with high processing power (a fast CPU and/or GPU), and/or a high amount of fast RAM memory. However, it was usually only arcade systems that were capable of using this method very effectively up until the early 1990s (such as Sega's Super Scaler systems), due to their expensive CPU, GPU and RAM technologies. A number of personal computers also used this method in the 1980s (such as the Amiga), as well as a few consoles (such as the Atari 7800), but due to limited processing power and memory at the time, these systems were often unable to match the quality of hardware sprites without suffering slowdowns. But as processors and memory technology improved, buffering/blitting became the most common method for drawing sprites in the mid-1990s, for both personal computers and home consoles (such as the Sega Saturn).

Hardware Sprites

Mega Man sprite

Hardware sprites, rather than being part of the bitmap data in the frame-buffer, instead float around on top without affecting the data in the frame-buffer below, much like a ghost or "sprite". Using this method, there is a defined limit to the number of sprites on screen and their sizes, but two-dimensional shapes could be moved around the screen horizontally and vertically with minimal software overhead. In other words, hardware sprites have very little impact on overall system performance.

This method was ideal for systems with limited processing power and RAM memory. It was the most commonly used method for classic home consoles in the 1980s and early 1990s (such as the Sega Mega Drive/Genesis and Super Nintendo Entertainment System), some arcade systems in the early 1980s (such as the Namco Pac-Man), the more advanced personal computers of the 1980s (such as the Sharp X68000), and handheld systems up until the 2000s (such as the Game Boy Advance). But as processing power and RAM memory improved, the use of hardware sprites eventually fell into disuse in the mid-1990s, though it continued for handhelds up until the 2000s.

History

1970s

The first video games did not use sprites. Pong, for example, when it released in 1972, used simple rectangular blocks and lines to display the ball, paddles and points. The use of sprites became possible with the use of ROM (read-only memory) for several arcade games in 1974.

Basketball, released by Taito for arcades in 1974. It was the first game to use sprites.

Taito released the earliest video games with sprites in 1974. The first game to use sprites was Basketball, a sports game released in Japan by Taito in early 1974 and imported to North America by Midway as TV Basketball in February 1974. Basketball represented four basketball players as well as two baskets as sprite images. These basketball players were the first player characters and the first representation of humans in gaming history.

Speed Race, which was designed by Tomohiro Nishikado and ran on Taito Discrete Logic hardware, released shortly afterwards in 1974. It featured sprites with collision detection, moving along a vertical scrolling playfield (see Bill Loguidice & Matt Barton, Vintage games: an insider look at the history of Grand Theft Auto, Super Mario, and the most influential games of all time, page 197, 2009).

The Fujitsu MB14241 was used to accelerate the drawing and buffering of sprite graphics for various 1970s arcade games from Taito and Midway, such as Gun Fight (1975), Sea Wolf (1976) which ran on the Midway 8080 hardware (ref), and the blockbuster hit Space Invaders (1978). The Taito 8080 hardware engineered by Tomohiro Nishikado for Space Invaders, which also used the Fujitsu MB14241 (ref), could display up to 11 sprites per scanline (see here, here and here for more information).

In 1977, the Taito Z80 arcade system board used for Super Speed Race was capable of generating up to 16 sprites in hardware and display 4 sprites per scanline. Each sprite could have a size up to 32 pixels in width or height and display up to 15 colors (see references here, here and here).

Galaxian, released by Namco for arcades in 1979. Its Namco Galaxian hardware, featuring multi-colored sprites, was widely used during the early 1980s.

The Namco Galaxian arcade system, developed by Namco for the 1979 arcade hit Galaxian, used specialized graphics hardware supporting RGB color, multi-colored sprites and tilemap backgrounds. It could display up to 15 hardware sprites across each scanline. Each sprite could be up to 16x16 pixels in size, with 3 colors each.[1] The Namco Galaxian hardware was widely used during the golden age of arcade video games, by game companies such as Namco, Centuri,Gremlin, Irem, Konami, Midway, Nichibutsu, Sega and Taito (see references here and here).

1980s to 1990s

In the 1980s, sprite-scaling became a popular technique in arcade games to represent a three-dimensional perspective using 2D sprite graphics, i.e. pseudo-3D graphics.

After Burner, released by Sega for arcades in 1987. Its Super Scaler technology featured advanced sprite scaling and rotation capabilities.

Sega in particular was at the forefront of sprite-scaling graphics with its powerful custom Super Scaler graphics boards, which could quickly scale and rotate many large colourful sprites at high frame rates. Sega's Super Scaler hardware powered a string of 1980s arcade hits, such as Hang-On and Space Harrier in 1985, and Out Run in 1987. Sega introduced sprite rotation with After Burner in 1987, and went on to produce more hits, such as Galaxy Force, Power Drift and Last Survivor in 1988.

Other arcade manufacturers such as Namco, Capcom and SNK also relied on custom graphics processors in order to produce similarly advanced sprite graphics in the 1980s to early 1990s. Eventually, the Sega Saturn console, released in 1994, was able to rival the sprite graphics of the arcades. Along with its arcade counterpart, the Sega ST-V, the Saturn had the most advanced sprite capabilities of the 1990s.

Following the rise of true 3D polygon graphics in the early-mid-1990s, the sprite graphics, including the sprite-scaling technique, eventually declined in popularity.

Hardware Capabilities

This is a table listing the sprite capabilities of various classic gaming systems and/or graphics chips.

For the sprite scaling/zooming and rotation/mirroring capabilities of these systems and chips (the ones with hardware support for these features), see here. For a full detailed table of sprite capabilities, with references, see here.

Systems / Chips

YearSprites on screenSprites on lineTexels on lineTexture widthTexture heightColors per spriteBack-ground
Fujitsu MB1424119756091444 to 321 to 22411 bitmap layer
Fairchild Channel F1976Display list (run by CPU)9564, 85, 811 bitmap layer
Atari 260019779 (5 multiplied by CPU)9 (with triplication)51 (with triplication)1, 819211 bitmap layer
Taito Z801977772243216151 tile or bitmap layer
Atari 8-Bit & 52001979Display list8402, 8128, 2561, 31 bitmap layer
Namco Galaxian1979Display list152408, 168, 1631 tile layer and 1 bitmap layer
ColecoVision, MSX, Sega SG-10001979324648, 168, 1611 tile layer
Namco Pac‑Man198088128161632 tile layers
Sega G80198164322568, 168, 1632 tile layers
Sega VCO Object198164163158 to 208 to 203, 71 tile layer and 1 bitmap layer
Commodore 641982Display list (run by CPU)896, 19212, 24211, 31 tile or bitmap layer
Namco Pole Position1982643251216, 3216, 32151 tile layer and 1 bitmap layer
Sega 315‑5011 & 315‑501219821281008008 to 2568 to 256152 tile layers and 1 bitmap layer
Famicom / NES19836486488, 1631 tile layer
Atari 78001984100 (without back-ground)30 (without back-ground)1604 to 1604, 8, 161, 3, 81 bitmap layer
Amiga (OCS)1985Display list812816Up to 2563, 152 bitmap layers
Sega Master System & Game Gear19856481288, 168, 16151 tile layer
MSX219853281288, 168, 161, 3, 7, 15 per line1 tile or bitmap layer
Sega OutRun198612812816008 to 5128 to 256152 tile layers and 1 bitmap layer
Namco System 2198712812820818 to 648 to 642557 tile layers and 1 bitmap layer
PC-Engine / TurboGrafx-161987641625616, 3216, 32, 64151 tile layer
Sharp X680001987512 (128 multiplied by raster interrupt)325121616151-2 tile layers and 1-4 bitmap layers
Sega X Board198725625632008 to 5128 to 256154 tile layers and 1 bitmap layer
Taito Ninja Warriors198712810817371616156 tile layers
Taito Z System1987512108173716 to 1288 to 12815 to 2552-4 tile layers and 1 bitmap layer
Capcom CPS198825665104816 to 25616 to 256153 tile layers and 2 bitmap layers
Sega System 241988204851240968 to 10248 to 102415 to 2554 tile layers
Sega Y Board1988217640032008 to 5128 to 51215 to 5111 bitmap layer
Taito B System1988408110176816 to 25616 to 25615 to 632 tile layers and 1 bitmap layer
MSX2+ & MSX TurboR19883281288, 168, 161, 3, 7, 15 per line1 tile layer and 1 bitmap layer
Sega Mega Drive / Genesis198880203208, 16, 24, 328, 16, 24, 32152 tile layers
Fujitsu FM Towns198910246410241616151-2 bitmap layers
Game Boy198940108088, 1631 tile layer
SuperGrafx19891283251216, 3216, 32, 64152 tile layers
Amstrad Plus1990Display list (run by CPU)162561616151 bitmap layer
Neo Geo19903849615361616 to 512151 tile layer
Sega System 321990819251240968 to 10248 to 102415 to 5124 tile layers and 1 bitmap layer
Super Famicom & SNES1990128342728, 16, 32, 648, 16, 32, 64151-4 tile layers or 1 affine mapped tile layer
Amiga (AGA)1992Display list844816, 32, 64Up to 2563, 152 bitmap layers

Taito SZ System

19921024162260416 to 1288 to 12815 to 2554 tile layers and 1 bitmap layer
Atari Jaguar19931000907208 to 360Up to 220Up to 2551 bitmap layer
Capcom CPS2199390065104816 to 25616 to 256153 tile layers and 2 bitmap layers
Sega Saturn & ST-V199416,38451240968 to 5041 to 25515 to 32,7683-6 tile layers and 1-4 bitmap layers
Sony PlayStation1994400012810248, 16, 2568, 16, 25615, 2551 bitmap layer
Capcom CPS31996102448238618, 168, 1663, 2554 tile layers
Data East MLC System19966141762828161615 to 2552 tile layers
Hyper Neo Geo 641997153538430721616 to 51215, 2554 tile layers
Game Boy Advance200112812812108, 16, 32, 648, 16, 32, 6415, 2552-4 layers or 1-2 affine layers
Nintendo DS2004256 (128 per screen)12812108, 16, 32, 648, 16, 32, 6415 to 32,7688 layers (4 per screen); each layer is independent
Systems / ChipsYearSprites on screenSprites on lineTexels on lineTexture widthTexture heightColorsBack-ground

See Also

This edit will also create new pages on Giant Bomb for:

Beware, you are proposing to add brand new pages to the wiki along with your edits. Make sure this is what you intended. This will likely increase the time it takes for your changes to go live.

Comment and Save

Until you earn 1000 points all your submissions need to be vetted by other Giant Bomb users. This process takes no more than a few hours and we'll send you an email once approved.