EMU7800: A .NET Atari 7800 Emulator

v1.3, March 2012
Mike Murphy, mimurphy@users.sourceforge.net

EMU7800 releases can be downloaded from SourceForge here.

Click here to jump to the Keyboard Mappings.

Click here to jump to the Screenshot Gallery.

Click here to install via ClickOnce.

Click here to run the Silverlight version.

Click here for the Windows Phone 7 version.

Contents

1.0 Introduction
    1.1 Copyright Notice, Disclaimer, License
    1.2 Release Notes
    1.3 Acknowledgements
    1.4 Known Issues
2.0 Installation
    2.1 Prerequisites
    2.2 Installing the Distribution
    2.3 Rebuilding from Source
    2.4 Game Cartridge Information Database (a.k.a. ROMProperties)
3.0 Running the Emulator
    3.1 Keyboard Mappings
    3.2 Game Controller/Joysticks
    3.3 Paddle and Lightgun Emulation
    3.4 User Interface
        3.4.1 Game Select Tab
        3.4.2 Settings Tab
        3.4.3 Console Tab
        3.4.4 Help Tab
    3.5 External Command-line Options
    3.6 Atari 7800 Hints and Tricks (www.atari7800.org)
4.0 Screenshot Gallery

1.0 Introduction

This is a release of EMU7800, an Atari 7800 emulator implemented using Microsoft's .NET platform. Most ProSystem (7800) and VCS (2600) titles run well. EMU7800 runs on Windows XP SP3 and higher systems. Performance is sufficient on current hardware. Send me a note if you have questions or feedback. Enjoy!

1.1 Copyright Notice, Disclaimer, License

EMU7800 is Copyright © 2003-2012 Mike Murphy.

THIS SOFTWARE IS PROVIDED "AS-IS" WITHOUT ANY EXPRESSED OR IMPLIED WARRANTY. IN NO EVENT WILL THE AUTHOR BE HELD LIABLE FOR ANY DAMAGES ARISING FROM THE USE OF THIS SOFTWARE. PLEASE SEE THE ENCLOSED "LICENSE.TXT" FILE FOR THE COMPLETE LICENSING TERMS.

1.2 Release Notes

v1.3

v1.2

v1.1

v1.0

v.97

v.96

v.95

v.91

0.90

0.88:

0.81:

0.71:

0.61:

0.60:

0.55:

0.50:

0.41:

0.33:

Further refined the HMOVE emulation, added a few illegal opcodes to enable some of the homebrew titles to work, and fixed several emulation bugs. This cleaned up Pitfall2, and other Activision titles that had visual artifacts.

0.32:

0.31:

1.3 Acknowledgements

EMU7800 is a derived work of many people. Please let me know should others need to be included in the following list:

For all things Atari, including game manuals, tips, and community, be sure to visit AtariAge!

1.4 Known Issues

2.0 Installation

2.1 Prerequisites

To run EMU7800, you will need to have .NET 4.0 installed onto your Windows-based computer. You can do this for free via Windows Update. To have the capability to build from the included source code, you'll either need the .NET 4.0 software development kit (SDK) or Visual Studio 2010. EMU7800 was originally developed on a machine with a Pentium 4 Celeron 1.7 GHZ processor (a ten year-old system as of this writing.) This was adequate for excellent emulator performance.

2.2 Installing the Distribution

Click here to install EMU7800 to your computer. This is preferred method of installation. Elevated permissions are not required, and updates are distributed automatically. The program can be uninstalled through the Control Panel by typical means.

2.3 Rebuilding from Source

For the curious, the complete source code is available for download in a .zip archive. The solution and project files are in Visual Studio 2010 format. DirectX dependencies needed by EMU7800.DirectX.vcproj must be copied from the DirectX SDK (freely downloadable.) Helper scripts, COPYDEPS.cmd, are located under EMU7800\Host\DirectX\EMU7800.DirectX\DirectXDependencies.

2.4 Game Cartridge Information Database (a.k.a. ROMProperties)

In EMU7800, recognized game ROM files have associated properties that determine the proper execution configuration of the emulator. These attributes are stored in the ROMProperties.CSV file, located in the same directory as the executable. Any editor that can work with .CSV files (e.g. NOTEPAD.EXE and Excel™), can be used to update the file.

3.0 Running the Emulator

3.1 Default Keyboard Mappings

Key Function
ESC Escape (quit) from the currently running machine/game
Q Swap Stelladaptor/2600-daptor paddles P1/P2 on device 0
W Swap game controller/joystick devices 0/1
E Swap Stelladaptor/2600-daptor paddles P3/P4 on device 1
P Pause the emulator, any other key resumes
M Sound mute toggle
F Show frame rate, emulator execution statistics
R Game Reset Console Switch
S Game Select Console Switch
C Toggle between Color and B/W Console Switch settings
1 Toggle between A/B difficulty for left player
2 Toggle between A/B difficulty for right player
F1 Set keyboard/mouse to player 1 control
F2 Set keyboard/mouse to player 2 control
F3 Set keyboard/mouse to player 3 control
F4 Set keyboard/mouse to player 4 control
F5 Pan display left
F6 Pan display right
F7 Pan display up
F8 Pan display down
F11 Save machine state to desktop
F12 Save Screenshot to the My Pictures folder
Up Arrow Move up: joystick, booster grip
Left Arrow Move left: joystick, booster grip, paddles, driving
Right Arrow Move right: joystick, booster grip, paddles, driving
Down Arrow Move down: joystick, booster grip
X Trigger (Right Fire Button for 7800, Fire Button for 2600)
Z Booster (Left Fire Button for 7800)
NUMPAD7 Keypad 7
NUMPAD8 Keypad 8
NUMPAD9 Keypad 9
NUMPAD4 Keypad 4
NUMPAD5 Keypad 5
NUMPAD6 Keypad 6
NUMPAD1 Keypad 1
NUMPAD2 Keypad 2
NUMPAD3 Keypad 3
NUMPAD* Keypad *
NUMPAD0 Keypad 0
NUMPAD/ Keypad #

3.2 Game Controller/Joysticks

Up to two game controllers (e.g. joysticks) can be used, where the first two found in the device list will be selected for use.

For games that use the paddle controller, the mouse will be used for input unless a Stelladaptor or a 2600-daptor controller is detected. For the uninitiated, these are USB adapters that enable usage of the original Atari controllers. At the time of this writing, the Stelladaptor is no longer is available for purchase. Note the Stelladaptor will be recognized as a 2600-daptor.

The paddle swapping keys (Q and E) are useful when you are using a set of original Atari paddles where one of the paddles is excessively jittery.

On the Atari 7800, Asteroids, Pole Position II, and Xevious include obscure and undocumented joystick detection logic. The computer keyboard will always be recognized by these games as a 7800 joystick. When using the 2600-daptor or 2600-daptor II in 2600 mode, these games will recognize the controller as a 2600 joystick and will cause them to alter their controller mappings accordingly. Once this 2600 joystick remapping occurs, it stays in effect until the console is power cycled.

When using two 2600-daptor IIs for Star Raiders, they may not be recognized in the proper order leaving the keypad on P1 and the Joystick on P2. The easist way to resolve this is to press the W key to virtually swap the adaptors.

3.3 Paddle and Lightgun Emulation

On paddle games, the mouse can be used as the paddle controller. Sensitivity is currently not configurable. The mouse is also used for lightgun games in Fullscreen DirectX mode. Look for a small glowing segment that indicates where on the screen the emulated lightgun is pointed at.

3.4 User Interface

3.4.1 Game Select Tab

Game Select Tab

The number of ROMs recognized in the roms\ directory is displayed in the lower left corner. To select a new directory, click the Select ROM File button, and navigate to the ROM directory of your choice. When a ROM file is selected, the rest of the directory contents will be scanned and will be presented for subsequent selection.

Open File Dialog

By default, .bin files will be displayed in the Open File dialog. To show .a78 files, use the File Type drop-down.

3.4.2 Settings Tab

Settings Tab

There are several settings that can be adjusted on this tab. Settings will saved, so they will not need to be set again every time the program is launched.

3.4.3 Console Tab

Console Tab

Events pertinate to the execution of the emulator are logged to the Console. Commands may also be issued here to access features not available via the GUI. To see what is available, enter ?.

3.4.4 Help Tab

Help Tab

The Help tab features an integrated web browser control. Two link controls are available, located at the bottom of the control. The README link references this README file on the local system. The Game Help link varies dependent upon the currently selected game, and is intended to reference original game instruction manuals, available online. At the time of this writing, not all games have help URLs defined. URLs can be specified in the ROMProperties.csv file, and more will be included in subsequent EMU7800 verisons. Standard web browser features, like the Back button and Refresh, are available by right-clicking in the browser window.

Note that when the Game Help link is clicked, it will "disable" to indicate the page is loading. It will "re-enable" once loading is complete. If no Game Help URL is available, the link will not be visible.

3.5 External Command-line Options

To support various emulator front-end programs, EMU7800 can be launched with a full filename provided as a command-line argument:

EMU7800.exe "EMU7800 installation directory\roms\OYSTR29.BIN" "DirectX (DX9)"

Should the ROM file not be found, be unreadable, or not recognized, the program will terminate with a non-zero return code.

4.0 Screenshot Gallery

Atari VCS (2600) Titles:

combat 2600 screenshot breakout 2600 screenshot oystron 2600 screenshot adventure 2600 screenshot frogger 2600 screenshot cosmicark 2600 screenshot asteroids 2600 screenshot gijoe 2600 screenshot earthdiescreaming 2600 screenshot

Atari ProSystem (7800) Titles:

asteroids 7800 screenshot impossiblemission 7800 screenshot mspacman 7800 screenshot summergames 7800 screenshot joust 7800 screenshot darkchambers 7800 screenshot robotron 7800 screenshot dkongjr 7800 screenshot mariobros 7800 screenshot