<< ben fry

mario soup

Any piece of executable code is also commingled with data, ranging from simple sentences of text for error messages to entire sets of graphics for the application. In older cartridge-based console games, the images for each of the small on-screen images (the "sprites") were often stored as raw data embedded after the actual program's instructions. This piece examines the unpacking of a Nintendo game cartridge, decoding the program as a four-color image, revealing a beautiful soup of the thousands of individual elements that make up the game screen.

   

The images are a long series of 8x8 pixel "tiles". Looking at the cartridge memory directly (with a black pixel for an "on" bit, and a white pixel for an "off") reveals the sequence of black and white (one bit) 8x8 images. Each pair of images is mixed together to produce a two bit (four-color) image. The blue represents the first sequence of image data, the red layer is the second set of data that is read, and seeing them together produces the proper mixed-color image depicting the actual image data.

This image was created with a short java program that I wrote that unpacked the cartridge data and generated tiff images from it. The program also placed the image data directly into an adobe illustrator document for printing. The project was created as part of my "Visually Deconstructing Code" series shown in the Ars Electronica 2003 CODE Exhibition. The series was made up of several short sketch projects done in about two days to one week apiece.

The name 'mariosoup' comes from an offhand comment by Bryce Glass to whom I had shown the images while I was working on the project. Also check out deconstructulator, which shows how these images are used by the console while a game is playing.

Or download a pdf poster (84x120 cm) of several other cartridges unpacked.

ben fry  |  last updated november 2003