-
Notifications
You must be signed in to change notification settings - Fork 442
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Significant changes include LDN functionality from @Vudjun (no more separate build!) and an XCI trimmer from @amurgshere. Merged PRs in this release (in the order they were merged): #183, #150, #105, #160, #188, #98, #158, #13, #216, #73, #217, #122, #228, #65, #226, #236, #247, #243, #249, #242, #260, #273, #272, #262, #259, #241 ## Versioning: There now exists "stable" (release branch) and ["canary" (master branch)](https://github.com/GreemDev/Ryujinx-Canary/releases) versions. Instead of everyone using the same emulator, getting updates for every code change, you now *opt-in* to the more frequent updates by using the Canary version. Use stable and you'll get about an update a week, but that update will be MUCH more significant as it's the entire previous week's changes & PR merges. ## LDN LDN functionality is now merged! Use [this](https://github.com/GreemDev/Ryujinx/wiki/Multiplayer%E2%80%90(LDN%E2%80%90Local%E2%80%90Wireless)%E2%80%90Guide) to get started. Please note that LDN is only for local wireless; **this is not a Nintendo Switch Online emulation feature**. ## UI - Added an XCI trimmer (#105). - You can use this feature to trim dead bytes & the embedded firmware out of your dumped XCIs, to make them smaller. - If you right-click an XCI and the trim button it is greyed out, that means your XCI is already as small as possible. - Fix for fullscreen not being really fullscreen (#150) - Fix window sizing calculations when Show Title Bar is enabled (#247) - The "Install/Uninstall file types" buttons will be enabled/disabled depending on which one you contextually need; install will be clickable when they aren't installed, and vice versa. - Fix for showing default config screen when swapping players in controller settings (#122) - Command-line argument to prevent update checking `--hide-updates` (#272) - # RPC: - Added a LOT of game images to Discord RPC. - Play time will now show the time unit hours at a maximum. ## Localization - Update outdated/incorrect & added missing translations for zh-TW (#158) - Add many missing locale strings to all languages (#160) - Update & improve Korean translation (#226) - Minor fixes & add missing translations to Spanish translation (#242) ## Headless - Added `ignore-controller-applet` as an option you can configure via headless command-line options. ## Graphics Backend - ### Vulkan - fix divide-by-zero when recovering from missed draw (#235) - fixes crash in 'Baldo: The Guardian Owls' opening cutscene ## Horizon - fix crash that occurs when launching an NSP forwarder generated by Nro2Nsp (#237) # Nerd Zone Slightly more technical information. If you don't understand what's under here, no worry. - Updater now uses the release's Tag Name instead of its Name for version checking. - Baked in value change logging into ReactiveObject. - Split ConfigurationState into 3, smaller partial classes of the same name. - Specify if the current version is Canary in the version log line --------- Co-authored-by: James Duarte <[email protected]> Co-authored-by: Luke Warner <[email protected]> Co-authored-by: TheToid <[email protected]> Co-authored-by: GabCoolGuy <[email protected]> Co-authored-by: Kekschen <[email protected]> Co-authored-by: WilliamWsyHK <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jacobwasbeast <[email protected]> Co-authored-by: Piplup <[email protected]> Co-authored-by: Vladimir Sokolov <[email protected]> Co-authored-by: Jonas Henriksson <[email protected]> Co-authored-by: Vudjun <[email protected]> Co-authored-by: extherian <[email protected]> Co-authored-by: Hack茶ん <[email protected]> Co-authored-by: EmulationEnjoyer <[email protected]> Co-authored-by: Nicola <[email protected]> Co-authored-by: jzumaran <[email protected]> Co-authored-by: Pitchoune <[email protected]> Co-authored-by: Narugakuruga <[email protected]>
- Loading branch information
1 parent
8a064bc
commit b2aad0a
Showing
183 changed files
with
10,027 additions
and
2,642 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,257 @@ | ||
name: Canary release job | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: {} | ||
push: | ||
branches: [ master ] | ||
paths-ignore: | ||
- '.github/**' | ||
- 'docs/**' | ||
- 'assets/**' | ||
- '*.yml' | ||
- '*.json' | ||
- '*.config' | ||
- '*.md' | ||
|
||
concurrency: release | ||
|
||
env: | ||
POWERSHELL_TELEMETRY_OPTOUT: 1 | ||
DOTNET_CLI_TELEMETRY_OPTOUT: 1 | ||
RYUJINX_BASE_VERSION: "1.2" | ||
RYUJINX_TARGET_RELEASE_CHANNEL_NAME: "canary" | ||
RYUJINX_TARGET_RELEASE_CHANNEL_OWNER: "GreemDev" | ||
RYUJINX_TARGET_RELEASE_CHANNEL_SOURCE_REPO: "Ryujinx" | ||
RYUJINX_TARGET_RELEASE_CHANNEL_REPO: "Ryujinx-Canary" | ||
RELEASE: 1 | ||
|
||
jobs: | ||
tag: | ||
name: Create tag | ||
runs-on: ubuntu-20.04 | ||
steps: | ||
- name: Get version info | ||
id: version_info | ||
run: | | ||
echo "build_version=${{ env.RYUJINX_BASE_VERSION }}.${{ github.run_number }}" >> $GITHUB_OUTPUT | ||
echo "prev_build_version=${{ env.RYUJINX_BASE_VERSION }}.$((${{ github.run_number }} - 1))" >> $GITHUB_OUTPUT | ||
shell: bash | ||
|
||
- name: Create tag | ||
uses: actions/github-script@v7 | ||
with: | ||
script: | | ||
github.rest.git.createRef({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
ref: 'refs/tags/Canary-${{ steps.version_info.outputs.build_version }}', | ||
sha: context.sha | ||
}) | ||
- name: Create release | ||
uses: ncipollo/release-action@v1 | ||
with: | ||
name: "Canary ${{ steps.version_info.outputs.build_version }}" | ||
tag: ${{ steps.version_info.outputs.build_version }} | ||
body: "**Full Changelog**: https://github.com/${{ github.repository }}/compare/Canary-${{ steps.version_info.outputs.prev_build_version }}...Canary-${{ steps.version_info.outputs.build_version }}" | ||
omitBodyDuringUpdate: true | ||
owner: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }} | ||
repo: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }} | ||
token: ${{ secrets.RELEASE_TOKEN }} | ||
|
||
release: | ||
name: Release for ${{ matrix.platform.name }} | ||
runs-on: ${{ matrix.platform.os }} | ||
strategy: | ||
matrix: | ||
platform: | ||
- { name: win-x64, os: windows-latest, zip_os_name: win_x64 } | ||
- { name: linux-x64, os: ubuntu-latest, zip_os_name: linux_x64 } | ||
- { name: linux-arm64, os: ubuntu-latest, zip_os_name: linux_arm64 } | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- uses: actions/setup-dotnet@v4 | ||
with: | ||
global-json-file: global.json | ||
|
||
- name: Overwrite csc problem matcher | ||
run: echo "::add-matcher::.github/csc.json" | ||
|
||
- name: Get version info | ||
id: version_info | ||
run: | | ||
echo "build_version=${{ env.RYUJINX_BASE_VERSION }}.${{ github.run_number }}" >> $GITHUB_OUTPUT | ||
echo "prev_build_version=${{ env.RYUJINX_BASE_VERSION }}.$((${{ github.run_number }} - 1))" >> $GITHUB_OUTPUT | ||
echo "git_short_hash=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT | ||
shell: bash | ||
|
||
- name: Configure for release | ||
run: | | ||
sed -r --in-place 's/\%\%RYUJINX_BUILD_VERSION\%\%/${{ steps.version_info.outputs.build_version }}/g;' src/Ryujinx.Common/ReleaseInformation.cs | ||
sed -r --in-place 's/\%\%RYUJINX_BUILD_GIT_HASH\%\%/${{ steps.version_info.outputs.git_short_hash }}/g;' src/Ryujinx.Common/ReleaseInformation.cs | ||
sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_NAME\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_NAME }}/g;' src/Ryujinx.Common/ReleaseInformation.cs | ||
sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_OWNER\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/g;' src/Ryujinx.Common/ReleaseInformation.cs | ||
sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_REPO\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/g;' src/Ryujinx.Common/ReleaseInformation.cs | ||
sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_SOURCE_REPO\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_SOURCE_REPO }}/g;' src/Ryujinx.Common/ReleaseInformation.cs | ||
sed -r --in-place 's/\%\%RYUJINX_CONFIG_FILE_NAME\%\%/Config\.json/g;' src/Ryujinx.Common/ReleaseInformation.cs | ||
shell: bash | ||
|
||
- name: Create output dir | ||
run: "mkdir release_output" | ||
|
||
- name: Publish | ||
run: | | ||
dotnet publish -c Release -r "${{ matrix.platform.name }}" -o ./publish_ava/publish -p:Version="${{ steps.version_info.outputs.build_version }}" -p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" -p:DebugType=embedded src/Ryujinx --self-contained -p:IncludeNativeLibrariesForSelfExtract=true | ||
dotnet publish -c Release -r "${{ matrix.platform.name }}" -o ./publish_sdl2_headless/publish -p:Version="${{ steps.version_info.outputs.build_version }}" -p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" -p:DebugType=embedded src/Ryujinx.Headless.SDL2 --self-contained -p:IncludeNativeLibrariesForSelfExtract=true | ||
- name: Packing Windows builds | ||
if: matrix.platform.os == 'windows-latest' | ||
run: | | ||
pushd publish_ava | ||
rm publish/libarmeilleure-jitsupport.dylib | ||
7z a ../release_output/ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.zip publish | ||
popd | ||
pushd publish_sdl2_headless | ||
rm publish/libarmeilleure-jitsupport.dylib | ||
7z a ../release_output/sdl2-ryujinx-headless-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.zip publish | ||
popd | ||
shell: bash | ||
|
||
- name: Packing Linux builds | ||
if: matrix.platform.os == 'ubuntu-latest' | ||
run: | | ||
pushd publish_ava | ||
rm publish/libarmeilleure-jitsupport.dylib | ||
chmod +x publish/Ryujinx.sh publish/Ryujinx | ||
tar -czvf ../release_output/ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.tar.gz publish | ||
popd | ||
pushd publish_sdl2_headless | ||
rm publish/libarmeilleure-jitsupport.dylib | ||
chmod +x publish/Ryujinx.sh publish/Ryujinx.Headless.SDL2 | ||
tar -czvf ../release_output/sdl2-ryujinx-headless-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.tar.gz publish | ||
popd | ||
shell: bash | ||
|
||
#- name: Build AppImage (Linux) | ||
# if: matrix.platform.os == 'ubuntu-latest' | ||
# run: | | ||
# BUILD_VERSION="${{ steps.version_info.outputs.build_version }}" | ||
# PLATFORM_NAME="${{ matrix.platform.name }}" | ||
|
||
# sudo apt install -y zsync desktop-file-utils appstream | ||
|
||
# mkdir -p tools | ||
# export PATH="$PATH:$(readlink -f tools)" | ||
|
||
# Setup appimagetool | ||
# wget -q -O tools/appimagetool "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage" | ||
# chmod +x tools/appimagetool | ||
# chmod +x distribution/linux/appimage/build-appimage.sh | ||
|
||
# Explicitly set $ARCH for appimagetool ($ARCH_NAME is for the file name) | ||
# if [ "$PLATFORM_NAME" = "linux-x64" ]; then | ||
# ARCH_NAME=x64 | ||
# export ARCH=x86_64 | ||
# elif [ "$PLATFORM_NAME" = "linux-arm64" ]; then | ||
# ARCH_NAME=arm64 | ||
# export ARCH=aarch64 | ||
# else | ||
# echo "Unexpected PLATFORM_NAME "$PLATFORM_NAME"" | ||
# exit 1 | ||
# fi | ||
|
||
# export UFLAG="gh-releases-zsync|${{ github.repository_owner }}|${{ github.event.repository.name }}|latest|*-$ARCH_NAME.AppImage.zsync" | ||
# BUILDDIR=publish_ava OUTDIR=publish_ava_appimage distribution/linux/appimage/build-appimage.sh | ||
|
||
# Add to release output | ||
# pushd publish_ava_appimage | ||
# mv Ryujinx.AppImage ../release_output/ryujinx-$BUILD_VERSION-$ARCH_NAME.AppImage | ||
# mv Ryujinx.AppImage.zsync ../release_output/ryujinx-$BUILD_VERSION-$ARCH_NAME.AppImage.zsync | ||
# popd | ||
# shell: bash | ||
|
||
- name: Pushing new release | ||
uses: ncipollo/release-action@v1 | ||
with: | ||
name: ${{ steps.version_info.outputs.build_version }} | ||
artifacts: "release_output/*.tar.gz,release_output/*.zip" | ||
#artifacts: "release_output/*.tar.gz,release_output/*.zip/*AppImage*" | ||
tag: ${{ steps.version_info.outputs.build_version }} | ||
body: "**Full Changelog**: https://github.com/${{ github.repository }}/compare/Canary-${{ steps.version_info.outputs.prev_build_version }}...Canary-${{ steps.version_info.outputs.build_version }}" | ||
omitBodyDuringUpdate: true | ||
allowUpdates: true | ||
replacesArtifacts: true | ||
owner: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }} | ||
repo: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }} | ||
token: ${{ secrets.RELEASE_TOKEN }} | ||
|
||
macos_release: | ||
name: Release MacOS universal | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- uses: actions/setup-dotnet@v4 | ||
with: | ||
global-json-file: global.json | ||
|
||
- name: Setup LLVM 15 | ||
run: | | ||
wget https://apt.llvm.org/llvm.sh | ||
chmod +x llvm.sh | ||
sudo ./llvm.sh 15 | ||
- name: Install rcodesign | ||
run: | | ||
mkdir -p $HOME/.bin | ||
gh release download -R indygreg/apple-platform-rs -O apple-codesign.tar.gz -p 'apple-codesign-*-x86_64-unknown-linux-musl.tar.gz' | ||
tar -xzvf apple-codesign.tar.gz --wildcards '*/rcodesign' --strip-components=1 | ||
rm apple-codesign.tar.gz | ||
mv rcodesign $HOME/.bin/ | ||
echo "$HOME/.bin" >> $GITHUB_PATH | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Get version info | ||
id: version_info | ||
run: | | ||
echo "build_version=${{ env.RYUJINX_BASE_VERSION }}.${{ github.run_number }}" >> $GITHUB_OUTPUT | ||
echo "prev_build_version=${{ env.RYUJINX_BASE_VERSION }}.$((${{ github.run_number }} - 1))" >> $GITHUB_OUTPUT | ||
echo "git_short_hash=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT | ||
- name: Configure for release | ||
run: | | ||
sed -r --in-place 's/\%\%RYUJINX_BUILD_VERSION\%\%/${{ steps.version_info.outputs.build_version }}/g;' src/Ryujinx.Common/ReleaseInformation.cs | ||
sed -r --in-place 's/\%\%RYUJINX_BUILD_GIT_HASH\%\%/${{ steps.version_info.outputs.git_short_hash }}/g;' src/Ryujinx.Common/ReleaseInformation.cs | ||
sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_NAME\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_NAME }}/g;' src/Ryujinx.Common/ReleaseInformation.cs | ||
sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_OWNER\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/g;' src/Ryujinx.Common/ReleaseInformation.cs | ||
sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_REPO\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/g;' src/Ryujinx.Common/ReleaseInformation.cs | ||
sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_SOURCE_REPO\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_SOURCE_REPO }}/g;' src/Ryujinx.Common/ReleaseInformation.cs | ||
sed -r --in-place 's/\%\%RYUJINX_CONFIG_FILE_NAME\%\%/Config\.json/g;' src/Ryujinx.Common/ReleaseInformation.cs | ||
shell: bash | ||
|
||
- name: Publish macOS Ryujinx | ||
run: | | ||
./distribution/macos/create_macos_build_ava.sh . publish_tmp_ava publish_ava ./distribution/macos/entitlements.xml "${{ steps.version_info.outputs.build_version }}" "${{ steps.version_info.outputs.git_short_hash }}" Release | ||
- name: Publish macOS Ryujinx.Headless.SDL2 | ||
run: | | ||
./distribution/macos/create_macos_build_headless.sh . publish_tmp_headless publish_headless ./distribution/macos/entitlements.xml "${{ steps.version_info.outputs.build_version }}" "${{ steps.version_info.outputs.git_short_hash }}" Release | ||
- name: Pushing new release | ||
uses: ncipollo/release-action@v1 | ||
with: | ||
name: "Canary ${{ steps.version_info.outputs.build_version }}" | ||
artifacts: "publish_ava/*.tar.gz, publish_headless/*.tar.gz" | ||
tag: ${{ steps.version_info.outputs.build_version }} | ||
body: "**Full Changelog**: https://github.com/${{ github.repository }}/compare/Canary-${{ steps.version_info.outputs.prev_build_version }}...Canary-${{ steps.version_info.outputs.build_version }}" | ||
omitBodyDuringUpdate: true | ||
allowUpdates: true | ||
replacesArtifacts: true | ||
owner: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }} | ||
repo: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }} | ||
token: ${{ secrets.RELEASE_TOKEN }} |
Oops, something went wrong.