From 8e666ab19ffec1d6ad08379b57a73d77ec6c462e Mon Sep 17 00:00:00 2001 From: Daenorth Date: Thu, 20 Mar 2025 01:56:27 +0000 Subject: [PATCH 01/12] Update file compatibility.csv --- docs/compatibility.csv | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/compatibility.csv b/docs/compatibility.csv index ccaafa283..b2eeeefca 100644 --- a/docs/compatibility.csv +++ b/docs/compatibility.csv @@ -3375,6 +3375,7 @@ 0100E95004038000,"Xenoblade Chronicles™ 2",deadlock;amd-vendor-bug,ingame,2024-03-28 14:31:41 010074F013262000,"Xenoblade Chronicles™ 3",gpu;crash;nvdec;vulkan-backend-bug;amd-vendor-bug,ingame,2024-08-06 19:56:44 0100FF500E34A000,"Xenoblade Chronicles™ Definitive Edition",nvdec,playable,2024-05-04 20:12:41 +0100453019aa8000, Xenoblade Chronicles: X Definitive Edition,,boots,2025-03-20 02:51:00 010028600BA16000,"Xenon Racer",nvdec;UE4,playable,2022-08-31 22:05:30 010064200C324000,"Xenon Valkyrie+",,playable,2021-06-07 20:25:53 0100928005BD2000,"Xenoraid",,playable,2022-09-03 13:01:10 From 8ca06b69acb675a5da7af0e536203694248af7f9 Mon Sep 17 00:00:00 2001 From: Daenorth Date: Thu, 20 Mar 2025 01:57:45 +0000 Subject: [PATCH 02/12] Update file TitleIDs.cs --- src/Ryujinx.Common/TitleIDs.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Ryujinx.Common/TitleIDs.cs b/src/Ryujinx.Common/TitleIDs.cs index 76a8a7126..3201a5c6b 100644 --- a/src/Ryujinx.Common/TitleIDs.cs +++ b/src/Ryujinx.Common/TitleIDs.cs @@ -163,6 +163,7 @@ namespace Ryujinx.Common "0100ff500e34a000", // Xenoblade Chronicles - Definitive Edition "0100e95004038000", // Xenoblade Chronicles 2 "010074f013262000", // Xenoblade Chronicles 3 + "0100453019aa8000", // Xenoblade Chronicles: X Definitive Edition //Misc Games "010056e00853a000", // A Hat in Time From 1a705418c5a80ba95af9b621b9f8f42411bddc47 Mon Sep 17 00:00:00 2001 From: Daenorth Date: Thu, 20 Mar 2025 05:57:17 +0000 Subject: [PATCH 03/12] Edit compatibility.csv --- docs/compatibility.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/compatibility.csv b/docs/compatibility.csv index b2eeeefca..4ef7dd445 100644 --- a/docs/compatibility.csv +++ b/docs/compatibility.csv @@ -3375,7 +3375,7 @@ 0100E95004038000,"Xenoblade Chronicles™ 2",deadlock;amd-vendor-bug,ingame,2024-03-28 14:31:41 010074F013262000,"Xenoblade Chronicles™ 3",gpu;crash;nvdec;vulkan-backend-bug;amd-vendor-bug,ingame,2024-08-06 19:56:44 0100FF500E34A000,"Xenoblade Chronicles™ Definitive Edition",nvdec,playable,2024-05-04 20:12:41 -0100453019aa8000, Xenoblade Chronicles: X Definitive Edition,,boots,2025-03-20 02:51:00 +0100453019aa8000, Xenoblade Chronicles: X Definitive Edition,,ingame,2025-03-20 06:51:00 010028600BA16000,"Xenon Racer",nvdec;UE4,playable,2022-08-31 22:05:30 010064200C324000,"Xenon Valkyrie+",,playable,2021-06-07 20:25:53 0100928005BD2000,"Xenoraid",,playable,2022-09-03 13:01:10 From c067f85fa3541682a58315cf723f1000b25889ff Mon Sep 17 00:00:00 2001 From: Daenorth Date: Thu, 20 Mar 2025 06:13:27 +0000 Subject: [PATCH 04/12] Edit compatibility.csv --- docs/compatibility.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/compatibility.csv b/docs/compatibility.csv index 4ef7dd445..c46a0d1e9 100644 --- a/docs/compatibility.csv +++ b/docs/compatibility.csv @@ -3375,7 +3375,7 @@ 0100E95004038000,"Xenoblade Chronicles™ 2",deadlock;amd-vendor-bug,ingame,2024-03-28 14:31:41 010074F013262000,"Xenoblade Chronicles™ 3",gpu;crash;nvdec;vulkan-backend-bug;amd-vendor-bug,ingame,2024-08-06 19:56:44 0100FF500E34A000,"Xenoblade Chronicles™ Definitive Edition",nvdec,playable,2024-05-04 20:12:41 -0100453019aa8000, Xenoblade Chronicles: X Definitive Edition,,ingame,2025-03-20 06:51:00 +0100453019aa8000,"Xenoblade Chronicles: X Definitive Edition",,ingame,2025-03-20 06:51:00 010028600BA16000,"Xenon Racer",nvdec;UE4,playable,2022-08-31 22:05:30 010064200C324000,"Xenon Valkyrie+",,playable,2021-06-07 20:25:53 0100928005BD2000,"Xenoraid",,playable,2022-09-03 13:01:10 From cb486ad66d9b85c1f91e52fc827e7533ed4de3d8 Mon Sep 17 00:00:00 2001 From: Daenorth Date: Thu, 27 Mar 2025 05:25:02 +0000 Subject: [PATCH 05/12] Update file locales.json --- src/Ryujinx/Assets/locales.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/Ryujinx/Assets/locales.json b/src/Ryujinx/Assets/locales.json index 7d9550849..bd1ec3183 100644 --- a/src/Ryujinx/Assets/locales.json +++ b/src/Ryujinx/Assets/locales.json @@ -460,7 +460,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "스크린샷 폴더 열기", - "no_NO": "", + "no_NO": "Åpne Skjermbilde Mappen", "pl_PL": "", "pt_BR": "Abrir Pasta de Capturas de Tela", "ru_RU": "Открыть папку со скриншотами", @@ -2760,7 +2760,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "사용자 정의 구성 만들기", - "no_NO": "", + "no_NO": "Opprett egendefinert konfigurasjon", "pl_PL": "", "pt_BR": "", "ru_RU": "Задать индивидуальные параметры", @@ -2785,7 +2785,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "사용자 정의 구성 편집", - "no_NO": "", + "no_NO": "Rediger egendefinert konfigurasjon", "pl_PL": "", "pt_BR": "", "ru_RU": "Изменить индивидуальные параметры", @@ -2860,7 +2860,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "선택한 게임에 대한 기존 독립 구성 편집", - "no_NO": "", + "no_NO": "Rediger din eksisterende uavhengige konfigurasjon for det valgte spillet", "pl_PL": "", "pt_BR": "", "ru_RU": "Отредактировать существующие независимые параметры для выбранной игры.", @@ -4935,7 +4935,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "", + "no_NO": "Multiplikator i turbomodus:", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -4960,7 +4960,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "", + "no_NO": "Målverdien for multiplikatoren i turbomodus. \n\nLa syå på 200 hvis du er usikker.", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -4985,7 +4985,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "", + "no_NO": "Turbo-modus er en emulatorfunksjon som effektivt øker eller senker hastigheten når et spill ikke er følsom for bildefrekvens.\nDu kan slå på denne funksjonen i spillet med en hurtigtast, som kan konfigureres i Ryujinx Keyboard Hotkeys-innstillingene.\n\nLa den stå på 200 hvis du er usikker.", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -5360,7 +5360,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "컨트롤러 애플릿 무시", - "no_NO": "", + "no_NO": "Ignorer Kontroller-applet", "pl_PL": "", "pt_BR": "Ignorar Applet do Controlador", "ru_RU": "Игнорировать апплет контроллера", @@ -16760,7 +16760,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "앱이 실행 중일 때, 게임패드의 연결이 끊어지면 컨트롤러 애플릿 대화 상자가 나타나지 않습니다.\n\n모르시면 끔으로 두십시오.", - "no_NO": "", + "no_NO": "Håndkontroller-appleten vises ikke hvis gamepaden kobles fra mens et program kjører.", "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.", "ru_RU": "Диалоговое окно апплета контроллера не будет отображаться, если геймпад отключен во время работы приложения.\n\nОставьте выключенным, если не уверены.", @@ -17435,7 +17435,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "Ryujinx 스크린샷 폴더 열기", - "no_NO": "", + "no_NO": "Åpne Ryujinx skjermbildemappen", "pl_PL": "", "pt_BR": "Abre a pasta de capturas de tela do Ryujinx", "ru_RU": "Открывает папку скриншотов Ryujinx", @@ -23985,7 +23985,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "", + "no_NO": "Hurtigtasten for turbo-modus.\nKonfigurer oppførselen til turbo-modus i Ryujinx CPU-innstillinger.\n\nLa være ubundet hvis du er usikker.", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -24010,7 +24010,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "", - "no_NO": "", + "no_NO": "Bare mens du trykker på", "pl_PL": "", "pt_BR": "", "ru_RU": "", @@ -24060,7 +24060,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "호환성 목록 - {0}개 항목", - "no_NO": "", + "no_NO": "Kompatibilitetsliste - {0} oppføringer", "pl_PL": "", "pt_BR": "", "ru_RU": "Список совместимости — записей: {0}", @@ -24460,7 +24460,7 @@ "it_IT": "", "ja_JP": "", "ko_KR": "사용자 정의 설정", - "no_NO": "", + "no_NO": "Tilpasset konfigurasjon", "pl_PL": "", "pt_BR": "", "ru_RU": "Индивидуальные параметры", From a6ce065f79add1acb32889561126bc0097a3df39 Mon Sep 17 00:00:00 2001 From: Tartifless Date: Fri, 28 Mar 2025 02:59:56 +0000 Subject: [PATCH 06/12] sdl2 guid, remove the CRC bytes (4 first characters) and replace with 0000 when creating guid --- src/Ryujinx.Input.SDL2/SDL2GamepadDriver.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Ryujinx.Input.SDL2/SDL2GamepadDriver.cs b/src/Ryujinx.Input.SDL2/SDL2GamepadDriver.cs index 67c68d8ec..60120ab58 100644 --- a/src/Ryujinx.Input.SDL2/SDL2GamepadDriver.cs +++ b/src/Ryujinx.Input.SDL2/SDL2GamepadDriver.cs @@ -57,16 +57,19 @@ namespace Ryujinx.Input.SDL2 return null; } + // Remove the first 4 char of the guid (CRC part) to make it stable + string guidString = "0000" + guid.ToString().Substring(4); + string id; lock (_lock) { int guidIndex = 0; - id = guidIndex + "-" + guid; + id = guidIndex + "-" + guidString; while (_gamepadsIds.Contains(id)) { - id = (++guidIndex) + "-" + guid; + id = (++guidIndex) + "-" + guidString; } } From 1e6b2ea9ca4b383721fa134dc64ee93033f67e4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hack=E8=8C=B6=E3=82=93?= Date: Fri, 28 Mar 2025 10:01:12 +0000 Subject: [PATCH 07/12] Update Korean translation --- src/Ryujinx/Assets/locales.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/Ryujinx/Assets/locales.json b/src/Ryujinx/Assets/locales.json index bd1ec3183..a8e230fa8 100644 --- a/src/Ryujinx/Assets/locales.json +++ b/src/Ryujinx/Assets/locales.json @@ -4934,7 +4934,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "터보 모드 배수 :", "no_NO": "Multiplikator i turbomodus:", "pl_PL": "", "pt_BR": "", @@ -4959,7 +4959,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "터보 모드 배수 목표 값입니다.\n\n모르면 200으로 두세요.", "no_NO": "Målverdien for multiplikatoren i turbomodus. \n\nLa syå på 200 hvis du er usikker.", "pl_PL": "", "pt_BR": "", @@ -4984,7 +4984,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "터보 모드는 게임이 프레임 속도에 민감하지 않을 때 효과적으로 속도를 높이거나 낮추는 에뮬레이터 기능입니다.\n이 기능은 Ryujinx 키보드 단축키 설정에서 구성할 수 있는 단축키를 사용하여 게임 내에서 전환할 수 있습니다.\n\n모르면 200으로 두세요.", "no_NO": "Turbo-modus er en emulatorfunksjon som effektivt øker eller senker hastigheten når et spill ikke er følsom for bildefrekvens.\nDu kan slå på denne funksjonen i spillet med en hurtigtast, som kan konfigureres i Ryujinx Keyboard Hotkeys-innstillingene.\n\nLa den stå på 200 hvis du er usikker.", "pl_PL": "", "pt_BR": "", @@ -18184,7 +18184,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "{0}FPS({1}밀리초)", "no_NO": "", "pl_PL": "", "pt_BR": "", @@ -18209,7 +18209,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "{0}FPS({1}밀리초), ({2}%) 터보", "no_NO": "", "pl_PL": "", "pt_BR": "", @@ -23959,7 +23959,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "터보 모드 :", "no_NO": "", "pl_PL": "", "pt_BR": "", @@ -23984,7 +23984,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "터보 모드 단축키입니다.\nRyujinx CPU 설정에서 터보 모드의 동작을 구성합니다.\n\n모르면 바인딩 해제 상태로 두세요.", "no_NO": "Hurtigtasten for turbo-modus.\nKonfigurer oppførselen til turbo-modus i Ryujinx CPU-innstillinger.\n\nLa være ubundet hvis du er usikker.", "pl_PL": "", "pt_BR": "", @@ -24009,7 +24009,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "", + "ko_KR": "누르고 있는 동안만", "no_NO": "Bare mens du trykker på", "pl_PL": "", "pt_BR": "", @@ -24209,7 +24209,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "플레이 가능", + "ko_KR": "원활", "no_NO": "Spillbar", "pl_PL": "", "pt_BR": "Jogável", @@ -24234,7 +24234,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "게임 내", + "ko_KR": "가능", "no_NO": "", "pl_PL": "", "pt_BR": "No jogo", @@ -24284,7 +24284,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "부츠", + "ko_KR": "부팅", "no_NO": "Starter", "pl_PL": "", "pt_BR": "Inicializa", @@ -24309,7 +24309,7 @@ "he_IL": "", "it_IT": "", "ja_JP": "", - "ko_KR": "없음", + "ko_KR": "불가능", "no_NO": "Ingenting", "pl_PL": "", "pt_BR": "Nada", From dfdbb23f0d6d31d79f0eee4151153ff3552187e2 Mon Sep 17 00:00:00 2001 From: Shinyoyo Date: Sat, 29 Mar 2025 03:47:24 -0500 Subject: [PATCH 08/12] Updated Simplified Chinese translation. --- src/Ryujinx/Assets/locales.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Ryujinx/Assets/locales.json b/src/Ryujinx/Assets/locales.json index a8e230fa8..3e9a7e886 100644 --- a/src/Ryujinx/Assets/locales.json +++ b/src/Ryujinx/Assets/locales.json @@ -4943,7 +4943,7 @@ "th_TH": "", "tr_TR": "", "uk_UA": "", - "zh_CN": "", + "zh_CN": "涡轮模式倍数:", "zh_TW": "" } }, @@ -4968,7 +4968,7 @@ "th_TH": "", "tr_TR": "", "uk_UA": "", - "zh_CN": "", + "zh_CN": "涡轮模式倍数的目标值。\n\n如果不确定请保留为 200。", "zh_TW": "" } }, @@ -4993,7 +4993,7 @@ "th_TH": "", "tr_TR": "", "uk_UA": "", - "zh_CN": "", + "zh_CN": "涡轮模式是一种模拟器功能当游戏对帧率不敏感时它可以有效地导致加速或降速。\n您可以在游戏中使用热键切换此功能,它可以在 Ryujinx 的键盘热键设置进行设置。\n\n如果不确定则保留为 200。", "zh_TW": "" } }, @@ -18218,7 +18218,7 @@ "th_TH": "", "tr_TR": "", "uk_UA": "", - "zh_CN": "", + "zh_CN": "{0} FPS ({1}ms), 涡轮 ({2}%)", "zh_TW": "" } }, @@ -23968,7 +23968,7 @@ "th_TH": "", "tr_TR": "", "uk_UA": "", - "zh_CN": "", + "zh_CN": "涡轮模式: ", "zh_TW": "" } }, @@ -23993,7 +23993,7 @@ "th_TH": "", "tr_TR": "", "uk_UA": "", - "zh_CN": "", + "zh_CN": "涡轮模式热键。\n可以在 Ryujinx CPU 设置中配置涡轮模式的行为。\n\n如果不确定请保留为未绑定。", "zh_TW": "" } }, @@ -24018,7 +24018,7 @@ "th_TH": "", "tr_TR": "", "uk_UA": "", - "zh_CN": "", + "zh_CN": "仅在按下时", "zh_TW": "" } }, From 5d8451b41a33220ce84008a07a345c745a9140de Mon Sep 17 00:00:00 2001 From: Yeager Date: Sat, 29 Mar 2025 20:22:23 -0500 Subject: [PATCH 09/12] Update Swedish in locales.json --- src/Ryujinx/Assets/locales.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Ryujinx/Assets/locales.json b/src/Ryujinx/Assets/locales.json index 3e9a7e886..09266439c 100644 --- a/src/Ryujinx/Assets/locales.json +++ b/src/Ryujinx/Assets/locales.json @@ -4939,7 +4939,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "", + "sv_SE": "Multiplikator för turboläge:", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4964,7 +4964,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "", + "sv_SE": "Målvärdet för multiplikatorn i turboläget. \n\nLämna den på 200 om du är osäker.", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -4989,7 +4989,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "", + "sv_SE": "Turboläget är en emulatorfunktion som effektivt ökar eller sänker hastigheten när ett spel inte är känsligt för bildfrekvens.\nDu kan växla denna funktion i spelet med en snabbtangent, konfigurerbar i Ryujinx inställningar för snabbtangenter.\n\nLämna den på 200 om du är osäker.", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -10014,7 +10014,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Enter (блок цифр)", - "sv_SE": "", + "sv_SE": "Enter (numerisk)", "th_TH": "", "tr_TR": "", "uk_UA": "Enter (цифровий блок)", @@ -11064,7 +11064,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "Тачпад", - "sv_SE": "", + "sv_SE": "Pekplatta", "th_TH": "", "tr_TR": "", "uk_UA": "Сенсорна панель", @@ -18189,7 +18189,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "", + "sv_SE": "{0} bilder/s ({1}ms)", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -18214,7 +18214,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "", + "sv_SE": "{0} bilder/s ({1}ms), Turbo ({2}%)", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -23964,7 +23964,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "", + "sv_SE": "Turboläge:", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -23989,7 +23989,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "", + "sv_SE": "Snabbtangenten för turboläge.\nKonfigurera beteendet för turboläge i Ryujinx CPU-inställningar.\n\nLämna Obunden om du är osäker.", "th_TH": "", "tr_TR": "", "uk_UA": "", @@ -24014,7 +24014,7 @@ "pl_PL": "", "pt_BR": "", "ru_RU": "", - "sv_SE": "", + "sv_SE": "Endast när du trycker ner", "th_TH": "", "tr_TR": "", "uk_UA": "", From 343de5171c5ee57cb775ba1dfe1e478fb1fa1aaf Mon Sep 17 00:00:00 2001 From: GreemDev Date: Sun, 30 Mar 2025 01:21:02 -0500 Subject: [PATCH 10/12] Move locales.json to repository root to make it easier to find. --- {src/Ryujinx/Assets => assets}/locales.json | 0 src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs | 2 +- src/Ryujinx/Common/LocaleManager.cs | 2 +- src/Ryujinx/Ryujinx.csproj | 6 ++++-- src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) rename {src/Ryujinx/Assets => assets}/locales.json (100%) diff --git a/src/Ryujinx/Assets/locales.json b/assets/locales.json similarity index 100% rename from src/Ryujinx/Assets/locales.json rename to assets/locales.json diff --git a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs index b8e14cd30..bc2131035 100644 --- a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs +++ b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs @@ -15,7 +15,7 @@ namespace Ryujinx.BuildValidationTasks { Console.WriteLine("Running Locale Validation Task..."); - string path = projectPath + "src/Ryujinx/Assets/locales.json"; + string path = projectPath + "assets/locales.json"; string data; using (StreamReader sr = new(path)) diff --git a/src/Ryujinx/Common/LocaleManager.cs b/src/Ryujinx/Common/LocaleManager.cs index 9307532e7..e6648fd7e 100644 --- a/src/Ryujinx/Common/LocaleManager.cs +++ b/src/Ryujinx/Common/LocaleManager.cs @@ -154,7 +154,7 @@ namespace Ryujinx.Ava.Common.Locale { Dictionary localeStrings = new(); - _localeData ??= EmbeddedResources.ReadAllText("Ryujinx/Assets/locales.json") + _localeData ??= EmbeddedResources.ReadAllText("Ryujinx/Assets/Locale.json") .Into(it => JsonHelper.Deserialize(it, LocalesJsonContext.Default.LocalesJson)); foreach (LocalesEntry locale in _localeData.Value.Locales) diff --git a/src/Ryujinx/Ryujinx.csproj b/src/Ryujinx/Ryujinx.csproj index db97c9b68..afd09a4d5 100644 --- a/src/Ryujinx/Ryujinx.csproj +++ b/src/Ryujinx/Ryujinx.csproj @@ -154,7 +154,9 @@ Assets\RyujinxGameCompatibility.csv - + + Assets\Locale.json + @@ -173,6 +175,6 @@ - + diff --git a/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs b/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs index e47adc575..5534ab8e7 100644 --- a/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs +++ b/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs @@ -76,7 +76,7 @@ namespace Ryujinx.Ava.UI.Views.Main private static IEnumerable GenerateLanguageMenuItems() { - const string LocalePath = "Ryujinx/Assets/locales.json"; + const string LocalePath = "Ryujinx/Assets/Locale.json"; string languageJson = EmbeddedResources.ReadAllText(LocalePath); From 2ea9e945abe68ee37746b404e066f6a8bd0bf947 Mon Sep 17 00:00:00 2001 From: GreemDev Date: Sun, 30 Mar 2025 02:06:04 -0500 Subject: [PATCH 11/12] Move locales.json to repository root under "assets" folder See merge request ryubing/ryujinx!20 --- {src/Ryujinx/Assets => assets}/locales.json | 0 src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs | 2 +- src/Ryujinx/Common/LocaleManager.cs | 2 +- src/Ryujinx/Ryujinx.csproj | 6 ++++-- src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) rename {src/Ryujinx/Assets => assets}/locales.json (100%) diff --git a/src/Ryujinx/Assets/locales.json b/assets/locales.json similarity index 100% rename from src/Ryujinx/Assets/locales.json rename to assets/locales.json diff --git a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs index b8e14cd30..bc2131035 100644 --- a/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs +++ b/src/Ryujinx.BuildValidationTasks/LocalesValidationTask.cs @@ -15,7 +15,7 @@ namespace Ryujinx.BuildValidationTasks { Console.WriteLine("Running Locale Validation Task..."); - string path = projectPath + "src/Ryujinx/Assets/locales.json"; + string path = projectPath + "assets/locales.json"; string data; using (StreamReader sr = new(path)) diff --git a/src/Ryujinx/Common/LocaleManager.cs b/src/Ryujinx/Common/LocaleManager.cs index 9307532e7..e6648fd7e 100644 --- a/src/Ryujinx/Common/LocaleManager.cs +++ b/src/Ryujinx/Common/LocaleManager.cs @@ -154,7 +154,7 @@ namespace Ryujinx.Ava.Common.Locale { Dictionary localeStrings = new(); - _localeData ??= EmbeddedResources.ReadAllText("Ryujinx/Assets/locales.json") + _localeData ??= EmbeddedResources.ReadAllText("Ryujinx/Assets/Locale.json") .Into(it => JsonHelper.Deserialize(it, LocalesJsonContext.Default.LocalesJson)); foreach (LocalesEntry locale in _localeData.Value.Locales) diff --git a/src/Ryujinx/Ryujinx.csproj b/src/Ryujinx/Ryujinx.csproj index db97c9b68..afd09a4d5 100644 --- a/src/Ryujinx/Ryujinx.csproj +++ b/src/Ryujinx/Ryujinx.csproj @@ -154,7 +154,9 @@ Assets\RyujinxGameCompatibility.csv - + + Assets\Locale.json + @@ -173,6 +175,6 @@ - + diff --git a/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs b/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs index e47adc575..5534ab8e7 100644 --- a/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs +++ b/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs @@ -76,7 +76,7 @@ namespace Ryujinx.Ava.UI.Views.Main private static IEnumerable GenerateLanguageMenuItems() { - const string LocalePath = "Ryujinx/Assets/locales.json"; + const string LocalePath = "Ryujinx/Assets/Locale.json"; string languageJson = EmbeddedResources.ReadAllText(LocalePath); From 66026934775c696c75bcf92b6e9771b7412f5ff2 Mon Sep 17 00:00:00 2001 From: Goodfeat Date: Sun, 30 Mar 2025 22:29:57 -0500 Subject: [PATCH 12/12] feature: add the ability to skip profile select dialog when opening games that use it the skip behavior is done by passing the user id of the profile you have selected in Options > Manage User Profiles. See merge request ryubing/ryujinx!9 --- assets/locales.json | 50 +++++++++++++++++++ src/Ryujinx/Headless/Options.cs | 8 ++- .../Configuration/ConfigurationFileFormat.cs | 7 ++- .../ConfigurationState.Migration.cs | 4 +- .../Configuration/ConfigurationState.Model.cs | 7 +++ .../Configuration/ConfigurationState.cs | 2 + .../UI/Applet/ProfileSelectorDialog.axaml.cs | 8 +++ .../UI/ViewModels/SettingsViewModel.cs | 3 ++ .../Views/Settings/SettingsSystemView.axaml | 5 ++ 9 files changed, 91 insertions(+), 3 deletions(-) diff --git a/assets/locales.json b/assets/locales.json index 09266439c..a7e605ebb 100644 --- a/assets/locales.json +++ b/assets/locales.json @@ -5372,6 +5372,31 @@ "zh_TW": "忽略控制器小程式" } }, + { + "ID": "SettingsTabSystemSkipUserProfilesManager", + "Translations": { + "ar_SA": "تخطي مربع حوار 'إدارة الملفات الشخصية للمستخدم'", + "de_DE": "Überspringen des Dialogs 'Benutzerprofile verwalten'", + "el_GR": "Παράκαμψη διαλόγου 'Διαχείριση Προφίλ _Χρηστών'", + "en_US": "Skip dialog 'Manage User Profiles'", + "es_ES": "Omitir el diálogo 'Gestionar perfiles de usuario'", + "fr_FR": "Ignorer le dialogue 'Gérer les profils d'utilisateurs'", + "he_IL": "דילוג על הדיאלוג 'נהל פרופילי משתמש'", + "it_IT": "Salta la finestra di dialogo 'Gestisci i profili utente'", + "ja_JP": "「ユーザプロファイルを管理」ダイアログをスキップ", + "ko_KR": "'사용자 프로필 관리' 대화 상자 건너뛰기", + "no_NO": "Hopp over dialogen 'Administrere Brukerprofiler'", + "pl_PL": "Pomiń okno dialogowe 'Zarządzaj profilami użytkowników'", + "pt_BR": "Ignorar a caixa de diálogo 'Gerenciar Perfis de Usuário'", + "ru_RU": "Пропустить диалог 'Менеджер учётных записей'", + "sv_SE": "Hoppa över dialogen 'Hantera användarprofiler'", + "th_TH": "ข้ามหน้าต่างโต้ตอบ 'จัดการโปรไฟล์ผู้ใช้งาน'", + "tr_TR": "'Kullanıcı Profillerini Yönet' iletişim kutusunu atla", + "uk_UA": "Пропустити діалог 'Керувати профілями користувачів'", + "zh_CN": "跳过对话框“管理用户账户”", + "zh_TW": "略過對話框「管理使用者設定檔」" + } + }, { "ID": "SettingsTabGraphics", "Translations": { @@ -16772,6 +16797,31 @@ "zh_TW": "在模擬應用程式時如果遊戲手柄中斷連線則不會顯示控制器小程式。\n\n如果不確定,請保持關閉狀態。" } }, + { + "ID": "SkipUserProfilesTooltip", + "Translations": { + "ar_SA": "", + "de_DE": "Diese Option überspringt den Dialog 'Benutzerprofile verwalten' während des Spiels und verwendet ein voreingestelltes Profil.\n\nDie Profilumschaltung finden Sie unter 'Einstellungen' - 'Benutzerprofile verwalten'. Wählen Sie das gewünschte Profil aus, bevor Sie das Spiel laden.", + "el_GR": "Αυτή η επιλογή παρακάμπτει το παράθυρο διαλόγου 'Διαχειριστής Προφίλ Χρήστη' κατά τη διάρκεια του παιχνιδιού, χρησιμοποιώντας ένα προεπιλεγμένο προφίλ.\n\nΗ εναλλαγή προφίλ βρίσκεται στις 'Ρυθμίσεις' - 'Διαχειριστής Προφίλ Χρήστη'. Επιλέξτε το επιθυμητό προφίλ πριν φορτώσετε το παιχνίδι.", + "en_US": "This option skips the 'Manage User Profiles' dialog during gameplay, using a pre-selected profile.\n\nProfile switching is found in 'Settings' - 'Manager User Profiles'. Select the desired profile before loading the game.", + "es_ES": "Esta opción omite el diálogo de 'Gestionar perfiles de usuario' durante el juego, utilizando un perfil preseleccionado.\n\nEl cambio de perfil se encuentra en 'Configuración' - 'Gestionar perfiles de usuario'. Seleccione el perfil deseado antes de cargar el juego.", + "fr_FR": "Cette option permet d'éviter le dialogue du 'Gérer les profils d'utilisateurs' pendant le jeu, en utilisant un profil pré-sélectionné.\n\nLa sélection du profil se trouve dans 'Paramètres' - 'Gérer les profils d'utilisateurs'. Sélectionnez le profil souhaité avant de charger la partie.", + "he_IL": "", + "it_IT": "Questa opzione salta la finestra di dialogo 'Gestisci i profili utente' durante il gioco, utilizzando un profilo pre-selezionato.\n\nIl cambio del profilo si trova in 'Impostazioni' - 'Gestisci i profili utente'. Seleziona il profilo desiderato prima di caricare il gioco.", + "ja_JP": "このオプションは、ゲームプレイ中に「ユーザプロファイルを管理」ダイアログをスキップし、事前に選択されたプロファイルを使用します。\n\nプロファイルの切り替えは、「設定」-「ユーザプロファイルを管理」で見つけることができます。ゲームのロード前に目的のプロファイルをを選択してください。", + "ko_KR": "이 옵션은 게임 플레이 중 '사용자 프로필 관리' 대화 상자를 건너뛰고, 미리 선택된 프로필을 사용합니다.\n\n프로필 전환은 '설정' - '사용자 프로필 관리'에서 찾을 수 있습니다. 게임 로드 전에 원하는 프로필을 선택하세요.", + "no_NO": "Dette alternativet hopper over dialogen 'Administrere Brukerprofiler' under spilling, og bruker en forhåndsvalgt profil.\n\nProfilbytte finnes i 'Innstillinger' - 'Administrer Brukerprofiler'. Velg ønsket profil før du laster spillet.", + "pl_PL": "Ta opcja pomija okno dialogowe 'Zarządzaj profilami użytkowników' podczas gry, używając wcześniej wybrany profil.\n\nPrzełączanie profili można znaleźć w 'Ustawienia' - 'Zarządzaj Profilami Użytkowników'. Wybierz żądany profil przed załadowaniem gry.", + "pt_BR": "Esta opção ignora a caixa de diálogo 'Gerenciar Perfis de Usuário' durante o jogo, usando um perfil pré-selecionado.\n\nO gerenciamento de perfis pode ser encontrado em 'Configurações' - 'Gerenciar Perfis de Usuários'. Selecione o perfil desejado antes de carregar o jogo.", + "ru_RU": "Эта опция пропускает диалоговое окно 'Менеджер учётных записей' во время игры, используя предварительно выбранный профиль.\n\nПереключение профилей можно найти в 'Параметры' - 'Менеджер учётных записей'. Выберите желаемый профиль перед загрузкой игры.", + "sv_SE": "Det här alternativet hoppar över dialogrutan 'Hantera användarprofiler' under spelet och använder en förvald profil.\n\nProfilväxling finns i 'Inställningar' - 'Hantera användarprofiler'. Välj önskad profil innan du laddar spelet.", + "th_TH": "ตัวเลือกนี้จะข้ามหน้าต่าง 'จัดการโปรไฟล์ผู้ใช้งาน' ระหว่างเล่นเกม โดยใช้โปรไฟล์ที่เลือกไว้ล่วงหน้า\n\nการสลับโปรไฟล์สามารถพบได้ใน 'ตั้งค่า' - 'จัดการโปรไฟล์ผู้ใช้งาน' เลือกโปรไฟล์ที่คุณต้องการก่อนโหลดเกม", + "tr_TR": "Bu seçenek, oyun sırasında 'Kullanıcı Profillerini Yönet' iletişim kutusunu atlar ve önceden seçilmiş bir profil kullanır.\n\nProfil değiştirme 'Seçenekler' - 'Kullanıcı Profillerini Yönet' bölümünde bulunur. Oyunu yüklemeden önce istediğiniz profili seçin.", + "uk_UA": "Ця опція пропускає діалогове вікно 'Керувати профілями користувачів' під час гри, використовуючи попередньо вибраний профіль.\n\nПеремикання профілів можна знайти в 'Налаштування' - 'Керувати профілями користувачів'. Виберіть потрібний профіль перед завантаженням гри.", + "zh_CN": "此选项跳过游戏过程中的“管理用户账户”对话框,使用预选的配置。\n\n可以在“设置” - “管理用户账户”中找到配置文件切换。 在加载游戏之前选择所需的配置文件。", + "zh_TW": "這個選項跳過遊戲過程中的「管理使用者設定檔」對話框,使用預先選取的設定。\n\n可以在「設定」-「管理使用者設定檔」中找到設定檔切換。 在載入遊戲前選擇您需要的設定檔。" + } + }, { "ID": "GraphicsBackendThreadingTooltip", "Translations": { diff --git a/src/Ryujinx/Headless/Options.cs b/src/Ryujinx/Headless/Options.cs index 8305cd311..27df69e5b 100644 --- a/src/Ryujinx/Headless/Options.cs +++ b/src/Ryujinx/Headless/Options.cs @@ -150,7 +150,10 @@ namespace Ryujinx.Headless if (NeedsOverride(nameof(IgnoreControllerApplet))) IgnoreControllerApplet = configurationState.System.IgnoreControllerApplet; - + + if (NeedsOverride(nameof(SkipUserProfilesManager))) + SkipUserProfilesManager = configurationState.System.SkipUserProfilesManager; + return; bool NeedsOverride(string argKey) => originalArgs.None(arg => arg.TrimStart('-').EqualsIgnoreCase(OptionName(argKey))); @@ -414,6 +417,9 @@ namespace Ryujinx.Headless [Option("ignore-controller-applet", Required = false, Default = false, HelpText = "Enable ignoring the controller applet when your game loses connection to your controller.")] public bool IgnoreControllerApplet { get; set; } + [Option("skip-user-profiles-manager", Required = false, Default = false, HelpText = "Enable skips the Profiles Manager popup during gameplay. Select the desired profile before starting the game")] + public bool SkipUserProfilesManager { get; set; } + // Values [Value(0, MetaName = "input", HelpText = "Input to load.", Required = true)] diff --git a/src/Ryujinx/Systems/Configuration/ConfigurationFileFormat.cs b/src/Ryujinx/Systems/Configuration/ConfigurationFileFormat.cs index 470749674..c5bbe3da8 100644 --- a/src/Ryujinx/Systems/Configuration/ConfigurationFileFormat.cs +++ b/src/Ryujinx/Systems/Configuration/ConfigurationFileFormat.cs @@ -15,7 +15,7 @@ namespace Ryujinx.Ava.Systems.Configuration /// /// The current version of the file format /// - public const int CurrentVersion = 68; + public const int CurrentVersion = 69; /// /// Version of the configuration file format @@ -187,6 +187,11 @@ namespace Ryujinx.Ava.Systems.Configuration /// public bool IgnoreApplet { get; set; } + /// + /// Skip user profiles manager dialog during gameplay(the used profile in the configuration will be selected) + /// + public bool SkipUserProfiles { get; set; } + /// /// Enables or disables save window size, position and state on close. /// diff --git a/src/Ryujinx/Systems/Configuration/ConfigurationState.Migration.cs b/src/Ryujinx/Systems/Configuration/ConfigurationState.Migration.cs index 20c4c6414..f7bc22913 100644 --- a/src/Ryujinx/Systems/Configuration/ConfigurationState.Migration.cs +++ b/src/Ryujinx/Systems/Configuration/ConfigurationState.Migration.cs @@ -103,6 +103,7 @@ namespace Ryujinx.Ava.Systems.Configuration System.DramSize.Value = cff.DramSize; System.IgnoreMissingServices.Value = cff.IgnoreMissingServices; System.IgnoreControllerApplet.Value = cff.IgnoreApplet; + System.SkipUserProfilesManager.Value = cff.SkipUserProfiles; System.UseHypervisor.Value = cff.UseHypervisor; UI.GuiColumns.FavColumn.Value = shouldLoadFromFile ? cff.GuiColumns.FavColumn : UI.GuiColumns.FavColumn.Value; @@ -459,7 +460,8 @@ namespace Ryujinx.Ava.Systems.Configuration TurboMode = Key.Unbound, TurboModeWhileHeld = false }; - }) + }), + (69, static cff => cff.SkipUserProfiles = false) ); } } diff --git a/src/Ryujinx/Systems/Configuration/ConfigurationState.Model.cs b/src/Ryujinx/Systems/Configuration/ConfigurationState.Model.cs index 205054474..3c5fac1cb 100644 --- a/src/Ryujinx/Systems/Configuration/ConfigurationState.Model.cs +++ b/src/Ryujinx/Systems/Configuration/ConfigurationState.Model.cs @@ -395,6 +395,11 @@ namespace Ryujinx.Ava.Systems.Configuration /// public ReactiveObject IgnoreControllerApplet { get; private set; } + /// + /// Skip User Profiles Manager + /// + public ReactiveObject SkipUserProfilesManager { get; private set; } + /// /// Uses Hypervisor over JIT if available /// @@ -445,6 +450,8 @@ namespace Ryujinx.Ava.Systems.Configuration IgnoreMissingServices.LogChangesToValue(nameof(IgnoreMissingServices)); IgnoreControllerApplet = new ReactiveObject(); IgnoreControllerApplet.LogChangesToValue(nameof(IgnoreControllerApplet)); + SkipUserProfilesManager = new ReactiveObject(); + SkipUserProfilesManager.LogChangesToValue(nameof(SkipUserProfilesManager)); AudioVolume = new ReactiveObject(); AudioVolume.LogChangesToValue(nameof(AudioVolume)); UseHypervisor = new ReactiveObject(); diff --git a/src/Ryujinx/Systems/Configuration/ConfigurationState.cs b/src/Ryujinx/Systems/Configuration/ConfigurationState.cs index 65e8e02ce..39b14244c 100644 --- a/src/Ryujinx/Systems/Configuration/ConfigurationState.cs +++ b/src/Ryujinx/Systems/Configuration/ConfigurationState.cs @@ -82,6 +82,7 @@ namespace Ryujinx.Ava.Systems.Configuration DramSize = System.DramSize, IgnoreMissingServices = System.IgnoreMissingServices, IgnoreApplet = System.IgnoreControllerApplet, + SkipUserProfiles = System.SkipUserProfilesManager, UseHypervisor = System.UseHypervisor, GuiColumns = new GuiColumns { @@ -206,6 +207,7 @@ namespace Ryujinx.Ava.Systems.Configuration System.DramSize.Value = MemoryConfiguration.MemoryConfiguration4GiB; System.IgnoreMissingServices.Value = false; System.IgnoreControllerApplet.Value = false; + System.SkipUserProfilesManager.Value = false; System.UseHypervisor.Value = true; Multiplayer.LanInterfaceId.Value = "0"; Multiplayer.Mode.Value = MultiplayerMode.Disabled; diff --git a/src/Ryujinx/UI/Applet/ProfileSelectorDialog.axaml.cs b/src/Ryujinx/UI/Applet/ProfileSelectorDialog.axaml.cs index babd8e5ee..606a865a1 100644 --- a/src/Ryujinx/UI/Applet/ProfileSelectorDialog.axaml.cs +++ b/src/Ryujinx/UI/Applet/ProfileSelectorDialog.axaml.cs @@ -3,6 +3,7 @@ using Avalonia.Controls; using Avalonia.Input; using FluentAvalonia.UI.Controls; using Ryujinx.Ava.Common.Locale; +using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Ava.UI.Controls; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.ViewModels; @@ -78,6 +79,13 @@ namespace Ryujinx.Ava.UI.Applet public static async Task<(UserId Id, bool Result)> ShowInputDialog(ProfileSelectorDialogViewModel viewModel) { + + if (ConfigurationState.Instance.System.SkipUserProfilesManager) + { + UserId defaultId = viewModel.SelectedUserId; + return (defaultId, true); + } + ContentDialog contentDialog = new() { Title = LocaleManager.Instance[LocaleKeys.UserProfileWindowTitle], diff --git a/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs b/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs index 0be6ab3fe..9b540088b 100644 --- a/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs @@ -133,6 +133,7 @@ namespace Ryujinx.Ava.UI.ViewModels public bool EnableDiscordIntegration { get; set; } public bool ShowConfirmExit { get; set; } public bool IgnoreApplet { get; set; } + public bool SkipUserProfiles { get; set; } public bool RememberWindowState { get; set; } public bool ShowOldUI { get; set; } public int HideCursor { get; set; } @@ -606,6 +607,7 @@ namespace Ryujinx.Ava.UI.ViewModels DramSize = config.System.DramSize; IgnoreMissingServices = config.System.IgnoreMissingServices; IgnoreApplet = config.System.IgnoreControllerApplet; + SkipUserProfiles = config.System.SkipUserProfilesManager; // CPU EnablePptc = config.System.EnablePtc; @@ -709,6 +711,7 @@ namespace Ryujinx.Ava.UI.ViewModels config.System.DramSize.Value = DramSize; config.System.IgnoreMissingServices.Value = IgnoreMissingServices; config.System.IgnoreControllerApplet.Value = IgnoreApplet; + config.System.SkipUserProfilesManager.Value = SkipUserProfiles; // CPU config.System.EnablePtc.Value = EnablePptc; diff --git a/src/Ryujinx/UI/Views/Settings/SettingsSystemView.axaml b/src/Ryujinx/UI/Views/Settings/SettingsSystemView.axaml index a52fe5fbe..dbe4433dd 100644 --- a/src/Ryujinx/UI/Views/Settings/SettingsSystemView.axaml +++ b/src/Ryujinx/UI/Views/Settings/SettingsSystemView.axaml @@ -328,6 +328,11 @@ ToolTip.Tip="{ext:Locale SettingsTabSystemEnableCustomVSyncIntervalTooltip}"> + + +