It's free to join Gamasutra!|Have a question? Want to know who runs this site? Here you go.|Targeting the game development market with your product or service? Get info on advertising here.||For altering your contact information or changing email subscription preferences.
Registered members can log in here.Back to the home page.

Search articles, jobs, buyers guide, and more.

By Joe Grand
Gamasutra
[Author's Bio]
February 26, 2003

What Went Right?

What Went Wrong?

Sidebar: Atari 2600 Development, Resources

Printer Friendly Version
   

 


 


Latest Letters to the Editor:
Perpetual Layoffs by Alexander Brandon [09.21.2007]

Casual friendliness in MMO's by Colby Poulson [09.20.2007]

Scrum deals and 'What is Scrum?' by Tom Plunket [08.29.2007]


[Submit Letter]

[View All...]
  



Upcoming Events:
Women In Games Conference
Coventry, United Kingdom
09.10.08

3rd ACM International Conference on Digital Interactive Media in Entertainment and Arts - DIMEA 2008
Athens, Greece
09.10.08

GDC Austin
Austin, United States
09.15.08

Game Career Seminar
Austin, United States
09.17.08

Games Convention Asia 2008
, Singapore
09.18.08

[Submit Event]
[View All...]

 


[Enter Forums...]

Note: Discussion forums for Gamasutra are hosted by the IGDA, which is free to join.
 

 

 


Features

Postmortem: Pixels Past's SCSIcide

Sidebar: Crash Course in Atari 2600 Programming

Programming for the Atari 2600 is unlike that of any current videogame console. Sure, it might be an "obsolete" system with a 1MHz system clock, only 4K of address space, 128 bytes of RAM, complex timing constraints, and primitive sound capabilities, but that's the beauty!

The Atari 2600 hardware (which had a project name of "Stella") was originally intended to play Pong-style games. By design, there is a static playfield and 5 movable objects (2 player sprites, 2 missile sprints, and a ball sprite). The elegant system design contains three integrated circuits of note: the 6507 microprocessor (a 6502 core with no external INT pin), the 6532 Peripheral Interface Adaptor (PIA), and the Atari-custom Television Interface Adapter (TIA), which creates the television picture and sound.

Arguably the trickiest part of Atari 2600 programming is the need to keep track of the television electron beam and write to the screen when intended. Although the TIA provides automatic horizontal timing, the programmer needs to write to the screen on a per-line basis within the available time (in the case of NTSC, 76 clock cycles per scanline). The game software must also control the vertical sync (to reposition the electron beam to the top of the screen to start a new frame). More details of the television protocol can be found in the Stella Programmer's Guide written by Steve Wright in December 1979 (see resources section, below).

The first Atari games were limited to 2K or 4K of ROM, due to the cost of memory at the time. With specialized bank switching techniques using logic devices, the memory space of a cartridge gradually increased in the early 1980's to 8K and 16K. Only one released Atari game was 32K (Fatal Run in 1990), but many homebrew games are being developed today that will require such a size.

It didn't take long for Atari game to break out of the intended Pong game mechanic. Games like Activision's Pitfall! came onto the scene with unique concepts and astonishing game graphics that were never imagined nor intended by the original hardware designers. Still today, continual poking and prodding by classic game programmers are leading to new and amazing technical feats on the Atari 2600. Many tricks have been discovered to enable such things as asymmetric playfield drawing, displaying multiple sprites on a given scanline without screen flicker, and creating fully customizable music scores.

The development environment that the original game programmers had to work with was drastically different than what we have now. The design/debug cycle was time consuming, to say the least. Programmers had to use time-share mainframes on which to compile their code, then burn the resulting binary onto EPROMs and try the result on real hardware. Later on, throughout Atari, Activision, and Imagic, emulators and simulators running on desktop computer systems were used. Nowadays, development is much easier. Simply write some code, compile it, and immediately test it on an emulator or real hardware. Sounds easy!

Most of the development can be done right on a PC with a standard text editor, 6502 cross assembler, and an emulator. PC-based 2600 emulators have helped immensely to speed up the game development cycle. When it comes time to test your game on actual hardware, you can use a Supercharger to load the game through your sound card directly to the 2600. There's nothing quite like playing an Atari game on the real thing.

The process of building cartridges for the Atari 2600 is simple. Before SCSIcide was produced, the most common method for homebrew developers to make their own games was to obtain common Atari 2600 games, modify the existing cartridge circuitry (removing the ROM, cutting traces on the circuit board, soldering in a new EPROM), clean the cartridges, and put them back together. Cartridge manufacturing is slightly easier now given the availability of custom circuit boards.

Within the past three years, the classic development and gaming community has grown greatly. Not only are people playing these older games with a notion of nostalgia, they truly enjoy them. Current 2600 programmers are extremely helpful and willing to share their code and experiences. The resources now available open up game development to the masses.

Roger Williams, a participant on the Stella Development list, sums up programming for the Atari 2600 in a few concise statements:

"Stella isn't a nice girl. Stella is a bitch. She seduces you, but then you work your balls off to support her one megahertz 8-bit no-video-RAM habit. Sweat comes off your testicles as you try to get 48 horizontal pixels of unflickering video where you want them on the screen. In other environments, you deploy MUL instructions and rewrite code to increase indirection; on Stella you unroll countdown loops because you can't afford the overhead of the DEC and BNE instructions."

I couldn't have said it better myself. People come to the Atari 2600 for the challenge, the frustration, and the love.

Resources

1. 2600 101: A Tutorial By Kirk Israel, A detailed guide for learning 2600 programming, http://alienbill.com/vgames/guide

2. The Stella Mailing List, Active development list for Atari 2600 programming, many helpful, technical individuals and an archive dating back to October 1996, http://www.biglist.com/lists/stella

3. The Dig: Stella Archive Excavation, Extensive resource list, required documentation, and code examples archived from the Stella Mailing List, http://www.neonghost.com/the-dig/index.html

4. AtariAge, The ultimate resource for anything Atari, including new, homebrew production services, message boards, history, game lists, documentation, and more, http://www.atariage.com

5. AtariAge: Titles In Development, List of on-going game development projects for all Atari systems, http://www.atariage.com/development_list.html

6. The Atari 2600 FAQ, A good starting point for beginners, http://www.atariage.com/2600/faq/?SystemID=2600

7. Stella Programmer's Guide, The essential technical guide written by Steve Wright in December 1979, http://www.neonghost.com/the-dig/dox/stella.pdf

8. DASM, 6502/6507 Cross Assembler, http://alienbill.com/vgames/guide/bin/dasm.zip

9. Paul Slocum's 2600 Music and Sound Programming Guide, Everything you need to know about sound generation, includes Paul's music driver, a player, an example song, and detailed instructions, http://qotile.net/sequencer.html

Emulators

1. z26, http://www.whimsey.com/z26/z26.html

2. StellaX, http://www.emuunlim.com/stellax

3. PCAE, http://pcae.vg-network.com

______________________________________________________


join | contact us | advertise | write | my profile
news | features | companies | jobs | resumes | education | product guide | projects | store



Copyright © 2003 CMP Media LLC

privacy policy
| terms of service