Mapping a real Nintendo 64 controller

Looked around and can’t find this info, so here goes nothing… I have a couple real N64 controllers plugged in via a Mayflash USB adapter. The controllers work fine and RetroArch recognizes button presses and the analog stick. However, the RetroArch config runs through the buttons as if it was looking at an XBox 360 controller so I don’t get any option for accurate mapping. I’m a bit new to RetroArch so any insight would be helpful.

thanks for the information…

Newer core builds have a core option that can override the mapping on the retropad. Unfortunately, the mupen64plus core also has a bug in its remapping that may prevent you from remapping properly. It’s worth trying, though, and the bug should hopefully get squashed soon.

Ah, thanks for the info. I’m using nightlies and so far I have SNES working satisfactorily but that’s easy to do on a 360 controller. :slight_smile: The main thing I’d like to see in RetroArch would be easier controller configuration— something like when you go to map controllers in a core, maybe pop up an image of the original controller so you can click the buttons on it and map your inputs. Other than that I think I’ve gotten accustomed to the UI (getting used to to arrow keys/z/x instead of arrow keys/enter/esc took me a while) and I definitely love the shaders and extensibility of RetroArch.

bump!

I’m having the same problem mapping my N64 controller (actual N64 controller with a RetroUSB adapter) with the RetroArch “Controls” settings. It definitely wants me to configure for a different controller, like the OP said above.

Maybe there’s just an easy workaround, if someone has found which N64 buttons that RetroArch recognizes as which 360 buttons (or whatever controller it thinks I have).


My setup: -----> Mac OSX 10.14.6 -----> RetroArch 1.8.5 -----> Core: paraLLEl_n64_libretro.dylib -----> Content / ROMs: BattleTanx (U) [!].z64 BattleTanx - Global Assault (U) [!].z64 GoldenEye 007 (U) [!].z64 Mario Kart 64 (E) (V1.1) [!].z64 Mario Kart 64 (J) (V1.0) [!].n64


Separately… is there a link in here to a list of all controllers that do work seamlessly? Maybe the path of least resistance is buying a different controller (lame) and moving on.

Thanks!

What does it say it recognizes the controller as? You can try deleting the autoconfig profile for the false-positive match and/or check whether there’s a profile for your actual controller with the vid/pid commented out (we had to do that to avoid weird behavior caused by the conflicting profiles but we left them in for just such an occasion). If nothing else, you can just delete all of the autoconfig profiles and make your own profile in settings > input > port 1 binds (I would recommend looking at an existing N64 profile as a cheat-sheet for what retropad buttons should go on which N64 buttons to work well with the cores).

Thanks for the reply!
What I’ve been doing:

Load Core, Load Content, Run. Hit F1 for Quick Menu (in-game settings).

Quick Menu> Controls> Port 1 Controls> …

Device Type: “CONTROLLER” or “MOUSE” or “NONE”
Analog to Digital Type: “NONE” or “LEFT ANALOG” or “RIGHT ANALOG”

^^^ Not sure which options to select above. I’ve tried different arrangements, then reset the ROM.

After those, the button choices are of a controller I don’t recognize. It wants me to map keystrokes for these choices:

B Button (down)
Y Button (left)
Select Button
Start Button
Up D-pad
Down D-pad
Left D-pad
Right D-pad
A Button (right)
X Button (top)
L Button (shoulder)
R Button (shoulder)
L2 Button (trigger)
R2 Button (trigger)
L3 Button (thumb)
R3 Button (thumb)
Left analog X+ (right)
Left analog X- (left)
Left analog Y+ (down)
Left analog Y- (up)
Right analog X+ (right)
Right analog X- (left)
Right analog Y+ (down)
Right analog Y- (up)

Seems somewhat straight-forward, where to put the D-Pad, Start, B, A …

… but not for Yellow C-buttons (up/down/left/right), L and R, the joystick, or my Z trigger.

I’ve been digging for hours through retroarch.com and libretro.readthedocs.io. Not sure how to find and install an existing profile, or how I might manually map the above “Port 1 Controls.”

Thanks!
Dave

Those are the generic “retropad” controls. The retropad is an input abstraction we use to translate input across the various cores and input devices.

If your pad is recognized and autoconfigured, it will usually show the actual pad’s button labels there instead of the retropad labels, which makes remapping easier. Then, it’s only a single layer of abstraction instead of 2.

So, assuming your pad/adapter is not recognized (that is, when you plug it in, it says “blah blah gamepad number/number not configured”), you’ll need to first go to settings > input > port 1 binds and then hit ‘default all’, then ‘bind all’. You can use this pic as a reference for the default mapping of the N64 cores:

Once you have it mapped, hit “save autoconfig profile”, then ‘default all’ again. Close RetroArch and then reopen it. It should start saying "blah blah gamepad configured (instead of not configured). At that point, you can go into quick menu > controls and move stuff around as you see fit, though you shouldn’t really need to if it’s already mapped to the core’s defaults.

Thanks for the reply!

So I opened Retroarch, then immediately went to:
Settings > Input > Port 1 Binds> Bind Default All

Then I individually Bind’ed each button that N64 has a button for. I didn’t do Bind All, because I wasn’t quick enough at each button.

Port 1 Binds>
The ones ALL-CAPPED are selected:

Device Type: RETROPAD (or “Retropad w/Analog” or “None”)
Analog to Digital Type: NONE (or “Right Analog” or “Left Analog”)
Device Index: N64 RETROPORT (or “None”)
Mouse Index: 0

After mapping each button that the N64 controller actually has, the attached pic shows the settings.



I believe Nintendo used to call the N64 underneath trigger the “Z” button/trigger. Since you referred to it above as the “L” left trigger, I mapped this in Retroarch to L2 button (trigger), and it read as “6 (N/A),” as you can see in the pic. All the USB Retropad buttons were given a number followed by N/A, as the pic shows. Was “L2 button (trigger)” the correct trigger to map the N64’s trigger/Z button to?



Once mapped, I clicked "SAVE AUTOCONFIG" and backed all the way to the Main Menu.

…I loaded core:
Main Menu> Load Core> parallel_n64_libretro.dylib
…then loaded content:
Main Menu> Load Content> Mario Kart 64 (E) (V1.1) [!]
… then clicked run:
Quick Menu> Run

The “Start” button did not register. I reset the content and ran again; same result. I was able to get past the “Push Start Button” opening screen with the “B” button, to get to the Mario Kart game’s main menu. I then entered the Quick Menu:

Quick Menu> Controls> Port 1 Controls…

I will have to continue this post, because I’m a new user with only one upload permission per post.

P.S. … (continued from previous post)

Here’s a pic of what I see in there.



I may have accidentally changed a couple of these settings while screencapping, but it appears to be missing a Start button in the Port 1 Controls, among all the other confusion in this page. Not sure what to make of this, or where to go from here.

Thanks!
Dave