How to create controller binds globally instead of per system/core

When I used to set my user binds for my controllers with no core loaded, it would set them system wide for all cores.

Now, for whatever reason, I’m having to map my controller user binds per system. I don’t know what I did or what changed, but this is exhausting.

I need to know how to get the user 1 and user 2 binds to take effect for all cores/systems and not per core/per system like it is now and have no clue where to look.

Thanks,

–J

1 Like

Binding isn’t typically per-core. If your Hyperspin/Rocket Launcher launch commands are passing entire configs at launch using the -c command line switch, it’s going to use whatever binds are in there. Typically, you would just use the main retroarch.cfg and whatever binds it has and then you can move the core’s bindings around in the ‘controls’ menu of the quick menu.

I’m on rgui now due to other issues. Where is the “quick” menu? What is that exactly or does that only exist in XMB?

It’s the menu that comes up when you have content running.

You mean when I press “F1” ??

When I do that and go to input binds for user 1 and 2, for whatever reason, it only effects the system I’m currently using.

I want to know how to set the binds globally instead.

I thought all I had to do was load Retroarch with no core loaded, by starting the .exe but when I bind the controls there, it still doesn’t work in the individual systems when launched from RocketLauncher.

What am I missing or doing wrong?

Also, I can bind my controller, but I really want a keyboard (well, my control panel, which is set up as a keyboard through an i-pac 4) AND my xBox 360 controllers to work at the same time.

How do I do that?

I can’t seem to get the control panel working at all…

Yeah, the one when you hit F1. The ‘controls’ menu there is for input remapping.

The way RetroArch works is you have your physical buttons, then you have a virtual gamepad abstraction known as the “retropad”. You the retropad’s buttons to your physical buttons in settings > input > p1 (or p2 or whatever) input binds.

The cores all have their buttons/functions assigned to the retropad with sensible defaults (usually based on physical locations of the original controller), which lets you use cores without assigning buttons all the time. However, sometimes you might want to move the core’s buttons around on the retropad (for example, to move the NES B button to the retropad Y and NES A to retropad B), which you can do through the the quick menu > controls menu. These are called “remaps” and you can create them to go into effect when a core or specific game is loaded.

So, physical buttons > retropad > core buttons.

We also have autoconfiguration of recognized pads such that when you plug one up, it will automatically map its physical buttons to the corresponding retropad buttons. If you wanted to have the 360 pads only for games that need analogs or whatever, I would recommend just plugging them up when you’re ready to use them. If you want them to be plugged in all the time for use with 4-player games, you’ll want to just disable autoconfiguration entirely and just map them via p3 and p4 input binds menus and leave it at that.

I only want 2 player support. They are wireless controllers so when they are off, unfortunately, Windows no longer sees them. I have to turn them on, in order, before loading a game for my emulators to see them. However, Retroarch has NEVER configured the 360 controllers automatically for me, at least not configured them to user 1 and user 2 respectively, so I always go in and manually bind them.

Somewhere something is telling Retroarch to set the controls per system, though, and not globally like it used to be and I don’t know where to look.

Also, when I try setting up my control panel joysticks, it’s mapping them to 2, 4, 6, and 8 for instance, for player 1, instead of up, down, left, and right.

How do I change this so I can use the control panel AND the xbox 360 controllers at the same time for player 1 and player 2? That way people can choose whether they want to use the control panel or the xbox controllers…I don’t want 3 or 4 player support at all.

By the way, thank you for all the time you’ve taken to try and help me. I really appreciate it and know your time is valuable. Thanks again.

We typically don’t support multi-mapping, but we do support having keyboard assignments and gamepad button assignments at the same time, so you’re in luck :slight_smile: You may have to do some of it manually by editing the config with a text editor, though. I would try loading RA without a core and then mapping the keyboard binds first and then following up with the gamepad buttons. Once they’re bound like you want them, exit the program to make sure they’re written to your main config. Reopen and make sure it’s still like you want, then you should be able to load up cores and have your main bindings stick and just use the core remaps to move the core’s buttons around on the retropad.

The number thing is a bug that happens sometimes with keyboard binding. You’ll just have to change those to left/right/up/down in the config file(s).

There’s only two ways that the per-core thing could be happening: #1 is your HS/RL launch lines pointing to other configs directly instead of loading the main config and #2 is a super-old RetroArch build that still supports per-core configs. If it’s #1, it’s not going to stop unless/until you change that, if it’s #2 we can’t support super-old versions and you’ll need to update.

That’s so good to hear. That’s how I was doing it, btw. Going in and setting keyboard up first then simply binding again with the gamepad.

I am running 1.6.7. Is that the newest build? If not, where can I get newer? Should I be using the newest dev build and is that it?

I was able to partially get the keyboard working before by changing the 2, 4, 6, 8 manually to up, down, left, and right just like you said. I’m glad I was doing it right. However, that didn’t work for the player 2 joystick. It set those to letters…I can’t remember which letters right now, but changing those letters to up, down, left, and right didn’t have any effect at all and the player 2 joystick didn’t work.

Do you have any suggestions?

As always, thanks a million for your time. I feel like I’m almost there. :slight_smile:

For player 2, you don’t want up/down/left/right, you want G, D, R, and F as per the MAME default mappings: https://www.ultimarc.com/ipac2.html

1.6.7 is the current one. We stopped providing support for per-core configs back in like 1.2.something, IIRC.

Yes, it accepted the binds and that’s what it set them to, but in game, joystick 2 doesn’t work. Where should I look?

Good to know I’m on the latest version.

Ok, I deleted all the extra cfg files that RocketLauncher created, set my binds and now everything works as I want.

The only bad thing is sometimes when other devices are plugged in or removed/turned off, the game controllers will change ID’s in Windows and since they are never autoconfigured for player 1 and 2 by Retroarch, I have to then bind everything all over again.

I’d still like to try and figure out why they aren’t being autodetected and set up as player 1 and 2. At least the keyboard/joysticks and buttons are working, though. I did have to edit the cfg file to change 2, 4, 6, and 8 to up, down, left, and right, but player 2 worked this time thank goodness.

Thanks for your help,

–J

Yeah, the changing Windows device enumeration is a drag. We don’t have any solution for that, unfortunately.

I’m glad to hear the rest of it is working as expected, though! Now that you’re on the regular config setup, you can try turning on autoconfig (it won’t affect your keyboard binds, but you should probably backup your retroarch.cfg anyway) and then see if it recognizes them when you plug them in.