June 13, 2011
z26 is Copyright ©1997-2011 by John Saeger and contributors. z26 is released subject to the terms and conditions of the GNU General Public License Version 2 (GPL). z26 comes with no warranty. Please see the included COPYING.TXT for details. Source code for the current release is available at the home page listed above.
This version of z26 is known to work on Windows XP, Windows 7,
Linux, and Intel Macintoshes. As this version of z26 is written
in C, it is possible
to compile and run this
version of z26 on 64-bit Linux systems.
A computer with reasonably
fast processors, hardware support for OpenGL, and a working
Note that vsync is most likely to work properly if z26 is run full
Unzip the z26 archive and place the executable which is called z26.exe into the directory that contains the ROM images that you want to run. You will need a copy of SDL.DLL either in the directory that you place z26, or in the Windows directory. This .DLL is included in the .zip file along with the z26 executable.
On Linux, please build z26 from source code. Go to the src directory and type:
If all goes well, when it's done you'll have an executable named z26 that you can put in your ROM directory. You might need to install the SDL development headers, gcc, make, and m4 for this to work.
Simply double-click on the z26 executable from your file manager or launch z26 from the command line and you will be presented with the Main Menu. The current selection is highlighted. You can navigate the list with the vertical arrow keys, and you can make a selection by pressing the <enter> key or the <right arrow> key.
z26 -- An Atari 2600 Emulator
Play a Game
Initially, the contents of the startup directory are shown. You can navigate to other directories which are shown with a / following the name. You can go upwards in a directory tree by selecting the ../ entry. If you press a letter of the alphabet, the file list shows the first game starting with that letter at the top of the list, with successive keypresses narrowing the search.
If you run a game with the game launcher, you can exit the game by pressing <escape> and you return to the game launcher. If you press <escape> again you return to the Main Menu.
Navigate the menu with the up/down arrows and select with left/right arrows, the enter key or the space bar. Press <escape> to return to the Main Menu.
Game Options – e5e657da Recently run game CRC shown in hex.
P0 Difficulty...: Easy Player 0 difficulty -- easy or hard.
P1 Difficulty...: Easy Player 1 difficulty -- easy or hard.
Console B/W.....: Color Console B/W switch -- color or B/W.
Bankswitch......: Auto Atari, Tigervision, Spectravideo, etc.
Palette.........: Auto NTSC, PAL or SECAM.
Left Controller.: Auto Joystick, paddle, keypad, etc.
Right Controller: Auto Joystick, paddle, keypad, etc.
Swap Ports......: Auto Swap left and right controllers.
Allow All 4 Dir.: Auto All 4 joystick directions simultaneously.
Exit Return to Main Menu.
Navigate the menu with the up/down arrows and select with left/right arrows, the enter key or the space bar. Press <escape>
The following bankswitch schemes are supported:
0 -- 2K+4K Atari [NoBS]
1 -- CommaVid [CV]
2 -- 8K Superchip [F8SC]
3 -- 8K Parker Bros. [E0]
4 -- 8K Tigervision [3F]
5 -- 8K Activision [FE] (flat)
6 -- 16K Superchip [F6SC]
7 -- 16K M-Network [E7]
8 -- 32K Superchip [F4SC]
9 -- 8K Atari swapped [F8]
10 -- Compumate [CM]
11 -- 32K - 512K Tigervision+ [3F+]
12 -- 8K United Appliance [UA]
13 -- 64K Homestar Runner / Paul Slocum [EF]
14 -- 512K Krokodile Cart / Andrew Davie (large 3F + 32K ram) [3E]
15 -- Starpath [AR]
16 -- 16K Atari [F6]
17 -- 32K Atari [F4]
18 -- 64K Megaboy [MB]
19 -- 12K CBS [FA]
20 -- 8K Atari [F8]
21 -- 8K + DPC Pitfall2 [P2]
22 -- 4A50 / supercat / John Payson
23 -- 0840 EconoBanking
The following controllers are supported:
By default z26 runs full-screen at the resolution of your
desktop since OpenGL vsync usually works best when run
full-screen. A windowed
display is provided, but it's not guaranteed to give smooth gaming
A number of textures are provided to give control over game detail
and sharpness. Width and height are continuously variable and the
scanline effect has variable depth. So you can control the
display much as you might control the display on a real 2600 connected
to an old-school video monitor.
Display........: Full Screen Full Screen or Window (restart required).
Texture........: Blurry Blurry or Sharp in fast, normal, and high-definition.
Width..........: 30 Continuously variable.
Height.........: 0 Continuously variable.
Line Mode......: Normal Normal, Scanline or Interlaced.
Scanline Depth.: 60 Continuously variable.
Colour Loss....: No Simulate PAL colour loss.
Exit Return to Main Menu.
You can try reducing the SQ size for better performance on fast systems, or make it larger if you get choppy sound on older systems. Changing the DSP changes the tone of the sound.
Quiet......: No Disable sound.
DSP........: 1 Sound processing level -- 1, 2, or off.
SQ Size....: 4096 Sound queue size.
Exit Return to Main Menu.
Here you can tune the user inputs to the game. You can also choose to turn on the scanline and framerate display, as well as set the GUI color scheme.
Show FPS....: No Show framerate on game display.
Theme.......: 5-aqua Choose colour scheme for GUI.
Mouse Rude..: No Mouse control of Atari joystick in a window.
Grab Input..: No Grab ALL keyboard input.
Keyboard....: Yes Enable/Disable Keyboard.
Mouse.......: Yes Enable/Disable Mouse.
Joystick....: Yes Enable/Disable Joystick.
Stelladaptor: Yes Enable/Disable Stelladaptor.
Exit Return to Main Menu.
Here you can fine-tune how the emulator behaves.
Mouse Paddle X....: Auto Paddle to control with mouse X-axis.
Mouse Paddle Y....: Auto Paddle to control with mouse Y-axis.
Paddle Sensitivity: Auto Sensitivity when controlled by keyboard.
Paddle Adjust.....: Auto Paddle delay in scanlines.
Lightgun cycles...: Auto Adjust lightgun by N cycles.
Lightgun scanlines: Auto Adjust lightgun by N scanlines.
Exit Return to Main Menu.
Here you can turn on or turn off the debug trace log.
Trace Log....: Disabled Write a code trace to z26.log.
Version 3.00.16 –- http://www.whimsey.com/z26
Exit Return to Main Menu.
Delete the file z26.gui from the startup directory.
To control the switches on the main console box, use the function
keys on the keyboard as follows:
F1 -- Reset
F2 -- Select
F3 -- B/W
F4 -- Color
F5 -- Player 0 easy
F6 -- Player 0 hard
F7 -- Player 1 easy
F8 -- Player 1 hard
z26 supports the use of the mouse or PC trackball to play paddle
games. If you want to change which paddle is emulated with the mouse
use the Controller Tweaks Menu. You can change which direction the
mouse must be moved in to get paddle motion by pressing the <Tab>
key on the keyboard while you're playing a game. You can emulate two
paddles with a mouse with one paddle on each axis. You can use the
keyboard to play paddle games. If z26 doesn't automatically support a
game as a paddle game you may specify which controllers are paddle
controllers in the Game Options menu.
Paddles may be controlled from the keyboard as follows:
Ctrl -- fire paddle 0 Use left and right arrows to move
RShift -- fire paddle 1 Use up and down arrows to move
n -- fire paddle 2 Use 's' and 'f' to move
v -- fire paddle 3 Use 'e' and 'd' to move
PC or USB joysticks and gamepads are supported to the extent that
the operating system and SDL supports them for playing joystick games.
The mouse and PC keyboard may also be used. Some games like raiders.bin
use the "wrong" joystick. To reverse the joysticks, reverse the ports
under the Game Options Menu. Joysticks may be controlled from the
keyboard as follows:
Ctrl -- fire Use the arrow keys to move.
/ -- trigger (booster grip)
RShift -- booster (booster grip)
n -- fire
s -- left
e -- up
f -- right
d -- down
b -- trigger (booster grip)
v -- booster (booster grip)
z26 suppports the game that uses the driving controller (Indy 500)
from the keyboard as follows:
Ctrl -- accelerate
right arrow -- turn clockwise
left arrow -- turn counter-clockwise
n -- accelerate
f -- turn clockwise
s -- turn counter-clockwise
Left Port Right Port
7 -- 1 8 -- 2 9 -- 3 1 -- 1 2 -- 2 3 -- 3
u -- 4 i -- 5 o -- 6 q -- 4 w -- 5 e -- 6
j -- 7 k -- 8 l -- 9 a -- 7 s -- 8 d -- 9
m -- * , -- 0 . -- # z -- * x -- 0 c -- #
Use PC keyboard columns 1 - 0
Ctrl -- FUNC
LShift -- SHIFT
Use the mouse to move horizontally.
button -- start the game
Tab -- switch between player 0 and player 1
Tab -- switch between horiz. normal, vert. normal
and horiz. reversed, and vert reversed
Use keys 1 2 3 to start the corresponding tape.
F1 stops and rewinds the tape.
Atari sold a Trak-Ball that could be used to play joystick games. z26 supports the use of a mouse or PC trakball to do the same thing for joystick games. Optical trackballs like the Logitech Marble Mouse are great for this. Also z26 emulates the various types of Atari Trak-Balls in their native modes.
z26 supports light gun games (Sentinel, Shooting Gallery) with the mouse.
z26 enables the keyboard/touch pad/keypad for recognized games that use them.
z26 supports the booster grip game (Omega Race) from the keyboard and the PC joystick with 3 or more buttons.
PgUp -- Scroll the screen up.
PgDn -- Scroll the screen down.
Home -- Return to the default screen position.
Pressing the = key during game play causes a .bmp file with a screen image to be placed in your directory. Filenames are z26p0000.bmp, z26p0001.bmp etc. The filename restarts at z26p0000.bmp causing old versions to be replaced each time you restart the emulator.
If you start z26 from the command line with the -t command line switch, it automatically builds a text file called z26.log. This file is a log of all instructions executed and shows some other interesting things like the (frame number, scanline number, cpu cycle, tia clock), object positions (P0, P1, M0, M1, BL), cpu flags, registers (A, X, Y, SP), the program counter, the current instruction in hex, and a disassembled listing of the instruction.
Emulator performance slows down quite a bit while writing out this file so you can turn off writing with F12 and turn it back on with F11 to make it easier to get to the part of the game that you're interested in.
By enabling the Show FPS option in the Interface Options menu, thee
number of scan lines that a game is using as well as its play speed in
frames per second (FPS) to be displayed. This is
useful for testing PAL games so you can avoid the PAL color loss bug.
Of course you can also enable the color loss by turning on the Colour
Loss option in the Video Options menu. The display may be toggled
with the <Alt-D> key combination.
z26 assumes that a PC joystick with only two buttons and two axis is the Stelladaptor device, that lets you connect Atari joysticks, driving controllers and paddles to your PC's USB port. If you want to use a different 2-button/2-axis joystick with z26 and experience problems with the emulation of some Atari controller, you can disable the Stelladaptor support in the Interface Options menu. Please note that the Stelladaptor is seen as a joystick too, so disabling joysticks in the Interface Options menu will also disable the Stelladaptor.
Some Atari controllers are simulated with more than one PC controller. If you are experiencing problems with this, you can disable one or more PC controllers for these Atari controller simulations. For example you might want to disable the PC mouse when you use the keyboard to play an Atari-joystick game, so that accidently pushing the mouse doesn't cause any unwanted movement. Also you might want to disable the PC joystick for paddle games, because the PC joystick always overrides all other PC controllers in the paddle simulation when one is plugged into the PC. Please look at the following table to find out which Atari controllers are simulated with which PC controller.
Atari/PC keyboard mouse joystick Stelladaptor
joystick JS x x x x
paddle PC x x x x
keypad KP x - - -
driving DC x x x x
lightgun LG - x - -
Compumate CM x - - -
Kid Vid KV x - - -
Mindlink ML - x - -
ST mouse ST - x - -
Trak-Ball TB - x - -
Amiga mouse AM - x - -
Please note that inactivating the PC controller only works for Atari controllers that are simulated by more than one PC controller. Also note that the Stelladaptor is just a special case of the PC joystick. So inactivating joystick support will also disable Stelladaptor support.
z26 supports three different sets of colors or palettes. The most common games shipped in North America use the so called NTSC colors. Games shipped in other parts of the world use the so called PAL colors. z26 typically detects the correct colors, but you can override the colors chosen by z26 with the Palette option in the Game Options menu.
z26 also supports the bug in PAL consoles that causes the display to display a monochrome image if a game has the wrong number of scanlines. This feature is enabled with the Colour Loss option in the Video Options menu. Some of the 32-in-1 games which were poorly done PAL hacks show this effect.
SECAM colors can be selected with Palette option in the Game Menu. In the time before the crash Atari created most of it's PAL games in such a way that the B/W switch would enable SECAM compatible colors. So nostalgic gamers from France can play PAL ROMs by selecting this option.
You can force a game to start in black and white mode with the Console B/W option in the Game Options menu. Note that this doesn't mean that the game will actually be in black and white, this merely sets the console B/W switch which the game may or may not ignore.
z26 supports digital signal processing (DSP) on the sound. This is to reduce distortion on some clone sound cards, but also causes the sound to more closely approximate the sound of an old TV set for those users that prefer a more "classic" sound. By default a setting of 1 is selected, however a higher setting of 2 is also available, and the DSP can be turned off as well.
z26 currently supports the following schemes:
Support is usually automatic, however one can override the default bankswitch scheme in the Game Options menu.
For most Starpath games, the .bin file must be a multiple of 8448 bytes big. To run multiload games you must concatenate the .bin files. Under Windows, a command like this will do the trick:
copy /b load1.bin+load2.bin+load3.bin+load4.bin mload.bin
Under Linux something like this will work:
cat load1.bin load2.bin load3.bin load4.bin > mload.bin
Then run mload.bin in the emulator. z26 supports a maximum of 61 loads.
z26 also supports the 6144 byte Starpath format.
The Extended Tigervision (#11) bankswitch scheme allows ROMs up to 512K in size keeping the last bank fixed. All ROM images that are bigger than 64K and not a multiple of 8448 default to this scheme.
The original Tigervision (#4) bankswitch scheme also supports up to 512K games but with $1800-$1FFF as the fixed bank. This allows compatibility with the Cuttle Cart for games up to 64K in size.
z26 supports the Kid Vid games (Smurfs Save the Day and Berenstain Bears) automatically.
Press 1, 2, or 3 to select the corresponding tape. F1 rewinds the tape. In addition to the rom images, you need the wave files with the music in the same directory as z26.
The files are named:
KVB1.WAV, KVB2.WAV, KVB3.WAV
Smurfs Save the Day:
KVS1.WAV, KVS2.WAV, KVS3.WAV
You can also play the games without the music, but it's much less
Turn off the sound in the Sound Menu.
z26 is built with M4 and GCC. On Windows we use MinGW/Msys.
Fonts were designed with CSEDIT by Matt Pritchard.
Documentation was made with SeaMonkey.
Eckhard Stolberg has made contributions to z26 that are too numerous
to count. He has been involved since the very early days and the high
quality emulation that z26 provides would certainly not have been
possible without his participation. The TIA and CPU engines in
the 3.0 version of z26 was written by Eckhard.
Brian Watson made the 32-bit version of z26 possible and laid the foundation for the GUI.
Paul Robson -- Wrote original A26.
Ron Fries -- Original TIA sound emulation.
Ettore Perazzoli -- 6502 undocumented instructions.
Andreas Boose -- Also 6502 undocumented instructions.
Wolfgang Lorentz -- 6502 diagnostics.
Bob Colbert -- Object wrapping.
Piero Cavina -- Multiple missiles.
Erik Mooney -- HMOVE blanks.
Kevin Horton -- Bankswitching and Quadrun voice.
Dan Boris -- Atari 2600 schematics.
Matt Pritchard -- Font design tools.
Matt Conte -- Quadrun voice.
John Dullea -- Fast elegant graphics and Pitfall II.
Bradford Mott -- Object positioning (weird HMOVE).
Chris Wilkson -- Pitfall II.
Lee Krueger -- Kid Vid support, rare carts, and documentation.
Thomas Jentzsch -- Trace mode, Kid Vid support and fast video routines.
Henning Mueller -- CompuMate.
Christian Bogey -- SECAM colors.
Oliver Achten -- PAL colors.
Andrew Davie -- Extended Tigervision bankswitch demos.
Paul Slocum -- Provided EF bankswitch demo.
Billy Eno -- Provided interleaved display demo.
Adam Wozniac -- Helped with TIA sound polynomials.
Matt Matthews -- Linux consulting.
Brian Watson -- Helped with Linux port, ASM-code, GUI framework.
James Wilkinson -- Helped with BeOS port.
Eckhard Stolberg -- Contributions too numerous to mention.
Thanks to everyone else who has helped with comments, suggestions, bug reports, information, supplies and testing:
Junky, Kevin White, The Boatwrights, Miguel Guzman Centeno, Peter, Jay C. Heil, Zoop, Rob Anderson, Zophar, Peter Vogels, Stephan, Xahji, Ricardo Martinez Garza, Stephano Camarri, Peter Betz, Piero Cavina (Oystron! Helped find multiple missile bug.), Nick S. Bensema, Erik Mooney, Glenn Saunders, Abraham Velazquez, Christian Schaefers (Z-Type), Freirias, Brian Deuel, Chris Platt, Israel Geron T., jose roberto rodrigues, Dan Meyer, Martin Schaefer, Ummagumma, Digitoxin, Michael Walden Jr. (The most elaborate suggestion list!), Gilamonster, Gerald Gorman, Francisco Athens, Lex Nesta, Ben, Gerald Gray, Jose Pedro, Tadd Underhill, Ejber Ozkan, Lord Mhath, Larry Scott, Brad Komgenick, Michael J. Mika, Ettore Perazzoli (VICE), Stephan Eder, Andreas Boose (VICE), David Gray, jimnav, Dr. Simone Zanella, Brad Thomas, Jeff Cockayne, Sam Miller, EmrldSword, justin martin, Justin Scott, Jason Berk, Luis Graterol, Ricardo Soto, Brian Smith, Sam Hard, Keith Merizalde, Nate Marigoni, Kurt Woloch, GreenImp, M. C. Silvius, Matthew Conte (Nofrendo), Jason Barisoff, Rick Vasquez, Marco Turconi, Kalik, Christopher Warren, Curt Vendel, Roberto Sidney Teixeira, raverpup, iCeFiRe, Chism, Sascha Reuter, Craig Tildesley, Michael Prentler, Cody B, Thom Rechak, Cam, Jason, Keith Weisshar, Robin Gravel, Thom Bone, Mrfriend, Edwin Helsloot, C J Biro, Michael Monson, Justin Rodriguez, Francesco Azzurri, Greg Bendokus, Bruce Clarke, John Dullea (PCAE), Tim Boston, Chris Ainsley, Ricardo Henrique Tabone, and Seth Kintigh.
And thanks to Len Shikowitz for *complaining* well beyond the call
of duty. Definitely "the most obstinate, yet sincere, tester." :)
At some point I stopped keeping the list of everyone who have sent me suggestions up to date. I apologize for that. But thanks to the folks who have continued to send in suggestions, even though they didn't make the list.