I use version 1.2.2 and I want to remap my xbox360 controller A B buttons for NES games.
By default my xbox360 controller’s A button jumps in super mario bros and the B button is speedup. I want to remap speedup to the X button on the controller.
The Libretro 1.2 release blog post said:
– Ability to remap controls – An often-heard complaint before was the inability to change the controls. We have made this possible now. Once a game is loaded, go to the ‘Quick Menu’ and select ‘Core Input Remapping Options’. From there you can change the controls per core, and you can also save these changes to a config file.
But I have no such remapping option in my quick menu in version 1.2.2! I’ve tried with both xmb and rgui menu drivers and open the quick menu when the game is loaded.
edit: I found the problem. The “Core Input Remapping Options” is missing from quick menu only when I use the BNES core. But it is there for other cores. Is that a known bug?
Here is a manual workaround to remap for BNES. First load a NES game with another core like Nestopia, open quick menu, select “Core Input Remapping Options” and “save core remap file”. The remap files have this path and name format for a core wide remap
\config\remap\[corename]\[corename].rmp
and this for a single game only remap
\config\remap\[corename]\[game file name without extension].rmp
To manually remap for BNES we first copy
\config\remap\Nestopia\Nestopia.rmp
to
\config\remap\BNES\BNES.rmp
and then open BNES.rmp in a text editor.
It will look something like this
input_player1_b = "0"
input_player1_y = "1"
input_player1_select = "2"
input_player1_start = "3"
input_player1_up = "4"
input_player1_down = "5"
input_player1_left = "6"
input_player1_right = "7"
input_player1_a = "8"
input_player1_x = "9"
...
Now we must think in two steps. 1 Find out which variable name (input_player1_b etc) corresponds to which hardware button on the controller (green A button etc). 2 Switch values in the remap for the those buttons (their corresponding variables) that we want to remap.
I’m not sure what the complete answer to step 1 is. I first thought the list in the last half of the file
\autoconfig\xinput\Microsoft(R)Sidewinder(R)_Game_Pad_USB.cfg
answered that but that appears to be incorrect for hardware buttons green A and red B.
Through trial and error I discovered that I should edit the first two lines of the BNES.rmp file into this
input_player1_b = "1"
input_player1_y = "0"
That makes the blue X button on the controller do the speed/fireball action in the game. Problem solved.
But I’d still like to hear if someone can explain step 1 more fully and give a complete list of variable names and corresponding hardware buttons for the xbox360 controller in Windows . I also want to ask if there is a way to bind the same action to multiple buttons. For example can I map both the red B button and the blue X button on the controller to do the speed/fireball action in Super Mario Bros?