mirror of
https://github.com/hedge-dev/UnleashedRecomp
synced 2026-06-08 20:30:02 -04:00
Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3bd5aa94b4 | |||
| df5e48f528 | |||
| c07a754f4f | |||
| 8a80db141d | |||
| 48458cb903 | |||
| 1c225184a1 | |||
| 6ef7789b17 | |||
| 756d001d35 | |||
| 0866be0c3d | |||
| 4705ffddc2 | |||
| 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 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
|
||||
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,214 @@
|
||||
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
|
||||
strategy:
|
||||
matrix:
|
||||
preset: ["linux-debug", "linux-release", "linux-relwithdebinfo"]
|
||||
env:
|
||||
LLVM_VERSION: 18
|
||||
CMAKE_PRESET: ${{ matrix.preset }}
|
||||
|
||||
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 }}-${{ matrix.preset }}
|
||||
|
||||
- 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 }}-${{ matrix.preset }}
|
||||
|
||||
- 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-${{ env.CMAKE_PRESET }}
|
||||
path: ./out/build/${{ env.CMAKE_PRESET }}/UnleashedRecomp/UnleashedRecomp
|
||||
build-windows:
|
||||
name: Build Windows
|
||||
runs-on: windows-latest
|
||||
strategy:
|
||||
matrix:
|
||||
preset: ["x64-Clang-Debug", "x64-Clang-Release", "x64-Clang-RelWithDebInfo"]
|
||||
env:
|
||||
CMAKE_PRESET: ${{ matrix.preset }}
|
||||
|
||||
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 }}-${{ matrix.preset }}
|
||||
|
||||
- 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-${{ env.CMAKE_PRESET }}
|
||||
path: .\UnleashedRecomp-Windows.zip
|
||||
|
||||
- name: Upload PDB
|
||||
uses: actions/upload-artifact@v4
|
||||
if: ${{ matrix.preset != 'x64-Clang-Release' }}
|
||||
with:
|
||||
name: UnleashedRecomp-Windows-${{ env.CMAKE_PRESET }}-PDB
|
||||
path: .\out\build\${{ env.CMAKE_PRESET }}\UnleashedRecomp\UnleashedRecomp.pdb
|
||||
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)
|
||||
- AMD: Bulldozer (AMD FX series)
|
||||
- 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)
|
||||
- Intel: HD Graphics 510 (Skylake)
|
||||
- Memory:
|
||||
- 8 GB minimum
|
||||
- Operating System:
|
||||
- Windows 10 (version 1909)
|
||||
- A modern Linux distro such as Ubuntu 22.04 LTS
|
||||
@@ -180,6 +182,9 @@ Many options have been integrated to address some common quality of life improve
|
||||
- The day/night transformation cutscene in towns can use either the Xbox 360 or PlayStation 3 version, with the Xbox version artificially extending loading times for the full video play out, whilst the PlayStation version ends as soon as it's done loading.
|
||||
- Music Attenuation is a feature that was originally present in the Xbox 360 version of the game, where it'd automatically mute the background music if the console's media player was in use. This feature has been implemented using information provided by the [Windows Media Control](https://learn.microsoft.com/en-us/uwp/api/windows.media.control?view=winrt-26100) APIs in [WinRT](https://en.wikipedia.org/wiki/Windows_Runtime). Applications that interface with Windows 10/11 to display media controls are supported.
|
||||
|
||||
> [!TIP]
|
||||
> You may refer to Music Presence's [list of supported media players](https://github.com/ungive/discord-music-presence/blob/master/documentation/supported-media-players.md) for players that work with Music Attenuation out of the box.
|
||||
|
||||
> [!NOTE]
|
||||
> Please note that Music Attenuation is not currently available on Linux. Support for this feature may be added in a future update.
|
||||
|
||||
@@ -204,6 +209,8 @@ Modded files for the Xbox 360 version of the game are compatible with Unleashed
|
||||
|
||||
> [!NOTE]
|
||||
> Code modding is currently not possible and is [planned for a future update](#code-modding). As a workaround for the time being, some codes have been directly embedded into the game and can be accessed through Hedge Mod Manager's Codes tab.
|
||||
>
|
||||
> For information on the mod format, check out Hedge Mod Manager's [Basic Mod File Structure](https://github.com/thesupersonic16/HedgeModManager/wiki/Basic-Mod-File-Structure) wiki page.
|
||||
|
||||
## Update Roadmap
|
||||
|
||||
|
||||
@@ -293,7 +293,7 @@ if (WIN32)
|
||||
add_executable(UnleashedRecomp ${UNLEASHED_RECOMP_CXX_SOURCES} "${CMAKE_BINARY_DIR}/res.rc")
|
||||
|
||||
# Hide console for release configurations.
|
||||
if (${CMAKE_BUILD_TYPE} MATCHES "Release")
|
||||
if (${CMAKE_BUILD_TYPE} MATCHES "Release" OR ${CMAKE_BUILD_TYPE} MATCHES "RelWithDebInfo")
|
||||
target_link_options(UnleashedRecomp PRIVATE "/SUBSYSTEM:WINDOWS" "/ENTRY:mainCRTStartup")
|
||||
endif()
|
||||
else()
|
||||
|
||||
@@ -285,10 +285,10 @@ static bool g_vulkan = false;
|
||||
static constexpr bool g_vulkan = true;
|
||||
#endif
|
||||
|
||||
static bool g_mesaTriangleStripWorkaround = false;
|
||||
static bool g_triangleStripWorkaround = false;
|
||||
|
||||
static constexpr bool g_hardwareResolve = true;
|
||||
static constexpr bool g_hardwareDepthResolve = true;
|
||||
static bool g_hardwareResolve = true;
|
||||
static bool g_hardwareDepthResolve = true;
|
||||
|
||||
static std::unique_ptr<RenderInterface> g_interface;
|
||||
static std::unique_ptr<RenderDevice> g_device;
|
||||
@@ -1698,17 +1698,17 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver)
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// Hardware resolve seems to be completely bugged on Intel D3D12 drivers.
|
||||
g_hardwareResolve = (deviceDescription.vendor != RenderDeviceVendor::INTEL);
|
||||
g_hardwareDepthResolve = (deviceDescription.vendor != RenderDeviceVendor::INTEL);
|
||||
}
|
||||
|
||||
g_vulkan = (interfaceFunction == CreateVulkanInterfaceWrapper);
|
||||
#endif
|
||||
|
||||
if (interfaceFunction == CreateVulkanInterfaceWrapper)
|
||||
{
|
||||
// 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;
|
||||
}
|
||||
// Enable triangle strip workaround if we are on AMD, as there is a bug where
|
||||
// restart indices cause triangles to be culled incorrectly. Converting them to degenerate triangles fixes it.
|
||||
g_triangleStripWorkaround = (deviceDescription.vendor == RenderDeviceVendor::AMD);
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -2329,7 +2329,9 @@ static void DrawProfiler()
|
||||
ImGui::Text("Present Wait: %s", g_capabilities.presentWait ? "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("Triangle Strip Workaround: %s", g_mesaTriangleStripWorkaround ? "Enabled" : "Disabled");
|
||||
ImGui::Text("Triangle Strip Workaround: %s", g_triangleStripWorkaround ? "Enabled" : "Disabled");
|
||||
ImGui::Text("Hardware Resolve: %s", g_hardwareResolve ? "Enabled" : "Disabled");
|
||||
ImGui::Text("Hardware Depth Resolve: %s", g_hardwareDepthResolve ? "Enabled" : "Disabled");
|
||||
ImGui::NewLine();
|
||||
|
||||
ImGui::Text("API: %s", g_vulkan ? "Vulkan" : "D3D12");
|
||||
@@ -6833,6 +6835,13 @@ void GetDatabaseDataMidAsmHook(PPCRegister& r1, PPCRegister& r4)
|
||||
|
||||
if (isParticleModel)
|
||||
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;
|
||||
@@ -7421,8 +7430,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.
|
||||
// Restart indices can be converted to degenerate triangles as a workaround until this issue gets fixed.
|
||||
// There is a bug on AMD where restart indices cause incorrect culling and prevent some triangles from being rendered.
|
||||
// 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)
|
||||
{
|
||||
newIndices = reinterpret_cast<uint16_t*>(g_userHeap.Alloc(indexCount * sizeof(uint16_t) * 3));
|
||||
@@ -7475,7 +7484,7 @@ PPC_FUNC(sub_82E44AF8)
|
||||
uint16_t* newIndicesToFree = nullptr;
|
||||
|
||||
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);
|
||||
|
||||
@@ -7538,7 +7547,7 @@ PPC_FUNC(sub_82E3AFC8)
|
||||
uint16_t* newIndices = nullptr;
|
||||
|
||||
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);
|
||||
|
||||
@@ -7577,7 +7586,7 @@ PPC_FUNC(sub_82E3B1C0)
|
||||
uint16_t* newIndices = nullptr;
|
||||
|
||||
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);
|
||||
|
||||
|
||||
@@ -5321,6 +5321,7 @@ const uint64_t GameHashes[] = {
|
||||
10073206724900292034ULL,
|
||||
13849076872517480735ULL,
|
||||
18429668117940514005ULL,
|
||||
14872142036681345494ULL,
|
||||
7440489770734063325ULL,
|
||||
1423900708842059394ULL,
|
||||
7094898889553293067ULL,
|
||||
@@ -8340,7 +8341,7 @@ const std::pair<const char *, uint32_t> GameFiles[] = {
|
||||
{ "Town_SouthEastAsia_Night.arl", 2 },
|
||||
{ "WorldMap.ar.00", 2 },
|
||||
{ "WorldMap.arl", 2 },
|
||||
{ "default.xex", 3 },
|
||||
{ "default.xex", 4 },
|
||||
{ "movie/CHN.sfd", 1 },
|
||||
{ "movie/HedgehogEngine_logo.sfd", 1 },
|
||||
{ "movie/Inspire/ex00_movie.sfd", 1 },
|
||||
|
||||
@@ -10,6 +10,7 @@ const uint64_t UpdateHashes[] = {
|
||||
6914273463875662709ULL,
|
||||
15542186142639918255ULL,
|
||||
17773094197787397017ULL,
|
||||
4145621795357905881ULL,
|
||||
5694064368761413534ULL,
|
||||
10660633045276223515ULL,
|
||||
6259845327508088719ULL,
|
||||
@@ -48,7 +49,7 @@ const uint64_t UpdateHashes[] = {
|
||||
};
|
||||
|
||||
const std::pair<const char *, uint32_t> UpdateFiles[] = {
|
||||
{ "default.xexp", 3 },
|
||||
{ "default.xexp", 4 },
|
||||
{ "work/ActD_MykonosAct1/Base.set.xml", 1 },
|
||||
{ "work/ActD_NY/Mission_NYCity_S20_10.set.xml", 1 },
|
||||
{ "work/ActD_SubEU_01/Set2.set.xml", 1 },
|
||||
|
||||
@@ -562,9 +562,9 @@ CONFIG_DEFINE_ENUM_LOCALE(EAspectRatio)
|
||||
ELanguage::German,
|
||||
{
|
||||
{ EAspectRatio::Auto, { "AUTO", "Auto: Das Seitenverhältnis passt sich automatisch der Fenstergröße an." } },
|
||||
{ EAspectRatio::Wide, { "16:9", "16:9: Stellt das Spiel in einem Breitbildschirm-Vormat dar." } },
|
||||
{ EAspectRatio::Narrow, { "4:3", "4:3: Stellt das Spiel in einem Mittel-Vormat dar." } },
|
||||
{ EAspectRatio::OriginalNarrow, { "ORIGINAL 4:3", "Original 4:3: Stellt das Spiel in einem Mittel-Vormat dar, was der ursprünglichen Implementation originalgetreut bleibt." } }
|
||||
{ EAspectRatio::Wide, { "16:9", "16:9: Stellt das Spiel in einem Breitbildschirm-Format dar." } },
|
||||
{ EAspectRatio::Narrow, { "4:3", "4:3: Stellt das Spiel in einem Mittel-Format dar." } },
|
||||
{ EAspectRatio::OriginalNarrow, { "ORIGINAL 4:3", "Original 4:3: Stellt das Spiel in einem Mittel-Format dar, was der ursprünglichen Implementation originalgetreut bleibt." } }
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -378,7 +378,7 @@ std::unordered_map<std::string_view, std::unordered_map<ELanguage, std::string>>
|
||||
{ ELanguage::English, "Installation failed.\n\nError: " },
|
||||
{ ELanguage::Japanese, "インストールに[失敗:しっぱい]しました\n\nエラー: " },
|
||||
{ ELanguage::German, "Installation fehlgeschlagen.\n\nFehler: " },
|
||||
{ ELanguage::French, "L'installation a échouée.\n\nErreur : " },
|
||||
{ ELanguage::French, "L'installation a échoué.\n\nErreur : " },
|
||||
{ ELanguage::Spanish, "La instalación falló.\n\nError: " },
|
||||
{ ELanguage::Italian, "Installazione fallita.\n\nErrore: " }
|
||||
}
|
||||
|
||||
@@ -212,6 +212,9 @@ g_sdlEventListenerForInputPatches;
|
||||
|
||||
static bool IsDPadThreshold(const SWA::SPadState* pPadState)
|
||||
{
|
||||
if (Config::DisableDPadAsAnalogInput)
|
||||
return false;
|
||||
|
||||
return pPadState->IsDown(SWA::eKeyState_DpadUp) ||
|
||||
pPadState->IsDown(SWA::eKeyState_DpadDown) ||
|
||||
pPadState->IsDown(SWA::eKeyState_DpadLeft) ||
|
||||
@@ -237,6 +240,9 @@ static bool IsCursorThreshold(double deadzone = 0, bool isBelowThreshold = false
|
||||
|
||||
static void SetDPadAnalogDirectionX(PPCRegister& pPadState, PPCRegister& x, bool invert, float max = 1.0f)
|
||||
{
|
||||
if (Config::DisableDPadAsAnalogInput)
|
||||
return;
|
||||
|
||||
auto pGuestPadState = (SWA::SPadState*)g_memory.Translate(pPadState.u32);
|
||||
|
||||
if (pGuestPadState->IsDown(SWA::eKeyState_DpadLeft))
|
||||
@@ -248,6 +254,9 @@ static void SetDPadAnalogDirectionX(PPCRegister& pPadState, PPCRegister& x, bool
|
||||
|
||||
static void SetDPadAnalogDirectionY(PPCRegister& pPadState, PPCRegister& y, bool invert, float max = 1.0f)
|
||||
{
|
||||
if (Config::DisableDPadAsAnalogInput)
|
||||
return;
|
||||
|
||||
auto pGuestPadState = (SWA::SPadState*)g_memory.Translate(pPadState.u32);
|
||||
|
||||
if (pGuestPadState->IsDown(SWA::eKeyState_DpadUp))
|
||||
@@ -283,6 +292,9 @@ void PostureDPadSupportYMidAsmHook(PPCRegister& pPadState, PPCRegister& y)
|
||||
|
||||
void PostureSpaceHurrierDPadSupportXMidAsmHook(PPCRegister& pPadState, PPCVRegister& vector)
|
||||
{
|
||||
if (Config::DisableDPadAsAnalogInput)
|
||||
return;
|
||||
|
||||
auto pGuestPadState = (SWA::SPadState*)g_memory.Translate(pPadState.u32);
|
||||
|
||||
if (pGuestPadState->IsDown(SWA::eKeyState_DpadLeft))
|
||||
@@ -294,6 +306,9 @@ void PostureSpaceHurrierDPadSupportXMidAsmHook(PPCRegister& pPadState, PPCVRegis
|
||||
|
||||
void PostureSpaceHurrierDPadSupportYMidAsmHook(PPCRegister& pPadState, PPCVRegister& vector)
|
||||
{
|
||||
if (Config::DisableDPadAsAnalogInput)
|
||||
return;
|
||||
|
||||
auto pGuestPadState = (SWA::SPadState*)g_memory.Translate(pPadState.u32);
|
||||
|
||||
if (pGuestPadState->IsDown(SWA::eKeyState_DpadUp))
|
||||
@@ -403,17 +418,20 @@ PPC_FUNC(sub_8256C938)
|
||||
pWorldMapCursor->m_LeftStickVertical = rPadState.LeftStickVertical;
|
||||
pWorldMapCursor->m_LeftStickHorizontal = rPadState.LeftStickHorizontal;
|
||||
|
||||
if (rPadState.IsDown(SWA::eKeyState_DpadUp))
|
||||
pWorldMapCursor->m_LeftStickVertical = 1.0f;
|
||||
|
||||
if (rPadState.IsDown(SWA::eKeyState_DpadDown))
|
||||
pWorldMapCursor->m_LeftStickVertical = -1.0f;
|
||||
|
||||
if (rPadState.IsDown(SWA::eKeyState_DpadLeft))
|
||||
pWorldMapCursor->m_LeftStickHorizontal = -1.0f;
|
||||
|
||||
if (rPadState.IsDown(SWA::eKeyState_DpadRight))
|
||||
pWorldMapCursor->m_LeftStickHorizontal = 1.0f;
|
||||
if (!Config::DisableDPadAsAnalogInput)
|
||||
{
|
||||
if (rPadState.IsDown(SWA::eKeyState_DpadUp))
|
||||
pWorldMapCursor->m_LeftStickVertical = 1.0f;
|
||||
|
||||
if (rPadState.IsDown(SWA::eKeyState_DpadDown))
|
||||
pWorldMapCursor->m_LeftStickVertical = -1.0f;
|
||||
|
||||
if (rPadState.IsDown(SWA::eKeyState_DpadLeft))
|
||||
pWorldMapCursor->m_LeftStickHorizontal = -1.0f;
|
||||
|
||||
if (rPadState.IsDown(SWA::eKeyState_DpadRight))
|
||||
pWorldMapCursor->m_LeftStickHorizontal = 1.0f;
|
||||
}
|
||||
|
||||
if (sqrtl((pWorldMapCursor->m_LeftStickHorizontal * pWorldMapCursor->m_LeftStickHorizontal) +
|
||||
(pWorldMapCursor->m_LeftStickVertical * pWorldMapCursor->m_LeftStickVertical)) > WORLD_MAP_ROTATE_DEADZONE)
|
||||
|
||||
@@ -146,3 +146,13 @@ PPC_FUNC(sub_824C1E60)
|
||||
|
||||
__imp__sub_824C1E60(ctx, base);
|
||||
}
|
||||
|
||||
// Remove boost filter
|
||||
void DisableBoostFilterMidAsmHook(PPCRegister& r11)
|
||||
{
|
||||
if (Config::DisableBoostFilter)
|
||||
{
|
||||
if (r11.u32 == 1)
|
||||
r11.u32 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,9 +95,11 @@ void PostUnleashMidAsmHook(PPCRegister& r30)
|
||||
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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
VERSION_MILESTONE=""
|
||||
VERSION_MAJOR=1
|
||||
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);
|
||||
textSize = g_newRodinFont->CalcTextSizeA(size, FLT_MAX, 0.0f, valueText.data());
|
||||
|
||||
min.x += ((max.x - min.x) - textSize.x) / 2.0f;
|
||||
min.y += ((max.y - min.y) - textSize.y) / 2.0f;
|
||||
auto textSquashRatio = 1.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
|
||||
(
|
||||
min,
|
||||
{ min.x + textSize.x, min.y + textSize.y },
|
||||
{ textX, textY },
|
||||
{ textX + textSize.x, textY + textSize.y },
|
||||
IM_COL32(192, 255, 0, 255),
|
||||
IM_COL32(128, 170, 0, 255)
|
||||
);
|
||||
|
||||
SetScale({ textSquashRatio, 1.0f });
|
||||
SetOrigin({ textX, textY });
|
||||
|
||||
DrawTextWithOutline
|
||||
(
|
||||
g_newRodinFont,
|
||||
size,
|
||||
min,
|
||||
{ textX, textY },
|
||||
IM_COL32(255, 255, 255, 255 * alpha),
|
||||
valueText.data(),
|
||||
4,
|
||||
IM_COL32(0, 0, 0, 255 * alpha)
|
||||
);
|
||||
|
||||
SetScale({ 1.0f, 1.0f });
|
||||
SetOrigin({ 0.0f, 0.0f });
|
||||
|
||||
ResetGradient();
|
||||
}
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ enum class ETripleBuffering : uint32_t
|
||||
};
|
||||
|
||||
static constexpr int32_t FPS_MIN = 15;
|
||||
static constexpr int32_t FPS_MAX = 240;
|
||||
static constexpr int32_t FPS_MAX = 241;
|
||||
|
||||
enum class EAntiAliasing : uint32_t
|
||||
{
|
||||
|
||||
@@ -77,6 +77,7 @@ CONFIG_DEFINE_ENUM_LOCALISED("Video", EUIAlignmentMode, UIAlignmentMode, EUIAlig
|
||||
|
||||
CONFIG_DEFINE_HIDDEN("Codes", bool, AllowCancellingUnleash, false);
|
||||
CONFIG_DEFINE_HIDDEN("Codes", bool, DisableAutoSaveWarning, false);
|
||||
CONFIG_DEFINE_HIDDEN("Codes", bool, DisableBoostFilter, false);
|
||||
CONFIG_DEFINE_HIDDEN("Codes", bool, DisableDLCIcon, false);
|
||||
CONFIG_DEFINE_HIDDEN("Codes", bool, DisableDWMRoundedCorners, false);
|
||||
CONFIG_DEFINE_HIDDEN("Codes", bool, EnableEventCollisionDebugView, false);
|
||||
@@ -92,5 +93,6 @@ CONFIG_DEFINE_HIDDEN("Codes", bool, SkipIntroLogos, false);
|
||||
CONFIG_DEFINE_HIDDEN("Codes", bool, UseArrowsForTimeOfDayTransition, false);
|
||||
CONFIG_DEFINE_HIDDEN("Codes", bool, UseOfficialTitleOnTitleBar, false);
|
||||
CONFIG_DEFINE_HIDDEN("Codes", bool, DisableLowResolutionFontOnCustomUI, false);
|
||||
CONFIG_DEFINE_HIDDEN("Codes", bool, DisableDPadAsAnalogInput, false);
|
||||
|
||||
CONFIG_DEFINE("Update", time_t, LastChecked, 0);
|
||||
|
||||
@@ -199,8 +199,8 @@ return_on_false = true
|
||||
|
||||
[[midasm_hook]]
|
||||
name = "SetXButtonHomingMidAsmHook"
|
||||
address = 0x8237AC88
|
||||
registers = ["r30"]
|
||||
address = 0x8237AC90
|
||||
registers = ["r1"]
|
||||
|
||||
# Down force HFR fix
|
||||
[[midasm_hook]]
|
||||
@@ -1093,3 +1093,8 @@ registers = ["r31", "r29", "r28"]
|
||||
name = "ObjGrindDashPanelAllocMidAsmHook"
|
||||
address = 0x82614948
|
||||
registers = ["r3"]
|
||||
|
||||
[[midasm_hook]]
|
||||
name = "DisableBoostFilterMidAsmHook"
|
||||
address = 0x82B48C9C
|
||||
registers = ["r11"]
|
||||
|
||||
+6
-1
@@ -37,10 +37,15 @@ In the installer, you must select the following **Workloads** and **Individual c
|
||||
- C++ CMake tools for Windows
|
||||
|
||||
### Linux
|
||||
The following command will install the required dependencies on a distro that uses `apt` (such as Ubuntu), but you can find the equivalent packages for your preferred distro.
|
||||
The following command will install the required dependencies on a distro that uses `apt` (such as Debian-based distros).
|
||||
```bash
|
||||
sudo apt install autoconf automake libtool pkg-config curl cmake ninja-build clang clang-tools libgtk-3-dev
|
||||
```
|
||||
The following command will install the required dependencies on a distro that uses `pacman` (such as Arch-based distros).
|
||||
```bash
|
||||
sudo pacman -S base-devel ninja lld clang gtk3
|
||||
```
|
||||
You can also find the equivalent packages for your preferred distro.
|
||||
|
||||
> [!NOTE]
|
||||
> This list may not be comprehensive for your particular distro and you may be required to install additional packages, should an error occur during configuration.
|
||||
|
||||
Reference in New Issue
Block a user