mirror of
https://github.com/Mr-Wiseguy/Zelda64Recomp.git
synced 2025-02-07 15:53:23 +01:00
c4c0f928b6
This commit updates the runtime for function hooking and implements any recomp-side functionality needed for them to fully hook (namely ROM decompression). For more details, see the relevant N64Recomp and N64ModernRuntime PRs.
286 lines
12 KiB
YAML
286 lines
12 KiB
YAML
name: validate
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
SDL2_VERSION:
|
|
type: string
|
|
required: false
|
|
default: '2.30.3'
|
|
N64RECOMP_COMMIT:
|
|
type: string
|
|
required: false
|
|
default: 'b18e0ca2dd359d62dcc019771f0ccc4a1302bd03'
|
|
DXC_CHECKSUM:
|
|
type: string
|
|
required: false
|
|
default: '4e6f4e52989aca69739880b40b9f988357f15d10ca03284377b81f1502463ff5'
|
|
secrets:
|
|
ZRE_REPO_WITH_PAT:
|
|
required: true
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
jobs:
|
|
build-linux:
|
|
runs-on: ${{ format('blaze/compute/{0}-amd64', matrix.os) }}
|
|
container:
|
|
image: dcvz/n64recomp:ubuntu-18.04
|
|
volumes:
|
|
# create a volume that we'll use as the new source for the node binary
|
|
# https://github.com/actions/checkout/issues/1809
|
|
- /nodeoverride:/nodeoverride:rw,rshared
|
|
- /nodeoverride:/__e/node20:ro,rshared
|
|
strategy:
|
|
matrix:
|
|
type: [ Debug, Release ]
|
|
os: [ ubuntu-22.04 ]
|
|
name: ubuntu-18.04 (x64, ${{ matrix.type }})
|
|
steps:
|
|
- name: Copy the Node20 binary
|
|
run: |
|
|
cp -r /node20217/* /nodeoverride/
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.ref }}
|
|
submodules: recursive
|
|
- name: ccache
|
|
uses: hendrikmuhs/ccache-action@v1.2
|
|
with:
|
|
key: ${{ matrix.os }}-z64re-ccache-${{ matrix.type }}-x64-${{ inputs.N64RECOMP_COMMIT }}
|
|
- name: Prepare Build
|
|
run: |-
|
|
git clone ${{ secrets.ZRE_REPO_WITH_PAT }}
|
|
unzip zre/files.zip > /dev/null 2>&1
|
|
- name: Build N64Recomp & RSPRecomp
|
|
run: |
|
|
git clone https://github.com/Mr-Wiseguy/N64Recomp.git --recurse-submodules N64RecompSource
|
|
cd N64RecompSource
|
|
git checkout ${{ inputs.N64RECOMP_COMMIT }}
|
|
git submodule update --init --recursive
|
|
|
|
# enable ccache
|
|
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
|
|
|
|
# Build N64Recomp & RSPRecomp
|
|
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER=g++-11 -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_MAKE_PROGRAM=ninja -G Ninja -S . -B cmake-build
|
|
cmake --build cmake-build --config Release --target N64RecompCLI -j $(nproc)
|
|
cmake --build cmake-build --config Release --target RSPRecomp -j $(nproc)
|
|
|
|
# Copy N64Recomp & RSPRecomp to root directory
|
|
cp cmake-build/N64Recomp ..
|
|
cp cmake-build/RSPRecomp ..
|
|
- name: Run N64Recomp & RSPRecomp
|
|
run: |
|
|
./N64Recomp us.rev1.toml
|
|
./RSPRecomp aspMain.us.rev1.toml
|
|
./RSPRecomp njpgdspMain.us.rev1.toml
|
|
- name: Hotpatch DXC into RT64's contrib
|
|
run: |
|
|
# check if dxc was updated before we replace it, to detect changes
|
|
echo ${{ inputs.DXC_CHECKSUM }} ./lib/rt64/src/contrib/dxc/bin/x64/dxc | sha256sum --status -c -
|
|
|
|
cp -v /usr/local/lib/libdxcompiler.so ./lib/rt64/src/contrib/dxc/lib/x64/libdxcompiler.so
|
|
cp -v /usr/local/bin/dxc ./lib/rt64/src/contrib/dxc/bin/x64/dxc
|
|
- name: Build ZeldaRecomp
|
|
run: |-
|
|
# enable ccache
|
|
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
|
|
|
|
cmake -DCMAKE_BUILD_TYPE=${{ matrix.type }} -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER=clang++-17 -DCMAKE_C_COMPILER=clang-17 -DCMAKE_MAKE_PROGRAM=ninja -G Ninja -S . -B cmake-build -DPATCHES_C_COMPILER=clang-17 -DPATCHES_LD=ld.lld-17 -DPATCHES_OBJCOPY=llvm-objcopy-17
|
|
cmake --build cmake-build --config ${{ matrix.type }} --target Zelda64Recompiled -j $(nproc)
|
|
- name: Prepare Archive
|
|
run: |
|
|
mv cmake-build/Zelda64Recompiled Zelda64Recompiled
|
|
rm -rf assets/scss
|
|
tar -czf Zelda64Recompiled.tar.gz Zelda64Recompiled assets/ gamecontrollerdb.txt
|
|
- name: Archive Zelda64Recomp
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Zelda64Recompiled-${{ runner.os }}-X64-${{ matrix.type }}
|
|
path: Zelda64Recompiled.tar.gz
|
|
- name: Build AppImage
|
|
run: |-
|
|
./.github/linux/appimage.sh
|
|
- name: Zelda64Recomp AppImage
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Zelda64Recompiled-AppImage-X64-${{ matrix.type }}
|
|
path: Zelda64Recompiled-*.AppImage
|
|
build-linux-arm64:
|
|
runs-on: ${{ format('blaze/compute/{0}', matrix.os) }}
|
|
strategy:
|
|
matrix:
|
|
type: [ Debug, Release ]
|
|
os: [ ubuntu-22.04 ]
|
|
name: ${{ matrix.os }} (arm64, ${{ matrix.type }})
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.ref }}
|
|
submodules: recursive
|
|
- name: ccache
|
|
uses: hendrikmuhs/ccache-action@v1.2
|
|
with:
|
|
key: ${{ matrix.os }}-z64re-ccache-${{ matrix.type }}-arm64-${{ inputs.N64RECOMP_COMMIT }}
|
|
- name: Install Linux Dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y ninja-build libsdl2-dev libgtk-3-dev lld llvm clang-15 libfuse2
|
|
|
|
# Install SDL2
|
|
echo ::group::install SDL2
|
|
|
|
# Enable ccache
|
|
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
|
|
|
|
wget https://github.com/libsdl-org/SDL/releases/download/release-${{ inputs.SDL2_VERSION }}/SDL2-${{ inputs.SDL2_VERSION }}.tar.gz
|
|
tar -xzf SDL2-${{ inputs.SDL2_VERSION }}.tar.gz
|
|
cd SDL2-${{ inputs.SDL2_VERSION }}
|
|
./configure
|
|
make -j 10
|
|
sudo make install
|
|
sudo cp -av /usr/local/lib/libSDL* /lib/aarch64-linux-gnu/
|
|
echo ::endgroup::
|
|
- name: Prepare Build
|
|
run: |-
|
|
git clone ${{ secrets.ZRE_REPO_WITH_PAT }}
|
|
./zre/process.sh
|
|
cp ./zre/mm_shader_cache.bin ./shadercache/
|
|
- name: Build N64Recomp & RSPRecomp
|
|
run: |
|
|
git clone https://github.com/Mr-Wiseguy/N64Recomp.git --recurse-submodules N64RecompSource
|
|
cd N64RecompSource
|
|
git checkout ${{ inputs.N64RECOMP_COMMIT }}
|
|
git submodule update --init --recursive
|
|
|
|
# enable ccache
|
|
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
|
|
|
|
# Build N64Recomp & RSPRecomp
|
|
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER=g++-11 -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_MAKE_PROGRAM=ninja -G Ninja -S . -B cmake-build
|
|
cmake --build cmake-build --config Release --target N64RecompCLI -j $(nproc)
|
|
cmake --build cmake-build --config Release --target RSPRecomp -j $(nproc)
|
|
|
|
# Copy N64Recomp & RSPRecomp to root directory
|
|
cp cmake-build/N64Recomp ..
|
|
cp cmake-build/RSPRecomp ..
|
|
- name: Run N64Recomp & RSPRecomp
|
|
run: |
|
|
./N64Recomp us.rev1.toml
|
|
./RSPRecomp aspMain.us.rev1.toml
|
|
./RSPRecomp njpgdspMain.us.rev1.toml
|
|
- name: Build ZeldaRecomp
|
|
run: |-
|
|
# enable ccache
|
|
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
|
|
|
|
cmake -DCMAKE_BUILD_TYPE=${{ matrix.type }} -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER=clang++-15 -DCMAKE_C_COMPILER=clang-15 -DCMAKE_MAKE_PROGRAM=ninja -G Ninja -S . -B cmake-build
|
|
cmake --build cmake-build --config ${{ matrix.type }} --target Zelda64Recompiled -j $(nproc)
|
|
- name: Prepare Archive
|
|
run: |
|
|
mv cmake-build/Zelda64Recompiled Zelda64Recompiled
|
|
rm -rf assets/scss
|
|
tar -czf Zelda64Recompiled.tar.gz Zelda64Recompiled assets/ gamecontrollerdb.txt
|
|
- name: Archive Zelda64Recomp
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: Zelda64Recompiled-${{ runner.os }}-ARM64-${{ matrix.type }}
|
|
path: Zelda64Recompiled.tar.gz
|
|
- name: Prepare AppImage
|
|
run: ./.github/linux/appimage.sh
|
|
- name: Zelda64Recomp AppImage
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: Zelda64Recompiled-AppImage-ARM64-${{ matrix.type }}
|
|
path: Zelda64Recompiled-*.AppImage
|
|
build-windows:
|
|
runs-on: windows-latest
|
|
strategy:
|
|
matrix:
|
|
type: [ Debug, RelWithDebInfo ]
|
|
name: windows (${{ matrix.type }})
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.ref }}
|
|
submodules: recursive
|
|
- name: ccache
|
|
uses: hendrikmuhs/ccache-action@v1.2
|
|
with:
|
|
key: ${{ runner.os }}-z64re-ccache-${{ matrix.type }}
|
|
- name: Install Windows Dependencies
|
|
run: |
|
|
choco install ninja
|
|
Remove-Item -Path "C:\ProgramData\Chocolatey\bin\ccache.exe" -Force -ErrorAction SilentlyContinue
|
|
- name: Configure Developer Command Prompt
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
- name: Prepare Build
|
|
run: |-
|
|
git clone ${{ secrets.ZRE_REPO_WITH_PAT }}
|
|
./zre/process.ps1
|
|
cp ./zre/mm_shader_cache.bin ./shadercache/
|
|
- name: Build N64Recomp & RSPRecomp
|
|
run: |
|
|
git clone https://github.com/Mr-Wiseguy/N64Recomp.git --recurse-submodules N64RecompSource
|
|
cd N64RecompSource
|
|
git checkout ${{ inputs.N64RECOMP_COMMIT }}
|
|
git submodule update --init --recursive
|
|
|
|
# enable ccache
|
|
set $env:PATH="$env:USERPROFILE/.cargo/bin;$env:PATH"
|
|
$cpuCores = (Get-CimInstance -ClassName Win32_Processor).NumberOfLogicalProcessors
|
|
|
|
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_MAKE_PROGRAM=ninja -G Ninja -S . -B cmake-build
|
|
cmake --build cmake-build --config Release --target N64RecompCLI -j $cpuCores
|
|
cmake --build cmake-build --config Release --target RSPRecomp -j $cpuCores
|
|
|
|
# Copy N64Recomp & RSPRecomp to root directory
|
|
cp cmake-build/N64Recomp.exe ..
|
|
cp cmake-build/RSPRecomp.exe ..
|
|
- name: Run N64Recomp & RSPRecomp
|
|
run: |
|
|
./N64Recomp.exe us.rev1.toml
|
|
./RSPRecomp.exe aspMain.us.rev1.toml
|
|
./RSPRecomp.exe njpgdspMain.us.rev1.toml
|
|
- name: Build ZeldaRecomp
|
|
run: |-
|
|
# enable ccache
|
|
set $env:PATH="$env:USERPROFILE/.cargo/bin;$env:PATH"
|
|
$cpuCores = (Get-CimInstance -ClassName Win32_Processor).NumberOfLogicalProcessors
|
|
|
|
# remove LLVM from PATH so it doesn't overshadow the one provided by VS
|
|
$env:PATH = ($env:PATH -split ';' | Where-Object { $_ -ne 'C:\Program Files\LLVM\bin' }) -join ';'
|
|
|
|
cmake -DCMAKE_BUILD_TYPE=${{ matrix.type }} -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER=clang-cl -DCMAKE_MAKE_PROGRAM=ninja -G Ninja -S . -B cmake-build -DCMAKE_CXX_FLAGS="-Xclang -fexceptions -Xclang -fcxx-exceptions"
|
|
cmake --build cmake-build --config ${{ matrix.type }} --target Zelda64Recompiled -j $cpuCores
|
|
env:
|
|
SDL2_VERSION: ${{ inputs.SDL2_VERSION }}
|
|
- name: Prepare Archive
|
|
run: |
|
|
Move-Item -Path "cmake-build/Zelda64Recompiled.exe" -Destination "Zelda64Recompiled.exe"
|
|
Move-Item -Path "cmake-build/dxcompiler.dll" -Destination "dxcompiler.dll"
|
|
Move-Item -Path "cmake-build/dxil.dll" -Destination "dxil.dll"
|
|
Move-Item -Path "cmake-build/SDL2.dll" -Destination "SDL2.dll"
|
|
Move-Item -Path "cmake-build/Zelda64Recompiled.pdb" -Destination "Zelda64Recompiled.pdb"
|
|
Remove-Item -Path "assets/scss" -Recurse -Force
|
|
- name: Archive Zelda64Recomp
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: Zelda64Recompiled-${{ runner.os }}-${{ matrix.type }}
|
|
path: |
|
|
Zelda64Recompiled.exe
|
|
dxcompiler.dll
|
|
dxil.dll
|
|
SDL2.dll
|
|
assets/
|
|
gamecontrollerdb.txt
|
|
- name: Archive Debug Files
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: Zelda64Recompiled-PDB-${{ matrix.type }}
|
|
path: |
|
|
Zelda64Recompiled.pdb
|