Add Ability to Map Inputs in RGUI

When I first set up RetroArch it was a pain trying to map my gamepads using Phoenix. Especially with certain cores like Genesis Plus GX, where it’s not clear how the SNES layout maps to Genesis controls until you do trial and error testing. It would be a lot easier to remap everything if I could do it in RGUI, like how you can in MAME’s OSD. Sometimes I forget what keys I’ve set for things like savestate or take screenshot and it would be a lot quicker to pull up RGUI to reference them instead of having to look at my cfg file.

I’d also like to be able to map multiple gamepads to the same inputs like you can in MAME or Mednafen. Right now you can only map the keyboard and one gamepad to player 1 controls for example. And only by editing the cfg file directly, since if you map gamepad controls then try to map keyboard ones afterward in Phoenix, it nulls out your gamepad controls.

It would be kinda cool to be able to map turbo buttons too. Like for NES you’d have a mapping for A, Turbo A, and B, then Turbo B.

It would probably take some work to add this since ideally you’d want core specific layouts in RGUI so you know what you are mapping (A B C X Y Z Start for Genesis, A B Start Select for Game Boy, plus all the directions, for example). It would make RetroArch easier to use though and could be a good feature for 1.0.0.

Have you tried using retroarch-joyconfig? It can be a little faster for setting up gamepad buttons, though I don’t think it’s good for setting hotkeys…

The current system works really well with frontends, like XBMC+Advanced Launcher because you can setup a system as an individual launcher and just add ‘-c /path/to/system-specific-config’ to the launch command and everything is set. You could even extend this to the CPSX vs Neo-Geo use case by setting each one up as its own system with the launcher, even though they’re using the same core.

You can also setup config file fragments and load it alongside a more generalized default config, though I don’t recall the exact details of how that’s done. Someone requested it on the forum a few months ago, so it shouldn’t be too hard to search for.

I haven’t tried joyconfig, that could be useful if it doesn’t null inputs for keyboard/gamepad when you configure the opposite. It wouldn’t be nearly as convenient as using RGUI to do it though. You can change stuff like video settings and such from RGUI, so why not remap controls? I’ve always figured that was something planned to be added later since it seemed so obviously suited to RGUI’s awesome on the fly configuration abilities.

I already do this using parameters in Hyperspin to load specific configs per system, and have a few per game configs I load by using the [exe] tag in my XMLs. I like the current multi config file setup. It would just be much easier to change or look up mappings via RGUI than having to go cfg diving every time.

For PSX I have a config for my Saturn pad and another one my DualShock 2. I had to go into my PSX HS xml and add [exe] tags for each game I wanted to use the DualShock 2 analog config (I let Saturn be the default). That would be simplified if I could just have a single config with both the Saturn and Dualshock mapped to player 1 controls at the same time like I have in Mednafen proper. Then I wouldn’t have to differentiate. I have keyboard controls mapped as well which is useful for fighters (I’m better with the arrow keys than arcade sticks or d-pads for fighters since I played so much MUGEN years back).

Turbo binds per button is just a mess. A million new binds that serve no purpose. Yes, the input mapping is a bit bare bones, but it is done deliberately. Input can easily be the most complex subsystem due to all the variables involved.

On consoles you can remap easily in RGUI, but on PC, it’s a bit more complex. Remapping all misc binds will be kinda ugly, that’s why you have RGUI after all.

I’ll admit that when I used Mednafen it was annoying to have to map all the turbo buttons for systems I didn’t use them for like PSX. But that was just because it forces you to remap all controller inputs instead of letting you map each one individually like MAME. I don’t miss turbo buttons too much though, I only really used them sometimes in the NES Mega Man games. I had an actual turbo pad with my NES back in the day so it was accurate to my experience I suppose.

I feel like it’d make RetroArch PC more appealing to people who aren’t used to editing cfg files and such if you could change, say, everything available to be changed in retroarch.cfg in RGUI. It’s weird that you can turn on hard sync in RGUI but you have to go into the cfg to turn on threaded, for example. I figure as RGUI becomes more robust Phoenix will be depreciated.

In the end it’s just convenience stuff. I’ve already got everything working how I like it. It just took more work than most other emulators.

I’ve been eyeing the DualShock 4 and Xbox One pads since they are supposed to have good D-Pads and I can’t help but think how much time it would take to remap everything in my 11 config files if I get one of those to replace my current Saturn/Dualshock 2 setup.

Not all options are found in RGUI, because some of them are just too obscure to bother with. Then again, this begs the question of why you’d use 11 different configs … If you’re using that much, maintenance hazards are bound to arise.

For joypad input, hotplugged autoconfig is the future imo. It’s only on Linux atm though. :v

One for each system (GBA, GBC, GEN, NES, NGP, PCE, PSX, SNES, WSwan) and two for specific games (GEN-Popful, Wswan-Silversword). That’s not counting PSX-Dualshock, which wouldn’t be needed if the the Dualshock 4 or XOne controller are good enough to replace my Saturn + Dualshock 2 setup. Each system had something I had to personalize for it so I couldn’t share cfgs; either the aspect ratio or something with the button layout. Or I wanted specific Save and State folders for the system. Except for the Sega stuff, the GEN cfg works fine for Game Gear, Master System and Sega CD. The special config for Popful Mail is to swap buttons since jump and attack aren’t in a usable position for that game in my default C maps to C, B maps to Z and A maps to B mapping for the Saturn pad.

For Judgement Silversword, the config moves the D-Pad controls 90 degrees, since it’s one of the vertical Wonderswan games. It also turns off shaders since I get a black screen when rotating the screen 90 degrees via RGUI if the shader is on. I wish there was a cfg or command line option to do that rotation so I didn’t have to go into RGUI every time I start that game to change it. It’s hard to control the GUI since the controls are rotated in that cfg :E