Post count: 2

I was able to eventually figure this out on my own. Maybe someone else will find this useful, so I’ll go through everything I went through to figure this out. I’m sure I could have made it easier on myself, but online searches kept pointing me to information that was outdated. Anyways, here you go:

First off, I previously tried screwing around with /opt/retropie/configs/n64/retroarch.cfg. Thankfully I had a backup and just restored it to the original. Secondly, I hooked up a keyboard and regained the ability to at least choose the n64 default emulator and specific choices for individual ROMs. So from there I found a n64 compatibility list and started selecting emulators from that sheet.

If I had a game based on lr-mupen64plus (Libretto? I think it’s called sometimes), I started a game with that emulator choice and was able to pull up an on-screen menu via F1 on my keyboard to do a custom mapping for my Xbox 360 controller.

However, most of the other games I was trying used mupen64plus, and either there is no onscreen menu to do the mapping or I can’t find one. Either way, I had to edit the /opt/retropie/configs/n64/mupen64plus.cfg file to make the specific mappings for my controller work.

To even know what the mappings were I had to plug in a keyboard, exit emulationstation and run the following command: jstest /dev/input/js0. It brough up text listing axis and buttons for the controller. I pressed every button, one at a time, watched what values changed for 0, and then made a notation. This is what I came up with for my Xbox 360 controller connected wirelessly to a 3rd party USB to wireless adapter (YMMV of course):

L Analog up:          axis -1
L Analog down       axis +1
L Analog left          axis -0
L Analog right       axis +0

R Analog up          axis -3
R Analog down     axis +3
R Analog left          axis -2
R Analog right        axis +2

Digital up               axis -5
Digital down          axis +5
Digital left               axis -4
Digital right             axis +4

Select    button 8
Start       button 9
Xbox button     button 10

A          button 0
B          button 1
X          button 2
Y          button 3

L trigger          button 6
R trigger          button 7
L shoulder button     button 4
R shoulder button     button 5

I then modified the mupen64plus.cfg file and looked for the [Input-SDL-Control1] section to modify the settings for the controller. In that section I HAD TO set mode = 0 (fully manual), otherwise it would just revert my custom mapping. Right under the # Digital button configuration mappings section is where I put in the customizations. Obviously these are my preferences but maybe this will be an example for someone:

# Digital button configuration mappings
DPad R = "hat(0 Right)"
DPad L = "hat(0 Left)"
DPad D = "hat(0 Down)"
DPad U = "hat(0 Up)"
Start = "button(9)"
Z Trig = "button(5)"
B Button = "button(1)"
A Button = "button(0)"
C Button R = "axis(2+)"
C Button L = "axis(2-)"
C Button D = "axis(3+)"
C Button U = "axis(3-)"
R Trig = "button(7)"
L Trig = "button(6)"

Lastly, it bothered me like crazy that there wasn’t a hotkey for me to exit the mupen64plus emulator from my controller. Since I did the hard work earlier to understand the configuration of every button and stick on my Xbox 360 controller, I just had to pick a single button for the hotkey (I believe that key combinations for mupen64plus are not allowed, but maybe I’m wrong). I decided to use the Xbox button, which for my controller was button 10. From looking online, I had list the joystick number. Since it tested as js0, then it’s joystick 0, or J0 for the parameter, and B10 for “button 10”. I modified the following area to allow the hotkey:
Joy Mapping Stop = "J0B10"

Frustrations with the controller on mupen64plus are now over! Hope this helped someone other than myself.