List of keys for each emulator?

Hi, I am having a REALLY frustrating time trying to configure my controller. What I need is a list of each core/system and the corresponding button. Because for some reason every controller is seen as some hybrid ps3/360 controller.

For example B down means nothing to me. What I want to do is configure (like in genesis) a b c x y z mode, etc. But there doesn’t seem to be an intuitive way of doing this. I can’t even configure my usb saturn controller, and even the madcatz fight controllers, as the buttons for genesis end up all over the place.

So to summerise, for each core I need a table of what buttons are the corresponding retroarch buttons.

The RetroArch model is just that, everything is mapped to a RetroPad. You should map your inputs to retropad and most emulators will just work.

Map your controller to something that resembles that layout

Genesis button mapping is a common question, since its layout is completely different from everything else. You can find it in the source code, in the libretro.c file, though I know this isn’t very helpful to many people. Here’s the relevant bits:

 case DEVICE_PAD6B:
      {
        if (input_state_cb(padnum, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L))
          temp |= INPUT_X;
        if (input_state_cb(padnum, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X))
          temp |= INPUT_Y;
        if (input_state_cb(padnum, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R))
          temp |= INPUT_Z;
        if (input_state_cb(padnum, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT))
          temp |= INPUT_MODE;
      }

      case DEVICE_PAD3B:
      {
        if (input_state_cb(padnum, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y))
          temp |= INPUT_A;
      }

      case DEVICE_PAD2B:
      {
        if (input_state_cb(padnum, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B))
          temp |= INPUT_B;
        if (input_state_cb(padnum, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A))
          temp |= INPUT_C;
        if (input_state_cb(padnum, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START))
          temp |= INPUT_START;
        if (input_state_cb(padnum, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP))
          temp |= INPUT_UP;
        if (input_state_cb(padnum, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN))
          temp |= INPUT_DOWN;
        if (input_state_cb(padnum, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT))
          temp |= INPUT_LEFT;
        if (input_state_cb(padnum, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT))
          temp |= INPUT_RIGHT;

So, using this as a guide, retropad B = genesis B, retropad A = genesis C, retropad Start = genesis Start, retropad Y = genesis A, retropad L = genesis X, retropad X = genesis Y, retropad R = genesis Z, and retropad Select cycles through genesis gamepad modes (3 vs 6 button, etc)

May I suggest that you have some CLEAR documentation on what button does what in each console. Not all consoles have the SNES scheme. We have sega’s scheme, and even nintendo didn’t stick to that after the snes.

What retroarch needs is an intuitive setup for controllers. Be is as the mame way (which is FAR superior in this way), or which ever. Since there is the option of having settings per core, hows about being able to load a controller set for each?

For example, you load the megadrive set (as you would loading the core) and then in the config screen you would have a b c x y z etc. Then if you load the n64 set, you get all the named buttons, c up down and all of that. Load the ps1 set, and it names the controls square, x etc.

At the moment it is a complete mess.

One thing I’ve learned in the last few months (and I’m making a generalization here, not implying that it’s your case) is that even if every single thing was documented people would always ask first.

I agree, some better documentation is needed. At the same I disagree. Following the MAME model is not a good idea. It’s overly complicated and the end result is a configuration per driver/per game. RetroArch strives for a sane out of the box experience. You just have to accept RetroPad as your default gamepad. Think of RetroArch as a games console with a different pad that you already have and all will be easier.

In genesis case (I don’t know if this is already rigged this way) buttons would be mapped like this a/b/c to y/x/l, x/y/z to b/a/r.

I’m thinking of a way of showing the core mapping to RetroPad in core information but I have nothing yet.

I’ve started a spreadsheet for my own ref, but could share later. Could you give me the N64 controls next please? Thanks.

Start=Start A=A B=B L=L1 R=R1 Z=L2 D-pad=D-pad Analog stick=Left analog stick C-Buttons=Right analog stick

Select allows you to activate a pre-configured button layout for certain games (mostly fighting ones). For example, it will map out Mortal Kombat Trilogy to use the same layout as MK3 on the SNES.

X, Y and R2 are unmapped.

Any more controls/special buttons to be aware of?

I can’t even configure my usb saturn controller

Yep, same here. I wanted to use it to play some fighting games and shmups because the d-pad on the 360 controller is useless. It’s infuriating that you can’t configure your own controllers. :confused:

For digital inputs, have you tried joytokey or something similar?

Why can´t you configure the controller? are inputs not registering?

Sorry to revive a dead thread, but is there a way to remap the L2 = Z button in the N64 emulator? I use L2 and R2 for save/load state.

In RGUI, just map the virtual L2 to some other physical button. Your physical L2 button can then be used for whatever you want.