So, you're interested in learning more about how to program the Atari 2600?
This page will provide you with a list of links to other pages that contain
useful information, tools, source code, and documentation that will get you
going. But be warned! Programming the Atari 2600 is a lesson in patience, as
it is unlike programming any other console! But this challenge is part of what
makes writing software for the 2600 appealing--that and it is one of the few
systems where one person can design and write a game from start to finish.
Before you do any 2600 programming, you'll want to make sure you've got the required documentation! Given the unique nature of programming the 2600, you won't get by without doing some reading first. These links will get you started.
2600 Cartridge Information
This document contains a wealth of information on cartridge bankswitching and methods employed to stuff extra RAM into cartridges. If you plan on making a game larger than 4K, then this is a must-read. Even if you're not, it's still good information to familiarize yourself with.
Eckhard Stolberg's VCS workshop
Nice selection of various tools and documentation for both 2600 and 7800 programmers. Amongst the best things you'll find there are a frequency and waveform guide for the TIA and information how to pass the encrypted signature check in the NTSC 7800 consoles.
Dan B's Home Page
Dan Boris has put together an impressive assortment of technical information, tools and demo source for several Atari platforms. Atari 2600 programmers (or programmers to be) will want to make sure they read the Stella Programming Guide.
AtariArchives.org has assembled a large collection of classic computing books, most of which revolve around Atari 8-bit computers. But several books in particular are of interest to the 2600 programmer: Machine Language For Beginners its sequel, The Second Book of Machine Language, and Atari Roots. These books are valuable resources for learning 6502 programming.
6502.org is the definitive source of information for anything related to the
6502 series of processors, such as those used in the 2600. This includes documentation,
source code, development tools, various projects, forums, and more. You'll want
to keep this page bookmarked if you're going to be doing any Atari 2600 programming.
Perhaps one of the best ways to get your feet wet in Atari 2600 programming is to take the time to follow the tutorials listed below. These tutorials explain what you need to know from the ground up and help to provide a solid foundation for your 2600 programming career.
Atari 2600 101
Excellent annotated eight-step tutorial for everyone who wants to give programming the 2600 a serious try. It should guide you safely through all the early traps on your way.
2600 Programming For Newbies
Atari 2600 programmer Andrew Davie is writing a programming tutorial for those who know little about programming the Atari 2600 but would like to dive into it. Andrew's tutorial is broken up into a series of lessons, and Andrew gladly answers any questions asked.
Kirk Israel is putting together a 2600 Cookbook, containing some of the collected wisdom, clever ideas, and best practices of the Stella Mailing List into one convenient and hopefully inspirational location. It draws its inspiration from the earliest incarnations of The Dig, which presented libraries of snippets that demonstrated the possibilities of 2600 homebrews.
To do any programming at all on the 2600, you'll first need to arm yourself with the necessary tools. At a minimum you'll need an assembler and text editor, and you'll likely find the DiStella disassembler useful as well. You'll also want to run your binaries through one of the many Atari 2600 emulators, allowing you to quickly test your work before running it on a real console.
DASM is a versatile macro assembler, with support for target microprocessors including the 6502 and 6507. It is the standard assembler for all 2600 development and it is strongly suggested for 2600 programmers to download and use the VCS.H and MACRO.H files as well to match common [Stella] standards.
Distella is the standard disassembler for 2/4K 2600 cartridges. It produces DASM compatible source code. The newest version additionally supports disassembling 7800 cartridges.
Atari 2600 BASIC Compiler
Atari enthusiast Fred Quimby (batari in our forums) has developed an Atari 2600 BASIC Compiler. This compiler can be used by budding Atari 2600 programmers to get their feet wet on the 2600, and provides a stepping stone to serious 2600/6502 programming. The compiler generates assembly-language code that can be compiled by the DASM Assembler (see above) and then run in the popular Stella 2600 emulator. You can learn more about and download Fred's Atari 2600 BASIC Compiler here, where you can also give him feedback on improvements you'd like to see made. Additionally, Kirk Israel has put together a Batari Basic Semi-Official Homepage which contains more organized information about the compiler, an accompanying IDE, example programs, and more!
TIA Playfield Painter (Editor)
Christian Bogey has written a TIA Playfield Painter that allows the easy creation of Atari 2600 playfields that can then be saved as code you can then include in 2600 programs. The editor supports Asymmetrical, Symmetrical, and Mirrored drawing modes, drawing with a mouse, the ability to load and save your drawings, and more.
Textpad is a very powerful text editor, and is highly customizable for all your programming needs. Other nice features are syntax highlighting and shortcut keys for invoking third-party tools like assemblers or emulators.
jEdit is another powerful Java-based text editor, with features like a built-in macro language and syntax highlighting. It's specialty is the plugin capability. jEdit is freeware. You'll want to make sure that your computer has enough horsepower to run it, however.
Crimson Editor (Editor)
The Crimson Editor is free, small (fits on a floppy disk), pretty fast, supports syntax highlighting, runs compilers and such from its menus, and has other nice features such as the ability to directly edit text files located on an FTP server.
Ultraedit is another editor option. While not free, it is very robust and full-featured. It too has syntax highlighting and even has 6502 ASM plugins.
Vim is a highly configurable text editor built to enable efficient text editing. It is an improved version of the vi editor distributed with most UNIX systems.
XVI32 is a very powerful Hexeditor with lots of useful features. It can edit files up to 2GB in size, can automate tasks with its own script-interpreter, switch between hexview and plain text and it has very powerful search and replace methods.
z26 is an excellent Atari 2600 emulator, and preferred by many homebrew authors for its accuracy in simulating a real 2600. Windows and DOS versions are available, and z26 is updated frequently.
Stella is probably the most well-known Atari 2600 emulator, with its roots in DOS, but has been ported to a wide variety of platforms.
PC Atari Emulator (Emulator)
Another popular emulator for the 2600, for which DOS and Windows versions are
available. PCAE has some unique features, such as the ability to record a movie
of gameplay and a built-in debugger.
Source code has been released for many games, from early Atari 2600 games like Combat up through the latest homebrew releases such as Star Fire. These examples are one of the best ways to figure out what makes the 2600 tick, as you can peer under the hood to see how completed games were written and learn from them.
Definitive Combat Disassembly
Everyone is familiar with the classic two-player game Combat, as it was the pack-in game included with the Atari 2600 for many years. Thanks to the efforts of several individuals, a heavily-commented version of the Combat source code is available for everyone to enjoy.
Dragonfire Source Code
Dragonfire's gameplay consists of two screens: In the first you need to run across a bridge to the castle while dodging fireballs tossed by Dragon Hatchlings. Once you reach the castle, you enter the storeroom where your goal is to retrieve all the treasure and escape without being turned into a charred cinder by the dragon at the bottom of the room! Thanks go out to Dennis Debro, who worked with Dragonfire programmer Bob Smith to release this source so it could be enjoyed by the classic gaming community.
Euchre is an adaptation of the card game of the same name that is popular in the midwestern and northeast United States. You can learn more about the card game Euchre is based on here (The North American Euchre rules are used.)
Gunfight is the first release from Manuel Polik and is heavily inspired by the 1975 Midway arcade game Gun Fight. Manuel Polik has released the source code and binaries to Gunfight so others may learn from his experience programming the 2600.
Qb was originally written for the Atari 800 by Andrew Davie back in 1984. Many years later, Andrew decided to port the game over to the 2600, and he finished his project in March 2001. The object of Qb is to move the blocks around in the lower frame so that they match the upper frame. You can only jump between blocks when they are adjacent, otherwise you can only push them around. Fruit appears that you can jump on for points, but watch out for the monsters.
SCSIcide, originally released in 2001, is a fast-paced paddle-based game similar to Kaboom!, but with a few added elements to make it even more frenzied than the Activision classic. While developing SCSIcide, Joe Grand maintained a detailed development journal with frequent binary and source releases. A great way to see a game's progress from inception to completion!
Space Treat Deluxe
Atari 2600 programmer Fabrizio Zavagli has made available the source code and binaries to Space Treat Deluxe, an improved version of his earlier Space Treat release. In Space Treat Deluxe, you control a ship that must reach the top of the screen, collect the tasty treat located there, and get it back to its base at the bottom.
Star Fire is an Atari 2600 homebrew by Manuel Polik, based on the 1979 arcade game of the same name created by David Rolfe and Ted Michon and released by Exidy. Star Fire is a wave-based space shoot'em-up, with several surprises that you won't find in the original arcade game. It carefully tries to not only adopt most features of the original, but to enhance the gameplay where ever possible as well.
The Dig Source Code Archive
The Dig is a wonderful extract of the [Stella] archive, focusing on all source
code submitted to the mailing list. It's broken down in sections like snippets,
sources, docs, which make it very easy to find whatever you're looking for.
Another specialty is its section with disassemblies of original games like Starmaster,
Combat, Adventure and many more.
Many Atari 2600 programmers get their feet wet by "hacking" existing games. This entails perhaps just changing the graphics a bit, adjusting the colors, and maybe tweaking the sound. More elaborate hacks, such as Rob Kudla's "Pac-Man Arcade" and Mike Mika's "Berzerk: Voice Enhanced" go even further and involve a more intimate knowledge of the 2600. Here are some links to provide more information.
Dan Boris' 2600gfx.zip
2600gfx is a utility that extracts graphics from Atari 2600 binary files, allowing you to edit them in any text editor.
Another, newer utility that allows you to edit graphics in Atari 2600 games.
We've put together a large collection of hacks that have been released by numerous people over the years. Each hack has a short description, as well as screenshots showing the original game and the hack, allowing you to quickly see visual differences where they exist. And of course you can download the binaries so you can try them in your favorite emulator.
As hacks are developed, many are posted to this forum for their creators to
share with others as well as solicit feedback.
When you're learning how to program the Atari 2600, it's likely that from time to time you may find yourself stumped with a problem. Thanks to the internet, it's easy to hook up with other 2600 programmers and learn from their experiences.
Stella Mailing List
The Stella Atari 2600 Programming List is a mailing list dedicated to programming the Atari 2600. It is read by nearly all active Atari 2600 programmers and one of the best sources of information when you need an answer to a tough question. Also be sure to check out the extensive and searchable archives.
The AtariAge Forums are frequented by many homebrew authors, with programming-specific forums in an easy-to-use web interface. In addition, the forums are a great way to solicit feedback for game ideas and works-in-progress.
AtariAge In Development Pages
If you'd like to keep abreast of what homebrew games are being developed for the various Atari systems, we maintain a list of games "In Development" here on AtariAge. We try to keep this list current, and include a description and screenshots to each game, as well as a link back to the author's development page if there is one.
Once a homebrew game is released, it is entered into the AtariAge Rarity database with a value of "H" for "Homebrew". Clicking the above link will query the database for all 2600 Homebrew titles, useful if you want to try out some of the previously released homebrew games to get a feel for what modern-day 2600 programmers have been developing. Many entries have additional information about the games, including links back to the authors' homepages and in some cases, source code.
If you have any suggestions or corrections for this list, please drop us a line. Thanks go out to Manuel Polik for help in compiling this list.