mirror of
https://github.com/hedge-dev/UnleashedRecomp
synced 2026-06-08 20:30:02 -04:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| da5db2a05a | |||
| 985dbf3bc0 | |||
| 9fbd847d50 | |||
| 34a23d48db | |||
| 8915b06a95 | |||
| f9b5e52a8b | |||
| fd2fb745e0 | |||
| fe06134bb1 | |||
| 917dacf453 | |||
| 206145c44e |
@@ -8,6 +8,20 @@ type: Bug
|
|||||||
- [ ] I have checked the [Issues](https://github.com/hedge-dev/UnleashedRecomp/issues) page to see if my problem has already been reported
|
- [ ] I have checked the [Issues](https://github.com/hedge-dev/UnleashedRecomp/issues) page to see if my problem has already been reported
|
||||||
- [ ] I have confirmed that this bug does not occur in the original game running on original Xbox 360 hardware
|
- [ ] I have confirmed that this bug does not occur in the original game running on original Xbox 360 hardware
|
||||||
|
|
||||||
|
#### If you have DLC installed, please specify which ones you have.
|
||||||
|
- [ ] Apotos & Shamar Adventure Pack
|
||||||
|
- [ ] Chun-nan Adventure Pack
|
||||||
|
- [ ] Empire City & Adabat Adventure Pack
|
||||||
|
- [ ] Holoska Adventure Pack
|
||||||
|
- [ ] Mazuri Adventure Pack
|
||||||
|
- [ ] Spagonia Adventure Pack
|
||||||
|
|
||||||
|
#### If you have mods enabled, please specify which ones you have.
|
||||||
|
Provide a list of your enabled mods in Hedge Mod Manager here. You will not receive support for issues *caused* by mods.
|
||||||
|
|
||||||
|
#### If you have codes enabled, please specify which ones you have.
|
||||||
|
Provide a list of your enabled codes in Hedge Mod Manager here.
|
||||||
|
|
||||||
### Describe the Bug
|
### Describe the Bug
|
||||||
A clear and concise description of what the bug is.
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
|||||||
@@ -1,61 +0,0 @@
|
|||||||
name: Build Project (Flatpak)
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
env:
|
|
||||||
FLATPAK_ID: io.github.hedge_dev.unleashedrecomp
|
|
||||||
FREEDESKTOP_VERSION: 23.08
|
|
||||||
LLVM_VERSION: 18
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-flatpak:
|
|
||||||
name: Build Flatpak
|
|
||||||
runs-on: ubuntu-24.04
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout Repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
token: ${{ secrets.ORG_TOKEN }}
|
|
||||||
|
|
||||||
- name: Checkout Private Repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
repository: ${{ secrets.ASSET_REPO }}
|
|
||||||
token: ${{ secrets.ASSET_REPO_TOKEN }}
|
|
||||||
path: ./private
|
|
||||||
|
|
||||||
- name: Install Dependencies
|
|
||||||
run: |-
|
|
||||||
sudo apt update
|
|
||||||
sudo apt install -y flatpak-builder ccache
|
|
||||||
|
|
||||||
- name: Setup ccache
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: /tmp/ccache
|
|
||||||
key: ccache-${{ runner.os }}
|
|
||||||
|
|
||||||
- name: Prepare Project
|
|
||||||
run: cp ./private/* ./UnleashedRecompLib/private
|
|
||||||
|
|
||||||
- name: Prepare Flatpak
|
|
||||||
run: |
|
|
||||||
flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
|
||||||
flatpak --user install -y flathub org.freedesktop.Sdk//${{ env.FREEDESKTOP_VERSION }}
|
|
||||||
flatpak --user install -y flathub org.freedesktop.Sdk.Extension.llvm${{ env.LLVM_VERSION }}//${{ env.FREEDESKTOP_VERSION }}
|
|
||||||
|
|
||||||
- name: Build Flatpak
|
|
||||||
run: |
|
|
||||||
echo "commit_message=$(git log -1 --pretty=%s)" >> $GITHUB_ENV
|
|
||||||
export CCACHE_DIR=/tmp/ccache
|
|
||||||
flatpak-builder --user --force-clean --install-deps-from=flathub --repo=repo --ccache builddir ./flatpak/${{ env.FLATPAK_ID }}.json
|
|
||||||
flatpak build-bundle repo ./${{ env.FLATPAK_ID }}.flatpak ${{ env.FLATPAK_ID }} --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo
|
|
||||||
|
|
||||||
- name: Upload Artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: UnleashedRecomp-Flatpak
|
|
||||||
path: ./${{ env.FLATPAK_ID }}.flatpak
|
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
name: Build Project (Linux)
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
env:
|
|
||||||
LLVM_VERSION: 18
|
|
||||||
CMAKE_PRESET: linux-release
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: Build Linux
|
|
||||||
runs-on: ubuntu-24.04
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout Repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
token: ${{ secrets.ORG_TOKEN }}
|
|
||||||
|
|
||||||
- name: Checkout Private Repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
repository: ${{ secrets.ASSET_REPO }}
|
|
||||||
token: ${{ secrets.ASSET_REPO_TOKEN }}
|
|
||||||
path: ./private
|
|
||||||
|
|
||||||
- name: Setup ccache
|
|
||||||
uses: hendrikmuhs/ccache-action@v1.2
|
|
||||||
with:
|
|
||||||
key: ccache-${{ runner.os }}
|
|
||||||
|
|
||||||
- name: Cache vcpkg
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
./thirdparty/vcpkg/downloads
|
|
||||||
./thirdparty/vcpkg/packages
|
|
||||||
key: vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}
|
|
||||||
restore-keys: |
|
|
||||||
vcpkg-${{ runner.os }}-
|
|
||||||
|
|
||||||
- name: Install Dependencies
|
|
||||||
run: |-
|
|
||||||
sudo apt update
|
|
||||||
sudo apt install -y ninja-build llvm-${{ env.LLVM_VERSION }}-dev libgtk-3-dev
|
|
||||||
|
|
||||||
- name: Cache ccache Directory
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: /tmp/ccache
|
|
||||||
key: ccache-${{ runner.os }}
|
|
||||||
|
|
||||||
- name: Prepare Project
|
|
||||||
run: cp ./private/* ./UnleashedRecompLib/private
|
|
||||||
|
|
||||||
- name: Configure Project
|
|
||||||
env:
|
|
||||||
CCACHE_DIR: /tmp/ccache
|
|
||||||
run: cmake . --preset ${{ env.CMAKE_PRESET }} -DSDL2MIXER_VORBIS=VORBISFILE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache
|
|
||||||
|
|
||||||
- name: Build Project
|
|
||||||
env:
|
|
||||||
CCACHE_DIR: /tmp/ccache
|
|
||||||
run: cmake --build ./out/build/${{ env.CMAKE_PRESET }} --target UnleashedRecomp
|
|
||||||
|
|
||||||
- name: Upload Artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: UnleashedRecomp-Linux
|
|
||||||
path: ./out/build/${{ env.CMAKE_PRESET }}/UnleashedRecomp/UnleashedRecomp
|
|
||||||
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
name: Build Project (Windows)
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
env:
|
|
||||||
CMAKE_PRESET: x64-Clang-Release
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: Build Windows
|
|
||||||
runs-on: windows-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
token: ${{ secrets.ORG_TOKEN }}
|
|
||||||
|
|
||||||
- name: Checkout private repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
repository: ${{ secrets.ASSET_REPO }}
|
|
||||||
token: ${{ secrets.ASSET_REPO_TOKEN }}
|
|
||||||
path: .\private
|
|
||||||
|
|
||||||
- name: Setup ccache
|
|
||||||
uses: hendrikmuhs/ccache-action@v1.2
|
|
||||||
with:
|
|
||||||
key: ccache-${{ runner.os }}
|
|
||||||
|
|
||||||
- name: Cache vcpkg
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
./thirdparty/vcpkg/downloads
|
|
||||||
./thirdparty/vcpkg/packages
|
|
||||||
key: vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}
|
|
||||||
restore-keys: |
|
|
||||||
vcpkg-${{ runner.os }}-
|
|
||||||
|
|
||||||
- name: Install 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 Project
|
|
||||||
run: |
|
|
||||||
$commitMessage = git log -1 --pretty=%s
|
|
||||||
Add-Content -Path $env:GITHUB_ENV -Value "commit_message=$commitMessage"
|
|
||||||
copy .\private\* .\UnleashedRecompLib\private
|
|
||||||
|
|
||||||
- name: Configure Project
|
|
||||||
run: cmake . --preset ${{ env.CMAKE_PRESET }} -DSDL2MIXER_VORBIS=VORBISFILE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache
|
|
||||||
|
|
||||||
- name: Build Project
|
|
||||||
run: cmake --build .\out\build\${{ env.CMAKE_PRESET }} --target UnleashedRecomp
|
|
||||||
|
|
||||||
- name: Pack Release
|
|
||||||
run: |
|
|
||||||
New-Item -ItemType Directory -Path .\release
|
|
||||||
New-Item -ItemType Directory -Path .\release\D3D12
|
|
||||||
|
|
||||||
Move-Item -Path ".\out\build\${{ env.CMAKE_PRESET }}\UnleashedRecomp\D3D12\D3D12Core.dll" -Destination ".\release\D3D12\D3D12Core.dll"
|
|
||||||
Move-Item -Path ".\out\build\${{ env.CMAKE_PRESET }}\UnleashedRecomp\dxcompiler.dll" -Destination ".\release\dxcompiler.dll"
|
|
||||||
Move-Item -Path ".\out\build\${{ env.CMAKE_PRESET }}\UnleashedRecomp\dxil.dll" -Destination ".\release\dxil.dll"
|
|
||||||
Move-Item -Path ".\out\build\${{ env.CMAKE_PRESET }}\UnleashedRecomp\UnleashedRecomp.exe" -Destination ".\release\UnleashedRecomp.exe"
|
|
||||||
|
|
||||||
Compress-Archive -Path .\release\* -DestinationPath .\UnleashedRecomp-Windows.zip
|
|
||||||
|
|
||||||
- name: Upload Artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: UnleashedRecomp-Windows
|
|
||||||
path: .\UnleashedRecomp-Windows.zip
|
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
name: validate-external
|
||||||
|
on:
|
||||||
|
pull_request_target:
|
||||||
|
types: [opened, synchronize]
|
||||||
|
jobs:
|
||||||
|
authorize:
|
||||||
|
if: github.repository != github.event.pull_request.head.repo.full_name
|
||||||
|
environment:
|
||||||
|
${{ github.event_name == 'pull_request_target' &&
|
||||||
|
github.event.pull_request.head.repo.full_name != github.repository &&
|
||||||
|
'external' || 'internal' }}
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
steps:
|
||||||
|
- run: echo ✓
|
||||||
|
build:
|
||||||
|
needs: authorize
|
||||||
|
uses: ./.github/workflows/validate.yml
|
||||||
|
secrets:
|
||||||
|
ASSET_REPO: ${{ secrets.ASSET_REPO }}
|
||||||
|
ASSET_REPO_TOKEN: ${{ secrets.ASSET_REPO_TOKEN }}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
name: validate-internal
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
types: [opened, synchronize]
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
if: github.event_name == 'push' || github.repository == github.event.pull_request.head.repo.full_name
|
||||||
|
uses: ./.github/workflows/validate.yml
|
||||||
|
secrets: inherit
|
||||||
@@ -0,0 +1,201 @@
|
|||||||
|
name: validate
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
secrets:
|
||||||
|
ASSET_REPO:
|
||||||
|
required: true
|
||||||
|
ASSET_REPO_TOKEN:
|
||||||
|
required: true
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-linux:
|
||||||
|
name: Build Linux
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
env:
|
||||||
|
LLVM_VERSION: 18
|
||||||
|
CMAKE_PRESET: linux-release
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Checkout Private Repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: ${{ secrets.ASSET_REPO }}
|
||||||
|
token: ${{ secrets.ASSET_REPO_TOKEN }}
|
||||||
|
path: ./private
|
||||||
|
|
||||||
|
- name: Setup ccache
|
||||||
|
uses: hendrikmuhs/ccache-action@v1.2
|
||||||
|
with:
|
||||||
|
key: ccache-${{ runner.os }}
|
||||||
|
|
||||||
|
- name: Cache vcpkg
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
./thirdparty/vcpkg/downloads
|
||||||
|
./thirdparty/vcpkg/packages
|
||||||
|
key: vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}
|
||||||
|
restore-keys: |
|
||||||
|
vcpkg-${{ runner.os }}-
|
||||||
|
|
||||||
|
- name: Install Dependencies (Linux)
|
||||||
|
run: |-
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install -y ninja-build llvm-${{ env.LLVM_VERSION }}-dev libgtk-3-dev
|
||||||
|
|
||||||
|
- name: Cache ccache Directory
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: /tmp/ccache
|
||||||
|
key: ccache-${{ runner.os }}
|
||||||
|
|
||||||
|
- name: Prepare Project
|
||||||
|
run: cp ./private/* ./UnleashedRecompLib/private
|
||||||
|
|
||||||
|
- name: Configure Project
|
||||||
|
env:
|
||||||
|
CCACHE_DIR: /tmp/ccache
|
||||||
|
run: cmake . --preset ${{ env.CMAKE_PRESET }} -DSDL2MIXER_VORBIS=VORBISFILE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache
|
||||||
|
|
||||||
|
- name: Build Project
|
||||||
|
env:
|
||||||
|
CCACHE_DIR: /tmp/ccache
|
||||||
|
run: cmake --build ./out/build/${{ env.CMAKE_PRESET }} --target UnleashedRecomp
|
||||||
|
|
||||||
|
- name: Upload Artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: UnleashedRecomp-Linux
|
||||||
|
path: ./out/build/${{ env.CMAKE_PRESET }}/UnleashedRecomp/UnleashedRecomp
|
||||||
|
build-windows:
|
||||||
|
name: Build Windows
|
||||||
|
runs-on: windows-latest
|
||||||
|
env:
|
||||||
|
CMAKE_PRESET: x64-Clang-Release
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Checkout private repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: ${{ secrets.ASSET_REPO }}
|
||||||
|
token: ${{ secrets.ASSET_REPO_TOKEN }}
|
||||||
|
path: .\private
|
||||||
|
|
||||||
|
- name: Setup ccache
|
||||||
|
uses: hendrikmuhs/ccache-action@v1.2
|
||||||
|
with:
|
||||||
|
key: ccache-${{ runner.os }}
|
||||||
|
|
||||||
|
- name: Cache vcpkg
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
./thirdparty/vcpkg/downloads
|
||||||
|
./thirdparty/vcpkg/packages
|
||||||
|
key: vcpkg-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}
|
||||||
|
restore-keys: |
|
||||||
|
vcpkg-${{ runner.os }}-
|
||||||
|
|
||||||
|
- name: Install 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 Project
|
||||||
|
run: |
|
||||||
|
$commitMessage = git log -1 --pretty=%s
|
||||||
|
Add-Content -Path $env:GITHUB_ENV -Value "commit_message=$commitMessage"
|
||||||
|
copy .\private\* .\UnleashedRecompLib\private
|
||||||
|
|
||||||
|
- name: Configure Project
|
||||||
|
run: cmake . --preset ${{ env.CMAKE_PRESET }} -DSDL2MIXER_VORBIS=VORBISFILE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache
|
||||||
|
|
||||||
|
- name: Build Project
|
||||||
|
run: cmake --build .\out\build\${{ env.CMAKE_PRESET }} --target UnleashedRecomp
|
||||||
|
|
||||||
|
- name: Pack Release
|
||||||
|
run: |
|
||||||
|
New-Item -ItemType Directory -Path .\release
|
||||||
|
New-Item -ItemType Directory -Path .\release\D3D12
|
||||||
|
|
||||||
|
Move-Item -Path ".\out\build\${{ env.CMAKE_PRESET }}\UnleashedRecomp\D3D12\D3D12Core.dll" -Destination ".\release\D3D12\D3D12Core.dll"
|
||||||
|
Move-Item -Path ".\out\build\${{ env.CMAKE_PRESET }}\UnleashedRecomp\dxcompiler.dll" -Destination ".\release\dxcompiler.dll"
|
||||||
|
Move-Item -Path ".\out\build\${{ env.CMAKE_PRESET }}\UnleashedRecomp\dxil.dll" -Destination ".\release\dxil.dll"
|
||||||
|
Move-Item -Path ".\out\build\${{ env.CMAKE_PRESET }}\UnleashedRecomp\UnleashedRecomp.exe" -Destination ".\release\UnleashedRecomp.exe"
|
||||||
|
|
||||||
|
Compress-Archive -Path .\release\* -DestinationPath .\UnleashedRecomp-Windows.zip
|
||||||
|
|
||||||
|
- name: Upload Artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: UnleashedRecomp-Windows
|
||||||
|
path: .\UnleashedRecomp-Windows.zip
|
||||||
|
build-flatpak:
|
||||||
|
name: Build Flatpak
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
env:
|
||||||
|
FLATPAK_ID: io.github.hedge_dev.unleashedrecomp
|
||||||
|
FREEDESKTOP_VERSION: 23.08
|
||||||
|
LLVM_VERSION: 18
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Checkout Private Repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: ${{ secrets.ASSET_REPO }}
|
||||||
|
token: ${{ secrets.ASSET_REPO_TOKEN }}
|
||||||
|
path: ./private
|
||||||
|
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: |-
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install -y flatpak-builder ccache
|
||||||
|
|
||||||
|
- name: Setup ccache
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: /tmp/ccache
|
||||||
|
key: ccache-${{ runner.os }}
|
||||||
|
|
||||||
|
- name: Prepare Project
|
||||||
|
run: cp ./private/* ./UnleashedRecompLib/private
|
||||||
|
|
||||||
|
- name: Prepare Flatpak
|
||||||
|
run: |
|
||||||
|
flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||||
|
flatpak --user install -y flathub org.freedesktop.Sdk//${{ env.FREEDESKTOP_VERSION }}
|
||||||
|
flatpak --user install -y flathub org.freedesktop.Sdk.Extension.llvm${{ env.LLVM_VERSION }}//${{ env.FREEDESKTOP_VERSION }}
|
||||||
|
|
||||||
|
- name: Build Flatpak
|
||||||
|
run: |
|
||||||
|
echo "commit_message=$(git log -1 --pretty=%s)" >> $GITHUB_ENV
|
||||||
|
export CCACHE_DIR=/tmp/ccache
|
||||||
|
flatpak-builder --user --force-clean --install-deps-from=flathub --repo=repo --ccache builddir ./flatpak/${{ env.FLATPAK_ID }}.json
|
||||||
|
flatpak build-bundle repo ./${{ env.FLATPAK_ID }}.flatpak ${{ env.FLATPAK_ID }} --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo
|
||||||
|
|
||||||
|
- name: Upload Artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: UnleashedRecomp-Flatpak
|
||||||
|
path: ./${{ env.FLATPAK_ID }}.flatpak
|
||||||
@@ -29,9 +29,11 @@ Unleashed Recompiled is an unofficial PC port of the Xbox 360 version of Sonic U
|
|||||||
- Intel: Sandy Bridge (Intel Core 2nd Generation)
|
- Intel: Sandy Bridge (Intel Core 2nd Generation)
|
||||||
- AMD: Bulldozer (AMD FX series)
|
- AMD: Bulldozer (AMD FX series)
|
||||||
- GPU with support for Direct3D 12.0 (Shader Model 6) or Vulkan 1.2:
|
- GPU with support for Direct3D 12.0 (Shader Model 6) or Vulkan 1.2:
|
||||||
- NVIDIA: GeForce GT 630
|
- NVIDIA: GeForce GT 630 (Kepler)
|
||||||
- AMD: Radeon HD 7750 (2012, not the RX 7000)
|
- AMD: Radeon HD 7750 (2012, not the RX 7000)
|
||||||
- Intel: HD Graphics 510 (Skylake)
|
- Intel: HD Graphics 510 (Skylake)
|
||||||
|
- Memory:
|
||||||
|
- 8 GB minimum
|
||||||
- Operating System:
|
- Operating System:
|
||||||
- Windows 10 (version 1909)
|
- Windows 10 (version 1909)
|
||||||
- A modern Linux distro such as Ubuntu 22.04 LTS
|
- A modern Linux distro such as Ubuntu 22.04 LTS
|
||||||
|
|||||||
@@ -285,7 +285,7 @@ static bool g_vulkan = false;
|
|||||||
static constexpr bool g_vulkan = true;
|
static constexpr bool g_vulkan = true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static bool g_mesaTriangleStripWorkaround = false;
|
static bool g_triangleStripWorkaround = false;
|
||||||
|
|
||||||
static constexpr bool g_hardwareResolve = true;
|
static constexpr bool g_hardwareResolve = true;
|
||||||
static constexpr bool g_hardwareDepthResolve = true;
|
static constexpr bool g_hardwareDepthResolve = true;
|
||||||
@@ -1702,13 +1702,9 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver)
|
|||||||
|
|
||||||
g_vulkan = (interfaceFunction == CreateVulkanInterfaceWrapper);
|
g_vulkan = (interfaceFunction == CreateVulkanInterfaceWrapper);
|
||||||
#endif
|
#endif
|
||||||
|
// Enable triangle strip workaround if we are on AMD, as there is a bug where
|
||||||
if (interfaceFunction == CreateVulkanInterfaceWrapper)
|
// restart indices cause triangles to be culled incorrectly. Converting them to degenerate triangles fixes it.
|
||||||
{
|
g_triangleStripWorkaround = (deviceDescription.vendor == RenderDeviceVendor::AMD);
|
||||||
// Enable triangle strip workaround if we are on the Mesa RADV driver, as it currently has a bug where
|
|
||||||
// restart indices cause triangles to be culled incorrectly. Converting them to degenerate triangles fixes it.
|
|
||||||
g_mesaTriangleStripWorkaround = deviceDescription.name.find(" (RADV ") != std::string::npos;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -2329,7 +2325,7 @@ static void DrawProfiler()
|
|||||||
ImGui::Text("Present Wait: %s", g_capabilities.presentWait ? "Supported" : "Unsupported");
|
ImGui::Text("Present Wait: %s", g_capabilities.presentWait ? "Supported" : "Unsupported");
|
||||||
ImGui::Text("Triangle Fan: %s", g_capabilities.triangleFan ? "Supported" : "Unsupported");
|
ImGui::Text("Triangle Fan: %s", g_capabilities.triangleFan ? "Supported" : "Unsupported");
|
||||||
ImGui::Text("Dynamic Depth Bias: %s", g_capabilities.dynamicDepthBias ? "Supported" : "Unsupported");
|
ImGui::Text("Dynamic Depth Bias: %s", g_capabilities.dynamicDepthBias ? "Supported" : "Unsupported");
|
||||||
ImGui::Text("Triangle Strip Workaround: %s", g_mesaTriangleStripWorkaround ? "Enabled" : "Disabled");
|
ImGui::Text("Triangle Strip Workaround: %s", g_triangleStripWorkaround ? "Enabled" : "Disabled");
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
|
|
||||||
ImGui::Text("API: %s", g_vulkan ? "Vulkan" : "D3D12");
|
ImGui::Text("API: %s", g_vulkan ? "Vulkan" : "D3D12");
|
||||||
@@ -6833,6 +6829,13 @@ void GetDatabaseDataMidAsmHook(PPCRegister& r1, PPCRegister& r4)
|
|||||||
|
|
||||||
if (isParticleModel)
|
if (isParticleModel)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// Adabat water is broken in original game, which they tried to fix by partially including the files in the update,
|
||||||
|
// which then finally fixed for real in the DLC. This confuses the async PSO compiler and causes a hang if the DLC is missing.
|
||||||
|
// We'll just ignore it.
|
||||||
|
bool isAdabatWater = strcmp(databaseData->m_TypeAndName.c_str() + 2, "evl_sea_obj_st_waterCircle") == 0;
|
||||||
|
if (isAdabatWater)
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
databaseData->m_Flags |= eDatabaseDataFlags_CompilingPipelines;
|
databaseData->m_Flags |= eDatabaseDataFlags_CompilingPipelines;
|
||||||
@@ -7421,8 +7424,8 @@ bool FxShadowMapMidAsmHook(PPCRegister& r4, PPCRegister& r5, PPCRegister& r6, PP
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// There is a driver bug on Mesa where restart indices cause incorrect culling and prevent some triangles from being rendered.
|
// There is a bug on AMD where restart indices cause incorrect culling and prevent some triangles from being rendered.
|
||||||
// Restart indices can be converted to degenerate triangles as a workaround until this issue gets fixed.
|
// This seems to happen on both Windows AMD drivers and Mesa. Converting restart indices to degenerate triangles fixes it.
|
||||||
static void ConvertToDegenerateTriangles(uint16_t* indices, uint32_t indexCount, uint16_t*& newIndices, uint32_t& newIndexCount)
|
static void ConvertToDegenerateTriangles(uint16_t* indices, uint32_t indexCount, uint16_t*& newIndices, uint32_t& newIndexCount)
|
||||||
{
|
{
|
||||||
newIndices = reinterpret_cast<uint16_t*>(g_userHeap.Alloc(indexCount * sizeof(uint16_t) * 3));
|
newIndices = reinterpret_cast<uint16_t*>(g_userHeap.Alloc(indexCount * sizeof(uint16_t) * 3));
|
||||||
@@ -7475,7 +7478,7 @@ PPC_FUNC(sub_82E44AF8)
|
|||||||
uint16_t* newIndicesToFree = nullptr;
|
uint16_t* newIndicesToFree = nullptr;
|
||||||
|
|
||||||
auto databaseData = reinterpret_cast<Hedgehog::Database::CDatabaseData*>(base + ctx.r3.u32);
|
auto databaseData = reinterpret_cast<Hedgehog::Database::CDatabaseData*>(base + ctx.r3.u32);
|
||||||
if (g_mesaTriangleStripWorkaround && !databaseData->IsMadeOne())
|
if (g_triangleStripWorkaround && !databaseData->IsMadeOne())
|
||||||
{
|
{
|
||||||
auto meshResource = reinterpret_cast<MeshResource*>(base + ctx.r4.u32);
|
auto meshResource = reinterpret_cast<MeshResource*>(base + ctx.r4.u32);
|
||||||
|
|
||||||
@@ -7538,7 +7541,7 @@ PPC_FUNC(sub_82E3AFC8)
|
|||||||
uint16_t* newIndices = nullptr;
|
uint16_t* newIndices = nullptr;
|
||||||
|
|
||||||
auto databaseData = reinterpret_cast<Hedgehog::Database::CDatabaseData*>(base + ctx.r3.u32);
|
auto databaseData = reinterpret_cast<Hedgehog::Database::CDatabaseData*>(base + ctx.r3.u32);
|
||||||
if (g_mesaTriangleStripWorkaround && !databaseData->IsMadeOne())
|
if (g_triangleStripWorkaround && !databaseData->IsMadeOne())
|
||||||
{
|
{
|
||||||
auto lightAndIndexBufferResource = reinterpret_cast<LightAndIndexBufferResourceV1*>(base + ctx.r4.u32);
|
auto lightAndIndexBufferResource = reinterpret_cast<LightAndIndexBufferResourceV1*>(base + ctx.r4.u32);
|
||||||
|
|
||||||
@@ -7577,7 +7580,7 @@ PPC_FUNC(sub_82E3B1C0)
|
|||||||
uint16_t* newIndices = nullptr;
|
uint16_t* newIndices = nullptr;
|
||||||
|
|
||||||
auto databaseData = reinterpret_cast<Hedgehog::Database::CDatabaseData*>(base + ctx.r3.u32);
|
auto databaseData = reinterpret_cast<Hedgehog::Database::CDatabaseData*>(base + ctx.r3.u32);
|
||||||
if (g_mesaTriangleStripWorkaround && !databaseData->IsMadeOne())
|
if (g_triangleStripWorkaround && !databaseData->IsMadeOne())
|
||||||
{
|
{
|
||||||
auto lightAndIndexBufferResource = reinterpret_cast<LightAndIndexBufferResourceV5*>(base + ctx.r4.u32);
|
auto lightAndIndexBufferResource = reinterpret_cast<LightAndIndexBufferResourceV5*>(base + ctx.r4.u32);
|
||||||
|
|
||||||
|
|||||||
@@ -5321,6 +5321,7 @@ const uint64_t GameHashes[] = {
|
|||||||
10073206724900292034ULL,
|
10073206724900292034ULL,
|
||||||
13849076872517480735ULL,
|
13849076872517480735ULL,
|
||||||
18429668117940514005ULL,
|
18429668117940514005ULL,
|
||||||
|
14872142036681345494ULL,
|
||||||
7440489770734063325ULL,
|
7440489770734063325ULL,
|
||||||
1423900708842059394ULL,
|
1423900708842059394ULL,
|
||||||
7094898889553293067ULL,
|
7094898889553293067ULL,
|
||||||
@@ -8340,7 +8341,7 @@ const std::pair<const char *, uint32_t> GameFiles[] = {
|
|||||||
{ "Town_SouthEastAsia_Night.arl", 2 },
|
{ "Town_SouthEastAsia_Night.arl", 2 },
|
||||||
{ "WorldMap.ar.00", 2 },
|
{ "WorldMap.ar.00", 2 },
|
||||||
{ "WorldMap.arl", 2 },
|
{ "WorldMap.arl", 2 },
|
||||||
{ "default.xex", 3 },
|
{ "default.xex", 4 },
|
||||||
{ "movie/CHN.sfd", 1 },
|
{ "movie/CHN.sfd", 1 },
|
||||||
{ "movie/HedgehogEngine_logo.sfd", 1 },
|
{ "movie/HedgehogEngine_logo.sfd", 1 },
|
||||||
{ "movie/Inspire/ex00_movie.sfd", 1 },
|
{ "movie/Inspire/ex00_movie.sfd", 1 },
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ const uint64_t UpdateHashes[] = {
|
|||||||
6914273463875662709ULL,
|
6914273463875662709ULL,
|
||||||
15542186142639918255ULL,
|
15542186142639918255ULL,
|
||||||
17773094197787397017ULL,
|
17773094197787397017ULL,
|
||||||
|
4145621795357905881ULL,
|
||||||
5694064368761413534ULL,
|
5694064368761413534ULL,
|
||||||
10660633045276223515ULL,
|
10660633045276223515ULL,
|
||||||
6259845327508088719ULL,
|
6259845327508088719ULL,
|
||||||
@@ -48,7 +49,7 @@ const uint64_t UpdateHashes[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const std::pair<const char *, uint32_t> UpdateFiles[] = {
|
const std::pair<const char *, uint32_t> UpdateFiles[] = {
|
||||||
{ "default.xexp", 3 },
|
{ "default.xexp", 4 },
|
||||||
{ "work/ActD_MykonosAct1/Base.set.xml", 1 },
|
{ "work/ActD_MykonosAct1/Base.set.xml", 1 },
|
||||||
{ "work/ActD_NY/Mission_NYCity_S20_10.set.xml", 1 },
|
{ "work/ActD_NY/Mission_NYCity_S20_10.set.xml", 1 },
|
||||||
{ "work/ActD_SubEU_01/Set2.set.xml", 1 },
|
{ "work/ActD_SubEU_01/Set2.set.xml", 1 },
|
||||||
|
|||||||
@@ -95,9 +95,11 @@ void PostUnleashMidAsmHook(PPCRegister& r30)
|
|||||||
g_isUnleashCancelled = false;
|
g_isUnleashCancelled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetXButtonHomingMidAsmHook(PPCRegister& r30)
|
void SetXButtonHomingMidAsmHook(PPCRegister& r1)
|
||||||
{
|
{
|
||||||
r30.u32 = !Config::HomingAttackOnJump;
|
auto pXButtonHoming = (bool*)(g_memory.base + r1.u32 + 0x63);
|
||||||
|
|
||||||
|
*pXButtonHoming = !Config::HomingAttackOnJump;
|
||||||
}
|
}
|
||||||
|
|
||||||
// SWA::Player::CEvilSonicContext
|
// SWA::Player::CEvilSonicContext
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
VERSION_MILESTONE=""
|
VERSION_MILESTONE=""
|
||||||
VERSION_MAJOR=1
|
VERSION_MAJOR=1
|
||||||
VERSION_MINOR=0
|
VERSION_MINOR=0
|
||||||
VERSION_REVISION=0
|
VERSION_REVISION=1
|
||||||
|
|||||||
@@ -1165,28 +1165,39 @@ static void DrawConfigOption(int32_t rowIndex, float yOffset, ConfigDef<T>* conf
|
|||||||
size = Scale(20.0f);
|
size = Scale(20.0f);
|
||||||
textSize = g_newRodinFont->CalcTextSizeA(size, FLT_MAX, 0.0f, valueText.data());
|
textSize = g_newRodinFont->CalcTextSizeA(size, FLT_MAX, 0.0f, valueText.data());
|
||||||
|
|
||||||
min.x += ((max.x - min.x) - textSize.x) / 2.0f;
|
auto textSquashRatio = 1.0f;
|
||||||
min.y += ((max.y - min.y) - textSize.y) / 2.0f;
|
|
||||||
|
if (textSize.x > max.x - min.x)
|
||||||
|
textSquashRatio = (max.x - min.x) / textSize.x - 0.1f;
|
||||||
|
|
||||||
|
auto textX = min.x + ((max.x - min.x) - (textSize.x * textSquashRatio)) / 2.0f;
|
||||||
|
auto textY = min.y + ((max.y - min.y) - textSize.y) / 2.0f;
|
||||||
|
|
||||||
SetGradient
|
SetGradient
|
||||||
(
|
(
|
||||||
min,
|
{ textX, textY },
|
||||||
{ min.x + textSize.x, min.y + textSize.y },
|
{ textX + textSize.x, textY + textSize.y },
|
||||||
IM_COL32(192, 255, 0, 255),
|
IM_COL32(192, 255, 0, 255),
|
||||||
IM_COL32(128, 170, 0, 255)
|
IM_COL32(128, 170, 0, 255)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
SetScale({ textSquashRatio, 1.0f });
|
||||||
|
SetOrigin({ textX, textY });
|
||||||
|
|
||||||
DrawTextWithOutline
|
DrawTextWithOutline
|
||||||
(
|
(
|
||||||
g_newRodinFont,
|
g_newRodinFont,
|
||||||
size,
|
size,
|
||||||
min,
|
{ textX, textY },
|
||||||
IM_COL32(255, 255, 255, 255 * alpha),
|
IM_COL32(255, 255, 255, 255 * alpha),
|
||||||
valueText.data(),
|
valueText.data(),
|
||||||
4,
|
4,
|
||||||
IM_COL32(0, 0, 0, 255 * alpha)
|
IM_COL32(0, 0, 0, 255 * alpha)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
SetScale({ 1.0f, 1.0f });
|
||||||
|
SetOrigin({ 0.0f, 0.0f });
|
||||||
|
|
||||||
ResetGradient();
|
ResetGradient();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -199,8 +199,8 @@ return_on_false = true
|
|||||||
|
|
||||||
[[midasm_hook]]
|
[[midasm_hook]]
|
||||||
name = "SetXButtonHomingMidAsmHook"
|
name = "SetXButtonHomingMidAsmHook"
|
||||||
address = 0x8237AC88
|
address = 0x8237AC90
|
||||||
registers = ["r30"]
|
registers = ["r1"]
|
||||||
|
|
||||||
# Down force HFR fix
|
# Down force HFR fix
|
||||||
[[midasm_hook]]
|
[[midasm_hook]]
|
||||||
|
|||||||
Reference in New Issue
Block a user