In the past month I have seen a few guides about configuring RetroArch, while good some fail to explain some concepts, so I thought why not, I’ll make a series of blog posts about configuring RetroArch, starting from the basics.


  • Core — a core is a program that runs in RetroArch (or another libretro frontend)
  • Frontend — a frontend in this context is a program that can run libretro cores (RetroArch, Minir, Kodi’s Retroplayer are examples of this)
  • Content — content is a game/program that is run by a core, some cores also require no content
  • Retropad — retropad is RetroArch’s input abstraction controller, it’s the interface between the physical controller and the core inputs
  • Save Files — save files are saves that are made from within a game, usually cross platform and should work across emulators in most cases
  • Save States — save states are snapshots of the content menory at a particular moment, these are not always cross platform and most certainly won’t work on a different emulator that the one used to create them
  • System Files — additional files that might or not be part of the romset that might be needed to get some content to work (usually referred to by the BIOS term)
  • Autoconf Profile — a configuration file that has button definitions for a particular gamepad

Downloading RetroArch

First thing is to download RetroArch.

Windows/OSX users should browse to our buildbot and go into the nightlies folder.
For Windows users we have a full package:

Windows users will need to have the DirectX redistributable installed, that is available here.

OSX users should grab the latest dated package, there are usually two downloads, the one with the CG prefix requires the NVIDIA CG toolkit available here.

Linux users usually have to build their own binaries. For Ubuntu users there is a PPA (ppa:libretro/testing).
The process is as follows:

sudo add-apt-repository ppa:libretro/testing
sudo apt-get update
sudo apt-get install retroarch

For mobile users there are two options: install builds manually or use f-droid/cydia to install always up-to-date packages.

The URL for the cydia repository is:
The URL for the f-droid repository is:

For consoles, just grab the bundle and extract to the usual locations, I’ll try to cover specifics on consoles on another post later on.

First Run

Windows/Mac/Linux users will be greeted by this screen:

This is one of three menu drivers that are ready for general usage, it’s called XMB and it’s designed to be navigated with a controller.
There is also GLUI/Material:

And RGUI (this is the only available driver on many consoles):

No matter the driver, all of them can be navigated with a gamepad and they share most of their functionality.

Navigating the GUI

RetroArch has an autoconf mechanism with several autoconf profiles preinstalled. Users with pads not supported out of the box will need to map controllers, either with a keyboard or via an on-screen overlay:
For keyboard users, these are the default bindings:



In the menu, is used to accept/select and is used for back/cancel, is used to scroll up and is used to scroll down quickly.

is used to search the current list and is context aware, currently mostly used to trigger a content scan.

is used to reset a setting to default and is used to get information on the current entry if available.

Finally, remember that closes the program. The in-game menu can be toggled with F1.
The rest of the default keyboard bindings can be checkd in Settings/Input/Input Hotkey Binds

The arrows/d-pad should be self explanatory.

Basic Controller Configuration

Users with XINPUT controllers can skip this section, there are a few others that have profiles too depending on the platform. If the controller is auto configured yellow text will indicate that at startup/connection, like this:

If an unsupported gamepad is connected it will be indicated too, like this:

If the controller isn’t automatically configured it’ll have to be mapped. The controller should be mapped with RetroPad in mind, not with the emulated console. Later on I’ll explain how to re-wire the RetroPad to core bindings.
The RetroPad looks like this:

With that in mind let’s bind the buttons:

  • Go to settings (the gear icon to the right)
  • Go to input
  • Select User 1 Bind All
  • Press the buttons as the program asks for them

Sometimes some buttons may register too fast, for example the analogs in my NES30 Pro are too sensitive so usually it ends up skipping one or too. In that case might navigate down and check the bindings and fix anything that was bound incorrectly.
The process should be repeated for all the controllers in the desired ports and that’s all there’s to it! (I’ll revisit input later on for controller autoplug, adding labels to buttons, setting hotkeys, etc.).

Configuring Directories

The second most important aspect in my opinion is to configure paths correctly. In most platforms we have default paths set for most stuff, following should be considered:

  • System File Directory, Save File Directory, Save State Directory, are set by default to the directory from were content is being loaded
  • The paths mentioned above need write permissions
  • File Browser Directory is the location from were the content browser will start, some cores that don’t use the correct interfaces may need to write to the content directory, an example of this behavior is the DOSBox core
  • Cache dir is a location for stuff that might be cleaned up after exit, it caches achievement data and extracted roms might be stored there until they are unloaded

Go into Settings/Directory and make sure to set the directories to best suit your environment.

Online Updater

The next step is to get some software running on RetroArch, for this purpose we need cores, and content. Cores can be downloaded using the Online Updater service, and we even have a few public domain games for the game&watch core.
To download cores select Online Updater and then Core Updater, wait a few seconds and the list will be populated with the cores available for the platform in use.

In this example I downloaded 2048 (requires no content), prboom and the game & watch core (content is already available for this game on our downloader)
Update the rest of the entries too, they may contain new shaders, overlays and even autoconf profiles.

Loading, Adding & Scanning Content

After downloading cores it’s time to load a game, to do so select Load Content/Select File And Detect Core. The other options allow loading content too but are more advanced and will be discussed on another article.
In this example I have already set my content dir and I downloaded a SNES core, I’ll be using a public domain rom for demonstration purposes:

Content can be downloaded from our online repository too, it’s a bit bare at the moment but we intend to add some public domain roms, shareware games and demos and open source games that are supported in our cores. To do so select Add Content / Download Content

Note: Doom isn’t actually available there yet, it was done just to illustrate the process, the same process applies for G&W content available now

Finally, users that already have content may want to scan it against known databases, after doing so these games will be easily avialable as systems under the XMB menu.
First of all, update databases under Online Updater, then to initiate a scan go to the plus icon in XMB or go to Add Content/Scan Directory or Add Content/Scan File, after that matched content will be directly available from the system list.

And that’s it! We’re done with the basics, I’ll try to write an in-depth article on some important subsystems later but this should be enough to get started.

62 thoughts on “Getting Started with RetroArch

  1. How does updating Retroarch work after you download the nightly? It can’t be that you need to download the nightly every night (or however often you care) and re-apply all your settings and such?

    1. I assume you’re on Windows, if that’s the case just download the dated nightly, it only contains the updated EXE, just overwrite the EXE and you’re good to go.

      1. So all the settings and such are in separate files that will continue working and all the assets and cores can be updated with the in-app updater? Thanks for all your help (here and on reddit)! I think I finally have a pretty stable and nice looking setup!

  2. Thanks for this! I think it will be really useful to new users, including myself! I hate to say getting started was confusing before, but it sort of was πŸ˜›
    After recommending this to friends, most of them said they didn’t know how to get started with it, or that it didn’t work. Major reasons for this could be autoconfig of controllers not always working, and the fact that autoconf will switch A and B buttons for most people, so B on the controller (A on RetroPad) will be accept and A will be the back button. They or I also could never figure out how to switch to XMB on Android devices. Is it available on that platform?
    I know this post sounds negative, but it was not meant to be. Just wanted to share prior frustrations, with that hope that what you provided here will help other users get started.
    Maybe you could run a wizard on the first run of unconfigured systems that would walk new users through some of this?

    1. it would be ideal to have a wizard yes, but it would be a lot of work too.
      The buttons aren’t really swapped… the retropad layout is YX / BA, following SNES convention. Most gamepads nowadays are XY / AB, but in any case you should map with our scheme in mind, otherwise it will be confusing.

      XMB is available on android yes, change it under drivers, menu driver

      1. It should be like Xbox, IMO.

        XY/AB just like Xbox.

        SNES convention is old, outdated, and confusing to modern gamers.

        Failing that options to swap between them is always nice.

        1. It’s a matter of logic

          The arrangement SNES B-A (A left). Responds to Japanese writing, from right to left.

          Western writing is from left to right, so Xbox is A-B

          Green (A) is OK. Red (B) is NO.

          To control snes ideal B-A. For RetroArch interface it is complicate matters unnecessarily.

          I have noticed that there is absurdly complicated, UI / UX interface needs attention.

          1. I don’t.

            A is Accept.

            B is Cancel.

            Same with Playstation and anything else. If I can set up Nintendo that way, I’ll do that as well.

            X is accept.

            O is cancel.

            That’s how I set up every thing. It is nigh annoying when something sets B as accept. (Here’s looking at you Metal Gear.)

            Nintendo STILL does this and it is nigh infuriating.

            Thankfully, I grew up on it, so it does not take me long to get in the mindset, Nintedo B/A instead of A/B but it doesn’t happen right away.

            But it is still annoying and infuriating.

        2. RetroArch… retro.
          XBOX convention wouldn’t make any more sense and be even more confusing.

          The labels change accordingly with the gamepad labels anyhow so IDK what’s the fuss about.

          1. matter of logic.
            Green is OK. Red is NO.
            My control, says A, but B.
            Why they put a picture of Xbox if the configuration is playstation …

            I read all the wiki, I understand that is playstation type.
            so. In playstation (1-2), “Circle is OK”.

          2. So you watch your buttons while playing games?
            In my xbox elite pad all of them are grey. What now?

            We follow SNES convention. Most of the emulated systems we have follow this convention too. Are you gonna hack your roms to use the reverse layout on their menus?

            You are free to go to the cfg and invert menu_ok and menu_cancel.

          3. “In my xbox elite pad all of them are gray. What now?”
            O_o (What there is to read)…
            Yes, I can change the setting. I can also break the control and buy an Xbox elite with gray buttons. LOL

            I’m not talking about settings emulators, I’m talking about the interface.
            What I give you to understand. Is that taking into account that the vast majority of people have Xbox control. It makes no sense to change the order of the buttons on the interface. each emulator configures independently.

            In all emulators, you accept is with the A Button Xbox / Circle Button PSX. In Snes too, it is accepted with the B button (which is A Button to Xbox / Circle Button PSX).

            But the interface is not, is inverted to all emulators and control.
            A is B, but B is A and X is Y, but Y is X…
            okey, okey, explain that to my nephew of 5 years ;Β¬)

          4. Just got an xbox elite myself and loving the premium feel of it. It’d be cool if RetroArch somehow allowed us to share profiles but that sounds a bit troublesome for only a subset of users.

            Can you share your elite controller profile for RetroArch? I want to take advantage of it’s configuration abilities but have no idea what to use (triggers, sensitivity,mappings).

          5. You don’t know what all the fuss is about?

            It’s simple. It’s about choice.

            Modern gamers know what XY/AB is and EXPECT it to be a default standard.

            Retro gamers follow SNES convention.

            There should be an option to swap it.

            Stop being difficult. I don’t care what convention you do or don’t follow, give the user a choice.

          6. Calm down my friend. This is a consensus. This is a very valuable work and we use it. In next version, will implement the button assignments. :Β¬)

            I understand the semantics of the interface. The trouble is that complicates its use, especially for novice users.

            It would be ideal to have a profile for each control;
            Xbox (A – OK / B Cancel).
            PSX (X – OK / Triangulo – Cancel)
            But I understand that this is much more work.


          7. It’s not about modern or retro.
            XY/AB is american/european standard, like XBOX or Steam Controller uses for all regions.
            YX/BA is japanese standard like Nintendo uses for all regions.
            While Sony, in Japanese regions uses OX and in American/European uses XO for Confirm/Cancel respecively.

            What devs should do is options to switch between them, not follow any kind of “conventions”, everyone has his own tastes.

  3. I remember having difficulties getting started with Retroarch early on; this should alleviate a lot of trouble for new users in future. Thanks for putting your time into this.

  4. vicious_results

    January 1, 2016 — 9:37 pm

    how do you get nintendo 64 games to run on your ps3

    1. I don’t think mupen64-libretro works on PS3

      1. Newton W. Oliveira

        January 2, 2016 — 2:38 am

        sorry… edit

  5. Newton W. Oliveira

    January 2, 2016 — 2:26 am

    I need help with the emulator RetroArch in Nvidia Shield TV. The App was installed, I can browse it, access a pen drive, but he did not open or recognize any ROM that was downloaded. As it emulates Super Nintendo, I imagined that the same ROM that works correctly in Snes9x should work in RetroArch too. But I was wrong. One of two things: Either foolishly setting in APP, or need to know where to get the ROMs format. Someone help please?

    1. Did you download a snes core?

      1. Newton W. Oliveira

        January 2, 2016 — 2:38 am

        Probably not…

        I’m a noob. kkk

        How to ?

        1. Uh it’s there on the guide under online updater

      2. PrincessCelestia1230

        October 7, 2016 — 4:32 pm

        why is there no Linux versions are you way to lazy to make? is it because there are way too many dependencies or you are intellectually inclined? PROUD TO BE A BRONY!!!!!

        1. I’m gonna ignore the insulting part and reply.
          Linux is a kernel not an operative system. There are too many distributions to even consider maintaining our own.

          You can git clone, configure and compile on most distributions without too much hassle.

          1. PrincessCelestia1230

            October 7, 2016 — 5:30 pm

            what about specific distros like opensuse Fedora

          2. we accept contributions.
            We have an official PPA (but we didn’t make the package recipes)
            There are pkgbuilds and slackbuilds for arch

            It’s up to the distro communities.

          3. Thank you for having PPA for Ubuntu πŸ™‚ apt-get install retroarch and you’re ready!

  6. This is the first decent documentation from retroarch I’ve seen. Well done. (It’s not a dig, as I understand you’ve been primarily concerned with coding it) but documentation is very much appreciated.

  7. Dear Radius4,
    The libretro forum is not sending emails on password reset requests or new forum registrations. Tried several email services. Please fix.

    1. I’ll try to fix the forums again when I have the time, sorry we’re busy with 1.3.0

  8. Gonzalo Hevia Castillo

    January 13, 2016 — 8:51 pm

    Hi, i created a forum account and i dont receibe the confirmation e-mail days ago.. so i can’t do anything on the forum but read. πŸ™
    Please fix it Q.Q

    My account is KukoCL

    1. I’ll try to fix the forums again when I have the time, sorry we’re busy with the release now

  9. How do you REMOVE content? I have doubles and triples of some things because of how I was fiddling.

    1. just remove the playlists

  10. I know I can just go look at the config file, but it would be nice to have a little bullet list of some of the most popular keyboard shortcuts for things like how to select a savestate slot, and save it. You can set what folder they go to,…but how do you actually do it? Or am I just not seeing that anywhere?

  11. Hello! well, i noticed that emulator run using “opengl driver” on menu… i have a low pc not opengl 2.0 compatible.. well is it possible open that emulator using a “d3d” driver? like ppsspp? my low pc runs ppsspp…. celeron 1.8…Intel GMA G33.. 2gb ram
    i have been tried the “mesa driver” the emulator open….. but at 10fps…. can you help me? i will love that!!!

  12. I’ve always used RGUI. I’m hesitant to move as I like the retro style and the lack of visible nesting, but I’ll migrate if more parameters are exposed by XMB. Is RGUI still being maintained fully?

    1. the menu layouts are exactly the same

  13. I enabled achievements and tried running a game and core that support it, but got the message “Missing Retro Achievements Account information, please fill in your account information in settings”. But the problem is… I can’t find any place in the settings to set up these account details! Where/how do I do this?

    1. Found it! It was under User > Accounts, not under Achievements.

  14. After mapping all my buttons and joystick i have notice that the Reicast doesn’t respond to the joystick but the buttons work. When I press F1 from within a Game and reconfigure the joystick movements. it returns Keypad8 instead of “up”, keypad2 instead of down, keypad4 instead of left and keypad6 instead of right. I will save the changes and return to the game and still nothing keypad or controller. (note I have an I-PAC-2 which emulates keys on a keyboard. this is the only emulator within RetroArch that does this. NUllDC works great. anyone have a solution

  15. When I try to download cores with the Core Updater, I get a “Fail: Downloading ‘.index'” error. I can’t download cores. Been trying to get the new dreamcast core.

  16. Hello! After I scan for Content and the list is created I can’t play the games. It says No Core Available.
    But if I try to load the Content individually then it works.

  17. So, you can change the ingame hotkey config on the menu. But where is the menu hotkey config menu? I want to use the numpad / for D-Pad Up, but it toggles search every time, it’s driving me mad.

  18. Hi! I need help with RetroArch. I downloaded Pokemon Diamond and started playing it but I reached a spot where I have to touch the center of the Pokeball to continue. The problem is that i’m on my Kindle Fire. Is there a way I can touch the center of the Pokeball?

  19. Hi there , i am trying to test the “achievements” , i make account in the site , ( This is the right site ? for this )

    I try with all core i have but all says

    1 – “This Core dont’s support achievements”


    2 – “This game don’t have achievements” , but i look in the that site , and all game i am trying to test , have achievements.

    Or are necesary download and compile anothers “cores” for use that feature . if that the case , just explainme how i should do in GNU/Linux system, please πŸ™‚

    I try with 800 Games from total , from :

    GameBoy / Color / Advance
    Sega Genesis / Sega 32X

    And nothing πŸ™

  20. This article was great! We need more of this nature. The information is so sparse out there that I am having an incredibly tough time setting up my controllers. They both load with Xinput, but one of them is a steam controller and doesn’t really work but I don’t know how to fix it.

  21. I have downloaded cores many times, but every time I try to run a ROM, it says no cores available. I’m running version 1.3.4 on Win10.

    1. Same here… problem solved?

  22. i have usb nintendo controller i add the key bindings in setting but dont work in the games

  23. I’m having a lot of trouble with PC Engine CD games. I have both PC Engine cores, and I put the System card files which function as the BIOS in the system folder in my retroarch but every time I try to play the .cue file of my CD game, Retro Arch just turns off.

  24. Great guide, the only thing I ask is some tips on which emulator to choose. SNES has 10 emulators alone and it would be good to see “recommended” for accuracy/ low latency/ etc.

  25. I registered to the forums but I cannot post because I did not receive an activation e-mail. Please advise

  26. Because the allocation of the buttons is reversed? A-B and X-Y
    It has the provision of snes

    1. because we like it like that.

      1. that’s a “very intelligent” response.

  27. Dalton Wade Whittle

    November 5, 2016 — 5:02 pm

    what about the wii version???

  28. mmmm keep saying “no entries” in core updater……

Comments are closed.