A fix for black worlds on Adreno 730 phones (#7), an OpenGL ES option,
Remastered sun shadows, more room for the touch controls, and much better
logs for reporting GPU problems.
You need your own disc image. Metroid Prime (USA) v1.00, GM8E01 disc 0
revision 0. Nothing here contains any part of the game — no disc, no assets.
What changed
Graphics drivers
- Adreno 730 (Galaxy Z Fold4, Snapdragon 8+ Gen 1 phones): the world no
longer draws black (#7). The driver mishandled a bounds check in the
shaders; on that GPU the port now uses a form it handles. Other GPUs are
unchanged. - F1 > Video > Quality > Use OpenGL ES renders through OpenGL ES instead
of Vulkan, for drivers that draw wrongly under Vulkan. It takes effect after
a restart, and if OpenGL ES crashes while starting, the next start goes back
to Vulkan by itself.
Diagnostics
The log (metroid_prime_port.log; on Android in
Android/data/org.metroidprime.port/files/) now carries what's needed to
debug a GPU or driver problem, so please attach it to a report:
- Device and GPU: phone model, chipset and Android version, the GPU's
driver, features and limits, the screen formats it offers, and the
settings the game started with. - Hang watchdog: if the game stops producing frames, the log says what the
game and render threads were doing and for how long, with the game thread's
call stack (on Android, the system log around the hang too), and when frames
resume. On Android a lost GPU device also saves the system log. - Frame times at a few points after start, and a note when a shader takes
long to compile. - F1 > Video > Quality > GPU self-test draws ten known patterns through
the game's own rendering path, reads them back and writes PASS or FAIL for
each to the log.
Android touch controls
- Side margin moves every control in from the screen edges (for curved
screens and cases), Stick inset gives the left stick extra room, and
Button inset does the same for the face buttons and C-stick only. They
go up to 300 dp; Reset margins puts them back. F1 > Controls > Touch &
gyro. - With drag aiming, the R button only shows where it does something:
in Morph Ball, in the pause menu and on the map.
Remastered import (very experimental, unsupported)
the Remastered import and everything built on it are very
experimental and currently unsupported. Removemods/remastered-models
to get the retail game back. Nothing changes unless you run the import
yourself, and nothing of Remastered ships with the port. Everything below
except the sky fix needs a re-import.
- Sun shadows: rooms with a Remastered sun (the Frigate's docking hangar
most of all) cast real-time shadows from it, and lit surfaces take its
colour. - The docking hangar's force-field barrier and its shootable red
lights use their Remastered models. - Glass with see-through panes (the Elite Quarters Access windows) is
transparent again instead of an opaque haze. - Elite Quarters Access: the sliding stone panel at the Plasma door is no
longer a grey block. - Skies whose glow the import dropped (the planet seen from the Frigate
hangar) are no longer nearly black. This one needs no re-import.
Downloads
| Platform | File | Notes |
|---|---|---|
| Linux | MetroidPrime-x86_64.AppImage
| chmod +x, then run.
|
| Linux | MetroidPrimePort.flatpak
| flatpak install --user ./MetroidPrimePort.flatpak
|
| Linux | metroid-prime-port-0.16.0-linux-x86_64.tar.gz
| Bare binary and licences |
| Windows | metroid-prime-port-0.16.0-windows-x86_64.zip
| Unzip anywhere; needs a Visual C++ redistributable |
| Android | metroid-prime-port-0.16.0-android-arm64.apk
| Sideload; arm64-v8a, Android 9+ |
Licence
MIT covers this project's own work, but not the game code under
src/ and include/, which remains Nintendo's. See LICENSE and NOTICE.
Metroid Prime is a trademark of Nintendo. This project is unaffiliated with
Nintendo and Retro Studios.