Introduction
=====================
Welcome to AtariXLbox, an emulator for the Atari 5200 game console as well as the Atari 400/800/XL/XE line of 8-bit computer systems. AtariXLbox is designed to run on your modded Xbox, allowing you to relive history all without the clutter and fuss of attaching your old Atari systems to your TV set.
Please note, this documentation will only focus on the Atari 5200 features of this emulator. Documentation for the 8-bit lines of computers will (hopefully) be along shortly.
Please also note that this documentation was taken from the Atari 2600 documentation page, and may contain some z26x specific references. Hey it's a wiki, hit the edit button and help out will ya?
=====================
Features
=====================
- Accurate emulation - Ported from Atari 800
- Loads cartridges, disk images, executables
- USB Keyboard support
- USB Mouse support
- Remappable button controls
- Multi-player support
- Full featured user interface for configuration and game selection
- Skinable emulator interface
- Built in mp3 player for listening to your own soundtrack while playing
- Netplay support
- Screenshot support (manual or timed interval auto-capture)
- Relax sharing support - Stream roms from your PC
- Cheat support
- Favorites list
- Resizable game screen
- Skin-able User Interface
- User definable save directory
- Take in-game screenshots and display them on the game selection list
- Graphics filters
- Record/Playback feature - record your gameplay in the emu and then
play it back again. Record up to 10 minutes of gameplay. - Autofire capabilities
- One-button combos (define a series of emulator commands to be played
back when you press a user-definable Xbox controller combination.)
(E.g. Press RTrigger+LTrigger to execute the command string
A,B,A,B,Up,Down,Left,Right)
=====================
Requirements
=====================
If you are not familiar with, or do not have any of the following required items, stop now. This document will not cover how to perform or obtain any of the required items. There are many tutorials available for learning and obtaining things you'll need, come back after you've learned a bit more.
- a PC (running windows or linux, doesn't matter)
- xbox capable of running unsigned code (aka, a modded xbox)
- non Microsoft dashboard installed and operational on your xbox. (evox, xbmc, avalaunch, etc)
- FTP access to your xbox. Most use FlashFXP as their preferred FTP client, but any FTP client program will do.
- at least 1 rom file for the atari 5200. More rom files will increase your satisfaction of using the emulator.
=====================
Installation and quick start
=====================
This document will suggest and refer to only 1 installation location of the emulator. Until you are familiar enough to stray from the reccomended settings, it is suggested to follow the provided examples exactly.
atariXLbox is intended to work "right out of the box" in that you only need to copy the emulator files and a few roms to your xbox to start playing.
You will not need to change any of the configuration files unless you want to do some advanced features.
Here's the basic steps for installing a default setup:
- Decompress the emulator package to an empty, temporary folder on your PC. The emulator package may be compressed with any number of compression schemes, this document will not go into working with archives. Verify that the files default.xbe, atariXLbox.ini, and subfolders "emuskins" and "ataridisks" and "atariroms" exist in your temporary directory. Additional files and folders may also appear, depending on the release package version.
- Boot your xbox into your non Microsoft dashboard and log into your xbox with your FTP client.
- On the F: drive, create the following folder f:\emulators
- In the f:\emulators folder, make a subfolder named atari 5200
- FTP the contents of the temporary folder on your PC to the f:\emulators\atari 5200
- Verify that all files and folders were copied to the xbox.
- Locate at least 1 rom file for the atari 5200 and FTP it into f:\emulators\atari 5200\atariroms
uploading more roms at this point is optional, but highly reccomended.
If you don't have an F: drive on your machine, feel free to use the E: drive instead!
Notes about uploading ROM files:
- The ROM files may be uncompressed or ZIPed only. ZIP is suggested to save space and prevent corrupt ROMs.
This emulator supports ZIP compression only - that means no .RAR files or .7z files! - ROM filenames have a maximum character length of 42. This is an xbox limitation and cannot be changed. There are also several characters in filenames that are invalid. Upload only ROMs that are less than 42 characters in filename length and contain no unusual characters. Your FTP client will probabably report an error if it cannot copy the file to the xbox.
Most dashboards have the path f:\emulators built into the scanning portion of their game launch menus.
atariXLBox might show up on your dashboard's menu the next time you reboot your xbox.
If it does not, you'll have to modify your dashboard's configuration to get it to scan the f:\emulators directory so the emulator shows up in your dashboard.
Because there are so many different dashboards and revisions of them, it would be impossible to list detailed instructions for each.
Once the emulator appears in your dashboard, launch it simply by highlighting it and press the A button on the controller.
Once the emulator has launched, you should see a menu similar to the following: (this screenshot is slightly out of date)
The first step is setting up the emulator to work properly with Atari 5200 games, which means the button definitions must be set so that the Xbox controller emulates the Atari 5200 controller.
Using the DPAD or triggers on the controller, highlight the "configuration" option and press A.
Press A on "Configure Controllers"
Press A on "Controller 1"
Press A on "Change Emulator Definitions"
You'll see a very long list of "Emu Button" on the left side of the screen and the different settings on the right.
The 5200 had a Start, Pause and Reset button as well as a numeric keypad in which the # and * buttons which were often used to select the number of players and game difficulty.
* Emu Button 7: Change to "4" (5200 Start button)
* Emu Button 8: Change to ";" (5200 # button)
* Emu Button 9: Change to "/" (5200 * button)
* Emu Button 10: Change to "V" (5200 Pause Button)
When you're finished, press the B button.
If you'd like to use the Pause feature of the atari 5200, we need to map that button to the controller.
Select "Change Joypad Mappings" and press A.
Select "Change Game Mappings" and press A.
Select "Emu10(V)" and press A. A short popup window will appear to allow you to press the button on the xbox that you'd like to use for the pause button. Use a button that isn't used often and isn't likely to get accidentally pushed. I suggest the Black or White buttons.
When you're finished, press the B button to back out of all the menus.
A warning screen will appar, asking you if you want to set these settings globally. Select Yes. This will set the emulator to use the new button mappings on all future games., saving you from having to re-configure them all individually.
Keep pressing B until you're back at the main menu.
Using the DPAD or triggers on the controller, highlight the "select game" option and press A.
You should see a listing of all the ROM files that you previously uploaded into your f:\emulators\atari 5200\atariroms folder.
You can use the direction pad or the triggers to scroll through the list to select the ROM you wish to play. 
Press the A button to select the ROM you want to run.
The first time the selected ROM is launched, atariXLbox will take you to the configuration menu so that the emulator can learn a little bit about how you want to run this particular ROM. Since atariXLBox can emulate so many different machines with many different media types, this configuration screen is rather large. Don't worry, you only need to set a few options, and the next time you run this ROM, it'll remember all the options you have set.
Here's the menu you'll see. You will need to change the items listed in RED.
Media Selected is Disk
Machine Type - Atari 800XL
Cart Type - None
Pokey Type - New
Video Mode - NTSC
OS to use for Atari 800 - A
Enable 0xc000 RAM in Atari 800 - No
Atari BASIC ROM is Off
Patch SIO Routine in OS - Yes
Patch for H: Devices - Yes
H: Device is Read-Only - No
RTime Emulation Enabled - No
Mouse Emulation - None
Mouse Speed - 3
Mouse Port - 1
Configure Controllers
Set Graphics Filter
Using the DPAD controller and the A button, select "Media Selected is" option and press A until it reads "Media Selected is Cartridge"
Change Machine Type to "Atari 5200"
Change Pokey Type to "Old"
The Cartridge Type must be set to match the ROM you're attempting to run. When you Press A on this option, another screen will display with all the valid ROM types and sizes. There are LOTS of them. The emulator will help you select the correct type by placing -> <- arrows around the valid types. Try any of them that are "5200 cartirdge" types.
I suggest you start with ROMs released by Atari, such as Congo Bongo, Asteroids, Battlezone, or Joust, which are configured as "two chip 16 kb 5200 cartridiges"
Once the options on the screen are configured properly, press the B button to launch the game.
If you ever need to change any of these options again, from the game select scren, press the X button instead of the A button and you will be brought back to the configuration menu.
More details of the "Select Game" menu are later in this document.
The emulator should then launch the ROM you selected.
To return back to the emulator, click the right thumbstick down.
Have fun!
========================================
Menus, configuration, and advanced features
========================================
=====================
In Game Options
=====================
While playing the emulated game, a few options are available via special button presses:
- Right thumbstick click - in game options, exit rom menu
- Left Trigger+back - take screenshot
- Music Control Menu - press LTHUMB anywhere to bring up the music control menu.
- Right thumbstick up/down controls volume of game music from ROM
- Right thumbstick left/right controls volume of background music (mp3s)
===============
Emulator Menu Navigation
===============
Select menu options with the DPAD or with R/LTrigger. The speed of R/LTrigger movements can be controlled by :
Configuration -> Menu Scroll Speed
There are some places where you can enter or change values. This can usually be done in a variety of ways include DPAD Left/Right,
R/L Trigger, and L/R Thumb. Try all of them if the values are changing too slowly.
"A" selects the highlighted choice. "B" cancels/returns.
"Y" from a file-select list will go up one directory.
===============
Emulator Menus - Select Game From Favorites
===============
This option allows you to group your favorite, most played games together into a smaller menu than browsing your entire ROM collection.
To add a game to your favorites list, go to the "select game" menu, locate the ROM in the list of available ROMs, and press the WHITE button on the controller to add it to the favorites list. Now you can browse your favorites list to quickly get to your games. To remove a game from the favorites list, go back to the select game menu and press the WHITE button again. If you have a screenshot for the highlighted ROM, it will show up on the screen.
You can cycle through multiple screenshots for the same game by pressing the LEFT THUMBSTICK left and right.
(more on screenshots later in this document)
===============
Emulator Menus - Select Game
===============
This is the main game selector. This menu will list all the available ROMs in your ROM folder.
If you have a screenshot for the highlighted ROM, it will show up on the screen.
(more on screenshots later in this document)
The following buttons are available in this menu:
DPAD / LTRIGGER / RTRIGGER - scroll through ROM list
A - launch this ROM
X - Configure ROM
BLACK - Delete save files for selected ROM
WHITE - Adds/Removes selection as a favorite
LEFT THUMBSTICK - move it left or right to cycle through multiple screenshots for this ROM.
The 1st time the selected ROM is launched, AtariXLBox will take you to the configuration menu so that the emulator can learn a little bit about how you want to run this particular ROM. You can set the difficulty level, controller type and other options here. Once the options on the screen are configured to your liking, press the B button to launch the emulator. This small configuration menu will not appear the next time you run this ROM.
===============
Emulator Menus - Configuration
===============
The configuration menu allows you to tweak the setup for several options:
- Game Controllers
- Video and skin configuration
- General settings (startup screen, menu scroll speed, etc)
- Networking and Netplay support
Many aspects of AtariXLBox's configuration can be changed either through the user interface using the controller, or by editing the AtariXLBox.ini file located in the root directory of the emulator itself. File configuration will be discussed later in this document.
===============
Emulator Menus - Configuration - Game controllers
===============
In this menu, you can change the default button mappings for each of the 4 xbox controllers that may be attached to your xbox. To make multiple controller configuration easier, you can also copy the settings from one controller to another one.
Inside each controller's menu option, you'll see another submenu which has the following options:
- Change Emulator Definitions
- Change Joypad Mappings
- Change autofire config
- Change combo config
- Change Analog sensitivity
===============
Emulator Menus - Configuration - Game controllers - Change Emulator Definitions
===============
There are 32 general/all-purpose emulator "buttons" or actions. Each of these buttons can be assigned a specific emulator action. For example, Emu Button 1 can be A, or B, or DPad Down, etc. These "emu buttons" can then be assigned XBox triggers. For example, Emu Button 1 (which you have mapped to, for example, A) can be triggered by XBox controller button B. The default button mappings should provide enough information on how the system works and how it can be used.
This menu allows you to map different buttons on the xbox controller to different features inside the emulator.
You'll see a long list of "Emu Button #" on the left side of the screen, which number from 1 to 32. These are buttons/controls on the xbox controller or remote controller.
On the right side of the screen are the buttons on the Atari 5200 controller uses.
The following is a list of "Emu Button #" values which correspond to Xbox controller buttons.
Emu Button 1 - A
Emu Button 2 - DPAD up
Emu Button 3 - DPAD down
Emu Button 4 - DPAD left
Emu Button 5 - DPAD right
Emu Button 6 - B
Emu Button 7 - X
Emu Button 8 - Start
Emu Button 9 - Back
Emu Button 10 - White
Emu Button 11- Black
Emu Button 12-32 - undefined.
Change any of the button settings by highlighting it with the DPAD controller and pressing the A button.
A popup menu will appear that allows you to select a new button to assign. Press A to redifne the button, press B to back out of this menu.
===============
Emulator Menus - Configuration - Game controllers - Change Game Mappings
===============
This menu is extremely similar to the emulator mappings menu, so similar in fact that I cannot think of a reason there are 2 menus for these same options.
===============
Emulator Menus - Configuration - Game controllers - Change UI Mappings
===============
This menu allows you to change the way the controller effects the way the emulator user interface itself works.
You can also change the buton combos for screenshots, save states, etc.
To redifine an action, highlight the desired feature and press the A button. A popup window will appear which allows you to perform any key/stick combination you'd like. If no changes are detected after 5 seconds, it will default back to the previous setting.
===============
Emulator Menus - Configuration - Game controllers - Change Autofire settings
===============
Each "Emu Button" can be set up for autofiring. Simply set the autofire variable to a non-zero value. This value indicates how long the emulator should wait before releasing and re-pressing the button. A value of 1might be too fast to register on some games. I suggest setting it to a number like 5 first and them fine-tuning it.
This option appears to be slightly broken in AtariXLBox. Values for autofire delays are not saved after launching a ROM, yet this feature can be enabled individually from the configuration menu launched after running a ROM and going to the in game options menu.
===============
Emulator Menus - Configuration - Game controllers - Change Combo Config
===============
This menu allows you to set up combination moves based on a single button press on the xbox controller. For example, if a secret fighting move of up-down-up-down-left-left-right creates a special sequence of events in a particular game, you can shortcut this sequence to launch whenever the Y button is pressed.
Up to 10 different combos can be defined. Pick the combo you'd like to modify, press the A buton. From there, you'll be asked to setup the button(s) to launch the combo, the combo moves itself, and the amount of delay between each of the moves in the combo.
Setting up a combo can be kind of tricky because you need to know exactly what the game expects to have happen on the joypads to execute the special
move. For example, let's say that we want to map a standard move that is described like this :
D, DR, R, A
D = Down, DR = Down+Right, R = Right, A = A button
First, set the delay to a number like 2 or 3. Then set up the moves. In this case, any (or none) of the following might work:
Down
Down+Right
Right
Right+A
Right
OR
Down
Down+Right
Right+A
OR
Down
Down+Right
Right
Right+A
Right+A
Right+A
You will probably need to fine-tune each combo move before it works, but you'll soon get the hang of it.
===============
Emulator Menus - Configuration - Game controllers - Change Analog Sensitivity
===============
This probably is supposed to help with games like breakout, which use a paddle controller mapped to the left and right thumbsticks. It doesn't appear to change anything whatsoever.

Relax Network Sharing
=====================
AtariXLBox supports streaming your ROM files from a PC located on your network.
See this tutorial for setting up relax sharing.
============================
Note on Samba/NetBIOS Shares
============================
AtariXLBox does not seem to work with SMB shares. People have tried and failed to get it working. If you're lucky enough to get it to work, please edit this section!
There are two INI file settings relating to Samba/NetBIOS sharing and they both
reside in the {GENERAL} section of AtariXLBox.INI:
smbshare=smb://username:password@workgroup:ip_address/computername/sharename
smb_nameserver=192.168.0.1
The smbshare parameter accepts many different formats. Here are the most
common:
smbshare=smb://username:password@workgroup/computername/sharename
smbshare=smb://username:password@workgroup:ip_address/computername/sharename
smbshare=smb://username:password@computername/sharename
smbshare=smb://username:password@computername:ip_address/sharename
smbshare=smb://workgroup/computername/sharename
smbshare=smb://workgroup:ip_address/computername/sharename
smbshare=smb://computername/sharename
smbshare=smb://computername:ip_address/sharename
Please try all of the above combinations before deciding it does not work.
Also be aware that some people have to select their SMB drive in AtariXLBox a few
times before any files appear.
If it's still not working, then set the nameserver equal to the IP address of
the computer you are trying to reach or set it equal to your NetBIOS name server.
(If you don't know what a NetBIOS name server is, then just set it to the
IP address of the computer you are trying to reach.)
Also remember that when you make changes to AtariXLBox.INI, you have to do a
"Force Reload of D:\*.INI" from the Configuration Menu or else the changes
you made to AtariXLBox.INI will not be loaded.
=============
Configuration
=============
Almost everything can be changed from the configuration menu. Here are the
things that require manual modifications to the AtariXLBox.INI file included in the package:
Samba share name - goes in the {GENERAL} section.
Example:
smbshare=SMB://USERNAME:PASSWORD@COMPUTERNAME/SHARENAME
Screenshot directory - default is E:\SCREENSHOTS - goes in {GENERAL} section
Example:
screenshot_dir=E:\SCREENSHOTS
Skin directory - where skins can be found. Default is D:\EMUSKINS - goes in
{GENERAL} section. Example:
skin_dir=D:\EMUSKINS
Save directory - this is where you want all your saved games to be stored.
Default is E:\SAVES\AtariXLBox. Goes in {GENERAL} section.
Example:
save_dir=E:\SAVES\AtariXLBox
The default ROM directory INI setting goes in the {GENERAL} section as follows:
Example:
rom_dir=d:\a26roms
If you change any of the above items, then you must upload the new AtariXLBox.INI
file to your XBox, load up AtariXLBox, then select "Force Reload D:\\*.ini Settings" from the Configuration menu. Please note that this will overwrite
any of the setting changes you might have made after you first loaded AtariXLBox.
=======
Netplay
=======
In order to netplay with someone, follow these steps:
- Go to the Configuration menu
- Select Netplay options
- Turn netplay on
- Add a server if you are going to connect to someone else
- Select the game to play
- If netplay is on, it will ask you if you want to be the client or the server. One person is the client, and the other is the server.
If you are the server, the game will wait until the client has joined. If you are the client, make sure the server is ready to accept
your connection before continuing.
- When server starts netplay, you can select a netplay skip value.
This number specifies how often it should skip checking for network data. The higher the number, the less often it checks for network data, but the
result will be a less responsive controller.
- Once a connection has been made, it should work fine.
NOTE : You both MUST be using the *EXACT* same game.
I would be *extremely* surprised if the PAL version of a game
worked via netplay with an NTSC version of the same game.
The server player is always player 1. The client player is always player 2.
I don't know how well netplay will work across real networks. Two xbox's on the same intranet work very well, though.
If your connection is lost during gameplay, just wait 30 seconds and you can return to the game select menu. (Or you can always reboot...)
=====
SKINS
=====
Instructions for making a new skin:
- Create a new directory off of your SKINS directory (default skins directory
is D:\EMUSKINS
- Place your sound/font/graphic media files in this new directory
- Load AtariXLBox
- "Select Skin" from the main menu and select your new directory.
- Select Configuration
- select Configure Skin
- Use the menus to select your new media files and change your settings
- When you are satisfied with what you have, go back to the main menu.
- Select "Configuration"
- Select "Overwrite D:\*.ini and D:\emuskins\\<skin>\\settings.ini"
This will write the skin settings in your skin directory (if your skin directory is on the hard drive.)
- You're done! You can package up the directory and share it with your friends.
If you wish to use sprites in your new skin, then read the following:
- Create a subdirectory off of your new skin directory called SPRITES
e.g. D:\EMUSKINS\NEWSKIN\SPRITES
- In this new SPRITES directory create a 0-based numeric directory for each sprite you wish to make. This means that if you have 4 sprites
you wish to load, the directory names *must* be called 0, 1, 2, and 3.
Do not call them 1, 2, 3, and 4.
Do not call them 0, 3, 5, 6.
Do not call them SPRITE1, SPRITE2, SPRITE3, SPRITE4.
- Inside each of these new directories, you must place the sprite frames.
Each frame is represented by a BMP, PNG, or JPG file. The order of the frames is given by the filenames. These filenames must also be named
with 0-based numbers. For example, 0.png, 1.png, 2.png. Look at the sprites directory of the included default skin to see how it works.
- Do not skip numbers when naming sprite directories or sprite frame
filenames. A list of directories called 0,1,2,5,7 is *INVALID*.
Similarly, a list of files called 0.png, 1.png, 4.png, 5.png is also
*INVALID*.
Also be aware of memory constraints. Let's say you have a frame of a sprite called 0.png. This picture file is 90 pixels wide and 130 pixels high.
This will get rounded up to a 256x256 pixel 32bit picture. This means that it will consume 256x256x4 bytes (256KB) of memory. If your sprite has
10 frames of animation, that's around 2.5MB of memory. Keep this in mind before you make ultra-smooth moving sprites with hundreds of frames of
animation.
You can check your available memory by going to Configuration -> Configure Skin
-> Show Available Memory
If you make/configure a skin and AtariXLBox does not load the next time you play it, then you need to delete the E:\SAVES\AtariXLBox\AtariXLBox.INI and
E:\SAVES\AtariXLBox\SKIN_SETTINGS.INI files. AtariXLBox should work fine again, but you'll have to reconfigure your skin. The problem was probably
that one of your resources (like a WAV or background file) was specified incorrectly or was never changed from the old skin. Carefully look at the
E:\SAVES\AtariXLBox\SKIN_SETTINGS.INI file to make sure that all filenames exist in your skin directory.
================
MP3/M3U Playback
================
Simply select the MP3 or M3U file from the game-selection screen.
The M3U file can also just be a regular file with one songfile per line.
For example:
d:\songs\song1.mp3
e:\moresongs\song2.mp3
smb:\mp3s\song3.mp3
If you are making a playlist of songs on your SMB share, then please note the format:
smb:\mp3s\song3.mp3
The smb:\ tells AtariXLBox to read from your SMB shared directory. Do not put the SMB share definition in the filename.
----------SMB shared filenames are case sensitive!---------
==============
No Save States
==============
The state-saving functionality is currently not implemented in Z26.
==================================================
Cheating System - How To Make Your Own Cheat Codes
==================================================
Special Note for Z26 - In many Atari 2600 games, certain important values (like the number of lives you have, etc) are stored as a nibble value. A nibble is half of a byte. For example, in Asteroids your number of lives and the current direction you are pointing are stored in the same byte. (High nibble is the number of lives and the low nibble is the direction.)
Just about every single port I've released has this feature, and I occasionally hear people asking "how does it work?" This is easiest to
explain by example:
1) Start playing a game.
2) Go to Options Menu and select "Start Search for Cheat Code"
3) Go back to game and lose a life
4) Go to Options Menu and select "Continue Search For Cheat Code"
5) Select "Search For Values Less Than Before" because when you first selected "Start Search For Cheat Codes" you had one more life than you do now. You will see the number of matches go down.
6) If the number of matches is greater than 10, then perform actions 3, 4 and 5 continually until the number of matches is less than 10.
If you run out of lives, then just start playing the game again.
(Do not exit the emulator and select the game again - just start another game from within the emulator.) Now you will have a full stock of lives,
which is *more* than the last time you checked your values. So when you continue searching, you'll want to select "Search For Values Greater Than Before." Then go through steps 3-5 over and over until you have less than 10 matches.
7) Now that you have less than 10 matches, you can add the codes to your list. If the search narrowed the list down to 1 possible match, it
will automatically add it to your list. Now you can "List Cheat Codes" and selectively turn on/off the cheat codes to try them out and see
which on is the right one.
Alternately, you can use the "Search For An Exact Value" option if you already know the number you wish to change.
Example 1 - Pitfall Unlimited Lives cheat
1) start up a new game of pitfall (1982). I'm using the NTSC version. Run to the right and fall down the first hole to the lower level.
2) Run to the left and jump over the scorpion. You should appear on a screen with nothing but a snake on the top right. This is an excellent place to experiment with variables in memory because there are so few things happening on the screen. Remember, everything that moves on the screen has to be controlled by some variable in memory. We want to see only what happens when we lose a life, not what happens when a vine moves or crocodiles open their mouths or logs roll. Reducing the noise of the stuff we don't care about is very helpful in finding the exact byte in memory that needs to do the job we're trying to accomplish.
3) Stand next to the snake and press the right thumbstick. Navigate to the cheat codes menu, and select start search for cheat codes.
4) return to the game and run into the snake, losing 1 life. After the music plays and a new player drops down, press the right thumbstick again and select continue search for cheat codes from the cheat codes menu.
5) The current number of matches may be as high as 128. That's ok. Select search for values Less than before. Since we lost 1 life, we should see some variable in memory that is less than before.
6) The current number of matches should drop significantly. Mine now says 8. You may have slightly different results depending on when you pressed the thumbstick to enter the in game menu. Provided the number is 10 or less, add them all to the cheat list. If your number of matches is greater than 10, go lose another life in the game, return to the cheat menu and select continue searching. Search for values Less than before again, this time the number should be less than 10.
7) From the list cheat codes menu, enable 1/2 of the codes in the list by highlighting each one and pressing the A button twice.
Here's a list of the cheat codes I have:
Adr: 0x0000 Val 160
Adr: 0x0015 Val 208
Adr: 0x0018 Val 7
Adr: 0x0052 Val 9
Adr: 0x0053 Val 180
Adr: 0x0059 Val 69
Adr: 0x005b Val 66
Adr: 0x0061 Val 114
I enabled the first 4 in the above list.
8) return to the game and see what happens.
The clock is still counting down, but when I run into the snake now, I don't lose a life!
OK, we've hit the right byte, but we've got a few more variables being set than just the lives remaining. We should narrow our cheat list down til we find the bare minimum that we need.
9) go back into the cheat list and disable half of the list again. I left only the top 2 in my list.
Well, only 2 cheat codes are enabled, and I'm still not losing a life when I run into the snake. Hopefully yours is working the same way.
10) go back into the cheat code list and disable 1/2 of the remaining cheats. I left only the top most cheat enabled, the one at address 0.
11) return to the game again. Still not losing a life when I run into the snake. We've located the 1 byte in memory that controls the number of lives remaining.
Let's clean things up a bit. Go back into the cheat list and delete all the codes that are disabled. We no longer need them for our unlimited lives cheat. Feel free to enter a description for the last remainging cheat code using the "enter description" menu option.
Now let's figure out how this cheat works. Select 'edit code' from the cheat code manager menu and a large numeric keyboard is displayed. On the top of the screen it says "3000000000A0' Use the right trigger to move over to the A in the 12 digit number. Let's change that number to 7 by moving the dpad around on the keyboard and select the number 7 with the A button. Once you've changed the value, press the Start button to accept, and then back out and return to the game. The number of lives displayed on the top left of the screen has now changed from 2 hashes into a solid block. We still aren't losing any lives if we bump into the snake. Let's change that cheat code again from 7 to a C. If you look closely when you return to the game, you'll notice the block of lives left move slightly to the left. Now let's go crazy and change the value from C back to A, but this time change the digit to the right of the A to A as well. The full cheat code should now look like this: 3000000000AA.
Back in game, we can now see that we've got 4 guys remaining! Sweet!
We started out with the value A, then changed it to 7, then to C, then to AA. If we look at these values in binary, we'll see the following pattern emerge:
0A=00001010
07=00000111
0C=00001100
AA=10101010
You can now see that for every bit that is a 1 in the cheat code value, a hash mark appears in our lives left. When we had values with 2 or more bits as 1 next to each other, they appeared as a block on the screen. The value of AA gives a little space between each of the hash marks on the screen, and looks just right.
Now try turning off the cheat code and losing some lives. You'll see that as each life is lost, 1 hash mark is removed from the screen. After losing all of them, the game is over. The cheat is working perfectly.
Download this cheat: Pitfall_Atari2600_cheat.zip
If you download the above cheat, you will need to unzip it and FTP the .cht file into the SAVES directory of your atari 2600 emulator. Note that the filename MUST MATCH the name of the pitfall! ROM that you're using. If your ROM files are not named with goodtools (why aren't they?) you'll need to rename this file to match. Your saves directory probably already has a pitfall!.key and .stg file-name the .cht file the same name as the .key/.stg file.
Example 2 - Asteroids unlimited lives.
1) Start up a game of asteroids and then pop into the cheat menu. Don't bother shooting any of the asteroids.
2) Go into the cheat code menu and start the search for cheats. Return to the game and lose 1 life.
3) Return to the cheat code menu and search for values less than before. I got 19 hits, which is too many to add to the list.
4) return to the game and lose another life.
5) return tot he cheat code menu and continue search for cheat codes again.
6) again search for values less than before. I now get 4 values. Add them all to the list.
Here are the values I got:
Adr: 0x000E, value 79
Adr: 0x003C, value 48
Adr: 0x0079, value 60
Adr: 0x007B, value 65
7) go into the cheat code list and enable 1/2 of the codes. I enabled the bottom 2.
After losing a life, the counter counted down. Not good!
8) go back in and enable the other 1/2 of the items in your list. I enabled the top 2 and disabled the bottom 2.
Returning to the game now, it isn't running very well. The game won't start. Uh oh. Go into the cheat code menu again and disable 1 of the 2 cheats. I disabled the one at address 0E.
The game is now playing correctly, but I can't seem to move. As the asteroids close in and kill me, I see that the lives are not counting down anymore. We've got the right byte, but the value is reseting our direction back to pointing the ship straight up.
Clean up the remaining cheats until this is the only one in the list:
300000003C 0030 Adr:0x003C val 48.
After changing the last two digits from 30 to 90, and returning to the game, I saw that I have 9 lives left. The upper 4 bits of this byte are controlling the number of lives remaining in the game. The lower 4 bits of this byte are controlling the direction the player is pointing. a value of 0 means straight up.
If I change the 90 into 94, I now have 9 lives and my ship is pointing to the left.
We need to somehow change the value of the upper nibble (4 bits) and not change the value of he lower nibble.
Scroll down and check out the section on Advanced Cheat Code Usage to get an idea of what we can do.
Go edit this cheat code. The top of the screen has that 12 digit number. The 30 on the left means from the table below that it sets the 8-bit value (0-255) pointed to by the cheat code address to the cheat code value. We only want to change a 4 bit value. If we write the entire 8 bit value, our ship will always be stuck pointing up.
Since there is no cheat code type for writing only 4 bits, we have to get a little more creative.
Take a look at cheat code type E0.
It says:
"E0 - Means only execute the next code in the list if the 8-bit value pointed to by the cheat code address is equal to the cheat code value"
So, we can do a conditional cheat code here. IF we see a certain value, execute the next cheat code to force a new value.
Let's add a new cheat code. Highlight your existing cheat code and press A. From the manage menu, press A on "Add new code" You'll get the same numeric keypad entry interface as editing an existing cheat. Enter the following value:
E000003C0020
This means cheat code type E0, which will look at address 00003C. When the value in that address is 20, go on to the next cheatcode.
Press Start to save the cheat and enable it. From the list, make sure that our new cheatcode, the E0 one, is above the previous one.
Now our cheatcodes do the following:
Everytime the value at address 00003C is a 20, write the value in address 00003C to a 30.
Which means:
Anytime we only have 2 lives left, and the ship is pointing up, give us 3 lives, and keep the ship pointing in that same direction.
It just so happens that everytime a new life starts out on the screen, the direction is pointing up, so even though the cheat is jamming the value of lives and the direction of the ship, it's only doing it when we lose a life. Once the value is updated, the E0 cheatcode type keeps the lives+direction value from being jammed into the game continuously. This gives us unlimited lives and the ability to move the ship around on the screen. Perfect!
Download this cheatcode: Asteroids_atari2600_cheat.zip
See pitfall note above about file names.
Advanced Cheat Code Usage:
Cheat codes have the following format:
TT AAAAAA VVVV
TT = Type
AAAAAA = Address
VVVV = Value
You can hand-edit the cheat codes you've created. Go to the Cheat Code list, select a code, and select Edit. Let's say you've already created a cheat code
that keeps your hit points at 25. The last four hex digits of your code will be 0019 (which is hexidecimal for 25.) You can change the last two digits to, for
example, FF which will give you 255 hit points instead of 25. More sophisticated codes can be made by altering the Type.
Type Table:
80 - Means set the 16-bit value (0-65535) pointed to by the cheat code address to the cheat code value.
30 - Means set the 8-bit value (0-255) pointed to by the cheat code address to the cheat code value.
10 - Means increase the 16-bit value pointed to by the cheat code address by the cheat code value.
11 - Means decrease the 16-bit value pointed to by the cheat code address by the cheat code value.
20 - Means increase the 8-bit value pointed to by the cheat code address by the cheat code value.
21 - Means decrease the 8-bit value pointed to by the cheat code address by the cheat code value.
D0 - Means only execute the next code in the list if the 16-bit value pointed to by the cheat code address is equal to the cheat code value
D1 - Means only execute the next code in the list if the 16-bit value pointed to by the cheat code address is not equal to the cheat code value
D2 - Means only execute the next code in the list if the 16-bit value pointed to by the cheat code address is less than the cheat code value
D3 - Means only execute the next code in the list if the 16-bit value pointed to by the cheat code address is greater than the cheat code value
E0 - Means only execute the next code in the list if the 8-bit value pointed to by the cheat code address is equal to the cheat code value
E1 - Means only execute the next code in the list if the 8-bit value pointed to by the cheat code address is not equal to the cheat code value
E2 - Means only execute the next code in the list if the 8-bit value pointed to by the cheat code address is less than the cheat code value
E3 - Means only execute the next code in the list if the 8-bit value pointed to by the cheat code address is greater than the cheat code value
If you are familiar with cheat codes, you'll notice that these are standard Gameshark types. With enough experience you could make some seriously
interesting codes with this system.
For example, I played around with Super Mario Bros (NES) and found out that address 0007EE stores the number of coins and address 0007FA is the
one's digit in the timer. Here are two codes:
E0 0007FA 03
20 0007EE 01
Those codes mean that while the ones timer digit is equal to three, increase the number of coins by one. You won't see the coins updated on the overhead
display in the game, but if you start a game, wait until the timer one's digit is a three and then collect a coin, you'll see that your coin value
is actually much higher than one, now. Fun useless stuff.
==================================================
Command-Line/Auto-Launching and Return to Launcher
==================================================
This emulator supports command line launching, but it requires a dashboard that also supports passing command line parameters to the emulator. Most dashboards do not support this feature.
==============
Screenshots
==============
Screenshots make a wonderful addition to the game select menus by allowing you to see what game you're about to launch. Often with large collections of ROMs, it's easier to identify the screenshot of the game in action than it is to remember the name of the ROM.
You can take screenshots during gameplay by using the controller hotkey combination as described above in "In Game Options" section, or you can click the right thumbstick and, select "Game Options" from the popup menu, and select "take screenshot"
The screenshot will be automatically numbered and added to the screenshot folder on the xbox hard drive as a standard PNG graphics file.
Here's how the screenshots are stored:
f:\emulators\atari 2600\screenshots\$name of rom$\0001.png
Each succsessive screenshot taken will be numbered 0002.png, 0003.png upward.
The $name of rom$ means that whatever ROM file you're currently running is the name of the folder used to store the screenshots in.
The xbox has a file length limitation of 42 characters, and several characters such as commas are not allowed. AtariXLBox uses a 37 character filename limit, so any rom name longer than 37 characters will be truncated when the $name of rom$ folder is created.
When in the game select menus, pressing the RIGHT THUMBSTICK left and right will cycle through any additional screenshots you have in the $name of rom$ folder. An example of how this can be useful is sometimes it is nice to have a title screenshot, an action screenshot and perhaps a box cover scan or media scan. Name the title screenshot 0001.png, the action screenshot 0002.png and FTP in a box cover scan and name it 0003.png and then you can see all the images while selecting the game from the select menu.
Screenshots may also be downloaded in bundles directly from this site: www.screenshotarchive.com
The screenshots from this site are named using goodtools naming convention, which will have to be renamed again in order to upload them to the xbox hard drive. A utility to automatically rename and create $name of rom$ folders can be found here.
Notes about screenshots and streaming ROMs from SMB/Relax:
- It is quite possible that if you are streaming ROMs from your PC, the $name of rom$ folder on the xbox hard drive may be named incorrectly, as the streamed ROM from your PC does not have the same filename limits or chatacter limits as you xbox does. If you take a screenshot and it does not show up in the game select menu, chances are the ROM has a filename character that is invalid for the xbox. You will have to rename your streamed ROM name and the $name of rom$ folder in f:\emulators\atari 2600\screenshots to match in order for the screenshot to show up.
- If the 37th character of the ROM name just happens to be a space character, the emulator will happily create a folder with a space at the end and put 0001.png into it. A folder name with a space at the end is an *invalid* name in windows. Thus, if you ever wish to FTP the screenshot directory off the xbox hard drive to your PC hard drive, all of these folders will be inaccessable on your PC!