top of page

2.5.9 / 10-02-2019





average rating is 3.8 out of 5
average rating is 3.8 out of 5
average rating is 3.8 out of 5

Mupen64Plus is an open-source, multi-platform, Qt and plugin-based Nintendo 64 emulator which includes four MIPS R4300 CPU emulators, dynamic recompilers for 32-bit x86 and 64-bit amd64 systems. The video plugins included are RiceVideo, Arachnoid, Glide64, Z64, and some even include Hi-resolution texture support. There also a cheat system with Gameshark code support, speed adjustment with smooth sound output and much more. 

Rosalie's Mupen GUI

  • Rosalie's Mupen GUI is a free and open-source mupen64plus GUI written in C++. Check out here

Angrylion RDP Plus

  • This is a conservative fork of angrylion's RDP plugin that aims to improve performance and add new features while retaining the accuracy of the original plugin with multi-thead support and other benefits. Check out here


Windows: Vista SP2+ (Visual Studio 2013 redistributable required)

Linux: Kernal 

Mac: 10.6.8 (Snow Leopard)+


CPU: Dual-core 2.3 GHz+

RAM: 1 GB+

Most Recent Changes


  • Add ppc64le support

  • fix uninitialized variables

  • fix issue #627 - improve security by making stack segment not executable

  • Merge pull request #632 from djames1/master …

  • bump API version to 2.1.0 and modify input plugin attach logic to fix… 

Show Previous Changes


mupen64plus-core (2.5-7) unstable; urgency=medium

  • Upgraded to policy 4.5.0, no changes required

  • Allow build without (fake)root

  • Switch default Vcs-Git branch to debian/sid

  • Switch to debhelper compat 13

  • debian/copyright
       - Update copyright years to 2020
       - Use spaces to start continuation lines

  • Drop duplicated fields from upstream/metadata

  • Update debian/watch for format 4

  • debian/patches:
       - Add Fix-multiple-definition-errors.patch,
         Fix FTBFS with GCC 10 (Closes: #966344)


  • Add Multi-Arch tags to packages without maintainer scripts and equal
         common files
       - Automatically select correct Vcs-Git branch
       - Upgraded to policy 4.4.0, no changes required
       - Switch to debhelper 12

  • debian/rules
       - Allow one to override pkg-config for crossbuilds

  • debian/copyright
       - Update copyright years to 2019

    -- Sven Eckelmann <email address hidden>  Tue, 27 Aug 2019 23:20:30 +0200


  • Change Vcs-Git to https://
       - update to debhelper 10
       - Move VCS-* to

  • Change debian URLs to https://

  • Sort debian control files with `wrap-and-sort -abst`

  • Upgraded to policy 4.2.1
       - remove get-orig-source rule from debian/rules

  • debian/copyright:
       - Update copyright years

  • debian/rules
       - Remove ddeb migration conflict against pre-stretch package
       - Drop (now default) parameter --parallel for dch

  • Add debian/upstream/metadata


  • debian/rules:
       - Build armhf for reproducible CI with NEON and GLES

debian/control, debian/rules:

  • Drop mupen64plus-core-dbg in favor of -dbgsym package

  • debian/patches:
       - Add Fix-spelling-errors.patch, Fix spelling errors

  • Update copyright years in debian/copyright


move ConfigSetParameterHelp to the first official release version 2.5

  • Change Vcs-Browser to new alioth CGit URL

  • Move Vcs URLs from collab-maint to pkg-games

  • Update upstream URLs

  • Set Maintainer to Debian Games Team
     * debian/patches:

  • Move patches to alternative DEP-3 format and manage them with gbp pq
       - Add Use-pkg-config-to-find-GLESv2-library.patch, Use pkg-config to
         find GLESv2 library
       - Add Remove-unused-GLESv2-library.patch, Remove unused GLESv2 library
       - Add Avoid-.text-relocations-in-PIC-shared-library.patch, Avoid .text
         relocations in PIC shared library
       - Add bugfix-gameshark-cheat-codes-which-modified-executab.patch,
         fix gameshark cheat code which modify already recompiled code
       - Add fix-joystick-mapped-Core-events-under-SDL2.patch, Fix
         joystick-mapped Core events under SDL2


  • New Upstream Verion

  • Upload to unstable

  • Upgraded to policy 3.9.6, no changes required
       - Update years
       - Fix errors in paths to specific files
       - Add new copyright information

  • debian/patches:
       - Remove upstream merged   two_events_interrupt.patch



  • Use Largefile Support enabled C API


  • Add Build-Depends for libminizip-dev




  • Add Origin information to patches

  • Cleanup patch counter_per_op.patch

  • Add format_eeprom.patch, A cleared EEPROM block has all bits to 1 and not 0

  • Add countperop_rominfo.patch, Allow to load CountPerOp info from  mupen64plus.ini

  • Add countperop_romdb.patch, Add CountPerOp info to mupen64plus.ini

  • Add sdl2_no_surface.patch, Remove unused SDL2 surface in compat code

  • Add sdl2_destroywindow.patch, Close SDL2 window when quitting Video subsystem

  • Add interpreter_cmd_link_unconditionally.patch, Save link information in *AL(L) instructions unconditionally

  • Add cheat_multiconditions.patch, Allow multiple preconditions per cheat

  • Add mario64_levitate.patch, Use same precondition for all parts of the Mario64 Levitate cheat

  • Add self_reference_romdb.patch, Fix self-references in mupen64plus.ini

  • Add invalid_reference_romdb.patch, Fix incorrect md5 references in mupen64plus.ini.

  • Add countperop_hydrothunter.patch, Fix freezing of Hydro Thunder

  • Add complete_resolve_romdb.patch, Only resolve using complete rom database entries

  • Add nondefault_resolve_romdb.patch, Don't overwrite rom specific settings during resolve phase

  • Add cheatengine_workarounds.patch, Use normal cheat engine to run workaround cheats

  • Add zelda_workarounds_romdb.patch, Add Zelda OoT cheats to mupen64plus.ini

  • Add workarounds_romdb.patch, Parse cheats from from mupen64plus.ini

  • Add pilotwings_workarounds_romdb.patch, Add note about (broken) Pilotwing64 shadow fix

  • Add pokemon_snap_workarounds_romdb.patch, Add workaround to make Pokemon Snap controls working and images selectable

  • Add flashram_read_handing.patch, Add missing read mode check in flashram_command -> execute

  • Add duplicates_cheatdb.patch, Fix duplicate entries and broken formatting in cheat files.

  • Add whitelist_cheatdb.patch, Remove leading/trailing whitespace in some cheat strings.

  • Add nfl_duplicates_cheatdb.patch, Remove duplicate cheatfile entry (NFL Quarterback Club 2000).

  • Add turok2_duplicates_cheatdb.patch, Remove duplicate cheatfile entry (Turok 2 - Seeds of Evil (FGD)).

  • debian/watch:
       - Change upstream check from bitbucket to github

  • debian/copyright:
       - Change upstream source to github

  • debian/
       - Change upstream repository to github
       - Change SCM from Mercurial to Git

  • Update copyright years in debian/copyright

  • Move keyring for signature verification to new debian/upstream/


  • Fix version number of the unicode FTBFS bug in the changelog

  • Upgraded to policy 3.9.5, no changes required

  • debian/patches:
       - Add oot_subscreen_delay_fix.patch, Add Missing Subscreen Delay Fix for
         Ocarina of Time
       - Add counter_per_op.patch, Allow to overwrite the cycles per instruction
       - Add two_events_interrupt.patch, Don't insert a second interrupt event
         from same type
       - Add delay_si.patch, Allow to disable interrupt delay after DMA SI
       - Add config_currentstateslot.patch, Use correct config parameter string
       - Add obsolete_variable.patch, Remove obsolete variable; caused crashes
         in PD/Goldeneye in Android Ed.


  • debian/patches:
       - Add sdl2_no_unicode.patch, Remove SDL unicode keycode compat code
         (Closes: #720157)


  • debian/patches:
       - Add n64_cic_nus_6105_reset.patch, Reset PIF_RAMb 46,47 after the
         n64_cic_nus_6105 challenge
       - Add sdl2_select_saveslot.patch, Fix saveslot selection for SDL2
         (Closes: #717801)


  • New Upstream Version

  • Upload to unstable

  • debian/patches:
       - Add multiple_main.patch, Fix multiple definitions of main in same namespace
       - Remove dejavu-font.patch, Don't use Dejavu fonts because upstream uses other font
       - Add bitstream-font.patch, Use font from ttf-bitstream-vera instead of installing own copy with libmupen64plus2
       - Remove upstream merged country_code_bits.patch,
         sdl2_joystick_events.patch, sdl2_keyrepeat.patch and sdl2_resize.patch

  • debian/control:
       - Build-Depend on debhelper 9.20130604 for support of parameters when detecting targets in dh_auto_*
       - Replace dependency to ttf-dejavu-core with ttf-bitstream-vera

  • debian/rules:
       - Work around new debhelper 9.20130624 dh_auto_{clean,test} behavior
         which is causing a FTBFS by adding an explicit
         override_dh_auto_{clean,test} rule

  • debian/watch:
       - Verify new upstream versions using GPG key 954F81B094AA5BB226F5


  • Fixes for various games (DK64, Zelda, Blast Corps)

  • add Ari64's dynamic recompiler for x86 (32-bit) and ARMimproved PJ64 savestate loading

  • support video window resizing (with help from video plugin and front-end application)

  • Auto-detect savestate type (Mupen64Plus or PJ64) when loading from a slot

  • many various code cleanups in core from casualjames

  • support to build against SDL2

  • debugger code cleanup

  • Project files for Visual Studio 2012

  • Makefile changesadd support for PowerPC and MinGW32 builds
    add cross-compiling support to build Win32 executables (MXE) under Linux


  • New feature: support for N64 internal real-time clock

  • use X-Scale's PIF-CIC algorithm instead of the hard-coded challenge-response pairs

  • New config parameter for path to save SRAM/EEPROM/MPK files, so they can be separated from emulator snapshots

  • updated core for new Mupen64plus 2.0 API versioning scheme

  • split core configuration data into 2 sections: Core and CoreEvents. Added version numbers and upgrade handling to both

  • Accurately emulate the RSP DMA operation (from Bobby Smiles)

  • bugfix: #290 - OnScreenDisplay text is sometimes captured in screenshots

  • bugfix: when the front-end specifies an override for the configuration directory, always use this path, so that we don't load the config from there and then save it back to the default user path

  • bugfix: #468 - On-screen-display problem under OSX

  • bugfix: Use option SaveStatePath from config file

  • bugfix: don't call SDL_Quit() until the core library is being unloaded. fixes some front-end use cases

  • bugfix: #410 - segfault in dma_pi_write()-->strlen() if /home/username/.local/share/mupen64plus/ owned by root

  • bugfix: for Interpreter cores, use proper math functions for ceil/floor/round/trunc instead of x87 rounding modes

  • many makefile fixes and improvements


  • Added some type checking to ConfigGetParameter() function, and a new error type

  • Bugfix: avoid segfault in the video extension code if SDL initialization fails (because video plugin fails)

  • Added new CoreGetRomSettings() function for front-ends

  • Allow to run dynarec in hardware DEP protected windows

  • Allow core .cfg parser to accept strings without quotes around them

  • API change: use new ReadScreen2() video plugin function

  • New re-entrant R4300 disassembler, from tty68k/zzt32, a man who loves MIPS processors

  • makefile fixes and improvements, code cleanups


  • New feature: configuration function ConfigGetParameterType()

  • New feature: up to 1000 screenshots per ROM are allowed

  • New feature: support for Gameshark 3.3 patch codes

  • Bugfix: Use Dynarec by default when core supports it. If dynarec is selected but unavailable, fall back to cached interpreter

  • Bugfix: screenshot directory handling code used unix-specific path separators; now is platform-independent

  • Bugfix: #313 - 64-bit inline assembly code in r4300/x86_64/rjump.c needs to have underscores before the symbols names in OSX

  • Bugfix: old bug in the core - hang if a ROM without a 16kb EEPROM type is loaded after a ROM with a 16kb EEPROM type

  • Bugfix: rumble feature caused memory corruption

  • Bugfix: Problem with zilmar API: the plugin RomOpen() functions had no way of returning errors to the core, causing crashes

  • Replaced api documentation .tar.gz file with the mediawiki text

  • Build script improvements:new feature: script can take an input argument to update to a tag or revision
    new feature: added bash script for building source packages of individual modules

  • Makefile improvements:dont run ldconfig on make install unless user is root
    added OS type GNU/kFreeBSD


  • doc: added tarball of emuwiki api documentation from 2010-01-06 for backup purposes

  • clean-up: removed almost all of the ifdef WIN32 statements

  • bugfix: stop spamming console with "Core: couldn't open memory pack file '...' for reading" messages

  • bugfix: stop spamming console with "Core: couldn't open eeprom file '...' for reading" messages

  • new feature: MSVC8 project file for mupen64plus-core, refactored code for VC8 compatibility

  • Makefile improvements:throw error if OS/CPU not supported
    use DESTDIR in install/uninstall paths
    Allow user-specified CC/CXX/LD paths
    makefile needs to install Core header files so that plugins can be built later


New 2.0 architecture advantages:

  • Simplified emulator Core, making it much more portable

  • Removed all GUI code from plugins, making them simpler and more portable

  • User interface development is not tied to Core emulator releases

  • All messages from core/plugins can be filtered and shown in GUI instead of only on console

  • Video Extension allows Front-end to override some video functions, ie to support embedded render window

  • Startup in Fullscreen mode, instead of always starting in windowed mode and switching to FS after few seconds

  • video resolution can be given via command-line parameter

  • all configuration options for core and plugins are in a single config file, can be configured with a single GUI

  • dummy plugins are automatically used if plugin loading fails for any reason

  • core and plugins all use the same conventions for where to put data/config files

Mupen64Plus core:

  • New feature: cheat code support

  • New feature: Keyboard shortcuts for Core commands are now user-configurable

  • New feature: can load/save PJ64 state files

  • Major code cleanup, refactored build system to separate source and object files

  • Removed many dependencies to simplify porting to other platforms

  • Moved all of the SDL event-related stuff into a new source file eventloop.c

  • Use XDG directory convention for file locations on Unix

  • bugfix: frame advance feature should advance every frame, instead of every vertical interrupt (every field)

  • bugfix: allow diagonal hat movements for core joystick commands

  • bugfix: modified SDL event loop joystick code so that gameshark button press is captured, and joystick commands that are level-triggered instead of edge-triggered (such as fast foward) can be accommodated

  • bugfix: fixed the outstanding SDL event issues by re-writing the code which handles the joystick-event-driven core commands. Now the axis-based commands use hysteresis and there is a single global event function for determining if the gameshark button is pressed

  • bugfix: OSD crash after pause-stop-start-pause of emulator

  • bugfix: Set video width and status, aiDacrate during savestate load

  • bugfix: in pure interpreter, Dont allow to override r0 register

  • bugfix #52: PJ64 load state patch from olejl77

  • bugfix #268: use aligned malloc and mprotect to set executable status for dynarec emitted code

  • bugfix #51: Floating Point Register data was not correctly converted when switching between 32-bit (MIPS-I) mode and 64-bit (MIPS III).
    New code more closely emulates behavior of r4300 hardware. Fixes collision problems in Banjo-Tooie

  • bugfix #272: rounding mode for x86 FPU not being set correctly in interpreter and pure interpreter cores

  • bugfix: many games need different ScreenUpdateSetting to work properly with Rice Video

bottom of page