<< ben fry

Seeing the operation of code

Programs on modern computers are eventually compiled into machine language, a series of basic and direct instructions understood by the microprocessor. Programs are flattened from their hierarchical state into a long series of simple mathematical instructions (like multiply or add with carry) and interspersed with commands for jumping to another location in the program.


The simpler of these two diagrams shows the program for the "Excite Bike" game for the original Nintendo (this console was chosen for its simplicity). The blocks of gray text are "data" sections that are used to store images or game scenarios. The curved lines connect locations in the program where "jumps" occur, which can be a function or a conditional choice made by the software. The more complicated image depicts the original "Super Mario Brothers" game. The images were created in appreciation of the elegance in the structure of such software, not so much as a diagnostic tool for understanding their operation.

The binary of the cartridge program is disassembled the list of text seen here using a program called NESrev written by Kent Hansen (who I'd like to thank but he's hidden his email address from the web.. I don't blame him, the web is a scary place.. spammers, pornographers, miscreants who make data visualization projects based on your software).

This 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.

June 2007 — In response to requests, you can now purchase prints of these images (sorry, original files are not available). All proceeds are donated to charity.

<< ben fry  |  project updated november 2003