Differences between revisions 3 and 4
Revision 3 as of 2015-10-26 21:27:15
Size: 4086
Editor: ?MisterHat
Comment: added jstest-gtk screenshot
Revision 4 as of 2015-10-26 21:35:08
Size: 4245
Editor: ?MisterHat
Comment: added n64 controller face
Deletions are marked like this. Additions are marked like this.
Line 10: Line 10:

=== Installation ===
apt-get install mupen64plus-ui-console
Line 113: Line 118:

''Labelled N64 controller face:''

{{attachment:n64.jpg|N64 controller face}}

Mupen64Plus is a cross-platform N64 emulator that works with many ROMs that are publically available. It is maintained by richard42 and was originally based off of mupen64, created by Hacktarux.

Mupen64Plus runs in the command line by default. Install a frontend like mupen64plus-qt or M64Py to use mupen64plus with a GUI.


apt-get install mupen64plus-ui-console


Just run the command with a path to the ROM:

mupen64plus <rom.n64>

Any options you pass once will be saved in the configuration and won't need to be repeated:

mupen64plus --resolution 800x600 --fullscreen <rom.n64>
mupen64plus <rom.n64> # runs fullscreen in 800x600

Key Commands


Quit the emulator


Select virtual 'slot' for save/load state (F5 and F7) commands


Save emulator state


Load emulator state


Reset emulator


slow down emulator by 5%


speed up emulator by 5%


take screenshot


Toggle between windowed and fullscreen

p or P

Pause on/off

m or M

Mute/unmute sound

g or G

Press "Game Shark" button (only if cheats are enabled)

/ or ?

single frame advance while paused


Fast Forward (playback at 250% normal speed while F key is pressed)


Decrease volume


Increase volume

Set Custom Controls

Open the ~/.config/mupen64plus/mupen64plus.cfg file with a text editor and navigate to the "[Input-SDL-ControlX]" section (X being the N64 controller port to configure, starting at 1).

First, change mode = 2 to mode = 0 to override the autoconfiguration.


# Mupen64Plus SDL Input Plugin config parameter version number.  Please don't change this version number.
version = 2
# Controller configuration mode: 0=Fully Manual, 1=Auto with named SDL Device, 2=Fully automatic
mode = 0
# Specifies which joystick is bound to this controller: -1=No joystick, 0 or more= SDL Joystick number
device = 0
# Specifies whether this controller is 'plugged in' to the simulated N64
plugged = True

If you're using a joysitck:

Install jstest-gtk (or joystick for jstest in command-line). This is required to view button presses in real-time with an interface.

Change the device value to the joystick index (/dev/input/jsX). Now, run jstest-gtk (or jstest /dev/input/jsX) and press buttons on the controller. Edit the fields in the file that correspond with the buttons you activate (for instance, Start = "button(9)", 9 is the number on jstest-gtk that lights up when pressing the middle button). Buttons can be set to an axis ID and direction as well (usually for C-buttons).

jstest-gtk while pressing buttons|

If you're using a keyboard:

Download this file to get the corresponding key IDs from their names. Edit each button field in the section, providing a name = "key(X)", where X is the key ID found in the downloaded file.

If you ever need to reset the controls back to their autoconfigured state, change mode = 0 back to mode = 2 and restart the emulator.

An example button configuration:

# Digital button configuration mappings
DPad R = "axis(4+)"
DPad L = "axis(4-)"
DPad D = "axis(5+)"
DPad U = "axis(5-)"
Start = "button(9)"
Z Trig = "button(6)"
B Button = "button(3)"
A Button = "button(2)"
C Button R = "axis(3+)"
C Button L = "axis(3-)"
3 Button D = "axis(2+)"
C Button U = "axis(2-)"
R Trig = "button(7)"
L Trig = "button(4)"
Mempak switch = ""
Rumblepak switch = ""
# Analog axis configuration mappings
X Axis = "axis(0-,0+)"
Y Axis = "axis(1-,1+)"

Labelled N64 controller face:

N64 controller face

See Also