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.

Usage

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>
...
^C
mupen64plus <rom.n64> # runs fullscreen in 800x600

Key Commands

Escape

Quit the emulator

0-9

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

F5

Save emulator state

F7

Load emulator state

F9

Reset emulator

F10

slow down emulator by 5%

F11

speed up emulator by 5%

F12

take screenshot

Alt-Enter

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

F

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.

[Input-SDL-Control1]

# 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).

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+)"

See Also


CategoryGame