Button Mapping for a real N64 Controller
-
Hey everyone, I wanted to post my solution to N64 controller button mapping.
Now, this is for those of you that have an actual N64 style controller, and would like to use it with your lr cores on your Pie to play N64 games.
I have my original controller with a retrousb converter for that genuine nostalgic feel.
Through countless searches on these forums, I could never find the perfect solution. Something always had to be sacrificed between the A, B, and / or bottom C buttons. Now I have a mapping that works in the main menu, and in-game.
Be warned, this setup includes no Hot Key, so you'll want a second controller, keyboard etc., plugged in if you plan on exiting a game.
The main part of the solution relies on keeping the 'A' button unmapped (or rather mapping it to a button already in use), while setting your button mapping. Since you cannot leave the 'A' button un-mapped, (nor map 2 buttons to the same function) via RetroPie's main UI menu, you'll have to actually edit the .config file.
First step is to go ahead and just map your N64 controller through the main UI tool. Enter whatever, doesn't matter, this will just be enough to generate the file you'll need to edit.
Now, connect via some form of ftp (i like filezilla), and make your way here:
/opt/retropie/configs/all/retroarch/autoconfigFind the N64 controller you'd like to map, and copy / paste this over the mapped settings:
input_r_y_minus_btn = "11"
input_l_btn = "13"
input_r_y_plus_btn = "10"
input_up_btn = "3"
input_left_btn = "1"
input_r_x_minus_btn = "9"
input_l_y_plus_axis = "+1"
input_l_x_plus_axis = "+0"
input_right_btn = "0"
input_l2_btn = "5"
input_l_x_minus_axis = "-0"
input_r_x_plus_btn = "8"
input_r_btn = "12"
input_l_y_minus_axis = "-1"
input_y_btn = "6"
input_down_btn = "2"
input_start_btn = "4"
input_b_btn = "7"
input_a_btn = "6"You'll notice that "6" is mapped twice, this solves that whole issue of not being able to leave 'A' unmapped (and not being able to use the same button twice during the mapping phase).
Now in-game, every button on the N64 controller will function just as it normally did on the console itself. You can also navigate the root menu and select your desired game.
I hope someone finds this helpful.
Good luck, and if you have any questions I'll try to answer! -
Thanks!
D
-
Oh man, I've gotta try this! I upgraded to a Pi 4, mostly for the N64 compatibility. I bought a Brawler controller just for that reason, but could never get it set up.
-
Actually just tried this (see below) and it did not work.
I found this article here: I am going to see if this works instead.
-
More specifically, when I went into the
/opt/retropie/configs/all/retroarch/autoconfig/DragonRise Inc. Generic USB Joystick .cfg file
or the/opt/retropie/configs/all/retroarch/autoconfig/DragonRise Inc. Generic USB Joystick .cfg.bak file
and replaced their contents ""Not a file: /opt/retropie/configs/all/retroarch/autoconfig/DragonRise Inc. Generic USB Joystick .cfg.bak" with
input_r_y_minus_btn = "11"
input_l_btn = "13"
input_r_y_plus_btn = "10"
input_up_btn = "3"
input_left_btn = "1"
input_r_x_minus_btn = "9"
input_l_y_plus_axis = "+1"
input_l_x_plus_axis = "+0"
input_right_btn = "0"
input_l2_btn = "5"
input_l_x_minus_axis = "-0"
input_r_x_plus_btn = "8"
input_r_btn = "12"
input_l_y_minus_axis = "-1"
input_y_btn = "6"
input_down_btn = "2"
input_start_btn = "4"
input_b_btn = "7"
input_a_btn = "6"when I launched the game, (as soon as I launched Super Mario 64, when it says "press A to change settings" the system did not respond to the N64 usb controller at all.
Not sure what the problem is; if I need to format the instructions differently or do something else. If anyone has any suggestions I would apprecaite hearing them. Thanks!
David
-
@DavidDraper I'm sorry to hear that it is not working for you.
First off, you definitely shouldn't edit the .bak file, stick with only the .cfg file. Sorry if I wasn't clear there. I'm not sure what the .bak even does, or how to revert it.
Second, remember to only overwrite the button mappings. For example, in the .cfg file there are 2 lines above the mappings that I left intact. For me it reads:
input_device = "SealieComputing N64 RetroPort"
input_driver = "udev"This of course would change depending on what controller you are using.
If you've done all of the above correctly, then the only other thing that I can think of is that it might be because you are using a "Generic USB" controller rather than an original N64 controller with an adapter.
Perhaps this means your buttons are in a different order, or are labeled differently, I'm not really sure as I don't own a Dragon Rise controller to test with.Still, if you'd like, feel free to copy what your original dragon rise.cfg file was (prior to copy / pasting my info), and I'll see if I can translate it into something that may work for you.
Otherwise, good luck, and I hope that other solution works for you!
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.