A native Windows port of Metroid Prime Remastered, made by recompiling the Nintendo Switch release (version 1.0.0) into a normal Windows program. It is not an emulator. The game's code is translated to C++ ahead of time, a runtime stands in for the Switch's system services, and the game's graphics API (NVN) runs on Vulkan. It has a launcher, a setup tool, mouse and keyboard controls, any resolution and aspect ratio, and high refresh rates.
The release has no game files. You need your own dump of Metroid Prime Remastered version 1.0.0 and the keys from your own Switch. Not affiliated with Nintendo or Retro Studios.
- Windows 10 (1903 or later) or Windows 11, 64-bit
- A GPU and driver with Vulkan 1.3. It has been tested on an NVIDIA GeForce RTX 3080 only; AMD and Intel GPUs are untested
- About 14 GB of free disk space
- Your dump of the game, version 1.0.0 (
.nsp,.xci,.nszor.xcz; updates and patches are not supported) and yourprod.keys(if the dump was bought on another console, also itstitle.keys, next toprod.keys)
- Unzip the release into a folder with a short path (under about 180 characters) and run
mpr_launcher.exe. - Press "Set up game files...", choose your dump and your
prod.keys, and press Start setup. It takes about 5 minutes on a 16-core PC, longer on fewer cores. You can stop it and run it again later. - When setup closes, the launcher prepares shaders for your GPU (a few minutes, once per driver). When it says "Ready to play.", press Play.
Settings are in the launcher (display, mouse, keyboard, controller, button icons) and on the F1 page in the game, and are saved to controls.ini in the game folder. Saves are in %APPDATA%\MPRRecomp\save. Logs (mpr.log, setup.log) are in the game folder. To update, unzip a new release over the old folder. To uninstall, delete the folder and the save folder.
Defaults: WASD move, mouse aims, left button fires, right button or Q locks on, middle button or F fires missiles, Space jumps, Ctrl or C is the morph ball, Tab or M opens the map, Escape pauses, 1 to 4 pick the beam and 5 to 8 the visor. Xbox, PlayStation and Switch controllers work. Alt+Enter toggles fullscreen and F2 shows the frame rate. HELP.txt in the release lists every key, every setting and the fixes for common problems.
Open an issue and attach mpr.log from the run where it happened (the next run keeps the old one as mpr.log.prev). The top right of the launcher and the "mpr 0.1.0" line near the top of the log show your version. For a crash, also attach mpr_crash.txt or mpr_fatal.txt. Never attach game files, your dump or your keys.
- Open pull requests against
main. Say what you changed and what you ran. Keep unrelated clean-ups out, and write commit subjects as one plain sentence. - Code in
recomp/,runtime/andtools/lives in nxrecomp, included here as thebasesubmodule. Game bugs,game-build/and the docs belong here. - Never put game data, keys or anything extracted from the game in a pull request.
- Build (Visual Studio Build Tools with the C++ workload, LLVM 23 with clang-cl, CMake, Ninja, sccache, Vulkan SDK, Python 3.13 with uv, .NET 10; run from
cmdor PowerShell, not Git Bash):
git clone --recurse-submodules https://github.com/drakolordx7/MetroidPrimeRemasteredRecomp
mklink /J recomp base\recomp
mklink /J runtime base\runtime
mklink /J tools base\tools
uv venv tools\.venv --python 3.13
uv pip install --python tools\.venv -r recomp\requirements.txt numpy pillow
pwsh -File tools\textures\scripts\fetch_third_party.ps1
pwsh -File tools\setup\scripts\fetch_zstd.ps1
pwsh -File tools\setup\scripts\build.ps1
tools\setup\build\release\bin\mpr_setup_cli --input "Metroid Prime Remastered.nsp" --out game
recomp\scripts\build_mpr.cmd
pwsh -File tools\textures\scripts\build.ps1
pwsh game-build\scripts\build.ps1
build_mpr.cmd lifts the game's code and takes a while the first time. The program ends up in game-build\build\release\mpr.exe. Add -Release -Version 0.1.0 to the last command for the package build that tools\release\make_release.py zips. The tests are pwsh runtime\scripts\build.ps1 -Test (runtime) and pwsh -File tools\setup\scripts\build.ps1 -Test (setup tool). Folders with an oracle\LOCKED file are checks that must not be edited. More detail is in the READMEs of each folder in nxrecomp.
Maintained by drakolordx7.
Built on the work of others:
- Recompiler and runtime design: smo-recomp (the lifter this one started from), SuperMarioWonderRecomp by Projeto Belmante, ssbu-recomp (C++ exceptions), ScarletNX (service layouts) and LASRecomp
- Ryujinx (Ryubing): the Maxwell shader translator and the audio renderer port
- Eden and yuzu: file system, audio and display service layouts, and Eden as the reference for checking frames
- retrotool and PrimeRemasterStructs by PrimeDecomp: Metroid Prime Remastered file formats
- Libraries: SDL3, Dear ImGui, volk, Vulkan Memory Allocator, Vulkan-Headers, astc-encoder, bc7enc_rdo, zstd, AMD FidelityFX FSR 1, DejaVu Sans, and the Kenney Input Prompts icons
Contributors and testers: none yet. Everyone who sends a fix or a useful log goes here.
Licences of the third-party parts are in the licenses folder and THIRD_PARTY_NOTICES.txt of the release.
GPL-3.0, see LICENSE. Third-party components keep their own licenses.