Data interchange, editor suite, and runtime re-implementations for games by Retro Studios
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Luke Street 0910863842 Resolve clang-tidy issues & update config 3 years ago
.github/workflows Update athena (fixes atdna with dynamic LLVM) 3 years ago
DataSpec Remove Editor & specter 3 years ago
NESEmulator Rename everything 3 years ago
Runtime Resolve clang-tidy issues & update config 3 years ago
Shaders Move all submodules to extern 3 years ago
assetnameparser Fix assetnameparser build 3 years ago
assets Add screenshot to 4 years ago
ci Change mac bundle id 3 years ago
extern Remove freetype2 submodule 3 years ago
gbalink gbalink: Amend code to compile with jbus changes 4 years ago
gmm Start renaming project to Metaforce 3 years ago
hecl ImGui cursors, clipboard, TTF font & fixes 3 years ago
imgui Resolve clang-tidy issues & update config 3 years ago
lldb-extras Rename everything 3 years ago
metaforce-gui Fix Qt 6.1 deprectation error 3 years ago
mpcksum CActorContraption fixes, better CMake dependency handling 5 years ago
visigen Start renaming project to Metaforce 3 years ago
.clang-format Update .clang-{format,tidy} 3 years ago
.clang-tidy Resolve clang-tidy issues & update config 3 years ago
.gitignore Remove Editor & specter 3 years ago
.gitmodules Remove freetype2 submodule 3 years ago
CMakeLists.txt Reorder bintoc 3 years ago
CMakeSettings.json GitHub Actions: Use static Qt5 on Windows 3 years ago
LICENSE Start renaming project to Metaforce 3 years ago Add Arch packages to (#409) 3 years ago Typo fix 5 years ago Remove Editor & specter 3 years ago Serialize CVarManager on shutdown; add build type to About 3 years ago


Formerly known as URDE

Status: Metroid Prime 1 In-Game (all retail GC & Wii versions)

Official Discord Channel:

Metaforce screenshot


Precompiled builds of the command-line extraction utility (hecl) with embedded dataspec libraries are available at This will give you intermediate dumps of original formats as blender and yaml representations.

Everything else is much too experimental to make portable/stable release builds (for now)

Platform Support

  • Windows 10 (64-bit, D3D11 / Vulkan)
  • macOS 10.15+ (Metal)
  • Linux (Vulkan)
    • Follow this guide to set up Vulkan & appropriate drivers for your distro.

Usage (GC versions)

  • Extract ISO: hecl extract [path].iso -o mp1
    • mp1 can be substituted with the directory name of your choice
  • Repackage game for Metaforce: cd mp1; hecl package
  • Run Metaforce: metaforce mp1/out

Usage (Wii versions)

NFS files dumped from Metroid Prime Trilogy on Wii U VC can be used directly without converting to ISO.

  • Extract ISO or NFS: hecl extract [path].[iso/nfs] -o mpt
    • mpt can be substituted with the directory name of your choice
  • Repackage game for Metaforce: cd mpt; hecl package MP1
    • The MP1 parameter is important here.
  • Run Metaforce: metaforce mpt/out

Metaforce options (non-exhaustive)

  • -l: Enable console logging
  • --warp [worldid] [areaid]: Warp to a specific world/area. Example: --warp 2 2
  • +developer=1: Enable developer console

Build Prerequisites:

  • CMake 3.13+
    • Windows: Install CMake Tools in Visual Studio
    • macOS: brew install cmake
  • Python 3+
    • Windows: Microsoft Store
      • Verify it's added to %PATH% by typing python in cmd.
    • macOS: brew install python@3
  • LLVM development package (headers and libs)
  • [Windows] Visual Studio 2019 Community
    • Select C++ Development and verify the following packages are included:
      • Windows 10 SDK
      • CMake Tools
      • C++ Clang Compiler
      • C++ Clang-cl
  • [macOS] Xcode 11.5+
  • [Linux] recent development packages of udev, x11, xcb, xinput, glx, asound
    • Ubuntu 20.04+ packages
      build-essential curl git ninja-build llvm-dev libclang-dev clang lld zlib1g-dev libcurl4-openssl-dev
      libglu1-mesa-dev libdbus-1-dev libvulkan-dev libxi-dev libxrandr-dev libasound2-dev libpulse-dev
      libudev-dev libpng-dev libncurses5-dev cmake libx11-xcb-dev python3 python-is-python3 qt5-default
    • Arch packages base-devel cmake ninja llvm vulkan-headers python3 qt6 clang lld alsa-lib libpulse libxrandr

Prep Directions

git clone --recursive
mkdir metaforce-build
cd metaforce-build

Update Directions

cd metaforce
git pull
git submodule update --recursive

Build Directions

For Windows, it's recommended to use Visual Studio. See below.

ninja (Windows/macOS/Linux)

cd metaforce-build
cmake -DCMAKE_BUILD_TYPE=Debug -G Ninja ../metaforce

CMake options

  • Build release optimized (better runtime performance): -DCMAKE_BUILD_TYPE=Release
  • Use clang+lld (faster linking): -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
  • Optimize for current CPU (resulting binaries are not portable): -DMETAFORCE_VECTOR_ISA=native

CLion (Windows/macOS/Linux)

(main development / debugging IDE)

Open the repository's CMakeLists.txt.

Optionally configure CMake options via File > Settings > Build, Execution, Deployment > CMake.

Qt Creator (Windows/macOS/Linux)

Open the repository's CMakeLists.txt via File > Open File or Project.

Configure the desired CMake targets to build in the Projects area of the IDE.

Visual Studio (Windows)

Verify all required VS packages are installed from the above Build Prerequisites section.

Open the metaforce directory in Visual Studio (imports CMake configuration).

MSVC and clang-cl configurations should import automatically.

Xcode (macOS)

cmake -G Xcode ../metaforce

Then open metaforce.xcodeproj

Optional Debug Models

We provide custom debug models for use to visualize certain aspects of the game such as lighting, in order to use these models you may download them from and extract to MP1/URDE in an existing HECL project (assuming paths are relative), then run the the following command:

hecl package MP1/URDE

This will cook and package the debug models and will automatically enable rendering of lights in a debug build of Metaforce.