diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0472fd5f7..a70dcc6f8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,6 +19,7 @@ jobs: configuration: [Debug, Release] platform: - { name: win-x64, os: windows-latest, zip_os_name: win_x64 } + - { name: win-arm64, os: windows-latest, zip_os_name: win_arm64 } - { name: linux-x64, os: ubuntu-latest, zip_os_name: linux_x64 } - { name: linux-arm64, os: ubuntu-latest, zip_os_name: linux_arm64 } - { name: osx-x64, os: macos-13, zip_os_name: osx_x64 } diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml index fbd76a2d8..d92733723 100644 --- a/.github/workflows/canary.yml +++ b/.github/workflows/canary.yml @@ -62,6 +62,7 @@ jobs: | Platform | Artifact | |--|--| | Windows 64-bit | [Canary Windows Artifact](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-win_x64.zip) | + | Windows ARM 64-bit | [Canary Windows Artifact](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-win_arm64.zip) | | Linux 64-bit | [Canary Linux Artifact](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-linux_x64.tar.gz) | | Linux ARM 64-bit | [Canary Linux ARM Artifact](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-linux_arm64.tar.gz) | | macOS | [Canary macOS Artifact](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-macos_universal.app.tar.gz) | @@ -79,6 +80,7 @@ jobs: matrix: platform: - { name: win-x64, os: windows-latest, zip_os_name: win_x64 } + - { name: win-arm64, os: windows-latest, zip_os_name: win_arm64 } - { name: linux-x64, os: ubuntu-latest, zip_os_name: linux_x64 } - { name: linux-arm64, os: ubuntu-latest, zip_os_name: linux_arm64 } steps: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 69e4dc216..c8465625a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -66,6 +66,7 @@ jobs: matrix: platform: - { name: win-x64, os: windows-latest, zip_os_name: win_x64 } + - { name: win-arm64, os: windows-latest, zip_os_name: win_arm64 } - { name: linux-x64, os: ubuntu-latest, zip_os_name: linux_x64 } - { name: linux-arm64, os: ubuntu-latest, zip_os_name: linux_arm64 } steps: @@ -117,6 +118,7 @@ jobs: if: matrix.platform.os == 'ubuntu-latest' run: | pushd publish + rm libarmeilleure-jitsupport.dylib chmod +x Ryujinx.sh Ryujinx tar -czvf ../release_output/ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.tar.gz ../publish popd diff --git a/Directory.Packages.props b/Directory.Packages.props index 62a642374..adf48c1de 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -39,7 +39,7 @@ - + @@ -53,8 +53,8 @@ - - + + diff --git a/src/Ryujinx.Audio.Backends.SoundIo/Ryujinx.Audio.Backends.SoundIo.csproj b/src/Ryujinx.Audio.Backends.SoundIo/Ryujinx.Audio.Backends.SoundIo.csproj index d06f66181..911401338 100644 --- a/src/Ryujinx.Audio.Backends.SoundIo/Ryujinx.Audio.Backends.SoundIo.csproj +++ b/src/Ryujinx.Audio.Backends.SoundIo/Ryujinx.Audio.Backends.SoundIo.csproj @@ -2,7 +2,7 @@ true - win-x64;osx-x64;linux-x64 + win-x64;osx-x64;linux-x64;win-arm64;osx-arm64;linux-arm64 $(DefaultItemExcludes);._* @@ -11,15 +11,15 @@ - + PreserveNewest libsoundio.dll - + PreserveNewest libsoundio.dylib - + PreserveNewest libsoundio.so diff --git a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFmpegApi.cs b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFmpegApi.cs index c31d3034e..1134b0c6b 100644 --- a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFmpegApi.cs +++ b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFmpegApi.cs @@ -12,8 +12,8 @@ namespace Ryujinx.Graphics.Nvdec.FFmpeg.Native private static readonly Dictionary _librariesWhitelist = new() { - { AvCodecLibraryName, (58, 59) }, - { AvUtilLibraryName, (56, 57) }, + { AvCodecLibraryName, (58, 61) }, + { AvUtilLibraryName, (56, 59) }, }; private static string FormatLibraryNameForCurrentOs(string libraryName, int version) diff --git a/src/Ryujinx/Assets/locales.json b/src/Ryujinx/Assets/locales.json index fb96f120b..95bfcf6e8 100644 --- a/src/Ryujinx/Assets/locales.json +++ b/src/Ryujinx/Assets/locales.json @@ -84,7 +84,7 @@ "he_IL": "", "it_IT": "Applet Editor Mii", "ja_JP": "", - "ko_KR": "Mii 편집 애플릿", + "ko_KR": "애플릿 Mii 편집기", "no_NO": "Mii-redigeringsapplet", "pl_PL": "", "pt_BR": "Editor de Mii", @@ -459,7 +459,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "스크린샷 폴더 열기", "no_NO": "", "pl_PL": "", "pt_BR": "Abrir Pasta de Capturas de Tela", @@ -1559,7 +1559,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "{0}에서 개발", "no_NO": "Utviklet av {0}", "pl_PL": "", "pt_BR": "Desenvolvido por {0}", @@ -1859,7 +1859,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "호환성 :", "no_NO": "Kompatibilitet", "pl_PL": "", "pt_BR": "Compatibilidade:", @@ -1884,7 +1884,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "타이틀 ID :", "no_NO": "Tittel ID:", "pl_PL": "", "pt_BR": "ID do Título:", @@ -1909,7 +1909,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "호스트 게임 : {0}", "no_NO": "Spill som Arrangeres: {0}", "pl_PL": "", "pt_BR": "Jogos Hospedados: {0}", @@ -1934,7 +1934,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "온라인 플레이어 : {0}", "no_NO": "Online-spillere: {0}", "pl_PL": "", "pt_BR": "Jogadores Online: {0}", @@ -2759,7 +2759,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "사용자 정의 구성 만들기", "no_NO": "", "pl_PL": "", "pt_BR": "", @@ -2784,7 +2784,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "사용자 정의 구성 편집", "no_NO": "", "pl_PL": "", "pt_BR": "", @@ -2859,7 +2859,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "선택한 게임에 대한 기존 독립 구성 편집", "no_NO": "", "pl_PL": "", "pt_BR": "", @@ -3509,7 +3509,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "업데이트 확인 :", "no_NO": "Se etter Oppdateringer:", "pl_PL": "", "pt_BR": "Verificar Atualizações:", @@ -3534,7 +3534,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "끔", "no_NO": "Av", "pl_PL": "", "pt_BR": "Desligado", @@ -3559,7 +3559,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "프롬프트", "no_NO": "Spør", "pl_PL": "", "pt_BR": "Ao Abrir", @@ -3584,7 +3584,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "백그라운드", "no_NO": "Bakgrunn", "pl_PL": "", "pt_BR": "2° Plano", @@ -3609,7 +3609,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "에뮬레이터 초점 손실 :", "no_NO": "På Emulator Fokus Tapt:", "pl_PL": "", "pt_BR": "Ao Perder o Foco:", @@ -3634,7 +3634,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "아무것도 하지 않음", "no_NO": "Gjør Ingenting", "pl_PL": "", "pt_BR": "Não Fazer Nada", @@ -3659,7 +3659,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "입력 차단", "no_NO": "Blokkinngang", "pl_PL": "", "pt_BR": "Bloquear Controles", @@ -3684,7 +3684,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "음소거", "no_NO": "Demp Lyd", "pl_PL": "", "pt_BR": "Ficar Mudo", @@ -3709,7 +3709,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "입력 차단 및 음소거", "no_NO": "Blokker Inputs og demp Volumet", "pl_PL": "", "pt_BR": "Bloquear Controles & Ficar Mudo", @@ -3734,7 +3734,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "에뮬레이션 일시 중지", "no_NO": "Pause Emulatoren", "pl_PL": "", "pt_BR": "Pausar a Emulação", @@ -3809,7 +3809,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "초점이 맞지 않으면 입력 비활성화", "no_NO": "Deaktiver inndata når vinduet er ute av fokus", "pl_PL": "", "pt_BR": "Desativar Controles Quando Estiver Fora de Foco", @@ -3834,7 +3834,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "원래 UI 스타일 표시(다시 시작 필요)", "no_NO": "Vis original UI-stil (krever omstart)", "pl_PL": "", "pt_BR": "", @@ -3859,7 +3859,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "Ryujinx 1.1.1403을 연상시키는 이전 Avalonia Ryujinx UI를 표시합니다. 이 기능은 Windows가 아닌 플랫폼에서는 기본적으로 활성화됩니다.\n 클래식 스타일의 타이틀 바가 돌아왔고 주요 창 레이아웃 재작업이 역전되었습니다. 이 툴팁 위의 설정 탐색 배치와 같은 작업입니다.", "no_NO": "Vis det eldre Avalonia Ryujinx-grensesnittet som minner om Ryujinx 1.1.1403. Dette er aktivert som standard på plattformer som ikke er Windows.\nTittellinjen i klassisk stil er tilbake, og store omarbeidinger av vindusoppsettet er reversert, for eksempel plasseringen av innstillingsnavigasjonen over dette verktøytipset.", "pl_PL": "", "pt_BR": "", @@ -5359,7 +5359,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "컨트롤러 애플릿 무시", "no_NO": "", "pl_PL": "", "pt_BR": "Ignorar Applet do Controlador", @@ -6209,7 +6209,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "UI 로그 활성화", "no_NO": "Aktivere UI-logger", "pl_PL": "", "pt_BR": "Habilitar Logs da IU", @@ -6609,7 +6609,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "설정 초기화", "no_NO": "Tilbakestill innstillinger", "pl_PL": "", "pt_BR": "Redefinir Configurações", @@ -6634,7 +6634,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "설정을 초기화하고 싶습니다.", "no_NO": "Jeg vil tilbakestille innstillingene mine.", "pl_PL": "", "pt_BR": "Quero redefinir minhas configurações.", @@ -13559,7 +13559,7 @@ "he_IL": "שגיאה בהצגת דיאלוג ErrorApplet: {0}", "it_IT": "Errore nella visualizzazione della finestra dell'ErrorApplet: {0}", "ja_JP": "エラーアプレットダイアログ表示エラー: {0}", - "ko_KR": "애플릿 오류류 대화 상자 표시 오류 : {0}", + "ko_KR": "애플릿 오류 대화 상자 표시 오류 : {0}", "no_NO": "Feil ved visning av Feilmeldingsdialog: {0}", "pl_PL": "Błąd wyświetlania okna Dialogowego ErrorApplet: {0}", "pt_BR": "Erro ao exibir applet ErrorApplet: {0}", @@ -16759,7 +16759,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "앱이 실행 중일 때, 게임패드의 연결이 끊어지면 컨트롤러 애플릿 대화 상자가 나타나지 않습니다.\n\n모르시면 끔으로 두십시오.", "no_NO": "", "pl_PL": "", "pt_BR": "A caixa de diálogo do Applet do controlador não aparecerá se o controle for desconectado enquanto um aplicativo estiver em execução.\n\nDeixe a opção DESLIGADO se não tiver certeza.", @@ -17234,7 +17234,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "콘솔에 Avalonia(UI) 로그 메시지를 출력합니다.", "no_NO": "Skriver ut Avalonia (UI)-loggmeldinger i konsollen.", "pl_PL": "", "pt_BR": "Imprime mensagens de log do Avalonia (UI) no console.", @@ -17434,7 +17434,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "Ryujinx 스크린샷 폴더 열기", "no_NO": "", "pl_PL": "", "pt_BR": "Abre a pasta de capturas de tela do Ryujinx", @@ -18234,7 +18234,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "업데이트 가능!", "no_NO": "Oppdatering tilgjengelig!", "pl_PL": "", "pt_BR": "Atualização Disponível!", @@ -24059,7 +24059,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "호환성 목록 - {0}개 항목", "no_NO": "", "pl_PL": "", "pt_BR": "", @@ -24134,7 +24134,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "어카이브 {0} 호환성 항목...", "no_NO": "Søk i {0} kompatibilitetsoppføringer...", "pl_PL": "", "pt_BR": "", @@ -24334,7 +24334,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "어떠한 충돌이나 GPU 버그 없이 부팅 및 플레이가 가능하며, 일반 PC에서 충분히 즐길 수 있을 만큼 빠른 속도입니다.", "no_NO": "Starter opp og spiller uten krasj eller GPU-feil av noe slag, og med en hastighet som er rask nok til å ha rimelig glede av på en gjennomsnittlig PC.", "pl_PL": "", "pt_BR": "Inicializa e roda sem travamentos ou bugs de GPU de qualquer tipo, e em uma velocidade rápida o suficiente para ser aproveitado em um PC comum.", @@ -24359,7 +24359,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "부팅하고 게임에 들어가지만 충돌, 교착 상태, GPU 버그, 방해가 될 정도로 나쁜 오디오 또는 너무 느린 문제 중 하나 이상으로 인해 문제가 발생합니다. 게임은 여전히 ​​가능할 수 있습니다.", "no_NO": "Starter og går i gang i spillet, men lider av ett eller flere av følgende: krasjer, fastlåser, GPU-feil, distraherende dårlig lyd eller er rett og slett for tregt. Spillet kan fortsatt spilles helt til ende, men ikke slik det er ment å spilles.", "pl_PL": "", "pt_BR": "Inicializa e entra no jogo, mas sofre de um ou mais dos seguintes: travamentos, deadlocks, bugs de GPU, áudio ruim que distrai ou é simplesmente muito lento. O jogo ainda pode ser jogado até o fim, mas não da forma como foi criado para ser jogado.", @@ -24384,7 +24384,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "부팅하고 타이틀 화면이 나오지만 메인 게임 플레이로 진입할 수 없습니다.", "no_NO": "Starter opp og går forbi tittelskjermen, men kommer ikke inn i hovedspillet.", "pl_PL": "", "pt_BR": "Inicializa e passa da tela de título, mas não entra no jogo principal.", @@ -24409,7 +24409,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "부팅되지만 타이틀 화면을 통과하지 못합니다.", "no_NO": "Starter, men kommer ikke lenger enn til tittelskjermen.", "pl_PL": "", "pt_BR": "Inizializa, mas não passa da tela de título.", @@ -24434,7 +24434,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "부팅되지 않거나 활동 흔적이 보이지 않습니다.", "no_NO": "Starter ikke opp eller viser ingen tegn til aktivitet.", "pl_PL": "", "pt_BR": "Não inicializa ou não mostra sinais de atividade.", @@ -24459,7 +24459,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "사용자 정의 설정", "no_NO": "", "pl_PL": "", "pt_BR": "", @@ -24484,7 +24484,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "(글로벌)", "no_NO": "", "pl_PL": "", "pt_BR": "", @@ -24534,7 +24534,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "리치 프레즌스 이미지", "no_NO": "Rikt nærværsbilde", "pl_PL": "", "pt_BR": "Imagem da Presença do Discord", @@ -24559,7 +24559,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "다이내믹 리치 프레즌스", "no_NO": "Dynamisk og rik tilstedeværelse", "pl_PL": "", "pt_BR": "Presença Dinâmica do Discord", diff --git a/src/Ryujinx/Ryujinx.csproj b/src/Ryujinx/Ryujinx.csproj index 1f9642466..1e069329b 100644 --- a/src/Ryujinx/Ryujinx.csproj +++ b/src/Ryujinx/Ryujinx.csproj @@ -1,6 +1,6 @@ - win-x64;osx-x64;linux-x64 + win-x64;osx-x64;linux-x64;win-arm64;osx-arm64;linux-arm64; Exe true 1.0.0-dirty @@ -29,12 +29,18 @@ partial + + true + false + + + true @@ -57,8 +63,8 @@ - - + + @@ -67,7 +73,7 @@ - + @@ -84,7 +90,7 @@ - + Always alsoft.ini diff --git a/src/Ryujinx/UI/ViewModels/AmiiboWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/AmiiboWindowViewModel.cs index e550c4ae0..48c0837b4 100644 --- a/src/Ryujinx/UI/ViewModels/AmiiboWindowViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/AmiiboWindowViewModel.cs @@ -432,7 +432,7 @@ namespace Ryujinx.Ava.UI.ViewModels { try { - HttpResponseMessage response = await _httpClient.SendAsync(new HttpRequestMessage(HttpMethod.Head, "https://raw.githubusercontent.com/Ryubing/Ryujinx/refs/heads/master/assets/amiibo/Amiibo.json")); + HttpResponseMessage response = await _httpClient.SendAsync(new HttpRequestMessage(HttpMethod.Head, "https://raw.githubusercontent.com/Ryubing/Nfc/refs/heads/main/tags.json")); if (response.IsSuccessStatusCode) { @@ -451,7 +451,7 @@ namespace Ryujinx.Ava.UI.ViewModels { try { - HttpResponseMessage response = await _httpClient.GetAsync($"https://raw.githubusercontent.com/Ryubing/Ryujinx/refs/heads/master/assets/amiibo/Amiibo.json"); + HttpResponseMessage response = await _httpClient.GetAsync("https://raw.githubusercontent.com/Ryubing/Nfc/refs/heads/main/tags.json"); if (response.IsSuccessStatusCode) {