mirror of
https://github.com/hedge-dev/UnleashedRecomp
synced 2026-06-09 12:46:50 -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 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,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)
|
||||
- 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
|
||||
|
||||
@@ -285,7 +285,7 @@ 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;
|
||||
@@ -1702,13 +1702,9 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver)
|
||||
|
||||
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 +2325,7 @@ 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::NewLine();
|
||||
|
||||
ImGui::Text("API: %s", g_vulkan ? "Vulkan" : "D3D12");
|
||||
@@ -6833,6 +6829,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 +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.
|
||||
// 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 +7478,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 +7541,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 +7580,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 },
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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]]
|
||||
|
||||
Reference in New Issue
Block a user