Please do not post a support request without first reading and following the advice in

lr-atari800, 5200, artifacting, BASIC, and other guidance


    High resolution graphics mode on Atari 8 bits was a one-color, two luminance mode. You could have one color for the background, and the same color at a different brightness for the pixels drawn.

    However, similar to the Apple II, the Atari supported what is called artifacting. This is a literal "artifact," a graphical glitch, caused by the way the chroma circuits in the original hardware worked. There are some great explanations of why and how it works on AtariAge and similar forums, but suffice it to say:

    Draw one white pixel in an even column next to an empty pixel in an odd column, and it'd come out as color 1.

    Draw one white pixel in an odd column next to an empty pixel in an even column, and it'd come out as color 2.

    Draw two white pixels next to each other, and they'd come out as the true color.

    Draw specific sorts of dithered patterns, and pull tricks with background colors (since the artifact colors blended), and you could get even more colors.

    BUT -- this only worked this way on NTSC. On PAL, the chroma logic is different. There are some PAL artifacts, but by and large, artifacting this way doesn't work on PAL.

    Bottom line? You may have seen a lot of Atari 8 bit games that look like this screenshot from


    But on an NTSC screen on actual hardware, it likely looks like this image from MobyGames:

    The list of games that uses artifacting to get colors is HUGE and includes classics like Lode Runner, Flight Simulator II, the Ultima series, and more.


    lr-atari800 defaults to PAL. Which is why the Internet is full of images like the black & white first one, rather than color ones like the second one. These are all generated on emulators set to PAL or with artifacting turned off, by people who have never seen the games on actual hardware.

    Now, there are PAL games that were created in Europe and therefore assumed there wasn't any artifacting. Two good examples are 180, the darts game, and Head Over Heels.

    Here's 180 without artifacting on, the way it was meant to be:

    And with it on, which is much worse:

    Technically, to get the right version, we should also be in PAL. Here's Head Over Heels in NTSC with artifacting in the emu:


    Here it is in NTSC with no artifacting:

    And here it is in PAL with accurate PAL blending turned on:


    Note the different aspect ratio. If you, like me, have used overlays and a custom viewport size, you won't see an aspect ratio difference, most likely.

    So, not only do we have two different video systems to worry about, but games coded for one will tend to look wrong on the other. The first thing to do is set your lr-atari800 RGUI option to NTSC; the vast majority of well-known games that use this monochrome high-res graphics mode are NTSC games, not PAL games. Just like how BASIC is usually noted in the filename, PAL is also usually noted in the filename, so you can find PAL games and save options just like you did for BASIC games, because PAL vs NTSC is an RGUI option. EDIT: I recommend not doing this, and using the script below instead.

    But here's the bad news.


    The chroma circuit on the Atari 8 bits evolved a lot over the course of the decade plus that the computers were sold. They started out with a CTIA graphics chip. Then they went to a GTIA graphics chip. Then the circuit itself changed more than once.

    The artifact colors are different on every single one of these.

    In fact, there's even an actual knob to turn on the actual hardware that lets you adjust the tint of the artifacts.

    lr-atari800's core supports


    • no artifacting
    • blue-brown 1
    • blue-brown 2 (which should actually be called brown-blue)
    • GTIA
    • CTIA


    • no artifacting
    • simple PAL blending
    • accurate PAL blending

    But these detailed options are not available in the RGUI. The libretro core is hardcoded to only use blue-brown 1, I checked the source.

    However, you can use the in-game menu accessed via F1, go to Display Settings, and select

    Video artifacts: old NTSC artifacts
    NTSC artifacting mode: blue/brown 1 (or blue/brown 2, or GTIA, or CTIA).

    And these will be saved in /opt/retropie/configs/atari800/atari800.cfg as



    ARTIFACT_NTSC_MODE=0  // off
    ARTIFACT_NTSC_MODE=1  // blue/brown 1
    ARTIFACT_NTSC_MODE=2  // blue/brown 2

    (Sorry, haven't done the same experiment for PAL to get the index numbers, but I suggest you just set those to on and accurate because they look fine that way).

    Now, here's the problem. First of all, you'll have to change this by hand every time you put in a different game. And secondly...

    • CTIA gives, more or less, green and blue-to-purple depending on your tint.
    • GTIA gives, more or less, the reverse: what was green is blue, what was blue is green.
    • Blue/brown 2 and blue/brown 1 are likewise inverse of one another. And brown is a misnomer; on a well-saturated screen, it looked closer to red.

    The fact of the matter is that on real hardware, you don't know what you will get, but at the same time, at given periods of the hardware existing, developers clearly assumed one set of artifacting colors or the other.

    Ultima III with artifacting off, or in PAL:

    CTIA, note the green flame from the dragon:

    GTIA, now the flame is purplish red:

    Brown/blue 2, flame is blue:

    Brown/blue 1, flame is red:

    If you want an accurate experience that is closest to what the developers intended, you need to know what it was meant for. Luckily, we can compare to games on other platforms, screenshots on the box, or even cover art, to figure that out in many cases. For example, It's safe to say that in 3D Red Baron, the enemy plane is probably supposed to be red. In Ultima games, we probably want to aim for blue water and green grass, which is what the developers intended, but it's hard to get that setting with what we have exposed in lr-atari800.


    There are several video adjustment settings presented in the emulator menu, and all of them are broken. Again, the ones to not mess with even in config files: "New NTSC artifacts" renders incorrectly in all modes. "NTSC full filter" likewise renders incorrectly, and also doesn't properly read and write settings to the atari.cfg file when you make adjustments under "NTSC filter settings."

    However, things that do work, sorta:

    • The various "color preset" sliders are all broken; when you make a choice, they will jump to -1 or 1, which will be wrong. (Again, you can use Restore Default Colors to put these back). But you can edit the atari.cfg file, put in values, and they will be read correctly. There have been various posts around the forums on what makes for good values there. Note that the GTIA value here is, more or less, the same knob for adjusting the chroma circuit that the full NTSC filter provides. However, it interacts with the Tint slider in somewhat unpredictable ways.

    • There are also a few default configs: Vibrant, deep black, and standard. vibrant is more saturated, deep black does what it says. Both are quite nice though a tad ahistorical, particularly when coupled with a palette.

    • External palettes DO work, and will affect artifacting colors. Just note that the "Also adjust external palette" option needs to be set if you want to use both a palette and these controls at the same time.

    One option for messing with the sliders and seeing what you are doing is to launch the standalone emulator, where these functions do work, and once you have found something you like, paste the values in. Alas, this does not work for the full NTSC filter, which is what we would totally all be using if we could.


    There are additional options for artifacting visible in the F1 emulator menu. They don't work in lr-atari800. The "new artifacting" settings simply render wrong. The "NTSC filter" settings have sliders that don't work, turning it on will blow out the colors. (You can fix this by going to Display Settings->Restore Default Colors). Even though the NTSC filter settings will be written to the config, editing them there will still not work, so you should not bother turning this on.

    What the standalone emu can do (version 4.1.0, though I am unsure when the full NTSC filter was implemented) is bypass the hacky "four choices of artifact settings" and go to a true analog system that emulates NTSC circuitry. This means it gains an analog slider called burst phase, which is the equivalent of that knob that adjusted the colors.

    Its defaults are weird:

    Supposedly, burst filter around -1, -.5, .5, and 1 are reasonable typical values. But by running the NTSC filter, I can get what Richard and Chuck probably actually meant for U3 by setting burst phase to around -0.76, which gives me green grass and blue water. It's close to what we get with mode 1 (blue/brown 1).


    The four settings we can use in lr-atari cannot, alas, quite replicate this.
    mode 1: 458e01a1-4986-4ff3-b4cc-243fbb0de955-image.png
    Mode 2: 4bbff3df-52b9-49bd-ba5a-6a630f3e238f-image.png
    GTIA: 64d1df4e-e359-4f3a-923c-7cb6e87f7c58-image.png
    CTIA: 81609d0c-67fe-49e4-ab06-fd07bbd20517-image.png


    As a rule of thumb, you'll find that most games are either mode 1 or GTIA. The CTIA chip was not around for very long. Some of the very early games, like The Dark Crystal, actually show you an artifacted square and ask you what color you see, and change their artifacting based on your answer.

    You will also find that some games have hacks to make them color by changing them to use a graphics mode 15 that only existed on XL/XE machines. Among the games you can find with this hack are Lode Runner, Choplifter, and Drol. Frankly, they don't look as good, because they have half the horizontal resolution. But they tell us what the colors ought to be like.

    Here's my best stab at what you should pick from what's available in lr-atari800:

    Default for all games should be artifacting off, because having it on will mess up text display in color games. This is not at all how it was on the original hardware. This would affect games like

    • Archon
    • M.U.L.E.

    Some games that you might think use artifacting but will look better with it off include

    • Caverns of Callisto
    • The Nightmares
    • Transylvania (check out that font at the bottom!)

    Where hi res text mode was used mixed in with the graphics.

    Hi res PAL games should have game options files with PAL set, and accurate PAL blending on (mode 2).

    • 180
    • Head Over Heels

    Artifacting games should have a game options file with artifacting turned on at the RGUI level, set to NTSC. In the atari800.cfg, you should have


    ...and use the .opt file to turn artifacting on and off, which will leave these settings intact. EDIT: If you use the script below, this is not required anymore. This will cover most games looking right, such as

    • AE by Broderbund
    • Choplifter by Broderbund (cart and disk; the cart by Atari uses 4-color Gr. 15)
    • Crossfire (disk version)
    • Dark Crystal
    • Das U Boot pinball
    • David's Midnight Magic by Atari (cart.)
    • David's Midnight Magic by Broderbund (disk)
    • Diamond Mine
    • Dragon's Keep
    • Drol
    • Escape From Vulcan's Island
    • Gwendolyn
    • Hard Hat Mack
    • High Rise by Joe Calabrese (not the other one)
    • Lode Runner by Atari
    • Lode Runner by Broderbund (disk)
    • Lunar Leeper
    • Malpass
    • Mission Asteroid
    • Ogre
    • Pensate
    • Pinball Construction Set (and all pinballs created with it!)
    • Pool 1.5
    • Pool 400
    • The Wizard and the Princess
    • Ultima 2
    • Ultima 3
    • Ultima 4
    • Ulysses and the Golden Fleece

    Unfortunately, there's no way I know of to save alternate atari800.cfg files for the games that look better in other modes. EDIT: The script below basically creates this alternate file on the fly.

    Correct in mode 2:

    • 221B Baker St (the bottom display uses artifacting; it's correct when Sherlock's colors here match his colors in the iso map above).
    • 3d Red Baron (assuming you are fighting the Red Baron, his plane should be red not blue)
    • Flight Simulator II (the control panel uses artifacting, and the level gauge is the clearest use of it; the sky in the level gauge should be blue)
    • Fooblitzky (I went off the color of the roads and crosswalks)
    • Marauder (based on box shots and other platforms)
    • Mr. Do (Only for EXTRA and at bottom of screen -- should match the color graphics parts of the screen)
    • Night Mission Pinball (based on screenshots and box images)
    • Threshold (based on screenshots from other platforms)

    Correct in GTIA:

    • AutoDuel (other platforms show the blocked hexes as red)
    • Aztec (bit of a guess here based on the release date and the color on other platforms)
    • Bug Off (green stems for the flowers)
    • Twerps (the alien on the box is green; if you have the version with the title screen, you get a large full screen alien, and this is only mode he's green in).
    • Jawbreaker could go either GTIA or CTIA, I'm unsure.


    • Micro League Baseball is supposed to have a green baseball field, not purple, red, or blue.


    A request: if anyone can come up with a clever solution for changing the value of ARTIFACT_NTSC_MODE as part of the loading process for the game, please let me know. I tried setting up separate emulators for it, but they all end up referencing the same atari.cfg file. I suspect that the only fix might be to actually back up the old file, copy in one with the one line change (or maybe sed it in?) in a runcommand shell script. EDIT: done, see below

    Otherwise, I think the only other choice is to hope that developers on the upstream lr-atari800 core add this specific option line to the RGUI interface. It's currently there, but basically ignored and hardcoded, in the block starting at line 302 in libretro-atari800/libretro/libretro-core.c.

       var.key = "atari800_artifacting";
       var.value = NULL;
       if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
           if (strcmp(var.value, "enabled") == 0)
    	   if (Atari800_tv_mode == Atari800_TV_NTSC)
    	   else if (Atari800_tv_mode == Atari800_TV_PAL)
    	       ARTIFACT_Set(ARTIFACT_NONE); // PAL Blending has been flipped off in config for now.
           else if (strcmp(var.value, "disabled") == 0)
    	   if (Atari800_tv_mode == Atari800_TV_NTSC)
    	   else if (Atari800_tv_mode == Atari800_TV_PAL)
    Anyway... time for bed here, hope this is helpful to anyone else getting Atari 8 bit emulation going on their Retropie setups.

  • OSa AND OSb

    I neglected to mention OSa and OSb. Suffice to say, you'll see this on some filenames too. It basically means that it will or will not work on an XL/XE. Try swapping the machine to the other (from 800 to 130XE perhaps, or the other way around). Once again, you can save custom game options from RGUI for this, because this is an option saved in retroarch-core-options.cfg.

    In short, the original OS (OSa) had some bugs. Many later games will have issues on OSa. However, there's a tiny handful of games that don't work without the bugs. Hence OSb. There's also the 1200XL OS, which has additional minor incompatibilities, and the 5200 OS. On top of that, several of these exist in NTSC and PAL formats.

    Atari released a Translator Disk that actually allowed you to overwrite the differences in RAM before loading a game, so you could get older games to run on newer hardware.

    lr-atari800 doesn't even support all the different BIOSes known to exist, fwiw, but it covers enough of a spread that you should be able to get stuff working.

  • I just want to say that while I was not an Atari owner during those days - I started with the ZX Spectrum - this was an awesomely thorough read. Thank you for putting this together!

  • @pjft you're welcome. I hope it helps out anyone struggling with these platforms in Retropie, or at the least lets them experience some of the key games that otherwise would be confusingly hard to launch.

    It's a pity we don't have the 4.1.0 version in libretro... There'd be over 400 commits to integrate to bring lr-atari800 up to date, but it looks like a lot of them are pretty minor. Still a lot of work.

    Patching the lack of the artifacting settings is probably very doable. Unfortunately, work is swallowing me whole, else I'd be very tempted to take a stab at it.

    Making a script to generate .opt files for games that should be PAL or need BASIC is small enough I am tempted to do it one of these evenings.

    I wonder, if I had four alternate emus, each with a runcommand script to basically

    sed 'ARTIFACT_NTSC_MODE=./ARTIFACT_NTSC_MODE=1/g' atari800.cfg 

    ... then it's an emu-specific launch operation. One for each of the four modes, plus the default emu would replace with 0. Then you can just pick an emu at the usual runcommand menu and save per rom configs. Hmm.

  • I have this working. It’s a runcommand-onstart script that modifies retroarch-core-options.cfg and atari800.cfg before launching the emu, based on what emu you selected. I just added four new names to atari800/emulators.cfg and now you can pick one of the four artifacting modes from the runcommand launch menu and assign it to a given rom. They all launch the same emu, but with different config options.

    I wish I didn’t have to modify the core options file, but it overrides atari.cfg. You can in theory turn artifacting on and off via a game options file, and then use this method for the artifacting mode, but it seems cleaner to just do it all one way.

    On the other hand, doing it this way means that you can in theory change any of the options, basically restoring the ability to do command line switches, as long as you are willing to create a separate emulator.cfg line per combination of switches.

    Still testing but I will post it once I feel confident in it.

  • The following script will:

    • Automatically launch PAL games in PAL.
    • Automatically enable BASIC for games that require it.
    • Let you choose from the four NTSC artifacting modes at the runcommand menu by setting an emulator for a specific rom.
    • Automatically set the system to OSa for games that require it.


    1. Back up these files, or live dangerously. No warranties express or implied, don't blame me, etc.
    • /opt/retropie/configs/atari800/atari800.cfg
    • /opt/retropie/configs/all/retroarch-core-options.cfg
    • /opt/retropie/configs/atari800/emulators.cfg
    1. Edit opt/retropie/configs/atari800/emulators.cfg so that it has four new emulators. Mine now looks like this. The names matter.
    lr-atari800 = "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-atari800/ --config /opt/retropie/configs/atari800/retroarch.cfg %ROM%"
    lr-atari800-ctia = "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-atari800/ --config /opt/retropie/configs/atari800/retroarch.cfg %ROM%"
    lr-atari800-gtia = "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-atari800/ --config /opt/retropie/configs/atari800/retroarch.cfg %ROM%"
    lr-atari800-artifacting1 = "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-atari800/ --config /opt/retropie/configs/atari800/retroarch.cfg %ROM%"
    lr-atari800-artifacting2 = "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-atari800/ --config /opt/retropie/configs/atari800/retroarch.cfg %ROM%"
    default = "lr-atari800"
    1. Ensure that your Atari 8-bit roms follow the naming convention where you see (PD)(GB)[k-file][BASIC] etc in the filenames. For example:
    Dreadnought Megastars (1990)(Byte Back)(PAL)(GB)[k-file].atr  // this game will launch in PAL
    Beer Shot (1994)(Bednar, Kamil)(PD)[BASIC].atr // this game will enable BASIC
    Head over Heels (19xx)(Hit Squad)(GB)[h Homesoft][k-file].atr // this game will run with default of no BASIC and NTSC
    Ice Cap (19xx)(MacIlwee, Steven)(GB)[req OSa].atr  // this game will run on a 400/800 with OSa
    Galactic Quest (1981)(Crystalware)(US)[req OSa][BASIC].atr // this game will set the system to 400/800 OSa, and will also set BASIC to Rev. A 
    1. Obtain a copy of the BIOS for Atari BASIC Revision A. This is needed for games that require OSa and happen to be in BASIC. Revision A BASIC has an md5 of a4dc52536d526ecc51ea857b9fa2b90f and is not typically called ATARIBAS.ROM. Place it in ~/RetroPie/BIOS -- be sure to give it a different filename than the normal Atari BASIC BIOS. Either add this filename to atari.cfg like this:
    ROM_BASIC_A=/home/pi/RetroPie/BIOS/BASIC Revision A (19xx)(Atari)(400-800).rom

    Or go into the emulator menu and search the ROM system directory again, and then save the configuration file. Verify that on the menu, you are able to select Basic Rev. A.

    1. Edit /opt/retropie/configs/all/ to include the script found at Note that if you already have this script, you only need to insert the part starting at # apply Atari 8-bit specific patches...

    2. Test!

    • Try a game like Crush, Crumble and Chomp. It normally would not load because it requires BASIC to be enabled. Now it will. It might need you to hit the fire button when it first starts and sits at the blue screen.
    • But it looks ugly! Yup, it needs artifacting.
    • Exit the game, and relaunch it. Now enter the runcommand menu by tapping space bar or a button.
    • Leave option 1, "Select default emulator for atari800," set at lr-atari800.
    • Select option 2, "Select emulator for ROM." You should have several new options there. Select lr-atari800-artifacting1
    • Exit without launching (if you just launch, the setting won't apply until the next time, for some reason)
    • Launch the game again... you have blue water!
    • Try Drol, also set to artifacting1. You should have red scorpions.
    • Try Lode Runner with artifacting1. You should have blue bricks.
    • Try Choplifter (not "Choplifter!" which is the color XE cart, but the original Broderbund one), with artifacting1. Dark blue sky, green ground.
    • Try Micro League Baseball set to lr-atari800-ctia... the outfield should be green.
    • Try Mr. Do! set to artifacting2. Your lives at the bottom of the screen should be red just like your guy in the playfield.
    • Try Bug Off using lr-atari800-gtia. The flower stems and leaves will be green.
    • Try Head Over Heels. This PAL game should be crisp and clear with no artifacts.
    • Try Clonus, Micro Chess, TwoGun, IceCap, or another OSa game. The game should boot.
    • Try Eggnapper or other OSb games, they should boot regardless of your machine settings.

    Enjoy the more authentic Atari 8-bit experience!

  • PS, in theory, we could also detect [OSb] or [OSa] and launch with the appropriate machine. There are a few disk images out there that only work with OSb or OSa. It's late though, and I have to stop for today. But it would work the same way, only you need to switch machines to 400/800.

    Also -- the above script can be hacked to work with atari800 as well. You need to remove all the sed lines that affect the core options file, retaining only those that affect atari800.cfg. Probably need to change the path to ~/.atari.cfg, IIRC. And of course, change the emulator name from lr-atari800 to just atari800.

  • I know I'm the only one adding to this thread pretty much, but I just edited a bunch of the preceding, and included new sections explaining OS revisions, the multiplicity of confusing file formats, and a bunch of other things.

    This is far too much to go on the Wiki, but maybe a link to here would be appropriate?

  • @rkoster are you sure this wouldn't deserve its own section in the documentation? It's as detailed as it gets and comparable in depth to things like the xboxdrv mapping guide that @mediamogul wrote at one point, for instance.

    Certainly a link would be good, but your call, really.

  • @pjft Oh, I’m fine with it being in the wiki. Don’t know what the process is for that though!

  • @rkoster I believe it's all on GitHub, but I imagine someone who's actually documented their own RetroPie contributions (shame on me) would be able to advise better :)

  • @pjft Well, I added a pile of stuff to the Wiki, including stuff that isn't in the thread (BIOS info mostly).

  • The script has been updated to handle automatically providing the correct settings for OSa games [edit: and OSb games]. This involves setting both the system to Rev. A 400/800, and setting the BASIC revision to A. You will need to find the BASIC Rev. A rom file and place it in the BIOS folder for that part to work correctly; the instructions above have been amended to walk you through that and provide the correct md5 hash for that version of BASIC.

    If you installed the usual recommended ATARIOSB.ROM, you don't need to install anything for the OSb games.

    It's also now on github at

  • I fixed a bug (typo, really) with the handling of OSb games. Updated script is on github.

  • @rkoster wow this is great. Thanks. Haven’t read it through completely yet as I’m away on business. But what about games like, one of my favourites, Spelunker that require some keyboard commands like space bar for phantom blaster and keys to launch flares and dynamite. Can that be set on say my shanwan ps3 controller to use it? Basically all others work fine as Atari Joystick. I do have a Logitech wireless keyboard with mouse pad so I could use that in front of me as well for extra commands. But would be fiddly if could all be done with the controller.

  • @PCKid Well, it's a big ask to get a computer to work fully with a controller, of course. There's no way to cover every possible mapping. The most common keys that you tend to run into include the number keys (ex: setting difficulty in Jumpman), space bar (Spelunker, as you mention), and Enter, but something like Star Raiders of course demands that you play with the keyboard, never mind all the text adventures or even just games that require that you type your name.

    The mappings in lr-atari800 are:

    L3 NA
    R3 NA

    So you do in theory have two keys free where you could put a couple more mappings without stomping something else. I haven't tried this, but you could go to the RGUI (Select-X) and mapping L3 and R3 to the extra keys you need, and then saving a Game Remap file (not a Core Remap, as that will map those keys for all games). But I haven't tried this to see if it works with the lr-atari800 core.

    You're almost certainly still going to need a keyboard attached for a lot of games.

  • Excited about this, but confused about one section.

    I downloaded the script and placed it in the folder as described, but this is a new file that never existed previously, so nothing is calling/referencing this file.
    So if I launch lr-atari800 or any of the new emulator options, there is nothing (I don't believe) referencing the script.

    Is there a missing step somewhere?

    I do have runcommand.cfg and runcommand-launch-dialog.cfg in the "all" folder. Not sure how this script is actually called.


  • I see now that runcommand is supposed to automatically launch if it exists. I added a line to the script to output a text string to /dev/shm/runcommand.log, but it doesn't appear. I don't think is actually running.

    I'm running the unsupported Buster version of Retropie, so maybe I stumbled on something funky. Will keep playing with this.

    EDIT: I didn't change anything, but the script is suddenly working and I can see my custom string in runcommand.log. Excellent. Will tinker with my ROM filenames and see if I could get this to work.

  • @roslof Hope you got it working! Apologies, I have been busy and not visiting the forum.

Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.