From 1282f21d833963e2b8bedf46e37b064dc0797b89 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Sat, 5 Aug 2023 20:37:25 -0400 Subject: [PATCH] Add README.md & CI workflow --- .github/workflows/build.yml | 36 ++++++++++++++++++ README.md | 73 ++++++++++++++++++++++++++++++++++++ assets/dolphin-extract.png | Bin 0 -> 35269 bytes configure.py | 32 ++++++++++------ tools/dtk_version | 2 +- 5 files changed, 131 insertions(+), 12 deletions(-) create mode 100644 .github/workflows/build.yml create mode 100644 README.md create mode 100644 assets/dolphin-extract.png diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..e677285 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,36 @@ +name: Build + +on: + push: + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + container: ghcr.io/primedecomp/build:main + strategy: + fail-fast: false + matrix: + version: [G2ME01, G2MJ01, G2MP01] + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Git config + run: git config --global --add safe.directory "$GITHUB_WORKSPACE" + - name: Build + run: | + python configure.py --map --version ${{matrix.version}} --compilers /compilers/GC --orig /orig + ninja + # - name: Upload progress + # if: github.ref == 'refs/heads/main' + # continue-on-error: true + # env: + # PROGRESS_API_KEY: ${{secrets.PROGRESS_API_KEY}} + # run: | + # python tools/upload-progress.py -b https://progress.deco.mp/ -p prime -v ${{matrix.version}} \ + # build/mp1.${{matrix.version}}/main.dol.progress + - name: Upload map + uses: actions/upload-artifact@v3 + with: + name: ${{matrix.version}}.MAP + path: build/${{matrix.version}}.MAP diff --git a/README.md b/README.md new file mode 100644 index 0000000..b9dfe51 --- /dev/null +++ b/README.md @@ -0,0 +1,73 @@ +Metroid Prime 2: Echoes [![Build Status]][actions] +============= + +[Build Status]: https://github.com/PrimeDecomp/echoes/actions/workflows/build.yml/badge.svg +[actions]: https://github.com/PrimeDecomp/echoes/actions/workflows/build.yml + + + +A decompilation of Metroid Prime 2: Echoes. + +This repository builds the following DOLs: + +``` +6ef9b491d0cc08bc81a124fdedb8bfaec34d0010 build/G2ME01/main.dol +7f24a768f7b1a687adb88e56559ad8637ed80589 build/G2MJ01/main.dol +5a670d5da3d181e86a0df7cf7751c7055eee35fb build/G2MP01/main.dol +``` + + + +Dependencies +============ + +Windows: +-------- +- Install [ninja](https://github.com/ninja-build/ninja/releases) and add it to `%PATH%`. +- Install [Python](https://www.python.org/downloads/) and add it to `%PATH%`. + - Also available from the [Windows Store](https://apps.microsoft.com/store/detail/python-311/9NRWMJP3717K). + +macOS: +------ +- Install [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages): + ``` + brew install ninja + ``` +- Install [wine-crossover](https://github.com/Gcenx/homebrew-wine): + ``` + brew install --cask --no-quarantine gcenx/wine/wine-crossover + ``` + +Linux: +------ +- Install [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages). +- Install wine from your package manager. + - Faster alternative: [WiBo](https://github.com/decompals/WiBo), a minimal 32-bit Windows binary wrapper. + Ensure the binary is in `PATH`. + +Building +======== + +- Checkout the repository: + ``` + git clone https://github.com/PrimeDecomp/echoes.git + ``` +- Download [GC_WII_COMPILERS.zip](https://cdn.discordapp.com/attachments/727918646525165659/1129759991696457728/GC_WII_COMPILERS.zip) +- Extract the _contents_ of the `GC` directory to `tools/mwcc_compiler`. + - Resulting structure should be (for example) `tools/mwcc_compiler/1.3.2/mwcceppc.exe` +- Using [Dolphin Emulator](https://dolphin-emu.org/), extract your game to `orig/G2ME01`. +![](assets/dolphin-extract.png) + - To save space, the only necessary files are the following. Any others can be deleted. + - `sys/main.dol` + - `files/RelProd/*.rel` +- Configure: + ``` + python configure.py + ``` +- Build: + ``` + ninja + ``` diff --git a/assets/dolphin-extract.png b/assets/dolphin-extract.png new file mode 100644 index 0000000000000000000000000000000000000000..43d83ba639106f45924ec742f636f9ffa7dbf0f3 GIT binary patch literal 35269 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

dgI)~~ZsYF$?> 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 HP6