A decompilation of Metroid Prime brought to you by fans of the series.
Go to file
Phillip Stephens ba95b75f72 Add submodules to build instructions
Former-commit-id: 18fcbc76f1
2023-12-21 15:32:27 -08:00
.github/workflows Update project.py, add recursive submodules to CI 2023-12-18 21:04:46 -08:00
.vscode Update dtk & use asset extraction for font 2023-11-26 00:56:57 -05:00
assets Cleanup, fixes & update README/CONTRIBUTING 2023-10-11 17:20:51 -04:00
buildstrings Migrate to dtk 2023-10-09 20:16:05 -07:00
config Sync MusyX source 2023-12-18 18:28:24 -08:00
extern Initial NESemu 2023-12-19 01:44:37 -08:00
include Initial NESemu 2023-12-19 01:44:37 -08:00
libc minor MusyX fixes 2023-10-21 16:00:13 -07:00
orig Cleanup, fixes & update README/CONTRIBUTING 2023-10-11 17:20:51 -04:00
sha1 Add missing sha1 files 2022-08-22 10:18:31 -04:00
src Initial NESemu 2023-12-19 01:44:37 -08:00
tools Update project.py, add recursive submodules to CI 2023-12-18 21:04:46 -08:00
.clang-format Start matching CScriptPlatform; more CScriptMazeNode 2022-09-18 01:55:13 -04:00
.gitattributes Cleanup, fixes & update README/CONTRIBUTING 2023-10-11 17:20:51 -04:00
.gitignore Cleanup, fixes & update README/CONTRIBUTING 2023-10-11 17:20:51 -04:00
.gitmodules Use https instead 2023-12-18 18:44:00 -08:00
CONTRIBUTING.md Cleanup, fixes & update README/CONTRIBUTING 2023-10-11 17:20:51 -04:00
README.md Add submodules to build instructions 2023-12-21 15:32:27 -08:00
configure.py Initial NESemu 2023-12-19 01:44:37 -08:00
ldscript.lcf Fix TRK_MINNOW_DOLPHIN.a linking 2023-02-07 21:39:29 -08:00

README.md

Metroid Prime Build Status Code Progress Data Progress

A work-in-progress decompilation of Metroid Prime.

This repository does not contain any game assets or assembly whatsoever. An existing copy of the game is required.

The following game versions are supported:

  • GM8E01_00 (USA v1.088)

If you'd like to contribute, see CONTRIBUTING.md.

Dependencies

Windows:

On Windows, it's highly recommended to use native tooling. WSL or msys2 are not required.
When running under WSL, objdiff is unable to get filesystem notifications for automatic rebuilds.

  • Install Python and add it to %PATH%.
  • Download ninja and add it to %PATH%.
    • Quick install via pip: pip install ninja

macOS:

  • Install ninja:
    brew install ninja
    
  • Install wine-crossover:
    brew install --cask --no-quarantine gcenx/wine/wine-crossover
    

After OS upgrades, if macOS complains about Wine Crossover.app being unverified, you can unquarantine it using:

sudo xattr -rd com.apple.quarantine '/Applications/Wine Crossover.app'

Linux:

  • Install ninja.
  • For non-x86(_64) platforms: Install wine from your package manager.
    • For x86(_64), WiBo, a minimal 32-bit Windows binary wrapper, will be automatically downloaded and used.

Building

  • Clone the repository:
    git clone https://github.com/PrimeDecomp/prime.git
    
  • Update and Initialize submodules:
    git submodule update --init --recursive
    
  • Using Dolphin Emulator, extract your game to orig/GM8E01_00 (or the appropriate version).
    • To save space, the only necessary files are the following. Any others can be deleted.
      • sys/main.dol
      • files/NESemuP.rel
  • Configure:
    python configure.py
    
    To use a version other than GM8E01_00 (USA), specify --version GM8E01_01 or similar.
  • Build:
    ninja
    

Diffing

Once the initial build succeeds, an objdiff.json should exist in the project root.

Download the latest release from encounter/objdiff. Under project settings, set Project directory. The configuration should be loaded automatically.

Select an object from the left sidebar to begin diffing. Changes to the project will rebuild automatically: changes to source files, headers, configure.py, splits.txt or symbols.txt.