Skip to content

Mupen64Plus emulates Nintendo 64 and Nintendo 64DD. It reads 3 files, 3 of them required: without a required file it does not start games. A required file is needed only by the machines that use it. Each file below cites the line of source code that reads it.

About this profile
Detail Value
Type standalone
Classification Official port
Source https://github.com/mupen64plus/mupen64plus-ui-console
Upstream https://github.com/mupen64plus/mupen64plus-core
Version 2.6.0
Revision mupen64plus/mupen64plus-ui-console@c8ac4862a019, mupen64plus/mupen64plus-core@6dca4c15370a
Profiled 2026-10-22
Profile YAML, JSON
Cores mupen64plus, mupen64plussa, mupen64plus-sa
Systems Nintendo 64, Nintendo 64DD
Install this emulator's files

With Batocera, Recalbox, ROCKNIX, AmberELEC, EmuELEC, KNULLI or RetroPie: the installer finds Batocera, Recalbox, ROCKNIX, AmberELEC, EmuELEC, KNULLI or RetroPie and its BIOS folder, then downloads only the files Mupen64Plus reads there and checks each one.

Open a terminal on the device. Or connect from a computer with SSH, a terminal over the network. Paste the line. Press Enter.

Terminal
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh -s -- --emulator mupen64plus
Technical notes

The mupen64plus program is the console front end, which loads the mupen64plus-core library and four plugins. AmberELEC builds the front end at c8ac4862 and the core at 6dca4c15 with the rice and glide64mk2 video, hle RSP, sdl input and sdl audio plugins, and EmuELEC builds the same set at older revisions (front end 32e27344, core 57828d93), whose media loader, IPL format check and ROM database lookup read the same files. Both build the core with USE_GLES=1, which turns the OpenGL on-screen display off. ref: AmberELEC packages/games/emulators/mupen64plussa/mupen64plussa-core/package.mk:5,13, EmuELEC packages/sx05re/emulators/mupen64plussa/mupen64plussa-core/package.mk:5, upstream projects/unix/Makefile:374-388

Cartridge boot needs no boot ROM. The PIF boot sequence is simulated and the CIC-NUS-6105 challenge is answered by an algorithm rather than a stored table. ref: upstream src/device/pif/bootrom_hle.c:48, upstream src/device/r4300/interrupt.c:445,496, upstream src/device/pif/n64_cic_nus_6105.c:93

64DD: the front end holds one IPL path and one disk path, the 64DD section's IPL-ROM and Disk keys, both empty by default and set by --dd-ipl-rom and --dd-disk. It reads them back from mupen64plus.cfg when the core asks and leaves the core's region callback empty, so whichever image the key names is loaded whatever region the disk carries. The core asks for the IPL only after a disk loads, reads it whole and byteswaps it after identifying its first word as 0x80270740 (z64), 0x40072780 (n64) or 0x27804007 (v64). Any other value, or a missing file, disables 64DD and the cartridge runs alone. ref: src/main.c:321-322, src/main.c:729-737, src/main.c:803-892, upstream src/main/main.c:1183-1248, upstream src/main/main.c:1719-1735 AmberELEC's mupen64plus.cfg sets IPL-ROM to "" and its m64p.sh passes no 64DD option, and its n64 system lists no disk extension, so 64DD is never reached there. EmuELEC's m64p.sh passes --dd-ipl-rom when <game>.ndd sits beside the cartridge, pointing at bios/Mupen64plus/N64DD IPLROM (J).n64, else bios/Mupen64plus/IPL.n64. ref: AmberELEC packages/games/emulators/mupen64plussa/mupen64plussa-core/config/mupen64plus-RG351V.cfg:4-9, AmberELEC packages/games/emulators/mupen64plussa/mupen64plussa-core/m64p.sh:102-112, EmuELEC packages/sx05re/emulators/mupen64plussa/mupen64plussa-core/m64p.sh:16,65-77,94-99

Transfer Pak carts come from the Transferpak keys GB-rom-1 to GB-rom-4 and their GB-ram counterparts, read the same way. The core fixes no name, size or hash for them, so neither the cart nor its save carries an entry here. ref: src/main.c:856-872, upstream src/main/main.c:1452-1478

Shared data files are searched in --datadir, then the core's SharedDataPath, then /usr/local/share/mupen64plus, /usr/share/mupen64plus and the working directory. The packages install the core's data directory and each plugin's .ini there. ref: upstream src/api/config.c:1610-1624, upstream src/osal/files_unix.c:43-48, upstream src/osal/files_unix.c:150-170

Optional content with no canonical artifact: hi-res texture packs read by rice and glide64mk2 from the user data directory. Written rather than obtained: mupen64plus.cfg, the mempak, eeprom, flashram and sram saves given default content when absent, the 64DD disk save, savestates and screenshots. ref: upstream src/main/main.c:1709-1712

3 files: 3 required, 0 optional. 6 more files come with the app.

File Required Hash
64DD_IPL_JP.n64 for Nintendo 64DD -
64DD_IPL_US.n64 for Nintendo 64DD -
64DD_IPL_DEV.n64 for Nintendo 64DD -
mupen64plus.ini with the app SHA1 37b26dbe0df6
mupencheat.txt with the app SHA1 f8b083f6a5a9
font.ttf with the app SHA1 1d7f6fa0c34e
InputAutoCfg.ini with the app SHA1 c71834f8e074
RiceVideoLinux.ini with the app SHA1 7299996b11d3
Glide64mk2.ini with the app SHA1 523de4d0c142

In this collection: 3 in repo and 0 missing.

64DD_IPL_JP.n64 required for Nintendo 64DD in repo

64DD IPL ROM (Japanese retail)

  • The image every commercially released disk needs. No name is fixed by the code: the path comes from the IPL-ROM key or --dd-ipl-rom. Read whole, then byteswapped after identifying the first word as z64, n64 or v64. Size is not checked and no hash is computed.

64DD_IPL_US.n64 required for Nintendo 64DD in repo

64DD IPL ROM (American retail)

  • Needed for a disk whose system data carries the US region word. The front end holds one IPL path and leaves the region callback empty, so this image is loaded by putting it in the same key. Same load path and format check as the Japanese image.

64DD_IPL_DEV.n64 required for Nintendo 64DD in repo

64DD IPL ROM (development)

  • Needed for a disk whose system data carries the development region word. Shares the single IPL key with the other two images. Same load path and format check.
6 files

mupen64plus.ini comes with the app

ROM database

  • Size: 438.6 KB
  • SHA1: 37b26dbe0df63c2887f958978e1638e2ddead1bc
  • Asked for by: upstream emulator
  • Source: src/main/rom.c:590-604 (upstream emulator)
  • Per ROM save type, player count, rumble and counter settings, looked up by MD5 or CRC. Absent, the core logs an error and runs every ROM on defaults.

mupencheat.txt comes with the app

Cheat code database

  • Read by the front end for the ROM's section when --cheats is given. Absent, a warning is logged and no cheat is offered.

font.ttf comes with the app

On-screen display font

  • Opened by the core's OpenGL on-screen display, which a USE_GLES=1 build leaves out.

InputAutoCfg.ini comes with the app

Controller auto-configuration database of the sdl input plugin

  • Size: 50.4 KB
  • SHA1: c71834f8e0749ba28135cefbec370a8ac6b3c26c
  • Source: mupen64plus-input-sdl src/autoconfig.c:196-218
  • Matched against the SDL joystick name to fill the controller mapping.

RiceVideoLinux.ini comes with the app

Per ROM settings of the rice video plugin

  • Size: 22.7 KB
  • SHA1: 7299996b11d37dd644d8c01adeb04fae15352983
  • Source: mupen64plus-video-rice src/Config.cpp:38, mupen64plus-video-rice src/Config.cpp:933-945

Glide64mk2.ini comes with the app

Per ROM settings of the glide64mk2 video plugin

  • Size: 17.0 KB
  • SHA1: 523de4d0c142bc112a7d94df26c0fe42a049d581
  • Source: mupen64plus-video-glide64mk2 src/Glide64/Main.cpp:1580-1591, mupen64plus-video-glide64mk2 src/Glide64/Ini.cpp:134-216
  • PluginStartup returns M64ERR_FILES without it, so the glide64mk2 renderer does not start.
.