Multiple Controller Help

Had RetroArch for a little over a day now so I apologize for the handholding I’m asking for. I have it working on my PC and have used Ice to load the games into my steam library. I can use steam link to play games on it but I have a few controller issues. My goal is to get 2+ controllers working for all games that have 2+ players.

First problem is that my controllers share control right now. I need extensive help on how to ensure my games load up with one controller for player 1 and another for player 2.

Second problem is my steam controller mapping needs some updating, which I figure won’t be that hard to fix if someone can point me in the right direction.

Thanks in advance for any help/advice. I don’t have a lot of background with this stuff but I’m a fast learner.

If they’re identical controllers, they will sometimes get their signals crossed such that one controller controls both players. You can fix that by going into settings > input > and then going to the second player’s device index and choosing the other controller (they should be numbered).

For the steam controller, it looks like we don’t have an autoconfig profile for it yet, so if you can get one set up and submit to the github repo, no one will ever have that problem again :slight_smile: If you go to settings > input > input user 1 binds, can you map everything via ‘user 1 bind all’? If so, you just need to go down to ‘user 1 save autoconfig’ and it will remember those settings forever and you can submit the file to the repo. It’ll be saved in your autoconfig\xinput directory.

They are two different controllers, but the first one I have feels like everything has automapped properly (generic Playstation like USB controller), the limited functionality of the steam controller just overlaps with the working controller instead of distinguishing player 1 and player 2.

Here’s my interpretation of what I need to do:

  1. Get in to RetroArch from the steam link while playing any ROM (I think there’s a button that will do this)
  2. settings > input > input user 1 binds, map everything via ‘user 1 bind all’ (Assuming this is to map across all cores and not all controllers)
  3. Repeat for user 2 (this will permanently map that controller as P2 which I’m fine with)

Sorry for being so dense, I’m kinda out of my element but super stoked to get this working. Haven’t really messed around with any of this before.

[e] Just to make sure I understand, the bindings will pay attention to the port they are coming from to allow the controllers to act independently instead of overlapping right?

Ideally, yes, they shouldn’t overlap. It should assign exactly one pad to one player, and that usually only messes up with 2 identical controllers.

Once you have an autoconfig profile set up for your steam controller, it should recognize it any time it’s plugged in, but it won’t assign the same player each time. I think it assigns them to players in the order you plug them in…?

[QUOTE=hunterk;41826]Ideally, yes, they shouldn’t overlap. It should assign exactly one pad to one player, and that usually only messes up with 2 identical controllers.

Once you have an autoconfig profile set up for your steam controller, it should recognize it any time it’s plugged in, but it won’t assign the same player each time. I think it assigns them to players in the order you plug them in…?[/QUOTE]

That isn’t an issue assuming it sets the keybinds based on controller and not based on player (since the controllers are different).

I didn’t have a chance to test this out yesterday but I should today. Doesn’t seem as daunting as I initially thought from lack of good google results, I just don’t know RetroArch. But seems like a saved manual map (which I had no idea how to get to before) should be pretty easy.

Any chance I could get explicit instructions because right now this isn’t working and I can’t find the answer for the life of me.

Currently both controllers trigger xinput when retroarch starts. From there I have no idea what to do. The steam controller does not function well at all. I need to know what settings to tweak and what to do besides just manually doing bind 1 all and bind 2 all. Do I save autoconfigs after? Will that even work with xinput? I need a step by step if possible.

Do it one at a time. Plug in your steam controller, bind all, save autoconfig. Exit RetroArch and unplug your steam controller. Go back into RA, plug in your other controller, (if it’s not recognized and autoconfigured) bind all, save autoconfig. Exit again. Unplug that controller.

Now, you should be able to plug both in without conflicts. Let us know if not.

So do I bind all for one of them to User 1, and bind all for the other to User 2? Is the xinput that activates with these throwing something off? Also do I need to do anything with the Device Index when doing this? Like making sure they don’t say the same thing?

No, the autoconfig files don’t store any information about player or device index. Just do it all on Player 1, first one then the other.

#1 thanks for all the help, I really really appreciate it.

Conceptually I’m struggling with what is going on. If there’s no device index (difference) and it’s automatically showing up using xinput, does me binding both controllers to user 1 and saving actually give retroarch a way of differentiating the two controllers?

No, but what I’m hoping is that once it recognizes and autoconfigures the pads, it’ll have an easier time differentiating them. That is, whatever wires are getting crossed currently will hopefully sort themselves out. It may not work but it’s the way controllers are supposed to be handled, so it’s a good place to start.

Ok so here’s where I’m at:

Bound the steam controller buttons in Retroarch, saved the keybinds. Now when I load Retroarch itself the steam controller works. When I launch any of my games through steam library (added through ICE, works for my non steam controller) the controller scheme is all bonkers. A button is speed up and B button is slow down. Is there some setting I need to force the steam controller bindings to apply to my emulators. I assumed the global setting was the default. Is it possible that every emulator needs it’s own manual bindings for the controller? How do I go about doing that if so?

I don’t know anything about ICE or the Steam Controller, specifically, but it sounds like the buttons may be triggering keyboard events.

The way RetroArch works is you map your physical buttons to the virtual retropad and then the core’s inputs are assigned to the retropad’s virtual buttons. That is, the retropad works as an intermediary between your physical buttons and the core’s control scheme. When we port a core, we assign a sane default mapping (sane as in, we don’t assign things like speed up / slow down to retropad buttons, only actual inputs).

Many/most cores have input remapping–accessible from the quick-menu’s “controls” submenu–where you can move the core’s various buttons around on the retropad’s virtual buttons (for example, you want an NES core’s B and A to be on the retropad’s Y and B buttons instead) but I don’t think that’s what’s going on right now.

[QUOTE=hunterk;42203]I don’t know anything about ICE or the Steam Controller, specifically, but it sounds like the buttons may be triggering keyboard events.

The way RetroArch works is you map your physical buttons to the virtual retropad and then the core’s inputs are assigned to the retropad’s virtual buttons. That is, the retropad works as an intermediary between your physical buttons and the core’s control scheme. When we port a core, we assign a sane default mapping (sane as in, we don’t assign things like speed up / slow down to retropad buttons, only actual inputs).

Many/most cores have input remapping–accessible from the quick-menu’s “controls” submenu–where you can move the core’s various buttons around on the retropad’s virtual buttons (for example, you want an NES core’s B and A to be on the retropad’s Y and B buttons instead) but I don’t think that’s what’s going on right now.[/QUOTE]

Ice wouldn’t affect this (I don’t think). ICE basically just catalogs my ROMs and tells steam/retroarch which core to use when I select a ROM from my steam library. It’s a one and done thing. It assigns a command like:

command=%l -fullscreen -L cores estopia_libretro.dll %r

to any given .nes file in my roms folder (and thus my steam library)

So the game will launch and then my normal controller works, but the steam controller has all the wonky bindings (I’ve tried using just steam controller as well).

Maybe I’m misunderstanding your issue. Just to recap, you went into RetroArch and mapped everything and then saved an autoconfig and now RetroArch recognizes your Steam controller and assigns the buttons as per your mapping and everything is working properly, right? Then, when you launch from Steam, the buttons are all crazy?

The mapping is recognized when I launch RetroArch from my Steam Link (Steam Library). My individual ROMs are in my Steam Library set to open with the command line I posted above. So I don’t have to open RetroArch and then load core/rom, I just open the ROM directly from my steam library and the game will launch. My normal controller works fine on all my ROMs with Steam Link (at least as far as I’ve tested), the Steam Controller does not.

Based on your description of the slow/fast speed motions I have a solid theory of what is going on (and I think I can fix it!). I haven’t had the steam link for very long so I don’t know it’s ins and outs. I’m pretty sure the Steam Link assigns it’s own default mapping for every game. It sounds to me like the Steam Link mapping (for my Steam Controller) is in some keyboard mode on any given ROM and that is overriding RetroArch becasue it goes first. So by the time RetroArch gets it’s hands on the controller it no longer recognizes any of my controller buttons because they are keyboard buttons.

I can’t test this out until after work today, but I feel confident that this will fix at least some of my issue.

The default steam controller setting was a keyboard, so I have changed it to a gamepad. N64 and SNES both work on steam controller/multiplayer. The steam controller works on NES, but all 2P games just has the controls shared and I don’t know how to separate it.

Same issue here. Both Steam Controllers are controlling the first player, while the 2nd player does not move.

I loaded this config file into autoconfig/xinput/ :

bumpy bump. can’t play, life’s ruined.

Go into settings > input > player 2 binds and set the device index to your other controller.

lol