The N64 controller has a shape all of its own — three grips, four C buttons, a Z trigger — that matches no modern gamepad. Recalbox handles the translation automatically; this page explains how it is done and how to change it.
There is nothing to configure: Recalbox generates the N64 configuration from the controller you declared in the configurator, every time a game starts.
The default mapping is:
| Your controller | N64 controller |
|---|---|
A |
C-Right |
B |
A |
X |
C-Up |
Y |
B |
START |
Start |
L1 / R1 |
L / R |
L2 |
Z |
L3 / R3 |
Mempak / Rumblepak |
| D-pad | D-pad |
| Left stick | Analog stick |
| Right stick | the four C buttons |
If your controller has no analog stick at all (arcade panel, retro pad), Recalbox switches strategy automatically: the D-pad becomes the analog stick, the
Xbutton becomesZ, and theC-UpandC-Rightbuttons are dropped.
The official N64 controllers for Nintendo Switch (Nintendo Switch N64 Controller and N64 Controller) additionally get dedicated handling that puts their four C buttons back where they belong.
The mapping table lives in an input.xml file. To customise it, copy the system file to your share and edit the copy — the original is rewritten by every update.
Connect over SSH.
Copy the reference file:
mkdir -p /recalbox/share/system/configs/mupen64
cp /recalbox/share_init/system/configs/mupen64/input.xml /recalbox/share/system/configs/mupen64/input.xml
Edit /recalbox/share/system/configs/mupen64/input.xml. Each line maps one input of your controller (a, b, x, y, l1, r1, l2, r2, l3, r3, start, select, up, down, left, right, joystick1up…) onto one input of the N64 controller:
<input name="a" value="C Button R" />
<input name="b" value="A Button" />
<input name="l2" value="Z Trig" />
The available N64 values are A Button, B Button, Start, Z Trig, L Trig, R Trig, C Button U, C Button D, C Button L, C Button R, DPad U, DPad D, DPad L, DPad R, X Axis, Y Axis, Mempak switch and Rumblepak switch. An empty value (value="") leaves the input unused.
Save and start a game: the file is re-read at every launch.
This file lives in your share: it survives updates. You can go back at any time by deleting your copy.
The Tribute64 ships with its own, inseparable wireless dongle. Plug the dongle in, then switch the controller on with START + UP (its default mode).
Its configuration ships with Recalbox: there is no need to run it through the configurator.
This controller is made for the N64 and 64DD only: do not try to use it on other systems.
If you play with a Libretro core, the four C buttons are not used by the general configuration. To get them back, create a folder-level configuration override named .retroarch.cfg in /recalbox/share/roms/n64:
input_player1_b_btn = "2" # A
input_player1_y_btn = "1" # B
input_player1_start_btn = "9" # Start
input_player1_select_btn = "8" # Select
input_player1_up_btn = "h0up" # D-pad up
input_player1_down_btn = "h0down" # D-pad down
input_player1_left_btn = "h0left" # D-pad left
input_player1_right_btn = "h0right" # D-pad right
input_player1_l_btn = "4" # L
input_player1_r_btn = "5" # R
input_player1_l2_btn = "6" # Z
input_player1_r_x_plus_btn = "10" # C-Right
input_player1_r_x_minus_btn = "0" # C-Left
input_player1_r_y_plus_btn = "3" # C-Down
input_player1_r_y_minus_btn = "11" # C-Up
input_player1_l_x_plus_axis = "+0" # Stick right
input_player1_l_x_minus_axis = "-0" # Stick left
input_player1_l_y_plus_axis = "+1" # Stick down
input_player1_l_y_minus_axis = "-1" # Stick up
The numbers match that specific controller. For any other N64 pad, read yours with the tools described in Testing a controller.
Generic USB N64 pads go through the visual configurator like any other controller. If the in-game result does not suit you, adjust the input.xml table described above, or drop a .retroarch.cfg override for Libretro cores.
Your controller works nicely and you would like everyone to get it out of the box? Share its configuration on the Recalbox Discord: it can be added to a future release.