Echoes Unbound
Echoes Unbound is a native PC port of Metroid Prime 2: Echoes for Windows, Linux, macOS, iOS and Android with features like cutscene skip and widescreen support.
- Type: PC port
- Game: Metroid Prime 2: Echoes
- Runs on Windows, Linux, macOS, Android and iOS
- By Odrannnn
- Latest release v0.6.3, 2026-10-29
- Source: https://github.com/Odrannnn/MetroidPrime2Port
- Website: https://github.com/Odrannnn/MetroidPrime2Port/releases/latest
README
Echoes Unbound - Metroid Prime 2 native port
Looking for the first game? See the Metroid Prime Unbound.
You can find all new features and enhancements in the F1 menu (or start + back on controller) I recommend checking out Portal Transition Skip in F1 > Game!
A native build of Metroid Prime 2: Echoes for Linux, Windows, macOS, Android and (experimentally) iOS,
rendered through Aurora (SDL3/WebGPU). There's no emulator involved. Supported
discs: USA GameCube (G2ME01), PAL (G2MP01) and
Trilogy (R3ME01 USA, R3MP01 PAL).
This is a pre-release: please report what issues you find.
No game content is included. You need your own copy of the game: the port reads it from a disc image and never ships any of its assets. This repository ships no disc image, and neither does any package or release built from it.
What it adds over the console release
- Cutscene skip Switching between the dark and light world has never been so fast! Also try the warp cheat in Debug to swap world without portal!
- Widescreen with a widescreen-aware HUD, render scale, vsync and high fps support with frame interpolation
- Graphics: first-person FOV, MSAA, anisotropic filtering, dynamic resolution, HUD scale, arm cannon offset, toggles to hide the helmet and visor effects
- Controls: mouse and twin-stick aim, gyro aim, lock-on free aim, pointer aim, everything rebindable
- Optional tweaks: Fast Morph, Spring Ball, Toggle Lock-On, Sticky Charge, walk speed, scan speed, hint delay, elevator ride; an Original experience switch puts the retail behaviour back
- Skippable cutscenes
- Language switching on PAL and Trilogy discs
- Save states and quick resume after quitting
- Saves: import and export memory card files, with Dolphin and PrimeHack card folders
- Metroid Prime Trilogy: Trilogy's HUD frames, reticles and, opt-in, its radial beam and visor menus (mouse, pad and touch support)
- Suit colours Change colours of Varia, Dark and Light suits
- Mods: drop-in mod folders that replace disc data or single resources, and an HD texture pack (docs/MODS.md)
- Photo mode with a free camera and high-resolution capture
- In-game time display
- Discord Rich Presence
- Mobile touch overlay
- F1 overlay (Or Start + Back combo) This is the menu housing every setting!
Downloads
Releases are published on the GitHub releases page. Every build needs your own disc image; none of them contains one.
| Platform | Asset |
|---|---|
| Linux x86_64 / aarch64 | metroid-prime2-port-X-linux-{x86_64,aarch64}.tar.gz, or the AppImage |
| Linux x86_64 (Flatpak) | MetroidPrime2Port.flatpak (flatpak install --user MetroidPrime2Port.flatpak) |
| Windows x86_64 / arm64 | metroid-prime2-port-X-windows-{x86_64,arm64}.zip |
| macOS (Apple silicon) | metroid-prime2-port-X-macos-arm64.zip |
| Android (arm64) | metroid-prime2-port-X-android-arm64.apk |
| iPhone / iPad (experimental) | MetroidPrime2Port.ipa, unsigned: sign it yourself and sideload it (docs/IOS.md) |
Quick start: download the build for your platform, start it, and pick your disc
image when it asks (Android shows a file picker and copies the image into the
app). Supported discs are the GameCube USA (G2ME01) and PAL (G2MP01)
releases and the Wii Metroid Prime Trilogy (USA R3ME01, PAL R3MP01), as
.iso, .gcm, .rvz, .wia, .gcz, .ciso or .wbfs. See docs/PAL.md
and docs/TRILOGY.md for what is verified on each. Press F1
for every setting.
On Linux the AppImage bundles no libraries: FreeType, libpng and a Vulkan driver, X11 or Wayland come from the system.
Running
./metroid_prime2_port "/path/to/Metroid Prime 2 - Echoes.iso"
The MP2_DISC environment variable works too. Headless and scripted runs,
the gameplay harness and the area sweep are in docs/RUNNING.md.
Building
CMake 3.25+ and Ninja with a C++20 toolchain. A host build needs your disc only at run
time, never to compile. The port configuration is -DMP_SDK_HEADERS_ONLY=OFF,
which adds extern/aurora (it fetches its own SDL3 and Dawn) and builds the
metroid_prime2_port executable:
cmake -S . -B build-port-link -G Ninja -DMP_SDK_HEADERS_ONLY=OFF
cmake --build build-port-link --target metroid_prime2_port
docs/RUNNING.md has the run, test and coverage commands,
docs/RELEASING.md what CI builds, docs/ANDROID.md the
Android build, and PORT_NOTES.md how the port works (the REL
runtime, TARGET_PC rules, SDK shims). The upstream matching build
(python3 configure.py && ninja, see docs/DECOMP_README.md) is kept
intact; every port change to an upstream file sits in a #ifdef TARGET_PC block.
Troubleshooting
- Where is my data? In a
user/folder beside the executable (settings, controls, memory cards, log, caches), so a copied build carries it with it; an AppImage keeps it in the folder the.AppImagefile is in. Where that folder cannot be written to (a Flatpak, a system package, a macOS app bundle) it is the per-user folder (%APPDATA%\Metroid Prime 2 Echoes,~/.local/share/Metroid Prime 2: Echoes,~/Library/Application Support/Metroid Prime 2: Echoes). An older install whosesettings.cfgis still in the per-user folder keeps using it until you move its contents intouser/.MP2_USER_PATHoverrides all of this. - Where are the logs?
metroid_prime2_port.login the user folder (F1 > SystemLog); the previous run's is
metroid_prime2_port.old.log. Attach it to a bug report. - "unsupported disc": the image is not one of the releases above. Re-dump it, or check you picked the right disc.
- Settings in a bad state: F1 > System > Settings > Reset configuration... backs up and resets every setting and mapping; saves are not touched.
Credits and licensing
This took the old echoes decomp as a base, expanded to get a fully playable port. Aurora (extern/aurora) is a vendored snapshot, and MusyX
(extern/musyx-port) provides the audio engine; third-party licences are kept
alongside them and copied into release packages.
LICENSE (MIT) covers this project's own work — the platform layer, the build and
packaging scripts, and the Android integration. It does not cover the game code
under src/ and include/, which comes from the decompilation and remains
Nintendo's. See NOTICE for the exact scope and the third-party terms.
LICENSE-decomp is upstream PrimeDecomp's CC0 dedication, kept as it was.
Metroid Prime 2: Echoes is a trademark of Nintendo. This project is unaffiliated with Nintendo and Retro Studios, and ships no game data.
Documentation
| Document | What it covers |
|---|---|
docs/SETTINGS.md | Every control, setting and environment variable |
docs/QOL.md | Quality-of-life features: what is in, what is next |
docs/RUNNING.md | Running the port: harness, console scripts, sweeps, coverage |
docs/PAL.md | The PAL disc: what is verified |
docs/TRILOGY.md | Metroid Prime Trilogy: mount, HUD, radial menus |
docs/MODS.md | The mods folder, suit colours, texture pack |
docs/CONSOLE.md | The debug console (MP2_CONSOLE) |
docs/ANDROID.md | The Android build, signing, install and crash reading |
docs/IOS.md | iPhone and iPad (experimental): sideloading, build |
docs/RANDOMIZER.md | The item randomizer |
docs/RELEASING.md | What a release contains and must carry |
docs/DECOMP_README.md | PrimeDecomp/echoes README (decomp build) |
PORT_NOTES.md | How the port works and non-obvious facts |
AI assistance
Parts of this port were written with AI coding assistants, under my oversight.