A7800 Emulator
Contents
A7800 - the Atari 7800 Emulator
A7800 is a fork of the MAME Atari 7800 driver, with several enhancements added:
- Support for emulation of Proline Joysticks, VCS Joysticks, Lightguns, Paddles, Driving Controllers, Keypads, Trak-Balls, Amiga Mice, and ST Mice.
- Maria DMA timing has been improved further, with the addition of accurate DMA hole penalties.
- Selectable and improved palettes with enhanced screen options.
- Streamlined UI including menu options to have an Atari 7800 system focus.
- A bug in the existing RIOT emulation has been fixed.
- POKEY sound emulation improvements.
- SALLY (CPU) and MARIA (Graphics chip) performance adjustments.
- Audio indication of no ROM loaded silenced.
- BIOS files no longer required and made optional.
- Implementation of XM control registers updated.
- Graphical register updates made mid-scanline are now displayed mid-scanline.
- Bankset bankswitching support added.
- POKEY@800 added for non-banked, supergame, and bankset formats.
- Machine targets a7800dev and a7800pdev added, which display DMA usage per-scanline.
MAME compatibility and syntax has been maintained, to allow for the reuse of MAME configuration files and front-ends.
Download and Installation Notes
Download and follow the instructions for your platform of choice, below. A7800 is provided under the GPL v2 license, with no warranty of support or fitness of any kind.
The latest released version of A7800 can be downloaded via the project github page. Direct links to the gihub packages are provided with the Installation notes below.
Windows
A Windows 64-bit binary has been provided, which should be compatible with most modern Windows OSes.
- Unzip the provided file to a folder, such as C:\A7800.
- (Optional) Create a BIOS folder for the a7800.zip (NTSC) or a7800p.zip (PAL) BIOS ROMs, such as C:\A7800\bios.
- Create a ROMS folder to contain A78 game ROMs, such as C:\A7800\roms.
Be sure to put your A7800 BIOS zip file(s) in your BIOS folder, A78 game files in your ROMS folder, and don't forget to make sure any additional ROMS folders are listed in the a7800.ini file.
Note: The current MAME convention of placing the system bios files in the ‘roms’ folder, with game and utility ROMs placed in a ‘software’ subfolder divided by system-driver name, may be followed alternatively.
OS X
64-bit binary has been provided, which should be compatible with recent versions of the OS. You will need SDL2 runtime libraries installed. If the provided binary doesn't work on your platform, you can try building your own from source code.
To install A7800, download one of the packages, and from a terminal execute the commands that follow.
Unpack the file...
# tar -xvzf ~/Downloads/a7800-osx-v5.2.tgz
Ensure that the /usr/local/bin common binary directory exists. This can be skipped if it does exist, or performed without harm if you're not sure...
# sudo mkdir /usr/local/bin
Copy the executable to /usr/local/bin, ensuring all can execute it...
# sudo cp a7800-osx/a7800 /usr/local/bin/a7800 # sudo chmod 755 /usr/local/bin/a7800
If you haven't run A7800 before, create a directory for the configuration, and generate a default configuration...
# mkdir ~/.a7800 # a7800 -cc # mv a7800.ini ~/.a7800
(Optional) Create a directory to hold your a7800.zip (NTSC) or a7800p.zip (PAL) BIOS ROMs...
# sudo mkdir -p /usr/local/a7800/roms
Create a directory to hold your A78 game ROMs...
# sudo mkdir -p /usr/local/a7800/software/a7800
Edit your configuration file to tell A7800/MAME where you've put BIOS ROMS. You may also wish to change "mouse 0" to "mouse 1" under "CORE INPUT OPTIONS", to enable using the mouse with paddle, trackball, driving controller, and mouse emulation...
# nano ~/.a7800/a7800.ini
Be sure to put your A7800 BIOS zip file(s) in your ROMS directory, A78 game files in your SOFTWARE directory, and don't forget to make sure your ROMS directory is listed in your a7800.ini file.
Linux
A 64-bit binary has been provided, which should be compatible with recent versions of the OS. You will need SDL2 runtime libraries installed. If the provided binary doesn't work on your platform, you can try building your own from source code.
To install A7800, download one of the packages, and from a terminal execute the commands that follow.
Unpack the zip file...
# tar -xvzf a7800-linux-v5.2.tgz
Ensure that the /usr/local/bin common binary directory exists. This can be skipped if it does exist, or performed without harm if you're not sure...
# sudo mkdir /usr/local/bin
Copy the executable to /usr/local/bin, ensuring all can execute it...
# sudo cp a7800-linux/a7800 /usr/local/bin/a7800 # sudo chmod 755 /usr/local/bin/a7800
If you haven't run A7800 or MAME before, create a directory for the configuration, and generate a default configuration...
# mkdir ~/.a7800 # a7800 -cc # mv a7800.ini ~/.a7800
(Optional) Create a directory to hold your a7800.zip (NTSC) or a7800p.zip (PAL) BIOS ROMs...
# sudo mkdir -p /usr/local/a7800/roms
Create a directory to hold your A78 game ROMs...
# sudo mkdir -p /usr/local/a7800/software/a7800
Edit your configuration file to tell A7800 where you've put BIOS ROMS. You may also wish to change "mouse 0" to "mouse 1" under "CORE INPUT OPTIONS", to enable using the mouse with paddle, trackball, driving controller, and mouse emulation...
# nano ~/.a7800/a7800.ini
Be sure to put your A7800 BIOS zip file(s) in your ROMS directory, A78 game files in your SOFTWARE directory, and don't forget to make sure your ROMS directory is listed in your a7800.ini file.
Source Code
To build A7800 you'll need the SDL version 2 developer libraries to compile it. For details, you can research how to build MAME on your platform of choice. Once you have the tools and libraries to build MAME on your platform, building A7800 should just be a matter of issuing the "make" command in the A7800 source directory.
Emulator Usage
Run the A7800 executable, and you'll get the graphical version of the emulator running.
How To Select A Game
01. After a system is started, press the ‘Tab’ key.
02. Highlight the option "Load ROM file" with arrow keys and press 'Enter', or double click with mouse pointer.
03. Perform the same respecting the available "cartridge (cart)" slot that appears.
04. Choose a ROM from the displayed "roms" subfolder on the screen; otherwise, navigate to the location of where the ROMs are stored. ROMs should have headers in proper *.a78 format
How To Select A Different Controller
01. After a system is started, press the ‘Tab’ key.
02. Highlight the option "Controller Selection" with arrow keys and press 'Enter', or double click with mouse pointer.
03. Change a controller by highlighting it and then press either the left or right arrow key.
04. After a controller is changed, reset the emulator by selecting “Reset”.
Examples of Running from Command-Line
NTSC examples are provided. To change to PAL, switch the "a7800" argument to "a7800p".
To run an a78 ROM located in the current directory...
a7800 a7800 -cart myfilename.a78
To run an a78 ROM located in the current directory, with HiScore support...
a7800 a7800 -cart1 hiscore -cart2 myfilename.a78
To run an a78 ROM located in the current directory, with XM support...
a7800 a7800 -cart1 xm -cart2 myfilename.a78
To run an a78 ROM located somewhere else...
a7800 a7800 -cart /path/to/myfilename.a78
FAQs
- Q: What else do I need to run this emulator?
- A: Ideally, you'll obtain Atari 7800 BIOS images, though the emulator will run without them. However, to use the Hi-Score Cart or XM module, you'll need the Hi-Score Cart BIOS image. ROM and BIOS images aren't provided with A7800.
- Q: Why not just contribute this work to the MAME team, so I don't have to download this thing?
- A: This work was initially submitted to MAME team and rejected. MAME devs wish to have Proline 2-button controllers (and any other new DB-9 controllers) assigned directly to the VCS. Since this would involve integration, testing, and changes to the VCS driver and other drivers that may use it, the extra work involved wasn't worth it to us. In the end, MAME devs have broader wishes, and 7800.8bitdev.org is focused on the 7800.
- Q: Do you have any tips or guides to assist further with the debugger?
- A: See the A7800.8bitdev.org page regarding the MAME debugger: http://7800.8bitdev.org/index.php/Introduction_to_the_MAME_debugger For an extensive command list with detailed explanations, see the docs.mamedev.org pages: http://docs.mamedev.org/debugger/index.html