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