Memory Module for the Atari 2600 and 7800
Quick overview
|
Updated 2004-10-7
|
The Memory Module is a unit that can store information for later retrieval for supporting Atari 2600 and 7800 games. It connects to one of the controller ports of an Atari console, and a controller can be plugged into the Module. Its features are:
- Atari 2600/7800 connection
- Does not block a controller port from controller use
- Will not interfere with a controller, even with games that do not support the Module
- Does not require extra hardware on a cartridge, although it does require code to support the Module to use the Module's special features
- Gets power from the console
- Uses a synchronous serial interface to limit the number of time sensitive operations (console is the master)
- Computer connection
- Sports an asynchronous serial connection for use with PC's
- Provides interface to storgae
- Requires power source to function
- High level interface to storage
- Can store data from multiple games
- The module handles allocation and deallocation of space
- Blocks (atomic storage unit) are 128 bytes each
- Games can allocate multiple blocks
- There are a total of 64 blocks (8KB)
- 160 byte memory buffer (in RAM)
- Uses non-volitile EEPROM storage
- No battery that could die and leak acid
- Can retain data for about a century (at least that is what the data sheet says)
- Emulates controllers when a PlayStation controller is connected to the Module
- Supports the Dual Shock and Dual Shock 2 controllers
- Emulates 2600 and 7800 joysticks
- Emulates the driving/steering controller
- Can provide controller input to a computer over the asynchronous serial connection
- Should be fairly cheap to make
The disadvanatges are:
- Keypad controllers will cause trouble during serial communication if two or more buttons in a column are simultaneously depressed.
- The EEPROM used has a life span of about 100,000 writes, so it cannot be used in place of RAM. That life span should allow a single game to be saved 27 times a day for 10 years before EEPROM failure, so it isn't a major problem.
Project status
It lives!
- Breadboard version works
- Development PCB works (labeled image)
- Breadboard unit used to simulate an Atari console; development board passed all tests
- Final version circuit on breadboard save for asynchronous serial interface; seems to work
- Revision 0 PCB has been tested (picture at top of page). Unfortunately, there are several problems with the board. The only feature that works is joystick emulation with a Playstation controller. I think I have figured out what went wrong and why, so hopefully revision 1 will be fully functional.
The development board has been working perfectly with the exception of a hardware bug. The circut for the final version does not include the problem.
Known bug:
- An input line used with asynchronous serial is left floating if not connected to a serial port. Touching the DB-9 shell of the serial connection or flexing the cable can cause the device to start expecting synchronous serial communication. The firmware was modified to have a timeout condition on synchronous serial communication initiation to mitigate the problem. It shouldn't have been a loop that could wait infinitely anyway. The device is still usable despite the bug, so I will not make a new development board to correct the problem.
Tasks left to finsh project
- Provide development board to game developers who want to support the Module. This has been done -- I no longer have the development board.
- Build a revised board for the final hardware and make it work this time.
Using the Memory Module
If you want to use the Module in your own software, first look at the protocol page. Then email me with questions.