Steam Controller

Steam Controller

136 ratings
Getting the Steam Controller to work with Emulators
By cunningmunki
**UPDATE 04/10/18**

IGNORE THIS GUIDE! I wrote this a while ago and since then I've realised the best way to play emulator games via Steam, and allow access to the Steam overlay and full Steam Controller configurations, is to RUN THE LAUNCHBOX 'BIGBOX' UI AS A NON-STEAM GAME. This allows you to create a single Steam Controller config for BigBox that will then persist throughout ALL the games launched from BigBox, regardless of the emulator. Coupled with Retroarch, this makes for a clean, consistent experience across all platforms, and no need to mess about adding hundreds of non-steam applications. Sure, you have to use two UIs to launch games, but the benefits are HUGE :-)

Get BigBox here: https://www.launchbox-app.com/premium


Old guide...
Most emulators work very well with the Steam Controller 'out of the box' but there are a few that need a bit of tweaking to set up. Having spent a long while trawling the internet for tips and guides on how to get the Steam Controller to work with various emulators I thought I'd try and put it all together in a single guide.

It is not a comprehensive guide to all emulators, simply because there are just so many, but I will attempt to add as much info as I can and update the guide with any tips or suggestions from others.

This guide only covers tips on how to get your Steam Controller fully functioning with certain emulators, it is not intended to include any controller configuration guides.
   
Award
Favorite
Favorited
Unfavorite
Emulators that work 'out of the box'
The following emulators all work with the Steam Controller out of the box, allow full customisation of both Gamepad and KBM inputs, and work with the Steam Overlay (I haven't tested the multi-platform emulators myself, I'm told they work fine, but let me know if not):
  • RetroArch[www.libretro.com] (Multi)
  • Mednafen[mednafen.fobby.net] (Multi)
  • Higan[byuu.org] (Multi)
  • Stella[stella.sourceforge.net] (Atari 2600)
  • Spectaculator[www.spectaculator.com] (ZX Spectrum)
  • Vice [vice-emu.sourceforge.net](Commodore 64)
  • Nestopia [nestopia.sourceforge.net](NES)
  • Snes9x [www.snes9x.com](Super Nintendo)
  • DeSmu ME[desmume.org] (Nintendo DS)
  • Dolphin [dolphin-emu.org](Game Cube & Wii)
  • PPSSPP[www.ppsspp.org] (PSP)
The following emulators also work ok, but have certain issues:
  • FCEUX[www.fceux.com] (NES) - Works ok with all inputs but no Steam Overlay
  • Fusion[segaretro.org] (Sega Genesis & Master System) - Only accepts KBM inputs and no Steam Overlay (if anyone knows a way to get the overlay to work in Fusion I'd love to know!!)
  • Visual Boy Advance[sourceforge.net] (GameBoy Advance) - Only accepts KBM inputs but Steam Overlay works fine

As I mentioned, controller configurations are out of the scope of this guide, but since almost all of these emulators allow for a full range of controller and KBM inputs it's really just down to personal preference how you want to map the in-game pad controls and emulator hotkeys. Many users have come up with very creative ways to configure controls for Dolphin and Nintendo DS emulators, so just play around and find a configuration that suits you best.

As for some of the others...
MAME Guide
  • Standard MAME [mamedev.org]mostly works ok, but it's a bit stubborn. It will only recognise default gamepad inputs. If you bind any keyboard or mouse commands to the Steam Controller they are totally ignored, and rebinding any controller inputs are also ignored (bizarrely).

  • The only option this leaves you is to bind the controller commands to the native Mame inputs via its own interface, which is dead easy to do, and since most coin-op games only have a couple of buttons this leaves lots of additional controller inputs free to bind.


    Example of a MAME input config menu

  • By the way, if you have MameUI64 [www.mameui.info] then give up hope of getting the Steam Controller to work with it. In the same way that standard MAME ignores any KBM inputs, Mame64UI completely ignores all inputs.
Project 64 Guide
  • You'll need to download the Pokopom xinput plugin[ngemu.com] and extract it to the 'Plugin'/'Input' folder of Project 64[pj64-emu.com]

  • Pokopom's plugin is the holy grail for Steam Controller users who play certain emulators but doesn't allow changes to the default config, which is fine for most other emus but it means the four 'C' buttons of the N64 layout are fixed to the right analog stick. For a standard Xinput controller (like the 360 pad) this isn't really an issue, but for the Steam Controller it means the four-way 'C' buttons are bound to the right pad, which isn't ideal, but works ok. Two of the 'C' buttons, however, are mapped to B and Y (C-down and C-left respectively) which works well for many games that use those buttons for separate functions.


    Pokopom's settings screen (note the lack of binding options)


    Example of a Project 64 controller config
ePSXe (& PCSXR) Guide
  • You'll need to download the Pokopom xinput plugin[ngemu.com] and extract it to the plugins folder of ePSXe[www.epsxe.com]

  • Create a new folder called 'inis' in the main 'epsxe' folder (the reason for this will become clear later)

  • Get the latest version of PeteOpenGLTweak[ngemu.com], unpack it and put its contents in the 'plugins' folder

  • From the epsxe 'config/video' menu setting select 'PeteOpenGL2 Tweaks 2.2' (or whatever version you have) plugin and make sure you also already have Pete's OpenGL2 Driver 2.9[www.pbernert.com] in the plugins folder


  • Run ePSXe and just check that any game starts up ok. Close ePSXe

  • Go to the 'inis' folder you created earlier and you should find a file called "gpuPeteOpenGL2Tweak.ini" has been created; open it up with a text editor (notepad will do)

  • Find the section at the bottom labeled [PadPlugin] and change the two lines immediately below to the following (this will make sure ePSXe is using the pokopom input plugin, as you can't actually choose it from the ePSXe UI.):

    Port1 = plugins\padPokopom.dll Port2 = plugins\padPokopom.dll

    UPDATE: If you have epsxe 2.0 you can now select the controller plugins from the main epsxe window, so no need for the above two steps!

  • The Pokopom plugin starts working once you've booted up a game and ePSXe should now detect the Steam Controller as an Xinput device and work fine with any Gamepad inputs you use on your controller config

  • The plugin's controls cannot be rebound and attempting to change the controller settings via ePSXe has no effect on Pokopom. Thankfully, all the controls can simply be rebound by the Steam Controller to set up whatever controller binds you wish

  • By the way, if you like your games stretched to widescreen the PeteOpenGLTweak makes the aspect ratio fixed by default, for some strange reason (and changing the aspect ratio in graphics settings has no effect). So you'll need to edit the relevant section in "gpuPeteOpenGL2Tweak.ini" and change it to "false", like so:

    #Fixes fullscreen aspect ratio FixFullscreenAspect = false

(Thanks to hulkenstrong for the basis of this guide)
PCSX2 Guide
  • For PCSX2 [pcsx2.net]you'll need to download the Pokopom xinput plugin[ngemu.com] and extract it to the 'plugins' folder

  • That's it, off you go! As both PlayStation consoles have standard controller layouts, the Pokopom mappings work well in their default settings, but if you want to remap any controls on the Steam Controller, you can do so and they will work fine.

Launching emulator games from Big Picture
There are a few ways to launch emulator games from Steam's Big Picture. You can just add the emulators themselves as Steam shortcuts and run the games from the emulator, which is made easier by using the Steam Controller.

However, you can also launch games individually, which not only looks nice but it has the added advantage of allowing you to set up Steam Controller configurations for each game, not just each emulator. You can then share these configs with the rest of the Steam community. Another perk is being able to exit shortcuts via Big Picture, instead of having to bind exit hotkeys.

I've created a guide to explain the most popular methods of adding emulator games to Steam, which can be found here.

36 Comments
VBro96 Aug 9, 2018 @ 2:56pm 
CEMU when?
Wraith May 17, 2018 @ 2:25am 
I'm going round in circles on this, I think. I'm trying to get mame64 (from mamedev.org) working. The article says it should be okay, but I must be doing something wrong. It's also possible I've messed things up by some of the other changes I've tried. Can anyone tell me what I need to do in the following areas?

1) Which controller template should I set up in steam BPM
2) Should I set the above up at the game level or at the desktop config level, or somewhere else
3) any changes to the default mame.ini
4) any command line flags passed to mame64.exe
5) Any settings with in mame64 itself (Device Mapping? Anywhere else?)

I've tried dozens of different combinations, but nothing seems to work. My test for "nothing seems to work" is to go into an input configuration screen in mame, selecting an action, and pressing various controller buttons. There's no response to any controller presses when I do this, but pressing a keyboard button does set the input to use that button)
AuroraPhoenix44 Apr 10, 2018 @ 8:47pm 
Any thoughts or suggestions as to how to get the 3DS Citra emulator to work with the steam controller?
Hubble128 Jan 3, 2018 @ 6:59pm 
Greetings! This seems like an excellent guide - thank you for your hard work putting it together. Can I ask if you have confirmed if the steps above, particularly with Pokopom, work when you are using Steam controllers and a Steam Link? I have followed your steps as closely as possible, but get no response from my Steam controllers through the Link.

When I use the generic controller plugin that is included with ePSXe, it DOES allow me to use the controller, but only for one player, not two. This is why I went looking for a fix and discovered your guide. Any thoughts on what setting I might be missing?
Kandarihu Sep 5, 2017 @ 6:08am 
Either you only looked at the bulk of this guide and not my comment or I wasn't clear enough. If you use Big Picture to set the controller's Desktop Configuration as a Gamepad, it will cease to function as a mouse and limited keyboard and instead function as an XInput controller such as an XBOX 360 controller. And your emulator will see it and treat it as such, at least in theory.

Just remember to set it back when you're done.
retromac29 Sep 5, 2017 @ 2:04am 
Can anyone help me out with an idiot guide to using my Steam Pad on snes9x or something, please??
Tried mapping the buttons and it still doesn't follow the mappings.
I only downloaded it to play Link to the Past Randomised.
It says it's one that works 'out of the box' but the mappings aren't working properly.

Any help will be greatly appreciated.
Many thanks in advance.
Kandarihu Jul 29, 2017 @ 6:24pm 
I've had troubles figuring out how to get the Steam Controller to work with Retroarch without launching it through Steam. Technically I can get it to work as a controller easily by launching it through Steam, but that causes some problems that while minor, are issues I don't want to have to contend with. So my preferred way is to have Steam run the Steam Controller as a Gamepad through the desktop. Problem solved.
SodaPOP67 Jul 21, 2017 @ 4:31pm 
So I added the plugin to PJ64 1.6 and added PJ64 to my steam library and it doesn't recognize a controller. I'm really clueless tbh
MisterScratch Jul 21, 2017 @ 2:32pm 
http://steamcommunity.com/sharedfiles/filedetails/?id=826962415
Tutorial for setting up a steam controller for PCSX2
Trekimann Jun 22, 2017 @ 3:29am 
Hello, With pcsx2 is there a way to map one of the paddles on the steam controller to represent a half press of an analogue button? I'm trying to play MGS 2+3 but the fire button is based on the pressure you hold it down and as the steam controller is on or off it means not being able to stand down on firing. If the back paddle cold be mapped to simulate a half press of the button then it would make the game playable.