Automatic Controller Mapping

Common game controllers are automatically configured when plugged in, just like on a real game console.

Ideal to start a multiplayer game when a friend visits with their own controller.

You can also configure everything manually, assign special actions to combos, and more!

How does it work?

RetroArch provides a set of configuration files for the most common controllers. Depending on your platform, these autoconfig profiles are either distributed with RetroArch or downloaded through the Online Updater.RetroArch provides a set of configuration files for the most common controllers. Depending on your platform, these autoconfig profiles are either distributed with RetroArch or downloaded through the Online Updater. Matching is done using 3 criteria: the device name, the vendor id and the product id. The vendor id and product id pair is often abbreviated as vid:pid. We compute a matching score for each configuration file based on these three factors. The autoconfig profile with the highest score is used to map the controller.

Why is it needed?

RetroArch works on a lot of different platforms. Each of these platforms have one or more input systems. And these input systems differ widely in the way they enumerate the pad buttons.

Standalone emulators let you map each of your controls to the original controller for the emulated system. For example, this is how the OpenEMU controller configuration looks:

The difference is that RetroArch begins by detecting your controller and automatically configuring it if possible. Manual mapping as with standalone emulators is always an option, however!

Benefits

With RetroArch joypad auto configuration system, your joypad will be recognized and will work out of the box. This allows:

Having automatically configured joypads makes it a lot easier to navigate the RetroArch Menu with the joypad. This is very convenient when running RetroArch on a game console, where a keyboard and a mouse are not always available. It is also what makes RetroArch suitable to build your own game console using Lakka or a similar OS.

Controller auto configuration profiles

This is what a controller profile looks like in RetroArch.

The first part is used for matching, as explained above. The vendor id and product id are in decimal format.

The second part is the mapping itself, where each button is assigned to a button of the RetroPad (the RetroArch idealized controller abstraction).

The third part are input descriptors used by RetroArch to display the labels of the buttons as they are physically printed on your controller. For example: if you are using a DualShock pad, RetroArch will refer to the buttons as Cross, Circle, Square and Triangle. Downloading or updating joypad profiles

input_device = "Microsoft X-Box One pad"
input_driver = "udev"
input_vendor_id = 1118
input_product_id = 721

input_b_btn = "0"
input_y_btn = "2"
input_select_btn = "6"
input_start_btn = "7"
input_up_btn = "h0up"
input_down_btn = "h0down"
input_left_btn = "h0left"
input_right_btn = "h0right"
input_a_btn = "1"
input_x_btn = "3"
input_l_btn = "4"
input_r_btn = "5"
input_l2_axis = "+2"
input_r2_axis = "+5"
input_l3_btn = "9"
input_r3_btn = "10"
input_l_x_plus_axis = "+0"
input_l_x_minus_axis = "-0"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
input_r_x_plus_axis = "+3"
input_r_x_minus_axis = "-3"
input_r_y_plus_axis = "+4"
input_r_y_minus_axis = "-4"
input_menu_toggle_btn = "8"

input_b_btn_label = "A"
input_y_btn_label = "X"
input_select_btn_label = "Back"
input_start_btn_label = "Start"
input_up_btn_label = "D-Pad Up"
input_down_btn_label = "D-Pad Down"
input_left_btn_label = "D-Pad Left"
input_right_btn_label = "D-Pad Right"
input_a_btn_label = "B"
input_x_btn_label = "Y"
input_l_btn_label = "LB"
input_r_btn_label = "RB"
input_l2_axis_label = "LT"
input_r2_axis_label = "RT"
input_l3_btn_label = "Left Thumb"
input_r3_btn_label = "Right Thumb"
input_l_x_plus_axis_label = "Left Analog X+"
input_l_x_minus_axis_label = "Left Analog X-"
input_l_y_plus_axis_label = "Left Analog Y+"
input_l_y_minus_axis_label = "Left Analog Y-"
input_r_x_plus_axis_label = "Right Analog X+"
input_r_x_minus_axis_label = "Right Analog X-"
input_r_y_plus_axis_label = "Right Analog Y+"
input_r_y_minus_axis_label = "Right Analog Y-"
input_menu_toggle_btn_label = "Guide"

Updating controller profiles

On platforms that allow the RetroArch Online Updater, you can update the set of controller profiles from the menu. Go to Main Menu->Online Updater->Update Autoconfig Profiles to get the latest version of the profile pack.

A yellow message will appear at the bottom of the screen showing the download progress and the extraction of the archive.

Generating a controller profile

If your controller is not recognized by RetroArch even after updating the profiles, or if RetroArch's matching profile is not suitable for you controller, you can generate a new profile to use.

The first step is to proceed to a manual mapping of your pad. For this, unplug all the other joypads, and use Settings->Input->User 1 Binds->User 1 Bind All. Make sure that your mapping is perfect by testing every button in the menu and in some games.

Then use Settings->Inputs->User 1 Binds->User 1 Save Autoconfig and the profile will be saved to your disk.

Important note

You should now do a Settings->Inputs->User 1 Binds->User 1 Bind Default All to reset the manual settings. Otherwise they would take precedence over the profile you generated.

Unplug your controller an re-plug it. See if it is auto configured.

If you are happy with your profile, you can write the input descriptors part and submit your profile in our git repository.

Troubleshooting controller mappings

If for your controller is misconfigured by the automatic system, you may want to look at the RetroArch log. The log will show if a profile has been selected for your controller, and the path of the selected profile.

News

RetroArch 1.21.0 release

RetroArch 1.21.0 has just been released. Grab it here. Remember that this project exists for the benefit of our users, and that we wouldn’t keep doing this were it not for spreading the love to our users. This project exists because of your support and belief in us to keep going doing great things. We have […]

Continue reading

Introducing ROM Cleaner

Jesse Talavera here again! You may remember me from my work on melonDS DS, McSoftServe, and assorted improvements to RetroArch like microphones and XDelta softpatching. I’ve secretly been developing something brand-new that I’m itching to share with you. Although RetroArch was designed for retro game emulation, every now and then something comes along that breaks […]

Continue reading

Bliss-box 4-play advanced – RetroArch ready : Early bird offer inside

For a limited time you can pre-order yours before production begins. https://bliss-box.net/products/4-play-advanced   Compatibility Works with the existing software Has the same USB ID so that you do not need to reconfigure your software Has the same mapping, and code logic just faster with greater controller support Compatible with 4-Play/GP Cables Advantages over the 4-Play.   […]

Continue reading

LRPS2 – the new PlayStation2 core with a brand new Vulkan LLE renderer

We have a brand new PlayStation2 core, LRPS2. It’s a heavily modified version of PCSX2 custom made for the Libretro API, and it currently runs on Windows, macOS and Linux. The core code is modern and up-to-date unlike the old core and it no longer suffers from the serious drawbacks the older core had. It […]

Continue reading

RetroArch 1.20.0 release

RetroArch 1.20.0 has just been released. Grab it here. Remember that this project exists for the benefit of our users, and that we wouldn’t keep doing this were it not for spreading the love to our users. This project exists because of your support and belief in us to keep going doing great things. We have […]

Continue reading

RetroArch first program to support BlurBuster’s CRT beam racing simulator shader

We are excited to introduce a new shader that significantly improves motion clarity on modern displays, without the typical drawbacks associated with black-frame insertion (BFI) implementations. This shader is the work of Mark Rejhon from BlurBusters (blurbusters.com) and Timothy Lottes (creator of the original FXAA shader and the crt-lottes shaders). It leverages RetroArch’s recently added […]

Continue reading

PlayStation2 and the CRT TV

The PlayStation2 is a system designed almost entirely from the ground up for use with CRT TVs. Like any other game console built around analog video output, it is not designed around pixels or resolution, but scanlines and timing. Yes, there is a way to attach a VGA monitor for the official PS2 Linux toolkit […]

Continue reading

RetroArch 1.19.1 release

RetroArch 1.19.1 has just been released. Grab it here. Remember that this project exists for the benefit of our users, and that we wouldn’t keep doing this were it not for spreading the love to our users. This project exists because of your support and belief in us to keep going doing great things. We […]

Continue reading

RetroArch 1.19.0 release

RetroArch 1.19.0 has just been released. Grab it here. Remember that this project exists for the benefit of our users, and that we wouldn’t keep doing this were it not for spreading the love to our users. This project exists because of your support and belief in us to keep going doing great things. We […]

Continue reading

RetroArch on Apple App Store

RetroArch is now available on the Apple App Store. It is currently available for iPhone, iPad and tvOS. A macOS version on the Apple App Store is planned but no ETA. A new RetroArch version is also coming out soon.

Continue reading

Lakka – Raspberry Pi gets 240p Composite Video

Special community version of Lakka has been released! Raspberry Pi gets 240p Composite Video output support! Read more about it in this article here.

Continue reading

Introducing McSoftServe

Hi there, everybody! I’m Jesse Talavera, a libretro contributor. I’m primarily known in this community as the author of melonDS DS, but I’ve got some other exciting projects in the oven as well. Today I’d like to share with you something new that I’ve been working on for some time. Introducing McSoftServe, an emulator for […]

Continue reading

Vircon32 joins libretro/RetroArch

Written by: Carra Hi! I’m Carra and I created Vircon32, a new game console. My Vircon32 core was recently integrated into RetroArch, so I thought this could be a good opportunity to talk about both the console itself and my overall experience creating a Libretro core. What is Vircon32? Vircon32 is a 32-bit virtual console […]

Continue reading

Geolith emulator ported to libretro

We have the pleasure of announcing a great new emulator core, the Neo Geo emulator Geolith. The upstream author of the Jolly Good Emulation project broke out this core and ported it to libretro to make it available to as many users as possible, and we’re happy to welcome it into the fold. Historically, Neo […]

Continue reading

RetroArch 1.17 – new netplay features

RetroArch 1.17 expands Netplay to support playing multiplayer games that were originally played on two or more separate consoles or computers connected together. This is currently supported by two cores: DOSBox Pure and gpSP. In DOSBox Pure it is now possible to play DOS and early Windows multiplayer games that used IPX, Ethernet or a […]

Continue reading

News

RetroArch 1.21.0 release

RetroArch 1.21.0 has just been released. Grab it here. Remember that this project exists for the benefit of our users, and that we wouldn’t keep doing this were it not for spreading the love to our users. This project exists because of your support and belief in us to keep going doing great things. We have […]

Continue reading

Introducing ROM Cleaner

Jesse Talavera here again! You may remember me from my work on melonDS DS, McSoftServe, and assorted improvements to RetroArch like microphones and XDelta softpatching. I’ve secretly been developing something brand-new that I’m itching to share with you. Although RetroArch was designed for retro game emulation, every now and then something comes along that breaks […]

Continue reading

Bliss-box 4-play advanced – RetroArch ready : Early bird offer inside

For a limited time you can pre-order yours before production begins. https://bliss-box.net/products/4-play-advanced   Compatibility Works with the existing software Has the same USB ID so that you do not need to reconfigure your software Has the same mapping, and code logic just faster with greater controller support Compatible with 4-Play/GP Cables Advantages over the 4-Play.   […]

Continue reading

LRPS2 – the new PlayStation2 core with a brand new Vulkan LLE renderer

We have a brand new PlayStation2 core, LRPS2. It’s a heavily modified version of PCSX2 custom made for the Libretro API, and it currently runs on Windows, macOS and Linux. The core code is modern and up-to-date unlike the old core and it no longer suffers from the serious drawbacks the older core had. It […]

Continue reading

RetroArch 1.20.0 release

RetroArch 1.20.0 has just been released. Grab it here. Remember that this project exists for the benefit of our users, and that we wouldn’t keep doing this were it not for spreading the love to our users. This project exists because of your support and belief in us to keep going doing great things. We have […]

Continue reading

RetroArch first program to support BlurBuster’s CRT beam racing simulator shader

We are excited to introduce a new shader that significantly improves motion clarity on modern displays, without the typical drawbacks associated with black-frame insertion (BFI) implementations. This shader is the work of Mark Rejhon from BlurBusters (blurbusters.com) and Timothy Lottes (creator of the original FXAA shader and the crt-lottes shaders). It leverages RetroArch’s recently added […]

Continue reading

PlayStation2 and the CRT TV

The PlayStation2 is a system designed almost entirely from the ground up for use with CRT TVs. Like any other game console built around analog video output, it is not designed around pixels or resolution, but scanlines and timing. Yes, there is a way to attach a VGA monitor for the official PS2 Linux toolkit […]

Continue reading

RetroArch 1.19.1 release

RetroArch 1.19.1 has just been released. Grab it here. Remember that this project exists for the benefit of our users, and that we wouldn’t keep doing this were it not for spreading the love to our users. This project exists because of your support and belief in us to keep going doing great things. We […]

Continue reading

RetroArch 1.19.0 release

RetroArch 1.19.0 has just been released. Grab it here. Remember that this project exists for the benefit of our users, and that we wouldn’t keep doing this were it not for spreading the love to our users. This project exists because of your support and belief in us to keep going doing great things. We […]

Continue reading

RetroArch on Apple App Store

RetroArch is now available on the Apple App Store. It is currently available for iPhone, iPad and tvOS. A macOS version on the Apple App Store is planned but no ETA. A new RetroArch version is also coming out soon.

Continue reading

Lakka – Raspberry Pi gets 240p Composite Video

Special community version of Lakka has been released! Raspberry Pi gets 240p Composite Video output support! Read more about it in this article here.

Continue reading

Introducing McSoftServe

Hi there, everybody! I’m Jesse Talavera, a libretro contributor. I’m primarily known in this community as the author of melonDS DS, but I’ve got some other exciting projects in the oven as well. Today I’d like to share with you something new that I’ve been working on for some time. Introducing McSoftServe, an emulator for […]

Continue reading

Vircon32 joins libretro/RetroArch

Written by: Carra Hi! I’m Carra and I created Vircon32, a new game console. My Vircon32 core was recently integrated into RetroArch, so I thought this could be a good opportunity to talk about both the console itself and my overall experience creating a Libretro core. What is Vircon32? Vircon32 is a 32-bit virtual console […]

Continue reading

Geolith emulator ported to libretro

We have the pleasure of announcing a great new emulator core, the Neo Geo emulator Geolith. The upstream author of the Jolly Good Emulation project broke out this core and ported it to libretro to make it available to as many users as possible, and we’re happy to welcome it into the fold. Historically, Neo […]

Continue reading

RetroArch 1.17 – new netplay features

RetroArch 1.17 expands Netplay to support playing multiplayer games that were originally played on two or more separate consoles or computers connected together. This is currently supported by two cores: DOSBox Pure and gpSP. In DOSBox Pure it is now possible to play DOS and early Windows multiplayer games that used IPX, Ethernet or a […]

Continue reading