Tempest Code Project
mirrored from arcade gameshop

Summary:
What is the Tempest Code Project? The goal of the project is to comment the Tempest code to such a degree that the workings of the software and hardware are easily understood. Once this is done, it would be possible to create meaningful modifications to Tempest, or to create new games for the Tempest hardware. The project was started on September 25th, 1999 by Josh McCormick.

Why Tempest? Tempest was chosen for many reasons. First, Tempest is a color vector game. This adds a few exciting challenges, and can open the door to new vector games being created. Even today, vector games have a special place in many a heart. Second, according to VAPS, it is the most collected arcade game. A large number of people stand to benefit from the results of this project. Third, a fair amount of base documentation exists between Atari hardware reference manuals and documents created by other collectors. Fourth, it doesn't use any security or protection hardware. Finally, it is reasonably old enough not to cause any problems if its secrets are revealed.

Why *not* Tempest? To be fair, there is a good argument against Tempest -- the controls are too simple. You've got a spinner, two useful buttons (fire and zap), and two akward buttons (player 1 and player 2). The lack of a joystick makes the Tempest hardware less versitile to work with. That, and vector programming is much harder than raster programming.

How is the project progressing? It has just started, but we've got 10% of the code documented. A good deal of groundwork has been laid out, between documentation of the hardware registers and documentation of memory traps.

What is the plan of attack? The major avenue of attack is to search for a known memory address (such as a DIP switch, or a game variable), and to figure out the surrounding code. An indirect method is to randomly change a byte of code with a hex editor and then play the game in an emulator to observe an change in the game's behavior.

Which version of the Tempest ROMs are you using? We are using the third and final version that fixed the score cheat/bug, and corrected for monitors that wanted to collapse the X axis. Later, we can go back and document the differences between this ROM and the original two.

How are you going to manage the updates? Creating good CGI scripts is a bitch. But manually merging contributions is also a bitch. When the pain of merging outweighs the pain of programming some CGI, it'll become an automated process.


Documents created by this project:
Tempest Source - The assembler code for Tempest, *with comments*. (approx 375k)
Tempest Notes - General comments about discoveries made in the Tempest code.
Memory Locations - Addresses used to hold Tempest specific game logic.
ROM Locations - Game logic discovered by random code modifications.



Documents inspired by this project:
Tempest Commented Source - Created by derMouse, with development screenshots.


Simple software hacks created by this project:
Open Level Selection - Select any level. [ screen shot ] NOTE: CRC is now adjusted! (NEW!)
Bonus Lives by Josh McCormick (NEW!)


Other Tempest Software Hacks:
Tempest Tubes by Duncan Brown
Tempest Level Editor by Simon Mills



Documents to consult:
Tempest: Detailed Theory of operation - Very useful information on the basic hardware.
MAME Tempest Driver - Some nice details are hidden in this driver.
Atari Tempest Page - General information about Tempest.
6502 Opcodes - Documentation for the 6502 instruction set.
6502 disassember source code - The C code to a 6502 disassember you can use on the ROMs.
frhed: Free Hex Editor - An easy way to make direct modification to the Tempest ROMs.
De Re Atari Chapter 7 - The Pokey chip and sound (note: address for the pokey is different in the Tempest hardware)
Pokey Registers - More Pokey information, but cryptic.
Working the Pokey - Useful information on using the Pokey chip (in development)
Pokey datasheet - Revision 'B' Atari Internal document.
MAME Pokey Driver - Useful discussion on the Tempest lock-up 'bug'.
Pokey Emulator - v.62 of Mike Hill's POKEY Emulator. (New!)
Pokey LPT interface - A POKEY on your printer port. (New!)
Tempest ROM Revisions - A summary of the three different revision of the Tempest software.
MAME Programming - Clay Cowgill on the subject of using MAME to develop vector software.
EAROM Read/Write Routines - Clay strikes again! Here's his routine for using the EAROM.
Tempest Cartridge System - A deal to make a cartridge based game system.
Tempest Future? - A few ideas on Tempest hardware and software

 
mail
last updated: September 15, 2004