Project 8: Atari 2600 Game

This week we extended our discussions of computational constraints and affordances to cover hardware as well as software. One of the most notoriously challenging hardware platforms is the Atari 2600, whose constraints appear to make development almost impossible, and yet in spite of which some of the best videogames have been created.

Batari Basic is a beginners platform for Atari 2600 development. The 2600 has to be programmed in 6507 assembly language, but Batari Basic allows us to write (simple) programs in BASIC, a common higher-level language, which it compiles to 6507 assembly and in turn assembles into a valid 2600 binary file.

To make the process easier, Batari imposes some additional limitations on your final output. It uses a kernel which displays two player objects of any height, two missiles of any height, an asymmetric playfield, and a 6-digit score. Altering these is possible bur requires changes to the compiler's C code or the output assembly file, or both.

Your assignment is to write an Atari 2600 game using Batari Basic. Your game can do anything you'd like, but it must play successfully on an Atari 2600 emulator (see below). Ideally, the game should offer some meaningful representation; that is, it should be an interesting game in any sense of the word. Remember that Atari games were often two-player, and you may want to make yours accordingly.

Group Project

This is a group project for groups of three (3) people. Group projects succeed or fail as one unit. Normally, the best way to work in groups is with assigned roles, however I'm giving you two options to fulfill the requirements of the project.

  1. Roles. Assign a Producer, Designer, and Programmer. The producer is responsible for moving the development of the game forward. The designer is responsible for the gameplay itself. The programmer is responsible for the coding. Each of these three roles will overlap; for example, the designer will need to understand the hardware constraints of the device.

    If you choose this method, the following deliverables are required:

    • Producer: a set of half-page progress report on the progress of the project, any problems that have come up, and your solutions. You should complete at least six (6) such reports.
    • Designer: a design document on the game you will build, why you will build it, and how it will play. Include revisions as you make decisions, noting these revisions in text (don't delete old stuff, but add a "revised date" annotation and the revision when you revise it.
    • Programmer: the final annotated source code for the game
  2. Ad-hoc Collaboration. Instead of specific roles, all members are expected to contribute equally to the completion of the project. In addition to the final game and source code, each member will be required to turn in a statement outlining both their work and their teammates work. In addition, the group must complete a design document and turn in annotated source code (see above).

    You will not succeed at this project if you fail to hold regular group meetings!

You will turn in your assignments on 9 December at midnight. You need only turn the assignment in on one of the locker folders in your group (your choice). During dead week, you will also be expected to give a short group presentation on the project. The presentation will not be a part of your grade, but it is intended to give you practice addressing an audience and presenting the decisions you made.

How to Use Batari Basic

You will need the Batari Basic toolkit, which you can get at http://www.alienbill.com/2600/basic/. Download the DOS/Windows .Zip or, better, the 2600IDE, an all in one development tool. You will also need the Stella Atari 2600 emulator to test your game. You can get it at http://stella.sourceforge.net/.

While it is possible to run Batari on Macs, the setup is a bit complex, and I recommend doing the compilation on a Windows machine. If you need help getting it running on a Mac, please ask.

Useful Links

IMPORTANT! Language Reference
Batari Basic FAQ