RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login
    Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

    Button Mapping for a real N64 Controller

    Scheduled Pinned Locked Moved Help and Support
    n64 controllern64 controlsn64 custom cont
    6 Posts 3 Posters 1.6k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      comegetsome
      last edited by comegetsome

      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/autoconfig

      Find 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!

      DavidDraperD 1 Reply Last reply Reply Quote 1
      • DavidDraperD
        DavidDraper
        last edited by

        Thanks!

        D

        1 Reply Last reply Reply Quote 0
        • D
          derekstellar
          last edited by

          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.

          1 Reply Last reply Reply Quote 0
          • DavidDraperD
            DavidDraper @comegetsome
            last edited by

            @comegetsome

            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.

            https://mrt-f.com/blog/2017/retropie/

            DavidDraperD 1 Reply Last reply Reply Quote 0
            • DavidDraperD
              DavidDraper @DavidDraper
              last edited by

              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

              C 1 Reply Last reply Reply Quote 0
              • C
                comegetsome @DavidDraper
                last edited by comegetsome

                @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!

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                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.