Compare commits
No commits in common. "dc529a89aeac1cc281631117227ca45e7a288b57" and "30567a590935bcb67af67cf2892c1bbcff6e6832" have entirely different histories.
dc529a89ae
...
30567a5909
12
README.md
12
README.md
|
@ -1,15 +1,3 @@
|
||||||
| Pull Request | Commit | Title | Author | Merged? |
|
|
||||||
|----|----|----|----|----|
|
|
||||||
| [12461](https://github.com/yuzu-emu/yuzu//pull/12461) | [`7464cae24`](https://github.com/yuzu-emu/yuzu//pull/12461/files) | Rework Nvdec and VIC to fix out-of-order videos, and speed up decoding. | [Kelebek1](https://github.com/Kelebek1/) | Yes |
|
|
||||||
| [13018](https://github.com/yuzu-emu/yuzu//pull/13018) | [`01cbc638a`](https://github.com/yuzu-emu/yuzu//pull/13018/files) | am: rewrite part 2 | [liamwhite](https://github.com/liamwhite/) | Yes |
|
|
||||||
| [13174](https://github.com/yuzu-emu/yuzu//pull/13174) | [`7d1284826`](https://github.com/yuzu-emu/yuzu//pull/13174/files) | glue/time: Remove global variables | [FearlessTobi](https://github.com/FearlessTobi/) | Yes |
|
|
||||||
| [13177](https://github.com/yuzu-emu/yuzu//pull/13177) | [`f5cc94f05`](https://github.com/yuzu-emu/yuzu//pull/13177/files) | vfs: misc performance improvements | [liamwhite](https://github.com/liamwhite/) | Yes |
|
|
||||||
|
|
||||||
|
|
||||||
End of merge log. You can find the original README.md below the break.
|
|
||||||
|
|
||||||
-----
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2018 yuzu Emulator Project
|
SPDX-FileCopyrightText: 2018 yuzu Emulator Project
|
||||||
SPDX-License-Identifier: GPL-2.0-or-later
|
SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -314,10 +314,3 @@ endif()
|
||||||
if (NOT TARGET SimpleIni::SimpleIni)
|
if (NOT TARGET SimpleIni::SimpleIni)
|
||||||
add_subdirectory(simpleini)
|
add_subdirectory(simpleini)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# sse2neon
|
|
||||||
if (ARCHITECTURE_arm64 AND NOT TARGET sse2neon)
|
|
||||||
add_library(sse2neon INTERFACE)
|
|
||||||
target_include_directories(sse2neon INTERFACE sse2neon)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -165,7 +165,6 @@ else()
|
||||||
|
|
||||||
if (MINGW)
|
if (MINGW)
|
||||||
add_definitions(-DMINGW_HAS_SECURE_API)
|
add_definitions(-DMINGW_HAS_SECURE_API)
|
||||||
add_compile_options("-msse4.1")
|
|
||||||
|
|
||||||
if (MINGW_STATIC_BUILD)
|
if (MINGW_STATIC_BUILD)
|
||||||
add_definitions(-DQT_STATICPLUGIN)
|
add_definitions(-DQT_STATICPLUGIN)
|
||||||
|
|
|
@ -95,8 +95,6 @@
|
||||||
<string name="install_game_content">دامەزراندنی ناوەڕۆکی یاری</string>
|
<string name="install_game_content">دامەزراندنی ناوەڕۆکی یاری</string>
|
||||||
<string name="install_game_content_description">دامەزراندنی نوێکاری یارییەکان یان DLC</string>
|
<string name="install_game_content_description">دامەزراندنی نوێکاری یارییەکان یان DLC</string>
|
||||||
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<!-- About screen strings -->
|
<!-- About screen strings -->
|
||||||
<string name="gaia_is_not_real">گایا ڕاستەقینە نییە</string>
|
<string name="gaia_is_not_real">گایا ڕاستەقینە نییە</string>
|
||||||
<string name="copied_to_clipboard">کۆپی کرا بۆ تەختەی نووسین</string>
|
<string name="copied_to_clipboard">کۆپی کرا بۆ تەختەی نووسین</string>
|
||||||
|
@ -130,6 +128,7 @@
|
||||||
<string name="frame_limit_slider">سنووردارکردنی لەسەدای خێرایی</string>
|
<string name="frame_limit_slider">سنووردارکردنی لەسەدای خێرایی</string>
|
||||||
<string name="frame_limit_slider_description">ڕێژەی سەدی دیاری دەکات بۆ سنووردارکردنی خێرایی ئیمولەیشن. 100% خێرایی ئاساییە. بەهایی بەرزتر یان نزمتر دەبێتە هۆی زیاد یان کەمکردنەوەی سنووری خێرایی.</string>
|
<string name="frame_limit_slider_description">ڕێژەی سەدی دیاری دەکات بۆ سنووردارکردنی خێرایی ئیمولەیشن. 100% خێرایی ئاساییە. بەهایی بەرزتر یان نزمتر دەبێتە هۆی زیاد یان کەمکردنەوەی سنووری خێرایی.</string>
|
||||||
<string name="cpu_accuracy">وردی CPU</string>
|
<string name="cpu_accuracy">وردی CPU</string>
|
||||||
|
<!-- System settings strings -->
|
||||||
<string name="use_docked_mode">دۆخی دۆککراو</string>
|
<string name="use_docked_mode">دۆخی دۆککراو</string>
|
||||||
<string name="use_docked_mode_description">ڕوونی زیاد دەکات، کارایی کەم دەکاتەوە. دۆخی دەستی بەکاردێت کاتێک لەکاردەخرێت، ئەمەش ڕوونی دادەبەزێنێت و کارایی زیاد دەکات.</string>
|
<string name="use_docked_mode_description">ڕوونی زیاد دەکات، کارایی کەم دەکاتەوە. دۆخی دەستی بەکاردێت کاتێک لەکاردەخرێت، ئەمەش ڕوونی دادەبەزێنێت و کارایی زیاد دەکات.</string>
|
||||||
<string name="emulated_region">ناوچەی ئیمولەیشن</string>
|
<string name="emulated_region">ناوچەی ئیمولەیشن</string>
|
||||||
|
@ -163,46 +162,6 @@
|
||||||
<string name="audio_volume">قەبارەی دەنگی</string>
|
<string name="audio_volume">قەبارەی دەنگی</string>
|
||||||
<string name="audio_volume_description">دیاریکردنی قەبارەی دەنگی دەرچووی بیستۆک و بزوێنەری دەنگی دەرەکی.</string>
|
<string name="audio_volume_description">دیاریکردنی قەبارەی دەنگی دەرچووی بیستۆک و بزوێنەری دەنگی دەرەکی.</string>
|
||||||
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">B</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">Plus</string>
|
|
||||||
<string name="button_minus">Minus</string>
|
|
||||||
<string name="button_home">ماڵەوە</string>
|
|
||||||
<string name="button_capture">Capture</string>
|
|
||||||
<string name="dpad">D-Pad</string>
|
|
||||||
<string name="up">سەرەوە</string>
|
|
||||||
<string name="down">خوارەوە</string>
|
|
||||||
<string name="left">چەپ</string>
|
|
||||||
<string name="right">ڕاست</string>
|
|
||||||
<string name="left_stick">گێڕی چەپ</string>
|
|
||||||
<string name="right_stick">گێڕی ڕاست</string>
|
|
||||||
<string name="c_stick">گێڕی کامێرا</string>
|
|
||||||
<string name="pressed">فشارخراوەتەسەر</string>
|
|
||||||
<string name="range">مەودا</string>
|
|
||||||
<string name="modifier">دەستکاریکەر</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">نادروست</string>
|
|
||||||
<string name="pro_controller">کۆنتڕۆڵکەری پڕۆ</string>
|
|
||||||
<string name="handheld">دەستی</string>
|
|
||||||
<string name="dual_joycons">دووانە جۆیکۆن</string>
|
|
||||||
<string name="left_joycon">جۆیکۆنی چەپ</string>
|
|
||||||
<string name="right_joycon">جۆیکۆنی ڕاست</string>
|
|
||||||
<string name="gamecube_controller">کۆنتڕۆڵکەری گەیمکیوب</string>
|
|
||||||
<string name="invert_axis">پێچەوانەکردنەوەی تەوەر</string>
|
|
||||||
<string name="invert_button">دوگمەی پێچەوانەکردنەوە</string>
|
|
||||||
<string name="toggle_button">دوگمەی گۆڕین</string>
|
|
||||||
<string name="turbo_button">دوگمەی تۆربۆ</string>
|
|
||||||
<string name="set_threshold">دانانی ئاستەنگ</string>
|
|
||||||
<string name="toggle_axis">گۆڕینی تەوەر</string>
|
|
||||||
<string name="connected">پەیوەستە</string>
|
|
||||||
<string name="vibration">لەرزین</string>
|
|
||||||
<string name="profile">پڕۆفایل</string>
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">بنەڕەت</string>
|
<string name="slider_default">بنەڕەت</string>
|
||||||
<string name="ini_saved">ڕێکخستنە پاشەکەوتکراوەکان</string>
|
<string name="ini_saved">ڕێکخستنە پاشەکەوتکراوەکان</string>
|
||||||
|
@ -223,8 +182,6 @@
|
||||||
<string name="install">دامەزراندن</string>
|
<string name="install">دامەزراندن</string>
|
||||||
<string name="delete">سڕینەوە</string>
|
<string name="delete">سڕینەوە</string>
|
||||||
<string name="clear">سڕینەوە</string>
|
<string name="clear">سڕینەوە</string>
|
||||||
<string name="save">هەڵگرتن</string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
<string name="select_gpu_driver">هەڵبژاردنی وەگەڕخەری GPU</string>
|
<string name="select_gpu_driver">هەڵبژاردنی وەگەڕخەری GPU</string>
|
||||||
<string name="select_gpu_driver_title">حەز دەکەیت وەگەڕخەری GPU ی ئێستات بگۆڕیت؟</string>
|
<string name="select_gpu_driver_title">حەز دەکەیت وەگەڕخەری GPU ی ئێستات بگۆڕیت؟</string>
|
||||||
|
@ -271,6 +228,7 @@
|
||||||
<string name="emulation_unpause">لادانی وەستاندنی ئیمولەیشن</string>
|
<string name="emulation_unpause">لادانی وەستاندنی ئیمولەیشن</string>
|
||||||
<string name="emulation_input_overlay">هەڵبژاردەکانی داپۆشەر</string>
|
<string name="emulation_input_overlay">هەڵبژاردەکانی داپۆشەر</string>
|
||||||
<string name="touchscreen">رووکاری لەمسی</string>
|
<string name="touchscreen">رووکاری لەمسی</string>
|
||||||
|
|
||||||
<string name="load_settings">بارکردنی ڕێکخستنەکان...</string>
|
<string name="load_settings">بارکردنی ڕێکخستنەکان...</string>
|
||||||
|
|
||||||
<!-- Software keyboard -->
|
<!-- Software keyboard -->
|
||||||
|
|
|
@ -84,8 +84,7 @@
|
||||||
<string name="manage_save_data">Speicherdaten verwalten</string>
|
<string name="manage_save_data">Speicherdaten verwalten</string>
|
||||||
<string name="manage_save_data_description">Speicherdaten gefunden. Bitte wähle unten eine Option aus.</string>
|
<string name="manage_save_data_description">Speicherdaten gefunden. Bitte wähle unten eine Option aus.</string>
|
||||||
<string name="import_save_warning">Speicherdaten importieren</string>
|
<string name="import_save_warning">Speicherdaten importieren</string>
|
||||||
<string name="import_save_warning_description">Das überschreibt alle existierenden Speicherdaten für dieses Spiel mit der ausgewählten Datei.
|
<string name="import_save_warning_description">Das überschreibt alle existierenden Speicherdaten für dieses Spiel mit der ausgewählten Datei. Wirklich fortfahren?</string>
|
||||||
Wirklich fortfahren?</string>
|
|
||||||
<string name="import_export_saves_description">Speicherdaten importieren oder exportieren</string>
|
<string name="import_export_saves_description">Speicherdaten importieren oder exportieren</string>
|
||||||
<string name="save_files_importing">Importiere Speicherdaten...</string>
|
<string name="save_files_importing">Importiere Speicherdaten...</string>
|
||||||
<string name="save_files_exporting">Exportiere Speicherdaten...</string>
|
<string name="save_files_exporting">Exportiere Speicherdaten...</string>
|
||||||
|
@ -113,8 +112,6 @@ Wirklich fortfahren?</string>
|
||||||
<string name="share_save_file">Speicherdaten teilen</string>
|
<string name="share_save_file">Speicherdaten teilen</string>
|
||||||
<string name="game_folders">Spiele-Ordner</string>
|
<string name="game_folders">Spiele-Ordner</string>
|
||||||
<string name="add_game_folder">Spiele-Ordner hinzufügen</string>
|
<string name="add_game_folder">Spiele-Ordner hinzufügen</string>
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<string name="applets_error_firmware">Firmware nicht installiert</string>
|
<string name="applets_error_firmware">Firmware nicht installiert</string>
|
||||||
<!-- About screen strings -->
|
<!-- About screen strings -->
|
||||||
<string name="gaia_is_not_real">Gaia ist nicht real</string>
|
<string name="gaia_is_not_real">Gaia ist nicht real</string>
|
||||||
|
@ -155,9 +152,9 @@ Wirklich fortfahren?</string>
|
||||||
<string name="frame_limit_slider">Geschwindkeitsbegrenzung in Prozent</string>
|
<string name="frame_limit_slider">Geschwindkeitsbegrenzung in Prozent</string>
|
||||||
<string name="frame_limit_slider_description">Gibt die prozentuale Geschwindigkeit der Emulation an. 100% sind normal. Werte darüber oder drunter werden die Geschwindigkeit entsprechend verändern.</string>
|
<string name="frame_limit_slider_description">Gibt die prozentuale Geschwindigkeit der Emulation an. 100% sind normal. Werte darüber oder drunter werden die Geschwindigkeit entsprechend verändern.</string>
|
||||||
<string name="cpu_accuracy">CPU-Genauigkeit</string>
|
<string name="cpu_accuracy">CPU-Genauigkeit</string>
|
||||||
|
<!-- System settings strings -->
|
||||||
<string name="use_docked_mode">Gedockter Modus</string>
|
<string name="use_docked_mode">Gedockter Modus</string>
|
||||||
<string name="use_docked_mode_description">Der Gedockte-Modus erhöht die Auflösung, verringert aber die Leistung.
|
<string name="use_docked_mode_description">Der Gedockte-Modus erhöht die Auflösung, verringert aber die Leistung. Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die Leistung.</string>
|
||||||
Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die Leistung.</string>
|
|
||||||
<string name="emulated_region">Emulierte Region</string>
|
<string name="emulated_region">Emulierte Region</string>
|
||||||
<string name="emulated_language">Emulierte Sprache</string>
|
<string name="emulated_language">Emulierte Sprache</string>
|
||||||
<string name="select_rtc_date">RTC-Datum auswählen</string>
|
<string name="select_rtc_date">RTC-Datum auswählen</string>
|
||||||
|
@ -183,49 +180,6 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die
|
||||||
<string name="audio_volume">Lautstärke</string>
|
<string name="audio_volume">Lautstärke</string>
|
||||||
<string name="audio_volume_description">Legt die Lautstärke der Audioausgabe fest.</string>
|
<string name="audio_volume_description">Legt die Lautstärke der Audioausgabe fest.</string>
|
||||||
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">B</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">Plus</string>
|
|
||||||
<string name="button_minus">Minus</string>
|
|
||||||
<string name="button_home">Home</string>
|
|
||||||
<string name="button_capture">Screenshot</string>
|
|
||||||
<string name="dpad">Steuerkreuz</string>
|
|
||||||
<string name="up">Hoch</string>
|
|
||||||
<string name="down">Runter</string>
|
|
||||||
<string name="left">Links</string>
|
|
||||||
<string name="right">Rechts</string>
|
|
||||||
<string name="left_stick">Linker Stick</string>
|
|
||||||
<string name="right_stick">Rechter Stick</string>
|
|
||||||
<string name="c_stick">C-Stick</string>
|
|
||||||
<string name="pressed">Gedrückt</string>
|
|
||||||
<string name="range">Radius</string>
|
|
||||||
<string name="deadzone">Deadzone</string>
|
|
||||||
<string name="modifier">Modifikator</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">Ungültig</string>
|
|
||||||
<string name="unknown">Unbekannt</string>
|
|
||||||
<string name="pro_controller">Pro-Controller</string>
|
|
||||||
<string name="handheld">Handheld</string>
|
|
||||||
<string name="dual_joycons">Zwei Joycons</string>
|
|
||||||
<string name="left_joycon">Linker Joycon</string>
|
|
||||||
<string name="right_joycon">Rechter Joycon</string>
|
|
||||||
<string name="gamecube_controller">GameCube-Controller</string>
|
|
||||||
<string name="invert_axis">Achsen umkehren</string>
|
|
||||||
<string name="invert_button">Knopf invertieren</string>
|
|
||||||
<string name="toggle_button">Taste umschalten</string>
|
|
||||||
<string name="turbo_button">Turbo Knopf</string>
|
|
||||||
<string name="set_threshold">Schwellwert festlegen</string>
|
|
||||||
<string name="toggle_axis">Achse umschalten</string>
|
|
||||||
<string name="connected">Verbunden</string>
|
|
||||||
<string name="vibration">Vibration</string>
|
|
||||||
<string name="profile">Profil</string>
|
|
||||||
<string name="use_global_input_configuration">Verwende globale Eingabe-Konfiguration</string>
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">Standard</string>
|
<string name="slider_default">Standard</string>
|
||||||
<string name="ini_saved">Einstellungen gespeichert</string>
|
<string name="ini_saved">Einstellungen gespeichert</string>
|
||||||
|
@ -256,11 +210,7 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die
|
||||||
<string name="export_success">Erfolgreich exportiert</string>
|
<string name="export_success">Erfolgreich exportiert</string>
|
||||||
<string name="start">Start</string>
|
<string name="start">Start</string>
|
||||||
<string name="clear">Löschen</string>
|
<string name="clear">Löschen</string>
|
||||||
<string name="global">Global</string>
|
|
||||||
<string name="custom">Benutzerdefiniert</string>
|
<string name="custom">Benutzerdefiniert</string>
|
||||||
<string name="use_global_setting">Globale Einstellung nutzen</string>
|
|
||||||
<string name="save">Speichern</string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
<string name="select_gpu_driver">GPU-Treiber auswählen</string>
|
<string name="select_gpu_driver">GPU-Treiber auswählen</string>
|
||||||
<string name="select_gpu_driver_title">Möchtest du deinen aktuellen GPU-Treiber ersetzen?</string>
|
<string name="select_gpu_driver_title">Möchtest du deinen aktuellen GPU-Treiber ersetzen?</string>
|
||||||
|
@ -280,7 +230,6 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die
|
||||||
<string name="preferences_graphics_description">Genauigkeitsstufe, Auflösung, Shader-Cache</string>
|
<string name="preferences_graphics_description">Genauigkeitsstufe, Auflösung, Shader-Cache</string>
|
||||||
<string name="preferences_audio">Audio</string>
|
<string name="preferences_audio">Audio</string>
|
||||||
<string name="preferences_audio_description">Ausgabe-Engine, Lautstärke</string>
|
<string name="preferences_audio_description">Ausgabe-Engine, Lautstärke</string>
|
||||||
<string name="preferences_controls">Steuerung</string>
|
|
||||||
<string name="preferences_theme">Theme und Farbe</string>
|
<string name="preferences_theme">Theme und Farbe</string>
|
||||||
<string name="preferences_debug">Debug</string>
|
<string name="preferences_debug">Debug</string>
|
||||||
<!-- Game properties -->
|
<!-- Game properties -->
|
||||||
|
@ -288,14 +237,13 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die
|
||||||
<string name="info_description">Programm-ID, Entwickler, Version</string>
|
<string name="info_description">Programm-ID, Entwickler, Version</string>
|
||||||
<string name="per_game_settings">Spieleinstellungen</string>
|
<string name="per_game_settings">Spieleinstellungen</string>
|
||||||
<string name="per_game_settings_description">Einstellungen für dieses Spiel ändern</string>
|
<string name="per_game_settings_description">Einstellungen für dieses Spiel ändern</string>
|
||||||
<string name="launch_options">Starteinstellung</string>
|
|
||||||
<string name="path">Pfad</string>
|
<string name="path">Pfad</string>
|
||||||
<string name="program_id">Programm-ID</string>
|
<string name="program_id">Programm-ID</string>
|
||||||
<string name="developer">Entwickler</string>
|
<string name="developer">Entwickler</string>
|
||||||
<string name="version">Version</string>
|
<string name="version">Version</string>
|
||||||
<string name="copy_details">Details kopieren</string>
|
<string name="copy_details">Details kopieren</string>
|
||||||
<string name="add_ons">Add-ons</string>
|
<string name="add_ons">Add-ons</string>
|
||||||
<string name="add_ons_description">Mods, Updates und DLCs aktivieren oder deaktivieren</string>
|
<string name="add_ons_description">Mods, Updates und DLC aktivieren oder deaktivieren</string>
|
||||||
<string name="clear_shader_cache">Shader-Cache löschen</string>
|
<string name="clear_shader_cache">Shader-Cache löschen</string>
|
||||||
<string name="clear_shader_cache_description">Löscht alle für dieses Spiel erstellten Shader</string>
|
<string name="clear_shader_cache_description">Löscht alle für dieses Spiel erstellten Shader</string>
|
||||||
<string name="cleared_shaders_successfully">Shader erfolgreich gelöscht</string>
|
<string name="cleared_shaders_successfully">Shader erfolgreich gelöscht</string>
|
||||||
|
@ -304,19 +252,10 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die
|
||||||
<string name="save_data_description">Importiert oder exportiert Speicherdaten für dieses Spiel</string>
|
<string name="save_data_description">Importiert oder exportiert Speicherdaten für dieses Spiel</string>
|
||||||
<string name="delete_save_data">Speicherdaten löschen</string>
|
<string name="delete_save_data">Speicherdaten löschen</string>
|
||||||
<string name="delete_save_data_description">Löscht alle Speicherdaten für dieses Spiel</string>
|
<string name="delete_save_data_description">Löscht alle Speicherdaten für dieses Spiel</string>
|
||||||
<string name="delete_save_data_warning_description">Das löscht unwiederbringlich alle Speicherdaten für dieses Spiel.
|
<string name="delete_save_data_warning_description">Das löscht unwiederbringlich alle Speicherdaten für dieses Spiel. Wirklich fortfahren?</string>
|
||||||
Wirklich fortfahren?</string>
|
|
||||||
<string name="save_data_deleted_successfully">Speicherdaten erfolgreich gelöscht</string>
|
<string name="save_data_deleted_successfully">Speicherdaten erfolgreich gelöscht</string>
|
||||||
<string name="select_content_type">Inhaltstyp</string>
|
|
||||||
<string name="updates_and_dlc">Spiel-Updates und DLCs</string>
|
|
||||||
<string name="mods_and_cheats">Mods und Cheats</string>
|
|
||||||
<string name="invalid_directory">Ungültiges Verzeichnis</string>
|
<string name="invalid_directory">Ungültiges Verzeichnis</string>
|
||||||
<string name="addon_installed_successfully">Add-on erfolgreich installiert</string>
|
<string name="addon_installed_successfully">Add-on erfolgreich installiert</string>
|
||||||
<string name="verify_integrity">Integrität prüfen</string>
|
|
||||||
<string name="verifying">Überprüfe...</string>
|
|
||||||
<string name="verify_success">Integritätsüberprüfung erfolgreich!</string>
|
|
||||||
<string name="verify_failure">Integritätsüberprüfung fehlgeschlagen!</string>
|
|
||||||
<string name="verify_no_result">Integritätsüberprüfung konnte nicht durchgeführt werden</string>
|
|
||||||
<!-- ROM loading errors -->
|
<!-- ROM loading errors -->
|
||||||
<string name="loader_error_encrypted">Das ROM ist verschlüsselt</string>
|
<string name="loader_error_encrypted">Das ROM ist verschlüsselt</string>
|
||||||
<string name="loader_error_encrypted_keys_description"><![CDATA[Bitte stelle sicher dass die <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> Datei installiert ist, damit Spiele entschlüsselt werden können.]]></string>
|
<string name="loader_error_encrypted_keys_description"><![CDATA[Bitte stelle sicher dass die <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> Datei installiert ist, damit Spiele entschlüsselt werden können.]]></string>
|
||||||
|
@ -339,8 +278,6 @@ Wirklich fortfahren?</string>
|
||||||
<string name="emulation_unpause">Emulation fortsetzen</string>
|
<string name="emulation_unpause">Emulation fortsetzen</string>
|
||||||
<string name="emulation_input_overlay">Overlay-Optionen</string>
|
<string name="emulation_input_overlay">Overlay-Optionen</string>
|
||||||
<string name="touchscreen">Touchscreen</string>
|
<string name="touchscreen">Touchscreen</string>
|
||||||
<string name="lock_drawer">Menü sperren</string>
|
|
||||||
<string name="unlock_drawer">Menü entsperren</string>
|
|
||||||
|
|
||||||
<string name="load_settings">Lade Einstellungen...</string>
|
<string name="load_settings">Lade Einstellungen...</string>
|
||||||
|
|
||||||
|
@ -420,7 +357,7 @@ Wirklich fortfahren?</string>
|
||||||
<string name="ratio_default">Standard (16:9)</string>
|
<string name="ratio_default">Standard (16:9)</string>
|
||||||
<string name="ratio_force_four_three">4:3 erzwingen</string>
|
<string name="ratio_force_four_three">4:3 erzwingen</string>
|
||||||
<string name="ratio_force_twenty_one_nine">21:9 erzwingen</string>
|
<string name="ratio_force_twenty_one_nine">21:9 erzwingen</string>
|
||||||
<string name="ratio_force_sixteen_ten">16:10 erzwingen</string>
|
<string name="ratio_force_sixteen_ten">Erzwinge 16:10</string>
|
||||||
<string name="ratio_stretch">Auf Bildschirmgröße anpsassen</string>
|
<string name="ratio_stretch">Auf Bildschirmgröße anpsassen</string>
|
||||||
|
|
||||||
<!-- CPU Accuracy -->
|
<!-- CPU Accuracy -->
|
||||||
|
|
|
@ -137,11 +137,6 @@
|
||||||
<item quantity="other">%d archivos de guardado importados con éxito.</item>
|
<item quantity="other">%d archivos de guardado importados con éxito.</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<string name="no_save_data_found">No hay archivos de guardado</string>
|
<string name="no_save_data_found">No hay archivos de guardado</string>
|
||||||
<string name="verify_installed_content">Verificar contenidos instalados</string>
|
|
||||||
<string name="verify_installed_content_description">Comprueba todo el contenido instalado por si hubiese alguno corrupto</string>
|
|
||||||
<string name="keys_missing">Faltan las claves de encriptación</string>
|
|
||||||
<string name="keys_missing_description">El firmware y los juegos no se pueden desencriptar</string>
|
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<!-- Applet launcher strings -->
|
<!-- Applet launcher strings -->
|
||||||
<string name="applets">Ejecutador de applet</string>
|
<string name="applets">Ejecutador de applet</string>
|
||||||
|
@ -207,6 +202,7 @@
|
||||||
<string name="cpu_accuracy">Precisión de CPU</string>
|
<string name="cpu_accuracy">Precisión de CPU</string>
|
||||||
<string name="value_with_units">%1$s%2$s</string>
|
<string name="value_with_units">%1$s%2$s</string>
|
||||||
|
|
||||||
|
<!-- System settings strings -->
|
||||||
<string name="use_docked_mode">Modo Sobremesa</string>
|
<string name="use_docked_mode">Modo Sobremesa</string>
|
||||||
<string name="use_docked_mode_description">Incrementa la resolución al coste de reducir el rendimiento. El Modo Portátil es usado cuando está desactivado, reduciendo la resolución y mejorando así el rendimiento.</string>
|
<string name="use_docked_mode_description">Incrementa la resolución al coste de reducir el rendimiento. El Modo Portátil es usado cuando está desactivado, reduciendo la resolución y mejorando así el rendimiento.</string>
|
||||||
<string name="emulated_region">Región emulada</string>
|
<string name="emulated_region">Región emulada</string>
|
||||||
|
@ -224,8 +220,6 @@
|
||||||
<string name="renderer_screen_layout">Orientación</string>
|
<string name="renderer_screen_layout">Orientación</string>
|
||||||
<string name="renderer_aspect_ratio">Relación de aspecto</string>
|
<string name="renderer_aspect_ratio">Relación de aspecto</string>
|
||||||
<string name="renderer_scaling_filter">Filtro de adaptación de ventana</string>
|
<string name="renderer_scaling_filter">Filtro de adaptación de ventana</string>
|
||||||
<string name="fsr_sharpness">Nitidez FSR</string>
|
|
||||||
<string name="fsr_sharpness_description">Ajusta la intensidad del filtro de enfoque al usar el contraste dinámico de FSR.</string>
|
|
||||||
<string name="renderer_anti_aliasing">Método anti-aliasing</string>
|
<string name="renderer_anti_aliasing">Método anti-aliasing</string>
|
||||||
<string name="renderer_force_max_clock">Forzar velocidad al máximo (solo Adreno)</string>
|
<string name="renderer_force_max_clock">Forzar velocidad al máximo (solo Adreno)</string>
|
||||||
<string name="renderer_force_max_clock_description">Fuerza a la GPU a ejecutarse a la velocidad máxima de reloj posible (se seguirán aplicando restricciones térmicas).</string>
|
<string name="renderer_force_max_clock_description">Fuerza a la GPU a ejecutarse a la velocidad máxima de reloj posible (se seguirán aplicando restricciones térmicas).</string>
|
||||||
|
@ -253,49 +247,6 @@
|
||||||
<string name="audio_volume">Volumen</string>
|
<string name="audio_volume">Volumen</string>
|
||||||
<string name="audio_volume_description">Especifica el volumen de la salida de audio.</string>
|
<string name="audio_volume_description">Especifica el volumen de la salida de audio.</string>
|
||||||
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">B</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">Más</string>
|
|
||||||
<string name="button_minus">Menos</string>
|
|
||||||
<string name="button_home">Home</string>
|
|
||||||
<string name="button_capture">Captura</string>
|
|
||||||
<string name="dpad">Cruceta</string>
|
|
||||||
<string name="up">Arriba</string>
|
|
||||||
<string name="down">Abajo</string>
|
|
||||||
<string name="left">Izquierda</string>
|
|
||||||
<string name="right">Derecha</string>
|
|
||||||
<string name="left_stick">Palanca izquierda</string>
|
|
||||||
<string name="right_stick">Palanca derecha</string>
|
|
||||||
<string name="c_stick">C-Stick</string>
|
|
||||||
<string name="pressed">Presionado</string>
|
|
||||||
<string name="range">Rango</string>
|
|
||||||
<string name="deadzone">Zona muerta</string>
|
|
||||||
<string name="modifier">Modificador</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">No válido</string>
|
|
||||||
<string name="unknown">Desconocido</string>
|
|
||||||
<string name="pro_controller">Controlador Pro</string>
|
|
||||||
<string name="handheld">Portátil</string>
|
|
||||||
<string name="dual_joycons">Joycons duales</string>
|
|
||||||
<string name="left_joycon">Joycon izquierdo</string>
|
|
||||||
<string name="right_joycon">Joycon derecho</string>
|
|
||||||
<string name="gamecube_controller">Controlador de GameCube</string>
|
|
||||||
<string name="invert_axis">Invertir ejes</string>
|
|
||||||
<string name="invert_button">Invertir botón</string>
|
|
||||||
<string name="toggle_button">Alternar botón</string>
|
|
||||||
<string name="turbo_button">Botón turbo</string>
|
|
||||||
<string name="set_threshold">Configurar umbral</string>
|
|
||||||
<string name="toggle_axis">Alternar ejes</string>
|
|
||||||
<string name="connected">Conectado</string>
|
|
||||||
<string name="vibration">Vibración</string>
|
|
||||||
<string name="profile">Perfil</string>
|
|
||||||
<string name="use_global_input_configuration">Utilizar la configuración global de entrada</string>
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">Predeterminado</string>
|
<string name="slider_default">Predeterminado</string>
|
||||||
<string name="ini_saved">Configuración guardada</string>
|
<string name="ini_saved">Configuración guardada</string>
|
||||||
|
@ -330,11 +281,6 @@
|
||||||
<string name="custom">Perzonalizado</string>
|
<string name="custom">Perzonalizado</string>
|
||||||
<string name="notice">Aviso</string>
|
<string name="notice">Aviso</string>
|
||||||
<string name="import_complete">La importación se completó</string>
|
<string name="import_complete">La importación se completó</string>
|
||||||
<string name="more_options">Más opciones</string>
|
|
||||||
<string name="use_global_setting">Usar configuración global</string>
|
|
||||||
<string name="operation_completed_successfully">Operación completada con éxito</string>
|
|
||||||
<string name="save">Guardar</string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
<string name="select_gpu_driver">Seleccionar driver GPU</string>
|
<string name="select_gpu_driver">Seleccionar driver GPU</string>
|
||||||
<string name="select_gpu_driver_title">¿Quiere reemplazar el driver de GPU actual?</string>
|
<string name="select_gpu_driver_title">¿Quiere reemplazar el driver de GPU actual?</string>
|
||||||
|
@ -355,7 +301,6 @@
|
||||||
<string name="preferences_graphics_description">Nivel de precisión, resolución, caché de shaders</string>
|
<string name="preferences_graphics_description">Nivel de precisión, resolución, caché de shaders</string>
|
||||||
<string name="preferences_audio">Audio</string>
|
<string name="preferences_audio">Audio</string>
|
||||||
<string name="preferences_audio_description">Motor de salida, volumen</string>
|
<string name="preferences_audio_description">Motor de salida, volumen</string>
|
||||||
<string name="preferences_controls">Controles</string>
|
|
||||||
<string name="preferences_theme">Tema y color</string>
|
<string name="preferences_theme">Tema y color</string>
|
||||||
<string name="preferences_debug">Depuración</string>
|
<string name="preferences_debug">Depuración</string>
|
||||||
<string name="preferences_debug_description">CPU/GPU debug, API gráfica, fastMEM</string>
|
<string name="preferences_debug_description">CPU/GPU debug, API gráfica, fastMEM</string>
|
||||||
|
@ -397,17 +342,6 @@
|
||||||
<string name="verifying_content">Verificando contenido...</string>
|
<string name="verifying_content">Verificando contenido...</string>
|
||||||
<string name="content_install_notice">Aviso importante de contenido</string>
|
<string name="content_install_notice">Aviso importante de contenido</string>
|
||||||
<string name="content_install_notice_description">El contenido seleccionado no es de este juego.\n¿Instalar de todas maneras?</string>
|
<string name="content_install_notice_description">El contenido seleccionado no es de este juego.\n¿Instalar de todas maneras?</string>
|
||||||
<string name="confirm_uninstall">Confirmar desinstalación</string>
|
|
||||||
<string name="confirm_uninstall_description">¿De verdad quieres desinstalar este addon?</string>
|
|
||||||
<string name="verify_integrity">Verificar integridad</string>
|
|
||||||
<string name="verifying">Verificando...</string>
|
|
||||||
<string name="verify_success">¡La verificación de integridad ha sido un éxito!</string>
|
|
||||||
<string name="verify_failure">¡Verificación de integridad fallida!</string>
|
|
||||||
<string name="verify_failure_description">Los contenidos del archivo pueden estar corruptos</string>
|
|
||||||
<string name="verify_no_result">No se pudo ejecutar la verificación de integridad</string>
|
|
||||||
<string name="verify_no_result_description">No se ha podido comprobar la validez de los contenidos del archivo</string>
|
|
||||||
<string name="verification_failed_for">La verificación falló en los siguientes archivos:\n%1$s</string>
|
|
||||||
|
|
||||||
<!-- ROM loading errors -->
|
<!-- ROM loading errors -->
|
||||||
<string name="loader_error_encrypted">Su ROM está encriptada</string>
|
<string name="loader_error_encrypted">Su ROM está encriptada</string>
|
||||||
<string name="loader_error_encrypted_roms_description"><![CDATA[Por favor, siga las guías para redumpear<a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartuchos de juegos</a> o <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">títulos instalados</a>.]]></string>
|
<string name="loader_error_encrypted_roms_description"><![CDATA[Por favor, siga las guías para redumpear<a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartuchos de juegos</a> o <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">títulos instalados</a>.]]></string>
|
||||||
|
@ -421,7 +355,6 @@
|
||||||
<string name="emulation_exit">Salir de la emulación</string>
|
<string name="emulation_exit">Salir de la emulación</string>
|
||||||
<string name="emulation_done">Hecho</string>
|
<string name="emulation_done">Hecho</string>
|
||||||
<string name="emulation_fps_counter">Contador de FPS</string>
|
<string name="emulation_fps_counter">Contador de FPS</string>
|
||||||
<string name="emulation_thermal_indicator">Indicador térmico</string>
|
|
||||||
<string name="emulation_toggle_controls">Alternar controles</string>
|
<string name="emulation_toggle_controls">Alternar controles</string>
|
||||||
<string name="emulation_rel_stick_center">Centro relativo del stick</string>
|
<string name="emulation_rel_stick_center">Centro relativo del stick</string>
|
||||||
<string name="emulation_dpad_slide">Deslizamiento de la cruceta</string>
|
<string name="emulation_dpad_slide">Deslizamiento de la cruceta</string>
|
||||||
|
@ -437,8 +370,6 @@
|
||||||
<string name="emulation_unpause">Despausar emulación</string>
|
<string name="emulation_unpause">Despausar emulación</string>
|
||||||
<string name="emulation_input_overlay">Opciones de overlay</string>
|
<string name="emulation_input_overlay">Opciones de overlay</string>
|
||||||
<string name="touchscreen">Pantalla táctil</string>
|
<string name="touchscreen">Pantalla táctil</string>
|
||||||
<string name="lock_drawer">Bloquear menú cajón</string>
|
|
||||||
<string name="unlock_drawer">Desbloquear menú cajón</string>
|
|
||||||
|
|
||||||
<string name="load_settings">Cargando configuración...</string>
|
<string name="load_settings">Cargando configuración...</string>
|
||||||
|
|
||||||
|
@ -583,12 +514,6 @@
|
||||||
<string name="mute">Mutear</string>
|
<string name="mute">Mutear</string>
|
||||||
<string name="unmute">Desmutear</string>
|
<string name="unmute">Desmutear</string>
|
||||||
|
|
||||||
<!-- Emulation vertical alignment -->
|
|
||||||
<string name="vertical_alignment">Alineación vertical</string>
|
|
||||||
<string name="top">Arriba</string>
|
|
||||||
<string name="center">Centro</string>
|
|
||||||
<string name="bottom">Abajo</string>
|
|
||||||
|
|
||||||
<!-- Licenses screen strings -->
|
<!-- Licenses screen strings -->
|
||||||
<string name="licenses">Licencias</string>
|
<string name="licenses">Licencias</string>
|
||||||
<string name="license_fidelityfx_fsr_description">Upscaling de alta calidad de AMD</string>
|
<string name="license_fidelityfx_fsr_description">Upscaling de alta calidad de AMD</string>
|
||||||
|
|
|
@ -1,595 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
|
||||||
|
|
||||||
<string name="app_disclaimer">این نرمافزار برای اجرای بازیهای کنسول نینتندو سوییچ است. هیچ بازی یا کلیدی داخل برنامه گنجانده نشده است.<br /><br />قبل از شروع، لطفاً فایل <![CDATA[ prod.keys ]]> خود را در حافظه دستگاه خود پیدا کنید.<br /> <br /><![CDATA[بیشتر بدانید]]></string>
|
|
||||||
<string name="notice_notification_channel_name">اطلاعیهها و خطاها</string>
|
|
||||||
<string name="notice_notification_channel_description">وقتی مشکلی پیش میآید در اعلانها نشان میدهد.</string>
|
|
||||||
<string name="notification_permission_not_granted">مجوز اعلان داده نشده!</string>
|
|
||||||
|
|
||||||
<!-- Setup strings -->
|
|
||||||
<string name="welcome">خوش آمدید!</string>
|
|
||||||
<string name="welcome_description">نحوه راه اندازی <b>yuzu</b> و شبیه سازی را بیاموزید.</string>
|
|
||||||
<string name="get_started">شروع کنید</string>
|
|
||||||
<string name="keys">کلیدها</string>
|
|
||||||
<string name="keys_description">فایل <b>prod.keys</b> خود را با دکمه زیر انتخاب کنید.</string>
|
|
||||||
<string name="select_keys">انتخاب کلیدها</string>
|
|
||||||
<string name="games">بازیها</string>
|
|
||||||
<string name="games_description">پوشه <b>بازیها</b> خود را با دکمه زیر انتخاب کنید.</string>
|
|
||||||
<string name="done">انجام شد</string>
|
|
||||||
<string name="done_description">همه چیز آماده است.\nاز بازیهای خود لذت ببرید!</string>
|
|
||||||
<string name="text_continue">ادامه</string>
|
|
||||||
<string name="next">بعدی</string>
|
|
||||||
<string name="back">قبلی</string>
|
|
||||||
<string name="add_games">افزودن بازیها</string>
|
|
||||||
<string name="add_games_description">پوشه بازیهای خود را انتخاب کنید</string>
|
|
||||||
<string name="step_complete">تکمیل شد!</string>
|
|
||||||
|
|
||||||
<!-- Home strings -->
|
|
||||||
<string name="home_games">بازیها</string>
|
|
||||||
<string name="home_search">جستجو</string>
|
|
||||||
<string name="home_settings">تنظیمات</string>
|
|
||||||
<string name="empty_gamelist">هیچ فایلی پیدا نشد یا هنوز پوشه بازیها انتخاب نشده است.</string>
|
|
||||||
<string name="search_and_filter_games">جستجو و فیلتر کردن بازیها</string>
|
|
||||||
<string name="select_games_folder">پوشه بازیها را انتخاب کنید</string>
|
|
||||||
<string name="manage_game_folders">مدیریت پوشههای بازی</string>
|
|
||||||
<string name="select_games_folder_description">به yuzu اجازه می دهد تا لیست بازیها را پر کند</string>
|
|
||||||
<string name="add_games_warning">از انتخاب پوشه بازی رد میشوید؟</string>
|
|
||||||
<string name="add_games_warning_description">اگر پوشهای انتخاب نشده باشد، بازیها در لیست بازیها نمایش داده نمیشوند.</string>
|
|
||||||
<string name="add_games_warning_help">https://yuzu-emu.org/help/quickstart/#dumping-games</string>
|
|
||||||
<string name="home_search_games">جستجو در بازیها</string>
|
|
||||||
<string name="search_settings">جستجو در تنظیمات</string>
|
|
||||||
<string name="games_dir_selected">پوشه بازیها انتخاب شد</string>
|
|
||||||
<string name="install_prod_keys">نصب prod.keys</string>
|
|
||||||
<string name="install_prod_keys_description">برای رمزگشایی بازیهای فروشگاهی مورد نیاز است</string>
|
|
||||||
<string name="install_prod_keys_warning">افزودن کلیدها را رد میکنید؟</string>
|
|
||||||
<string name="install_prod_keys_warning_description">کلیدهای معتبر برای شبیهسازی بازیهای فروشگاهی مورد نیاز است. اگر ادامه دهید، فقط برنامههای سیستم ریزکامپیوتری کار خواهند کرد.</string>
|
|
||||||
<string name="install_prod_keys_warning_help">https://yuzu-emu.org/help/quickstart/#guide-introduction</string>
|
|
||||||
<string name="notifications">اعلانها</string>
|
|
||||||
<string name="notifications_description">مجوز اعلان را با دکمه زیر اعطا کنید.</string>
|
|
||||||
<string name="give_permission">اجازه بدهید</string>
|
|
||||||
<string name="notification_warning">دادن مجوز اعلان را رد میکنید؟</string>
|
|
||||||
<string name="notification_warning_description">yuzu نمیتواند شما را از اطلاعات مهم مطلع کند.</string>
|
|
||||||
<string name="permission_denied">دسترسی داده نشد</string>
|
|
||||||
<string name="permission_denied_description">شما بارها این دسترسی را رد کردید و اکنون باید آن را به صورت دستی در تنظیمات سیستم اعطا کنید.</string>
|
|
||||||
<string name="about">درباره</string>
|
|
||||||
<string name="about_description">نسخه ساخت، عوامل و موارد دیگر</string>
|
|
||||||
<string name="warning_help">کمک</string>
|
|
||||||
<string name="warning_skip">رد کردن</string>
|
|
||||||
<string name="warning_cancel">لغو</string>
|
|
||||||
<string name="install_amiibo_keys">کلیدهای Amiibo را نصب کنید</string>
|
|
||||||
<string name="install_amiibo_keys_description">برای استفاده از Amiibo در بازی لازم است</string>
|
|
||||||
<string name="invalid_keys_file">فایل کلیدهای نامعتبر انتخاب شد</string>
|
|
||||||
<string name="install_keys_success">کلیدها با موفقیت نصب شدند</string>
|
|
||||||
<string name="reading_keys_failure">خطا در خواندن کلیدهای رمزگذاری</string>
|
|
||||||
<string name="install_prod_keys_failure_extension_description">بررسی کنید که فایل کلیدهای شما دارای پسوند keys. باشد و دوباره امتحان کنید.</string>
|
|
||||||
<string name="install_amiibo_keys_failure_extension_description">بررسی کنید که فایل کلیدهای شما دارای پسوند bin. باشد و دوباره امتحان کنید.</string>
|
|
||||||
<string name="invalid_keys_error">کلیدهای رمزگذاری نامعتبر</string>
|
|
||||||
<string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
<string name="install_keys_failure_description">فایل انتخابی نادرست یا خراب است. لطفا کلیدهای خود را دوباره استخراج کنید.</string>
|
|
||||||
<string name="gpu_driver_manager">مدیریت درایور پردازنده گرافیکی</string>
|
|
||||||
<string name="install_gpu_driver">نصب درایور پردازنده گرافیکی</string>
|
|
||||||
<string name="install_gpu_driver_description">درایورهای جایگزین را برای عملکرد یا دقت بهتر نصب کنید</string>
|
|
||||||
<string name="advanced_settings">تنظیمات پیشرفته</string>
|
|
||||||
<string name="advanced_settings_game">تنظیمات پیشرفته: %1$s</string>
|
|
||||||
<string name="settings_description">پیکربندی تنظیمات شبیهساز</string>
|
|
||||||
<string name="search_recently_played">آخرین بازی شدهها</string>
|
|
||||||
<string name="search_recently_added">به تازگی اضافه شدهها</string>
|
|
||||||
<string name="search_retail">فروشگاهی</string>
|
|
||||||
<string name="search_homebrew">ریزکامپیوتری</string>
|
|
||||||
<string name="open_user_folder">باز کردن پوشه yuzu</string>
|
|
||||||
<string name="open_user_folder_description">مدیریت فایلهای داخلی yuzu</string>
|
|
||||||
<string name="theme_and_color_description">تغییر ظاهر برنامه</string>
|
|
||||||
<string name="no_file_manager">هیچ برنامه مدیریت فایلی پیدا نشد</string>
|
|
||||||
<string name="notification_no_directory_link">پوشه yuzu باز نشد</string>
|
|
||||||
<string name="notification_no_directory_link_description">لطفاً پوشه کاربری را با استفاده از پنل کناری برنامه مدیریت فایل به صورت دستی پیدا کنید.</string>
|
|
||||||
<string name="manage_save_data">مدیریت ذخیره دادهها</string>
|
|
||||||
<string name="manage_save_data_description">ذخیره داده یافت شد. لطفاً یکی از گزینههای زیر را انتخاب کنید.</string>
|
|
||||||
<string name="import_save_warning">وارد کردن ذخیره دادهها</string>
|
|
||||||
<string name="import_save_warning_description">این کار تمام دادههای ذخیره موجود را با فایل ارائه شده بازنویسی می کند. آیا مطمئن هستید که میخواهید ادامه دهید؟</string>
|
|
||||||
<string name="import_export_saves_description">فایلهای ذخیره داده را وارد یا صادر کنید</string>
|
|
||||||
<string name="save_files_importing">در حال وارد کردن فایلهای ذخیره…</string>
|
|
||||||
<string name="save_files_exporting">در حال صادر کردن فایلهای ذخیره…</string>
|
|
||||||
<string name="save_file_imported_success">با موفقیت وارد شد</string>
|
|
||||||
<string name="save_file_invalid_zip_structure">ساختار پوشه ذخیره نامعتبر است</string>
|
|
||||||
<string name="save_file_invalid_zip_structure_description">اولین نام زیرپوشه باید شناسه عنوان بازی باشد.</string>
|
|
||||||
<string name="import_saves">وارد کردن</string>
|
|
||||||
<string name="export_saves">صادر کردن</string>
|
|
||||||
<string name="install_firmware">نصب ثابتافزار</string>
|
|
||||||
<string name="install_firmware_description">ثابتافزار باید در آرشیو ZIP باشد و برای اجرای برخی بازیها نیاز است</string>
|
|
||||||
<string name="firmware_installing">در حال نصب ثابتافزار</string>
|
|
||||||
<string name="firmware_installed_success">ثابتافزار با موفقیت نصب شد</string>
|
|
||||||
<string name="firmware_installed_failure">نصب ثابتافزار ناموفق بود</string>
|
|
||||||
<string name="firmware_installed_failure_description">مطمئن شوید که فایلهای nca ثابتافزار در ریشه فایل فشرده هستند و دوباره امتحان کنید.</string>
|
|
||||||
<string name="share_log">اشتراک گزارش اشکال زدایی</string>
|
|
||||||
<string name="share_log_description">فایل گزارش yuzu را برای رفع اشکال به اشتراک بگذارید</string>
|
|
||||||
<string name="share_log_missing">هیچ فایل گزارشی یافت نشد</string>
|
|
||||||
<string name="install_game_content">نصب محتوای بازی</string>
|
|
||||||
<string name="install_game_content_description">آپدیت های بازی یا DLC را نصب کنید</string>
|
|
||||||
<string name="installing_game_content">در حال نصب محتوا...</string>
|
|
||||||
<string name="install_game_content_failure">خطا در نصب فایل(ها) در NAND</string>
|
|
||||||
<string name="install_game_content_failure_description">لطفاً مطمئن شوید که محتوا(های) معتبر هستند و فایل prod.keys نصب شده است.</string>
|
|
||||||
<string name="install_game_content_failure_base">نصب فایل اصلی بازیها برای جلوگیری از ناسازگاریهای احتمالی مجاز نیست.</string>
|
|
||||||
<string name="install_game_content_failure_file_extension">فقط محتوای NSP و XCI پشتیبانی می شود. لطفاً مطمئن شوید که محتوا(های) بازی معتبر است.</string>
|
|
||||||
<string name="install_game_content_failed_count">%1$dخطا(های) نصب</string>
|
|
||||||
<string name="install_game_content_success">محتوا(های) بازی با موفقیت نصب شد</string>
|
|
||||||
<string name="install_game_content_success_install">%1$dبا موفقیت نصب شد</string>
|
|
||||||
<string name="install_game_content_success_overwrite">%1$dبا موفقیت بازنویسی شد</string>
|
|
||||||
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
|
||||||
<string name="custom_driver_not_supported">درایورهای سفارشی پشتیبانی نمیشوند</string>
|
|
||||||
<string name="custom_driver_not_supported_description">بارگیری درایور سفارشی در حال حاضر برای این دستگاه پشتیبانی نمیشود.\nاین گزینه را دوباره در آینده بررسی کنید تا ببینید آیا پشتیبانی اضافه شده است یا خیر!</string>
|
|
||||||
<string name="manage_yuzu_data">مدیریت دادههای yuzu</string>
|
|
||||||
<string name="manage_yuzu_data_description">وارد کردن/صادر کردن ثابتافزار، کلیدها، دادههای کاربر، و موارد دیگر!</string>
|
|
||||||
<string name="share_save_file">اشتراک گذاری فایل ذخیره</string>
|
|
||||||
<string name="export_save_failed">ذخیره صادر نشد</string>
|
|
||||||
<string name="game_folders">پوشههای بازی</string>
|
|
||||||
<string name="deep_scan">بررسی عمیق</string>
|
|
||||||
<string name="add_game_folder">افزودن پوشه بازی</string>
|
|
||||||
<string name="folder_already_added">این پوشه قبلاً اضافه شده است!</string>
|
|
||||||
<string name="game_folder_properties">ویژگیهای پوشه بازی</string>
|
|
||||||
<plurals name="saves_import_failed">
|
|
||||||
<item quantity="one">وارد کردن ذخیره %d ناموفق بود</item>
|
|
||||||
<item quantity="other">وارد کردن ذخیرههای %d ناموفق بود</item>
|
|
||||||
</plurals>
|
|
||||||
<plurals name="saves_import_success">
|
|
||||||
<item quantity="one">ذخیره %d با موفقیت وارد گردید</item>
|
|
||||||
<item quantity="other">ذخیرههای %d با موفقیت وارد گردید</item>
|
|
||||||
</plurals>
|
|
||||||
<string name="no_save_data_found">هیچ داده ذخیرهای یافت نشد</string>
|
|
||||||
<string name="verify_installed_content">بررسی محتوای نصب شده</string>
|
|
||||||
<string name="verify_installed_content_description">تمام محتوای نصب شده را از نظر خرابی بررسی میکند</string>
|
|
||||||
<string name="keys_missing">کلیدهای رمزگذاری وجود ندارند</string>
|
|
||||||
<string name="keys_missing_description">ثابتافزار و بازیهای فروشگاهی قابل رمزگشایی نیستند</string>
|
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<!-- Applet launcher strings -->
|
|
||||||
<string name="applets">اجراکننده برنامک</string>
|
|
||||||
<string name="applets_description">برنامکهای سیستم را با استفاده از ثابتافزار نصب شده راه اندازی کنید</string>
|
|
||||||
<string name="applets_error_firmware">ثابتافزار نصب نیست</string>
|
|
||||||
<string name="applets_error_applet">برنامک در دسترس نیست</string>
|
|
||||||
<string name="applets_error_description"><![CDATA[لطفاً مطمئن شوید که فایل <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> و <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-system-firmware\">ثابتافزار</a> شما نصب شده است و دوباره امتحان کنید.]]></string>
|
|
||||||
<string name="album_applet">آلبوم</string>
|
|
||||||
<string name="album_applet_description">تصاویر ذخیره شده در پوشه اسکرین شاتهای کاربر را با نمایشگر عکس سیستم مشاهده کنید</string>
|
|
||||||
<string name="mii_edit_applet">ویرایش Mii</string>
|
|
||||||
<string name="mii_edit_applet_description">نمایش و ویرایش Miis با استفاده از ویرایشگر سیستم</string>
|
|
||||||
<string name="cabinet_applet">قفسه</string>
|
|
||||||
<string name="cabinet_applet_description">دادههای ذخیره شده در amiibo را ویرایش و حذف کنید</string>
|
|
||||||
<string name="cabinet_launcher">اجرا کننده قفسه</string>
|
|
||||||
<string name="cabinet_nickname_and_owner">تنظیمات نام مستعار و مالک</string>
|
|
||||||
<string name="cabinet_game_data_eraser">حذف کننده داده بازی</string>
|
|
||||||
<string name="cabinet_restorer">بازگرداننده</string>
|
|
||||||
<string name="cabinet_formatter">فرم دهنده</string>
|
|
||||||
|
|
||||||
<!-- About screen strings -->
|
|
||||||
<string name="gaia_is_not_real">Gaia isn\'t real</string>
|
|
||||||
<string name="copied_to_clipboard">در کلیپبورد کپی شد</string>
|
|
||||||
<string name="about_app_description">یک شبیهساز سوئیچ منبع باز</string>
|
|
||||||
<string name="contributors">مشارکت کنندگان</string>
|
|
||||||
<string name="contributors_description">Made with \u2764 from the yuzu team</string>
|
|
||||||
<string name="contributors_link">https://github.com/yuzu-emu/yuzu/graphs/contributors</string>
|
|
||||||
<string name="licenses_description">پروژههایی که yuzu را برای اندروید ممکن میسازند</string>
|
|
||||||
<string name="build">ساخت</string>
|
|
||||||
<string name="user_data">داده کاربر</string>
|
|
||||||
<string name="user_data_description">همه دادههای برنامه را وارد/صادر کنید.\n\nهنگام وارد کردن دادههای کاربر، همه دادههای کاربر موجود حذف خواهند شد!</string>
|
|
||||||
<string name="exporting_user_data">در حال صادر کردن دادههای کاربر...</string>
|
|
||||||
<string name="importing_user_data">در حال وارد کردن دادههای کاربر...</string>
|
|
||||||
<string name="import_user_data">وارد کردن داده کاربر</string>
|
|
||||||
<string name="invalid_yuzu_backup">پشتیبان نامعتبر yuzu</string>
|
|
||||||
<string name="user_data_export_success">دادههای کاربر با موفقیت صادر شد</string>
|
|
||||||
<string name="user_data_import_success">دادههای کاربر با موفقیت وارد شد</string>
|
|
||||||
<string name="user_data_export_cancelled">صدور لغو شد</string>
|
|
||||||
<string name="user_data_import_failed_description">مطمئن شوید که پوشههای داده کاربر در ریشه پوشه zip و حاوی یک فایل پیکربندی در config/config.ini هستند سپس دوباره امتحان کنید.</string>
|
|
||||||
<string name="support_link">https://discord.gg/u77vRWY</string>
|
|
||||||
<string name="website_link">https://yuzu-emu.org/</string>
|
|
||||||
<string name="github_link">https://github.com/yuzu-emu</string>
|
|
||||||
|
|
||||||
<!-- Early access upgrade strings -->
|
|
||||||
<string name="early_access">دسترسی زودهنگام</string>
|
|
||||||
<string name="get_early_access">دسترسی زودهنگام را دریافت کنید</string>
|
|
||||||
<string name="play_store_link">https://play.google.com/store/apps/details?id=org.yuzu.yuzu_emu.ea</string>
|
|
||||||
<string name="get_early_access_description">ویژگیهای پیشرفته، دسترسی زودهنگام به بروزرسانیها و موارد دیگر</string>
|
|
||||||
<string name="early_access_benefits">مزایای دسترسی زودهنگام</string>
|
|
||||||
<string name="cutting_edge_features">ویژگیهای پیشرفته</string>
|
|
||||||
<string name="early_access_updates">دسترسی زودهنگام به بروزرسانیها</string>
|
|
||||||
<string name="no_manual_installation">بدون نصب دستی</string>
|
|
||||||
<string name="prioritized_support">پشتیبانی اولویت بندی شده</string>
|
|
||||||
<string name="helping_game_preservation">کمک به حفظ بازی</string>
|
|
||||||
<string name="our_eternal_gratitude">سپاس ابدی ما</string>
|
|
||||||
<string name="are_you_interested">مشتاق هستید؟</string>
|
|
||||||
|
|
||||||
<!-- General settings strings -->
|
|
||||||
<string name="frame_limit_enable">محدودیت سرعت</string>
|
|
||||||
<string name="frame_limit_enable_description">سرعت شبیهسازی را به درصد مشخصی از سرعت عادی محدود میکند.</string>
|
|
||||||
<string name="frame_limit_slider">درصد محدودیت سرعت</string>
|
|
||||||
<string name="frame_limit_slider_description">درصدی را برای محدود کردن سرعت شبیهسازی مشخص میکند. 100% سرعت عادی است. مقادیر بیشتر یا کمتر باعث افزایش یا کاهش سرعت میشود.</string>
|
|
||||||
<string name="cpu_backend">پشتگاه پردازنده</string>
|
|
||||||
<string name="cpu_accuracy">دقت پردازنده</string>
|
|
||||||
<string name="value_with_units">%1$s%2$s</string>
|
|
||||||
|
|
||||||
<!-- System settings strings -->
|
|
||||||
<string name="device_name">نام دستگاه</string>
|
|
||||||
<string name="use_docked_mode">حالت متصل</string>
|
|
||||||
<string name="use_docked_mode_description">وضوح را افزایش میدهد، عملکرد را کاهش میدهد. حالت دستی زمانی استفاده میشود که این گزینه غیرفعال است، و باعث کاهش وضوح و افزایش عملکرد میشود.</string>
|
|
||||||
<string name="emulated_region">منطقه شبیهسازی</string>
|
|
||||||
<string name="emulated_language">زبان شبیهسازی</string>
|
|
||||||
<string name="select_rtc_date">انتخاب تاریخ</string>
|
|
||||||
<string name="select_rtc_time">انتخاب زمان</string>
|
|
||||||
<string name="use_custom_rtc">زمان سفارشی</string>
|
|
||||||
<string name="use_custom_rtc_description">به شما امکان میدهد یک ساعت سفارشی جدا از زمان فعلی سیستم خود تنظیم کنید.</string>
|
|
||||||
<string name="set_custom_rtc">تنظیم زمان سفارشی</string>
|
|
||||||
|
|
||||||
<!-- Graphics settings strings -->
|
|
||||||
<string name="renderer_accuracy">سطح دقت</string>
|
|
||||||
<string name="renderer_resolution">وضوح تصویر (دستی/متصل)</string>
|
|
||||||
<string name="renderer_vsync">حالت VSync</string>
|
|
||||||
<string name="renderer_screen_layout">جهتگیری صفحه</string>
|
|
||||||
<string name="renderer_aspect_ratio">نسبت ابعاد</string>
|
|
||||||
<string name="renderer_scaling_filter">فیلتر تطبیق پنجره</string>
|
|
||||||
<string name="fsr_sharpness">وضوح FSR</string>
|
|
||||||
<string name="fsr_sharpness_description">تعیین میکند که هنگام استفاده از کنتراست پویا FSR، تصویر چقدر واضح به نظر میرسد</string>
|
|
||||||
<string name="renderer_anti_aliasing">حالت ضدپلگی</string>
|
|
||||||
<string name="renderer_force_max_clock">اجبار به حداکثر فرکانس (فقط برای Adreno)</string>
|
|
||||||
<string name="renderer_force_max_clock_description">پردازنده گرافیکی را مجبور میکند تا با بیشترین فرکانس کار کند (محدودیتهای حرارتی همچنان اعمال خواهند شد).</string>
|
|
||||||
<string name="renderer_asynchronous_shaders">استفاده از سایهزنهای ناهمزمان</string>
|
|
||||||
<string name="renderer_asynchronous_shaders_description">سایهزنها را به صورت ناهمزمان کامپایل می کند، لکنت را کاهش میدهد اما ممکن است اشکالاتی ایجاد کند.</string>
|
|
||||||
<string name="renderer_reactive_flushing">استفاده از فلاش کردن واکنشی</string>
|
|
||||||
<string name="renderer_reactive_flushing_description">دقت تفسیر تصاویر را در برخی از بازیها به قیمت عملکرد بهبود میبخشد.</string>
|
|
||||||
<string name="use_disk_shader_cache">ذخیره سایهزنیها در حافظه</string>
|
|
||||||
<string name="use_disk_shader_cache_description">لکنت را با ذخیره و بارگذاری سایهزنهای تولید شده کاهش میدهد.</string>
|
|
||||||
<string name="anisotropic_filtering">فیلتر ناهمسانگرد</string>
|
|
||||||
<string name="anisotropic_filtering_description">کیفیت بافتها را هنگام مشاهده در زوایای اریب بهبود میبخشد</string>
|
|
||||||
|
|
||||||
<!-- Debug settings strings -->
|
|
||||||
<string name="cpu">پردازنده</string>
|
|
||||||
<string name="cpu_debug_mode">اشکالزدایی پردازنده</string>
|
|
||||||
<string name="cpu_debug_mode_description">پردازنده را در حالت اشکالزدایی کندتر قرار میدهد.</string>
|
|
||||||
<string name="gpu">پردازنده گرافیکی</string>
|
|
||||||
<string name="renderer_api">رابط برنامهنویسی</string>
|
|
||||||
<string name="renderer_debug">اشکالزدایی پردازنده گرافیکی</string>
|
|
||||||
<string name="renderer_debug_description">رابط گرافیکی را روی حالت اشکالزدایی کندتر تنظیم میکند.</string>
|
|
||||||
<string name="fastmem">دسترسی سریع حافظه</string>
|
|
||||||
|
|
||||||
<!-- Audio settings strings -->
|
|
||||||
<string name="audio_output_engine">موتور خروجی</string>
|
|
||||||
<string name="audio_volume">میزان</string>
|
|
||||||
<string name="audio_volume_description">میزان صدای خروجی را مشخص میکند.</string>
|
|
||||||
|
|
||||||
<!-- Input strings -->
|
|
||||||
<string name="buttons">دکمهها</string>
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">بایت</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">به علاوه</string>
|
|
||||||
<string name="button_minus">منها</string>
|
|
||||||
<string name="button_home">خانه</string>
|
|
||||||
<string name="button_capture">ضبط</string>
|
|
||||||
<string name="start_pause">شروع/مکث</string>
|
|
||||||
<string name="dpad">دکمههای جهتی</string>
|
|
||||||
<string name="up">بالا</string>
|
|
||||||
<string name="down">پایین</string>
|
|
||||||
<string name="left">چپ</string>
|
|
||||||
<string name="right">راست</string>
|
|
||||||
<string name="left_stick">استیک چپ</string>
|
|
||||||
<string name="right_stick">استیک راست</string>
|
|
||||||
<string name="pressed">فشار داده شده</string>
|
|
||||||
<string name="range">محدوده</string>
|
|
||||||
<string name="deadzone">ناحیه خطا</string>
|
|
||||||
<string name="triggers">ماشهها</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">نامعتبر</string>
|
|
||||||
<string name="not_set">تنظیم نشده</string>
|
|
||||||
<string name="unknown">نامعلوم</string>
|
|
||||||
<string name="unused">استفاده نشده</string>
|
|
||||||
<string name="input_prompt">یک ورودی را حرکت یا فشار دهید</string>
|
|
||||||
<string name="unsupported_input">نوع ورودی پشتیبانی نمیشود</string>
|
|
||||||
<string name="input_mapping_filter">فیلتر نگاشت ورودی</string>
|
|
||||||
<string name="input_mapping_filter_description">دستگاهی را برای فیلتر کردن ورودیهای نقشه برداری انتخاب کنید</string>
|
|
||||||
<string name="auto_map">نقشه برداری خودکار یک کنترلر</string>
|
|
||||||
<string name="auto_map_description">دستگاهی را برای انجام نقشه برداری خودکار انتخاب کنید</string>
|
|
||||||
<string name="attempted_auto_map">نقشه خودکار با %1$s</string>
|
|
||||||
<string name="controller_type">نوع کنترلر</string>
|
|
||||||
<string name="pro_controller">کنترلر حرفهای</string>
|
|
||||||
<string name="handheld">حالت دستی</string>
|
|
||||||
<string name="dual_joycons">جفت Joycon</string>
|
|
||||||
<string name="left_joycon">Joycon چپ</string>
|
|
||||||
<string name="right_joycon">Joycon راست</string>
|
|
||||||
<string name="gamecube_controller">کنترلر GameCube</string>
|
|
||||||
<string name="invert_axis">محور معکوس</string>
|
|
||||||
<!-- Miscellaneous -->
|
|
||||||
<string name="slider_default">پیشفرض</string>
|
|
||||||
<string name="ini_saved">تنظیمات ذخیره شده</string>
|
|
||||||
<string name="gameid_saved">تنظیمات ذخیره شده برای %1$s</string>
|
|
||||||
<string name="error_saving">خطا برای ذخیره ini.%1$s : %2$s</string>
|
|
||||||
<string name="unimplemented_menu">منوی ساخته نشده</string>
|
|
||||||
<string name="loading">بارگذاری...</string>
|
|
||||||
<string name="shutting_down">خاموش شدن…</string>
|
|
||||||
<string name="reset_setting_confirmation">آیا میخواهید این تنظیم را به مقدار پیشفرض خود بازنشانی کنید؟</string>
|
|
||||||
<string name="reset_to_default">بازنشانی به پیشفرض</string>
|
|
||||||
<string name="reset_to_default_description">بازنشانی کل تنظیمات پیشرفته</string>
|
|
||||||
<string name="reset_all_settings">کل تنظیمات بازنشانی شود؟</string>
|
|
||||||
<string name="reset_all_settings_description">تمام تنظیمات پیشرفته به پیکربندی پیشفرض خود بازنشانی خواهند شد. این قابل بازگشت نیست.</string>
|
|
||||||
<string name="settings_reset">بازنشانی تنظیمات</string>
|
|
||||||
<string name="close">بستن</string>
|
|
||||||
<string name="learn_more">بیشتر بدانید</string>
|
|
||||||
<string name="auto">خودکار</string>
|
|
||||||
<string name="submit">ارسال</string>
|
|
||||||
<string name="string_null">خالی</string>
|
|
||||||
<string name="string_import">وارد کردن</string>
|
|
||||||
<string name="export">صادر کردن</string>
|
|
||||||
<string name="export_failed">صادر کردن ناموفق بود</string>
|
|
||||||
<string name="import_failed">وارد کردن ناموفق بود</string>
|
|
||||||
<string name="cancelling">در حال لغو</string>
|
|
||||||
<string name="install">نصب</string>
|
|
||||||
<string name="delete">حذف</string>
|
|
||||||
<string name="edit">ویرایش</string>
|
|
||||||
<string name="export_success">با موفقیت صادر شد</string>
|
|
||||||
<string name="start">شروع</string>
|
|
||||||
<string name="clear">پاکسازی</string>
|
|
||||||
<string name="global">سراسری</string>
|
|
||||||
<string name="custom">سفارشی</string>
|
|
||||||
<string name="notice">اطلاع</string>
|
|
||||||
<string name="import_complete">وارد کردن تکمیل شد</string>
|
|
||||||
<string name="more_options">گزینههای بیشتر</string>
|
|
||||||
<string name="use_global_setting">استفاده از تنظیمات سراسری</string>
|
|
||||||
<string name="operation_completed_successfully">عملیات با موفقیت به پایان رسید</string>
|
|
||||||
<!-- GPU driver installation -->
|
|
||||||
<string name="select_gpu_driver">انتخاب درایور پردازنده گرافیکی</string>
|
|
||||||
<string name="select_gpu_driver_title">آیا می خواهید درایور فعلی پردازنده گرافیکی خود را جایگزین کنید؟</string>
|
|
||||||
<string name="select_gpu_driver_install">نصب</string>
|
|
||||||
<string name="select_gpu_driver_default">پیشفرض</string>
|
|
||||||
<string name="select_gpu_driver_use_default">استفاده از درایور پیشفرض پردازنده گرافیکی</string>
|
|
||||||
<string name="select_gpu_driver_error">درایور نامعتبر انتخاب شده است</string>
|
|
||||||
<string name="driver_already_installed">درایور قبلاً نصب شده است</string>
|
|
||||||
<string name="system_gpu_driver">درایور سیستم پردازنده گرافیکی</string>
|
|
||||||
<string name="installing_driver">در حال نصب درایور...</string>
|
|
||||||
|
|
||||||
<!-- Preferences Screen -->
|
|
||||||
<string name="preferences_settings">تنظیمات</string>
|
|
||||||
<string name="preferences_general">عمومی</string>
|
|
||||||
<string name="preferences_system">سیستم</string>
|
|
||||||
<string name="preferences_system_description">حالت متصل شده، منطقه، زبان</string>
|
|
||||||
<string name="preferences_graphics">گرافیک</string>
|
|
||||||
<string name="preferences_graphics_description">سطح دقت، وضوح، حافظه پنهان سایهزن</string>
|
|
||||||
<string name="preferences_audio">صدا</string>
|
|
||||||
<string name="preferences_audio_description">موتور خروجی، میزان</string>
|
|
||||||
<string name="preferences_theme">رنگ و تم</string>
|
|
||||||
<string name="preferences_debug">اشکالزدایی</string>
|
|
||||||
<string name="preferences_debug_description">اشکالزدایی پردازنده/گرافیک، API گرافیک، fastmem</string>
|
|
||||||
|
|
||||||
<!-- Game properties -->
|
|
||||||
<string name="info">اطلاعات</string>
|
|
||||||
<string name="info_description">شناسه برنامه، توسعه دهنده، نسخه</string>
|
|
||||||
<string name="per_game_settings">تنظیمات مختص هر بازی</string>
|
|
||||||
<string name="per_game_settings_description">ویرایش تنظیمات مختص این بازی</string>
|
|
||||||
<string name="launch_options">تنظیمات اجرا</string>
|
|
||||||
<string name="path">مسیر</string>
|
|
||||||
<string name="program_id">شناسه برنامه</string>
|
|
||||||
<string name="developer">توسعه دهنده</string>
|
|
||||||
<string name="version">نسخه</string>
|
|
||||||
<string name="copy_details">کپی جزئیات</string>
|
|
||||||
<string name="add_ons">افزونهها</string>
|
|
||||||
<string name="add_ons_description">تغییر مودها، آپدیتها و DLC</string>
|
|
||||||
<string name="clear_shader_cache">پاکسازی حافظه پنهان سایهزنها</string>
|
|
||||||
<string name="clear_shader_cache_description">تمام سایهزنهای ساخته شده در حین اجرای این بازی را حذف میکند</string>
|
|
||||||
<string name="clear_shader_cache_warning_description">هنگام بازسازی حافظه پنهان سایهزنی، لکنت بیشتری را تجربه خواهید کرد</string>
|
|
||||||
<string name="cleared_shaders_successfully">سایهزنها با موفقیت پاک شدند</string>
|
|
||||||
<string name="addons_game">افزونه: %1$s</string>
|
|
||||||
<string name="save_data">دادههای ذخیره</string>
|
|
||||||
<string name="save_data_description">مدیریت دادههای ذخیره مخصوص این بازی</string>
|
|
||||||
<string name="delete_save_data">حذف دادههای ذخیره</string>
|
|
||||||
<string name="delete_save_data_description">تمام دادههای ذخیره شده مخصوص این بازی را حذف میکند</string>
|
|
||||||
<string name="delete_save_data_warning_description">تمام دادههای ذخیره این بازی را به طور غیرقابل برگشت حذف می کند. آیا مطمئن هستید که میخواهید ادامه دهید؟</string>
|
|
||||||
<string name="save_data_deleted_successfully">ذخیره دادهها با موفقیت حذف شد</string>
|
|
||||||
<string name="select_content_type">نوع محتوا</string>
|
|
||||||
<string name="updates_and_dlc">آپدیتها و DLC</string>
|
|
||||||
<string name="mods_and_cheats">مودها و چیتها</string>
|
|
||||||
<string name="addon_notice">اطلاعیه مهم افزونه</string>
|
|
||||||
<!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
|
|
||||||
<string name="addon_notice_description">برای نصب مودها و چیت ها، باید پوشه ای را انتخاب کنید که حاوی مسیر cheats/ یا romfs/ یا exefs/ باشد. ما نمیتوانیم تأیید کنیم که اینها با بازی شما سازگار هستند، بنابراین مراقب باشید!</string>
|
|
||||||
<string name="invalid_directory">مسیر نامعتبر</string>
|
|
||||||
<!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
|
|
||||||
<string name="invalid_directory_description">لطفاً مطمئن شوید که مسیر انتخابی شما حاوی یک پوشه cheats/ یا romfs/ یا exefs/ میباشد و دوباره امتحان کنید.</string>
|
|
||||||
<string name="addon_installed_successfully">افزونه با موفقیت نصب شد</string>
|
|
||||||
<string name="verifying_content">در حال تأیید محتوا…</string>
|
|
||||||
<string name="content_install_notice">اطلاعیه نصب محتوا</string>
|
|
||||||
<string name="content_install_notice_description">محتوایی که انتخاب کردید با این بازی مطابقت ندارد.\nبه هر حال نصب شود؟</string>
|
|
||||||
<string name="confirm_uninstall">حذف را تایید کنید</string>
|
|
||||||
<string name="confirm_uninstall_description">آیا مطمئن هستید که میخواهید این افزونه را حذف کنید؟</string>
|
|
||||||
<string name="verify_integrity">راستیآزمایی یکپارچگی</string>
|
|
||||||
<string name="verifying">در حال بررسی...</string>
|
|
||||||
<string name="verify_success">راستیآزمایی یکپارچگی با موفقیت انجام شد!</string>
|
|
||||||
<string name="verify_failure">راستیآزمایی یکپارچگی ناموفق بود!</string>
|
|
||||||
<string name="verify_failure_description">محتویات فایل ممکن است خراب باشد</string>
|
|
||||||
<string name="verify_no_result">راستیآزمایی یکپارچگی انجام نشد</string>
|
|
||||||
<string name="verify_no_result_description"> اعتبار محتوای فایل بررسی نشد</string>
|
|
||||||
<string name="verification_failed_for">بررسی برای فایلهای زیر انجام نشد:\n%1$s</string>
|
|
||||||
|
|
||||||
<!-- ROM loading errors -->
|
|
||||||
<string name="loader_error_encrypted">رام شما رمزگذاری شده است</string>
|
|
||||||
<string name="loader_error_encrypted_roms_description"><![CDATA[لطفاً راهنماها را دنبال کنید تا <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">کارتیجهای بازی</a> یا <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">عناوین نصب شده</a> خود را استخراج کنید.]]></string>
|
|
||||||
<string name="loader_error_encrypted_keys_description"><![CDATA[لطفاً مطمئن شوید که فایل prod.keys شما نصب شده است تا بازیها رمزگشایی شوند.]]></string>
|
|
||||||
<string name="loader_error_video_core">در راهاندازی اولیه هسته ویدیو خطایی رخ داد</string>
|
|
||||||
<string name="loader_error_video_core_description">این مورد معمولاً توسط یک درایور گرافیکی ناسازگار ایجاد میشود. نصب درایور گرافیکی سفارشی ممکن است این مشکل را حل کند.</string>
|
|
||||||
<string name="loader_error_invalid_format">رام بارگذاری نشد</string>
|
|
||||||
<string name="loader_error_file_not_found">فایل رام وجود ندارد</string>
|
|
||||||
|
|
||||||
<!-- Emulation Menu -->
|
|
||||||
<string name="emulation_exit">خروج از شبیهسازی</string>
|
|
||||||
<string name="emulation_done">انجام شد</string>
|
|
||||||
<string name="emulation_fps_counter">شمارشگر فریم</string>
|
|
||||||
<string name="emulation_thermal_indicator">نشانگر حرارتی</string>
|
|
||||||
<string name="emulation_toggle_controls">تغییر کنترلها</string>
|
|
||||||
<string name="emulation_rel_stick_center">مرکز نسبی استیک</string>
|
|
||||||
<string name="emulation_dpad_slide">لغزش دکمههای جهتی</string>
|
|
||||||
<string name="emulation_haptics">لرزش لمسی</string>
|
|
||||||
<string name="emulation_show_overlay">نشان دادن نمایش روی صفحه</string>
|
|
||||||
<string name="emulation_toggle_all">تغییر همه</string>
|
|
||||||
<string name="emulation_control_adjust">تنظیم نمایش روی صفحه</string>
|
|
||||||
<string name="emulation_control_scale">مقیاس</string>
|
|
||||||
<string name="emulation_control_opacity">شفافیت</string>
|
|
||||||
<string name="emulation_touch_overlay_reset">بازنشانی نمایش روی صفحه</string>
|
|
||||||
<string name="emulation_touch_overlay_edit">ویرایش دکمههای روی صفحه</string>
|
|
||||||
<string name="emulation_pause">مکث شبیهسازی</string>
|
|
||||||
<string name="emulation_unpause">ادامه شبیهسازی</string>
|
|
||||||
<string name="emulation_input_overlay">گزینههای نمایش روی صفحه</string>
|
|
||||||
<string name="touchscreen">صفحه لمسی</string>
|
|
||||||
<string name="lock_drawer">قفلکردن منوی کشویی</string>
|
|
||||||
<string name="unlock_drawer">بازکردن قفل منو کشویی</string>
|
|
||||||
|
|
||||||
<string name="load_settings">بارگذاری تنظیمات...</string>
|
|
||||||
|
|
||||||
<!-- Software keyboard -->
|
|
||||||
<string name="software_keyboard">صفحهکلید نرمافزار</string>
|
|
||||||
|
|
||||||
<!-- Errors and warnings -->
|
|
||||||
<string name="abort_button">لغو</string>
|
|
||||||
<string name="continue_button">ادامه</string>
|
|
||||||
<string name="system_archive_not_found">آرشیو سیستم پیدا نشد</string>
|
|
||||||
<string name="system_archive_not_found_message">%s یافت نشد. لطفاً بایگانیهای سیستم خود را استخراج کنید.\nادامه شبیهسازی ممکن است منجر به خرابی و اشکالات شود.</string>
|
|
||||||
<string name="system_archive_general">آرشیو سیستم</string>
|
|
||||||
<string name="save_load_error">خطای ذخیره/بارگذاری</string>
|
|
||||||
<string name="fatal_error">خطای مهلک</string>
|
|
||||||
<string name="fatal_error_message">یک خطای مهلک رخ داد. برای جزئیات، گزارش را بررسی کنید.\nادامه شبیهسازی ممکن است منجر به خرابی و اشکالات شود.</string>
|
|
||||||
<string name="performance_warning">خاموش کردن این تنظیم عملکرد شبیهسازی را به میزان قابل توجهی کاهش میدهد! برای بهترین تجربه، توصیه میشود این تنظیم را فعال بگذارید.</string>
|
|
||||||
<string name="device_memory_inadequate">رم دستگاه: %1$s \nتوصیه شده: %2$s</string>
|
|
||||||
<string name="memory_formatted">%1$s%2$s</string>
|
|
||||||
<string name="no_game_present">هیچ بازی قابل اجرایی وجود ندارد!</string>
|
|
||||||
|
|
||||||
<!-- Region Names -->
|
|
||||||
<string name="region_japan">ژاپن</string>
|
|
||||||
<string name="region_usa">ایالات متحده آمریکا</string>
|
|
||||||
<string name="region_europe">اروپا</string>
|
|
||||||
<string name="region_australia">استرالیا</string>
|
|
||||||
<string name="region_china">چین</string>
|
|
||||||
<string name="region_korea">کره</string>
|
|
||||||
<string name="region_taiwan">تایوان</string>
|
|
||||||
|
|
||||||
<!-- Memory Sizes -->
|
|
||||||
<string name="memory_byte">بایت</string>
|
|
||||||
<string name="memory_byte_shorthand">بایت</string>
|
|
||||||
<string name="memory_kilobyte">کیلوبایت</string>
|
|
||||||
<string name="memory_megabyte">مگابایت</string>
|
|
||||||
<string name="memory_gigabyte">گیگابایت</string>
|
|
||||||
<string name="memory_terabyte">ترابایت</string>
|
|
||||||
<string name="memory_petabyte">پتابایت</string>
|
|
||||||
<string name="memory_exabyte">اگزابایت</string>
|
|
||||||
|
|
||||||
<!-- Renderer APIs -->
|
|
||||||
<string name="renderer_vulkan">Vulkan</string>
|
|
||||||
<string name="renderer_none">هیچ</string>
|
|
||||||
|
|
||||||
<!-- Renderer Accuracy -->
|
|
||||||
<string name="renderer_accuracy_normal">معمولی</string>
|
|
||||||
<string name="renderer_accuracy_high">زیاد</string>
|
|
||||||
<string name="renderer_accuracy_extreme">افراطی (کند)</string>
|
|
||||||
|
|
||||||
<!-- Resolutions -->
|
|
||||||
<string name="resolution_half">0.5X (360p/540p)</string>
|
|
||||||
<string name="resolution_three_quarter">0.75X (540p/810p)</string>
|
|
||||||
<string name="resolution_one">1X (720p/1080p)</string>
|
|
||||||
<string name="resolution_two">2X (1440p/2160p) (کند)</string>
|
|
||||||
<string name="resolution_three">3X (2160p/3240p) (کند)</string>
|
|
||||||
<string name="resolution_four">4X (2880p/4320p) (کند)</string>
|
|
||||||
|
|
||||||
<!-- Renderer VSync -->
|
|
||||||
<string name="renderer_vsync_immediate">فوری (خاموش)</string>
|
|
||||||
<string name="renderer_vsync_mailbox">Mailbox</string>
|
|
||||||
<string name="renderer_vsync_fifo">FIFO (روشن)</string>
|
|
||||||
<string name="renderer_vsync_fifo_relaxed">FIFO آرام</string>
|
|
||||||
|
|
||||||
<!-- Scaling Filters -->
|
|
||||||
<string name="scaling_filter_nearest_neighbor">Nearest Neighbor</string>
|
|
||||||
<string name="scaling_filter_bilinear">Bilinear</string>
|
|
||||||
<string name="scaling_filter_bicubic">Bicubic</string>
|
|
||||||
<string name="scaling_filter_gaussian">Gaussian</string>
|
|
||||||
<string name="scaling_filter_scale_force">ScaleForce</string>
|
|
||||||
<string name="scaling_filter_fsr">AMD FidelityFX™ Super Resolution</string>
|
|
||||||
|
|
||||||
<!-- Anti-Aliasing -->
|
|
||||||
<string name="anti_aliasing_none">هیچ</string>
|
|
||||||
<string name="anti_aliasing_fxaa">FXAA</string>
|
|
||||||
<string name="anti_aliasing_smaa">SMAA</string>
|
|
||||||
|
|
||||||
<!-- Screen Layouts -->
|
|
||||||
<string name="screen_layout_auto">خودکار</string>
|
|
||||||
<string name="screen_layout_sensor_landscape">افقی با سنسور</string>
|
|
||||||
<string name="screen_layout_landscape">افقی</string>
|
|
||||||
<string name="screen_layout_reverse_landscape">افقی معکوس</string>
|
|
||||||
<string name="screen_layout_sensor_portrait">عمودی با سنسور</string>
|
|
||||||
<string name="screen_layout_portrait">عمودی</string>
|
|
||||||
<string name="screen_layout_reverse_portrait">عمودی معکوس</string>
|
|
||||||
|
|
||||||
<!-- Aspect Ratios -->
|
|
||||||
<string name="ratio_default">پیشفرض (16:9)</string>
|
|
||||||
<string name="ratio_force_four_three">اجبار به 4:3</string>
|
|
||||||
<string name="ratio_force_twenty_one_nine">اجبار به 21:9</string>
|
|
||||||
<string name="ratio_force_sixteen_ten">اجبار به 16:10</string>
|
|
||||||
<string name="ratio_stretch">کشش تا پر کردن پنجره</string>
|
|
||||||
|
|
||||||
<!-- CPU Backend -->
|
|
||||||
<string name="cpu_backend_dynarmic">دینارمیک (کند)</string>
|
|
||||||
<string name="cpu_backend_nce">اجرای کد اصلی (NCE)</string>
|
|
||||||
|
|
||||||
<!-- CPU Accuracy -->
|
|
||||||
<string name="cpu_accuracy_accurate">دقیق</string>
|
|
||||||
<string name="cpu_accuracy_unsafe">ناامن</string>
|
|
||||||
<string name="cpu_accuracy_paranoid">بدگمان (کند)</string>
|
|
||||||
|
|
||||||
<!-- Gamepad Buttons -->
|
|
||||||
<string name="gamepad_d_pad">کلیدهای جهتی</string>
|
|
||||||
<string name="gamepad_left_stick">استیک چپ</string>
|
|
||||||
<string name="gamepad_right_stick">استیک راست</string>
|
|
||||||
<string name="gamepad_home">خانه</string>
|
|
||||||
<string name="gamepad_screenshot">نماگرفت</string>
|
|
||||||
|
|
||||||
<!-- Disk shader cache -->
|
|
||||||
<string name="preparing_shaders">در حال آمادهسازی سایهزنها</string>
|
|
||||||
<string name="building_shaders">در حال ساخت سایهزنها</string>
|
|
||||||
|
|
||||||
<!-- Theme options -->
|
|
||||||
<string name="change_app_theme">تغییر تم برنامه</string>
|
|
||||||
<string name="theme_default">پیشفرض</string>
|
|
||||||
<string name="theme_material_you">Material You</string>
|
|
||||||
|
|
||||||
<!-- Theme Modes -->
|
|
||||||
<string name="change_theme_mode">تغییر حالت تم</string>
|
|
||||||
<string name="theme_mode_follow_system">پیروی از سیستم</string>
|
|
||||||
<string name="theme_mode_light">روشن</string>
|
|
||||||
<string name="theme_mode_dark">تاریک</string>
|
|
||||||
|
|
||||||
<!-- Audio output engines -->
|
|
||||||
<string name="oboe">oboe</string>
|
|
||||||
<string name="cubeb">cubeb</string>
|
|
||||||
|
|
||||||
<!-- Anisotropic filtering options -->
|
|
||||||
<string name="multiplier_two">2x</string>
|
|
||||||
<string name="multiplier_four">4x</string>
|
|
||||||
<string name="multiplier_eight">8x</string>
|
|
||||||
<string name="multiplier_sixteen">16x</string>
|
|
||||||
|
|
||||||
<!-- Black backgrounds theme -->
|
|
||||||
<string name="use_black_backgrounds">پسزمینه مشکی</string>
|
|
||||||
<string name="use_black_backgrounds_description">هنگام استفاده از تم تاریک، پسزمینه مشکی را اعمال میکند.</string>
|
|
||||||
|
|
||||||
<!-- Picture-In-Picture -->
|
|
||||||
<string name="picture_in_picture">تصویر در تصویر</string>
|
|
||||||
<string name="picture_in_picture_description">وقتی در پسزمینه قرار میگیرد، پنجره کوچک میشود</string>
|
|
||||||
<string name="pause">مکث</string>
|
|
||||||
<string name="play">شروع</string>
|
|
||||||
<string name="mute">بیصدا</string>
|
|
||||||
<string name="unmute">باصدا</string>
|
|
||||||
|
|
||||||
<!-- Emulation vertical alignment -->
|
|
||||||
<string name="vertical_alignment">چیدمان عمودی</string>
|
|
||||||
<string name="top">بالا</string>
|
|
||||||
<string name="center">وسط</string>
|
|
||||||
<string name="bottom">پایین</string>
|
|
||||||
|
|
||||||
<!-- Licenses screen strings -->
|
|
||||||
<string name="licenses">مجوزها</string>
|
|
||||||
<string name="license_fidelityfx_fsr_description">High-quality upscaling from AMD</string>
|
|
||||||
</resources>
|
|
|
@ -137,11 +137,6 @@
|
||||||
<item quantity="other">%d sauvegardes importées avec succès</item>
|
<item quantity="other">%d sauvegardes importées avec succès</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<string name="no_save_data_found">Aucune donnée de sauvegarde trouvée</string>
|
<string name="no_save_data_found">Aucune donnée de sauvegarde trouvée</string>
|
||||||
<string name="verify_installed_content">Vérifier les contenus installés</string>
|
|
||||||
<string name="verify_installed_content_description">Vérifie l\'intégrité des contenus installés</string>
|
|
||||||
<string name="keys_missing">Les clés de chiffrement sont manquantes.</string>
|
|
||||||
<string name="keys_missing_description">Le firmware et les jeux commerciaux ne peuvent pas être déchiffrés</string>
|
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<!-- Applet launcher strings -->
|
<!-- Applet launcher strings -->
|
||||||
<string name="applets">Lanceur d\'applets</string>
|
<string name="applets">Lanceur d\'applets</string>
|
||||||
|
@ -208,7 +203,6 @@
|
||||||
<string name="value_with_units">%1$s%2$s</string>
|
<string name="value_with_units">%1$s%2$s</string>
|
||||||
|
|
||||||
<!-- System settings strings -->
|
<!-- System settings strings -->
|
||||||
<string name="device_name">Nom de l\'appareil</string>
|
|
||||||
<string name="use_docked_mode">Mode TV</string>
|
<string name="use_docked_mode">Mode TV</string>
|
||||||
<string name="use_docked_mode_description">Augmenter la résolution, ce qui diminue les performances. Le mode portable est utilisé lorsque la fonction est désactivée, ce qui réduit la résolution et améliore les performances.</string>
|
<string name="use_docked_mode_description">Augmenter la résolution, ce qui diminue les performances. Le mode portable est utilisé lorsque la fonction est désactivée, ce qui réduit la résolution et améliore les performances.</string>
|
||||||
<string name="emulated_region">Région émulée</string>
|
<string name="emulated_region">Région émulée</string>
|
||||||
|
@ -226,8 +220,6 @@
|
||||||
<string name="renderer_screen_layout">Orientation</string>
|
<string name="renderer_screen_layout">Orientation</string>
|
||||||
<string name="renderer_aspect_ratio">Format</string>
|
<string name="renderer_aspect_ratio">Format</string>
|
||||||
<string name="renderer_scaling_filter">Filtre de fenêtre adaptatif</string>
|
<string name="renderer_scaling_filter">Filtre de fenêtre adaptatif</string>
|
||||||
<string name="fsr_sharpness">Netteté FSR</string>
|
|
||||||
<string name="fsr_sharpness_description">Détermine à quel point l\'image sera affinée lors de l\'utilisation du contraste dynamique FSR.</string>
|
|
||||||
<string name="renderer_anti_aliasing">Méthode d\'anticrénelage</string>
|
<string name="renderer_anti_aliasing">Méthode d\'anticrénelage</string>
|
||||||
<string name="renderer_force_max_clock">Forcer les fréquences maximales (Adreno uniquement)</string>
|
<string name="renderer_force_max_clock">Forcer les fréquences maximales (Adreno uniquement)</string>
|
||||||
<string name="renderer_force_max_clock_description">Forcer le GPU à fonctionner à ses fréquences maximales possibles (les contraintes thermiques seront toujours appliquées).</string>
|
<string name="renderer_force_max_clock_description">Forcer le GPU à fonctionner à ses fréquences maximales possibles (les contraintes thermiques seront toujours appliquées).</string>
|
||||||
|
@ -255,92 +247,6 @@
|
||||||
<string name="audio_volume">Volume</string>
|
<string name="audio_volume">Volume</string>
|
||||||
<string name="audio_volume_description">Spécifier le volume de la sortie audio.</string>
|
<string name="audio_volume_description">Spécifier le volume de la sortie audio.</string>
|
||||||
|
|
||||||
<!-- Input strings -->
|
|
||||||
<string name="buttons">Boutons</string>
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">B</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">Plus</string>
|
|
||||||
<string name="button_minus">Moins</string>
|
|
||||||
<string name="button_home">Home</string>
|
|
||||||
<string name="button_capture">Capture</string>
|
|
||||||
<string name="start_pause">Start/Pause</string>
|
|
||||||
<string name="dpad">Pavé directionnel</string>
|
|
||||||
<string name="up">Haut</string>
|
|
||||||
<string name="down">Bas</string>
|
|
||||||
<string name="left">Gauche</string>
|
|
||||||
<string name="right">Droite</string>
|
|
||||||
<string name="left_stick">Stick gauche</string>
|
|
||||||
<string name="control_stick">Stick de contrôle </string>
|
|
||||||
<string name="right_stick">Stick droit</string>
|
|
||||||
<string name="c_stick">C-Stick</string>
|
|
||||||
<string name="pressed">Appuyé</string>
|
|
||||||
<string name="range">Portée</string>
|
|
||||||
<string name="deadzone">Zone morte</string>
|
|
||||||
<string name="modifier">Modificateur</string>
|
|
||||||
<string name="modifier_range">Modifier la plage</string>
|
|
||||||
<string name="triggers">Gachettes</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_sl_left">SL gauche</string>
|
|
||||||
<string name="button_sr_left">SR gauche</string>
|
|
||||||
<string name="button_sl_right">SL droit</string>
|
|
||||||
<string name="button_sr_right">SR droit</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">Invalide</string>
|
|
||||||
<string name="not_set">Non défini</string>
|
|
||||||
<string name="unknown">Inconnu</string>
|
|
||||||
<string name="qualified_hat">%1$s%2$s%3$sChapeau %4$s</string>
|
|
||||||
<string name="qualified_button_stick_axis">%1$s%2$s%3$sAxe %4$s</string>
|
|
||||||
<string name="qualified_button">%1$s%2$s%3$sBouton %4$s</string>
|
|
||||||
<string name="qualified_axis">Axe %1$s%2$s</string>
|
|
||||||
<string name="unused">Inutilisé</string>
|
|
||||||
<string name="input_prompt">Déplacez ou appuyez sur une entrée</string>
|
|
||||||
<string name="unsupported_input">Type d\'entrée non pris en charge</string>
|
|
||||||
<string name="input_mapping_filter">Filtre de mappage d\'entrée</string>
|
|
||||||
<string name="input_mapping_filter_description">Sélectionnez un appareil pour filtrer les entrées de mappage</string>
|
|
||||||
<string name="auto_map">Mapper automatiquement une manette</string>
|
|
||||||
<string name="auto_map_description">Sélectionnez un périphérique pour tenter le mappage automatique</string>
|
|
||||||
<string name="attempted_auto_map">Tentative de mappage automatique avec %1$s</string>
|
|
||||||
<string name="controller_type">Type de manette</string>
|
|
||||||
<string name="pro_controller">Manette Switch Pro</string>
|
|
||||||
<string name="handheld">Mode Portable</string>
|
|
||||||
<string name="dual_joycons">Deux Joycons</string>
|
|
||||||
<string name="left_joycon">Joycon gauche</string>
|
|
||||||
<string name="right_joycon">Joycon droit</string>
|
|
||||||
<string name="gamecube_controller">Manette GameCube</string>
|
|
||||||
<string name="invert_axis">Inverser l\'axe</string>
|
|
||||||
<string name="invert_button">Inverser les boutons</string>
|
|
||||||
<string name="toggle_button">Bouton d\'activation</string>
|
|
||||||
<string name="turbo_button">Bouton Turbo</string>
|
|
||||||
<string name="set_threshold">Définir le seuil</string>
|
|
||||||
<string name="toggle_axis">Basculer les axes</string>
|
|
||||||
<string name="connected">Connecté</string>
|
|
||||||
<string name="use_system_vibrator">Utiliser le vibreur du système</string>
|
|
||||||
<string name="input_overlay">Superposition d\'entrée</string>
|
|
||||||
<string name="vibration">Vibration</string>
|
|
||||||
<string name="vibration_strength">Intensité de la vibration</string>
|
|
||||||
<string name="profile">Profil</string>
|
|
||||||
<string name="create_new_profile">Créer un nouveau profil</string>
|
|
||||||
<string name="enter_profile_name">Entrez le nom du profil</string>
|
|
||||||
<string name="profile_name_already_exists">Le nom du profil existe déjà</string>
|
|
||||||
<string name="invalid_profile_name">Nom de profil invalide</string>
|
|
||||||
<string name="use_global_input_configuration">Utiliser la configuration d\'entrée globale</string>
|
|
||||||
<string name="player_num_profile">Profil du joueur %d</string>
|
|
||||||
<string name="delete_input_profile">Supprimer le profil d\'entrée</string>
|
|
||||||
<string name="delete_input_profile_description">Êtes-vous sûr de vouloir supprimer ce profil ? Cette action est irréversible.</string>
|
|
||||||
<string name="stick_map_description">Déplacez un stick vers la gauche puis vers le haut ou appuyez sur un bouton.</string>
|
|
||||||
<string name="button_map_description">Appuyez sur un bouton ou une gachette/stick</string>
|
|
||||||
<string name="map_dpad_direction">Mapper avec la croix directionnelle %1$s</string>
|
|
||||||
<string name="map_control">Mapper avec le %1$s</string>
|
|
||||||
<string name="failed_to_load_profile">Échec du chargement du profil</string>
|
|
||||||
<string name="failed_to_save_profile">Échec de l\'enregistrement du profil</string>
|
|
||||||
<string name="reset_mapping">Réinitialiser les mappages</string>
|
|
||||||
<string name="reset_mapping_description">Êtes-vous sûr de vouloir réinitialiser tous les mappages de cette manette aux paramètres par défaut ? Cette action ne peut pas être annulée.</string>
|
|
||||||
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">Par défaut</string>
|
<string name="slider_default">Par défaut</string>
|
||||||
<string name="ini_saved">Paramètres enregistrés</string>
|
<string name="ini_saved">Paramètres enregistrés</string>
|
||||||
|
@ -375,14 +281,6 @@
|
||||||
<string name="custom">Personnalisé</string>
|
<string name="custom">Personnalisé</string>
|
||||||
<string name="notice">Avis</string>
|
<string name="notice">Avis</string>
|
||||||
<string name="import_complete">Importation terminée</string>
|
<string name="import_complete">Importation terminée</string>
|
||||||
<string name="more_options">Plus d\'options</string>
|
|
||||||
<string name="use_global_setting">Utilisez les paramètres globaux</string>
|
|
||||||
<string name="operation_completed_successfully">L\'opération s\'est déroulée avec succès</string>
|
|
||||||
<string name="retry">Réessayer</string>
|
|
||||||
<string name="confirm">Confirmer</string>
|
|
||||||
<string name="load">Charger</string>
|
|
||||||
<string name="save">Enregistrer</string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
<string name="select_gpu_driver">Sélectionner le pilote du GPU</string>
|
<string name="select_gpu_driver">Sélectionner le pilote du GPU</string>
|
||||||
<string name="select_gpu_driver_title">Souhaitez vous remplacer votre pilote actuel ?</string>
|
<string name="select_gpu_driver_title">Souhaitez vous remplacer votre pilote actuel ?</string>
|
||||||
|
@ -403,9 +301,6 @@
|
||||||
<string name="preferences_graphics_description">Niveau de précision, résolution, cache de shaders</string>
|
<string name="preferences_graphics_description">Niveau de précision, résolution, cache de shaders</string>
|
||||||
<string name="preferences_audio">Audio</string>
|
<string name="preferences_audio">Audio</string>
|
||||||
<string name="preferences_audio_description">Moteur de sortie, volume</string>
|
<string name="preferences_audio_description">Moteur de sortie, volume</string>
|
||||||
<string name="preferences_controls">Contrôles</string>
|
|
||||||
<string name="preferences_controls_description">Mapper l\'entrée du contrôleur</string>
|
|
||||||
<string name="preferences_player">Joueur %d</string>
|
|
||||||
<string name="preferences_theme">Thème et couleur</string>
|
<string name="preferences_theme">Thème et couleur</string>
|
||||||
<string name="preferences_debug">Débogage</string>
|
<string name="preferences_debug">Débogage</string>
|
||||||
<string name="preferences_debug_description">Débogage CPU/GPU, API graphique, fastmem</string>
|
<string name="preferences_debug_description">Débogage CPU/GPU, API graphique, fastmem</string>
|
||||||
|
@ -447,17 +342,6 @@
|
||||||
<string name="verifying_content">Vérification du contenu...</string>
|
<string name="verifying_content">Vérification du contenu...</string>
|
||||||
<string name="content_install_notice">Avis d\'installation du contenu</string>
|
<string name="content_install_notice">Avis d\'installation du contenu</string>
|
||||||
<string name="content_install_notice_description">Le contenu que vous avez sélectionné ne correspond pas à ce jeu.\nInstaller quand même ?</string>
|
<string name="content_install_notice_description">Le contenu que vous avez sélectionné ne correspond pas à ce jeu.\nInstaller quand même ?</string>
|
||||||
<string name="confirm_uninstall">Confirmer la désinstallation</string>
|
|
||||||
<string name="confirm_uninstall_description">Êtes-vous sûr de vouloir désinstaller cette extension ?</string>
|
|
||||||
<string name="verify_integrity">Vérifier l\'intégrité</string>
|
|
||||||
<string name="verifying">Vérification...</string>
|
|
||||||
<string name="verify_success">La vérification de l\'intégrité a réussi !</string>
|
|
||||||
<string name="verify_failure">La vérification de l\'intégrité a échoué !</string>
|
|
||||||
<string name="verify_failure_description">Le contenu d\'un fichier peut être corrompu</string>
|
|
||||||
<string name="verify_no_result">La vérification de l\'intégrité n\'a pas pu être effectuée</string>
|
|
||||||
<string name="verify_no_result_description">La validité du contenu du fichier n\'a pas été vérifiée</string>
|
|
||||||
<string name="verification_failed_for">La vérification a échoué pour les fichiers suivants :\n%1$s</string>
|
|
||||||
|
|
||||||
<!-- ROM loading errors -->
|
<!-- ROM loading errors -->
|
||||||
<string name="loader_error_encrypted">Votre ROM est cryptée</string>
|
<string name="loader_error_encrypted">Votre ROM est cryptée</string>
|
||||||
<string name="loader_error_encrypted_roms_description"><![CDATA[Veuillez suivre les guides pour refaire un dump de vos <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartouches de jeu</a> ou de vos <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">titres installés</a>.]]></string>
|
<string name="loader_error_encrypted_roms_description"><![CDATA[Veuillez suivre les guides pour refaire un dump de vos <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartouches de jeu</a> ou de vos <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">titres installés</a>.]]></string>
|
||||||
|
@ -471,7 +355,6 @@
|
||||||
<string name="emulation_exit">Quitter l\'émulation</string>
|
<string name="emulation_exit">Quitter l\'émulation</string>
|
||||||
<string name="emulation_done">Terminé</string>
|
<string name="emulation_done">Terminé</string>
|
||||||
<string name="emulation_fps_counter">Compteur FPS</string>
|
<string name="emulation_fps_counter">Compteur FPS</string>
|
||||||
<string name="emulation_thermal_indicator">Indicateur thermique</string>
|
|
||||||
<string name="emulation_toggle_controls">Activer/Désactiver les contrôles</string>
|
<string name="emulation_toggle_controls">Activer/Désactiver les contrôles</string>
|
||||||
<string name="emulation_rel_stick_center">Centre du stick relatif</string>
|
<string name="emulation_rel_stick_center">Centre du stick relatif</string>
|
||||||
<string name="emulation_dpad_slide">Glissement du D-pad</string>
|
<string name="emulation_dpad_slide">Glissement du D-pad</string>
|
||||||
|
@ -487,8 +370,6 @@
|
||||||
<string name="emulation_unpause">Reprendre l\'émulation</string>
|
<string name="emulation_unpause">Reprendre l\'émulation</string>
|
||||||
<string name="emulation_input_overlay">Options de l\'overlay</string>
|
<string name="emulation_input_overlay">Options de l\'overlay</string>
|
||||||
<string name="touchscreen">Écran tactile</string>
|
<string name="touchscreen">Écran tactile</string>
|
||||||
<string name="lock_drawer">Verrouiller le tiroir</string>
|
|
||||||
<string name="unlock_drawer">Déverrouiller le tiroir</string>
|
|
||||||
|
|
||||||
<string name="load_settings">Chargement des paramètres…</string>
|
<string name="load_settings">Chargement des paramètres…</string>
|
||||||
|
|
||||||
|
@ -633,12 +514,6 @@
|
||||||
<string name="mute">Couper le son</string>
|
<string name="mute">Couper le son</string>
|
||||||
<string name="unmute">Remettre le son</string>
|
<string name="unmute">Remettre le son</string>
|
||||||
|
|
||||||
<!-- Emulation vertical alignment -->
|
|
||||||
<string name="vertical_alignment">Alignement vertical</string>
|
|
||||||
<string name="top">Haut</string>
|
|
||||||
<string name="center">Centre</string>
|
|
||||||
<string name="bottom">Bas</string>
|
|
||||||
|
|
||||||
<!-- Licenses screen strings -->
|
<!-- Licenses screen strings -->
|
||||||
<string name="licenses">Licences</string>
|
<string name="licenses">Licences</string>
|
||||||
<string name="license_fidelityfx_fsr_description">Mise à l\'échelle de haute qualité par AMD.</string>
|
<string name="license_fidelityfx_fsr_description">Mise à l\'échelle de haute qualité par AMD.</string>
|
||||||
|
|
|
@ -84,10 +84,7 @@
|
||||||
<string name="notification_no_directory_link_description">בבקשה מקם את תיקיית המשתמש בפנל הצידי של מנהל הקבצים באופן ידני.</string>
|
<string name="notification_no_directory_link_description">בבקשה מקם את תיקיית המשתמש בפנל הצידי של מנהל הקבצים באופן ידני.</string>
|
||||||
<string name="manage_save_data">נהל מידע שמור</string>
|
<string name="manage_save_data">נהל מידע שמור</string>
|
||||||
<string name="manage_save_data_description">מידע שמור לא נמצא. בבקשה בחר/י אופציה מלמטה</string>
|
<string name="manage_save_data_description">מידע שמור לא נמצא. בבקשה בחר/י אופציה מלמטה</string>
|
||||||
<string name="import_save_warning">ייבוא נתוני שמירה</string>
|
|
||||||
<string name="import_save_warning_description">פעולה זו תמחק את כל הנתונים הקיימים ותחליף אותם בקובץ שסופק.האם אתה בטוח שברצונך להמשיך?</string>
|
|
||||||
<string name="import_export_saves_description">יבא או יצא קבצי שמירה</string>
|
<string name="import_export_saves_description">יבא או יצא קבצי שמירה</string>
|
||||||
<string name="save_files_importing">מייבא קבצי שמירה...</string>
|
|
||||||
<string name="save_files_exporting">מייצא קבצי שמירה...</string>
|
<string name="save_files_exporting">מייצא קבצי שמירה...</string>
|
||||||
<string name="save_file_imported_success">יובא בהצלחה</string>
|
<string name="save_file_imported_success">יובא בהצלחה</string>
|
||||||
<string name="save_file_invalid_zip_structure">מבנה ספריית השמירות לא חוקי</string>
|
<string name="save_file_invalid_zip_structure">מבנה ספריית השמירות לא חוקי</string>
|
||||||
|
@ -126,8 +123,6 @@
|
||||||
<string name="add_game_folder">הוסף תיקיית משחקים</string>
|
<string name="add_game_folder">הוסף תיקיית משחקים</string>
|
||||||
<string name="folder_already_added">התיקייה הזו נוספה כבר!</string>
|
<string name="folder_already_added">התיקייה הזו נוספה כבר!</string>
|
||||||
<string name="game_folder_properties">מאפייני תיקיית משחקים</string>
|
<string name="game_folder_properties">מאפייני תיקיית משחקים</string>
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<!-- Applet launcher strings -->
|
<!-- Applet launcher strings -->
|
||||||
<string name="applets">משגר Applet</string>
|
<string name="applets">משגר Applet</string>
|
||||||
<string name="applets_description">מערכת שיגור Applet משתמשת בתוכנה המותקנת</string>
|
<string name="applets_description">מערכת שיגור Applet משתמשת בתוכנה המותקנת</string>
|
||||||
|
@ -192,6 +187,7 @@
|
||||||
<string name="cpu_accuracy">דיוק המעבד</string>
|
<string name="cpu_accuracy">דיוק המעבד</string>
|
||||||
<string name="value_with_units">%1$s%2$s</string>
|
<string name="value_with_units">%1$s%2$s</string>
|
||||||
|
|
||||||
|
<!-- System settings strings -->
|
||||||
<string name="use_docked_mode">מצב עגינה</string>
|
<string name="use_docked_mode">מצב עגינה</string>
|
||||||
<string name="use_docked_mode_description">מעלה את הרזולוציה, פוגע בביצועים. משתמש במצב נייד כאשר מנוטרל, מפחית את הרזולוציה ומעלה את הביצועים.</string>
|
<string name="use_docked_mode_description">מעלה את הרזולוציה, פוגע בביצועים. משתמש במצב נייד כאשר מנוטרל, מפחית את הרזולוציה ומעלה את הביצועים.</string>
|
||||||
<string name="emulated_region">אזור אמולציה</string>
|
<string name="emulated_region">אזור אמולציה</string>
|
||||||
|
@ -233,33 +229,6 @@
|
||||||
<string name="audio_volume">עוצמת שמע</string>
|
<string name="audio_volume">עוצמת שמע</string>
|
||||||
<string name="audio_volume_description">מציין את עוצמת האודיו שיוצא.</string>
|
<string name="audio_volume_description">מציין את עוצמת האודיו שיוצא.</string>
|
||||||
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">B</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">פלוס</string>
|
|
||||||
<string name="button_minus">מינוס</string>
|
|
||||||
<string name="button_home">בית</string>
|
|
||||||
<string name="up">למעלה</string>
|
|
||||||
<string name="down">למטה</string>
|
|
||||||
<string name="left">שמאל</string>
|
|
||||||
<string name="right">ימין</string>
|
|
||||||
<string name="left_stick">ג׳ויסטיק שמאלי</string>
|
|
||||||
<string name="right_stick">ג׳ויסטיק ימני</string>
|
|
||||||
<string name="pressed">לחוץ</string>
|
|
||||||
<string name="range">טווח</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">לא חוקי</string>
|
|
||||||
<string name="unknown">לא ידוע</string>
|
|
||||||
<string name="handheld">מצב נייד</string>
|
|
||||||
<string name="connected">מחובר</string>
|
|
||||||
<string name="vibration">רטט</string>
|
|
||||||
<string name="profile">פרופיל</string>
|
|
||||||
<string name="use_global_input_configuration">השתמש בהגדרת קלט גלובלי</string>
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">ברירת מחדל</string>
|
<string name="slider_default">ברירת מחדל</string>
|
||||||
<string name="ini_saved">הגדרות שמורות</string>
|
<string name="ini_saved">הגדרות שמורות</string>
|
||||||
|
@ -290,8 +259,6 @@
|
||||||
<string name="export_success">יוצא בהצלחה</string>
|
<string name="export_success">יוצא בהצלחה</string>
|
||||||
<string name="start">התחלה</string>
|
<string name="start">התחלה</string>
|
||||||
<string name="clear">נקה</string>
|
<string name="clear">נקה</string>
|
||||||
<string name="save">שמור</string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
<string name="select_gpu_driver">בחר דרייבר למעבד הגרפי</string>
|
<string name="select_gpu_driver">בחר דרייבר למעבד הגרפי</string>
|
||||||
<string name="select_gpu_driver_title">אתה מעוניין להחליף את הדרייבר של המעבד הגרפי שלך?</string>
|
<string name="select_gpu_driver_title">אתה מעוניין להחליף את הדרייבר של המעבד הגרפי שלך?</string>
|
||||||
|
@ -322,7 +289,6 @@
|
||||||
<string name="developer">מפתח</string>
|
<string name="developer">מפתח</string>
|
||||||
<string name="version">גרסה</string>
|
<string name="version">גרסה</string>
|
||||||
<string name="add_ons">תוספים</string>
|
<string name="add_ons">תוספים</string>
|
||||||
<string name="verify_success">אימות התקינות הצליח!</string>
|
|
||||||
<!-- ROM loading errors -->
|
<!-- ROM loading errors -->
|
||||||
<string name="loader_error_encrypted">המשחק שלך מוצפן</string>
|
<string name="loader_error_encrypted">המשחק שלך מוצפן</string>
|
||||||
<string name="loader_error_encrypted_roms_description"><![CDATA[אנא עקוב אחרי המדריכים כדי לבצע redump של <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">כרטיסי המשחק</a>או <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">הכותרות המותקנות</a> שלך.]]></string>
|
<string name="loader_error_encrypted_roms_description"><![CDATA[אנא עקוב אחרי המדריכים כדי לבצע redump של <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">כרטיסי המשחק</a>או <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">הכותרות המותקנות</a> שלך.]]></string>
|
||||||
|
@ -351,6 +317,7 @@
|
||||||
<string name="emulation_unpause">המשך אמולציה</string>
|
<string name="emulation_unpause">המשך אמולציה</string>
|
||||||
<string name="emulation_input_overlay">אופציות עבור שכבת-על</string>
|
<string name="emulation_input_overlay">אופציות עבור שכבת-על</string>
|
||||||
<string name="touchscreen">מסך מגע</string>
|
<string name="touchscreen">מסך מגע</string>
|
||||||
|
|
||||||
<string name="load_settings">טוען הגדרות...</string>
|
<string name="load_settings">טוען הגדרות...</string>
|
||||||
|
|
||||||
<!-- Software keyboard -->
|
<!-- Software keyboard -->
|
||||||
|
|
|
@ -11,10 +11,11 @@
|
||||||
<string name="welcome_description">Ismerkedj meg a <b>yuzu</b> beállításával és ugorj bele az emulációba.</string>
|
<string name="welcome_description">Ismerkedj meg a <b>yuzu</b> beállításával és ugorj bele az emulációba.</string>
|
||||||
<string name="get_started">Vágjunk bele</string>
|
<string name="get_started">Vágjunk bele</string>
|
||||||
<string name="keys">Kulcsok</string>
|
<string name="keys">Kulcsok</string>
|
||||||
<string name="keys_description">Válaszd ki a <b>prod.keys</b> fájlodat az alábbi gombbal.</string>
|
<string name="keys_description">Válaszd ki a(z) <b>prod.keys</b> fájlodat az alábbi gombbal.</string>
|
||||||
<string name="select_keys">Kulcsok kiválasztása</string>
|
<string name="select_keys">Kulcsok kiválasztása</string>
|
||||||
<string name="games">Játékok</string>
|
<string name="games">Játékok</string>
|
||||||
<string name="games_description">Válaszd ki a <b>Játékok</b> mappát az alábbi gombbal.</string>
|
<string name="games_description">
|
||||||
|
Válaszd ki a(z) <b>Games</b> mappát az alábbi gombbal.</string>
|
||||||
<string name="done">Kész</string>
|
<string name="done">Kész</string>
|
||||||
<string name="done_description">Minden kész.\nJó szórakozást!</string>
|
<string name="done_description">Minden kész.\nJó szórakozást!</string>
|
||||||
<string name="text_continue">Folytatás</string>
|
<string name="text_continue">Folytatás</string>
|
||||||
|
@ -47,10 +48,10 @@
|
||||||
<string name="notifications_description">Értesítési engedélyek megadása az alábbi gombbal.</string>
|
<string name="notifications_description">Értesítési engedélyek megadása az alábbi gombbal.</string>
|
||||||
<string name="give_permission">Engedély megadása</string>
|
<string name="give_permission">Engedély megadása</string>
|
||||||
<string name="notification_warning">Kihagyod az értesítési engedély megadását?</string>
|
<string name="notification_warning">Kihagyod az értesítési engedély megadását?</string>
|
||||||
<string name="notification_warning_description">yuzu nem fog tudni értesíteni a fontos információkról</string>
|
<string name="notification_warning_description">yuzu nem fog tudni értesíteni a fontos imformációkról</string>
|
||||||
<string name="permission_denied">Engedély megtagadva</string>
|
<string name="permission_denied">Engedély megtagadva</string>
|
||||||
<string name="permission_denied_description">Túl gyakran utasítottad el a hozzáférést, így manuálisan kell jóváhagynod a rendszer beállításokban.</string>
|
<string name="permission_denied_description">Túl gyakran utasítottad el a hozzáférést, így manuálisan kell jóváhagynod a rendszer beállításokban.</string>
|
||||||
<string name="about">Névjegy</string>
|
<string name="about">A programról</string>
|
||||||
<string name="about_description">Build verzió, készítők, és még több</string>
|
<string name="about_description">Build verzió, készítők, és még több</string>
|
||||||
<string name="warning_help">Segítség</string>
|
<string name="warning_help">Segítség</string>
|
||||||
<string name="warning_skip">Kihagyás</string>
|
<string name="warning_skip">Kihagyás</string>
|
||||||
|
@ -133,11 +134,6 @@
|
||||||
<item quantity="other">%dmentés sikeresen importálva</item>
|
<item quantity="other">%dmentés sikeresen importálva</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<string name="no_save_data_found">Nem található mentett adat</string>
|
<string name="no_save_data_found">Nem található mentett adat</string>
|
||||||
<string name="verify_installed_content">Telepített tartalom ellenőrzése</string>
|
|
||||||
<string name="verify_installed_content_description">A telepített tartalom épségét ellenőrzi</string>
|
|
||||||
<string name="keys_missing">Hiányzó titkosítókulcsok</string>
|
|
||||||
<string name="keys_missing_description">A Firmware és a kiskereskedelmi (retail) játékok nem dekódolhatók</string>
|
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<!-- Applet launcher strings -->
|
<!-- Applet launcher strings -->
|
||||||
<string name="applets">Applet indító</string>
|
<string name="applets">Applet indító</string>
|
||||||
|
@ -195,14 +191,13 @@
|
||||||
<!-- General settings strings -->
|
<!-- General settings strings -->
|
||||||
<string name="frame_limit_enable">Sebességkorlát</string>
|
<string name="frame_limit_enable">Sebességkorlát</string>
|
||||||
<string name="frame_limit_enable_description">Korlátozza az emuláció sebességét a normál sebesség adott százalékára.</string>
|
<string name="frame_limit_enable_description">Korlátozza az emuláció sebességét a normál sebesség adott százalékára.</string>
|
||||||
<string name="frame_limit_slider">Sebesség korlátozása</string>
|
<string name="frame_limit_slider">Sebességkorlát százaléka</string>
|
||||||
<string name="frame_limit_slider_description">Az emuláció sebességét határozza meg. 100% a normál sebesség. A magasabb értékek növelik, az alacsonyabbak csökkentik a sebességkorlátot.</string>
|
<string name="frame_limit_slider_description">Az emuláció sebességét határozza meg. 100% a normál sebesség. A magasabb értékek növelik, az alacsonyabbak csökkentik a sebességkorlátot.</string>
|
||||||
<string name="cpu_backend">CPU backend</string>
|
<string name="cpu_backend">CPU backend</string>
|
||||||
<string name="cpu_accuracy">CPU pontosság</string>
|
<string name="cpu_accuracy">CPU pontosság</string>
|
||||||
<string name="value_with_units">%1$s%2$s</string>
|
<string name="value_with_units">%1$s%2$s</string>
|
||||||
|
|
||||||
<!-- System settings strings -->
|
<!-- System settings strings -->
|
||||||
<string name="device_name">Eszköznév</string>
|
|
||||||
<string name="use_docked_mode">Dokkolt mód</string>
|
<string name="use_docked_mode">Dokkolt mód</string>
|
||||||
<string name="use_docked_mode_description">Növeli a felbontást, de csökkenti a teljesítményt. Kikapcsolás esetén a Kézi mód van használatban, ami kisebb felbontást, de nagyobb teljesítményt eredményez.</string>
|
<string name="use_docked_mode_description">Növeli a felbontást, de csökkenti a teljesítményt. Kikapcsolás esetén a Kézi mód van használatban, ami kisebb felbontást, de nagyobb teljesítményt eredményez.</string>
|
||||||
<string name="emulated_region">Emulált régió</string>
|
<string name="emulated_region">Emulált régió</string>
|
||||||
|
@ -220,8 +215,6 @@
|
||||||
<string name="renderer_screen_layout">Orientáció</string>
|
<string name="renderer_screen_layout">Orientáció</string>
|
||||||
<string name="renderer_aspect_ratio">Képarány</string>
|
<string name="renderer_aspect_ratio">Képarány</string>
|
||||||
<string name="renderer_scaling_filter">Ablakhoz alkalmazkodó szűrő</string>
|
<string name="renderer_scaling_filter">Ablakhoz alkalmazkodó szűrő</string>
|
||||||
<string name="fsr_sharpness">FSR élesség</string>
|
|
||||||
<string name="fsr_sharpness_description">Meghatározza, milyen éles lesz a kép az FSR dinamikus kontraszt használata közben.</string>
|
|
||||||
<string name="renderer_anti_aliasing">Élsimítási módszer</string>
|
<string name="renderer_anti_aliasing">Élsimítási módszer</string>
|
||||||
<string name="renderer_force_max_clock">Maximum órajel kényszerítése (csak Adreno)</string>
|
<string name="renderer_force_max_clock">Maximum órajel kényszerítése (csak Adreno)</string>
|
||||||
<string name="renderer_force_max_clock_description">Kényszeríti a GPU-t a lehető legnagyobb órajelen működésre (a hőmérséklet korlátozások továbbra is érvényben maradnak).</string>
|
<string name="renderer_force_max_clock_description">Kényszeríti a GPU-t a lehető legnagyobb órajelen működésre (a hőmérséklet korlátozások továbbra is érvényben maradnak).</string>
|
||||||
|
@ -232,8 +225,6 @@
|
||||||
<string name="use_disk_shader_cache">Lemez árnyékoló gyorsítótár</string>
|
<string name="use_disk_shader_cache">Lemez árnyékoló gyorsítótár</string>
|
||||||
<string name="use_disk_shader_cache_description">Csökkenti az akadásokat azáltal, hogy helyileg tárolja és tölti be a generált árnyékolókat.</string>
|
<string name="use_disk_shader_cache_description">Csökkenti az akadásokat azáltal, hogy helyileg tárolja és tölti be a generált árnyékolókat.</string>
|
||||||
<string name="anisotropic_filtering">Anizotropikus szűrés</string>
|
<string name="anisotropic_filtering">Anizotropikus szűrés</string>
|
||||||
<string name="anisotropic_filtering_description">Javítja a ferdén megjelenő textúrák minőségét</string>
|
|
||||||
|
|
||||||
<!-- Debug settings strings -->
|
<!-- Debug settings strings -->
|
||||||
<string name="cpu">CPU</string>
|
<string name="cpu">CPU</string>
|
||||||
<string name="cpu_debug_mode">CPU hibakeresés</string>
|
<string name="cpu_debug_mode">CPU hibakeresés</string>
|
||||||
|
@ -247,89 +238,6 @@
|
||||||
<string name="audio_volume">Hangerő</string>
|
<string name="audio_volume">Hangerő</string>
|
||||||
<string name="audio_volume_description">Hangkimenet hangerejének megadása</string>
|
<string name="audio_volume_description">Hangkimenet hangerejének megadása</string>
|
||||||
|
|
||||||
<!-- Input strings -->
|
|
||||||
<string name="buttons">Gombok</string>
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">B</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">Plusz</string>
|
|
||||||
<string name="button_minus">Mínusz</string>
|
|
||||||
<string name="button_home">Home</string>
|
|
||||||
<string name="button_capture">Rögzítés</string>
|
|
||||||
<string name="start_pause">Indítás/Szünet</string>
|
|
||||||
<string name="dpad">D-Pad</string>
|
|
||||||
<string name="up">Fel</string>
|
|
||||||
<string name="down">Le</string>
|
|
||||||
<string name="left">Balra</string>
|
|
||||||
<string name="right">Jobbra</string>
|
|
||||||
<string name="left_stick">Bal kar</string>
|
|
||||||
<string name="right_stick">Jobb kar</string>
|
|
||||||
<string name="pressed">Lenyomva</string>
|
|
||||||
<string name="range">Tartomány</string>
|
|
||||||
<string name="deadzone">Holttér</string>
|
|
||||||
<string name="modifier">Módosító</string>
|
|
||||||
<string name="modifier_range">Módosító tartomány</string>
|
|
||||||
<string name="triggers">Ravaszok</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_sl_left">Bal SL</string>
|
|
||||||
<string name="button_sr_left">Bal SR</string>
|
|
||||||
<string name="button_sl_right">Jobb SL</string>
|
|
||||||
<string name="button_sr_right">Jobb SR</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">Érvénytelen</string>
|
|
||||||
<string name="not_set">Nincs beállítva</string>
|
|
||||||
<string name="unknown">Ismeretlen</string>
|
|
||||||
<string name="qualified_button_stick_axis">%1$s%2$s%3$sTengely %4$s</string>
|
|
||||||
<string name="qualified_button">%1$s%2$s%3$sGomb %4$s</string>
|
|
||||||
<string name="qualified_axis">Tengely %1$s%2$s</string>
|
|
||||||
<string name="unused">Nem használt</string>
|
|
||||||
<string name="input_prompt">Nyomj vagy mozgass meg egy bemeneti eszközt.</string>
|
|
||||||
<string name="unsupported_input">Nem támogatott bemenet típus</string>
|
|
||||||
<string name="input_mapping_filter">Bemeneti hozzárendelési szűrő</string>
|
|
||||||
<string name="input_mapping_filter_description">Válassz egy eszközt a hozzárendelési bemenetek szűréséhez</string>
|
|
||||||
<string name="auto_map">Kontroller auto-hozzárendelés</string>
|
|
||||||
<string name="auto_map_description">Válassz egy eszközt, amihez auto-hozzárendelést szeretnél</string>
|
|
||||||
<string name="attempted_auto_map">Auto-hozzárendelés megkísérelve: %1$s</string>
|
|
||||||
<string name="controller_type">Kontroller típusa</string>
|
|
||||||
<string name="pro_controller">Pro kontroller</string>
|
|
||||||
<string name="handheld">Kézi</string>
|
|
||||||
<string name="dual_joycons">Dual Joycon</string>
|
|
||||||
<string name="left_joycon">Bal Joycon</string>
|
|
||||||
<string name="right_joycon">Jobb Joycon</string>
|
|
||||||
<string name="gamecube_controller">GameCube kontroller</string>
|
|
||||||
<string name="invert_axis">Fordított tengely</string>
|
|
||||||
<string name="invert_button">Fordított gomb</string>
|
|
||||||
<string name="toggle_button">Gomb váltása</string>
|
|
||||||
<string name="turbo_button">Turbó gomb</string>
|
|
||||||
<string name="set_threshold">Küszöbérték beállítása</string>
|
|
||||||
<string name="toggle_axis">Tengely váltása</string>
|
|
||||||
<string name="connected">Csatlakozva</string>
|
|
||||||
<string name="use_system_vibrator">Rendszer rezgés használata</string>
|
|
||||||
<string name="input_overlay">Bemeneti átfedés</string>
|
|
||||||
<string name="vibration">Rezgés</string>
|
|
||||||
<string name="vibration_strength">Rezgés erőssége</string>
|
|
||||||
<string name="profile">Profil</string>
|
|
||||||
<string name="create_new_profile">Új profil létrehozása</string>
|
|
||||||
<string name="enter_profile_name">Add meg a profil nevét</string>
|
|
||||||
<string name="profile_name_already_exists">A profilnév már létezik</string>
|
|
||||||
<string name="invalid_profile_name">Érvénytelen profilnév</string>
|
|
||||||
<string name="use_global_input_configuration">Globális bemenet konfiguráció használata</string>
|
|
||||||
<string name="player_num_profile">Játékos %dprofilja </string>
|
|
||||||
<string name="delete_input_profile">Beviteli profil törlése</string>
|
|
||||||
<string name="delete_input_profile_description">Biztosan törölni szeretnéd ezt a profilt? Nem fogod tudni visszaállítani.</string>
|
|
||||||
<string name="stick_map_description">Mozgasd az egyik kart balra, majd fel, vagy nyomj egy gombot</string>
|
|
||||||
<string name="button_map_description">Nyomj egy gombot vagy mozgasd az egyik ravaszt/kart</string>
|
|
||||||
<string name="map_dpad_direction">Hozzárendelés %1$s D-pad-hez</string>
|
|
||||||
<string name="map_control">Hozzárendelés ehhez: %1$s</string>
|
|
||||||
<string name="failed_to_load_profile">Nem sikerült betölteni a profilt</string>
|
|
||||||
<string name="failed_to_save_profile">Nem sikerült menteni a profilt</string>
|
|
||||||
<string name="reset_mapping">Hozzárendelések visszaállítása</string>
|
|
||||||
<string name="reset_mapping_description">Biztosan alaphelyzetbe szeretnéd állítani az összes hozzárendelést ehhez a vezérlőhöz? Ez nem vonható vissza.</string>
|
|
||||||
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">Alapértelmezett</string>
|
<string name="slider_default">Alapértelmezett</string>
|
||||||
<string name="ini_saved">Beállítások elmentve</string>
|
<string name="ini_saved">Beállítások elmentve</string>
|
||||||
|
@ -366,11 +274,6 @@
|
||||||
<string name="import_complete">Importálás befejezve</string>
|
<string name="import_complete">Importálás befejezve</string>
|
||||||
<string name="more_options">További opciók</string>
|
<string name="more_options">További opciók</string>
|
||||||
<string name="use_global_setting">Globális beállítás használata</string>
|
<string name="use_global_setting">Globális beállítás használata</string>
|
||||||
<string name="operation_completed_successfully">A művelet sikeresen befejeződött</string>
|
|
||||||
<string name="retry">Újra</string>
|
|
||||||
<string name="confirm">Megerősítés</string>
|
|
||||||
<string name="load">Betöltés</string>
|
|
||||||
<string name="save">Mentés</string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
<string name="select_gpu_driver">Válassz GPU illesztőprogramot</string>
|
<string name="select_gpu_driver">Válassz GPU illesztőprogramot</string>
|
||||||
|
@ -392,8 +295,6 @@
|
||||||
<string name="preferences_graphics_description">Pontossági szint, felbontás, árnyékoló gyorsítótár</string>
|
<string name="preferences_graphics_description">Pontossági szint, felbontás, árnyékoló gyorsítótár</string>
|
||||||
<string name="preferences_audio">Hang</string>
|
<string name="preferences_audio">Hang</string>
|
||||||
<string name="preferences_audio_description">Kimeneti motor, hangerő</string>
|
<string name="preferences_audio_description">Kimeneti motor, hangerő</string>
|
||||||
<string name="preferences_controls">Irányítás</string>
|
|
||||||
<string name="preferences_player">Játékos %d</string>
|
|
||||||
<string name="preferences_theme">Téma és színek</string>
|
<string name="preferences_theme">Téma és színek</string>
|
||||||
<string name="preferences_debug">Hibakeresés</string>
|
<string name="preferences_debug">Hibakeresés</string>
|
||||||
<string name="preferences_debug_description">CPU/GPU hibakeresés, grafikus API, fastmem</string>
|
<string name="preferences_debug_description">CPU/GPU hibakeresés, grafikus API, fastmem</string>
|
||||||
|
@ -437,14 +338,6 @@
|
||||||
<string name="content_install_notice_description">A kiválasztott tartalom nem ehhez a játékhoz tartozik.\nÍgy is telepíted?</string>
|
<string name="content_install_notice_description">A kiválasztott tartalom nem ehhez a játékhoz tartozik.\nÍgy is telepíted?</string>
|
||||||
<string name="confirm_uninstall">Eltávolítás megerősítése</string>
|
<string name="confirm_uninstall">Eltávolítás megerősítése</string>
|
||||||
<string name="confirm_uninstall_description">Biztosan törölni szeretnéd ezt a kiegészítőt?</string>
|
<string name="confirm_uninstall_description">Biztosan törölni szeretnéd ezt a kiegészítőt?</string>
|
||||||
<string name="verify_integrity">Integritás ellenőrzése</string>
|
|
||||||
<string name="verifying">Ellenőrzés...</string>
|
|
||||||
<string name="verify_success">Integritás ellenőrzése sikeres!</string>
|
|
||||||
<string name="verify_failure">Az integritás ellenőrzése sikertelen!</string>
|
|
||||||
<string name="verify_failure_description">A fájl tartalma sérült lehet</string>
|
|
||||||
<string name="verify_no_result">Az integritás ellenőrzését nem lehetett elvégezni</string>
|
|
||||||
<string name="verify_no_result_description">A fájltartalom érvényessége nem lett ellenőrizve</string>
|
|
||||||
<string name="verification_failed_for">Az alábbi fájlok ellenőrzése sikertelen volt:\n%1$s</string>
|
|
||||||
|
|
||||||
<!-- ROM loading errors -->
|
<!-- ROM loading errors -->
|
||||||
<string name="loader_error_encrypted">ROM titkosítva</string>
|
<string name="loader_error_encrypted">ROM titkosítva</string>
|
||||||
|
@ -458,12 +351,11 @@
|
||||||
<string name="emulation_exit">Emuláció bezárása</string>
|
<string name="emulation_exit">Emuláció bezárása</string>
|
||||||
<string name="emulation_done">Kész</string>
|
<string name="emulation_done">Kész</string>
|
||||||
<string name="emulation_fps_counter">FPS számláló</string>
|
<string name="emulation_fps_counter">FPS számláló</string>
|
||||||
<string name="emulation_thermal_indicator">Hőmérséklet jelző</string>
|
|
||||||
<string name="emulation_toggle_controls">Irányítás átkapcsolása</string>
|
<string name="emulation_toggle_controls">Irányítás átkapcsolása</string>
|
||||||
<string name="emulation_dpad_slide">D-pad csúsztatása</string>
|
<string name="emulation_dpad_slide">D-pad csúsztatása</string>
|
||||||
<string name="emulation_haptics">Érintés haptikája</string>
|
<string name="emulation_haptics">Érintés haptikája</string>
|
||||||
<string name="emulation_show_overlay">Átfedés mutatása</string>
|
<string name="emulation_show_overlay">Átfedés mutatása</string>
|
||||||
<string name="emulation_toggle_all">Összes átkapcsolása</string>
|
<string name="emulation_toggle_all">Össze átkapcsolása</string>
|
||||||
<string name="emulation_control_adjust">Átfedés testreszabása</string>
|
<string name="emulation_control_adjust">Átfedés testreszabása</string>
|
||||||
<string name="emulation_control_scale">Skálázás</string>
|
<string name="emulation_control_scale">Skálázás</string>
|
||||||
<string name="emulation_control_opacity">Átlátszóság</string>
|
<string name="emulation_control_opacity">Átlátszóság</string>
|
||||||
|
@ -473,8 +365,6 @@
|
||||||
<string name="emulation_unpause">Emuláció folytatása</string>
|
<string name="emulation_unpause">Emuláció folytatása</string>
|
||||||
<string name="emulation_input_overlay">Átfedés beállításai</string>
|
<string name="emulation_input_overlay">Átfedés beállításai</string>
|
||||||
<string name="touchscreen">Érintőképernyő</string>
|
<string name="touchscreen">Érintőképernyő</string>
|
||||||
<string name="lock_drawer">Fiók bezárása</string>
|
|
||||||
<string name="unlock_drawer">Fiók kinyitása</string>
|
|
||||||
|
|
||||||
<string name="load_settings">Beállítások betöltése...</string>
|
<string name="load_settings">Beállítások betöltése...</string>
|
||||||
|
|
||||||
|
@ -533,9 +423,9 @@
|
||||||
|
|
||||||
<!-- Renderer VSync -->
|
<!-- Renderer VSync -->
|
||||||
<string name="renderer_vsync_immediate">Azonnali (Ki)</string>
|
<string name="renderer_vsync_immediate">Azonnali (Ki)</string>
|
||||||
<string name="renderer_vsync_mailbox">Mailbox</string>
|
<string name="renderer_vsync_mailbox">Postaláda</string>
|
||||||
<string name="renderer_vsync_fifo">FIFO (Be)</string>
|
<string name="renderer_vsync_fifo">FIFO (Be)</string>
|
||||||
<string name="renderer_vsync_fifo_relaxed">FIFO Relaxed</string>
|
<string name="renderer_vsync_fifo_relaxed">FIFO Relaxált</string>
|
||||||
|
|
||||||
<!-- Scaling Filters -->
|
<!-- Scaling Filters -->
|
||||||
<string name="scaling_filter_nearest_neighbor">Legközelebbi szomszéd</string>
|
<string name="scaling_filter_nearest_neighbor">Legközelebbi szomszéd</string>
|
||||||
|
@ -566,8 +456,6 @@
|
||||||
|
|
||||||
<!-- CPU Backend -->
|
<!-- CPU Backend -->
|
||||||
<string name="cpu_backend_dynarmic">Dinamikus (lassú)</string>
|
<string name="cpu_backend_dynarmic">Dinamikus (lassú)</string>
|
||||||
<string name="cpu_backend_nce">Natív kód végrehajtás (Native code execution (NCE))</string>
|
|
||||||
|
|
||||||
<!-- CPU Accuracy -->
|
<!-- CPU Accuracy -->
|
||||||
<string name="cpu_accuracy_accurate">Pontos</string>
|
<string name="cpu_accuracy_accurate">Pontos</string>
|
||||||
<string name="cpu_accuracy_unsafe">Nem biztonságos</string>
|
<string name="cpu_accuracy_unsafe">Nem biztonságos</string>
|
||||||
|
@ -615,12 +503,6 @@
|
||||||
<string name="mute">Némítás</string>
|
<string name="mute">Némítás</string>
|
||||||
<string name="unmute">Némítás feloldása</string>
|
<string name="unmute">Némítás feloldása</string>
|
||||||
|
|
||||||
<!-- Emulation vertical alignment -->
|
|
||||||
<string name="vertical_alignment">Függőleges elrendezés</string>
|
|
||||||
<string name="top">Felül</string>
|
|
||||||
<string name="center">Középen</string>
|
|
||||||
<string name="bottom">Alul</string>
|
|
||||||
|
|
||||||
<!-- Licenses screen strings -->
|
<!-- Licenses screen strings -->
|
||||||
<string name="licenses">Licenszek</string>
|
<string name="licenses">Licenszek</string>
|
||||||
<string name="license_fidelityfx_fsr_description">Magas minőségű felskálázás az AMD-től</string>
|
<string name="license_fidelityfx_fsr_description">Magas minőségű felskálázás az AMD-től</string>
|
||||||
|
|
|
@ -1,587 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
|
||||||
|
|
||||||
<string name="app_disclaimer">Perangkat lunak ini akan menjalankan game untuk konsol game Nintendo Switch. Tidak ada judul game atau kunci yang disertakan.<br /><br />Sebelum memulai, harap cari file <![CDATA[<b> prod.keys </b>]]> di penyimpanan perangkat anda. <br /><br /><![CDATA[<a href=\"https://yuzu-emu.org/help/quickstart\"> Selengkapnya </a>]]></string>
|
|
||||||
<string name="notice_notification_channel_name">Pemberitahuan dan error</string>
|
|
||||||
<string name="notice_notification_channel_description">Menampilkan pemberitahuan ketika terjadi kesalahan.</string>
|
|
||||||
<string name="notification_permission_not_granted">Izin notifikasi tidak diberikan!</string>
|
|
||||||
|
|
||||||
<!-- Setup strings -->
|
|
||||||
<string name="welcome">Selamat datang!</string>
|
|
||||||
<string name="welcome_description">Pelajari cara menyiapkan <b>yuzu</b> dan masuk ke dalam emulasi.</string>
|
|
||||||
<string name="get_started">Memulai</string>
|
|
||||||
<string name="keys">Kunci</string>
|
|
||||||
<string name="keys_description">Pilih file <b>prod.keys</b> Anda dengan tombol di bawah ini.</string>
|
|
||||||
<string name="select_keys">Pilih Kunci</string>
|
|
||||||
<string name="games">Permainan</string>
|
|
||||||
<string name="games_description">Pilih folder <b>Games</b> Anda dengan tombol di bawah ini.</string>
|
|
||||||
<string name="done">Selesai</string>
|
|
||||||
<string name="done_description">Anda sudah siap.\nNikmati permainan Anda!</string>
|
|
||||||
<string name="text_continue">Lanjut</string>
|
|
||||||
<string name="next">Berikutnya</string>
|
|
||||||
<string name="back">Kembali</string>
|
|
||||||
<string name="add_games">Tambahkan permainan</string>
|
|
||||||
<string name="add_games_description">Pilih folder game anda</string>
|
|
||||||
<string name="step_complete">Selesai!</string>
|
|
||||||
|
|
||||||
<!-- Home strings -->
|
|
||||||
<string name="home_games">Permainan</string>
|
|
||||||
<string name="home_search">Cari</string>
|
|
||||||
<string name="home_settings">Pengaturan</string>
|
|
||||||
<string name="empty_gamelist">Tidak ada file yang ditemukan atau belum ada direktori game yang dipilih.</string>
|
|
||||||
<string name="search_and_filter_games">Cari dan filter game</string>
|
|
||||||
<string name="select_games_folder">Pilih folder permainan</string>
|
|
||||||
<string name="manage_game_folders">Kelola folder game</string>
|
|
||||||
<string name="select_games_folder_description">Izinkan yuzu mengisi daftar game</string>
|
|
||||||
<string name="add_games_warning">Lewati pemilihan folder game?</string>
|
|
||||||
<string name="add_games_warning_description">Game tidak akan muncul di list jika tidak ada folder yang dipilih.</string>
|
|
||||||
<string name="add_games_warning_help">https://yuzu-emu.org/help/quickstart/#dumping-games</string>
|
|
||||||
<string name="home_search_games">Cari permainan</string>
|
|
||||||
<string name="search_settings">Cari pengaturan</string>
|
|
||||||
<string name="games_dir_selected">Direktori game sudah terpilih</string>
|
|
||||||
<string name="install_prod_keys">Install prod.keys</string>
|
|
||||||
<string name="install_prod_keys_description">Diperlukan untuk mendekripsi game retail</string>
|
|
||||||
<string name="install_prod_keys_warning">Lewati penginstalan keys?</string>
|
|
||||||
<string name="install_prod_keys_warning_description">Perlu keys yang valid untuk meng-emulate game retail. Hanya homebrew apps yang akan berfungsi jika kamu melanjutkan.</string>
|
|
||||||
<string name="install_prod_keys_warning_help">https://yuzu-emu.org/help/quickstart/#guide-introduction</string>
|
|
||||||
<string name="notifications">Notifikasi</string>
|
|
||||||
<string name="notifications_description">Berikan izin notifikasi dengan tombol di bawah ini.</string>
|
|
||||||
<string name="give_permission">Berikan izin</string>
|
|
||||||
<string name="notification_warning">Lewati pemberian izin notifikasi?</string>
|
|
||||||
<string name="notification_warning_description">yuzu tidak akan dapat memberi tahu Anda tentang informasi penting.</string>
|
|
||||||
<string name="permission_denied">Izin ditolak</string>
|
|
||||||
<string name="permission_denied_description">Kamu terlalu sering menolak izin ini dan sekarang anda harus memberikannya secara manual di pengaturan sistem.</string>
|
|
||||||
<string name="about">Tentang</string>
|
|
||||||
<string name="about_description">Versi build, kredit, dan lainnya</string>
|
|
||||||
<string name="warning_help">Bantuan</string>
|
|
||||||
<string name="warning_skip">Lewati</string>
|
|
||||||
<string name="warning_cancel">Batalkan</string>
|
|
||||||
<string name="install_amiibo_keys">Install Amiibo keys</string>
|
|
||||||
<string name="install_amiibo_keys_description">Diperlukan untuk menggunakan Amiibo di dalam game</string>
|
|
||||||
<string name="invalid_keys_file">Keys yang dipilih invalid</string>
|
|
||||||
<string name="install_keys_success">Keys berhasil diinstal</string>
|
|
||||||
<string name="reading_keys_failure">Error saat mengecek enkripsi keys</string>
|
|
||||||
<string name="install_prod_keys_failure_extension_description">Pastikan file keys anda memiliki format .keys dan coba lagi.</string>
|
|
||||||
<string name="install_amiibo_keys_failure_extension_description">Pastikan file keys anda memiliki format .bin dan coba lagi.</string>
|
|
||||||
<string name="invalid_keys_error">Keys enkripsi tidak valid</string>
|
|
||||||
<string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
<string name="install_keys_failure_description">File yang dipilih salah atau rusak. Silakan masukkan kembali kunci Anda.</string>
|
|
||||||
<string name="gpu_driver_manager">Manajer driver GPU</string>
|
|
||||||
<string name="install_gpu_driver">Install driver GPU</string>
|
|
||||||
<string name="install_gpu_driver_description">Instal driver lain untuk kinerja atau akurasi yang berpotensi lebih baik</string>
|
|
||||||
<string name="advanced_settings">Pengaturan lanjutan</string>
|
|
||||||
<string name="advanced_settings_game">Pengaturan lanjutan: %1$s</string>
|
|
||||||
<string name="settings_description">Konfigurasikan pengaturan emulator</string>
|
|
||||||
<string name="search_recently_played">Baru dimainkan</string>
|
|
||||||
<string name="search_recently_added">baru ditambahkan</string>
|
|
||||||
<string name="search_retail">Retail</string>
|
|
||||||
<string name="search_homebrew">Homebrew</string>
|
|
||||||
<string name="open_user_folder">Buka folder yuzu</string>
|
|
||||||
<string name="open_user_folder_description">Kelola file internal yuzu\'s</string>
|
|
||||||
<string name="theme_and_color_description">Ubah tampilan aplikasi</string>
|
|
||||||
<string name="no_file_manager">Tidak menemukan file manager</string>
|
|
||||||
<string name="notification_no_directory_link">Tidak bisa membuka direktori yuzu</string>
|
|
||||||
<string name="notification_no_directory_link_description">Silakan cari folder pengguna dengan panel samping manajer file secara manual.</string>
|
|
||||||
<string name="manage_save_data">Kelola save data</string>
|
|
||||||
<string name="manage_save_data_description">Data simpanan ditemukan. Silakan pilih opsi di bawah.</string>
|
|
||||||
<string name="import_save_warning">Impor data simpanan</string>
|
|
||||||
<string name="import_save_warning_description">Melakukan ini berarti akan menimpa seluruh data simpanan yang sudah ada sebelumnya dengan file simpanan yang Anda berikan. Apakah Anda yakin?</string>
|
|
||||||
<string name="import_export_saves_description">Impor atau Ekspor file simpanan</string>
|
|
||||||
<string name="save_files_importing">Mengimpor file simpanan...</string>
|
|
||||||
<string name="save_files_exporting">Mengekspor file simpanan...</string>
|
|
||||||
<string name="save_file_imported_success">Berhasil mengimpor</string>
|
|
||||||
<string name="save_file_invalid_zip_structure">Struktur direktori simpanan tidak valid.</string>
|
|
||||||
<string name="save_file_invalid_zip_structure_description">Nama subfolder pertama harus merupakan title ID dari game.</string>
|
|
||||||
<string name="import_saves">Impor</string>
|
|
||||||
<string name="export_saves">Ekspor</string>
|
|
||||||
<string name="install_firmware">Install firmware</string>
|
|
||||||
<string name="install_firmware_description">Firmware harus merupakan sebuah file .ZIP dan diperlukan untuk menjalankan beberapa game.</string>
|
|
||||||
<string name="firmware_installing">Menginstall firmware</string>
|
|
||||||
<string name="firmware_installed_success">Firmware terpasang.</string>
|
|
||||||
<string name="firmware_installed_failure">Gagal memasang Firmware.</string>
|
|
||||||
<string name="firmware_installed_failure_description">Pastikan file nca firmware terdapat pada folder utama dari file .zip dan coba lagi.</string>
|
|
||||||
<string name="share_log">Bagikan log debug</string>
|
|
||||||
<string name="share_log_description">Bagikan file log yuzu untuk mendebug isu</string>
|
|
||||||
<string name="share_log_missing">Tidak ada log file yang ditemukan</string>
|
|
||||||
<string name="install_game_content">Instal konten game.</string>
|
|
||||||
<string name="install_game_content_description">Instal pembaruan game atau DLC</string>
|
|
||||||
<string name="installing_game_content">Menginstal konten...</string>
|
|
||||||
<string name="install_game_content_failure">Error menginstal file (- file) pada NAND</string>
|
|
||||||
<string name="install_game_content_failure_description">Tolong pastikan seluruh konten(-konten) valid dan prod.key terinstall</string>
|
|
||||||
<string name="install_game_content_failure_base">Instalasi dari base game tidak diperbolehkan agar terhindar dari konflik yang mungkin terjadi.</string>
|
|
||||||
<string name="install_game_content_failure_file_extension">Hanya konten NSP dan XCi yang didukung. Harap periksa apakah konten (-konten) dari game sudah valid.</string>
|
|
||||||
<string name="install_game_content_failed_count">%1$d instalasi error(-error)</string>
|
|
||||||
<string name="install_game_content_success">Konten(-konten) game sudah berhasil terinstal.</string>
|
|
||||||
<string name="install_game_content_success_install">%1$d telah berhasil terinstal</string>
|
|
||||||
<string name="install_game_content_success_overwrite">%1$d telah berhasil ditimpa.</string>
|
|
||||||
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
|
||||||
<string name="custom_driver_not_supported">Driver kustom tidak didukung</string>
|
|
||||||
<string name="custom_driver_not_supported_description">Driver kustom saat ini tidak dapat digunakan pada perangkat ini. \nCek opsi ini lain waktu untuk mengetahui apakah dapat digunakan!</string>
|
|
||||||
<string name="manage_yuzu_data">Kelola data Yuzu.</string>
|
|
||||||
<string name="manage_yuzu_data_description">Impor/expor firmware, key, data pengguna, dan sebagainya!</string>
|
|
||||||
<string name="share_save_file">Bagikan file simpanan.</string>
|
|
||||||
<string name="export_save_failed">Gagal mengekspor simpanan.</string>
|
|
||||||
<string name="game_folders">Folder Game</string>
|
|
||||||
<string name="deep_scan">Pemindaian mendalam</string>
|
|
||||||
<string name="add_game_folder">Pilih folder game</string>
|
|
||||||
<string name="folder_already_added">Folder ini telah ditambahkan!</string>
|
|
||||||
<string name="game_folder_properties">Properti folder game</string>
|
|
||||||
<plurals name="saves_import_failed">
|
|
||||||
<item quantity="other">Gagal mengimpor %d simpanan.</item>
|
|
||||||
</plurals>
|
|
||||||
<plurals name="saves_import_success">
|
|
||||||
<item quantity="other">Berhasil mengimpor %d simpanan.</item>
|
|
||||||
</plurals>
|
|
||||||
<string name="no_save_data_found">Tidak ada data simpanan yang ditemukan.</string>
|
|
||||||
<string name="verify_installed_content">Verifikasi konten yang terinstal</string>
|
|
||||||
<string name="verify_installed_content_description">Memeriksa semua konten yang terinstal dari kerusakan</string>
|
|
||||||
<string name="keys_missing">Kunci enkripsi hilang</string>
|
|
||||||
<string name="keys_missing_description">Firmware dan game retail tidak dapat didekripsi</string>
|
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<!-- Applet launcher strings -->
|
|
||||||
<string name="applets">Luncurkan applet</string>
|
|
||||||
<string name="applets_description">Meluncurkan sistem applet menggunakan firmware yang diinstal</string>
|
|
||||||
<string name="applets_error_firmware">Firmware tidak terinstal</string>
|
|
||||||
<string name="applets_error_applet">Applet tidak tersedia</string>
|
|
||||||
<string name="applets_error_description"><![CDATA[Pastikan file prod.keys dan firmware Anda terpasang dan coba lagi.]]></string>
|
|
||||||
<string name="album_applet">Album</string>
|
|
||||||
<string name="album_applet_description">Lihat gambar yang disimpan di folder tangkapan layar pengguna dengan penampil foto sistem.</string>
|
|
||||||
<string name="mii_edit_applet">Ubah Mii</string>
|
|
||||||
<string name="mii_edit_applet_description">Lihat dan ubah Miis dengan mengedit sistem</string>
|
|
||||||
<string name="cabinet_applet">Kabinet</string>
|
|
||||||
<string name="cabinet_applet_description">Ubah dan hapus data yang disimpan pada amiibo</string>
|
|
||||||
<string name="cabinet_launcher">Peluncur kabinet</string>
|
|
||||||
<string name="cabinet_nickname_and_owner">Pengaturan Nama Panggilan dan Pemilik</string>
|
|
||||||
<string name="cabinet_game_data_eraser">Hapus data game</string>
|
|
||||||
<string name="cabinet_restorer">Mengembalikan</string>
|
|
||||||
<string name="cabinet_formatter">Mengatur</string>
|
|
||||||
|
|
||||||
<!-- About screen strings -->
|
|
||||||
<string name="gaia_is_not_real">Gaia tidak nyata</string>
|
|
||||||
<string name="copied_to_clipboard">Salin ke papan klip</string>
|
|
||||||
<string name="about_app_description">Emulator Switch Open-Source</string>
|
|
||||||
<string name="contributors">Kontributor</string>
|
|
||||||
<string name="contributors_description">Dibuat dengan \u2764 dari tim yuzu</string>
|
|
||||||
<string name="contributors_link">https://github.com/yuzu-emu/yuzu/graphs/contributors</string>
|
|
||||||
<string name="licenses_description">Proyek yang memungkinkan yuzu untuk Android</string>
|
|
||||||
<string name="build">Versi</string>
|
|
||||||
<string name="user_data">Data pengguna</string>
|
|
||||||
<string name="user_data_description">Impor/ekspor semua data aplikasi.\n\nKetika mengimpor data pengguna, semua data pengguna yang ada akan dihapus!</string>
|
|
||||||
<string name="exporting_user_data">Mengekspor data pengguna</string>
|
|
||||||
<string name="importing_user_data">Mengimpor data pengguna</string>
|
|
||||||
<string name="import_user_data">Impor data pengguna</string>
|
|
||||||
<string name="invalid_yuzu_backup">cadangan yuzu tidak valid</string>
|
|
||||||
<string name="user_data_export_success">berhasil mengekspor data pengguna</string>
|
|
||||||
<string name="user_data_import_success">Berhasil mengimpor data pengguna</string>
|
|
||||||
<string name="user_data_export_cancelled">Ekspor Dibatalkan</string>
|
|
||||||
<string name="user_data_import_failed_description">Pastikan folder data pengguna berada di akar folder zip dan berisi file konfigurasi di config/config.ini dan coba lagi.</string>
|
|
||||||
<string name="support_link">https://discord.gg/u77vRWY</string>
|
|
||||||
<string name="website_link">https://yuzu-emu.org/</string>
|
|
||||||
<string name="github_link">https://github.com/yuzu-emu</string>
|
|
||||||
|
|
||||||
<!-- Early access upgrade strings -->
|
|
||||||
<string name="early_access">Akses lebih awal</string>
|
|
||||||
<string name="get_early_access">Dapatkan akses lebih awal</string>
|
|
||||||
<string name="play_store_link">https://play.google.com/store/apps/details?id=org.yuzu.yuzu_emu.ea</string>
|
|
||||||
<string name="get_early_access_description">Fitur-fitur yang paling baru, akses lebih awal untuk perbaruan, dan lain-lain.</string>
|
|
||||||
<string name="early_access_benefits">Manfaat Akses Awal</string>
|
|
||||||
<string name="cutting_edge_features">Fitur-fitur yang paling baru</string>
|
|
||||||
<string name="early_access_updates">Akses lebih awal untuk pembaruan</string>
|
|
||||||
<string name="no_manual_installation">Tidak ada instalasi manual</string>
|
|
||||||
<string name="prioritized_support">Dukungan yang diprioritaskan</string>
|
|
||||||
<string name="helping_game_preservation">Membantu pemeliharaan game</string>
|
|
||||||
<string name="our_eternal_gratitude">Ucapan terima kasih kami yang tak terhingga</string>
|
|
||||||
<string name="are_you_interested">Apa kamu tertarik?</string>
|
|
||||||
|
|
||||||
<!-- General settings strings -->
|
|
||||||
<string name="frame_limit_enable">Batas kecepatan</string>
|
|
||||||
<string name="frame_limit_enable_description">Membatasi kecepatan emulasi ke persentase tertentu dari kecepatan normal</string>
|
|
||||||
<string name="frame_limit_slider">Batas persentase kecepatan</string>
|
|
||||||
<string name="frame_limit_slider_description">Menentukan persentase untuk membatasi kecepatan emulasi. 100% adalah kecepatan normal. Nilai yang lebih tinggi atau lebih rendah akan menambah atau mengurangi batas kecepatan</string>
|
|
||||||
<string name="cpu_backend">Backend CPU</string>
|
|
||||||
<string name="cpu_accuracy">Akurasi CPU</string>
|
|
||||||
<string name="value_with_units">%1$s%2$s</string>
|
|
||||||
|
|
||||||
<string name="use_docked_mode">Mode Docked</string>
|
|
||||||
<string name="use_docked_mode_description">Meningkatkan resolusi, menurunkan performa. Mode Handled digunakan saat dinonaktifkan, menurunkan resolusi dan meningkatkan performa</string>
|
|
||||||
<string name="emulated_region">Wilayah yang diemulasikan</string>
|
|
||||||
<string name="emulated_language">Bahasa yang diemulasikan</string>
|
|
||||||
<string name="select_rtc_date">Pilih tanggal RTC</string>
|
|
||||||
<string name="select_rtc_time">Pilih waktu RTC</string>
|
|
||||||
<string name="use_custom_rtc">RTC Kustom</string>
|
|
||||||
<string name="use_custom_rtc_description">Memungkinkan Anda untuk mengatur jam waktu nyata kustom yang terpisah dari waktu sistem saat ini Anda.</string>
|
|
||||||
<string name="set_custom_rtc">Setel RTC Kustom</string>
|
|
||||||
|
|
||||||
<!-- Graphics settings strings -->
|
|
||||||
<string name="renderer_accuracy">Tingkatan Akurasi</string>
|
|
||||||
<string name="renderer_resolution">Resolusi (Handheld/Docked)</string>
|
|
||||||
<string name="renderer_vsync">Mode Sinkronisasi Vertikal</string>
|
|
||||||
<string name="renderer_screen_layout">Orientasi</string>
|
|
||||||
<string name="renderer_aspect_ratio">Rasio Aspek</string>
|
|
||||||
<string name="renderer_scaling_filter">Filter penyesuaian jendela</string>
|
|
||||||
<string name="fsr_sharpness">Ketajaman FSR</string>
|
|
||||||
<string name="fsr_sharpness_description">Menentukan seberapa tajam gambar akan terlihat saat menggunakan kontras dinamis FSR</string>
|
|
||||||
<string name="renderer_anti_aliasing">Metode anti-aliasing</string>
|
|
||||||
<string name="renderer_force_max_clock">Paksa jam maximum (hanya untuk Adreno)</string>
|
|
||||||
<string name="renderer_force_max_clock_description">Memaksa GPU untuk berjalan pada kecepatan maksimum yang mungkin (batasan termal masih akan diterapkan).</string>
|
|
||||||
<string name="renderer_asynchronous_shaders">Gunakan shader asinkron</string>
|
|
||||||
<string name="renderer_asynchronous_shaders_description">Mengompilasi shader secara asinkron mengurangi Tutup Paksa tetapi dapat menimbulkan gangguan.</string>
|
|
||||||
<string name="renderer_reactive_flushing">Gunakan reactive flushing</string>
|
|
||||||
<string name="renderer_reactive_flushing_description">Meningkatkan akurasi rendering dalam beberapa permainan dengan mengorbankan performa.</string>
|
|
||||||
<string name="use_disk_shader_cache">Cache shader disk</string>
|
|
||||||
<string name="use_disk_shader_cache_description">Mengurangi Tutup Paksa dengan menyimpan dan memuat yang dihasilkan secara lokal</string>
|
|
||||||
<string name="anisotropic_filtering">Penyaringan Anisotropik</string>
|
|
||||||
<string name="anisotropic_filtering_description">Meningkatkan kualitas tekstur bila dilihat pada sudut miring</string>
|
|
||||||
|
|
||||||
<!-- Debug settings strings -->
|
|
||||||
<string name="cpu">CPU</string>
|
|
||||||
<string name="cpu_debug_mode">Debugging CPU</string>
|
|
||||||
<string name="cpu_debug_mode_description">Menempatkan CPU dalam mode debugging lambat</string>
|
|
||||||
<string name="gpu">GPU</string>
|
|
||||||
<string name="renderer_api">API</string>
|
|
||||||
<string name="renderer_debug">Debugging Grafis</string>
|
|
||||||
<string name="renderer_debug_description">Menyetel grafis API ke mode lambat</string>
|
|
||||||
<string name="fastmem">Fastmem</string>
|
|
||||||
|
|
||||||
<!-- Audio settings strings -->
|
|
||||||
<string name="audio_output_engine">Output audio</string>
|
|
||||||
<string name="audio_volume">Volume</string>
|
|
||||||
<string name="audio_volume_description">Menentukan volume output audio</string>
|
|
||||||
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">B</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">Tambah</string>
|
|
||||||
<string name="button_minus">Kurang</string>
|
|
||||||
<string name="button_home">Home</string>
|
|
||||||
<string name="button_capture">Tangkapan</string>
|
|
||||||
<string name="dpad">D-Pad</string>
|
|
||||||
<string name="up">Atas</string>
|
|
||||||
<string name="down">Bawah</string>
|
|
||||||
<string name="left">Kiri</string>
|
|
||||||
<string name="right">Kanan</string>
|
|
||||||
<string name="left_stick">Left Stick</string>
|
|
||||||
<string name="right_stick">Right Stick</string>
|
|
||||||
<string name="c_stick">C-Stick</string>
|
|
||||||
<string name="pressed">Ditekan</string>
|
|
||||||
<string name="range">Jangkauan</string>
|
|
||||||
<string name="modifier">Pemodifikasi</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">Tidak valid</string>
|
|
||||||
<string name="pro_controller">Kontroler Pro</string>
|
|
||||||
<string name="handheld">Jinjing</string>
|
|
||||||
<string name="dual_joycons">Joycon Dual</string>
|
|
||||||
<string name="left_joycon">Joycon Kiri</string>
|
|
||||||
<string name="right_joycon">Joycon Kanan</string>
|
|
||||||
<string name="gamecube_controller">Kontroler GameCube</string>
|
|
||||||
<string name="invert_axis">Balikkan poros</string>
|
|
||||||
<string name="invert_button">Balikkan tombol</string>
|
|
||||||
<string name="toggle_button">Atur tombol</string>
|
|
||||||
<string name="turbo_button">Tombol turbo</string>
|
|
||||||
<string name="set_threshold">Atur batasan</string>
|
|
||||||
<string name="connected">Terhubung</string>
|
|
||||||
<string name="vibration">Getaran</string>
|
|
||||||
<string name="profile">Profil</string>
|
|
||||||
<!-- Miscellaneous -->
|
|
||||||
<string name="slider_default">Bawaan</string>
|
|
||||||
<string name="ini_saved">Pengaturan yang disimpan</string>
|
|
||||||
<string name="gameid_saved">Pengaturan yang disimpan untuk%1$s</string>
|
|
||||||
<string name="error_saving">Gagal menyimpan%1$s.ini:%2$s</string>
|
|
||||||
<string name="unimplemented_menu">Menu yang belum diimplementasikan</string>
|
|
||||||
<string name="loading">Memuat...</string>
|
|
||||||
<string name="shutting_down">Menutup...</string>
|
|
||||||
<string name="reset_setting_confirmation">Apakah Anda ingin mengatur ulang pengaturan ini kembali ke nilai defaultnya?</string>
|
|
||||||
<string name="reset_to_default">Setel ulang ke bawaan</string>
|
|
||||||
<string name="reset_to_default_description">Mereset semua pengaturan lanjutan</string>
|
|
||||||
<string name="reset_all_settings">Atur ulang semua pengaturan?</string>
|
|
||||||
<string name="reset_all_settings_description">Semua pengaturan lanjutan akan diatur ulang ke konfigurasi default mereka. Ini tidak dapat dibatalkan.</string>
|
|
||||||
<string name="settings_reset">Pengaturan diatur ulang</string>
|
|
||||||
<string name="close">Tutup</string>
|
|
||||||
<string name="learn_more">Pelajari lebih lanjut</string>
|
|
||||||
<string name="auto">Otomatis</string>
|
|
||||||
<string name="submit">Kirimkan</string>
|
|
||||||
<string name="string_null">Null</string>
|
|
||||||
<string name="string_import">Impor</string>
|
|
||||||
<string name="export">Ekspor</string>
|
|
||||||
<string name="export_failed">Ekspor gagal</string>
|
|
||||||
<string name="import_failed">Impor gagal</string>
|
|
||||||
<string name="cancelling">Membatalkan</string>
|
|
||||||
<string name="install">Instal</string>
|
|
||||||
<string name="delete">Hapus</string>
|
|
||||||
<string name="edit">Ubah</string>
|
|
||||||
<string name="export_success">Berhasil diekspor</string>
|
|
||||||
<string name="start">Mulai</string>
|
|
||||||
<string name="clear">Bersihkan</string>
|
|
||||||
<string name="global">Utama</string>
|
|
||||||
<string name="custom">Kustom</string>
|
|
||||||
<string name="notice">Pemberitahuan</string>
|
|
||||||
<string name="import_complete">Impor Selasai</string>
|
|
||||||
<string name="more_options">Opsi Lain</string>
|
|
||||||
<string name="use_global_setting">Gunakan Pengaturan Utama</string>
|
|
||||||
<string name="operation_completed_successfully">Operasi selsesai dengan sukses</string>
|
|
||||||
<string name="save">Simpan</string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
|
||||||
<string name="select_gpu_driver">Pilih driver GPU</string>
|
|
||||||
<string name="select_gpu_driver_title">Apakah Anda ingin mengganti driver GPU saat ini?</string>
|
|
||||||
<string name="select_gpu_driver_install">Instal</string>
|
|
||||||
<string name="select_gpu_driver_default">Bawaan</string>
|
|
||||||
<string name="select_gpu_driver_use_default">Gunakan driver GPU Bawaan</string>
|
|
||||||
<string name="select_gpu_driver_error">Driver yang dipilih tidak valid</string>
|
|
||||||
<string name="driver_already_installed">Driver sudah terpasang</string>
|
|
||||||
<string name="system_gpu_driver">Driver GPU sistem</string>
|
|
||||||
<string name="installing_driver">Memasang driver...</string>
|
|
||||||
|
|
||||||
<!-- Preferences Screen -->
|
|
||||||
<string name="preferences_settings">Pengaturan</string>
|
|
||||||
<string name="preferences_general">Umum</string>
|
|
||||||
<string name="preferences_system">Sistem</string>
|
|
||||||
<string name="preferences_system_description">Mode Docked, wilayah, bahasa</string>
|
|
||||||
<string name="preferences_graphics">Grafis</string>
|
|
||||||
<string name="preferences_graphics_description">Tingkat akurasi, resolusi, cache shader</string>
|
|
||||||
<string name="preferences_audio">Audio</string>
|
|
||||||
<string name="preferences_audio_description">Output audio, volume</string>
|
|
||||||
<string name="preferences_controls">Kendali</string>
|
|
||||||
<string name="preferences_theme">Tema dan warna</string>
|
|
||||||
<string name="preferences_debug">Awakutu</string>
|
|
||||||
<string name="preferences_debug_description">CPU/GPU debugging, graphics API, fastmem</string>
|
|
||||||
|
|
||||||
<!-- Game properties -->
|
|
||||||
<string name="info">Info</string>
|
|
||||||
<string name="info_description">ID program, pengembang, versi</string>
|
|
||||||
<string name="per_game_settings">Pengaturan per game</string>
|
|
||||||
<string name="per_game_settings_description">Mengedit pengaturan khusus untuk game ini</string>
|
|
||||||
<string name="launch_options">Luncurkan konfigurasi</string>
|
|
||||||
<string name="path">Jalur</string>
|
|
||||||
<string name="program_id">Program Id</string>
|
|
||||||
<string name="developer">Pengembang</string>
|
|
||||||
<string name="version">Versi</string>
|
|
||||||
<string name="copy_details">Salin Detail</string>
|
|
||||||
<string name="add_ons">Pengaya</string>
|
|
||||||
<string name="add_ons_description">Ganti mod, pembaruan dan dlc</string>
|
|
||||||
<string name="clear_shader_cache">Menghapus Cache Shader</string>
|
|
||||||
<string name="clear_shader_cache_description">Menghapus semua shader yang dibangun saat bermain game ini</string>
|
|
||||||
<string name="clear_shader_cache_warning_description">Anda akan mengalami lebih banyak stuttering saat shader cache diregenerasi.</string>
|
|
||||||
<string name="cleared_shaders_successfully">Berhasil Membersihkan hader </string>
|
|
||||||
<string name="addons_game">Pengaya Permainan: %1$s</string>
|
|
||||||
<string name="save_data">Simpanan Data</string>
|
|
||||||
<string name="save_data_description">Mengelola data simpanan yang spesifik untuk permainan ini</string>
|
|
||||||
<string name="delete_save_data">Hapus Simpanan Data</string>
|
|
||||||
<string name="delete_save_data_description">Menghapus semua data simpanan yang spesifik untuk permainan ini</string>
|
|
||||||
<string name="delete_save_data_warning_description">Apakah Anda yakin ingin melanjutkan? Ini akan menghapus semua data simpanan permainan ini secara permanen.</string>
|
|
||||||
<string name="save_data_deleted_successfully">Simpanan Data Berhasil Dihapus</string>
|
|
||||||
<string name="select_content_type">Pilih Jenis Konten</string>
|
|
||||||
<string name="updates_and_dlc">Update Dan Dlc</string>
|
|
||||||
<string name="mods_and_cheats">Mod Dan Cheat</string>
|
|
||||||
<string name="addon_notice">Pemberitahuan Pengaya</string>
|
|
||||||
<!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
|
|
||||||
<string name="addon_notice_description">Untuk memasang mod dan cheat, Anda harus memilih folder yang berisi direktori cheats/, romfs/, atau exefs/. Kami tidak dapat memverifikasi apakah semua ini kompatibel dengan game Anda, jadi berhati-hatilah!</string>
|
|
||||||
<string name="invalid_directory">Direktori Tidak Valid</string>
|
|
||||||
<!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
|
|
||||||
<string name="invalid_directory_description">Pastikan direktori yang Anda pilih berisi folder cheats/, romfs/, atau exefs/, lalu coba lagi.</string>
|
|
||||||
<string name="addon_installed_successfully">Pengaya Sukses Dipasang</string>
|
|
||||||
<string name="verifying_content">Memverifikasi Konten</string>
|
|
||||||
<string name="content_install_notice">Pemberitahuan Pemasangan</string>
|
|
||||||
<string name="content_install_notice_description">Konten yang Anda pilih tidak cocok dengan game ini. Tetap Install?</string>
|
|
||||||
<string name="confirm_uninstall">Hapus Installasi</string>
|
|
||||||
<string name="confirm_uninstall_description">Apakah Anda yakin ingin menghapus addon ini?</string>
|
|
||||||
<string name="verify_integrity">Integritas</string>
|
|
||||||
<string name="verifying">Memverifikasi</string>
|
|
||||||
<string name="verify_success">Berhasil</string>
|
|
||||||
<string name="verify_failure">Gagal</string>
|
|
||||||
<string name="verify_failure_description">Konten file mungkin rusak</string>
|
|
||||||
<string name="verify_no_result">Tidak Ada Hasil</string>
|
|
||||||
<string name="verify_no_result_description">Isi file tidak diperiksa ke validasinya</string>
|
|
||||||
<string name="verification_failed_for">Verifikasi gagal untuk file-file berikut:\n%1$s</string>
|
|
||||||
|
|
||||||
<!-- ROM loading errors -->
|
|
||||||
<string name="loader_error_encrypted">ROM-mu ter-enkripsi</string>
|
|
||||||
<string name="loader_error_encrypted_roms_description"><![CDATA[Silakan ikuti panduan untuk redump <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">kartu permainan</a> atau <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">judul yang terinstal</a>.]]></string>
|
|
||||||
<string name="loader_error_encrypted_keys_description"><![CDATA[Harap pastikan bahwa Anda <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> diinstal sehingga game dapat didekripsi.]]></string>
|
|
||||||
<string name="loader_error_video_core">Terjadi kesalahan ketika menginisialisasi inti video.</string>
|
|
||||||
<string name="loader_error_video_core_description">Hal ini biasanya disebabkan oleh driver GPU yang tidak kompatibel. Menginstal driver GPU khusus dapat mengatasi masalah ini</string>
|
|
||||||
<string name="loader_error_invalid_format">Tidak Dapat Memuat ROM</string>
|
|
||||||
<string name="loader_error_file_not_found">Berkas Tidak Ditemukan</string>
|
|
||||||
|
|
||||||
<!-- Emulation Menu -->
|
|
||||||
<string name="emulation_exit">Keluar</string>
|
|
||||||
<string name="emulation_done">Selesai</string>
|
|
||||||
<string name="emulation_fps_counter">penghitung Fps </string>
|
|
||||||
<string name="emulation_thermal_indicator">Indikator termal</string>
|
|
||||||
<string name="emulation_toggle_controls">Beralih Kontrol</string>
|
|
||||||
<string name="emulation_rel_stick_center">Pusat stick relatif</string>
|
|
||||||
<string name="emulation_dpad_slide">Geser Dpad</string>
|
|
||||||
<string name="emulation_haptics">Haptik</string>
|
|
||||||
<string name="emulation_show_overlay">Tampilkan Hamparan</string>
|
|
||||||
<string name="emulation_toggle_all">Alihkan Semua</string>
|
|
||||||
<string name="emulation_control_adjust">Menyesuaikan</string>
|
|
||||||
<string name="emulation_control_scale">Skala</string>
|
|
||||||
<string name="emulation_control_opacity">Kegelapan</string>
|
|
||||||
<string name="emulation_touch_overlay_reset">Penyetelan Ulang Hamparan</string>
|
|
||||||
<string name="emulation_touch_overlay_edit">Edit Hamparan</string>
|
|
||||||
<string name="emulation_pause">Jeda</string>
|
|
||||||
<string name="emulation_unpause">Batalkan Jeda</string>
|
|
||||||
<string name="emulation_input_overlay">Hamparan Masukan</string>
|
|
||||||
<string name="touchscreen">Layar Sentuh</string>
|
|
||||||
<string name="lock_drawer">Kunci Laci</string>
|
|
||||||
<string name="unlock_drawer">Buka Kunci Laci</string>
|
|
||||||
|
|
||||||
<string name="load_settings">Pengaturan</string>
|
|
||||||
|
|
||||||
<!-- Software keyboard -->
|
|
||||||
<string name="software_keyboard">Papan Ketik Perangkat Lunak</string>
|
|
||||||
|
|
||||||
<!-- Errors and warnings -->
|
|
||||||
<string name="abort_button">Batalkan</string>
|
|
||||||
<string name="continue_button">Lanjut</string>
|
|
||||||
<string name="system_archive_not_found">Arsip Tidak Ditemukan</string>
|
|
||||||
<string name="system_archive_not_found_message">%s hilang. Harap buang arsip sistem Anda.\nMelanjutkan emulasi dapat menyebabkan kerusakan dan bug.</string>
|
|
||||||
<string name="system_archive_general">Arsip Umum</string>
|
|
||||||
<string name="save_load_error">Kesalahan Memuat</string>
|
|
||||||
<string name="fatal_error">Kesalahan Fatal</string>
|
|
||||||
<string name="fatal_error_message">Kesalahan Fatal Pesan. Periksa log untuk rincian.\nMelanjutkan emulasi dapat menyebabkan crash dan bug.</string>
|
|
||||||
<string name="performance_warning">Matikan pengaturan ini akan signifikan mengurangi kinerja emulasi! Untuk pengalaman terbaik, disarankan agar Anda tetap mengaktifkan pengaturan ini.</string>
|
|
||||||
<string name="device_memory_inadequate">Ram Perangkat: %1$s\nRekomendasikan: %2$s</string>
|
|
||||||
<string name="memory_formatted">%1$s%2$s</string>
|
|
||||||
<string name="no_game_present">Tidak ada permainan yang dapat di-boot!</string>
|
|
||||||
|
|
||||||
<!-- Region Names -->
|
|
||||||
<string name="region_japan">Jepang</string>
|
|
||||||
<string name="region_usa">Amerika Serikat</string>
|
|
||||||
<string name="region_europe">Eropa</string>
|
|
||||||
<string name="region_australia">Australia</string>
|
|
||||||
<string name="region_china">Tiongkok</string>
|
|
||||||
<string name="region_korea">Korea</string>
|
|
||||||
<string name="region_taiwan">Taiwan</string>
|
|
||||||
|
|
||||||
<!-- Memory Sizes -->
|
|
||||||
<string name="memory_byte">Byte</string>
|
|
||||||
<string name="memory_byte_shorthand">B</string>
|
|
||||||
<string name="memory_kilobyte">KB</string>
|
|
||||||
<string name="memory_megabyte">MB</string>
|
|
||||||
<string name="memory_gigabyte">Britania Raya</string>
|
|
||||||
<string name="memory_terabyte">TB</string>
|
|
||||||
<string name="memory_petabyte">PB</string>
|
|
||||||
<string name="memory_exabyte">EB</string>
|
|
||||||
|
|
||||||
<!-- Renderer APIs -->
|
|
||||||
<string name="renderer_vulkan">Vulkan</string>
|
|
||||||
<string name="renderer_none">Tak ada</string>
|
|
||||||
|
|
||||||
<!-- Renderer Accuracy -->
|
|
||||||
<string name="renderer_accuracy_normal">Normal</string>
|
|
||||||
<string name="renderer_accuracy_high">Tinggi</string>
|
|
||||||
<string name="renderer_accuracy_extreme">Ekstrim (Lambat)</string>
|
|
||||||
|
|
||||||
<!-- Resolutions -->
|
|
||||||
<string name="resolution_half">0.5X (360p/540p)</string>
|
|
||||||
<string name="resolution_three_quarter">0.75X (540p/810p)</string>
|
|
||||||
<string name="resolution_one">1X (720p/1080p)</string>
|
|
||||||
<string name="resolution_two">2X (1440p/2160p) (Lambat)</string>
|
|
||||||
<string name="resolution_three">3X (2160p/3240p) (Lambat)</string>
|
|
||||||
<string name="resolution_four">4X (2880p/4320p) (Lambat)</string>
|
|
||||||
|
|
||||||
<!-- Renderer VSync -->
|
|
||||||
<string name="renderer_vsync_immediate">Immediate (OFF)</string>
|
|
||||||
<string name="renderer_vsync_mailbox">Mailbox</string>
|
|
||||||
<string name="renderer_vsync_fifo">FIFO (ON)</string>
|
|
||||||
<string name="renderer_vsync_fifo_relaxed">FIFO Relaxed</string>
|
|
||||||
|
|
||||||
<!-- Scaling Filters -->
|
|
||||||
<string name="scaling_filter_nearest_neighbor">Nearest Neighbor</string>
|
|
||||||
<string name="scaling_filter_bilinear">Biliner</string>
|
|
||||||
<string name="scaling_filter_bicubic">Bikubik</string>
|
|
||||||
<string name="scaling_filter_gaussian">Gaussian</string>
|
|
||||||
<string name="scaling_filter_scale_force">ScaleForce</string>
|
|
||||||
<string name="scaling_filter_fsr">AMD FidelityFX™ Super Resolusi</string>
|
|
||||||
|
|
||||||
<!-- Anti-Aliasing -->
|
|
||||||
<string name="anti_aliasing_none">Tak ada</string>
|
|
||||||
<string name="anti_aliasing_fxaa">FXAA</string>
|
|
||||||
<string name="anti_aliasing_smaa">SMAA</string>
|
|
||||||
|
|
||||||
<!-- Screen Layouts -->
|
|
||||||
<string name="screen_layout_auto">Otomatis</string>
|
|
||||||
<string name="screen_layout_sensor_landscape">Lanskap Sensor</string>
|
|
||||||
<string name="screen_layout_landscape">Lanskap</string>
|
|
||||||
<string name="screen_layout_reverse_landscape">Lanskap Terbalik</string>
|
|
||||||
<string name="screen_layout_sensor_portrait">Potret Sensor</string>
|
|
||||||
<string name="screen_layout_portrait">Potret</string>
|
|
||||||
<string name="screen_layout_reverse_portrait">Potret Terbalik</string>
|
|
||||||
|
|
||||||
<!-- Aspect Ratios -->
|
|
||||||
<string name="ratio_default">Bawaan (16:9)</string>
|
|
||||||
<string name="ratio_force_four_three">Paksa 4:3</string>
|
|
||||||
<string name="ratio_force_twenty_one_nine">Paksa 21:9</string>
|
|
||||||
<string name="ratio_force_sixteen_ten">Paksa 16:10</string>
|
|
||||||
<string name="ratio_stretch">Merentangkan</string>
|
|
||||||
|
|
||||||
<!-- CPU Backend -->
|
|
||||||
<string name="cpu_backend_dynarmic">Dynamic (Lambat)</string>
|
|
||||||
<string name="cpu_backend_nce">Native code execution (NCE)</string>
|
|
||||||
|
|
||||||
<!-- CPU Accuracy -->
|
|
||||||
<string name="cpu_accuracy_accurate">Akurat</string>
|
|
||||||
<string name="cpu_accuracy_unsafe">Berbahaya</string>
|
|
||||||
<string name="cpu_accuracy_paranoid">Paranoid (Slow)</string>
|
|
||||||
|
|
||||||
<!-- Gamepad Buttons -->
|
|
||||||
<string name="gamepad_d_pad">D Pad</string>
|
|
||||||
<string name="gamepad_left_stick">Left Stick</string>
|
|
||||||
<string name="gamepad_right_stick">Right Stick</string>
|
|
||||||
<string name="gamepad_home">Home</string>
|
|
||||||
<string name="gamepad_screenshot">Screenshot</string>
|
|
||||||
|
|
||||||
<!-- Disk shader cache -->
|
|
||||||
<string name="preparing_shaders">menyiapkan shader</string>
|
|
||||||
<string name="building_shaders">membangun shader</string>
|
|
||||||
|
|
||||||
<!-- Theme options -->
|
|
||||||
<string name="change_app_theme">Ubah Tema</string>
|
|
||||||
<string name="theme_default">Bawaan</string>
|
|
||||||
<string name="theme_material_you">Material Anda</string>
|
|
||||||
|
|
||||||
<!-- Theme Modes -->
|
|
||||||
<string name="change_theme_mode">Mengubah Tema</string>
|
|
||||||
<string name="theme_mode_follow_system">Mengikuti Sistem</string>
|
|
||||||
<string name="theme_mode_light">Terang</string>
|
|
||||||
<string name="theme_mode_dark">Gelap</string>
|
|
||||||
|
|
||||||
<!-- Audio output engines -->
|
|
||||||
<string name="oboe">Oboe</string>
|
|
||||||
<string name="cubeb">Cubeb</string>
|
|
||||||
|
|
||||||
<!-- Anisotropic filtering options -->
|
|
||||||
<string name="multiplier_two">2x</string>
|
|
||||||
<string name="multiplier_four">4x</string>
|
|
||||||
<string name="multiplier_eight">8x</string>
|
|
||||||
<string name="multiplier_sixteen">16x</string>
|
|
||||||
|
|
||||||
<!-- Black backgrounds theme -->
|
|
||||||
<string name="use_black_backgrounds">Gunakan Latar Belakang Hitam</string>
|
|
||||||
<string name="use_black_backgrounds_description">Apabila menggunakan tema gelap, terapkan latar belakang hitam</string>
|
|
||||||
|
|
||||||
<!-- Picture-In-Picture -->
|
|
||||||
<string name="picture_in_picture">Gambar dalam gambar</string>
|
|
||||||
<string name="picture_in_picture_description">Meminimalkan jendela apabila ditempatkan di latar belakang</string>
|
|
||||||
<string name="pause">Jeda</string>
|
|
||||||
<string name="play">Bermain</string>
|
|
||||||
<string name="mute">Bisukan</string>
|
|
||||||
<string name="unmute">Membunyikan</string>
|
|
||||||
|
|
||||||
<!-- Emulation vertical alignment -->
|
|
||||||
<string name="vertical_alignment">Penyelarasan vertikal</string>
|
|
||||||
<string name="top">Atas</string>
|
|
||||||
<string name="center">Pusat</string>
|
|
||||||
<string name="bottom">Bawah</string>
|
|
||||||
|
|
||||||
<!-- Licenses screen strings -->
|
|
||||||
<string name="licenses">Lisensi</string>
|
|
||||||
<string name="license_fidelityfx_fsr_description">Peningkatan kualitas tinggi dari AMD</string>
|
|
||||||
</resources>
|
|
|
@ -31,7 +31,6 @@
|
||||||
<string name="empty_gamelist">Non sono stati trovati file o non è stata ancora selezionata alcuna directory di gioco.</string>
|
<string name="empty_gamelist">Non sono stati trovati file o non è stata ancora selezionata alcuna directory di gioco.</string>
|
||||||
<string name="search_and_filter_games">Cerca e filtra i giochi</string>
|
<string name="search_and_filter_games">Cerca e filtra i giochi</string>
|
||||||
<string name="select_games_folder">Seleziona la cartella dei giochi</string>
|
<string name="select_games_folder">Seleziona la cartella dei giochi</string>
|
||||||
<string name="manage_game_folders">Gestisci le cartelle dei giochi</string>
|
|
||||||
<string name="select_games_folder_description">Consente a yuzu di popolare l\'elenco dei giochi</string>
|
<string name="select_games_folder_description">Consente a yuzu di popolare l\'elenco dei giochi</string>
|
||||||
<string name="add_games_warning">Saltare la selezione della cartella dei giochi?</string>
|
<string name="add_games_warning">Saltare la selezione della cartella dei giochi?</string>
|
||||||
<string name="add_games_warning_description">I giochi non saranno mostrati nella lista dei giochi se una cartella non è selezionata.</string>
|
<string name="add_games_warning_description">I giochi non saranno mostrati nella lista dei giochi se una cartella non è selezionata.</string>
|
||||||
|
@ -84,11 +83,7 @@
|
||||||
<string name="notification_no_directory_link_description">Per favore individua la cartella dell\'utente manualmente con il pannello laterale del file manager.</string>
|
<string name="notification_no_directory_link_description">Per favore individua la cartella dell\'utente manualmente con il pannello laterale del file manager.</string>
|
||||||
<string name="manage_save_data">Gestisci i salvataggi</string>
|
<string name="manage_save_data">Gestisci i salvataggi</string>
|
||||||
<string name="manage_save_data_description">Salvataggio non trovato. Seleziona un\'opzione di seguito.</string>
|
<string name="manage_save_data_description">Salvataggio non trovato. Seleziona un\'opzione di seguito.</string>
|
||||||
<string name="import_save_warning">Importa dei salvataggi</string>
|
|
||||||
<string name="import_save_warning_description">ATTENZIONE: Tutti i salvataggi già presenti sul dispositivo verranno SOSTITUITI dai nuovi. Sicuro di voler continuare?</string>
|
|
||||||
<string name="import_export_saves_description">Importa o esporta i salvataggi</string>
|
<string name="import_export_saves_description">Importa o esporta i salvataggi</string>
|
||||||
<string name="save_files_importing">Importazione dei salvataggi...</string>
|
|
||||||
<string name="save_files_exporting">Esportazione dei salvataggi..</string>
|
|
||||||
<string name="save_file_imported_success">Importato con successo</string>
|
<string name="save_file_imported_success">Importato con successo</string>
|
||||||
<string name="save_file_invalid_zip_structure">La struttura della cartella dei salvataggi è invalida</string>
|
<string name="save_file_invalid_zip_structure">La struttura della cartella dei salvataggi è invalida</string>
|
||||||
<string name="save_file_invalid_zip_structure_description">La prima sotto cartella <b>deve</b> chiamarsi come l\'ID del titolo del gioco.</string>
|
<string name="save_file_invalid_zip_structure_description">La prima sotto cartella <b>deve</b> chiamarsi come l\'ID del titolo del gioco.</string>
|
||||||
|
@ -121,16 +116,6 @@
|
||||||
<string name="manage_yuzu_data_description">Importa/Esporta il firmware, le keys, i dati utente, e altro!</string>
|
<string name="manage_yuzu_data_description">Importa/Esporta il firmware, le keys, i dati utente, e altro!</string>
|
||||||
<string name="share_save_file">Condividi i tuoi dati di salvataggio</string>
|
<string name="share_save_file">Condividi i tuoi dati di salvataggio</string>
|
||||||
<string name="export_save_failed">Errore durante l\'esportazione del salvataggio</string>
|
<string name="export_save_failed">Errore durante l\'esportazione del salvataggio</string>
|
||||||
<string name="game_folders">Cartelle di gioco</string>
|
|
||||||
<string name="deep_scan">Scansione Sotto-Cartelle</string>
|
|
||||||
<string name="add_game_folder">Aggiungi Cartella di gioco</string>
|
|
||||||
<string name="folder_already_added">Questa cartella è già presente nell\'elenco.</string>
|
|
||||||
<string name="game_folder_properties">Proprietà della cartella di Gioco</string>
|
|
||||||
<string name="no_save_data_found">Nessun salvataggio trovato</string>
|
|
||||||
<string name="verify_installed_content">Verifica i contenuti installati</string>
|
|
||||||
<string name="verify_installed_content_description">Verifica l\'integrità di tutti i contenuti installati.</string>
|
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<!-- Applet launcher strings -->
|
<!-- Applet launcher strings -->
|
||||||
<string name="applets">Avvia applet</string>
|
<string name="applets">Avvia applet</string>
|
||||||
<string name="applets_description">Avvia applet di sistema usando il firmware installato</string>
|
<string name="applets_description">Avvia applet di sistema usando il firmware installato</string>
|
||||||
|
@ -191,10 +176,10 @@
|
||||||
<string name="frame_limit_enable_description">Limita la velocità dell\'emulazione a una specifica percentuale della velocità normale.</string>
|
<string name="frame_limit_enable_description">Limita la velocità dell\'emulazione a una specifica percentuale della velocità normale.</string>
|
||||||
<string name="frame_limit_slider">Limite velocità percentuale</string>
|
<string name="frame_limit_slider">Limite velocità percentuale</string>
|
||||||
<string name="frame_limit_slider_description">Specifica la percentuale per limitare la velocità di emulazione. 100% è la velocità normale. Valori maggiori o minori aumenteranno o diminuiranno il limite di velocità</string>
|
<string name="frame_limit_slider_description">Specifica la percentuale per limitare la velocità di emulazione. 100% è la velocità normale. Valori maggiori o minori aumenteranno o diminuiranno il limite di velocità</string>
|
||||||
<string name="cpu_backend">Backend CPU</string>
|
|
||||||
<string name="cpu_accuracy">Accuratezza della CPU</string>
|
<string name="cpu_accuracy">Accuratezza della CPU</string>
|
||||||
<string name="value_with_units">%1$s%2$s</string>
|
<string name="value_with_units">%1$s%2$s</string>
|
||||||
|
|
||||||
|
<!-- System settings strings -->
|
||||||
<string name="use_docked_mode">Modalità Docked</string>
|
<string name="use_docked_mode">Modalità Docked</string>
|
||||||
<string name="use_docked_mode_description">Aumenta la risoluzione, diminuendo le performance. La modalità portatile è usata quando disabilitato, diminuendo la risoluzione e aumentando le performance.</string>
|
<string name="use_docked_mode_description">Aumenta la risoluzione, diminuendo le performance. La modalità portatile è usata quando disabilitato, diminuendo la risoluzione e aumentando le performance.</string>
|
||||||
<string name="emulated_region">Regione emulata</string>
|
<string name="emulated_region">Regione emulata</string>
|
||||||
|
@ -221,9 +206,6 @@
|
||||||
<string name="renderer_reactive_flushing_description">Migliora l\'accuratezza della grafica in alcuni giochi, al costo delle performance.</string>
|
<string name="renderer_reactive_flushing_description">Migliora l\'accuratezza della grafica in alcuni giochi, al costo delle performance.</string>
|
||||||
<string name="use_disk_shader_cache">Usa la cache delle shader</string>
|
<string name="use_disk_shader_cache">Usa la cache delle shader</string>
|
||||||
<string name="use_disk_shader_cache_description">Riduce lo stuttering caricando le shader già compilate all\'avvio.</string>
|
<string name="use_disk_shader_cache_description">Riduce lo stuttering caricando le shader già compilate all\'avvio.</string>
|
||||||
<string name="anisotropic_filtering">Filtro Anisotropico</string>
|
|
||||||
<string name="anisotropic_filtering_description">Migliora la qualità delle texture quando vengono visualizzate ad un angolo obliquo.</string>
|
|
||||||
|
|
||||||
<!-- Debug settings strings -->
|
<!-- Debug settings strings -->
|
||||||
<string name="cpu">CPU</string>
|
<string name="cpu">CPU</string>
|
||||||
<string name="cpu_debug_mode">Debug della CPU</string>
|
<string name="cpu_debug_mode">Debug della CPU</string>
|
||||||
|
@ -239,49 +221,6 @@
|
||||||
<string name="audio_volume">Volume</string>
|
<string name="audio_volume">Volume</string>
|
||||||
<string name="audio_volume_description">Specifica il volume dell\'audio in uscita.</string>
|
<string name="audio_volume_description">Specifica il volume dell\'audio in uscita.</string>
|
||||||
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">B</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">Più</string>
|
|
||||||
<string name="button_minus">Meno</string>
|
|
||||||
<string name="button_home">Home</string>
|
|
||||||
<string name="button_capture">Cattura</string>
|
|
||||||
<string name="dpad">D-Pad</string>
|
|
||||||
<string name="up">Su</string>
|
|
||||||
<string name="down">Giù</string>
|
|
||||||
<string name="left">Sinistra</string>
|
|
||||||
<string name="right">Destra</string>
|
|
||||||
<string name="left_stick">Analogico sinistro</string>
|
|
||||||
<string name="right_stick">Analogico destro</string>
|
|
||||||
<string name="c_stick">Levetta C</string>
|
|
||||||
<string name="pressed">Premuto</string>
|
|
||||||
<string name="range">Raggio</string>
|
|
||||||
<string name="deadzone">Zona morta</string>
|
|
||||||
<string name="modifier">Modificatore</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">Non valido</string>
|
|
||||||
<string name="unknown">Sconosciuto</string>
|
|
||||||
<string name="pro_controller">Pro Controller</string>
|
|
||||||
<string name="handheld">Portatile</string>
|
|
||||||
<string name="dual_joycons">Due Joycon</string>
|
|
||||||
<string name="left_joycon">Joycon sinistro</string>
|
|
||||||
<string name="right_joycon">Joycon destro</string>
|
|
||||||
<string name="gamecube_controller">Controller GameCube</string>
|
|
||||||
<string name="invert_axis">Inverti asse</string>
|
|
||||||
<string name="invert_button">Inverti pulsante</string>
|
|
||||||
<string name="toggle_button">Premi il pulsante</string>
|
|
||||||
<string name="turbo_button">Modalità Turbo</string>
|
|
||||||
<string name="set_threshold">Imposta soglia</string>
|
|
||||||
<string name="toggle_axis">Cancella asse</string>
|
|
||||||
<string name="connected">Connesso</string>
|
|
||||||
<string name="vibration">Vibrazione</string>
|
|
||||||
<string name="profile">Profilo</string>
|
|
||||||
<string name="use_global_input_configuration">Usa la configurazione di input globale</string>
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">Predefinito</string>
|
<string name="slider_default">Predefinito</string>
|
||||||
<string name="ini_saved">Impostazioni salvate</string>
|
<string name="ini_saved">Impostazioni salvate</string>
|
||||||
|
@ -292,7 +231,6 @@
|
||||||
<string name="shutting_down">Spegnimento...</string>
|
<string name="shutting_down">Spegnimento...</string>
|
||||||
<string name="reset_setting_confirmation">Vuoi ripristinare queste impostazioni al loro valore originale?</string>
|
<string name="reset_setting_confirmation">Vuoi ripristinare queste impostazioni al loro valore originale?</string>
|
||||||
<string name="reset_to_default">Riportare alle impostazioni originali</string>
|
<string name="reset_to_default">Riportare alle impostazioni originali</string>
|
||||||
<string name="reset_to_default_description">Reimposta tutte le impostazione avanzate</string>
|
|
||||||
<string name="reset_all_settings">Resettare tutte le impostazioni?</string>
|
<string name="reset_all_settings">Resettare tutte le impostazioni?</string>
|
||||||
<string name="reset_all_settings_description">Le impostazione avanzate verranno completamente reimpostate. Questa operazione è IRREVERSIBILE.</string>
|
<string name="reset_all_settings_description">Le impostazione avanzate verranno completamente reimpostate. Questa operazione è IRREVERSIBILE.</string>
|
||||||
<string name="settings_reset">Reimposta le impostazioni</string>
|
<string name="settings_reset">Reimposta le impostazioni</string>
|
||||||
|
@ -308,19 +246,9 @@
|
||||||
<string name="cancelling">Cancellazione</string>
|
<string name="cancelling">Cancellazione</string>
|
||||||
<string name="install">Installa</string>
|
<string name="install">Installa</string>
|
||||||
<string name="delete">Elimina</string>
|
<string name="delete">Elimina</string>
|
||||||
<string name="edit">Modifica</string>
|
|
||||||
<string name="export_success">Esportazione completata</string>
|
|
||||||
<string name="start">Start</string>
|
<string name="start">Start</string>
|
||||||
<string name="clear">Cancella</string>
|
<string name="clear">Cancella</string>
|
||||||
<string name="global">Globale</string>
|
|
||||||
<string name="custom">Personalizzato</string>
|
<string name="custom">Personalizzato</string>
|
||||||
<string name="notice">Avviso</string>
|
|
||||||
<string name="import_complete">Importazione completata</string>
|
|
||||||
<string name="more_options">Più opzioni</string>
|
|
||||||
<string name="use_global_setting">Usa l\'impostazione globale</string>
|
|
||||||
<string name="operation_completed_successfully">Operazione completata con successo</string>
|
|
||||||
<string name="save">Salva</string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
<string name="select_gpu_driver">Seleziona il driver della GPU</string>
|
<string name="select_gpu_driver">Seleziona il driver della GPU</string>
|
||||||
<string name="select_gpu_driver_title">Vuoi sostituire il driver della tua GPU attuale?</string>
|
<string name="select_gpu_driver_title">Vuoi sostituire il driver della tua GPU attuale?</string>
|
||||||
|
@ -336,32 +264,16 @@
|
||||||
<string name="preferences_settings">Impostazioni</string>
|
<string name="preferences_settings">Impostazioni</string>
|
||||||
<string name="preferences_general">Generali</string>
|
<string name="preferences_general">Generali</string>
|
||||||
<string name="preferences_system">Sistema</string>
|
<string name="preferences_system">Sistema</string>
|
||||||
<string name="preferences_system_description">Modalità Fissa, Regione, Lingua</string>
|
|
||||||
<string name="preferences_graphics">Grafica</string>
|
<string name="preferences_graphics">Grafica</string>
|
||||||
<string name="preferences_graphics_description">Livello di Accuratezza, Risoluzione, Shader Cache</string>
|
|
||||||
<string name="preferences_audio">Audio</string>
|
<string name="preferences_audio">Audio</string>
|
||||||
<string name="preferences_audio_description">Motore di Output audio e volume</string>
|
|
||||||
<string name="preferences_controls">Comandi</string>
|
|
||||||
<string name="preferences_theme">Tema e colori</string>
|
<string name="preferences_theme">Tema e colori</string>
|
||||||
<string name="preferences_debug">Debug</string>
|
<string name="preferences_debug">Debug</string>
|
||||||
<string name="preferences_debug_description">Debugging CPU/GPU, API grafiche, fastmem</string>
|
|
||||||
|
|
||||||
<!-- Game properties -->
|
<!-- Game properties -->
|
||||||
<string name="info">Info</string>
|
<string name="info">Info</string>
|
||||||
<string name="info_description">ID Programma, Sviluppatore, Versione</string>
|
|
||||||
<string name="per_game_settings_description">Modifica le impostazioni solo per questo gioco</string>
|
|
||||||
<string name="launch_options">Avvia configurazione</string>
|
|
||||||
<string name="path">Percorso</string>
|
<string name="path">Percorso</string>
|
||||||
<string name="program_id">Id Programma</string>
|
|
||||||
<string name="developer">Sviluppatore</string>
|
<string name="developer">Sviluppatore</string>
|
||||||
<string name="version">Versione</string>
|
<string name="version">Versione</string>
|
||||||
<string name="add_ons">Add-on</string>
|
<string name="add_ons">Add-on</string>
|
||||||
<string name="clear_shader_cache">Rimuove la cache delle Shader</string>
|
|
||||||
<string name="clear_shader_cache_description">Cancella tutte le shader compilate su questo gioco fino ad ora</string>
|
|
||||||
<string name="save_data_description">Gestisci i salvataggi di questo gioco</string>
|
|
||||||
<string name="verify_success">Verifica dell\'integrità completata con successo!</string>
|
|
||||||
<string name="verify_failure">Verifica dell\'integrità fallita!</string>
|
|
||||||
<string name="verify_no_result_description">L\'integrità dei contenuti non è stata validata</string>
|
|
||||||
<!-- ROM loading errors -->
|
<!-- ROM loading errors -->
|
||||||
<string name="loader_error_encrypted">La tua ROM è criptata</string>
|
<string name="loader_error_encrypted">La tua ROM è criptata</string>
|
||||||
<string name="loader_error_encrypted_roms_description"><![CDATA[Segui la nostra guida per fare il <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">dump delle tue cartucce di gioco</a>oppure <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">dei titoli già installati</a>.]]></string>
|
<string name="loader_error_encrypted_roms_description"><![CDATA[Segui la nostra guida per fare il <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">dump delle tue cartucce di gioco</a>oppure <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">dei titoli già installati</a>.]]></string>
|
||||||
|
@ -390,6 +302,7 @@
|
||||||
<string name="emulation_unpause">Riprendi l\'emulazione</string>
|
<string name="emulation_unpause">Riprendi l\'emulazione</string>
|
||||||
<string name="emulation_input_overlay">Opzioni overlay</string>
|
<string name="emulation_input_overlay">Opzioni overlay</string>
|
||||||
<string name="touchscreen">Touchscreen</string>
|
<string name="touchscreen">Touchscreen</string>
|
||||||
|
|
||||||
<string name="load_settings">Carico le impostazioni...</string>
|
<string name="load_settings">Carico le impostazioni...</string>
|
||||||
|
|
||||||
<!-- Software keyboard -->
|
<!-- Software keyboard -->
|
||||||
|
@ -403,7 +316,7 @@
|
||||||
<string name="system_archive_general">Un archivio di sistema</string>
|
<string name="system_archive_general">Un archivio di sistema</string>
|
||||||
<string name="save_load_error">Errore di salvataggio/caricamento</string>
|
<string name="save_load_error">Errore di salvataggio/caricamento</string>
|
||||||
<string name="fatal_error">Errore Fatale</string>
|
<string name="fatal_error">Errore Fatale</string>
|
||||||
<string name="fatal_error_message">Errore Fatale. Controlla i log per i dettagli.\nContinuare l\'emulazione potrebbe portare a glitch grafici o causare crash.</string>
|
<string name="fatal_error_message">Un errore fatale è accaduto. Controlla i log per i dettagli.\nContinuare ad emulare potrebbe portare bug o causare crash.</string>
|
||||||
<string name="performance_warning">Disattivare questa impostazione può ridurre significativamente le performance di emulazione! Per una migliore esperienza, è consigliato lasciare questa impostazione attivata.</string>
|
<string name="performance_warning">Disattivare questa impostazione può ridurre significativamente le performance di emulazione! Per una migliore esperienza, è consigliato lasciare questa impostazione attivata.</string>
|
||||||
<string name="device_memory_inadequate">RAM Totale:%1$s\nRaccomandati: %2$s</string>
|
<string name="device_memory_inadequate">RAM Totale:%1$s\nRaccomandati: %2$s</string>
|
||||||
<string name="memory_formatted">%1$s%2$s</string>
|
<string name="memory_formatted">%1$s%2$s</string>
|
||||||
|
|
|
@ -83,9 +83,7 @@
|
||||||
<string name="notification_no_directory_link_description">ファイルマネージャのサイドパネルでユーザーフォルダを手動で探してください。</string>
|
<string name="notification_no_directory_link_description">ファイルマネージャのサイドパネルでユーザーフォルダを手動で探してください。</string>
|
||||||
<string name="manage_save_data">セーブデータ</string>
|
<string name="manage_save_data">セーブデータ</string>
|
||||||
<string name="manage_save_data_description">セーブデータが見つかりました。操作を選択してください。</string>
|
<string name="manage_save_data_description">セーブデータが見つかりました。操作を選択してください。</string>
|
||||||
<string name="import_save_warning">セーブデータをインポート</string>
|
|
||||||
<string name="import_export_saves_description">セーブファイルをインポート/エクスポート</string>
|
<string name="import_export_saves_description">セーブファイルをインポート/エクスポート</string>
|
||||||
<string name="save_files_importing">セーブファイルをインポート中...</string>
|
|
||||||
<string name="save_file_imported_success">インポートが完了しました</string>
|
<string name="save_file_imported_success">インポートが完了しました</string>
|
||||||
<string name="save_file_invalid_zip_structure">セーブデータのディレクトリ構造が無効</string>
|
<string name="save_file_invalid_zip_structure">セーブデータのディレクトリ構造が無効</string>
|
||||||
<string name="save_file_invalid_zip_structure_description">最初のサブフォルダ名は、ゲームのタイトルIDである必要があります。</string>
|
<string name="save_file_invalid_zip_structure_description">最初のサブフォルダ名は、ゲームのタイトルIDである必要があります。</string>
|
||||||
|
@ -111,8 +109,6 @@
|
||||||
<string name="custom_driver_not_supported">カスタムドライバはサポートされていません</string>
|
<string name="custom_driver_not_supported">カスタムドライバはサポートされていません</string>
|
||||||
<string name="manage_yuzu_data">yuzu データを管理</string>
|
<string name="manage_yuzu_data">yuzu データを管理</string>
|
||||||
<string name="share_save_file">セーブファイルを共有</string>
|
<string name="share_save_file">セーブファイルを共有</string>
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<string name="applets_error_firmware">ファームウェア未インストール</string>
|
<string name="applets_error_firmware">ファームウェア未インストール</string>
|
||||||
<string name="album_applet">アルバム</string>
|
<string name="album_applet">アルバム</string>
|
||||||
<string name="cabinet_nickname_and_owner">ニックネームと所有者の設定</string>
|
<string name="cabinet_nickname_and_owner">ニックネームと所有者の設定</string>
|
||||||
|
@ -155,8 +151,8 @@
|
||||||
<string name="frame_limit_enable_description">エミュレーション速度を指定した割合に制限します。</string>
|
<string name="frame_limit_enable_description">エミュレーション速度を指定した割合に制限します。</string>
|
||||||
<string name="frame_limit_slider">エミュレーション速度</string>
|
<string name="frame_limit_slider">エミュレーション速度</string>
|
||||||
<string name="frame_limit_slider_description">エミュレーション速度を制限するパーセンテージを指定します。100%は通常速度です。値の増減で速度も増減します。</string>
|
<string name="frame_limit_slider_description">エミュレーション速度を制限するパーセンテージを指定します。100%は通常速度です。値の増減で速度も増減します。</string>
|
||||||
<string name="cpu_backend">CPUバックエンド</string>
|
|
||||||
<string name="cpu_accuracy">CPU精度</string>
|
<string name="cpu_accuracy">CPU精度</string>
|
||||||
|
<!-- System settings strings -->
|
||||||
<string name="use_docked_mode">TVモード</string>
|
<string name="use_docked_mode">TVモード</string>
|
||||||
<string name="use_docked_mode_description">高解像度、低パフォーマンス。無効時には携帯モードが使用されます(低解像度、高パフォーマンス)。</string>
|
<string name="use_docked_mode_description">高解像度、低パフォーマンス。無効時には携帯モードが使用されます(低解像度、高パフォーマンス)。</string>
|
||||||
<string name="emulated_region">地域</string>
|
<string name="emulated_region">地域</string>
|
||||||
|
@ -183,9 +179,6 @@
|
||||||
<string name="renderer_reactive_flushing_description">一部のゲームにおいて、パフォーマンスを犠牲にしながらも、レンダリング精度を向上させます。</string>
|
<string name="renderer_reactive_flushing_description">一部のゲームにおいて、パフォーマンスを犠牲にしながらも、レンダリング精度を向上させます。</string>
|
||||||
<string name="use_disk_shader_cache">ディスクシェーダーキャッシュ</string>
|
<string name="use_disk_shader_cache">ディスクシェーダーキャッシュ</string>
|
||||||
<string name="use_disk_shader_cache_description">生成したシェーダーを端末に保存して読み込み、コマ落ちを軽減します。</string>
|
<string name="use_disk_shader_cache_description">生成したシェーダーを端末に保存して読み込み、コマ落ちを軽減します。</string>
|
||||||
<string name="anisotropic_filtering">異方性フィルタリング</string>
|
|
||||||
<string name="anisotropic_filtering_description">斜めから見たときのテクスチャーの質感を向上させます</string>
|
|
||||||
|
|
||||||
<!-- Debug settings strings -->
|
<!-- Debug settings strings -->
|
||||||
<string name="cpu">CPU</string>
|
<string name="cpu">CPU</string>
|
||||||
<string name="cpu_debug_mode">CPUデバッグ</string>
|
<string name="cpu_debug_mode">CPUデバッグ</string>
|
||||||
|
@ -200,47 +193,6 @@
|
||||||
<string name="audio_volume">音量</string>
|
<string name="audio_volume">音量</string>
|
||||||
<string name="audio_volume_description">オーディオ出力の音量を指定します</string>
|
<string name="audio_volume_description">オーディオ出力の音量を指定します</string>
|
||||||
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">B</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">+</string>
|
|
||||||
<string name="button_minus">-</string>
|
|
||||||
<string name="button_home">HOMEボタン</string>
|
|
||||||
<string name="button_capture">キャプチャ</string>
|
|
||||||
<string name="dpad">方向ボタン</string>
|
|
||||||
<string name="up">上</string>
|
|
||||||
<string name="down">下</string>
|
|
||||||
<string name="left">左</string>
|
|
||||||
<string name="right">右</string>
|
|
||||||
<string name="left_stick">Lスティック</string>
|
|
||||||
<string name="right_stick">Rスティック</string>
|
|
||||||
<string name="c_stick">Cスティック</string>
|
|
||||||
<string name="pressed">押下</string>
|
|
||||||
<string name="range">範囲</string>
|
|
||||||
<string name="deadzone">遊び</string>
|
|
||||||
<string name="modifier">変更</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">無効</string>
|
|
||||||
<string name="unknown">不明</string>
|
|
||||||
<string name="pro_controller">Proコントローラー</string>
|
|
||||||
<string name="handheld">携帯コントローラー</string>
|
|
||||||
<string name="dual_joycons">Joy-Con(L/R)</string>
|
|
||||||
<string name="left_joycon">Joy-Con(L)</string>
|
|
||||||
<string name="right_joycon">Joy-Con(R)</string>
|
|
||||||
<string name="gamecube_controller">ゲームキューブコントローラー</string>
|
|
||||||
<string name="invert_axis">軸を反転</string>
|
|
||||||
<string name="invert_button">ボタンを反転</string>
|
|
||||||
<string name="turbo_button">ターボボタン</string>
|
|
||||||
<string name="set_threshold">しきい値を設定</string>
|
|
||||||
<string name="connected">接続の状態</string>
|
|
||||||
<string name="vibration">振動</string>
|
|
||||||
<string name="profile">プロファイル</string>
|
|
||||||
<string name="use_global_input_configuration">グローバル入力設定を使用</string>
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">デフォルト</string>
|
<string name="slider_default">デフォルト</string>
|
||||||
<string name="ini_saved">設定を保存しました</string>
|
<string name="ini_saved">設定を保存しました</string>
|
||||||
|
@ -268,8 +220,6 @@
|
||||||
<string name="start">開始</string>
|
<string name="start">開始</string>
|
||||||
<string name="clear">クリア</string>
|
<string name="clear">クリア</string>
|
||||||
<string name="custom">カスタム</string>
|
<string name="custom">カスタム</string>
|
||||||
<string name="save">保存</string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
<string name="select_gpu_driver">GPUドライバを選択</string>
|
<string name="select_gpu_driver">GPUドライバを選択</string>
|
||||||
<string name="select_gpu_driver_title">現在のGPUドライバを置き換えますか?</string>
|
<string name="select_gpu_driver_title">現在のGPUドライバを置き換えますか?</string>
|
||||||
|
@ -285,7 +235,6 @@
|
||||||
<string name="preferences_system">システム</string>
|
<string name="preferences_system">システム</string>
|
||||||
<string name="preferences_graphics">グラフィック</string>
|
<string name="preferences_graphics">グラフィック</string>
|
||||||
<string name="preferences_audio">サウンド</string>
|
<string name="preferences_audio">サウンド</string>
|
||||||
<string name="preferences_controls">操作</string>
|
|
||||||
<string name="preferences_theme">テーマと色</string>
|
<string name="preferences_theme">テーマと色</string>
|
||||||
<string name="preferences_debug">デバッグ</string>
|
<string name="preferences_debug">デバッグ</string>
|
||||||
<!-- Game properties -->
|
<!-- Game properties -->
|
||||||
|
@ -294,9 +243,6 @@
|
||||||
<string name="developer">開発元</string>
|
<string name="developer">開発元</string>
|
||||||
<string name="version">バージョン</string>
|
<string name="version">バージョン</string>
|
||||||
<string name="add_ons">アドオン</string>
|
<string name="add_ons">アドオン</string>
|
||||||
<string name="invalid_directory">無効なディレクトリ</string>
|
|
||||||
<string name="verify_success">整合性の確認に成功しました!</string>
|
|
||||||
<string name="verify_failure">整合性の確認に失敗しました!</string>
|
|
||||||
<!-- ROM loading errors -->
|
<!-- ROM loading errors -->
|
||||||
<string name="loader_error_encrypted">ROMが暗号化されています</string>
|
<string name="loader_error_encrypted">ROMが暗号化されています</string>
|
||||||
<string name="loader_error_encrypted_keys_description"><![CDATA[ゲームの復号化に必要な <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> ファイルがインストールされていることを確認してください。]]></string>
|
<string name="loader_error_encrypted_keys_description"><![CDATA[ゲームの復号化に必要な <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> ファイルがインストールされていることを確認してください。]]></string>
|
||||||
|
@ -324,6 +270,7 @@
|
||||||
<string name="emulation_unpause">再開</string>
|
<string name="emulation_unpause">再開</string>
|
||||||
<string name="emulation_input_overlay">表示オプション</string>
|
<string name="emulation_input_overlay">表示オプション</string>
|
||||||
<string name="touchscreen">タッチスクリーン</string>
|
<string name="touchscreen">タッチスクリーン</string>
|
||||||
|
|
||||||
<string name="load_settings">設定をロード中…</string>
|
<string name="load_settings">設定をロード中…</string>
|
||||||
|
|
||||||
<!-- Software keyboard -->
|
<!-- Software keyboard -->
|
||||||
|
@ -409,10 +356,6 @@
|
||||||
<string name="ratio_force_sixteen_ten">強制 16:10</string>
|
<string name="ratio_force_sixteen_ten">強制 16:10</string>
|
||||||
<string name="ratio_stretch">画面に合わせる</string>
|
<string name="ratio_stretch">画面に合わせる</string>
|
||||||
|
|
||||||
<!-- CPU Backend -->
|
|
||||||
<string name="cpu_backend_dynarmic">Dynarmic (低速)</string>
|
|
||||||
<string name="cpu_backend_nce">ネイティブコード実行 (NCE)</string>
|
|
||||||
|
|
||||||
<!-- CPU Accuracy -->
|
<!-- CPU Accuracy -->
|
||||||
<string name="cpu_accuracy_accurate">正確</string>
|
<string name="cpu_accuracy_accurate">正確</string>
|
||||||
<string name="cpu_accuracy_unsafe">不安定</string>
|
<string name="cpu_accuracy_unsafe">不安定</string>
|
||||||
|
@ -440,8 +383,6 @@
|
||||||
<string name="theme_mode_light">ライト</string>
|
<string name="theme_mode_light">ライト</string>
|
||||||
<string name="theme_mode_dark">ダーク</string>
|
<string name="theme_mode_dark">ダーク</string>
|
||||||
|
|
||||||
<!-- Audio output engines -->
|
|
||||||
<string name="oboe">oboe</string>
|
|
||||||
<string name="cubeb">cubeb</string>
|
<string name="cubeb">cubeb</string>
|
||||||
|
|
||||||
<!-- Anisotropic filtering options -->
|
<!-- Anisotropic filtering options -->
|
||||||
|
|
|
@ -133,11 +133,6 @@
|
||||||
<item quantity="other">%d개의 세이브를 가져왔습니다.</item>
|
<item quantity="other">%d개의 세이브를 가져왔습니다.</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<string name="no_save_data_found">세이브 데이터를 찾을 수 없음</string>
|
<string name="no_save_data_found">세이브 데이터를 찾을 수 없음</string>
|
||||||
<string name="verify_installed_content">설치된 콘텐츠 인증</string>
|
|
||||||
<string name="verify_installed_content_description">전체 설치된 콘텐츠의 손상을 확인합니다.</string>
|
|
||||||
<string name="keys_missing">암호화 키를 찾을 수 없음</string>
|
|
||||||
<string name="keys_missing_description">펌웨어 및 패키지 게임을 해독할 수 없음</string>
|
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<!-- Applet launcher strings -->
|
<!-- Applet launcher strings -->
|
||||||
<string name="applets">애플릿 런처</string>
|
<string name="applets">애플릿 런처</string>
|
||||||
|
@ -203,6 +198,7 @@
|
||||||
<string name="cpu_accuracy">CPU 정확도</string>
|
<string name="cpu_accuracy">CPU 정확도</string>
|
||||||
<string name="value_with_units">%1$s%2$s</string>
|
<string name="value_with_units">%1$s%2$s</string>
|
||||||
|
|
||||||
|
<!-- System settings strings -->
|
||||||
<string name="use_docked_mode">독 모드</string>
|
<string name="use_docked_mode">독 모드</string>
|
||||||
<string name="use_docked_mode_description">해상도를 높이며 성능이 저하됩니다. 비활성화시 휴대 모드가 사용되며 해상도는 낮아지고 성능은 향상됩니다.</string>
|
<string name="use_docked_mode_description">해상도를 높이며 성능이 저하됩니다. 비활성화시 휴대 모드가 사용되며 해상도는 낮아지고 성능은 향상됩니다.</string>
|
||||||
<string name="emulated_region">에뮬레이트 지역</string>
|
<string name="emulated_region">에뮬레이트 지역</string>
|
||||||
|
@ -247,48 +243,6 @@
|
||||||
<string name="audio_volume">볼륨</string>
|
<string name="audio_volume">볼륨</string>
|
||||||
<string name="audio_volume_description">오디오 출력의 볼륨을 지정합니다.</string>
|
<string name="audio_volume_description">오디오 출력의 볼륨을 지정합니다.</string>
|
||||||
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">B</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">+</string>
|
|
||||||
<string name="button_minus">-</string>
|
|
||||||
<string name="button_home">홈</string>
|
|
||||||
<string name="button_capture">캡쳐</string>
|
|
||||||
<string name="dpad">십자패드</string>
|
|
||||||
<string name="up">위</string>
|
|
||||||
<string name="down">아래</string>
|
|
||||||
<string name="left">왼쪽</string>
|
|
||||||
<string name="right">오른쪽</string>
|
|
||||||
<string name="left_stick">L 스틱</string>
|
|
||||||
<string name="right_stick">R 스틱</string>
|
|
||||||
<string name="c_stick">C-Stick</string>
|
|
||||||
<string name="pressed">누르기</string>
|
|
||||||
<string name="range">범위</string>
|
|
||||||
<string name="deadzone">데드존</string>
|
|
||||||
<string name="modifier">수정자</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">유효하지않음</string>
|
|
||||||
<string name="pro_controller">프로 컨트롤러</string>
|
|
||||||
<string name="handheld">휴대 모드</string>
|
|
||||||
<string name="dual_joycons">듀얼 조이콘</string>
|
|
||||||
<string name="left_joycon">왼쪽 조이콘</string>
|
|
||||||
<string name="right_joycon">오른쪽 조이콘</string>
|
|
||||||
<string name="gamecube_controller">GameCube 컨트롤러</string>
|
|
||||||
<string name="invert_axis">축 뒤집기</string>
|
|
||||||
<string name="invert_button">버튼 반전</string>
|
|
||||||
<string name="toggle_button">토글 버튼</string>
|
|
||||||
<string name="turbo_button">터보 버튼</string>
|
|
||||||
<string name="set_threshold">임계값 설정</string>
|
|
||||||
<string name="toggle_axis">axis 토글</string>
|
|
||||||
<string name="connected">연결됨</string>
|
|
||||||
<string name="vibration">진동</string>
|
|
||||||
<string name="profile">프로필</string>
|
|
||||||
<string name="use_global_input_configuration">글로벌 입력 구성 사용</string>
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">기본값</string>
|
<string name="slider_default">기본값</string>
|
||||||
<string name="ini_saved">설정이 저장되었습니다.</string>
|
<string name="ini_saved">설정이 저장되었습니다.</string>
|
||||||
|
@ -318,15 +272,13 @@
|
||||||
<string name="edit">편집</string>
|
<string name="edit">편집</string>
|
||||||
<string name="export_success">데이터를 내보냈습니다.</string>
|
<string name="export_success">데이터를 내보냈습니다.</string>
|
||||||
<string name="start">시작</string>
|
<string name="start">시작</string>
|
||||||
<string name="clear">비우기</string>
|
<string name="clear">초기화</string>
|
||||||
<string name="global">글로벌</string>
|
<string name="global">글로벌</string>
|
||||||
<string name="custom">커스텀</string>
|
<string name="custom">커스텀</string>
|
||||||
<string name="notice">알림</string>
|
<string name="notice">알림</string>
|
||||||
<string name="import_complete">가져오기 완료</string>
|
<string name="import_complete">가져오기 완료</string>
|
||||||
<string name="more_options">추가 옵션</string>
|
<string name="more_options">추가 옵션</string>
|
||||||
<string name="use_global_setting">글로벌 설정 사용</string>
|
<string name="use_global_setting">글로벌 설정 사용</string>
|
||||||
<string name="operation_completed_successfully">작업이 완료되었습니다.</string>
|
|
||||||
<string name="save">저장</string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
<string name="select_gpu_driver">GPU 드라이버 선택</string>
|
<string name="select_gpu_driver">GPU 드라이버 선택</string>
|
||||||
|
@ -348,7 +300,6 @@
|
||||||
<string name="preferences_graphics_description">정확도 수준, 해상도, 셰이더 캐시</string>
|
<string name="preferences_graphics_description">정확도 수준, 해상도, 셰이더 캐시</string>
|
||||||
<string name="preferences_audio">오디오</string>
|
<string name="preferences_audio">오디오</string>
|
||||||
<string name="preferences_audio_description">출력 엔진, 불륨</string>
|
<string name="preferences_audio_description">출력 엔진, 불륨</string>
|
||||||
<string name="preferences_controls">조작</string>
|
|
||||||
<string name="preferences_theme">테마 및 색상</string>
|
<string name="preferences_theme">테마 및 색상</string>
|
||||||
<string name="preferences_debug">디버그</string>
|
<string name="preferences_debug">디버그</string>
|
||||||
<string name="preferences_debug_description">CPU/GPU 디버깅, 그래픽 API, Fastmem</string>
|
<string name="preferences_debug_description">CPU/GPU 디버깅, 그래픽 API, Fastmem</string>
|
||||||
|
@ -359,7 +310,7 @@
|
||||||
<string name="per_game_settings">게임별 설정</string>
|
<string name="per_game_settings">게임별 설정</string>
|
||||||
<string name="per_game_settings_description">현재 게임에 적용되는 설정을 편집합니다.</string>
|
<string name="per_game_settings_description">현재 게임에 적용되는 설정을 편집합니다.</string>
|
||||||
<string name="launch_options">실행 구성</string>
|
<string name="launch_options">실행 구성</string>
|
||||||
<string name="path">경로</string>
|
<string name="path">주소</string>
|
||||||
<string name="program_id">프로그램 ID</string>
|
<string name="program_id">프로그램 ID</string>
|
||||||
<string name="developer">개발자</string>
|
<string name="developer">개발자</string>
|
||||||
<string name="version">버전</string>
|
<string name="version">버전</string>
|
||||||
|
@ -392,14 +343,6 @@
|
||||||
<string name="content_install_notice_description">선택한 콘텐츠가 현재 게임과 일치하지 않습니다.\n무시하고 설치하시겠습니까?</string>
|
<string name="content_install_notice_description">선택한 콘텐츠가 현재 게임과 일치하지 않습니다.\n무시하고 설치하시겠습니까?</string>
|
||||||
<string name="confirm_uninstall">제거 확인</string>
|
<string name="confirm_uninstall">제거 확인</string>
|
||||||
<string name="confirm_uninstall_description">이 애드온을 제거하시겠습니까?</string>
|
<string name="confirm_uninstall_description">이 애드온을 제거하시겠습니까?</string>
|
||||||
<string name="verify_integrity">무결성 인증</string>
|
|
||||||
<string name="verifying">인증 중...</string>
|
|
||||||
<string name="verify_success">무결성 인증에 성공했습니다.</string>
|
|
||||||
<string name="verify_failure">무결성 인증에 실패했습니다.</string>
|
|
||||||
<string name="verify_failure_description">파일 콘텐츠가 손상되었을 수 있습니다.</string>
|
|
||||||
<string name="verify_no_result">무결성 인증을 진행할 수 없습니다.</string>
|
|
||||||
<string name="verify_no_result_description">파일 콘텐츠의 유효성 검사가 진행되지 않았습니다.</string>
|
|
||||||
<string name="verification_failed_for">검증 실패 파일 목록:\n%1$s</string>
|
|
||||||
|
|
||||||
<!-- ROM loading errors -->
|
<!-- ROM loading errors -->
|
||||||
<string name="loader_error_encrypted">롬 파일이 암호화되어있음</string>
|
<string name="loader_error_encrypted">롬 파일이 암호화되어있음</string>
|
||||||
|
@ -429,8 +372,6 @@
|
||||||
<string name="emulation_unpause">에뮬레이션 일시 중지 해제</string>
|
<string name="emulation_unpause">에뮬레이션 일시 중지 해제</string>
|
||||||
<string name="emulation_input_overlay">화면 오버레이 설정</string>
|
<string name="emulation_input_overlay">화면 오버레이 설정</string>
|
||||||
<string name="touchscreen">터치 스크린</string>
|
<string name="touchscreen">터치 스크린</string>
|
||||||
<string name="lock_drawer">에뮬레이터 메뉴 잠금</string>
|
|
||||||
<string name="unlock_drawer">에뮬레이터 메뉴 잠금 해제</string>
|
|
||||||
|
|
||||||
<string name="load_settings">설정 불러오는 중...</string>
|
<string name="load_settings">설정 불러오는 중...</string>
|
||||||
|
|
||||||
|
@ -465,7 +406,7 @@
|
||||||
<string name="memory_byte_shorthand">B</string>
|
<string name="memory_byte_shorthand">B</string>
|
||||||
<string name="memory_kilobyte">KB</string>
|
<string name="memory_kilobyte">KB</string>
|
||||||
<string name="memory_megabyte">MB</string>
|
<string name="memory_megabyte">MB</string>
|
||||||
<string name="memory_gigabyte">GB</string>
|
<string name="memory_gigabyte">영국 하계 표준시(GB)</string>
|
||||||
<string name="memory_terabyte">TB</string>
|
<string name="memory_terabyte">TB</string>
|
||||||
<string name="memory_petabyte">PB</string>
|
<string name="memory_petabyte">PB</string>
|
||||||
<string name="memory_exabyte">EB</string>
|
<string name="memory_exabyte">EB</string>
|
||||||
|
@ -508,12 +449,12 @@
|
||||||
|
|
||||||
<!-- Screen Layouts -->
|
<!-- Screen Layouts -->
|
||||||
<string name="screen_layout_auto">자동</string>
|
<string name="screen_layout_auto">자동</string>
|
||||||
<string name="screen_layout_sensor_landscape">가로 (방향 감지)</string>
|
<string name="screen_layout_sensor_landscape">가로 고정 (방향 감지)</string>
|
||||||
<string name="screen_layout_landscape">가로</string>
|
<string name="screen_layout_landscape">가로</string>
|
||||||
<string name="screen_layout_reverse_landscape">가로 (역방향)</string>
|
<string name="screen_layout_reverse_landscape">가로 고정 (역방향 고정)</string>
|
||||||
<string name="screen_layout_sensor_portrait">세로 (방향 감지)</string>
|
<string name="screen_layout_sensor_portrait">세로 고정 (방향 감지)</string>
|
||||||
<string name="screen_layout_portrait">세로</string>
|
<string name="screen_layout_portrait">세로</string>
|
||||||
<string name="screen_layout_reverse_portrait">세로 (역방향)</string>
|
<string name="screen_layout_reverse_portrait">세로 고정 (역방향 고정)</string>
|
||||||
|
|
||||||
<!-- Aspect Ratios -->
|
<!-- Aspect Ratios -->
|
||||||
<string name="ratio_default">기본 (16:9)</string>
|
<string name="ratio_default">기본 (16:9)</string>
|
||||||
|
|
|
@ -95,8 +95,6 @@
|
||||||
<string name="install_game_content">Installer spillinnhold</string>
|
<string name="install_game_content">Installer spillinnhold</string>
|
||||||
<string name="install_game_content_description">Installer spilloppdateringer eller DLC</string>
|
<string name="install_game_content_description">Installer spilloppdateringer eller DLC</string>
|
||||||
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<!-- About screen strings -->
|
<!-- About screen strings -->
|
||||||
<string name="gaia_is_not_real">Gaia er ikke ekte</string>
|
<string name="gaia_is_not_real">Gaia er ikke ekte</string>
|
||||||
<string name="copied_to_clipboard">Kopiert til utklippstavlen</string>
|
<string name="copied_to_clipboard">Kopiert til utklippstavlen</string>
|
||||||
|
@ -130,6 +128,7 @@
|
||||||
<string name="frame_limit_slider">Hastighetsbegrensning i prosent</string>
|
<string name="frame_limit_slider">Hastighetsbegrensning i prosent</string>
|
||||||
<string name="frame_limit_slider_description">Angir prosentandelen som skal begrense emuleringshastigheten. 100 % er normal hastighet. Høyere eller lavere verdier vil øke eller redusere hastighetsgrensen.</string>
|
<string name="frame_limit_slider_description">Angir prosentandelen som skal begrense emuleringshastigheten. 100 % er normal hastighet. Høyere eller lavere verdier vil øke eller redusere hastighetsgrensen.</string>
|
||||||
<string name="cpu_accuracy">CPU-nøyaktighet</string>
|
<string name="cpu_accuracy">CPU-nøyaktighet</string>
|
||||||
|
<!-- System settings strings -->
|
||||||
<string name="use_docked_mode">Dokket modus</string>
|
<string name="use_docked_mode">Dokket modus</string>
|
||||||
<string name="use_docked_mode_description">Øker oppløsningen, men reduserer ytelsen. Håndholdt modus brukes når den er deaktivert, noe som reduserer oppløsningen og øker ytelsen.</string>
|
<string name="use_docked_mode_description">Øker oppløsningen, men reduserer ytelsen. Håndholdt modus brukes når den er deaktivert, noe som reduserer oppløsningen og øker ytelsen.</string>
|
||||||
<string name="emulated_region">Emulert region</string>
|
<string name="emulated_region">Emulert region</string>
|
||||||
|
@ -163,48 +162,6 @@
|
||||||
<string name="audio_volume">Volum</string>
|
<string name="audio_volume">Volum</string>
|
||||||
<string name="audio_volume_description">Angir volumet på lydutgangen.</string>
|
<string name="audio_volume_description">Angir volumet på lydutgangen.</string>
|
||||||
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">B</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">Pluss</string>
|
|
||||||
<string name="button_minus">Minus</string>
|
|
||||||
<string name="button_home">Hjem</string>
|
|
||||||
<string name="button_capture">Opptak</string>
|
|
||||||
<string name="dpad">D-Pad</string>
|
|
||||||
<string name="up">Opp</string>
|
|
||||||
<string name="down">Ned</string>
|
|
||||||
<string name="left">Venstre</string>
|
|
||||||
<string name="right">Høyre</string>
|
|
||||||
<string name="left_stick">Venstre spak</string>
|
|
||||||
<string name="right_stick">Høyre spak</string>
|
|
||||||
<string name="c_stick">C-stikke</string>
|
|
||||||
<string name="pressed">Trykket</string>
|
|
||||||
<string name="range">Område</string>
|
|
||||||
<string name="deadzone">Dødsone</string>
|
|
||||||
<string name="modifier">Modifikator</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">Ugyldig</string>
|
|
||||||
<string name="pro_controller">Pro-Kontroller</string>
|
|
||||||
<string name="handheld">Håndholdt</string>
|
|
||||||
<string name="dual_joycons">Doble Joycons</string>
|
|
||||||
<string name="left_joycon">Venstre Joycon</string>
|
|
||||||
<string name="right_joycon">Høyre Joycon</string>
|
|
||||||
<string name="gamecube_controller">GameCube-kontroller</string>
|
|
||||||
<string name="invert_axis">Inverter akse</string>
|
|
||||||
<string name="invert_button">Inverter knapp</string>
|
|
||||||
<string name="toggle_button">Veksle knapp</string>
|
|
||||||
<string name="turbo_button">Turbo-Knapp</string>
|
|
||||||
<string name="set_threshold">Set grense</string>
|
|
||||||
<string name="toggle_axis">veksle akse</string>
|
|
||||||
<string name="connected">Tilkoblet</string>
|
|
||||||
<string name="vibration">Vibrasjon</string>
|
|
||||||
<string name="profile">Profil</string>
|
|
||||||
<string name="use_global_input_configuration">Bruk global inndatakonfigurasjon</string>
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">Standard</string>
|
<string name="slider_default">Standard</string>
|
||||||
<string name="ini_saved">Lagrede innstillinger</string>
|
<string name="ini_saved">Lagrede innstillinger</string>
|
||||||
|
@ -227,8 +184,6 @@
|
||||||
<string name="delete">Slett</string>
|
<string name="delete">Slett</string>
|
||||||
<string name="start">Start</string>
|
<string name="start">Start</string>
|
||||||
<string name="clear">Fjern</string>
|
<string name="clear">Fjern</string>
|
||||||
<string name="save">Lagre</string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
<string name="select_gpu_driver">Velg GPU-driver</string>
|
<string name="select_gpu_driver">Velg GPU-driver</string>
|
||||||
<string name="select_gpu_driver_title">Ønsker du å bytte ut din nåværende GPU-driver?</string>
|
<string name="select_gpu_driver_title">Ønsker du å bytte ut din nåværende GPU-driver?</string>
|
||||||
|
@ -244,7 +199,6 @@
|
||||||
<string name="preferences_system">System</string>
|
<string name="preferences_system">System</string>
|
||||||
<string name="preferences_graphics">Grafikk</string>
|
<string name="preferences_graphics">Grafikk</string>
|
||||||
<string name="preferences_audio">Lyd</string>
|
<string name="preferences_audio">Lyd</string>
|
||||||
<string name="preferences_controls">Kontrollere</string>
|
|
||||||
<string name="preferences_theme">Tema og farge</string>
|
<string name="preferences_theme">Tema og farge</string>
|
||||||
<string name="preferences_debug">Feilsøk</string>
|
<string name="preferences_debug">Feilsøk</string>
|
||||||
<!-- Game properties -->
|
<!-- Game properties -->
|
||||||
|
@ -253,8 +207,6 @@
|
||||||
<string name="developer">Utvikler</string>
|
<string name="developer">Utvikler</string>
|
||||||
<string name="version">Versjon</string>
|
<string name="version">Versjon</string>
|
||||||
<string name="add_ons">Tilleggsprogrammer</string>
|
<string name="add_ons">Tilleggsprogrammer</string>
|
||||||
<string name="verify_success">Integritetsverifisering vellykket!</string>
|
|
||||||
<string name="verify_failure">Integritetsverifisering mislyktes!</string>
|
|
||||||
<!-- ROM loading errors -->
|
<!-- ROM loading errors -->
|
||||||
<string name="loader_error_encrypted">ROM-en din er kryptert</string>
|
<string name="loader_error_encrypted">ROM-en din er kryptert</string>
|
||||||
<string name="loader_error_encrypted_keys_description"><![CDATA[Vennligst sørg for at <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> filen er installert slik at spillene kan dekrypteres.]]></string>
|
<string name="loader_error_encrypted_keys_description"><![CDATA[Vennligst sørg for at <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> filen er installert slik at spillene kan dekrypteres.]]></string>
|
||||||
|
@ -282,6 +234,7 @@
|
||||||
<string name="emulation_unpause">Ta emuleringen ut av pause</string>
|
<string name="emulation_unpause">Ta emuleringen ut av pause</string>
|
||||||
<string name="emulation_input_overlay">Overlay-alternativer</string>
|
<string name="emulation_input_overlay">Overlay-alternativer</string>
|
||||||
<string name="touchscreen">Touch-skjerm</string>
|
<string name="touchscreen">Touch-skjerm</string>
|
||||||
|
|
||||||
<string name="load_settings">Laster inn innstillinger...</string>
|
<string name="load_settings">Laster inn innstillinger...</string>
|
||||||
|
|
||||||
<!-- Software keyboard -->
|
<!-- Software keyboard -->
|
||||||
|
|
|
@ -95,8 +95,6 @@
|
||||||
<string name="install_game_content">Zainstaluj zawartość gry</string>
|
<string name="install_game_content">Zainstaluj zawartość gry</string>
|
||||||
<string name="install_game_content_description">Zainstaluj aktualizację gry lub dodatek DLC</string>
|
<string name="install_game_content_description">Zainstaluj aktualizację gry lub dodatek DLC</string>
|
||||||
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<!-- About screen strings -->
|
<!-- About screen strings -->
|
||||||
<string name="gaia_is_not_real">Gaia isn\'t real</string>
|
<string name="gaia_is_not_real">Gaia isn\'t real</string>
|
||||||
<string name="copied_to_clipboard">Skopiowano do schowka</string>
|
<string name="copied_to_clipboard">Skopiowano do schowka</string>
|
||||||
|
@ -130,6 +128,7 @@
|
||||||
<string name="frame_limit_slider">Procentowy limit szybkości emulacji</string>
|
<string name="frame_limit_slider">Procentowy limit szybkości emulacji</string>
|
||||||
<string name="frame_limit_slider_description">Określa limit szybkości emulacji gier. Domyślna wartość 100% oznacza normalną szybkość z jaką działa gra. Wartości niższe lub wyższe zmniejszą lub zwiększą limit szybkości.</string>
|
<string name="frame_limit_slider_description">Określa limit szybkości emulacji gier. Domyślna wartość 100% oznacza normalną szybkość z jaką działa gra. Wartości niższe lub wyższe zmniejszą lub zwiększą limit szybkości.</string>
|
||||||
<string name="cpu_accuracy">Dokładność procesora CPU</string>
|
<string name="cpu_accuracy">Dokładność procesora CPU</string>
|
||||||
|
<!-- System settings strings -->
|
||||||
<string name="use_docked_mode">Tryb zadokowany</string>
|
<string name="use_docked_mode">Tryb zadokowany</string>
|
||||||
<string name="use_docked_mode_description">Zwiększa rozdzielczość kosztem wydajności. Kiedy wyłączone, używany jest tryb Handheld, który obniża rozdzielczość i dzięki temu zwiększa wydajność.</string>
|
<string name="use_docked_mode_description">Zwiększa rozdzielczość kosztem wydajności. Kiedy wyłączone, używany jest tryb Handheld, który obniża rozdzielczość i dzięki temu zwiększa wydajność.</string>
|
||||||
<string name="emulated_region">Region emulacji</string>
|
<string name="emulated_region">Region emulacji</string>
|
||||||
|
@ -163,48 +162,6 @@
|
||||||
<string name="audio_volume">Głośność</string>
|
<string name="audio_volume">Głośność</string>
|
||||||
<string name="audio_volume_description">Ustala poziom głośności wyjścia dźwięku.</string>
|
<string name="audio_volume_description">Ustala poziom głośności wyjścia dźwięku.</string>
|
||||||
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">B</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">Plus</string>
|
|
||||||
<string name="button_minus">Minus</string>
|
|
||||||
<string name="button_home">Home</string>
|
|
||||||
<string name="button_capture">Zrzut ekranu</string>
|
|
||||||
<string name="dpad">D-Pad</string>
|
|
||||||
<string name="up">Góra</string>
|
|
||||||
<string name="down">Dół</string>
|
|
||||||
<string name="left">Lewo</string>
|
|
||||||
<string name="right">Prawo</string>
|
|
||||||
<string name="left_stick">Lewa gałka</string>
|
|
||||||
<string name="right_stick">Prawa gałka</string>
|
|
||||||
<string name="c_stick">C-gałka</string>
|
|
||||||
<string name="pressed">Naciśnięty</string>
|
|
||||||
<string name="range">Zasięg</string>
|
|
||||||
<string name="modifier">Modyfikator</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">Nieprawidłowe</string>
|
|
||||||
<string name="unknown">Nieznany</string>
|
|
||||||
<string name="pro_controller">Pro kontroler</string>
|
|
||||||
<string name="handheld">Przenośnie</string>
|
|
||||||
<string name="dual_joycons">Para Joyconów</string>
|
|
||||||
<string name="left_joycon">Lewy Joycon</string>
|
|
||||||
<string name="right_joycon">Prawy Joycon</string>
|
|
||||||
<string name="gamecube_controller">Kontroler GameCube</string>
|
|
||||||
<string name="invert_axis">Odwróć oś</string>
|
|
||||||
<string name="invert_button">Odwróć przycisk</string>
|
|
||||||
<string name="toggle_button">Przycisk Toggle</string>
|
|
||||||
<string name="turbo_button">Przycisk TURBO</string>
|
|
||||||
<string name="set_threshold">Ustaw próg</string>
|
|
||||||
<string name="toggle_axis">Przełącz oś</string>
|
|
||||||
<string name="connected">Połączono</string>
|
|
||||||
<string name="vibration">Wibracje</string>
|
|
||||||
<string name="profile">Profil</string>
|
|
||||||
<string name="use_global_input_configuration">Użyj globalnej konfiguracji wejściowej</string>
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">Domyślne</string>
|
<string name="slider_default">Domyślne</string>
|
||||||
<string name="ini_saved">Ustawienia zapisane</string>
|
<string name="ini_saved">Ustawienia zapisane</string>
|
||||||
|
@ -227,8 +184,6 @@
|
||||||
<string name="start">Start</string>
|
<string name="start">Start</string>
|
||||||
<string name="clear">Wyczyść</string>
|
<string name="clear">Wyczyść</string>
|
||||||
<string name="custom">Losowy</string>
|
<string name="custom">Losowy</string>
|
||||||
<string name="save">Zapisz</string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
<string name="select_gpu_driver">Wybierz sterownik GPU </string>
|
<string name="select_gpu_driver">Wybierz sterownik GPU </string>
|
||||||
<string name="select_gpu_driver_title">Chcesz zastąpić obecny sterownik układu graficznego?</string>
|
<string name="select_gpu_driver_title">Chcesz zastąpić obecny sterownik układu graficznego?</string>
|
||||||
|
@ -244,7 +199,6 @@
|
||||||
<string name="preferences_system">System</string>
|
<string name="preferences_system">System</string>
|
||||||
<string name="preferences_graphics">Grafika</string>
|
<string name="preferences_graphics">Grafika</string>
|
||||||
<string name="preferences_audio">Dźwięk</string>
|
<string name="preferences_audio">Dźwięk</string>
|
||||||
<string name="preferences_controls">Sterowanie</string>
|
|
||||||
<string name="preferences_theme">Motyw i kolor</string>
|
<string name="preferences_theme">Motyw i kolor</string>
|
||||||
<string name="preferences_debug">Debug</string>
|
<string name="preferences_debug">Debug</string>
|
||||||
<!-- Game properties -->
|
<!-- Game properties -->
|
||||||
|
@ -280,6 +234,7 @@
|
||||||
<string name="emulation_unpause">Wznów emulację</string>
|
<string name="emulation_unpause">Wznów emulację</string>
|
||||||
<string name="emulation_input_overlay">Opcje nakładki</string>
|
<string name="emulation_input_overlay">Opcje nakładki</string>
|
||||||
<string name="touchscreen">Ekran dotykowy</string>
|
<string name="touchscreen">Ekran dotykowy</string>
|
||||||
|
|
||||||
<string name="load_settings">Wczytuję ustawienia...</string>
|
<string name="load_settings">Wczytuję ustawienia...</string>
|
||||||
|
|
||||||
<!-- Software keyboard -->
|
<!-- Software keyboard -->
|
||||||
|
|
|
@ -22,16 +22,16 @@
|
||||||
<string name="back">Voltar</string>
|
<string name="back">Voltar</string>
|
||||||
<string name="add_games">Adicionar Jogos</string>
|
<string name="add_games">Adicionar Jogos</string>
|
||||||
<string name="add_games_description">Selecione sua pasta de Jogos</string>
|
<string name="add_games_description">Selecione sua pasta de Jogos</string>
|
||||||
<string name="step_complete">Concluído!</string>
|
<string name="step_complete">Completo!</string>
|
||||||
|
|
||||||
<!-- Home strings -->
|
<!-- Home strings -->
|
||||||
<string name="home_games">Jogos</string>
|
<string name="home_games">Jogos</string>
|
||||||
<string name="home_search">Pesquisar</string>
|
<string name="home_search">Pesquisar</string>
|
||||||
<string name="home_settings">Configurações</string>
|
<string name="home_settings">Configurações</string>
|
||||||
<string name="empty_gamelist">Não foram encontrados jogos ou a pasta de Jogos ainda não foi definida. </string>
|
<string name="empty_gamelist">Não foram encontrados jogos ou a pasta de Jogos ainda não foi definida. </string>
|
||||||
<string name="search_and_filter_games">Procura e filtra jogos</string>
|
<string name="search_and_filter_games">Procura e filtra jogos.</string>
|
||||||
<string name="select_games_folder">Seleciona a pasta de jogos</string>
|
<string name="select_games_folder">Seleciona a pasta de jogos.</string>
|
||||||
<string name="manage_game_folders">Gerenciar pastas de jogos</string>
|
<string name="manage_game_folders">Gerencie as pastas de jogos</string>
|
||||||
<string name="select_games_folder_description">Permite que o Yuzu preencha a lista de jogos</string>
|
<string name="select_games_folder_description">Permite que o Yuzu preencha a lista de jogos</string>
|
||||||
<string name="add_games_warning">Ignorar a seleção da pasta de jogos?</string>
|
<string name="add_games_warning">Ignorar a seleção da pasta de jogos?</string>
|
||||||
<string name="add_games_warning_description">Os jogos não serão exibidos na lista de jogos se uma pasta não estiver selecionada.</string>
|
<string name="add_games_warning_description">Os jogos não serão exibidos na lista de jogos se uma pasta não estiver selecionada.</string>
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
<string name="search_settings">Procurar nas configurações</string>
|
<string name="search_settings">Procurar nas configurações</string>
|
||||||
<string name="games_dir_selected">Pasta de jogos selecionada</string>
|
<string name="games_dir_selected">Pasta de jogos selecionada</string>
|
||||||
<string name="install_prod_keys">Instalar prod.keys</string>
|
<string name="install_prod_keys">Instalar prod.keys</string>
|
||||||
<string name="install_prod_keys_description">Necessárias para desencriptar jogos comerciais</string>
|
<string name="install_prod_keys_description">Necessário para desencriptar jogos comerciais</string>
|
||||||
<string name="install_prod_keys_warning">Ignorar a adição de chaves?</string>
|
<string name="install_prod_keys_warning">Ignorar a adição de chaves?</string>
|
||||||
<string name="install_prod_keys_warning_description">São necessárias chaves válidas para emular jogos comerciais. Somente aplicativos homebrew funcionarão se você continuar.</string>
|
<string name="install_prod_keys_warning_description">São necessárias chaves válidas para emular jogos comerciais. Somente aplicativos homebrew funcionarão se você continuar.</string>
|
||||||
<string name="install_prod_keys_warning_help">https://yuzu-emu.org/help/quickstart/#guide-introduction</string>
|
<string name="install_prod_keys_warning_help">https://yuzu-emu.org/help/quickstart/#guide-introduction</string>
|
||||||
|
@ -48,16 +48,16 @@
|
||||||
<string name="notifications_description">Conceda a permissão de notificação com o botão abaixo.</string>
|
<string name="notifications_description">Conceda a permissão de notificação com o botão abaixo.</string>
|
||||||
<string name="give_permission">Conceder permissão</string>
|
<string name="give_permission">Conceder permissão</string>
|
||||||
<string name="notification_warning">Ignorar a concessão da permissão de notificação?</string>
|
<string name="notification_warning">Ignorar a concessão da permissão de notificação?</string>
|
||||||
<string name="notification_warning_description">O Yuzu não irá te notificar de informações importantes. </string>
|
<string name="notification_warning_description">Yuzu não conseguirá te notificar de informações importantes. </string>
|
||||||
<string name="permission_denied">Permissão negada</string>
|
<string name="permission_denied">Permissão negada</string>
|
||||||
<string name="permission_denied_description">Você negou essa permissão muitas vezes e agora precisa concedê-la manualmente nas configurações do sistema.</string>
|
<string name="permission_denied_description">Você negou essa permissão muitas vezes e agora precisa concedê-la manualmente nas configurações do sistema.</string>
|
||||||
<string name="about">Sobre</string>
|
<string name="about">Sobre</string>
|
||||||
<string name="about_description">Versão da compilação, créditos e mais</string>
|
<string name="about_description">Versão de compilação, créditos e mais</string>
|
||||||
<string name="warning_help">Ajuda</string>
|
<string name="warning_help">Ajuda</string>
|
||||||
<string name="warning_skip">Ignorar</string>
|
<string name="warning_skip">Ignorar</string>
|
||||||
<string name="warning_cancel">Cancelar</string>
|
<string name="warning_cancel">Cancelar</string>
|
||||||
<string name="install_amiibo_keys">Instalar chaves Amiibo</string>
|
<string name="install_amiibo_keys">Instalar chaves Amiibo</string>
|
||||||
<string name="install_amiibo_keys_description">Necessárias para usar Amiibos em um jogo</string>
|
<string name="install_amiibo_keys_description">Necessário para usar Amiibos em um jogo</string>
|
||||||
<string name="invalid_keys_file">Arquivo de chaves selecionado inválido</string>
|
<string name="invalid_keys_file">Arquivo de chaves selecionado inválido</string>
|
||||||
<string name="install_keys_success">Chaves instaladas com sucesso</string>
|
<string name="install_keys_success">Chaves instaladas com sucesso</string>
|
||||||
<string name="reading_keys_failure">Erro ao ler chaves de encriptação</string>
|
<string name="reading_keys_failure">Erro ao ler chaves de encriptação</string>
|
||||||
|
@ -67,8 +67,8 @@
|
||||||
<string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
<string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||||
<string name="install_keys_failure_description">O arquivo selecionado está incorreto ou corrompido. Por favor extraia suas chaves novamente.</string>
|
<string name="install_keys_failure_description">O arquivo selecionado está incorreto ou corrompido. Por favor extraia suas chaves novamente.</string>
|
||||||
<string name="gpu_driver_manager">Gerenciador de driver de GPU</string>
|
<string name="gpu_driver_manager">Gerenciador de driver de GPU</string>
|
||||||
<string name="install_gpu_driver">Instalar driver para GPU</string>
|
<string name="install_gpu_driver">Instala driver para GPU</string>
|
||||||
<string name="install_gpu_driver_description">Instale drivers alternativos para desempenho ou precisão potencialmente melhores</string>
|
<string name="install_gpu_driver_description">Instala drivers alternativos para desempenho ou precisão potencialmente melhores</string>
|
||||||
<string name="advanced_settings">Configurações avançadas</string>
|
<string name="advanced_settings">Configurações avançadas</string>
|
||||||
<string name="advanced_settings_game">Configurações avançadas: %1$s</string>
|
<string name="advanced_settings_game">Configurações avançadas: %1$s</string>
|
||||||
<string name="settings_description">Configure opções do emulador</string>
|
<string name="settings_description">Configure opções do emulador</string>
|
||||||
|
@ -81,17 +81,17 @@
|
||||||
<string name="theme_and_color_description">Altere a aparência do aplicativo</string>
|
<string name="theme_and_color_description">Altere a aparência do aplicativo</string>
|
||||||
<string name="no_file_manager">Nenhum gerenciador de arquivos encontrado</string>
|
<string name="no_file_manager">Nenhum gerenciador de arquivos encontrado</string>
|
||||||
<string name="notification_no_directory_link">Não foi possível abrir a pasta do Yuzu</string>
|
<string name="notification_no_directory_link">Não foi possível abrir a pasta do Yuzu</string>
|
||||||
<string name="notification_no_directory_link_description">Por favor localize manualmente a pasta do usuário, com o painel lateral do gerenciador de arquivos.</string>
|
<string name="notification_no_directory_link_description">Por favor localize a pasta do usuário com o painel lateral do gerenciador de arquivos manualmente.</string>
|
||||||
<string name="manage_save_data">Gerenciar os dados salvos dos jogos</string>
|
<string name="manage_save_data">Gerenciar os dados salvos dos jogos</string>
|
||||||
<string name="manage_save_data_description">Dados salvos encontrados. Por favor selecione uma opção abaixo.</string>
|
<string name="manage_save_data_description">Dados salvos encontrados. Por favor selecione uma opção abaixo.</string>
|
||||||
<string name="import_save_warning">Importar dados salvos</string>
|
<string name="import_save_warning">Importar dados salvos</string>
|
||||||
<string name="import_save_warning_description">Isso irá substituir seus dados salvos com o arquivo selecionado. Você tem certeza que quer continuar?</string>
|
<string name="import_save_warning_description">Isso irá sobrescrever seus dados salvos com o arquivo selecionado. Você tem certeza que quer continuar?</string>
|
||||||
<string name="import_export_saves_description">Importa ou exporta arquivos de dados salvos</string>
|
<string name="import_export_saves_description">Importa ou exporta arquivos de dados salvos</string>
|
||||||
<string name="save_files_importing">Importando dados salvos...</string>
|
<string name="save_files_importing">Importando dados salvos...</string>
|
||||||
<string name="save_files_exporting">Exportando arquivos de dados salvos...</string>
|
<string name="save_files_exporting">Exportando arquivos de dados salvos...</string>
|
||||||
<string name="save_file_imported_success">Importado com sucesso</string>
|
<string name="save_file_imported_success">Importado com sucesso</string>
|
||||||
<string name="save_file_invalid_zip_structure">Estrutura de diretório de dados salvos inválida</string>
|
<string name="save_file_invalid_zip_structure">Estrutura de diretório de dados salvos inválida</string>
|
||||||
<string name="save_file_invalid_zip_structure_description">O nome da primeira subpasta deve ser a ID do jogo.</string>
|
<string name="save_file_invalid_zip_structure_description">O nome da primeira sub pasta deve ser a ID do jogo.</string>
|
||||||
<string name="import_saves">Importar</string>
|
<string name="import_saves">Importar</string>
|
||||||
<string name="export_saves">Exportar</string>
|
<string name="export_saves">Exportar</string>
|
||||||
<string name="install_firmware">Instalar firmware</string>
|
<string name="install_firmware">Instalar firmware</string>
|
||||||
|
@ -100,11 +100,11 @@
|
||||||
<string name="firmware_installed_success">Firmware instalado com sucesso.</string>
|
<string name="firmware_installed_success">Firmware instalado com sucesso.</string>
|
||||||
<string name="firmware_installed_failure">Falha na instalação do firmware</string>
|
<string name="firmware_installed_failure">Falha na instalação do firmware</string>
|
||||||
<string name="firmware_installed_failure_description">Verifique se os arquivos nca do firmware estão na raiz do arquivo zip e tente novamente.</string>
|
<string name="firmware_installed_failure_description">Verifique se os arquivos nca do firmware estão na raiz do arquivo zip e tente novamente.</string>
|
||||||
<string name="share_log">Compartilhar registros de depuração</string>
|
<string name="share_log">Compartilhar registros de debug</string>
|
||||||
<string name="share_log_description">Compartilhe o arquivo de registro do yuzu para obter ajuda com problemas</string>
|
<string name="share_log_description">Compartilhe o arquivo de registro do yuzu para obter ajuda com problemas</string>
|
||||||
<string name="share_log_missing">Arquivo de registro não encontrado</string>
|
<string name="share_log_missing">Arquivo de registro não encontrado</string>
|
||||||
<string name="install_game_content">Instalar conteúdo de jogos</string>
|
<string name="install_game_content">Instalar conteúdo de jogos</string>
|
||||||
<string name="install_game_content_description">Instale atualizações de jogos ou DLC</string>
|
<string name="install_game_content_description">Instala atualizações de jogos ou DLC</string>
|
||||||
<string name="installing_game_content">Instalando conteúdo...</string>
|
<string name="installing_game_content">Instalando conteúdo...</string>
|
||||||
<string name="install_game_content_failure">Erro ao instalar arquivo(s) na NAND</string>
|
<string name="install_game_content_failure">Erro ao instalar arquivo(s) na NAND</string>
|
||||||
<string name="install_game_content_failure_description">Por favor certifique-se de que o(s) conteúdo(s) é (são) válido(s) e que as prod.keys estão instaladas.</string>
|
<string name="install_game_content_failure_description">Por favor certifique-se de que o(s) conteúdo(s) é (são) válido(s) e que as prod.keys estão instaladas.</string>
|
||||||
|
@ -116,9 +116,9 @@
|
||||||
<string name="install_game_content_success_overwrite">%1$d substituído com sucesso</string>
|
<string name="install_game_content_success_overwrite">%1$d substituído com sucesso</string>
|
||||||
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
||||||
<string name="custom_driver_not_supported">Drivers personalizados não suportados</string>
|
<string name="custom_driver_not_supported">Drivers personalizados não suportados</string>
|
||||||
<string name="custom_driver_not_supported_description">Carregamento de drivers personalizados não suportado para este dispositivo no momento.\nVerifique essa opção novamente no futuro para ver se o suporte foi adicionado!</string>
|
<string name="custom_driver_not_supported_description">Carregamento de drivers personalizados não suportado para este dispositivo no momento.\nVerifique esse opção novamente no futuro para ver se o suporte foi adicionado!</string>
|
||||||
<string name="manage_yuzu_data">Administrar dados do yuzu</string>
|
<string name="manage_yuzu_data">Administrar dados do yuzu</string>
|
||||||
<string name="manage_yuzu_data_description">Importe/exporte firmware, chaves, dados do usuário e mais!</string>
|
<string name="manage_yuzu_data_description">Importa/exporta firmware, chaves, dados do usuário e mais!</string>
|
||||||
<string name="share_save_file">Compartilhar arquivo de dados salvos</string>
|
<string name="share_save_file">Compartilhar arquivo de dados salvos</string>
|
||||||
<string name="export_save_failed">Erro ao exportar arquivo de dados salvos</string>
|
<string name="export_save_failed">Erro ao exportar arquivo de dados salvos</string>
|
||||||
<string name="game_folders">Pastas de jogos</string>
|
<string name="game_folders">Pastas de jogos</string>
|
||||||
|
@ -137,25 +137,20 @@
|
||||||
<item quantity="other">Dados salvos de %d importados com sucesso</item>
|
<item quantity="other">Dados salvos de %d importados com sucesso</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<string name="no_save_data_found">Dados salvos não encontrados</string>
|
<string name="no_save_data_found">Dados salvos não encontrados</string>
|
||||||
<string name="verify_installed_content">Verificar conteúdo instalado</string>
|
|
||||||
<string name="verify_installed_content_description">Verifica todo o conteúdo instalado em busca de dados corrompidos</string>
|
|
||||||
<string name="keys_missing">Faltando chaves de encriptação</string>
|
|
||||||
<string name="keys_missing_description">O firmware e jogos comerciais não poderão ser decriptados</string>
|
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<!-- Applet launcher strings -->
|
<!-- Applet launcher strings -->
|
||||||
<string name="applets">Launcher de miniaplicativos</string>
|
<string name="applets">Launcher de miniaplicativos</string>
|
||||||
<string name="applets_description">Execute miniaplicativos do sistema usando o firmware instalado</string>
|
<string name="applets_description">Inicia miniaplicativos do sistema usando o firmware instalado</string>
|
||||||
<string name="applets_error_firmware">Firmware não instalado</string>
|
<string name="applets_error_firmware">Firmware não instalado</string>
|
||||||
<string name="applets_error_applet">Miniaplicativo não disponível</string>
|
<string name="applets_error_applet">Miniaplicativo não disponível</string>
|
||||||
<string name="applets_error_description"><![CDATA[Por favor verifique se o arquivo <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> e o <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-system-firmware\">firmware</a> estão instalados e tente novamente.]]></string>
|
<string name="applets_error_description"><![CDATA[Por favor verifique se o arquivo 1prod.keys1 e o 2firmware2 estão instalados e tente novamente.]]></string>
|
||||||
<string name="album_applet">Álbum</string>
|
<string name="album_applet">Álbum</string>
|
||||||
<string name="album_applet_description">Visualize imagens armazenadas na pasta de capturas de telas do usuário com o visualizador de imagens do sistema</string>
|
<string name="album_applet_description">Visualize imagens armazenadas na pasta de capturas de telas do usuário com o visualizador de imagens do sistema</string>
|
||||||
<string name="mii_edit_applet">Editor de Mii</string>
|
<string name="mii_edit_applet">Editor de Mii</string>
|
||||||
<string name="mii_edit_applet_description">Visualize e edite os Miis com o editor do sistema</string>
|
<string name="mii_edit_applet_description">Visualize e edite os Miis com o editor do sistema</string>
|
||||||
<string name="cabinet_applet">Arquivo</string>
|
<string name="cabinet_applet">Arquivo</string>
|
||||||
<string name="cabinet_applet_description">Edite e delete dados armazenados nos amiibos</string>
|
<string name="cabinet_applet_description">Edite e delete dados armazenados nos amiibos</string>
|
||||||
<string name="cabinet_launcher">Launcher do Arquivo</string>
|
<string name="cabinet_launcher">Inicializador do Arquivo</string>
|
||||||
<string name="cabinet_nickname_and_owner">Apelido e configurações do proprietário</string>
|
<string name="cabinet_nickname_and_owner">Apelido e configurações do proprietário</string>
|
||||||
<string name="cabinet_game_data_eraser">Apagar dados de jogo</string>
|
<string name="cabinet_game_data_eraser">Apagar dados de jogo</string>
|
||||||
<string name="cabinet_restorer">Restaurar</string>
|
<string name="cabinet_restorer">Restaurar</string>
|
||||||
|
@ -169,9 +164,9 @@
|
||||||
<string name="contributors_description">Feito com \u2764 da equipe do Yuzu</string>
|
<string name="contributors_description">Feito com \u2764 da equipe do Yuzu</string>
|
||||||
<string name="contributors_link">https://github.com/yuzu-emu/yuzu/graphs/contributors</string>
|
<string name="contributors_link">https://github.com/yuzu-emu/yuzu/graphs/contributors</string>
|
||||||
<string name="licenses_description">Projetos que tornam o yuzu para Android possível</string>
|
<string name="licenses_description">Projetos que tornam o yuzu para Android possível</string>
|
||||||
<string name="build">Versão da Compilação</string>
|
<string name="build">Versão</string>
|
||||||
<string name="user_data">Dados do usuário</string>
|
<string name="user_data">Dados do usuário</string>
|
||||||
<string name="user_data_description">Importe/exporte todos os dados do aplicativo.\n\nAo importar dados de usuário, todos os dados existentes serão excluídos!</string>
|
<string name="user_data_description">Importar/exportar todos os dados do aplicativo.\n\n Ao importar dados de usuário, todos os dados existentes do usuário serão excluídos!</string>
|
||||||
<string name="exporting_user_data">Exportando dados do usuário...</string>
|
<string name="exporting_user_data">Exportando dados do usuário...</string>
|
||||||
<string name="importing_user_data">Importando dados do usuário...</string>
|
<string name="importing_user_data">Importando dados do usuário...</string>
|
||||||
<string name="import_user_data">Importar dados do usuário</string>
|
<string name="import_user_data">Importar dados do usuário</string>
|
||||||
|
@ -179,14 +174,14 @@
|
||||||
<string name="user_data_export_success">Dados de usuário exportados com sucesso</string>
|
<string name="user_data_export_success">Dados de usuário exportados com sucesso</string>
|
||||||
<string name="user_data_import_success">Dados de usuário importados com sucesso</string>
|
<string name="user_data_import_success">Dados de usuário importados com sucesso</string>
|
||||||
<string name="user_data_export_cancelled">Exportação cancelada</string>
|
<string name="user_data_export_cancelled">Exportação cancelada</string>
|
||||||
<string name="user_data_import_failed_description">Verifique se as pastas de dados do usuário estão na raiz da pasta zip, se possuem um arquivo de configuração em config/config.ini e tente novamente.</string>
|
<string name="user_data_import_failed_description">Verifiqua se as pastas de dados do usuário estão na raiz da pasta zip e contêm um arquivo de configuração em config/config.ini e tente novamente.</string>
|
||||||
<string name="support_link">https://discord.gg/u77vRWY</string>
|
<string name="support_link">https://discord.gg/u77vRWY</string>
|
||||||
<string name="website_link">https://yuzu-emu.org/</string>
|
<string name="website_link">https://yuzu-emu.org/</string>
|
||||||
<string name="github_link">https://github.com/yuzu-emu</string>
|
<string name="github_link">https://github.com/yuzu-emu</string>
|
||||||
|
|
||||||
<!-- Early access upgrade strings -->
|
<!-- Early access upgrade strings -->
|
||||||
<string name="early_access">Acesso Antecipado</string>
|
<string name="early_access">Acesso Antecipado</string>
|
||||||
<string name="get_early_access">Obter Acesso Antecipado</string>
|
<string name="get_early_access">Obtenha o Acesso Antecipado</string>
|
||||||
<string name="play_store_link">https://play.google.com/store/apps/details?id=org.yuzu.yuzu_emu.ea</string>
|
<string name="play_store_link">https://play.google.com/store/apps/details?id=org.yuzu.yuzu_emu.ea</string>
|
||||||
<string name="get_early_access_description">Recursos de ponta, acesso antecipado a atualizações e muito mais</string>
|
<string name="get_early_access_description">Recursos de ponta, acesso antecipado a atualizações e muito mais</string>
|
||||||
<string name="early_access_benefits">Benefícios do Acesso Antecipado</string>
|
<string name="early_access_benefits">Benefícios do Acesso Antecipado</string>
|
||||||
|
@ -208,35 +203,32 @@
|
||||||
<string name="value_with_units">%1$s%2$s</string>
|
<string name="value_with_units">%1$s%2$s</string>
|
||||||
|
|
||||||
<!-- System settings strings -->
|
<!-- System settings strings -->
|
||||||
<string name="device_name">Nome do Dispositivo</string>
|
|
||||||
<string name="use_docked_mode">Modo TV</string>
|
<string name="use_docked_mode">Modo TV</string>
|
||||||
<string name="use_docked_mode_description">Aumenta a resolução, diminuindo o desempenho. O Modo Portátil é utilizado quando estiver desabilitado, diminuindo a resolução e melhorando o desempenho.</string>
|
<string name="use_docked_mode_description">Aumenta a resolução, diminuindo o desempenho. O Modo Portátil é utilizado quando estiver desabilitado, diminuindo a resolução e melhorando o desempenho.</string>
|
||||||
<string name="emulated_region">Região da emulação</string>
|
<string name="emulated_region">Região da emulação</string>
|
||||||
<string name="emulated_language">Idioma da emulação</string>
|
<string name="emulated_language">Idioma da emulação</string>
|
||||||
<string name="select_rtc_date">Selecione a data do sistema</string>
|
<string name="select_rtc_date">Selecione a data do sistema</string>
|
||||||
<string name="select_rtc_time">Selecione a hora do sistema</string>
|
<string name="select_rtc_time">Selecione a hora do sistema</string>
|
||||||
<string name="use_custom_rtc">Data e hora personalizadas</string>
|
<string name="use_custom_rtc">Data e hora personalizada</string>
|
||||||
<string name="use_custom_rtc_description">Permite a você configurar um relógio em tempo real separado do relógio do seu dispositivo.</string>
|
<string name="use_custom_rtc_description">Permite a você configurar um relógio em tempo real separado do relógio do seu dispositivo.</string>
|
||||||
<string name="set_custom_rtc">Definir um relógio em tempo real personalizado</string>
|
<string name="set_custom_rtc">Defina um relógio em tempo real personalizado</string>
|
||||||
|
|
||||||
<!-- Graphics settings strings -->
|
<!-- Graphics settings strings -->
|
||||||
<string name="renderer_accuracy">Nível de precisão</string>
|
<string name="renderer_accuracy">Nível de precisão</string>
|
||||||
<string name="renderer_resolution">Resolução (Portátil/Modo TV)</string>
|
<string name="renderer_resolution">Resolução (Portátil/Modo TV)</string>
|
||||||
<string name="renderer_vsync">Modo de VSync</string>
|
<string name="renderer_vsync">Modo VSync</string>
|
||||||
<string name="renderer_screen_layout">Oriantação</string>
|
<string name="renderer_screen_layout">Oriantação</string>
|
||||||
<string name="renderer_aspect_ratio">Proporção de tela</string>
|
<string name="renderer_aspect_ratio">Proporção da tela</string>
|
||||||
<string name="renderer_scaling_filter">Filtro de Adaptação da Janela</string>
|
<string name="renderer_scaling_filter">Filtro de Adaptação da Janela</string>
|
||||||
<string name="fsr_sharpness">Nitidez do FSR</string>
|
<string name="renderer_anti_aliasing">Método de Anti-Serrilhado</string>
|
||||||
<string name="fsr_sharpness_description">Determina a nitidez da imagem ao utilizar o contraste dinâmico do FSR</string>
|
|
||||||
<string name="renderer_anti_aliasing">Método de Anti-aliasing</string>
|
|
||||||
<string name="renderer_force_max_clock">Forçar velocidade máxima (somente Adreno)</string>
|
<string name="renderer_force_max_clock">Forçar velocidade máxima (somente Adreno)</string>
|
||||||
<string name="renderer_force_max_clock_description">Força a GPU a rodar na velocidade máxima (restrições térmicas serão aplicadas)</string>
|
<string name="renderer_force_max_clock_description">Força o GPU a rodar na velocidade máxima (restrições térmicas serão aplicadas)</string>
|
||||||
<string name="renderer_asynchronous_shaders">Usar shaders assíncronos </string>
|
<string name="renderer_asynchronous_shaders">Usar shaders assíncronos </string>
|
||||||
<string name="renderer_asynchronous_shaders_description">Compila os shaders de forma assíncrona, reduzindo engasgos, mas pode apresentar problemas.</string>
|
<string name="renderer_asynchronous_shaders_description">Compila os shaders de forma assíncrona, reduzindo travamentos, mas pode apresentar problemas.</string>
|
||||||
<string name="renderer_reactive_flushing">Usar flushing reativo</string>
|
<string name="renderer_reactive_flushing">Usar flushing reativo</string>
|
||||||
<string name="renderer_reactive_flushing_description">Melhora a precisão da renderização em alguns jogos ao custo de desempenho.</string>
|
<string name="renderer_reactive_flushing_description">Melhora a precisão da renderização em alguns jogos ao custo de desempenho.</string>
|
||||||
<string name="use_disk_shader_cache">Cache de shaders em disco</string>
|
<string name="use_disk_shader_cache">Cache de shaders em disco</string>
|
||||||
<string name="use_disk_shader_cache_description">Reduz engasgos ao armazenar e carregar localmente os shaders.</string>
|
<string name="use_disk_shader_cache_description">Reduz travamentos ao armazenar e carregar localmente os shaders.</string>
|
||||||
<string name="anisotropic_filtering">Filtragem anisotrópica</string>
|
<string name="anisotropic_filtering">Filtragem anisotrópica</string>
|
||||||
<string name="anisotropic_filtering_description">Melhora a qualidade das texturas quando visualizadas de ângulos oblíquos</string>
|
<string name="anisotropic_filtering_description">Melhora a qualidade das texturas quando visualizadas de ângulos oblíquos</string>
|
||||||
|
|
||||||
|
@ -251,96 +243,9 @@
|
||||||
<string name="fastmem">Fastmem</string>
|
<string name="fastmem">Fastmem</string>
|
||||||
|
|
||||||
<!-- Audio settings strings -->
|
<!-- Audio settings strings -->
|
||||||
<string name="audio_output_engine">Mecanismo de saída</string>
|
<string name="audio_output_engine">Engine de reprodução</string>
|
||||||
<string name="audio_volume">Volume</string>
|
<string name="audio_volume">Volume</string>
|
||||||
<string name="audio_volume_description">Especifica o volume da reprodução do áudio.</string>
|
<string name="audio_volume_description">Especifica o volume de reprodução.</string>
|
||||||
|
|
||||||
<!-- Input strings -->
|
|
||||||
<string name="buttons">Botões</string>
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">B</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">Mais</string>
|
|
||||||
<string name="button_minus">Menos</string>
|
|
||||||
<string name="button_home">Botão Home</string>
|
|
||||||
<string name="button_capture">Capturar</string>
|
|
||||||
<string name="start_pause">Start/Pause</string>
|
|
||||||
<string name="dpad">Direcional</string>
|
|
||||||
<string name="up">Cima</string>
|
|
||||||
<string name="down">Baixo</string>
|
|
||||||
<string name="left">Esquerda</string>
|
|
||||||
<string name="right">Direita</string>
|
|
||||||
<string name="left_stick">Analógico esquerdo</string>
|
|
||||||
<string name="control_stick">Alavanca de controle</string>
|
|
||||||
<string name="right_stick">Analógico direito</string>
|
|
||||||
<string name="c_stick">C-Stick</string>
|
|
||||||
<string name="pressed">Pressionado</string>
|
|
||||||
<string name="range">Alcance</string>
|
|
||||||
<string name="deadzone">Zona morta</string>
|
|
||||||
<string name="modifier">Modificador</string>
|
|
||||||
<string name="modifier_range">Alcance do modificador</string>
|
|
||||||
<string name="triggers">Gatilhos</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_sl_left">SL Esquerdo</string>
|
|
||||||
<string name="button_sr_left">SR Esquerdo</string>
|
|
||||||
<string name="button_sl_right">SL Direito</string>
|
|
||||||
<string name="button_sr_right">SR Direito</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">Inválido</string>
|
|
||||||
<string name="not_set">Indefinido</string>
|
|
||||||
<string name="unknown">Desconhecido</string>
|
|
||||||
<string name="qualified_hat">%1$s%2$s%3$sDireção %4$s</string>
|
|
||||||
<string name="qualified_button_stick_axis">%1$s%2$s%3$sEixo %4$s</string>
|
|
||||||
<string name="qualified_button">%1$s%2$s%3$sBotão %4$s</string>
|
|
||||||
<string name="qualified_axis">Eixo %1$s%2$s</string>
|
|
||||||
<string name="unused">Não usado</string>
|
|
||||||
<string name="input_prompt">Mova ou aperte um botão</string>
|
|
||||||
<string name="unsupported_input">Tipo de entrada não suportada</string>
|
|
||||||
<string name="input_mapping_filter">Filtro de mapeamento dos controles</string>
|
|
||||||
<string name="input_mapping_filter_description">Selecione um dispositivo para filtrar o mapeamento dos controles</string>
|
|
||||||
<string name="auto_map">Mapear controle automaticamente</string>
|
|
||||||
<string name="auto_map_description">Selecione um controle para iniciar
|
|
||||||
uma tentativa de mapeamento automático</string>
|
|
||||||
<string name="attempted_auto_map">Tentativa de mapeamento automático de %1$s concluída</string>
|
|
||||||
<string name="controller_type">Tipo de controle</string>
|
|
||||||
<string name="pro_controller">Pro Controller</string>
|
|
||||||
<string name="handheld">Portátil</string>
|
|
||||||
<string name="dual_joycons">Par de Joycons</string>
|
|
||||||
<string name="left_joycon">Joycon Esquerdo</string>
|
|
||||||
<string name="right_joycon">Joycon Direito</string>
|
|
||||||
<string name="gamecube_controller">Controle de GameCube</string>
|
|
||||||
<string name="invert_axis">Inverter eixo</string>
|
|
||||||
<string name="invert_button">Inverter botão</string>
|
|
||||||
<string name="toggle_button">Alternar pressionamento do botão</string>
|
|
||||||
<string name="turbo_button">Botão Turbo</string>
|
|
||||||
<string name="set_threshold">Definir limite</string>
|
|
||||||
<string name="toggle_axis">Alternar eixos</string>
|
|
||||||
<string name="connected">Conectado</string>
|
|
||||||
<string name="use_system_vibrator">Usar vibração deste aparelho</string>
|
|
||||||
<string name="input_overlay">Overlay do controle</string>
|
|
||||||
<string name="vibration">Vibração</string>
|
|
||||||
<string name="vibration_strength">Intensidade da vibração</string>
|
|
||||||
<string name="profile">Perfil</string>
|
|
||||||
<string name="create_new_profile">Criar novo perfil</string>
|
|
||||||
<string name="enter_profile_name">Insira o nome do perfil</string>
|
|
||||||
<string name="profile_name_already_exists">O nome do perfil já existe</string>
|
|
||||||
<string name="invalid_profile_name">Nome de perfil inválido</string>
|
|
||||||
<string name="use_global_input_configuration">Usar configuração global de controles</string>
|
|
||||||
<string name="player_num_profile">Perfil do Jogador %d</string>
|
|
||||||
<string name="delete_input_profile">Deletar perfil de controle</string>
|
|
||||||
<string name="delete_input_profile_description">Tem certeza que quer deletar esse perfil? Ele não poderá ser recuperado.</string>
|
|
||||||
<string name="stick_map_description">Mova uma alavanca pra esquerda e depois pra cima ou aperte um botão</string>
|
|
||||||
<string name="button_map_description">Aperte um botão ou mova um gatilho/alavanca</string>
|
|
||||||
<string name="map_dpad_direction">Mapear Direcional para %1$s</string>
|
|
||||||
<string name="map_control">Mapear botão %1$s</string>
|
|
||||||
<string name="failed_to_load_profile">Falha ao carregar perfil</string>
|
|
||||||
<string name="failed_to_save_profile">Falha ao salvar perfil</string>
|
|
||||||
<string name="reset_mapping">Redefinir mapeamento</string>
|
|
||||||
<string name="reset_mapping_description">Você tem certeza que quer redefinir todos os mapeamentos deste controle para os padrões? Isso não pode ser desfeito.</string>
|
|
||||||
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">Padrão</string>
|
<string name="slider_default">Padrão</string>
|
||||||
|
@ -351,10 +256,10 @@ uma tentativa de mapeamento automático</string>
|
||||||
<string name="loading">Carregando...</string>
|
<string name="loading">Carregando...</string>
|
||||||
<string name="shutting_down">Encerrando...</string>
|
<string name="shutting_down">Encerrando...</string>
|
||||||
<string name="reset_setting_confirmation">Deseja reverter esta configuração para os valores padrões?</string>
|
<string name="reset_setting_confirmation">Deseja reverter esta configuração para os valores padrões?</string>
|
||||||
<string name="reset_to_default">Redefinir para o padrão</string>
|
<string name="reset_to_default">Reverter para o padrão</string>
|
||||||
<string name="reset_to_default_description">Redefine todas as configurações avançadas</string>
|
<string name="reset_to_default_description">Redefine todas as configurações avançadas</string>
|
||||||
<string name="reset_all_settings">Redefinir todas as configurações?</string>
|
<string name="reset_all_settings">Redefinir todas as configurações?</string>
|
||||||
<string name="reset_all_settings_description">Todas as configurações avançadas serão redefinidas para o padrão. Isto não pode ser desfeito.</string>
|
<string name="reset_all_settings_description">Todas as configurações avançadas retornarão ao padrão. Isto não pode ser desfeito.</string>
|
||||||
<string name="settings_reset">Configurações redefinidas</string>
|
<string name="settings_reset">Configurações redefinidas</string>
|
||||||
<string name="close">Fechar</string>
|
<string name="close">Fechar</string>
|
||||||
<string name="learn_more">Saiba mais</string>
|
<string name="learn_more">Saiba mais</string>
|
||||||
|
@ -373,17 +278,9 @@ uma tentativa de mapeamento automático</string>
|
||||||
<string name="start">Start</string>
|
<string name="start">Start</string>
|
||||||
<string name="clear">Limpar</string>
|
<string name="clear">Limpar</string>
|
||||||
<string name="global">Global</string>
|
<string name="global">Global</string>
|
||||||
<string name="custom">Personalizada</string>
|
<string name="custom">Personalizado</string>
|
||||||
<string name="notice">Aviso</string>
|
<string name="notice">Aviso</string>
|
||||||
<string name="import_complete">Importação concluída</string>
|
<string name="import_complete">Importação concluída</string>
|
||||||
<string name="more_options">Mais opções</string>
|
|
||||||
<string name="use_global_setting">Usar configuração global</string>
|
|
||||||
<string name="operation_completed_successfully">A operação foi concluída com sucesso</string>
|
|
||||||
<string name="retry">Reiniciar</string>
|
|
||||||
<string name="confirm">Confirmar</string>
|
|
||||||
<string name="load">Carregar</string>
|
|
||||||
<string name="save">Salvar</string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
<string name="select_gpu_driver">Selecione o driver para a GPU</string>
|
<string name="select_gpu_driver">Selecione o driver para a GPU</string>
|
||||||
<string name="select_gpu_driver_title">Gostaria de substituir o driver atual da GPU? </string>
|
<string name="select_gpu_driver_title">Gostaria de substituir o driver atual da GPU? </string>
|
||||||
|
@ -401,12 +298,9 @@ uma tentativa de mapeamento automático</string>
|
||||||
<string name="preferences_system">Sistema</string>
|
<string name="preferences_system">Sistema</string>
|
||||||
<string name="preferences_system_description">Modo TV, região, idioma</string>
|
<string name="preferences_system_description">Modo TV, região, idioma</string>
|
||||||
<string name="preferences_graphics">Gráficos</string>
|
<string name="preferences_graphics">Gráficos</string>
|
||||||
<string name="preferences_graphics_description">Nível de precisão, resolução, cache de shaders</string>
|
<string name="preferences_graphics_description">Nível de precisão, resolução, cache de shader</string>
|
||||||
<string name="preferences_audio">Áudio</string>
|
<string name="preferences_audio">Áudio</string>
|
||||||
<string name="preferences_audio_description">Mecanismo de saída, volume</string>
|
<string name="preferences_audio_description">Engine de reprodução, volume</string>
|
||||||
<string name="preferences_controls">Controles</string>
|
|
||||||
<string name="preferences_controls_description">Mapear entradas do controle</string>
|
|
||||||
<string name="preferences_player">Jogador %d</string>
|
|
||||||
<string name="preferences_theme">Tema e cor</string>
|
<string name="preferences_theme">Tema e cor</string>
|
||||||
<string name="preferences_debug">Depuração</string>
|
<string name="preferences_debug">Depuração</string>
|
||||||
<string name="preferences_debug_description">Depuração de CPU/GPU, API gráfica, fastmem</string>
|
<string name="preferences_debug_description">Depuração de CPU/GPU, API gráfica, fastmem</string>
|
||||||
|
@ -414,7 +308,7 @@ uma tentativa de mapeamento automático</string>
|
||||||
<!-- Game properties -->
|
<!-- Game properties -->
|
||||||
<string name="info">Informações</string>
|
<string name="info">Informações</string>
|
||||||
<string name="info_description">ID do Programa, desenvolvedora, versão</string>
|
<string name="info_description">ID do Programa, desenvolvedora, versão</string>
|
||||||
<string name="per_game_settings">Configurações do jogo</string>
|
<string name="per_game_settings">Configurações por jogo</string>
|
||||||
<string name="per_game_settings_description">Edite configurações específicas para este jogo</string>
|
<string name="per_game_settings_description">Edite configurações específicas para este jogo</string>
|
||||||
<string name="launch_options">Configurações de inicialização</string>
|
<string name="launch_options">Configurações de inicialização</string>
|
||||||
<string name="path">Caminho</string>
|
<string name="path">Caminho</string>
|
||||||
|
@ -422,13 +316,13 @@ uma tentativa de mapeamento automático</string>
|
||||||
<string name="developer">Desenvolvedora</string>
|
<string name="developer">Desenvolvedora</string>
|
||||||
<string name="version">Versão</string>
|
<string name="version">Versão</string>
|
||||||
<string name="copy_details">Copiar detalhes</string>
|
<string name="copy_details">Copiar detalhes</string>
|
||||||
<string name="add_ons">Complementos</string>
|
<string name="add_ons">Adicionais</string>
|
||||||
<string name="add_ons_description">Gerencie mods, atualizações e DLC</string>
|
<string name="add_ons_description">Gerencie mods, atualizações e DLC</string>
|
||||||
<string name="clear_shader_cache">Excluir cache de shaders</string>
|
<string name="clear_shader_cache">Excluir cache de shaders</string>
|
||||||
<string name="clear_shader_cache_description">Remove todos os shaders compilados durante a execução do jogo</string>
|
<string name="clear_shader_cache_description">Remove todos os shaders compilados durante a execução do jogo</string>
|
||||||
<string name="clear_shader_cache_warning_description">Você terá mais engasgos enquanto o cache de shaders for recompilado</string>
|
<string name="clear_shader_cache_warning_description">Você terá mais travamentos enquanto o cache de shaders for recompilado</string>
|
||||||
<string name="cleared_shaders_successfully">Shaders excluídos com sucesso</string>
|
<string name="cleared_shaders_successfully">Shaders excluídos com sucesso</string>
|
||||||
<string name="addons_game">Complementos: %1$s</string>
|
<string name="addons_game">Adicionais: %1$s</string>
|
||||||
<string name="save_data">Dados salvos</string>
|
<string name="save_data">Dados salvos</string>
|
||||||
<string name="save_data_description">Gerencie dados salvos específicos deste jogo</string>
|
<string name="save_data_description">Gerencie dados salvos específicos deste jogo</string>
|
||||||
<string name="delete_save_data">Deletar dados salvos</string>
|
<string name="delete_save_data">Deletar dados salvos</string>
|
||||||
|
@ -438,33 +332,22 @@ uma tentativa de mapeamento automático</string>
|
||||||
<string name="select_content_type">Tipo de conteúdo</string>
|
<string name="select_content_type">Tipo de conteúdo</string>
|
||||||
<string name="updates_and_dlc">Atualizações e DLC</string>
|
<string name="updates_and_dlc">Atualizações e DLC</string>
|
||||||
<string name="mods_and_cheats">Mods e cheats</string>
|
<string name="mods_and_cheats">Mods e cheats</string>
|
||||||
<string name="addon_notice">Aviso importante sobre os complementos</string>
|
<string name="addon_notice">Aviso importante sobre os adicionais</string>
|
||||||
<!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
|
<!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
|
||||||
<string name="addon_notice_description">Para instalar mods e cheats, você deve selecionar uma pasta que contenha um diretório cheats/, romfs/ ou exefs. Não podemos verificar se eles são compatíveis com seu jogo, então tenha cuidado!</string>
|
<string name="addon_notice_description">Para instalar mods e cheats, você deve selecionar uma pasta que contenha um diretório cheats/, romfs/ ou exefs. Não podemos verificar se eles são compatíveis com seu jogo, então tenha cuidado!</string>
|
||||||
<string name="invalid_directory">Diretório inválido </string>
|
<string name="invalid_directory">Diretório inválido </string>
|
||||||
<!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
|
<!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
|
||||||
<string name="invalid_directory_description">Por favor verifique se o diretório selecionado contém uma pasta cheats/, romfs/ ou exefs/ e tente novamente.</string>
|
<string name="invalid_directory_description">Por favor verifique se o diretório selecionado contém uma pasta cheats/, romfs/ ou exefs/ e tente novamente.</string>
|
||||||
<string name="addon_installed_successfully">Complemento instalado com sucesso</string>
|
<string name="addon_installed_successfully">Adicional instalado com sucesso</string>
|
||||||
<string name="verifying_content">Verificando conteúdo...</string>
|
<string name="verifying_content">Verificando conteúdo...</string>
|
||||||
<string name="content_install_notice">Aviso sobre a instalação do conteúdo</string>
|
<string name="content_install_notice">Aviso sobre conteúdo adicional</string>
|
||||||
<string name="content_install_notice_description">O conteúdo que você selecionou não corresponde a este jogo.\nInstalar mesmo assim?</string>
|
<string name="content_install_notice_description">O conteúdo que você selecionou não corresponde a este jogo.\nInstalar mesmo assim?</string>
|
||||||
<string name="confirm_uninstall">Confirmar desinstalação</string>
|
|
||||||
<string name="confirm_uninstall_description">Tem certeza de que quer desinstalar esse complemento?</string>
|
|
||||||
<string name="verify_integrity">Verificar integridade</string>
|
|
||||||
<string name="verifying">Verificando...</string>
|
|
||||||
<string name="verify_success">Verificação de integridade concluída!</string>
|
|
||||||
<string name="verify_failure">Houve uma falha na verificação de integridade!</string>
|
|
||||||
<string name="verify_failure_description">Conteúdos do arquivo podem estar corrompidos</string>
|
|
||||||
<string name="verify_no_result">A verificação de integridade não pôde ser executada</string>
|
|
||||||
<string name="verify_no_result_description">Os conteúdos do arquivo não foram verificados se são válidos</string>
|
|
||||||
<string name="verification_failed_for">A verificação falhou para os seguintes arquivos:\n%1$s</string>
|
|
||||||
|
|
||||||
<!-- ROM loading errors -->
|
<!-- ROM loading errors -->
|
||||||
<string name="loader_error_encrypted">Sua ROM está encriptada</string>
|
<string name="loader_error_encrypted">Sua ROM está encriptada</string>
|
||||||
<string name="loader_error_encrypted_roms_description"><![CDATA[Por favor, siga os guias para extrair novamente os seus <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartuchos de jogos</a> ou <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">títulos instalados</a>.]]></string>
|
<string name="loader_error_encrypted_roms_description"><![CDATA[Por favor, siga os guias para extrair novamente o seu <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartucho de jogo</a> ou <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">títulos instalados</a>.]]></string>
|
||||||
<string name="loader_error_encrypted_keys_description"><![CDATA[Por favor verifique se o seu arquivo <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> está instalado para que os jogos possam ser decriptados.]]></string>
|
<string name="loader_error_encrypted_keys_description"><![CDATA[Por favor verifique se o seu arquivo <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> está instalado para que os jogos possam ser decriptados.]]></string>
|
||||||
<string name="loader_error_video_core">Ocorreu um erro ao iniciar o núcleo de vídeo.</string>
|
<string name="loader_error_video_core">Ocorreu um erro ao iniciar o núcleo de vídeo.</string>
|
||||||
<string name="loader_error_video_core_description">Isto é normalmente causado por um driver de GPU incompatível. Instalar um driver de GPU personalizado pode resolver este problema.</string>
|
<string name="loader_error_video_core_description">Isto é normalmente causado por um driver de GPU incompatível. Instalar um driver de GPU pode resolver este problema.</string>
|
||||||
<string name="loader_error_invalid_format">Impossível carregar a ROM</string>
|
<string name="loader_error_invalid_format">Impossível carregar a ROM</string>
|
||||||
<string name="loader_error_file_not_found">O arquivo ROM não existe</string>
|
<string name="loader_error_file_not_found">O arquivo ROM não existe</string>
|
||||||
|
|
||||||
|
@ -472,7 +355,6 @@ uma tentativa de mapeamento automático</string>
|
||||||
<string name="emulation_exit">Sair da emulação</string>
|
<string name="emulation_exit">Sair da emulação</string>
|
||||||
<string name="emulation_done">Feito</string>
|
<string name="emulation_done">Feito</string>
|
||||||
<string name="emulation_fps_counter">Contador de FPS</string>
|
<string name="emulation_fps_counter">Contador de FPS</string>
|
||||||
<string name="emulation_thermal_indicator">Indicador de temperatura</string>
|
|
||||||
<string name="emulation_toggle_controls">Marcar/Desmarcar botões</string>
|
<string name="emulation_toggle_controls">Marcar/Desmarcar botões</string>
|
||||||
<string name="emulation_rel_stick_center">Centro Relativo do Analógico</string>
|
<string name="emulation_rel_stick_center">Centro Relativo do Analógico</string>
|
||||||
<string name="emulation_dpad_slide">Deslizamento dos Botões Direcionais</string>
|
<string name="emulation_dpad_slide">Deslizamento dos Botões Direcionais</string>
|
||||||
|
@ -482,14 +364,12 @@ uma tentativa de mapeamento automático</string>
|
||||||
<string name="emulation_control_adjust">Ajustar overlay</string>
|
<string name="emulation_control_adjust">Ajustar overlay</string>
|
||||||
<string name="emulation_control_scale">Escala</string>
|
<string name="emulation_control_scale">Escala</string>
|
||||||
<string name="emulation_control_opacity">Opacidade</string>
|
<string name="emulation_control_opacity">Opacidade</string>
|
||||||
<string name="emulation_touch_overlay_reset">Redefinir overlay</string>
|
<string name="emulation_touch_overlay_reset">Resetar overlay</string>
|
||||||
<string name="emulation_touch_overlay_edit">Editar overlay</string>
|
<string name="emulation_touch_overlay_edit">Editar overlay</string>
|
||||||
<string name="emulation_pause">Pausar emulação</string>
|
<string name="emulation_pause">Pausar emulação</string>
|
||||||
<string name="emulation_unpause">Retomar a emulação</string>
|
<string name="emulation_unpause">Retomar a emulação</string>
|
||||||
<string name="emulation_input_overlay">Opções de overlay</string>
|
<string name="emulation_input_overlay">Opções de overlay</string>
|
||||||
<string name="touchscreen">Tela de toque</string>
|
<string name="touchscreen">Tela de toque</string>
|
||||||
<string name="lock_drawer">Bloquear este menu</string>
|
|
||||||
<string name="unlock_drawer">Desbloquear este menu</string>
|
|
||||||
|
|
||||||
<string name="load_settings">Carregando configurações...</string>
|
<string name="load_settings">Carregando configurações...</string>
|
||||||
|
|
||||||
|
@ -531,12 +411,12 @@ uma tentativa de mapeamento automático</string>
|
||||||
|
|
||||||
<!-- Renderer APIs -->
|
<!-- Renderer APIs -->
|
||||||
<string name="renderer_vulkan">Vulkan</string>
|
<string name="renderer_vulkan">Vulkan</string>
|
||||||
<string name="renderer_none">Nenhuma</string>
|
<string name="renderer_none">Nenhum</string>
|
||||||
|
|
||||||
<!-- Renderer Accuracy -->
|
<!-- Renderer Accuracy -->
|
||||||
<string name="renderer_accuracy_normal">Normal</string>
|
<string name="renderer_accuracy_normal">Normal</string>
|
||||||
<string name="renderer_accuracy_high">Alta</string>
|
<string name="renderer_accuracy_high">Alto</string>
|
||||||
<string name="renderer_accuracy_extreme">Extrema (Lenta)</string>
|
<string name="renderer_accuracy_extreme">Extremo (Lento)</string>
|
||||||
|
|
||||||
<!-- Resolutions -->
|
<!-- Resolutions -->
|
||||||
<string name="resolution_half">0.5X (360p/540p)</string>
|
<string name="resolution_half">0.5X (360p/540p)</string>
|
||||||
|
@ -582,13 +462,13 @@ uma tentativa de mapeamento automático</string>
|
||||||
<string name="ratio_stretch">Esticar à janela</string>
|
<string name="ratio_stretch">Esticar à janela</string>
|
||||||
|
|
||||||
<!-- CPU Backend -->
|
<!-- CPU Backend -->
|
||||||
<string name="cpu_backend_dynarmic">Dynarmic (Lenta)</string>
|
<string name="cpu_backend_dynarmic">Dynarmic (Lento)</string>
|
||||||
<string name="cpu_backend_nce">Execução de código nativo (NCE)</string>
|
<string name="cpu_backend_nce">Execução de código nativo (NCE)</string>
|
||||||
|
|
||||||
<!-- CPU Accuracy -->
|
<!-- CPU Accuracy -->
|
||||||
<string name="cpu_accuracy_accurate">Precisa</string>
|
<string name="cpu_accuracy_accurate">Preciso</string>
|
||||||
<string name="cpu_accuracy_unsafe">Não segura</string>
|
<string name="cpu_accuracy_unsafe">Não seguro</string>
|
||||||
<string name="cpu_accuracy_paranoid">Paranoica (Lenta)</string>
|
<string name="cpu_accuracy_paranoid">Paranóico (Lento)</string>
|
||||||
|
|
||||||
<!-- Gamepad Buttons -->
|
<!-- Gamepad Buttons -->
|
||||||
<string name="gamepad_d_pad">Botões Direcionais</string>
|
<string name="gamepad_d_pad">Botões Direcionais</string>
|
||||||
|
@ -623,7 +503,7 @@ uma tentativa de mapeamento automático</string>
|
||||||
<string name="multiplier_sixteen">16x</string>
|
<string name="multiplier_sixteen">16x</string>
|
||||||
|
|
||||||
<!-- Black backgrounds theme -->
|
<!-- Black backgrounds theme -->
|
||||||
<string name="use_black_backgrounds">Planos de fundo pretos</string>
|
<string name="use_black_backgrounds">Plano de fundo preto</string>
|
||||||
<string name="use_black_backgrounds_description">Quando usar o tema escuro, aplicar fundos pretos</string>
|
<string name="use_black_backgrounds_description">Quando usar o tema escuro, aplicar fundos pretos</string>
|
||||||
|
|
||||||
<!-- Picture-In-Picture -->
|
<!-- Picture-In-Picture -->
|
||||||
|
@ -634,12 +514,6 @@ uma tentativa de mapeamento automático</string>
|
||||||
<string name="mute">Mudo</string>
|
<string name="mute">Mudo</string>
|
||||||
<string name="unmute">Tirar do Mudo</string>
|
<string name="unmute">Tirar do Mudo</string>
|
||||||
|
|
||||||
<!-- Emulation vertical alignment -->
|
|
||||||
<string name="vertical_alignment">Alinhamento vertical</string>
|
|
||||||
<string name="top">Em cima</string>
|
|
||||||
<string name="center">Centralizado</string>
|
|
||||||
<string name="bottom">Embaixo</string>
|
|
||||||
|
|
||||||
<!-- Licenses screen strings -->
|
<!-- Licenses screen strings -->
|
||||||
<string name="licenses">Licenças</string>
|
<string name="licenses">Licenças</string>
|
||||||
<string name="license_fidelityfx_fsr_description">Upscaling de alta qualidade da AMD</string>
|
<string name="license_fidelityfx_fsr_description">Upscaling de alta qualidade da AMD</string>
|
||||||
|
|
|
@ -137,11 +137,6 @@
|
||||||
<item quantity="other">Dados salvos de %d importados com sucesso</item>
|
<item quantity="other">Dados salvos de %d importados com sucesso</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<string name="no_save_data_found">Dados salvos não encontrados</string>
|
<string name="no_save_data_found">Dados salvos não encontrados</string>
|
||||||
<string name="verify_installed_content">Verificar conteúdo instalado</string>
|
|
||||||
<string name="verify_installed_content_description">Verifica todo o conteúdo instalado em busca de dados corrompidos</string>
|
|
||||||
<string name="keys_missing">Faltando chaves de encriptação</string>
|
|
||||||
<string name="keys_missing_description">O firmware e jogos comerciais não poderão ser decriptados</string>
|
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<!-- Applet launcher strings -->
|
<!-- Applet launcher strings -->
|
||||||
<string name="applets">Launcher de miniaplicativos</string>
|
<string name="applets">Launcher de miniaplicativos</string>
|
||||||
|
@ -208,7 +203,6 @@
|
||||||
<string name="value_with_units">%1$s%2$s</string>
|
<string name="value_with_units">%1$s%2$s</string>
|
||||||
|
|
||||||
<!-- System settings strings -->
|
<!-- System settings strings -->
|
||||||
<string name="device_name">Nome do Dispositivo</string>
|
|
||||||
<string name="use_docked_mode">Modo Ancorado</string>
|
<string name="use_docked_mode">Modo Ancorado</string>
|
||||||
<string name="use_docked_mode_description">Aumenta a resolução, diminuindo o desempenho. O Modo Portátil é utilizado quando estiver desabilitado, diminuindo a resolução e melhorando o desempenho.</string>
|
<string name="use_docked_mode_description">Aumenta a resolução, diminuindo o desempenho. O Modo Portátil é utilizado quando estiver desabilitado, diminuindo a resolução e melhorando o desempenho.</string>
|
||||||
<string name="emulated_region">Região da emulação</string>
|
<string name="emulated_region">Região da emulação</string>
|
||||||
|
@ -226,8 +220,6 @@
|
||||||
<string name="renderer_screen_layout">Oriantação</string>
|
<string name="renderer_screen_layout">Oriantação</string>
|
||||||
<string name="renderer_aspect_ratio">Proporção da tela</string>
|
<string name="renderer_aspect_ratio">Proporção da tela</string>
|
||||||
<string name="renderer_scaling_filter">Filtro de Adaptação da Janela</string>
|
<string name="renderer_scaling_filter">Filtro de Adaptação da Janela</string>
|
||||||
<string name="fsr_sharpness">Nitidez do FSR</string>
|
|
||||||
<string name="fsr_sharpness_description">Determina a nitidez da imagem ao usar contraste dinâmico do FSR</string>
|
|
||||||
<string name="renderer_anti_aliasing">Método de Anti-Serrilhado</string>
|
<string name="renderer_anti_aliasing">Método de Anti-Serrilhado</string>
|
||||||
<string name="renderer_force_max_clock">Força velocidade máxima (Adreno only)</string>
|
<string name="renderer_force_max_clock">Força velocidade máxima (Adreno only)</string>
|
||||||
<string name="renderer_force_max_clock_description">Força o GPU a correr à velocidade máxima (restrições térmicas serão aplicadas)</string>
|
<string name="renderer_force_max_clock_description">Força o GPU a correr à velocidade máxima (restrições térmicas serão aplicadas)</string>
|
||||||
|
@ -255,93 +247,6 @@
|
||||||
<string name="audio_volume">Volume</string>
|
<string name="audio_volume">Volume</string>
|
||||||
<string name="audio_volume_description">Especifica o volume de saída.</string>
|
<string name="audio_volume_description">Especifica o volume de saída.</string>
|
||||||
|
|
||||||
<!-- Input strings -->
|
|
||||||
<string name="buttons">Botões</string>
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">B</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">Mais</string>
|
|
||||||
<string name="button_minus">Menos</string>
|
|
||||||
<string name="button_home">Home</string>
|
|
||||||
<string name="button_capture">Capturar</string>
|
|
||||||
<string name="start_pause">Start/Pause</string>
|
|
||||||
<string name="dpad">D-Pad</string>
|
|
||||||
<string name="up">Cima</string>
|
|
||||||
<string name="down">Baixo</string>
|
|
||||||
<string name="left">Esquerda</string>
|
|
||||||
<string name="right">Direita</string>
|
|
||||||
<string name="left_stick">Analógico esquerdo</string>
|
|
||||||
<string name="control_stick">Alavanca de controle</string>
|
|
||||||
<string name="right_stick">Analógico direito</string>
|
|
||||||
<string name="c_stick">C-Stick</string>
|
|
||||||
<string name="pressed">Premido</string>
|
|
||||||
<string name="range">Alcance</string>
|
|
||||||
<string name="deadzone">Zona morta</string>
|
|
||||||
<string name="modifier">Modificador</string>
|
|
||||||
<string name="modifier_range">Alcance do modificador</string>
|
|
||||||
<string name="triggers">Gatilhos</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_sl_left">SL Esquerdo</string>
|
|
||||||
<string name="button_sr_left">SR Esquerdo</string>
|
|
||||||
<string name="button_sl_right">SL Direito</string>
|
|
||||||
<string name="button_sr_right">SR Direito</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">Inválido</string>
|
|
||||||
<string name="not_set">Indefinido</string>
|
|
||||||
<string name="unknown">Desconhecido</string>
|
|
||||||
<string name="qualified_hat">%1$s%2$s%3$sHat %4$s</string>
|
|
||||||
<string name="qualified_button_stick_axis">%1$s%2$s%3$sEixo %4$s</string>
|
|
||||||
<string name="qualified_button">%1$s%2$s%3$sBotão %4$s</string>
|
|
||||||
<string name="qualified_axis">Eixo %1$s%2$s</string>
|
|
||||||
<string name="unused">Não usado</string>
|
|
||||||
<string name="input_prompt">Mova ou aperte um botão</string>
|
|
||||||
<string name="unsupported_input">Tipo de entrada não suportada</string>
|
|
||||||
<string name="input_mapping_filter">Filtro de mapeamento de entrada</string>
|
|
||||||
<string name="input_mapping_filter_description">Selecione um dispositivo para filtrar o mapeamento dos controles</string>
|
|
||||||
<string name="auto_map">Mapear controle automaticamente</string>
|
|
||||||
<string name="auto_map_description">Selecione um controle para iniciar
|
|
||||||
uma tentativa de mapeamento automático</string>
|
|
||||||
<string name="attempted_auto_map">Tentativa de mapeamento automático de %1$s concluída</string>
|
|
||||||
<string name="controller_type">Tipo de controle</string>
|
|
||||||
<string name="pro_controller">Comando Pro</string>
|
|
||||||
<string name="handheld">Portátil</string>
|
|
||||||
<string name="dual_joycons">Par de Joycons</string>
|
|
||||||
<string name="left_joycon">Joycon Esquerdo</string>
|
|
||||||
<string name="right_joycon">Joycon Direito</string>
|
|
||||||
<string name="gamecube_controller">Controlador de depuração</string>
|
|
||||||
<string name="invert_axis">Inverter eixo</string>
|
|
||||||
<string name="invert_button">Inverter botão</string>
|
|
||||||
<string name="toggle_button">Alternar pressionamento do botão</string>
|
|
||||||
<string name="turbo_button">Botão Turbo</string>
|
|
||||||
<string name="set_threshold">Definir limite</string>
|
|
||||||
<string name="toggle_axis">Alternar eixos</string>
|
|
||||||
<string name="connected">Conectado</string>
|
|
||||||
<string name="use_system_vibrator">Usar vibração deste aparelho</string>
|
|
||||||
<string name="input_overlay">Overlay do controle</string>
|
|
||||||
<string name="vibration">Vibração</string>
|
|
||||||
<string name="vibration_strength">Intensidade da vibração</string>
|
|
||||||
<string name="profile">Perfil</string>
|
|
||||||
<string name="create_new_profile">Criar novo perfil</string>
|
|
||||||
<string name="enter_profile_name">Insira o nome do perfil</string>
|
|
||||||
<string name="profile_name_already_exists">O nome do perfil já existe</string>
|
|
||||||
<string name="invalid_profile_name">Nome de perfil inválido</string>
|
|
||||||
<string name="use_global_input_configuration">Usar configuração global de controles</string>
|
|
||||||
<string name="player_num_profile">Perfil do Jogador %d</string>
|
|
||||||
<string name="delete_input_profile">Deletar perfil de controle</string>
|
|
||||||
<string name="delete_input_profile_description">Tem certeza que quer deletar esse perfil? Ele não poderá ser recuperado.</string>
|
|
||||||
<string name="stick_map_description">Mova uma alavanca pra esquerda e depois pra cima ou aperte um botão</string>
|
|
||||||
<string name="button_map_description">Aperte um botão ou mova um gatilho/alavanca</string>
|
|
||||||
<string name="map_dpad_direction">Mapear Direcional para %1$s</string>
|
|
||||||
<string name="map_control">Mapear botão %1$s</string>
|
|
||||||
<string name="failed_to_load_profile">Falha ao carregar perfil</string>
|
|
||||||
<string name="failed_to_save_profile">Falha ao salvar perfil</string>
|
|
||||||
<string name="reset_mapping">Redefinir mapeamento</string>
|
|
||||||
<string name="reset_mapping_description">Você tem certeza que quer redefinir todos os mapeamentos deste controle para os padrões? Iso não pode ser desfeito.</string>
|
|
||||||
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">Padrão</string>
|
<string name="slider_default">Padrão</string>
|
||||||
<string name="ini_saved">Configurações guardadas</string>
|
<string name="ini_saved">Configurações guardadas</string>
|
||||||
|
@ -376,14 +281,6 @@ uma tentativa de mapeamento automático</string>
|
||||||
<string name="custom">Personalizado</string>
|
<string name="custom">Personalizado</string>
|
||||||
<string name="notice">Aviso</string>
|
<string name="notice">Aviso</string>
|
||||||
<string name="import_complete">Importação concluída</string>
|
<string name="import_complete">Importação concluída</string>
|
||||||
<string name="more_options">Mais opções</string>
|
|
||||||
<string name="use_global_setting">Usar configuração global</string>
|
|
||||||
<string name="operation_completed_successfully">A operação foi concluída com sucesso</string>
|
|
||||||
<string name="retry">Reiniciar</string>
|
|
||||||
<string name="confirm">Confirmar</string>
|
|
||||||
<string name="load">Carregar</string>
|
|
||||||
<string name="save">Guardar</string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
<string name="select_gpu_driver">Seleciona a driver para o GPU</string>
|
<string name="select_gpu_driver">Seleciona a driver para o GPU</string>
|
||||||
<string name="select_gpu_driver_title">Queres substituir o driver do GPU atual? </string>
|
<string name="select_gpu_driver_title">Queres substituir o driver do GPU atual? </string>
|
||||||
|
@ -404,9 +301,6 @@ uma tentativa de mapeamento automático</string>
|
||||||
<string name="preferences_graphics_description">Nível de precisão, resolução, cache de shader</string>
|
<string name="preferences_graphics_description">Nível de precisão, resolução, cache de shader</string>
|
||||||
<string name="preferences_audio">Audio</string>
|
<string name="preferences_audio">Audio</string>
|
||||||
<string name="preferences_audio_description">Engine de reprodução, volume</string>
|
<string name="preferences_audio_description">Engine de reprodução, volume</string>
|
||||||
<string name="preferences_controls">Controlos</string>
|
|
||||||
<string name="preferences_controls_description">Mapear entradas do controle</string>
|
|
||||||
<string name="preferences_player">Jogador %d</string>
|
|
||||||
<string name="preferences_theme">Cor e tema.</string>
|
<string name="preferences_theme">Cor e tema.</string>
|
||||||
<string name="preferences_debug">Depurar</string>
|
<string name="preferences_debug">Depurar</string>
|
||||||
<string name="preferences_debug_description">Depuração de CPU/GPU, API gráfica, fastmem</string>
|
<string name="preferences_debug_description">Depuração de CPU/GPU, API gráfica, fastmem</string>
|
||||||
|
@ -448,17 +342,6 @@ uma tentativa de mapeamento automático</string>
|
||||||
<string name="verifying_content">Verificando conteúdo</string>
|
<string name="verifying_content">Verificando conteúdo</string>
|
||||||
<string name="content_install_notice">Aviso sobre conteúdo adicional</string>
|
<string name="content_install_notice">Aviso sobre conteúdo adicional</string>
|
||||||
<string name="content_install_notice_description">O conteúdo que você selecionou não corresponde a este jogo.\nInstalar mesmo assim?</string>
|
<string name="content_install_notice_description">O conteúdo que você selecionou não corresponde a este jogo.\nInstalar mesmo assim?</string>
|
||||||
<string name="confirm_uninstall">Confirmar desinstalação</string>
|
|
||||||
<string name="confirm_uninstall_description">Tem certeza de que quer desinstalar esse adicional?</string>
|
|
||||||
<string name="verify_integrity">Verificar integridade</string>
|
|
||||||
<string name="verifying">Verificando...</string>
|
|
||||||
<string name="verify_success">Verificação de integridade concluída!</string>
|
|
||||||
<string name="verify_failure">Houve uma falha na verificação de integridade!</string>
|
|
||||||
<string name="verify_failure_description">Conteúdos do arquivo podem estar corrompidos</string>
|
|
||||||
<string name="verify_no_result">A verificação de integridade não pôde ser executada</string>
|
|
||||||
<string name="verify_no_result_description">Os conteúdos do arquivo não foram verificados se são válidos</string>
|
|
||||||
<string name="verification_failed_for">A verificação falhou para os seguintes arquivos:\n%1$s</string>
|
|
||||||
|
|
||||||
<!-- ROM loading errors -->
|
<!-- ROM loading errors -->
|
||||||
<string name="loader_error_encrypted">A tua ROM está encriptada</string>
|
<string name="loader_error_encrypted">A tua ROM está encriptada</string>
|
||||||
<string name="loader_error_encrypted_roms_description"><![CDATA[Por favor, siga os guias para despejar novamente o seu <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartucho de jogo</a> or <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">títulos instalados</a>.]]></string>
|
<string name="loader_error_encrypted_roms_description"><![CDATA[Por favor, siga os guias para despejar novamente o seu <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartucho de jogo</a> or <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">títulos instalados</a>.]]></string>
|
||||||
|
@ -472,7 +355,6 @@ uma tentativa de mapeamento automático</string>
|
||||||
<string name="emulation_exit">Parar emulação</string>
|
<string name="emulation_exit">Parar emulação</string>
|
||||||
<string name="emulation_done">Feito</string>
|
<string name="emulation_done">Feito</string>
|
||||||
<string name="emulation_fps_counter">Contador de FPS</string>
|
<string name="emulation_fps_counter">Contador de FPS</string>
|
||||||
<string name="emulation_thermal_indicator">Indicador de temperatura</string>
|
|
||||||
<string name="emulation_toggle_controls">Alterar controles</string>
|
<string name="emulation_toggle_controls">Alterar controles</string>
|
||||||
<string name="emulation_rel_stick_center">Centro Relativo de Analógico</string>
|
<string name="emulation_rel_stick_center">Centro Relativo de Analógico</string>
|
||||||
<string name="emulation_dpad_slide">Deslizamento dos Botões Direcionais</string>
|
<string name="emulation_dpad_slide">Deslizamento dos Botões Direcionais</string>
|
||||||
|
@ -488,8 +370,6 @@ uma tentativa de mapeamento automático</string>
|
||||||
<string name="emulation_unpause">Despausar emulação</string>
|
<string name="emulation_unpause">Despausar emulação</string>
|
||||||
<string name="emulation_input_overlay">Opções de overlay</string>
|
<string name="emulation_input_overlay">Opções de overlay</string>
|
||||||
<string name="touchscreen">Ecrã Táctil</string>
|
<string name="touchscreen">Ecrã Táctil</string>
|
||||||
<string name="lock_drawer">Bloquear submenu</string>
|
|
||||||
<string name="unlock_drawer">Desbloquear submenu</string>
|
|
||||||
|
|
||||||
<string name="load_settings">Carregando configurações...</string>
|
<string name="load_settings">Carregando configurações...</string>
|
||||||
|
|
||||||
|
@ -634,12 +514,6 @@ uma tentativa de mapeamento automático</string>
|
||||||
<string name="mute">Mute</string>
|
<string name="mute">Mute</string>
|
||||||
<string name="unmute">Unmute</string>
|
<string name="unmute">Unmute</string>
|
||||||
|
|
||||||
<!-- Emulation vertical alignment -->
|
|
||||||
<string name="vertical_alignment">Alinhamento vertical</string>
|
|
||||||
<string name="top">Em cima</string>
|
|
||||||
<string name="center">Centralizado</string>
|
|
||||||
<string name="bottom">Embaixo</string>
|
|
||||||
|
|
||||||
<!-- Licenses screen strings -->
|
<!-- Licenses screen strings -->
|
||||||
<string name="licenses">Licenças</string>
|
<string name="licenses">Licenças</string>
|
||||||
<string name="license_fidelityfx_fsr_description">Upscaling de alta qualidade da AMD</string>
|
<string name="license_fidelityfx_fsr_description">Upscaling de alta qualidade da AMD</string>
|
||||||
|
|
|
@ -140,11 +140,6 @@
|
||||||
<item quantity="other">Импортировано %d сохранений</item>
|
<item quantity="other">Импортировано %d сохранений</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<string name="no_save_data_found">Не найдены сохраненмия</string>
|
<string name="no_save_data_found">Не найдены сохраненмия</string>
|
||||||
<string name="verify_installed_content">Подтвердить установленный контент</string>
|
|
||||||
<string name="verify_installed_content_description">Проверяет весь установленный контент на наличие повреждений</string>
|
|
||||||
<string name="keys_missing">Отсутствуют ключи шифрования</string>
|
|
||||||
<string name="keys_missing_description">Прошивка и розничные игры не могут быть расшифрованы</string>
|
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<!-- Applet launcher strings -->
|
<!-- Applet launcher strings -->
|
||||||
<string name="applets">Запуск апплета</string>
|
<string name="applets">Запуск апплета</string>
|
||||||
|
@ -211,7 +206,6 @@
|
||||||
<string name="value_with_units">%1$s%2$s</string>
|
<string name="value_with_units">%1$s%2$s</string>
|
||||||
|
|
||||||
<!-- System settings strings -->
|
<!-- System settings strings -->
|
||||||
<string name="device_name">Название устройства</string>
|
|
||||||
<string name="use_docked_mode">Режим док-станции</string>
|
<string name="use_docked_mode">Режим док-станции</string>
|
||||||
<string name="use_docked_mode_description">Увеличивает разрешение, снижая производительность. Портативный режим используется при отключении, снижая разрешение и повышая производительность.</string>
|
<string name="use_docked_mode_description">Увеличивает разрешение, снижая производительность. Портативный режим используется при отключении, снижая разрешение и повышая производительность.</string>
|
||||||
<string name="emulated_region">Регион консоли</string>
|
<string name="emulated_region">Регион консоли</string>
|
||||||
|
@ -229,8 +223,6 @@
|
||||||
<string name="renderer_screen_layout">Ориентация</string>
|
<string name="renderer_screen_layout">Ориентация</string>
|
||||||
<string name="renderer_aspect_ratio">Соотношение сторон</string>
|
<string name="renderer_aspect_ratio">Соотношение сторон</string>
|
||||||
<string name="renderer_scaling_filter">Фильтр адаптации окна</string>
|
<string name="renderer_scaling_filter">Фильтр адаптации окна</string>
|
||||||
<string name="fsr_sharpness">Резкость FSR</string>
|
|
||||||
<string name="fsr_sharpness_description">Определяет, насколько чётким будет изображение при использовании динамического контраста FSR.</string>
|
|
||||||
<string name="renderer_anti_aliasing">Метод сглаживания</string>
|
<string name="renderer_anti_aliasing">Метод сглаживания</string>
|
||||||
<string name="renderer_force_max_clock">Принудительно заставить максимальную тактовую частоту (только для Adreno)</string>
|
<string name="renderer_force_max_clock">Принудительно заставить максимальную тактовую частоту (только для Adreno)</string>
|
||||||
<string name="renderer_force_max_clock_description">Заставляет ГП работать на максимально возможных тактовых частотах (тепловые ограничения все равно будут применяться).</string>
|
<string name="renderer_force_max_clock_description">Заставляет ГП работать на максимально возможных тактовых частотах (тепловые ограничения все равно будут применяться).</string>
|
||||||
|
@ -258,92 +250,6 @@
|
||||||
<string name="audio_volume">Громкость</string>
|
<string name="audio_volume">Громкость</string>
|
||||||
<string name="audio_volume_description">Задает громкость аудиовыхода.</string>
|
<string name="audio_volume_description">Задает громкость аудиовыхода.</string>
|
||||||
|
|
||||||
<!-- Input strings -->
|
|
||||||
<string name="buttons">Кнопки</string>
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">B</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">Плюс</string>
|
|
||||||
<string name="button_minus">Минус</string>
|
|
||||||
<string name="button_home">Home</string>
|
|
||||||
<string name="button_capture">Захват</string>
|
|
||||||
<string name="start_pause">Старт / Пауза</string>
|
|
||||||
<string name="dpad">Крестовина</string>
|
|
||||||
<string name="up">Вверх</string>
|
|
||||||
<string name="down">Вниз</string>
|
|
||||||
<string name="left">Влево</string>
|
|
||||||
<string name="right">Вправо</string>
|
|
||||||
<string name="left_stick">Левый стик</string>
|
|
||||||
<string name="control_stick">Стик управления</string>
|
|
||||||
<string name="right_stick">Правый стик</string>
|
|
||||||
<string name="c_stick">C-Джойстик</string>
|
|
||||||
<string name="pressed">Нажатие</string>
|
|
||||||
<string name="range">Диапазон</string>
|
|
||||||
<string name="deadzone">Мертвая зона</string>
|
|
||||||
<string name="modifier">Модификатор</string>
|
|
||||||
<string name="modifier_range">Диапазон модификатора</string>
|
|
||||||
<string name="triggers">Триггеры</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_sl_left">Левый SL</string>
|
|
||||||
<string name="button_sr_left">Левый SR</string>
|
|
||||||
<string name="button_sl_right">Правый SL</string>
|
|
||||||
<string name="button_sr_right">Правый SR</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">Недопустимо</string>
|
|
||||||
<string name="not_set">Не установлено</string>
|
|
||||||
<string name="unknown">Неизвестно</string>
|
|
||||||
<string name="qualified_hat">%1$s%2$s%3$sКрест%4$s</string>
|
|
||||||
<string name="qualified_button_stick_axis">%1$s%2$s%3$sОсь%4$s</string>
|
|
||||||
<string name="qualified_button">%1$s%2$s%3$sКнопка %4$s</string>
|
|
||||||
<string name="qualified_axis">Ось %1$s%2$s</string>
|
|
||||||
<string name="unused">Не используется</string>
|
|
||||||
<string name="input_prompt">Переместите или нажмите</string>
|
|
||||||
<string name="unsupported_input">Неподдерживаемый тип ввода</string>
|
|
||||||
<string name="input_mapping_filter">Фильтр маппинга ввода</string>
|
|
||||||
<string name="input_mapping_filter_description">Выберите устройство для фильтрации маппинга</string>
|
|
||||||
<string name="auto_map">Авто-маппинг контроллера</string>
|
|
||||||
<string name="auto_map_description">Выберите устройство для автоматического маппинга</string>
|
|
||||||
<string name="attempted_auto_map">Попытка автоматического маппинга %1$s</string>
|
|
||||||
<string name="controller_type">Тип контроллера</string>
|
|
||||||
<string name="pro_controller">Контроллер Pro</string>
|
|
||||||
<string name="handheld">Портативный</string>
|
|
||||||
<string name="dual_joycons">Двойные Joy-Сon\'ы</string>
|
|
||||||
<string name="left_joycon">Левый Joy-Сon</string>
|
|
||||||
<string name="right_joycon">Правый Joy-Сon</string>
|
|
||||||
<string name="gamecube_controller">Контроллер GameCube</string>
|
|
||||||
<string name="invert_axis">Инвертировать оси</string>
|
|
||||||
<string name="invert_button">Инвертировать кнопку</string>
|
|
||||||
<string name="toggle_button">Переключить кнопку</string>
|
|
||||||
<string name="turbo_button">Турбо кнопка</string>
|
|
||||||
<string name="set_threshold">Установить порог</string>
|
|
||||||
<string name="toggle_axis">Переключить оси</string>
|
|
||||||
<string name="connected">Подключено</string>
|
|
||||||
<string name="use_system_vibrator">Использовать системное вибро</string>
|
|
||||||
<string name="input_overlay">Оверлей ввода</string>
|
|
||||||
<string name="vibration">Вибрация</string>
|
|
||||||
<string name="vibration_strength">Сила вибрации</string>
|
|
||||||
<string name="profile">Профиль</string>
|
|
||||||
<string name="create_new_profile">Создать новый профиль</string>
|
|
||||||
<string name="enter_profile_name">Введите имя профиля</string>
|
|
||||||
<string name="profile_name_already_exists">Имя профиля уже существует</string>
|
|
||||||
<string name="invalid_profile_name">Неверное имя профиля</string>
|
|
||||||
<string name="use_global_input_configuration">Использовать глобальную настройку управления</string>
|
|
||||||
<string name="player_num_profile">Профиль игрока %d</string>
|
|
||||||
<string name="delete_input_profile">Удалить профиль управления</string>
|
|
||||||
<string name="delete_input_profile_description">Вы уверены, что хотите удалить этот профиль? Это необратимо.</string>
|
|
||||||
<string name="stick_map_description">Переместите стик влево, а затем вверх или нажмите</string>
|
|
||||||
<string name="button_map_description">Нажмите кнопку или переместите триггер/стик.</string>
|
|
||||||
<string name="map_dpad_direction">Назначить на D-Pad %1$s</string>
|
|
||||||
<string name="map_control">Назначить на %1$s</string>
|
|
||||||
<string name="failed_to_load_profile">Не удалось загрузить профиль</string>
|
|
||||||
<string name="failed_to_save_profile">Не удалось сохранить профиль</string>
|
|
||||||
<string name="reset_mapping">Сбросить маппинги</string>
|
|
||||||
<string name="reset_mapping_description">Вы уверены, что хотите сбросить все маппинги для этого контроллера на значения по умолчанию? Это действие нельзя отменить.</string>
|
|
||||||
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">По умолчанию</string>
|
<string name="slider_default">По умолчанию</string>
|
||||||
<string name="ini_saved">Сохраненные настройки</string>
|
<string name="ini_saved">Сохраненные настройки</string>
|
||||||
|
@ -378,14 +284,6 @@
|
||||||
<string name="custom">Другое</string>
|
<string name="custom">Другое</string>
|
||||||
<string name="notice">Уведомление</string>
|
<string name="notice">Уведомление</string>
|
||||||
<string name="import_complete">Импорт завершен</string>
|
<string name="import_complete">Импорт завершен</string>
|
||||||
<string name="more_options">Больше настроек</string>
|
|
||||||
<string name="use_global_setting">Исп. глобальные настройки</string>
|
|
||||||
<string name="operation_completed_successfully">Операция выполнена успешно</string>
|
|
||||||
<string name="retry">Повторить</string>
|
|
||||||
<string name="confirm">Подтвердить</string>
|
|
||||||
<string name="load">Загрузить</string>
|
|
||||||
<string name="save">Сохранить</string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
<string name="select_gpu_driver">Выбрать драйвер ГП</string>
|
<string name="select_gpu_driver">Выбрать драйвер ГП</string>
|
||||||
<string name="select_gpu_driver_title">Хотите заменить текущий драйвер ГП?</string>
|
<string name="select_gpu_driver_title">Хотите заменить текущий драйвер ГП?</string>
|
||||||
|
@ -406,9 +304,6 @@
|
||||||
<string name="preferences_graphics_description">Уровень точности, разрешение, кэш шейдеров</string>
|
<string name="preferences_graphics_description">Уровень точности, разрешение, кэш шейдеров</string>
|
||||||
<string name="preferences_audio">Аудио</string>
|
<string name="preferences_audio">Аудио</string>
|
||||||
<string name="preferences_audio_description">Движок вывода, громкость</string>
|
<string name="preferences_audio_description">Движок вывода, громкость</string>
|
||||||
<string name="preferences_controls">Управление</string>
|
|
||||||
<string name="preferences_controls_description">Маппинг контроллера</string>
|
|
||||||
<string name="preferences_player">Игрок %d</string>
|
|
||||||
<string name="preferences_theme">Тема и цвет</string>
|
<string name="preferences_theme">Тема и цвет</string>
|
||||||
<string name="preferences_debug">Отладка</string>
|
<string name="preferences_debug">Отладка</string>
|
||||||
<string name="preferences_debug_description">Отладка ЦП/ГП, графический API, fastmem</string>
|
<string name="preferences_debug_description">Отладка ЦП/ГП, графический API, fastmem</string>
|
||||||
|
@ -450,17 +345,6 @@
|
||||||
<string name="verifying_content">Проверка содержимого...</string>
|
<string name="verifying_content">Проверка содержимого...</string>
|
||||||
<string name="content_install_notice">Уведомление об установке контента</string>
|
<string name="content_install_notice">Уведомление об установке контента</string>
|
||||||
<string name="content_install_notice_description">Содержимое, которое вы выбрали, не соответствует этой игре.\nУстановить все равно?</string>
|
<string name="content_install_notice_description">Содержимое, которое вы выбрали, не соответствует этой игре.\nУстановить все равно?</string>
|
||||||
<string name="confirm_uninstall">Подтверждение удаления</string>
|
|
||||||
<string name="confirm_uninstall_description">Вы уверены, что хотите удалить это дополнение?</string>
|
|
||||||
<string name="verify_integrity">Проверить целостность</string>
|
|
||||||
<string name="verifying">Проверка...</string>
|
|
||||||
<string name="verify_success">Проверка целостности прошла успешно!</string>
|
|
||||||
<string name="verify_failure">Проверка целостности не удалась!</string>
|
|
||||||
<string name="verify_failure_description">Файл может быть поврежден</string>
|
|
||||||
<string name="verify_no_result">Проверка целостности не может быть выполнена</string>
|
|
||||||
<string name="verify_no_result_description">Файл не проверялся на корректность</string>
|
|
||||||
<string name="verification_failed_for">Проверка не удалась для следующих файлов:\n%1$s</string>
|
|
||||||
|
|
||||||
<!-- ROM loading errors -->
|
<!-- ROM loading errors -->
|
||||||
<string name="loader_error_encrypted">Ваш ROM зашифрованный</string>
|
<string name="loader_error_encrypted">Ваш ROM зашифрованный</string>
|
||||||
<string name="loader_error_encrypted_roms_description"><![CDATA[Следуйте инструкциям, чтобы пере-дампить игровые картриджи <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\"> или <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\"> установленные игры</a>.]]></string>
|
<string name="loader_error_encrypted_roms_description"><![CDATA[Следуйте инструкциям, чтобы пере-дампить игровые картриджи <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\"> или <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\"> установленные игры</a>.]]></string>
|
||||||
|
@ -474,7 +358,6 @@
|
||||||
<string name="emulation_exit">Выход из эмуляции</string>
|
<string name="emulation_exit">Выход из эмуляции</string>
|
||||||
<string name="emulation_done">Готово</string>
|
<string name="emulation_done">Готово</string>
|
||||||
<string name="emulation_fps_counter">Счётчик FPS</string>
|
<string name="emulation_fps_counter">Счётчик FPS</string>
|
||||||
<string name="emulation_thermal_indicator">Индикатор температуры</string>
|
|
||||||
<string name="emulation_toggle_controls">Переключение управления</string>
|
<string name="emulation_toggle_controls">Переключение управления</string>
|
||||||
<string name="emulation_rel_stick_center">Относительный центр стика</string>
|
<string name="emulation_rel_stick_center">Относительный центр стика</string>
|
||||||
<string name="emulation_dpad_slide">Слайд крестовиной</string>
|
<string name="emulation_dpad_slide">Слайд крестовиной</string>
|
||||||
|
@ -490,8 +373,6 @@
|
||||||
<string name="emulation_unpause">Возобновить эмуляцию</string>
|
<string name="emulation_unpause">Возобновить эмуляцию</string>
|
||||||
<string name="emulation_input_overlay">Настройка оверлея</string>
|
<string name="emulation_input_overlay">Настройка оверлея</string>
|
||||||
<string name="touchscreen">Сенсорный экран</string>
|
<string name="touchscreen">Сенсорный экран</string>
|
||||||
<string name="lock_drawer">Заморозить док</string>
|
|
||||||
<string name="unlock_drawer">Разморозить док</string>
|
|
||||||
|
|
||||||
<string name="load_settings">Загрузка настроек...</string>
|
<string name="load_settings">Загрузка настроек...</string>
|
||||||
|
|
||||||
|
@ -636,12 +517,6 @@
|
||||||
<string name="mute">Выключить звук</string>
|
<string name="mute">Выключить звук</string>
|
||||||
<string name="unmute">Включить звук</string>
|
<string name="unmute">Включить звук</string>
|
||||||
|
|
||||||
<!-- Emulation vertical alignment -->
|
|
||||||
<string name="vertical_alignment">Вертикальное выравнивание</string>
|
|
||||||
<string name="top">Верх</string>
|
|
||||||
<string name="center">Центр</string>
|
|
||||||
<string name="bottom">Низ</string>
|
|
||||||
|
|
||||||
<!-- Licenses screen strings -->
|
<!-- Licenses screen strings -->
|
||||||
<string name="licenses">Лицензии</string>
|
<string name="licenses">Лицензии</string>
|
||||||
<string name="license_fidelityfx_fsr_description">Высококачественное масштабирование от AMD</string>
|
<string name="license_fidelityfx_fsr_description">Высококачественное масштабирование от AMD</string>
|
||||||
|
|
|
@ -81,8 +81,6 @@
|
||||||
<string name="save_file_invalid_zip_structure_description">Назва першої вкладеної папки має бути ідентифікатором гри.</string>
|
<string name="save_file_invalid_zip_structure_description">Назва першої вкладеної папки має бути ідентифікатором гри.</string>
|
||||||
<string name="import_saves">Імпорт</string>
|
<string name="import_saves">Імпорт</string>
|
||||||
<string name="export_saves">Експорт</string>
|
<string name="export_saves">Експорт</string>
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<!-- About screen strings -->
|
<!-- About screen strings -->
|
||||||
<string name="gaia_is_not_real">Gaia не існує</string>
|
<string name="gaia_is_not_real">Gaia не існує</string>
|
||||||
<string name="copied_to_clipboard">Скопійовано в буфер обміну</string>
|
<string name="copied_to_clipboard">Скопійовано в буфер обміну</string>
|
||||||
|
@ -126,46 +124,6 @@
|
||||||
<string name="audio_volume">Гучність</string>
|
<string name="audio_volume">Гучність</string>
|
||||||
<string name="audio_volume_description">Вказує гучність аудіовиходу.</string>
|
<string name="audio_volume_description">Вказує гучність аудіовиходу.</string>
|
||||||
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">B</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">Плюс</string>
|
|
||||||
<string name="button_minus">Мінус</string>
|
|
||||||
<string name="button_home">Home</string>
|
|
||||||
<string name="button_capture">Захоплення</string>
|
|
||||||
<string name="dpad">Кнопки напрямків</string>
|
|
||||||
<string name="up">Вгору</string>
|
|
||||||
<string name="down">Вниз</string>
|
|
||||||
<string name="left">Вліво</string>
|
|
||||||
<string name="right">Вправо</string>
|
|
||||||
<string name="c_stick">C-Джойстик</string>
|
|
||||||
<string name="pressed">Натиснення</string>
|
|
||||||
<string name="range">Діапазон</string>
|
|
||||||
<string name="deadzone">Мертва зона</string>
|
|
||||||
<string name="modifier">Модифікатор</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">Неприпустимо</string>
|
|
||||||
<string name="pro_controller">Контролер Pro</string>
|
|
||||||
<string name="handheld">Портативний</string>
|
|
||||||
<string name="dual_joycons">Подвійні Joy-Con\'и</string>
|
|
||||||
<string name="left_joycon">Лівий Joy-Con</string>
|
|
||||||
<string name="right_joycon">Правий Joy-Con</string>
|
|
||||||
<string name="gamecube_controller">Контролер GameCube</string>
|
|
||||||
<string name="invert_axis">Інвертувати осі</string>
|
|
||||||
<string name="invert_button">Інвертувати кнопку</string>
|
|
||||||
<string name="toggle_button">Переключити кнопку</string>
|
|
||||||
<string name="turbo_button">Турбо кнопка</string>
|
|
||||||
<string name="set_threshold">Встановити поріг</string>
|
|
||||||
<string name="toggle_axis">Переключити осі</string>
|
|
||||||
<string name="connected">З\'єднано</string>
|
|
||||||
<string name="vibration">Вібрація</string>
|
|
||||||
<string name="profile">Профіль</string>
|
|
||||||
<string name="use_global_input_configuration">Використовувати глобальну конфігурацію вводу</string>
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">За замовчуванням</string>
|
<string name="slider_default">За замовчуванням</string>
|
||||||
<string name="ini_saved">Збережені налаштування</string>
|
<string name="ini_saved">Збережені налаштування</string>
|
||||||
|
@ -186,8 +144,6 @@
|
||||||
<string name="delete">Видалити</string>
|
<string name="delete">Видалити</string>
|
||||||
<string name="start">Start</string>
|
<string name="start">Start</string>
|
||||||
<string name="clear">Очистити</string>
|
<string name="clear">Очистити</string>
|
||||||
<string name="save">Зберегти</string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
<string name="select_gpu_driver">Вибрати драйвер ГП</string>
|
<string name="select_gpu_driver">Вибрати драйвер ГП</string>
|
||||||
<string name="select_gpu_driver_title">Хочете замінити поточний драйвер ГП?</string>
|
<string name="select_gpu_driver_title">Хочете замінити поточний драйвер ГП?</string>
|
||||||
|
@ -203,7 +159,6 @@
|
||||||
<string name="preferences_system">Система</string>
|
<string name="preferences_system">Система</string>
|
||||||
<string name="preferences_graphics">Графіка</string>
|
<string name="preferences_graphics">Графіка</string>
|
||||||
<string name="preferences_audio">Аудіо</string>
|
<string name="preferences_audio">Аудіо</string>
|
||||||
<string name="preferences_controls">Керування</string>
|
|
||||||
<string name="preferences_theme">Тема і колір</string>
|
<string name="preferences_theme">Тема і колір</string>
|
||||||
<string name="preferences_debug">Налагодження</string>
|
<string name="preferences_debug">Налагодження</string>
|
||||||
<!-- Game properties -->
|
<!-- Game properties -->
|
||||||
|
@ -224,6 +179,7 @@
|
||||||
<string name="emulation_control_scale">Масштаб</string>
|
<string name="emulation_control_scale">Масштаб</string>
|
||||||
<string name="emulation_control_opacity">Непрозорість</string>
|
<string name="emulation_control_opacity">Непрозорість</string>
|
||||||
<string name="touchscreen">Сенсорний екран</string>
|
<string name="touchscreen">Сенсорний екран</string>
|
||||||
|
|
||||||
<!-- Errors and warnings -->
|
<!-- Errors and warnings -->
|
||||||
<string name="abort_button">Перервати</string>
|
<string name="abort_button">Перервати</string>
|
||||||
<string name="continue_button">Продовжити</string>
|
<string name="continue_button">Продовжити</string>
|
||||||
|
|
|
@ -1,49 +1,49 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||||
|
|
||||||
<string name="app_disclaimer">Phần mềm này sẽ chạy trò chơi cho máy chơi game Nintendo Switch. Không có game titles hoặc keys được bao gồm.<br /><br />Trước khi bạn bắt đầu, hãy tìm file <![CDATA[<b> prod.keys </b>]]> trên bộ nhớ thiết bị của bạn.<br /><br /><![CDATA[<a href=\"https://yuzu-emu.org/help/quickstart\">Tìm hiểu thêm</a>]]></string>
|
<string name="app_disclaimer">Phần mềm này sẽ chạy các game cho máy chơi game Nintendo Switch. Không có title games hoặc keys được bao gồm.<br /><br />Trước khi bạn bắt đầu, hãy tìm tập tin <![CDATA[<b> prod.keys </b>]]> trên bộ nhớ thiết bị của bạn.<br /><br /><![CDATA[<a href=\"https://yuzu-emu.org/help/quickstart\">Tìm hiểu thêm</a>]]></string>
|
||||||
<string name="notice_notification_channel_name">Thông báo và lỗi</string>
|
<string name="notice_notification_channel_name">Thông báo và lỗi</string>
|
||||||
<string name="notice_notification_channel_description">Hiển thị thông báo khi có sự cố xảy ra</string>
|
<string name="notice_notification_channel_description">Hiển thị thông báo khi có sự cố xảy ra.</string>
|
||||||
<string name="notification_permission_not_granted">Ứng dụng không được cấp quyền thông báo!</string>
|
<string name="notification_permission_not_granted">Ứng dụng không được cấp quyền thông báo!</string>
|
||||||
|
|
||||||
<!-- Setup strings -->
|
<!-- Setup strings -->
|
||||||
<string name="welcome">Chào mừng!</string>
|
<string name="welcome">Chào mừng!</string>
|
||||||
<string name="welcome_description">Tìm hiểu cách cài đặt <b>yuzu</b> và bắt đầu giả lập.</string>
|
<string name="welcome_description">Tìm hiểu cách cài đặt <b>yuzu</b> và bắt đầu giả lập.</string>
|
||||||
<string name="get_started">Bắt đầu</string>
|
<string name="get_started">Bắt đầu</string>
|
||||||
<string name="keys">Chìa khóa</string>
|
<string name="keys">Keys</string>
|
||||||
<string name="keys_description">Chọn file <b>prod.keys</b> của bạn bằng nút bên dưới.</string>
|
<string name="keys_description">Chọn tệp <b>prod.keys</b> của bạn bằng nút bên dưới.</string>
|
||||||
<string name="select_keys">Chọn Chìa khóa</string>
|
<string name="select_keys">Chọn Keys</string>
|
||||||
<string name="games">Trò chơi</string>
|
<string name="games">Game</string>
|
||||||
<string name="games_description">Chọn thư mục <b>Games</b> của bạn bằng nút bên dưới.</string>
|
<string name="games_description">Chọn thư mục <b>Game</b> của bạn bằng nút bên dưới.</string>
|
||||||
<string name="done">Hoàn thành</string>
|
<string name="done">Hoàn thành</string>
|
||||||
<string name="done_description">Tất cả đã hoàn tất.\nHãy tận hưởng trò chơi của bạn!</string>
|
<string name="done_description">Tất cả đã hoàn tất.\nHãy tận hưởng các game của bạn!</string>
|
||||||
<string name="text_continue">Tiếp tục</string>
|
<string name="text_continue">Tiếp tục</string>
|
||||||
<string name="next">Tiếp theo</string>
|
<string name="next">Tiếp theo</string>
|
||||||
<string name="back">Trở lại</string>
|
<string name="back">Trở lại</string>
|
||||||
<string name="add_games">Thêm Trò chơi</string>
|
<string name="add_games">Thêm Game</string>
|
||||||
<string name="add_games_description">Chọn thư mục trò chơi của bạn</string>
|
<string name="add_games_description">Chọn thư mục game của bạn</string>
|
||||||
<!-- Home strings -->
|
<!-- Home strings -->
|
||||||
<string name="home_games">Trò chơi</string>
|
<string name="home_games">Game</string>
|
||||||
<string name="home_search">Tìm</string>
|
<string name="home_search">Tìm kiếm</string>
|
||||||
<string name="home_settings">Cài đặt</string>
|
<string name="home_settings">Cài đặt</string>
|
||||||
<string name="empty_gamelist">Không tìm thấy files hoặc chưa có thư mục trò chơi nào được chọn.</string>
|
<string name="empty_gamelist">Không tìm thấy tập tin hoặc chưa có thư mục game nào được chọn.</string>
|
||||||
<string name="search_and_filter_games">Tìm và lọc trò chơi</string>
|
<string name="search_and_filter_games">Tìm và lọc game</string>
|
||||||
<string name="select_games_folder">Chọn thư mục trò chơi</string>
|
<string name="select_games_folder">Chọn thư mục game</string>
|
||||||
<string name="select_games_folder_description">Cho phép yuzu thêm các trò chơi vào danh sách</string>
|
<string name="select_games_folder_description">Cho phép yuzu thêm vào danh sách game</string>
|
||||||
<string name="add_games_warning">Bỏ qua lựa chọn thư mục trò chơi?</string>
|
<string name="add_games_warning">Bỏ qua việc lựa chọn thư mục game?</string>
|
||||||
<string name="add_games_warning_description">Trò chơi sẽ không hiển thị trong danh sách nếu một thư mục không được chọn</string>
|
<string name="add_games_warning_description">Game sẽ không hiển thị trong danh sách nếu một thư mục không được chọn.</string>
|
||||||
<string name="add_games_warning_help">https://yuzu-emu.org/help/quickstart/#dumping-games</string>
|
<string name="add_games_warning_help">https://yuzu-emu.org/help/quickstart/#dumping-games</string>
|
||||||
<string name="home_search_games">Tìm kiếm games</string>
|
<string name="home_search_games">Tìm kiếm game</string>
|
||||||
<string name="games_dir_selected">Thư mục trò chơi đã được chọn</string>
|
<string name="games_dir_selected">Thư mục game đã được chọn</string>
|
||||||
<string name="install_prod_keys">Cài prod.keys</string>
|
<string name="install_prod_keys">Cài đặt prod.keys</string>
|
||||||
<string name="install_prod_keys_description">Yêu cầu để giải mã các game bán lẻ</string>
|
<string name="install_prod_keys_description">Yêu cầu để giải mã các game bán lẻ</string>
|
||||||
<string name="install_prod_keys_warning">Bỏ qua thêm chìa khóa?</string>
|
<string name="install_prod_keys_warning">Bỏ qua việc thêm keys?</string>
|
||||||
<string name="install_prod_keys_warning_description">Cần có chìa khóa hợp lệ để giả lập trò chơi. Chỉ có các ứng dụng homebrew có thể vận hành nếu bạn tiếp tục</string>
|
<string name="install_prod_keys_warning_description">Cần có keys hợp lệ để giả lập các game bán lẻ. Chỉ có các ứng dụng homebrew có thể vận hành nếu bạn tiếp tục.</string>
|
||||||
<string name="install_prod_keys_warning_help">https://yuzu-emu.org/help/quickstart/#guide-introduction</string>
|
<string name="install_prod_keys_warning_help">https://yuzu-emu.org/help/quickstart/#guide-introduction</string>
|
||||||
<string name="notifications">Thông báo</string>
|
<string name="notifications">Thông báo</string>
|
||||||
<string name="notifications_description">Ấn vào nút bên dưới để cấp quyền ứng dụng gửi thông báo</string>
|
<string name="notifications_description">Cấp quyền thông báo bằng nút bên dưới.</string>
|
||||||
<string name="give_permission">Cấp quyền</string>
|
<string name="give_permission">Cấp quyền</string>
|
||||||
<string name="notification_warning">Bỏ qua cấp quyền thông báo?</string>
|
<string name="notification_warning">Bỏ qua việc cấp quyền thông báo?</string>
|
||||||
<string name="notification_warning_description">yuzu sẽ không thể gửi những thông báo quan trọng đến bạn.</string>
|
<string name="notification_warning_description">yuzu sẽ không thể gửi những thông báo quan trọng đến bạn.</string>
|
||||||
<string name="permission_denied">Đã từ chối cấp quyền</string>
|
<string name="permission_denied">Đã từ chối cấp quyền</string>
|
||||||
<string name="permission_denied_description">Bạn từ chối cấp quyền này quá nhiều lần và giờ bạn phải cấp quyền thủ công trong cài đặt máy.</string>
|
<string name="permission_denied_description">Bạn từ chối cấp quyền này quá nhiều lần và giờ bạn phải cấp quyền thủ công trong cài đặt máy.</string>
|
||||||
|
@ -51,29 +51,29 @@
|
||||||
<string name="about_description">Phiên bản, đóng góp và những thứ khác</string>
|
<string name="about_description">Phiên bản, đóng góp và những thứ khác</string>
|
||||||
<string name="warning_help">Trợ giúp</string>
|
<string name="warning_help">Trợ giúp</string>
|
||||||
<string name="warning_skip">Bỏ qua</string>
|
<string name="warning_skip">Bỏ qua</string>
|
||||||
<string name="warning_cancel">Huỷ</string>
|
<string name="warning_cancel">Hủy bỏ</string>
|
||||||
<string name="install_amiibo_keys">Cài đặt Amiibo</string>
|
<string name="install_amiibo_keys">Cài đặt keys Amiibo</string>
|
||||||
<string name="install_amiibo_keys_description">Cần thiết để dùng Amiibo trong trò chơi</string>
|
<string name="install_amiibo_keys_description">Cần thiết để dùng Amiibo trong game</string>
|
||||||
<string name="invalid_keys_file">Chìa khóa không hợp lệ</string>
|
<string name="invalid_keys_file">Tệp keys không hợp lệ đã được chọn</string>
|
||||||
<string name="install_keys_success">Cài đặt chìa khóa thành công</string>
|
<string name="install_keys_success">Cài đặt keys thành công</string>
|
||||||
<string name="reading_keys_failure">Lỗi đọc keys mã hóa</string>
|
<string name="reading_keys_failure">Lỗi đọc keys mã hóa</string>
|
||||||
<string name="install_prod_keys_failure_extension_description">Xác minh rằng tệp keys của bạn có đuôi .keys và thử lại.</string>
|
<string name="install_prod_keys_failure_extension_description">Xác minh rằng tệp keys của bạn có đuôi .keys và thử lại.</string>
|
||||||
<string name="install_amiibo_keys_failure_extension_description">Xác minh rằng tệp keys của bạn có đuôi .bin và thử lại.</string>
|
<string name="install_amiibo_keys_failure_extension_description">Xác minh rằng tệp keys của bạn có đuôi .bin và thử lại.</string>
|
||||||
<string name="invalid_keys_error">Keys mã hoá không hợp lệ</string>
|
<string name="invalid_keys_error">Keys mã hoá không hợp lệ</string>
|
||||||
<string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
<string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||||
<string name="install_keys_failure_description">Chọn file sai hoặc bị hỏng. Hãy xuất chìa khóa khác</string>
|
<string name="install_keys_failure_description">Tệp đã chọn sai hoặc hỏng. Vui lòng trích xuất lại keys của bạn.</string>
|
||||||
<string name="install_gpu_driver">Cài đặt driver GPU</string>
|
<string name="install_gpu_driver">Cài đặt driver GPU</string>
|
||||||
<string name="install_gpu_driver_description">Cài đặt driver thay thế để có thể có hiệu suất tốt và chính xác hơn</string>
|
<string name="install_gpu_driver_description">Cài đặt driver thay thế để có thể có hiệu suất tốt và chính xác hơn</string>
|
||||||
<string name="advanced_settings">Cài đặt nâng cao</string>
|
<string name="advanced_settings">Cài đặt nâng cao</string>
|
||||||
<string name="settings_description">Tinh chỉnh cài đặt giả lập</string>
|
<string name="settings_description">Cấu hình cài đặt giả lập</string>
|
||||||
<string name="search_recently_played">Đã chơi gần đây</string>
|
<string name="search_recently_played">Đã chơi gần đây</string>
|
||||||
<string name="search_recently_added">Đã thêm gần đây</string>
|
<string name="search_recently_added">Đã thêm gần đây</string>
|
||||||
<string name="search_retail">Bán lẻ</string>
|
<string name="search_retail">Bán lẻ</string>
|
||||||
<string name="search_homebrew">Homebrew</string>
|
<string name="search_homebrew">Homebrew</string>
|
||||||
<string name="open_user_folder">Mở thư mục yuzu</string>
|
<string name="open_user_folder">Mở thư mục yuzu</string>
|
||||||
<string name="open_user_folder_description">Quản lý file nội bộ của yuzu</string>
|
<string name="open_user_folder_description">Quản lý tệp nội bộ của yuzu</string>
|
||||||
<string name="theme_and_color_description">Thay đổi giao diện ứng dụng</string>
|
<string name="theme_and_color_description">Thay đổi giao diện ứng dụng</string>
|
||||||
<string name="no_file_manager">Không tìm thấy trình quản lý tệp</string>
|
<string name="no_file_manager">Không tìm thấy trình quản lý tập tin</string>
|
||||||
<string name="notification_no_directory_link">Không thể mở thư mục yuzu</string>
|
<string name="notification_no_directory_link">Không thể mở thư mục yuzu</string>
|
||||||
<string name="notification_no_directory_link_description">Vui lòng xác định thư mục người dùng với bảng điều khiển bên của trình quản lý tệp thủ công.</string>
|
<string name="notification_no_directory_link_description">Vui lòng xác định thư mục người dùng với bảng điều khiển bên của trình quản lý tệp thủ công.</string>
|
||||||
<string name="manage_save_data">Quản lý dữ liệu save</string>
|
<string name="manage_save_data">Quản lý dữ liệu save</string>
|
||||||
|
@ -81,7 +81,7 @@
|
||||||
<string name="import_export_saves_description">Nhập hoặc xuất tệp save</string>
|
<string name="import_export_saves_description">Nhập hoặc xuất tệp save</string>
|
||||||
<string name="save_file_imported_success">Nhập thành công</string>
|
<string name="save_file_imported_success">Nhập thành công</string>
|
||||||
<string name="save_file_invalid_zip_structure">Cấu trúc thư mục save không hợp lệ</string>
|
<string name="save_file_invalid_zip_structure">Cấu trúc thư mục save không hợp lệ</string>
|
||||||
<string name="save_file_invalid_zip_structure_description">Tên thư mục con đầu tiên phải là title ID của game.</string>
|
<string name="save_file_invalid_zip_structure_description">Tên thư mục con đầu tiên phải là ID title của game.</string>
|
||||||
<string name="import_saves">Nhập</string>
|
<string name="import_saves">Nhập</string>
|
||||||
<string name="export_saves">Xuất</string>
|
<string name="export_saves">Xuất</string>
|
||||||
<string name="install_firmware">Cài đặt firmware</string>
|
<string name="install_firmware">Cài đặt firmware</string>
|
||||||
|
@ -89,14 +89,12 @@
|
||||||
<string name="firmware_installing">Đang cài đặt firmware</string>
|
<string name="firmware_installing">Đang cài đặt firmware</string>
|
||||||
<string name="firmware_installed_success">Cài đặt firmware thành công</string>
|
<string name="firmware_installed_success">Cài đặt firmware thành công</string>
|
||||||
<string name="firmware_installed_failure">Cài đặt firmware thất bại</string>
|
<string name="firmware_installed_failure">Cài đặt firmware thất bại</string>
|
||||||
<string name="share_log">Chia sẽ log gỡ lỗi</string>
|
<string name="share_log">Chia sẻ nhật ký gỡ lỗi</string>
|
||||||
<string name="share_log_description">Chia sẻ tệp log của yuzu để gỡ lỗi vấn đề</string>
|
<string name="share_log_description">Chia sẻ tập tin nhật ký của yuzu để gỡ lỗi vấn đề</string>
|
||||||
<string name="share_log_missing">Không tìm thấy tệp log</string>
|
<string name="share_log_missing">Không tìm thấy tập tin nhật ký</string>
|
||||||
<string name="install_game_content">Cài đặt nội dung game</string>
|
<string name="install_game_content">Cài đặt nội dung game</string>
|
||||||
<string name="install_game_content_description">Cài đặt cập nhật game hoặc DLC</string>
|
<string name="install_game_content_description">Cài đặt cập nhật game hoặc DLC</string>
|
||||||
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<!-- About screen strings -->
|
<!-- About screen strings -->
|
||||||
<string name="gaia_is_not_real">Gaia không có thật</string>
|
<string name="gaia_is_not_real">Gaia không có thật</string>
|
||||||
<string name="copied_to_clipboard">Đã sao chép vào bộ nhớ tạm</string>
|
<string name="copied_to_clipboard">Đã sao chép vào bộ nhớ tạm</string>
|
||||||
|
@ -114,15 +112,15 @@
|
||||||
<string name="early_access">Early Access</string>
|
<string name="early_access">Early Access</string>
|
||||||
<string name="get_early_access">Tải Early Access</string>
|
<string name="get_early_access">Tải Early Access</string>
|
||||||
<string name="play_store_link">https://play.google.com/store/apps/details?id=org.yuzu.yuzu_emu.ea</string>
|
<string name="play_store_link">https://play.google.com/store/apps/details?id=org.yuzu.yuzu_emu.ea</string>
|
||||||
<string name="get_early_access_description">Các tính năng tiên tiến, truy cập sớm vào các cập nhật và nhiều hơn nữa</string>
|
<string name="get_early_access_description">Các tính năng tiên tiến, truy cập sớm các bản cập nhật và nhiều hơn nữa</string>
|
||||||
<string name="early_access_benefits">Lợi ích của Early Access</string>
|
<string name="early_access_benefits">Lợi ích của Early Access</string>
|
||||||
<string name="cutting_edge_features">Tính năng tiên tiến</string>
|
<string name="cutting_edge_features">Tính năng tiên tiến</string>
|
||||||
<string name="early_access_updates">Truy cập sớm vào cập nhật</string>
|
<string name="early_access_updates">Truy cập sớm các bản cập nhật</string>
|
||||||
<string name="no_manual_installation">Không có cài đặt thủ công</string>
|
<string name="no_manual_installation">Không có cài đặt thủ công</string>
|
||||||
<string name="prioritized_support">Ưu tiên hỗ trợ</string>
|
<string name="prioritized_support">Ưu tiên hỗ trợ</string>
|
||||||
<string name="helping_game_preservation">Hỗ trợ bảo tồn trò chơi</string>
|
<string name="helping_game_preservation">Hỗ trợ bảo tồn game</string>
|
||||||
<string name="our_eternal_gratitude">Sự biết ơn vô hạn của chúng tôi</string>
|
<string name="our_eternal_gratitude">Sự biết ơn vô hạn của chúng tôi</string>
|
||||||
<string name="are_you_interested">Bạn có thấy thú vị không?</string>
|
<string name="are_you_interested">Bạn có thấy hứng thú không?</string>
|
||||||
|
|
||||||
<!-- General settings strings -->
|
<!-- General settings strings -->
|
||||||
<string name="frame_limit_enable">Giới hạn tốc độ</string>
|
<string name="frame_limit_enable">Giới hạn tốc độ</string>
|
||||||
|
@ -130,8 +128,9 @@
|
||||||
<string name="frame_limit_slider">Giới hạn phần trăm tốc độ</string>
|
<string name="frame_limit_slider">Giới hạn phần trăm tốc độ</string>
|
||||||
<string name="frame_limit_slider_description">Xác định phần trăm để giới hạn tốc độ giả lập. 100% là tốc độ bình thường. Giá trị cao hơn hoặc thấp hơn sẽ tăng hoặc giảm giới hạn tốc độ.</string>
|
<string name="frame_limit_slider_description">Xác định phần trăm để giới hạn tốc độ giả lập. 100% là tốc độ bình thường. Giá trị cao hơn hoặc thấp hơn sẽ tăng hoặc giảm giới hạn tốc độ.</string>
|
||||||
<string name="cpu_accuracy">Độ chính xác CPU</string>
|
<string name="cpu_accuracy">Độ chính xác CPU</string>
|
||||||
<string name="use_docked_mode">Chế độ Docked</string>
|
<!-- System settings strings -->
|
||||||
<string name="use_docked_mode_description">Tăng độ phân giải, giảm hiệu suất. Chế độ Handheld được sử dụng khi tắt, giảm độ phân giải và tăng hiệu suất.</string>
|
<string name="use_docked_mode">Chế độ docked</string>
|
||||||
|
<string name="use_docked_mode_description">Tăng độ phân giải, giảm hiệu suất. Chế độ handheld được sử dụng khi tắt, giảm độ phân giải và tăng hiệu suất.</string>
|
||||||
<string name="emulated_region">Khu vực giả lập</string>
|
<string name="emulated_region">Khu vực giả lập</string>
|
||||||
<string name="emulated_language">Ngôn ngữ giả lập</string>
|
<string name="emulated_language">Ngôn ngữ giả lập</string>
|
||||||
<string name="select_rtc_date">Chọn ngày RTC</string>
|
<string name="select_rtc_date">Chọn ngày RTC</string>
|
||||||
|
@ -147,12 +146,12 @@
|
||||||
<string name="renderer_aspect_ratio">Tỉ lệ khung hình</string>
|
<string name="renderer_aspect_ratio">Tỉ lệ khung hình</string>
|
||||||
<string name="renderer_scaling_filter">Bộ lọc điều chỉnh cửa sổ</string>
|
<string name="renderer_scaling_filter">Bộ lọc điều chỉnh cửa sổ</string>
|
||||||
<string name="renderer_anti_aliasing">Phương pháp khử răng cưa</string>
|
<string name="renderer_anti_aliasing">Phương pháp khử răng cưa</string>
|
||||||
<string name="renderer_force_max_clock">Buộc chạy ở xung nhịp tối đa (chỉ Adreno)</string>
|
<string name="renderer_force_max_clock">Buộc chạy ở xung nhịp tối đa (chỉ cho Adreno)</string>
|
||||||
<string name="renderer_force_max_clock_description">Buộc GPU hoạt động ở xung nhịp tối đa có thể (ràng buộc nhiệt độ vẫn sẽ được áp dụng).</string>
|
<string name="renderer_force_max_clock_description">Buộc GPU hoạt động ở xung nhịp tối đa có thể (ràng buộc nhiệt độ vẫn sẽ được áp dụng).</string>
|
||||||
<string name="renderer_asynchronous_shaders">Dùng các shader bất đồng bộ</string>
|
<string name="renderer_asynchronous_shaders">Dùng các shader bất đồng bộ</string>
|
||||||
<string name="renderer_asynchronous_shaders_description">Biên dịch các shader bất đồng bộ, giảm tình trạng giật lag nhưng có thể gây ra các lỗi.</string>
|
<string name="renderer_asynchronous_shaders_description">Biên dịch các shader bất đồng bộ, giảm tình trạng giật lag nhưng có thể gây ra các lỗi.</string>
|
||||||
<string name="renderer_reactive_flushing">Bật xả tương ứng</string>
|
<string name="renderer_reactive_flushing">Dùng xả tương ứng</string>
|
||||||
<string name="renderer_reactive_flushing_description">Cải thiện độ chính xác hiển thị trong một số trò chơi nhưng đồng thời giảm hiệu suất chơi.</string>
|
<string name="renderer_reactive_flushing_description">Cải thiện độ chính xác kết xuất trong một số game nhưng đồng thời giảm hiệu suất.</string>
|
||||||
<string name="use_disk_shader_cache">Lưu bộ nhớ đệm shader trên ổ cứng</string>
|
<string name="use_disk_shader_cache">Lưu bộ nhớ đệm shader trên ổ cứng</string>
|
||||||
<string name="use_disk_shader_cache_description">Giảm tình trạng giật lag bằng cách lưu trữ và tải các shader được tạo ra nội bộ.</string>
|
<string name="use_disk_shader_cache_description">Giảm tình trạng giật lag bằng cách lưu trữ và tải các shader được tạo ra nội bộ.</string>
|
||||||
<!-- Debug settings strings -->
|
<!-- Debug settings strings -->
|
||||||
|
@ -163,49 +162,6 @@
|
||||||
<string name="audio_volume">Âm lượng</string>
|
<string name="audio_volume">Âm lượng</string>
|
||||||
<string name="audio_volume_description">Xác định âm lượng của đầu ra âm thanh.</string>
|
<string name="audio_volume_description">Xác định âm lượng của đầu ra âm thanh.</string>
|
||||||
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">B</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">Cộng</string>
|
|
||||||
<string name="button_minus">Trừ</string>
|
|
||||||
<string name="button_home">Home</string>
|
|
||||||
<string name="button_capture">Chụp</string>
|
|
||||||
<string name="dpad">D-Pad</string>
|
|
||||||
<string name="up">Lên</string>
|
|
||||||
<string name="down">Xuống</string>
|
|
||||||
<string name="left">Trái</string>
|
|
||||||
<string name="right">Phải</string>
|
|
||||||
<string name="left_stick">Cần xoay trái</string>
|
|
||||||
<string name="right_stick">Cần xoay phải</string>
|
|
||||||
<string name="c_stick">C-Stick</string>
|
|
||||||
<string name="pressed">Nhấn</string>
|
|
||||||
<string name="range">Phạm vi</string>
|
|
||||||
<string name="deadzone">Vùng chết</string>
|
|
||||||
<string name="modifier">Ngưỡng điều chỉnh</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">Không hợp lệ</string>
|
|
||||||
<string name="unknown">Không xác định</string>
|
|
||||||
<string name="pro_controller">Tay cầm Pro Controller</string>
|
|
||||||
<string name="handheld">Cầm tay</string>
|
|
||||||
<string name="dual_joycons">Joycon đôi</string>
|
|
||||||
<string name="left_joycon">Joycon Trái</string>
|
|
||||||
<string name="right_joycon">Joycon Phải</string>
|
|
||||||
<string name="gamecube_controller">Tay cầm GameCube</string>
|
|
||||||
<string name="invert_axis">Đảo ngược trục</string>
|
|
||||||
<string name="invert_button">Đảo ngược nút</string>
|
|
||||||
<string name="toggle_button">Đổi nút</string>
|
|
||||||
<string name="turbo_button">Nút Turbo</string>
|
|
||||||
<string name="set_threshold">Thiết lập ngưỡng</string>
|
|
||||||
<string name="toggle_axis">Chuyển đổi trục</string>
|
|
||||||
<string name="connected">Đã kết nối</string>
|
|
||||||
<string name="vibration">Độ rung</string>
|
|
||||||
<string name="profile">Hồ sơ</string>
|
|
||||||
<string name="use_global_input_configuration">Dùng cấu hình đầu vào chung</string>
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">Mặc định</string>
|
<string name="slider_default">Mặc định</string>
|
||||||
<string name="ini_saved">Cài đặt đã lưu</string>
|
<string name="ini_saved">Cài đặt đã lưu</string>
|
||||||
|
@ -227,10 +183,8 @@
|
||||||
<string name="install">Cài đặt</string>
|
<string name="install">Cài đặt</string>
|
||||||
<string name="delete">Xoá</string>
|
<string name="delete">Xoá</string>
|
||||||
<string name="start">Bắt đầu</string>
|
<string name="start">Bắt đầu</string>
|
||||||
<string name="clear">Bỏ trống</string>
|
<string name="clear">Xóa</string>
|
||||||
<string name="custom">Tùy chỉnh</string>
|
<string name="custom">Tùy chỉnh</string>
|
||||||
<string name="save">Lưu</string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
<string name="select_gpu_driver">Chọn driver GPU</string>
|
<string name="select_gpu_driver">Chọn driver GPU</string>
|
||||||
<string name="select_gpu_driver_title">Bạn có muốn thay thế driver GPU hiện tại không?</string>
|
<string name="select_gpu_driver_title">Bạn có muốn thay thế driver GPU hiện tại không?</string>
|
||||||
|
@ -242,32 +196,29 @@
|
||||||
|
|
||||||
<!-- Preferences Screen -->
|
<!-- Preferences Screen -->
|
||||||
<string name="preferences_settings">Cài đặt</string>
|
<string name="preferences_settings">Cài đặt</string>
|
||||||
<string name="preferences_general">Tổng Quan</string>
|
<string name="preferences_general">Chung</string>
|
||||||
<string name="preferences_system">Hệ thống</string>
|
<string name="preferences_system">Hệ thống</string>
|
||||||
<string name="preferences_graphics">Đồ Họa</string>
|
<string name="preferences_graphics">Đồ hoạ</string>
|
||||||
<string name="preferences_audio">Âm Thanh</string>
|
<string name="preferences_audio">Âm thanh</string>
|
||||||
<string name="preferences_controls">Phím</string>
|
|
||||||
<string name="preferences_theme">Chủ đề và màu sắc</string>
|
<string name="preferences_theme">Chủ đề và màu sắc</string>
|
||||||
<string name="preferences_debug">Vá lỗi</string>
|
<string name="preferences_debug">Gỡ lỗi</string>
|
||||||
<!-- Game properties -->
|
<!-- Game properties -->
|
||||||
<string name="info">Thông Tin</string>
|
<string name="info">Thông tin</string>
|
||||||
<string name="path">Đường dẫn</string>
|
<string name="path">Đường dẫn</string>
|
||||||
<string name="developer">Nhà Phát Hành</string>
|
<string name="developer">Nhà phát triển</string>
|
||||||
<string name="version">Phiên Bản</string>
|
<string name="version">Phiên bản</string>
|
||||||
<string name="add_ons">Tiện ích ngoài</string>
|
<string name="add_ons">Add-ons</string>
|
||||||
<string name="verify_success">Kiểm tra tính toàn vẹn thành công!</string>
|
|
||||||
<string name="verify_failure">Kiểm tra tính toàn vẹn thất bại!</string>
|
|
||||||
<!-- ROM loading errors -->
|
<!-- ROM loading errors -->
|
||||||
<string name="loader_error_encrypted">ROM của bạn đã bị mã hoá</string>
|
<string name="loader_error_encrypted">ROM của bạn đã bị mã hoá</string>
|
||||||
<string name="loader_error_encrypted_keys_description"><![CDATA[Vui lòng đảm bảo file <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> đã được cài đặt để game có thể được giải mã.]]></string>
|
<string name="loader_error_encrypted_keys_description"><![CDATA[Vui lòng đảm bảo tệp <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> đã được cài đặt để các game có thể được giải mã.]]></string>
|
||||||
<string name="loader_error_video_core">Đã xảy ra lỗi khi khởi tạo lõi video</string>
|
<string name="loader_error_video_core">Đã xảy ra lỗi khi khởi tạo lõi video</string>
|
||||||
<string name="loader_error_video_core_description">Việc này thường do driver GPU không tương thích. Cài đặt một driver GPU tùy chỉnh có thể giải quyết vấn đề này.</string>
|
<string name="loader_error_video_core_description">Việc này thường do driver GPU không tương thích. Cài đặt một driver GPU tùy chỉnh có thể giải quyết vấn đề này.</string>
|
||||||
<string name="loader_error_invalid_format">Không thể tải ROM</string>
|
<string name="loader_error_invalid_format">Không thể nạp ROM</string>
|
||||||
<string name="loader_error_file_not_found">Tệp ROM không tồn tại</string>
|
<string name="loader_error_file_not_found">Tệp ROM không tồn tại</string>
|
||||||
|
|
||||||
<!-- Emulation Menu -->
|
<!-- Emulation Menu -->
|
||||||
<string name="emulation_exit">Thoát giả lập</string>
|
<string name="emulation_exit">Thoát giả lập</string>
|
||||||
<string name="emulation_done">Hoàn tất</string>
|
<string name="emulation_done">Hoàn thành</string>
|
||||||
<string name="emulation_fps_counter">Bộ đếm FPS</string>
|
<string name="emulation_fps_counter">Bộ đếm FPS</string>
|
||||||
<string name="emulation_toggle_controls">Chuyển đổi điều khiển</string>
|
<string name="emulation_toggle_controls">Chuyển đổi điều khiển</string>
|
||||||
<string name="emulation_rel_stick_center">Trung tâm nút cần xoay tương đối</string>
|
<string name="emulation_rel_stick_center">Trung tâm nút cần xoay tương đối</string>
|
||||||
|
@ -284,6 +235,7 @@
|
||||||
<string name="emulation_unpause">Tiếp tục giả lập</string>
|
<string name="emulation_unpause">Tiếp tục giả lập</string>
|
||||||
<string name="emulation_input_overlay">Tuỳ chọn lớp phủ</string>
|
<string name="emulation_input_overlay">Tuỳ chọn lớp phủ</string>
|
||||||
<string name="touchscreen">Màn hình cảm ứng</string>
|
<string name="touchscreen">Màn hình cảm ứng</string>
|
||||||
|
|
||||||
<string name="load_settings">Đang tải cài đặt...</string>
|
<string name="load_settings">Đang tải cài đặt...</string>
|
||||||
|
|
||||||
<!-- Software keyboard -->
|
<!-- Software keyboard -->
|
||||||
|
@ -292,18 +244,18 @@
|
||||||
<!-- Errors and warnings -->
|
<!-- Errors and warnings -->
|
||||||
<string name="abort_button">Hủy bỏ</string>
|
<string name="abort_button">Hủy bỏ</string>
|
||||||
<string name="continue_button">Tiếp tục</string>
|
<string name="continue_button">Tiếp tục</string>
|
||||||
<string name="system_archive_not_found">Không tìm thấy tệp tin hệ thống</string>
|
<string name="system_archive_not_found">Không tìm thấy bản lưu trữ của hệ thống</string>
|
||||||
<string name="system_archive_not_found_message">%s bị thiếu. Vui lòng trích xuất các tập tin hệ thống của bạn.\nNếu chạy tiếp giả lập có thể gặp sự cố và lỗi.</string>
|
<string name="system_archive_not_found_message">%s bị thiếu. Vui lòng trích xuất các bản lưu trữ hệ thống của bạn.\nNếu chạy tiếp giả lập có thể bị crash và lỗi.</string>
|
||||||
<string name="system_archive_general">Một tập tin hệ thống</string>
|
<string name="system_archive_general">Một bản lưu trữ của hệ thống</string>
|
||||||
<string name="save_load_error">Lỗi Lưu/Tải</string>
|
<string name="save_load_error">Lỗi Lưu/Tải</string>
|
||||||
<string name="fatal_error">Lỗi nghiêm trọng</string>
|
<string name="fatal_error">Lỗi nghiêm trọng</string>
|
||||||
<string name="fatal_error_message">Đã xảy ra lỗi nghiêm trọng. Kiểm tra nhật ký để biết chi tiết.\nViệc tiếp tục giả lập có thể dẫn đến sự cố và lỗi.</string>
|
<string name="fatal_error_message">Đã xảy ra lỗi nghiêm trọng. Kiểm tra nhật ký để biết thêm chi tiết.\nNếu chạy tiếp giả lập có thể bị crash và lỗi.</string>
|
||||||
<string name="performance_warning">Tắt cài đặt này sẽ làm giảm đáng kể hiệu suất giả lập! Để có trải nghiệm tốt nhất, bạn nên bật cài này.</string>
|
<string name="performance_warning">Tắt cài đặt này sẽ làm giảm đáng kể hiệu suất giả lập! Để có trải nghiệm tốt nhất, bạn nên bật cài đặt này.</string>
|
||||||
<!-- Region Names -->
|
<!-- Region Names -->
|
||||||
<string name="region_japan">Nhật Bản</string>
|
<string name="region_japan">Nhật Bản</string>
|
||||||
<string name="region_usa">Hoa Kỳ</string>
|
<string name="region_usa">Hoa Kỳ</string>
|
||||||
<string name="region_europe">Châu Âu</string>
|
<string name="region_europe">Châu Âu</string>
|
||||||
<string name="region_australia">Châu Úc</string>
|
<string name="region_australia">Úc</string>
|
||||||
<string name="region_china">Trung Quốc</string>
|
<string name="region_china">Trung Quốc</string>
|
||||||
<string name="region_korea">Hàn Quốc</string>
|
<string name="region_korea">Hàn Quốc</string>
|
||||||
<string name="region_taiwan">Đài Loan</string>
|
<string name="region_taiwan">Đài Loan</string>
|
||||||
|
@ -312,12 +264,12 @@
|
||||||
<string name="memory_gigabyte">GB</string>
|
<string name="memory_gigabyte">GB</string>
|
||||||
<!-- Renderer APIs -->
|
<!-- Renderer APIs -->
|
||||||
<string name="renderer_vulkan">Vulkan</string>
|
<string name="renderer_vulkan">Vulkan</string>
|
||||||
<string name="renderer_none">Trống</string>
|
<string name="renderer_none">Không có</string>
|
||||||
|
|
||||||
<!-- Renderer Accuracy -->
|
<!-- Renderer Accuracy -->
|
||||||
<string name="renderer_accuracy_normal">Trung bình</string>
|
<string name="renderer_accuracy_normal">Bình thường</string>
|
||||||
<string name="renderer_accuracy_high">Khỏe</string>
|
<string name="renderer_accuracy_high">Cao</string>
|
||||||
<string name="renderer_accuracy_extreme">Tối đa (Chậm)</string>
|
<string name="renderer_accuracy_extreme">Cực đại (Chậm)</string>
|
||||||
|
|
||||||
<!-- Resolutions -->
|
<!-- Resolutions -->
|
||||||
<string name="resolution_half">0.5X (360p/540p)</string>
|
<string name="resolution_half">0.5X (360p/540p)</string>
|
||||||
|
@ -328,21 +280,21 @@
|
||||||
<string name="resolution_four">4X (2880p/4320p) (Chậm)</string>
|
<string name="resolution_four">4X (2880p/4320p) (Chậm)</string>
|
||||||
|
|
||||||
<!-- Renderer VSync -->
|
<!-- Renderer VSync -->
|
||||||
<string name="renderer_vsync_immediate">Ngay lập tức (Tắt)</string>
|
<string name="renderer_vsync_immediate">Immediate (Tắt)</string>
|
||||||
<string name="renderer_vsync_mailbox">Mailbox</string>
|
<string name="renderer_vsync_mailbox">Mailbox</string>
|
||||||
<string name="renderer_vsync_fifo">FIFO (On)</string>
|
<string name="renderer_vsync_fifo">FIFO (Bật)</string>
|
||||||
<string name="renderer_vsync_fifo_relaxed">FIFO Relaxed</string>
|
<string name="renderer_vsync_fifo_relaxed">FIFO Relaxed</string>
|
||||||
|
|
||||||
<!-- Scaling Filters -->
|
<!-- Scaling Filters -->
|
||||||
<string name="scaling_filter_nearest_neighbor">Nearest Neighbor</string>
|
<string name="scaling_filter_nearest_neighbor">Nearest Neighbor</string>
|
||||||
<string name="scaling_filter_bilinear">Bilinear</string>
|
<string name="scaling_filter_bilinear">Bilinear</string>
|
||||||
<string name="scaling_filter_bicubic">Bicubic</string>
|
<string name="scaling_filter_bicubic">Bicubic</string>
|
||||||
<string name="scaling_filter_gaussian">ScaleForce</string>
|
<string name="scaling_filter_gaussian">Gaussian</string>
|
||||||
<string name="scaling_filter_scale_force">ScaleForce</string>
|
<string name="scaling_filter_scale_force">ScaleForce</string>
|
||||||
<string name="scaling_filter_fsr">AMD FidelityFX™ Super Resolution</string>
|
<string name="scaling_filter_fsr">AMD FidelityFX™ Super Resolution</string>
|
||||||
|
|
||||||
<!-- Anti-Aliasing -->
|
<!-- Anti-Aliasing -->
|
||||||
<string name="anti_aliasing_none">Trống</string>
|
<string name="anti_aliasing_none">Không có</string>
|
||||||
<string name="anti_aliasing_fxaa">FXAA</string>
|
<string name="anti_aliasing_fxaa">FXAA</string>
|
||||||
<string name="anti_aliasing_smaa">SMAA</string>
|
<string name="anti_aliasing_smaa">SMAA</string>
|
||||||
|
|
||||||
|
@ -352,24 +304,24 @@
|
||||||
<string name="ratio_default">Mặc định (16:9)</string>
|
<string name="ratio_default">Mặc định (16:9)</string>
|
||||||
<string name="ratio_force_four_three">Dùng 4:3</string>
|
<string name="ratio_force_four_three">Dùng 4:3</string>
|
||||||
<string name="ratio_force_twenty_one_nine">Dùng 21:9</string>
|
<string name="ratio_force_twenty_one_nine">Dùng 21:9</string>
|
||||||
<string name="ratio_force_sixteen_ten">Dung 16:10</string>
|
<string name="ratio_force_sixteen_ten">Dùng 16:10</string>
|
||||||
<string name="ratio_stretch">Mở rộng đến cửa sổ</string>
|
<string name="ratio_stretch">Mở rộng đến cửa sổ</string>
|
||||||
|
|
||||||
<!-- CPU Accuracy -->
|
<!-- CPU Accuracy -->
|
||||||
<string name="cpu_accuracy_accurate">Tuyệt đối</string>
|
<string name="cpu_accuracy_accurate">Chính xác</string>
|
||||||
<string name="cpu_accuracy_unsafe">Tương đối</string>
|
<string name="cpu_accuracy_unsafe">Không an toàn</string>
|
||||||
<string name="cpu_accuracy_paranoid">Paranoid (Chậm)</string>
|
<string name="cpu_accuracy_paranoid">Paranoid (Chậm)</string>
|
||||||
|
|
||||||
<!-- Gamepad Buttons -->
|
<!-- Gamepad Buttons -->
|
||||||
<string name="gamepad_d_pad">D-pad</string>
|
<string name="gamepad_d_pad">D-pad</string>
|
||||||
<string name="gamepad_left_stick">Cần xoay trái</string>
|
<string name="gamepad_left_stick">Cần trái</string>
|
||||||
<string name="gamepad_right_stick">Cần xoay phải</string>
|
<string name="gamepad_right_stick">Cần phải</string>
|
||||||
<string name="gamepad_home">Home</string>
|
<string name="gamepad_home">Home</string>
|
||||||
<string name="gamepad_screenshot">Chụp màn hình</string>
|
<string name="gamepad_screenshot">Ảnh chụp màn hình</string>
|
||||||
|
|
||||||
<!-- Disk shader cache -->
|
<!-- Disk shader cache -->
|
||||||
<string name="preparing_shaders">Chuẩn bị shaders</string>
|
<string name="preparing_shaders">Đang chuẩn bị shader</string>
|
||||||
<string name="building_shaders">Dựng shaders</string>
|
<string name="building_shaders">Đang đựng shader</string>
|
||||||
|
|
||||||
<!-- Theme options -->
|
<!-- Theme options -->
|
||||||
<string name="change_app_theme">Thay đổi chủ đề ứng dụng</string>
|
<string name="change_app_theme">Thay đổi chủ đề ứng dụng</string>
|
||||||
|
@ -377,7 +329,7 @@
|
||||||
<string name="theme_material_you">Material You</string>
|
<string name="theme_material_you">Material You</string>
|
||||||
|
|
||||||
<!-- Theme Modes -->
|
<!-- Theme Modes -->
|
||||||
<string name="change_theme_mode">Thay đổi chế độ giao diện</string>
|
<string name="change_theme_mode">Thay đổi chủ đề</string>
|
||||||
<string name="theme_mode_follow_system">Theo hệ thống</string>
|
<string name="theme_mode_follow_system">Theo hệ thống</string>
|
||||||
<string name="theme_mode_light">Sáng</string>
|
<string name="theme_mode_light">Sáng</string>
|
||||||
<string name="theme_mode_dark">Tối</string>
|
<string name="theme_mode_dark">Tối</string>
|
||||||
|
@ -389,7 +341,7 @@
|
||||||
<string name="multiplier_sixteen">16x</string>
|
<string name="multiplier_sixteen">16x</string>
|
||||||
|
|
||||||
<!-- Black backgrounds theme -->
|
<!-- Black backgrounds theme -->
|
||||||
<string name="use_black_backgrounds">Nền tối</string>
|
<string name="use_black_backgrounds">Nền đen</string>
|
||||||
<string name="use_black_backgrounds_description">Khi sử dụng chủ đề tối, hãy áp dụng nền đen.</string>
|
<string name="use_black_backgrounds_description">Khi sử dụng chủ đề tối, hãy áp dụng nền đen.</string>
|
||||||
|
|
||||||
<string name="mute">Tắt tiếng</string>
|
<string name="mute">Tắt tiếng</string>
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
<string name="search_and_filter_games">搜索游戏</string>
|
<string name="search_and_filter_games">搜索游戏</string>
|
||||||
<string name="select_games_folder">选择游戏文件夹</string>
|
<string name="select_games_folder">选择游戏文件夹</string>
|
||||||
<string name="manage_game_folders">管理游戏文件夹</string>
|
<string name="manage_game_folders">管理游戏文件夹</string>
|
||||||
<string name="select_games_folder_description">允许 yuzu 更新游戏列表</string>
|
<string name="select_games_folder_description">允许 yuzu 填充游戏列表</string>
|
||||||
<string name="add_games_warning">跳过选择游戏文件夹?</string>
|
<string name="add_games_warning">跳过选择游戏文件夹?</string>
|
||||||
<string name="add_games_warning_description">如果未选择游戏文件夹,游戏将不会显示在游戏列表中。</string>
|
<string name="add_games_warning_description">如果未选择游戏文件夹,游戏将不会显示在游戏列表中。</string>
|
||||||
<string name="add_games_warning_help">https://yuzu-emu.org/help/quickstart/#dumping-games</string>
|
<string name="add_games_warning_help">https://yuzu-emu.org/help/quickstart/#dumping-games</string>
|
||||||
|
@ -81,7 +81,7 @@
|
||||||
<string name="theme_and_color_description">更改外观</string>
|
<string name="theme_and_color_description">更改外观</string>
|
||||||
<string name="no_file_manager">找不到可用的文件管理器</string>
|
<string name="no_file_manager">找不到可用的文件管理器</string>
|
||||||
<string name="notification_no_directory_link">无法打开 yuzu 文件夹</string>
|
<string name="notification_no_directory_link">无法打开 yuzu 文件夹</string>
|
||||||
<string name="notification_no_directory_link_description">请使用文件管理器侧边栏中的内部存储手动定位用户文件夹。</string>
|
<string name="notification_no_directory_link_description">请使用文件管理器的侧部面板手动定位用户文件夹。</string>
|
||||||
<string name="manage_save_data">管理存档数据</string>
|
<string name="manage_save_data">管理存档数据</string>
|
||||||
<string name="manage_save_data_description">已找到存档数据,请选择下方的选项。</string>
|
<string name="manage_save_data_description">已找到存档数据,请选择下方的选项。</string>
|
||||||
<string name="import_save_warning">导入保存数据</string>
|
<string name="import_save_warning">导入保存数据</string>
|
||||||
|
@ -110,21 +110,21 @@
|
||||||
<string name="install_game_content_failure_description">请确保附加内容的有效性,并且 prod.keys 密钥文件已安装。</string>
|
<string name="install_game_content_failure_description">请确保附加内容的有效性,并且 prod.keys 密钥文件已安装。</string>
|
||||||
<string name="install_game_content_failure_base">为避免产生冲突,此功能不能用于安装游戏本体。</string>
|
<string name="install_game_content_failure_base">为避免产生冲突,此功能不能用于安装游戏本体。</string>
|
||||||
<string name="install_game_content_failure_file_extension">只有 NSP 或 XCI 格式的附加内容可以安装。请确保您的游戏附加内容是有效的。</string>
|
<string name="install_game_content_failure_file_extension">只有 NSP 或 XCI 格式的附加内容可以安装。请确保您的游戏附加内容是有效的。</string>
|
||||||
<string name="install_game_content_failed_count">%1$d 个包安装出错</string>
|
<string name="install_game_content_failed_count">%1$d 安装出错</string>
|
||||||
<string name="install_game_content_success">游戏附加内容已成功安装</string>
|
<string name="install_game_content_success">游戏附加内容已成功安装</string>
|
||||||
<string name="install_game_content_success_install">%1$d 个包安装成功</string>
|
<string name="install_game_content_success_install">%1$d 安装成功</string>
|
||||||
<string name="install_game_content_success_overwrite">%1$d 个包覆盖安装成功</string>
|
<string name="install_game_content_success_overwrite">%1$d 覆盖安装成功</string>
|
||||||
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
||||||
<string name="custom_driver_not_supported">不支持自定义驱动</string>
|
<string name="custom_driver_not_supported">不支持自定义驱动</string>
|
||||||
<string name="custom_driver_not_supported_description">此设备不支持自定义驱动。\n请之后再访问此项,查看是否已为此设备添加支持。</string>
|
<string name="custom_driver_not_supported_description">此设备不支持自定义驱动。\n请之后再访问此项,查看是否已为此设备添加支持。</string>
|
||||||
<string name="manage_yuzu_data">管理 yuzu 数据</string>
|
<string name="manage_yuzu_data">管理 yuzu 数据</string>
|
||||||
<string name="manage_yuzu_data_description">导入/导出固件、密钥、用户数据以及其他</string>
|
<string name="manage_yuzu_data_description">导入/导出固件、密钥、用户数据及其他。</string>
|
||||||
<string name="share_save_file">分享存档文件</string>
|
<string name="share_save_file">分享存档文件</string>
|
||||||
<string name="export_save_failed">导出存档文件失败</string>
|
<string name="export_save_failed">导出存档文件失败</string>
|
||||||
<string name="game_folders">游戏文件夹</string>
|
<string name="game_folders">游戏文件夹</string>
|
||||||
<string name="deep_scan">深度扫描</string>
|
<string name="deep_scan">深度扫描</string>
|
||||||
<string name="add_game_folder">添加游戏文件夹</string>
|
<string name="add_game_folder">添加游戏文件夹</string>
|
||||||
<string name="folder_already_added">这个文件夹已被添加!</string>
|
<string name="folder_already_added">这个文件夹先前已被添加!</string>
|
||||||
<string name="game_folder_properties">游戏文件夹属性</string>
|
<string name="game_folder_properties">游戏文件夹属性</string>
|
||||||
<plurals name="saves_import_failed">
|
<plurals name="saves_import_failed">
|
||||||
<item quantity="other">%d 个存档导入失败</item>
|
<item quantity="other">%d 个存档导入失败</item>
|
||||||
|
@ -133,11 +133,6 @@
|
||||||
<item quantity="other">成功导入 %d 个存档</item>
|
<item quantity="other">成功导入 %d 个存档</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<string name="no_save_data_found">未找到存档数据</string>
|
<string name="no_save_data_found">未找到存档数据</string>
|
||||||
<string name="verify_installed_content">验证已安装内容的完整性</string>
|
|
||||||
<string name="verify_installed_content_description">检查所有安装的内容是否有损坏</string>
|
|
||||||
<string name="keys_missing">密钥缺失</string>
|
|
||||||
<string name="keys_missing_description">无法解密固件和商业游戏</string>
|
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<!-- Applet launcher strings -->
|
<!-- Applet launcher strings -->
|
||||||
<string name="applets">小程序启动器</string>
|
<string name="applets">小程序启动器</string>
|
||||||
|
@ -153,9 +148,9 @@
|
||||||
<string name="cabinet_applet_description">编辑、删除存储在 amiibo 上的数据</string>
|
<string name="cabinet_applet_description">编辑、删除存储在 amiibo 上的数据</string>
|
||||||
<string name="cabinet_launcher">Cabinet 启动器</string>
|
<string name="cabinet_launcher">Cabinet 启动器</string>
|
||||||
<string name="cabinet_nickname_and_owner">昵称和所有者设置</string>
|
<string name="cabinet_nickname_and_owner">昵称和所有者设置</string>
|
||||||
<string name="cabinet_game_data_eraser">清除游戏数据</string>
|
<string name="cabinet_game_data_eraser">游戏数据擦除器</string>
|
||||||
<string name="cabinet_restorer">恢复</string>
|
<string name="cabinet_restorer">恢复器</string>
|
||||||
<string name="cabinet_formatter">格式化</string>
|
<string name="cabinet_formatter">格式化程序</string>
|
||||||
|
|
||||||
<!-- About screen strings -->
|
<!-- About screen strings -->
|
||||||
<string name="gaia_is_not_real">Gaia 不真实</string>
|
<string name="gaia_is_not_real">Gaia 不真实</string>
|
||||||
|
@ -204,7 +199,6 @@
|
||||||
<string name="value_with_units">%1$s%2$s</string>
|
<string name="value_with_units">%1$s%2$s</string>
|
||||||
|
|
||||||
<!-- System settings strings -->
|
<!-- System settings strings -->
|
||||||
<string name="device_name">设备名称</string>
|
|
||||||
<string name="use_docked_mode">主机模式</string>
|
<string name="use_docked_mode">主机模式</string>
|
||||||
<string name="use_docked_mode_description">提高分辨率,但降低性能。禁用此项时使用掌机模式,降低分辨率并提高性能。</string>
|
<string name="use_docked_mode_description">提高分辨率,但降低性能。禁用此项时使用掌机模式,降低分辨率并提高性能。</string>
|
||||||
<string name="emulated_region">模拟区域</string>
|
<string name="emulated_region">模拟区域</string>
|
||||||
|
@ -222,8 +216,6 @@
|
||||||
<string name="renderer_screen_layout">屏幕方向</string>
|
<string name="renderer_screen_layout">屏幕方向</string>
|
||||||
<string name="renderer_aspect_ratio">屏幕纵横比</string>
|
<string name="renderer_aspect_ratio">屏幕纵横比</string>
|
||||||
<string name="renderer_scaling_filter">窗口滤镜</string>
|
<string name="renderer_scaling_filter">窗口滤镜</string>
|
||||||
<string name="fsr_sharpness">FSR 锐化度</string>
|
|
||||||
<string name="fsr_sharpness_description">指定使用 FSR 时图像的锐化程度</string>
|
|
||||||
<string name="renderer_anti_aliasing">抗锯齿方式</string>
|
<string name="renderer_anti_aliasing">抗锯齿方式</string>
|
||||||
<string name="renderer_force_max_clock">强制最大时钟 (仅限 Adreno)</string>
|
<string name="renderer_force_max_clock">强制最大时钟 (仅限 Adreno)</string>
|
||||||
<string name="renderer_force_max_clock_description">强制 GPU 以最大时钟运行 (仍被温控限制)。</string>
|
<string name="renderer_force_max_clock_description">强制 GPU 以最大时钟运行 (仍被温控限制)。</string>
|
||||||
|
@ -244,99 +236,13 @@
|
||||||
<string name="renderer_api">API</string>
|
<string name="renderer_api">API</string>
|
||||||
<string name="renderer_debug">图形调试</string>
|
<string name="renderer_debug">图形调试</string>
|
||||||
<string name="renderer_debug_description">将图形 API 设置为较慢的调试模式。</string>
|
<string name="renderer_debug_description">将图形 API 设置为较慢的调试模式。</string>
|
||||||
<string name="fastmem">Fastmem 内存访问</string>
|
<string name="fastmem">Fastmem</string>
|
||||||
|
|
||||||
<!-- Audio settings strings -->
|
<!-- Audio settings strings -->
|
||||||
<string name="audio_output_engine">输出引擎</string>
|
<string name="audio_output_engine">输出引擎</string>
|
||||||
<string name="audio_volume">音量</string>
|
<string name="audio_volume">音量</string>
|
||||||
<string name="audio_volume_description">指定输出的音量。</string>
|
<string name="audio_volume_description">指定输出的音量。</string>
|
||||||
|
|
||||||
<!-- Input strings -->
|
|
||||||
<string name="buttons">按键</string>
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">B</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">+</string>
|
|
||||||
<string name="button_minus">-</string>
|
|
||||||
<string name="button_home">Home</string>
|
|
||||||
<string name="button_capture">截图</string>
|
|
||||||
<string name="start_pause">开始/暂停</string>
|
|
||||||
<string name="dpad">十字方向键</string>
|
|
||||||
<string name="up">上</string>
|
|
||||||
<string name="down">下</string>
|
|
||||||
<string name="left">左</string>
|
|
||||||
<string name="right">右</string>
|
|
||||||
<string name="left_stick">左摇杆</string>
|
|
||||||
<string name="control_stick">控制摇杆</string>
|
|
||||||
<string name="right_stick">右摇杆</string>
|
|
||||||
<string name="c_stick">C 摇杆</string>
|
|
||||||
<string name="pressed">按下</string>
|
|
||||||
<string name="range">灵敏度</string>
|
|
||||||
<string name="deadzone">死区</string>
|
|
||||||
<string name="modifier">轻推</string>
|
|
||||||
<string name="modifier_range">摇杆灵敏度</string>
|
|
||||||
<string name="triggers">扳机键</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_sl_left">左 SL</string>
|
|
||||||
<string name="button_sr_left">左 SR</string>
|
|
||||||
<string name="button_sl_right">右 SL</string>
|
|
||||||
<string name="button_sr_right">右 SR</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">无效</string>
|
|
||||||
<string name="not_set">未设置</string>
|
|
||||||
<string name="unknown">未知</string>
|
|
||||||
<string name="qualified_hat">%1$s%2$s%3$s方向键 %4$s</string>
|
|
||||||
<string name="qualified_button_stick_axis">%1$s%2$s%3$s轴 %4$s</string>
|
|
||||||
<string name="qualified_button">%1$s%2$s%3$s按键 %4$s</string>
|
|
||||||
<string name="qualified_axis">轴 %1$s%2$s</string>
|
|
||||||
<string name="unused">未使用</string>
|
|
||||||
<string name="input_prompt">移动摇杆或按下按键来输入</string>
|
|
||||||
<string name="unsupported_input">不支持的输入类型</string>
|
|
||||||
<string name="input_mapping_filter">输入映射过滤器</string>
|
|
||||||
<string name="input_mapping_filter_description">选择一个设备过滤输入映射</string>
|
|
||||||
<string name="auto_map">控制器自动映射</string>
|
|
||||||
<string name="auto_map_description">选择一个设备以尝试自动映射</string>
|
|
||||||
<string name="attempted_auto_map">尝试为 %1$s 自动映射</string>
|
|
||||||
<string name="controller_type">控制器类型</string>
|
|
||||||
<string name="pro_controller">Pro Controller</string>
|
|
||||||
<string name="handheld">掌机模式</string>
|
|
||||||
<string name="dual_joycons">双 Joycons 手柄</string>
|
|
||||||
<string name="left_joycon">左 Joycon 手柄</string>
|
|
||||||
<string name="right_joycon">右 Joycon 手柄</string>
|
|
||||||
<string name="gamecube_controller">GameCube 控制器</string>
|
|
||||||
<string name="invert_axis">轴方向倒置</string>
|
|
||||||
<string name="invert_button">反转按键</string>
|
|
||||||
<string name="toggle_button">切换按键</string>
|
|
||||||
<string name="turbo_button">连发键</string>
|
|
||||||
<string name="set_threshold">阈值设定</string>
|
|
||||||
<string name="toggle_axis">切换轴</string>
|
|
||||||
<string name="connected">已连接</string>
|
|
||||||
<string name="use_system_vibrator">使用系统震动器</string>
|
|
||||||
<string name="input_overlay">虚拟按键输入</string>
|
|
||||||
<string name="vibration">震动</string>
|
|
||||||
<string name="vibration_strength">震动强度</string>
|
|
||||||
<string name="profile">用户配置</string>
|
|
||||||
<string name="create_new_profile">新建配置文件</string>
|
|
||||||
<string name="enter_profile_name">输入配置文件名称</string>
|
|
||||||
<string name="profile_name_already_exists">该名称已被其他配置文件使用</string>
|
|
||||||
<string name="invalid_profile_name">无效的配置文件名称</string>
|
|
||||||
<string name="use_global_input_configuration">使用全局输入设置</string>
|
|
||||||
<string name="player_num_profile">玩家 %d 配置文件</string>
|
|
||||||
<string name="delete_input_profile">删除输入配置文件</string>
|
|
||||||
<string name="delete_input_profile_description">您确定要删除这个配置文件?此操作不可撤销。</string>
|
|
||||||
<string name="stick_map_description">向左移动摇杆,然后将其向上移动或按下一个按钮</string>
|
|
||||||
<string name="button_map_description">按下一个按钮或移动扳机键/摇杆</string>
|
|
||||||
<string name="map_dpad_direction">映射到十字方向键 %1$s</string>
|
|
||||||
<string name="map_control">映射到 %1$s</string>
|
|
||||||
<string name="failed_to_load_profile">加载配置文件失败</string>
|
|
||||||
<string name="failed_to_save_profile">保存配置文件失败</string>
|
|
||||||
<string name="reset_mapping">重置映射</string>
|
|
||||||
<string name="reset_mapping_description">您确定要将此控制器的所有映射重置为默认值?此操作不可撤销。</string>
|
|
||||||
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">系统默认</string>
|
<string name="slider_default">系统默认</string>
|
||||||
<string name="ini_saved">已保存设置</string>
|
<string name="ini_saved">已保存设置</string>
|
||||||
|
@ -345,12 +251,12 @@
|
||||||
<string name="unimplemented_menu">未生效菜单</string>
|
<string name="unimplemented_menu">未生效菜单</string>
|
||||||
<string name="loading">加载中…</string>
|
<string name="loading">加载中…</string>
|
||||||
<string name="shutting_down">正在关闭…</string>
|
<string name="shutting_down">正在关闭…</string>
|
||||||
<string name="reset_setting_confirmation">您要将此设定重置为默认值吗?</string>
|
<string name="reset_setting_confirmation">您要将此设定重设为默认值吗?</string>
|
||||||
<string name="reset_to_default">恢复默认</string>
|
<string name="reset_to_default">恢复默认</string>
|
||||||
<string name="reset_to_default_description">重置所有高级选项</string>
|
<string name="reset_to_default_description">重置所有高级选项</string>
|
||||||
<string name="reset_all_settings">重置所有设置项?</string>
|
<string name="reset_all_settings">重置所有设置项?</string>
|
||||||
<string name="reset_all_settings_description">所有高级选项都将被重置,此动作无法还原。</string>
|
<string name="reset_all_settings_description">所有高级选项都将被重设,此动作无法还原。</string>
|
||||||
<string name="settings_reset">重置设置项</string>
|
<string name="settings_reset">重设设置项</string>
|
||||||
<string name="close">关闭</string>
|
<string name="close">关闭</string>
|
||||||
<string name="learn_more">了解更多</string>
|
<string name="learn_more">了解更多</string>
|
||||||
<string name="auto">自动</string>
|
<string name="auto">自动</string>
|
||||||
|
@ -369,19 +275,14 @@
|
||||||
<string name="clear">清除</string>
|
<string name="clear">清除</string>
|
||||||
<string name="global">全局</string>
|
<string name="global">全局</string>
|
||||||
<string name="custom">自定义</string>
|
<string name="custom">自定义</string>
|
||||||
<string name="notice">通知</string>
|
<string name="notice">提醒</string>
|
||||||
<string name="import_complete">导入完成</string>
|
<string name="import_complete">导入完成</string>
|
||||||
<string name="more_options">更多选项</string>
|
<string name="more_options">更多选项</string>
|
||||||
<string name="use_global_setting">使用全局设置</string>
|
<string name="use_global_setting">使用全局设置</string>
|
||||||
<string name="operation_completed_successfully">操作已成功完成</string>
|
|
||||||
<string name="retry">重试</string>
|
|
||||||
<string name="confirm">确认</string>
|
|
||||||
<string name="load">加载</string>
|
|
||||||
<string name="save">保存</string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
<string name="select_gpu_driver">选择 GPU 驱动程序</string>
|
<string name="select_gpu_driver">选择 GPU 驱动程序</string>
|
||||||
<string name="select_gpu_driver_title">您想更换当前的 GPU 驱动程序吗?</string>
|
<string name="select_gpu_driver_title">要取代您当前的 GPU 驱动程序吗?</string>
|
||||||
<string name="select_gpu_driver_install">安装</string>
|
<string name="select_gpu_driver_install">安装</string>
|
||||||
<string name="select_gpu_driver_default">系统默认</string>
|
<string name="select_gpu_driver_default">系统默认</string>
|
||||||
<string name="select_gpu_driver_use_default">使用默认 GPU 驱动程序</string>
|
<string name="select_gpu_driver_use_default">使用默认 GPU 驱动程序</string>
|
||||||
|
@ -399,9 +300,6 @@
|
||||||
<string name="preferences_graphics_description">精度等级、分辨率及着色器缓存</string>
|
<string name="preferences_graphics_description">精度等级、分辨率及着色器缓存</string>
|
||||||
<string name="preferences_audio">声音</string>
|
<string name="preferences_audio">声音</string>
|
||||||
<string name="preferences_audio_description">输出引擎及音量</string>
|
<string name="preferences_audio_description">输出引擎及音量</string>
|
||||||
<string name="preferences_controls">控制</string>
|
|
||||||
<string name="preferences_controls_description">使用控制器来映射输入</string>
|
|
||||||
<string name="preferences_player">玩家 %d</string>
|
|
||||||
<string name="preferences_theme">主题和色彩</string>
|
<string name="preferences_theme">主题和色彩</string>
|
||||||
<string name="preferences_debug">调试</string>
|
<string name="preferences_debug">调试</string>
|
||||||
<string name="preferences_debug_description">CPU/GPU 调试、图形 API 及 fastmem 内存访问</string>
|
<string name="preferences_debug_description">CPU/GPU 调试、图形 API 及 fastmem 内存访问</string>
|
||||||
|
@ -421,7 +319,7 @@
|
||||||
<string name="add_ons_description">管理 mod、游戏更新及 DLC</string>
|
<string name="add_ons_description">管理 mod、游戏更新及 DLC</string>
|
||||||
<string name="clear_shader_cache">清除着色器缓存</string>
|
<string name="clear_shader_cache">清除着色器缓存</string>
|
||||||
<string name="clear_shader_cache_description">删除此游戏的所有着色器缓存</string>
|
<string name="clear_shader_cache_description">删除此游戏的所有着色器缓存</string>
|
||||||
<string name="clear_shader_cache_warning_description">由于着色器缓存需要重新生成,您将遇到更多卡顿</string>
|
<string name="clear_shader_cache_warning_description">由于着色器缓存的重新生成,您将遭遇更多卡顿</string>
|
||||||
<string name="cleared_shaders_successfully">着色器缓存清除成功</string>
|
<string name="cleared_shaders_successfully">着色器缓存清除成功</string>
|
||||||
<string name="addons_game">附加项: %1$s</string>
|
<string name="addons_game">附加项: %1$s</string>
|
||||||
<string name="save_data">保存数据</string>
|
<string name="save_data">保存数据</string>
|
||||||
|
@ -445,14 +343,6 @@
|
||||||
<string name="content_install_notice_description">您选择安装的内容与此游戏不匹配。\n继续安装?</string>
|
<string name="content_install_notice_description">您选择安装的内容与此游戏不匹配。\n继续安装?</string>
|
||||||
<string name="confirm_uninstall">卸载确认</string>
|
<string name="confirm_uninstall">卸载确认</string>
|
||||||
<string name="confirm_uninstall_description">您确定要卸载此附加项吗?</string>
|
<string name="confirm_uninstall_description">您确定要卸载此附加项吗?</string>
|
||||||
<string name="verify_integrity">完整性验证</string>
|
|
||||||
<string name="verifying">验证中...</string>
|
|
||||||
<string name="verify_success">完整性验证成功!</string>
|
|
||||||
<string name="verify_failure">完整性验证失败!</string>
|
|
||||||
<string name="verify_failure_description">文件可能已经损坏</string>
|
|
||||||
<string name="verify_no_result">无法执行完整性验证</string>
|
|
||||||
<string name="verify_no_result_description">未检查文件的完整性</string>
|
|
||||||
<string name="verification_failed_for">以下文件完整性验证失败:\n%1$s</string>
|
|
||||||
|
|
||||||
<!-- ROM loading errors -->
|
<!-- ROM loading errors -->
|
||||||
<string name="loader_error_encrypted">您的 ROM 已加密</string>
|
<string name="loader_error_encrypted">您的 ROM 已加密</string>
|
||||||
|
@ -467,7 +357,6 @@
|
||||||
<string name="emulation_exit">退出模拟</string>
|
<string name="emulation_exit">退出模拟</string>
|
||||||
<string name="emulation_done">完成</string>
|
<string name="emulation_done">完成</string>
|
||||||
<string name="emulation_fps_counter">FPS 计数器</string>
|
<string name="emulation_fps_counter">FPS 计数器</string>
|
||||||
<string name="emulation_thermal_indicator">温度指示器</string>
|
|
||||||
<string name="emulation_toggle_controls">按键切换</string>
|
<string name="emulation_toggle_controls">按键切换</string>
|
||||||
<string name="emulation_rel_stick_center">相对摇杆中心</string>
|
<string name="emulation_rel_stick_center">相对摇杆中心</string>
|
||||||
<string name="emulation_dpad_slide">十字方向键滑动</string>
|
<string name="emulation_dpad_slide">十字方向键滑动</string>
|
||||||
|
@ -477,14 +366,12 @@
|
||||||
<string name="emulation_control_adjust">调整虚拟按键</string>
|
<string name="emulation_control_adjust">调整虚拟按键</string>
|
||||||
<string name="emulation_control_scale">缩放</string>
|
<string name="emulation_control_scale">缩放</string>
|
||||||
<string name="emulation_control_opacity">不透明度</string>
|
<string name="emulation_control_opacity">不透明度</string>
|
||||||
<string name="emulation_touch_overlay_reset">重置虚拟按键</string>
|
<string name="emulation_touch_overlay_reset">重设虚拟按键</string>
|
||||||
<string name="emulation_touch_overlay_edit">编辑虚拟按键</string>
|
<string name="emulation_touch_overlay_edit">编辑虚拟按键</string>
|
||||||
<string name="emulation_pause">暂停模拟</string>
|
<string name="emulation_pause">暂停模拟</string>
|
||||||
<string name="emulation_unpause">继续模拟</string>
|
<string name="emulation_unpause">继续模拟</string>
|
||||||
<string name="emulation_input_overlay">虚拟按键选项</string>
|
<string name="emulation_input_overlay">虚拟按键选项</string>
|
||||||
<string name="touchscreen">触摸屏</string>
|
<string name="touchscreen">触摸屏</string>
|
||||||
<string name="lock_drawer">锁定侧边菜单</string>
|
|
||||||
<string name="unlock_drawer">解锁侧边菜单</string>
|
|
||||||
|
|
||||||
<string name="load_settings">正在载入设定…</string>
|
<string name="load_settings">正在载入设定…</string>
|
||||||
|
|
||||||
|
@ -553,12 +440,12 @@
|
||||||
<string name="scaling_filter_bicubic">双三线过滤</string>
|
<string name="scaling_filter_bicubic">双三线过滤</string>
|
||||||
<string name="scaling_filter_gaussian">高斯模糊</string>
|
<string name="scaling_filter_gaussian">高斯模糊</string>
|
||||||
<string name="scaling_filter_scale_force">强制缩放</string>
|
<string name="scaling_filter_scale_force">强制缩放</string>
|
||||||
<string name="scaling_filter_fsr">AMD FidelityFX™️ 超级分辨率锐画技术 (FSR)</string>
|
<string name="scaling_filter_fsr">AMD FidelityFX™️ 超级分辨率锐画技术</string>
|
||||||
|
|
||||||
<!-- Anti-Aliasing -->
|
<!-- Anti-Aliasing -->
|
||||||
<string name="anti_aliasing_none">无</string>
|
<string name="anti_aliasing_none">无</string>
|
||||||
<string name="anti_aliasing_fxaa">快速近似抗锯齿 (FXAA)</string>
|
<string name="anti_aliasing_fxaa">快速近似抗锯齿</string>
|
||||||
<string name="anti_aliasing_smaa">子像素形态学抗锯齿 (SMAA)</string>
|
<string name="anti_aliasing_smaa">子像素形态学抗锯齿</string>
|
||||||
|
|
||||||
<!-- Screen Layouts -->
|
<!-- Screen Layouts -->
|
||||||
<string name="screen_layout_auto">自动</string>
|
<string name="screen_layout_auto">自动</string>
|
||||||
|
@ -629,13 +516,7 @@
|
||||||
<string name="mute">静音</string>
|
<string name="mute">静音</string>
|
||||||
<string name="unmute">取消静音</string>
|
<string name="unmute">取消静音</string>
|
||||||
|
|
||||||
<!-- Emulation vertical alignment -->
|
|
||||||
<string name="vertical_alignment">垂直对齐</string>
|
|
||||||
<string name="top">顶部</string>
|
|
||||||
<string name="center">居中</string>
|
|
||||||
<string name="bottom">底部</string>
|
|
||||||
|
|
||||||
<!-- Licenses screen strings -->
|
<!-- Licenses screen strings -->
|
||||||
<string name="licenses">许可证</string>
|
<string name="licenses">许可证</string>
|
||||||
<string name="license_fidelityfx_fsr_description">来自 AMD 的高品质画质升级技术</string>
|
<string name="license_fidelityfx_fsr_description">来自 AMD 的高品质画质升级</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -133,11 +133,6 @@
|
||||||
<item quantity="other">成功导入 %d 个存档</item>
|
<item quantity="other">成功导入 %d 个存档</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<string name="no_save_data_found">未找到存档数据</string>
|
<string name="no_save_data_found">未找到存档数据</string>
|
||||||
<string name="verify_installed_content">验证已安装内容的完整性</string>
|
|
||||||
<string name="verify_installed_content_description">检查所有安装的内容是否有损坏</string>
|
|
||||||
<string name="keys_missing">密钥缺失</string>
|
|
||||||
<string name="keys_missing_description">无法解密固件和商业游戏</string>
|
|
||||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
|
||||||
|
|
||||||
<!-- Applet launcher strings -->
|
<!-- Applet launcher strings -->
|
||||||
<string name="applets">小程式啟動器</string>
|
<string name="applets">小程式啟動器</string>
|
||||||
|
@ -204,7 +199,6 @@
|
||||||
<string name="value_with_units">%1$s%2$s</string>
|
<string name="value_with_units">%1$s%2$s</string>
|
||||||
|
|
||||||
<!-- System settings strings -->
|
<!-- System settings strings -->
|
||||||
<string name="device_name">设备名称</string>
|
|
||||||
<string name="use_docked_mode">底座模式</string>
|
<string name="use_docked_mode">底座模式</string>
|
||||||
<string name="use_docked_mode_description">提高解析度,降低效能。停用後將會使用手提模式,會降低解析度並提高效能。</string>
|
<string name="use_docked_mode_description">提高解析度,降低效能。停用後將會使用手提模式,會降低解析度並提高效能。</string>
|
||||||
<string name="emulated_region">模擬區域</string>
|
<string name="emulated_region">模擬區域</string>
|
||||||
|
@ -222,8 +216,6 @@
|
||||||
<string name="renderer_screen_layout">方向</string>
|
<string name="renderer_screen_layout">方向</string>
|
||||||
<string name="renderer_aspect_ratio">長寬比</string>
|
<string name="renderer_aspect_ratio">長寬比</string>
|
||||||
<string name="renderer_scaling_filter">視窗適應過濾器</string>
|
<string name="renderer_scaling_filter">視窗適應過濾器</string>
|
||||||
<string name="fsr_sharpness">FSR 锐化度</string>
|
|
||||||
<string name="fsr_sharpness_description">指定使用 FSR 时图像的锐化程度</string>
|
|
||||||
<string name="renderer_anti_aliasing">消除鋸齒方法</string>
|
<string name="renderer_anti_aliasing">消除鋸齒方法</string>
|
||||||
<string name="renderer_force_max_clock">強制最大時脈 (僅 Adreno)</string>
|
<string name="renderer_force_max_clock">強制最大時脈 (僅 Adreno)</string>
|
||||||
<string name="renderer_force_max_clock_description">強制 GPU 以最大可能時脈執行 (熱溫限制仍被套用)。</string>
|
<string name="renderer_force_max_clock_description">強制 GPU 以最大可能時脈執行 (熱溫限制仍被套用)。</string>
|
||||||
|
@ -251,92 +243,6 @@
|
||||||
<string name="audio_volume">音量</string>
|
<string name="audio_volume">音量</string>
|
||||||
<string name="audio_volume_description">指定音訊輸出音量。</string>
|
<string name="audio_volume_description">指定音訊輸出音量。</string>
|
||||||
|
|
||||||
<!-- Input strings -->
|
|
||||||
<string name="buttons">按键</string>
|
|
||||||
<string name="button_a">A</string>
|
|
||||||
<string name="button_b">B</string>
|
|
||||||
<string name="button_x">X</string>
|
|
||||||
<string name="button_y">Y</string>
|
|
||||||
<string name="button_plus">+</string>
|
|
||||||
<string name="button_minus">-</string>
|
|
||||||
<string name="button_home">HOME</string>
|
|
||||||
<string name="button_capture">截圖</string>
|
|
||||||
<string name="start_pause">开始/暂停</string>
|
|
||||||
<string name="dpad">方向鍵</string>
|
|
||||||
<string name="up">上</string>
|
|
||||||
<string name="down">下</string>
|
|
||||||
<string name="left">左</string>
|
|
||||||
<string name="right">右</string>
|
|
||||||
<string name="left_stick">左搖桿</string>
|
|
||||||
<string name="control_stick">控制摇杆</string>
|
|
||||||
<string name="right_stick">右搖桿</string>
|
|
||||||
<string name="c_stick">C 搖桿</string>
|
|
||||||
<string name="pressed">按壓</string>
|
|
||||||
<string name="range">靈敏度</string>
|
|
||||||
<string name="deadzone">無感帶</string>
|
|
||||||
<string name="modifier">輕推</string>
|
|
||||||
<string name="modifier_range">摇杆灵敏度</string>
|
|
||||||
<string name="triggers">肩部按键</string>
|
|
||||||
<string name="button_l">L</string>
|
|
||||||
<string name="button_r">R</string>
|
|
||||||
<string name="button_zl">ZL</string>
|
|
||||||
<string name="button_zr">ZR</string>
|
|
||||||
<string name="button_sl_left">左 SL</string>
|
|
||||||
<string name="button_sr_left">左 SR</string>
|
|
||||||
<string name="button_sl_right">右 SL</string>
|
|
||||||
<string name="button_sr_right">右 SR</string>
|
|
||||||
<string name="button_z">Z</string>
|
|
||||||
<string name="invalid">無效</string>
|
|
||||||
<string name="not_set">未设置</string>
|
|
||||||
<string name="unknown">未知</string>
|
|
||||||
<string name="qualified_hat">%1$s%2$s%3$s方向键 %4$s</string>
|
|
||||||
<string name="qualified_button_stick_axis">%1$s%2$s%3$s轴 %4$s</string>
|
|
||||||
<string name="qualified_button">%1$s%2$s%3$s按键 %4$s</string>
|
|
||||||
<string name="qualified_axis">轴 %1$s%2$s</string>
|
|
||||||
<string name="unused">未使用</string>
|
|
||||||
<string name="input_prompt">移动或按下按键来输入</string>
|
|
||||||
<string name="unsupported_input">不支持的输入类型</string>
|
|
||||||
<string name="input_mapping_filter">输入映射过滤器</string>
|
|
||||||
<string name="input_mapping_filter_description">选择一个设备过滤输入映射</string>
|
|
||||||
<string name="auto_map">控制器自动映射</string>
|
|
||||||
<string name="auto_map_description">选择一个控制器以尝试自动映射</string>
|
|
||||||
<string name="attempted_auto_map">尝试为 %1$s 自动映射</string>
|
|
||||||
<string name="controller_type">控制器类型</string>
|
|
||||||
<string name="pro_controller">Pro 手把</string>
|
|
||||||
<string name="handheld">掌機模式</string>
|
|
||||||
<string name="dual_joycons">雙 Joycon 手把</string>
|
|
||||||
<string name="left_joycon">左 Joycon 手把</string>
|
|
||||||
<string name="right_joycon">右 Joycon 手把</string>
|
|
||||||
<string name="gamecube_controller">GameCube 手把</string>
|
|
||||||
<string name="invert_axis">方向反轉</string>
|
|
||||||
<string name="invert_button">無效按鈕</string>
|
|
||||||
<string name="toggle_button">切換按鍵</string>
|
|
||||||
<string name="turbo_button">连发键</string>
|
|
||||||
<string name="set_threshold">設定閾值</string>
|
|
||||||
<string name="toggle_axis">切換軸</string>
|
|
||||||
<string name="connected">已連線</string>
|
|
||||||
<string name="use_system_vibrator">使用系统震动器</string>
|
|
||||||
<string name="input_overlay">虚拟按键输入</string>
|
|
||||||
<string name="vibration">震動</string>
|
|
||||||
<string name="vibration_strength">震动强度</string>
|
|
||||||
<string name="profile">設定檔</string>
|
|
||||||
<string name="create_new_profile">新建配置文件</string>
|
|
||||||
<string name="enter_profile_name">输入配置文件名称</string>
|
|
||||||
<string name="profile_name_already_exists">该名称已被其他配置文件使用</string>
|
|
||||||
<string name="invalid_profile_name">无效的配置文件名称</string>
|
|
||||||
<string name="use_global_input_configuration">使用全域輸入設定</string>
|
|
||||||
<string name="player_num_profile">玩家 %d 配置文件</string>
|
|
||||||
<string name="delete_input_profile">删除输入配置文件</string>
|
|
||||||
<string name="delete_input_profile_description">您确定要删除这个配置文件?此操作不可撤销。</string>
|
|
||||||
<string name="stick_map_description">向左移动摇杆,然后将其向上移动或按下一个按钮</string>
|
|
||||||
<string name="button_map_description">按下一个按钮或移动扳机键/摇杆</string>
|
|
||||||
<string name="map_dpad_direction">将十字方向键映射到 %1$s</string>
|
|
||||||
<string name="map_control">映射到 %1$s</string>
|
|
||||||
<string name="failed_to_load_profile">加载配置文件失败</string>
|
|
||||||
<string name="failed_to_save_profile">保存配置文件失败</string>
|
|
||||||
<string name="reset_mapping">重置映射</string>
|
|
||||||
<string name="reset_mapping_description">您确定要将此控制器的所有映射重置为默认值?此操作不可撤销。</string>
|
|
||||||
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">預設</string>
|
<string name="slider_default">預設</string>
|
||||||
<string name="ini_saved">已儲存設定</string>
|
<string name="ini_saved">已儲存設定</string>
|
||||||
|
@ -373,11 +279,6 @@
|
||||||
<string name="import_complete">导入完成</string>
|
<string name="import_complete">导入完成</string>
|
||||||
<string name="more_options">更多选项</string>
|
<string name="more_options">更多选项</string>
|
||||||
<string name="use_global_setting">使用全局设置</string>
|
<string name="use_global_setting">使用全局设置</string>
|
||||||
<string name="operation_completed_successfully">操作已成功完成</string>
|
|
||||||
<string name="retry">重试</string>
|
|
||||||
<string name="confirm">确定</string>
|
|
||||||
<string name="load">加载</string>
|
|
||||||
<string name="save">儲存</string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
<string name="select_gpu_driver">選取 GPU 驅動程式</string>
|
<string name="select_gpu_driver">選取 GPU 驅動程式</string>
|
||||||
|
@ -399,9 +300,6 @@
|
||||||
<string name="preferences_graphics_description">準確度層級、解析度及著色器快取</string>
|
<string name="preferences_graphics_description">準確度層級、解析度及著色器快取</string>
|
||||||
<string name="preferences_audio">音訊</string>
|
<string name="preferences_audio">音訊</string>
|
||||||
<string name="preferences_audio_description">輸出引擎及音量</string>
|
<string name="preferences_audio_description">輸出引擎及音量</string>
|
||||||
<string name="preferences_controls">控制</string>
|
|
||||||
<string name="preferences_controls_description">控制器输入映射</string>
|
|
||||||
<string name="preferences_player">玩家 %d</string>
|
|
||||||
<string name="preferences_theme">主題和色彩</string>
|
<string name="preferences_theme">主題和色彩</string>
|
||||||
<string name="preferences_debug">偵錯</string>
|
<string name="preferences_debug">偵錯</string>
|
||||||
<string name="preferences_debug_description">CPU/GPU 偵錯、圖形 API 及 fastmem</string>
|
<string name="preferences_debug_description">CPU/GPU 偵錯、圖形 API 及 fastmem</string>
|
||||||
|
@ -445,14 +343,6 @@
|
||||||
<string name="content_install_notice_description">您選取的內容與此遊戲不相符。\n仍要繼續安裝嗎?</string>
|
<string name="content_install_notice_description">您選取的內容與此遊戲不相符。\n仍要繼續安裝嗎?</string>
|
||||||
<string name="confirm_uninstall">确认卸载</string>
|
<string name="confirm_uninstall">确认卸载</string>
|
||||||
<string name="confirm_uninstall_description">您确定要卸载此附加项吗?</string>
|
<string name="confirm_uninstall_description">您确定要卸载此附加项吗?</string>
|
||||||
<string name="verify_integrity">完整性验证</string>
|
|
||||||
<string name="verifying">验证中...</string>
|
|
||||||
<string name="verify_success">完整性驗證成功!</string>
|
|
||||||
<string name="verify_failure">完整性驗證失敗!</string>
|
|
||||||
<string name="verify_failure_description">文件可能已经损坏</string>
|
|
||||||
<string name="verify_no_result">无法执行完整性验证</string>
|
|
||||||
<string name="verify_no_result_description">未检查文件的完整性</string>
|
|
||||||
<string name="verification_failed_for">以下文件完整性验证失败:\n%1$s</string>
|
|
||||||
|
|
||||||
<!-- ROM loading errors -->
|
<!-- ROM loading errors -->
|
||||||
<string name="loader_error_encrypted">您的 ROM 已加密</string>
|
<string name="loader_error_encrypted">您的 ROM 已加密</string>
|
||||||
|
@ -467,7 +357,6 @@
|
||||||
<string name="emulation_exit">結束模擬</string>
|
<string name="emulation_exit">結束模擬</string>
|
||||||
<string name="emulation_done">完成</string>
|
<string name="emulation_done">完成</string>
|
||||||
<string name="emulation_fps_counter">FPS 計數器</string>
|
<string name="emulation_fps_counter">FPS 計數器</string>
|
||||||
<string name="emulation_thermal_indicator">温度指示器</string>
|
|
||||||
<string name="emulation_toggle_controls">切換控制</string>
|
<string name="emulation_toggle_controls">切換控制</string>
|
||||||
<string name="emulation_rel_stick_center">相對搖桿中心</string>
|
<string name="emulation_rel_stick_center">相對搖桿中心</string>
|
||||||
<string name="emulation_dpad_slide">方向鍵滑動</string>
|
<string name="emulation_dpad_slide">方向鍵滑動</string>
|
||||||
|
@ -483,8 +372,6 @@
|
||||||
<string name="emulation_unpause">取消暫停模擬</string>
|
<string name="emulation_unpause">取消暫停模擬</string>
|
||||||
<string name="emulation_input_overlay">覆疊選項</string>
|
<string name="emulation_input_overlay">覆疊選項</string>
|
||||||
<string name="touchscreen">觸控螢幕</string>
|
<string name="touchscreen">觸控螢幕</string>
|
||||||
<string name="lock_drawer">锁定侧边菜单</string>
|
|
||||||
<string name="unlock_drawer">解锁侧边菜单</string>
|
|
||||||
|
|
||||||
<string name="load_settings">正在載入設定…</string>
|
<string name="load_settings">正在載入設定…</string>
|
||||||
|
|
||||||
|
@ -629,12 +516,6 @@
|
||||||
<string name="mute">靜音</string>
|
<string name="mute">靜音</string>
|
||||||
<string name="unmute">取消靜音</string>
|
<string name="unmute">取消靜音</string>
|
||||||
|
|
||||||
<!-- Emulation vertical alignment -->
|
|
||||||
<string name="vertical_alignment">垂直对齐</string>
|
|
||||||
<string name="top">顶部</string>
|
|
||||||
<string name="center">中心</string>
|
|
||||||
<string name="bottom">底部</string>
|
|
||||||
|
|
||||||
<!-- Licenses screen strings -->
|
<!-- Licenses screen strings -->
|
||||||
<string name="licenses">授權</string>
|
<string name="licenses">授權</string>
|
||||||
<string name="license_fidelityfx_fsr_description">來自 AMD 的升級圖像品質</string>
|
<string name="license_fidelityfx_fsr_description">來自 AMD 的升級圖像品質</string>
|
||||||
|
|
|
@ -343,7 +343,7 @@ void SetColorConsoleBackendEnabled(bool enabled) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void FmtLogMessageImpl(Class log_class, Level log_level, const char* filename,
|
void FmtLogMessageImpl(Class log_class, Level log_level, const char* filename,
|
||||||
unsigned int line_num, const char* function, fmt::string_view format,
|
unsigned int line_num, const char* function, const char* format,
|
||||||
const fmt::format_args& args) {
|
const fmt::format_args& args) {
|
||||||
if (!initialization_in_progress_suppress_logging) {
|
if (!initialization_in_progress_suppress_logging) {
|
||||||
Impl::Instance().PushEntry(log_class, log_level, filename, line_num, function,
|
Impl::Instance().PushEntry(log_class, log_level, filename, line_num, function,
|
||||||
|
|
|
@ -24,12 +24,12 @@ constexpr const char* TrimSourcePath(std::string_view source) {
|
||||||
|
|
||||||
/// Logs a message to the global logger, using fmt
|
/// Logs a message to the global logger, using fmt
|
||||||
void FmtLogMessageImpl(Class log_class, Level log_level, const char* filename,
|
void FmtLogMessageImpl(Class log_class, Level log_level, const char* filename,
|
||||||
unsigned int line_num, const char* function, fmt::string_view format,
|
unsigned int line_num, const char* function, const char* format,
|
||||||
const fmt::format_args& args);
|
const fmt::format_args& args);
|
||||||
|
|
||||||
template <typename... Args>
|
template <typename... Args>
|
||||||
void FmtLogMessage(Class log_class, Level log_level, const char* filename, unsigned int line_num,
|
void FmtLogMessage(Class log_class, Level log_level, const char* filename, unsigned int line_num,
|
||||||
const char* function, fmt::format_string<Args...> format, const Args&... args) {
|
const char* function, const char* format, const Args&... args) {
|
||||||
FmtLogMessageImpl(log_class, log_level, filename, line_num, function, format,
|
FmtLogMessageImpl(log_class, log_level, filename, line_num, function, format,
|
||||||
fmt::make_format_args(args...));
|
fmt::make_format_args(args...));
|
||||||
}
|
}
|
||||||
|
|
|
@ -401,16 +401,14 @@ add_library(core STATIC
|
||||||
hle/service/am/am_types.h
|
hle/service/am/am_types.h
|
||||||
hle/service/am/applet.cpp
|
hle/service/am/applet.cpp
|
||||||
hle/service/am/applet.h
|
hle/service/am/applet.h
|
||||||
hle/service/am/applet_manager.cpp
|
|
||||||
hle/service/am/applet_data_broker.cpp
|
hle/service/am/applet_data_broker.cpp
|
||||||
hle/service/am/applet_data_broker.h
|
hle/service/am/applet_data_broker.h
|
||||||
|
hle/service/am/applet_manager.cpp
|
||||||
hle/service/am/applet_manager.h
|
hle/service/am/applet_manager.h
|
||||||
hle/service/am/button_poller.cpp
|
hle/service/am/applet_message_queue.cpp
|
||||||
hle/service/am/button_poller.h
|
hle/service/am/applet_message_queue.h
|
||||||
hle/service/am/display_layer_manager.cpp
|
hle/service/am/display_layer_manager.cpp
|
||||||
hle/service/am/display_layer_manager.h
|
hle/service/am/display_layer_manager.h
|
||||||
hle/service/am/event_observer.cpp
|
|
||||||
hle/service/am/event_observer.h
|
|
||||||
hle/service/am/frontend/applet_cabinet.cpp
|
hle/service/am/frontend/applet_cabinet.cpp
|
||||||
hle/service/am/frontend/applet_cabinet.h
|
hle/service/am/frontend/applet_cabinet.h
|
||||||
hle/service/am/frontend/applet_controller.cpp
|
hle/service/am/frontend/applet_controller.cpp
|
||||||
|
@ -436,12 +434,8 @@ add_library(core STATIC
|
||||||
hle/service/am/hid_registration.h
|
hle/service/am/hid_registration.h
|
||||||
hle/service/am/library_applet_storage.cpp
|
hle/service/am/library_applet_storage.cpp
|
||||||
hle/service/am/library_applet_storage.h
|
hle/service/am/library_applet_storage.h
|
||||||
hle/service/am/lifecycle_manager.cpp
|
hle/service/am/process.cpp
|
||||||
hle/service/am/lifecycle_manager.h
|
hle/service/am/process.h
|
||||||
hle/service/am/process_creation.cpp
|
|
||||||
hle/service/am/process_creation.h
|
|
||||||
hle/service/am/process_holder.cpp
|
|
||||||
hle/service/am/process_holder.h
|
|
||||||
hle/service/am/service/all_system_applet_proxies_service.cpp
|
hle/service/am/service/all_system_applet_proxies_service.cpp
|
||||||
hle/service/am/service/all_system_applet_proxies_service.h
|
hle/service/am/service/all_system_applet_proxies_service.h
|
||||||
hle/service/am/service/applet_common_functions.cpp
|
hle/service/am/service/applet_common_functions.cpp
|
||||||
|
@ -492,8 +486,6 @@ add_library(core STATIC
|
||||||
hle/service/am/service/system_applet_proxy.h
|
hle/service/am/service/system_applet_proxy.h
|
||||||
hle/service/am/service/window_controller.cpp
|
hle/service/am/service/window_controller.cpp
|
||||||
hle/service/am/service/window_controller.h
|
hle/service/am/service/window_controller.h
|
||||||
hle/service/am/window_system.cpp
|
|
||||||
hle/service/am/window_system.h
|
|
||||||
hle/service/aoc/addon_content_manager.cpp
|
hle/service/aoc/addon_content_manager.cpp
|
||||||
hle/service/aoc/addon_content_manager.h
|
hle/service/aoc/addon_content_manager.h
|
||||||
hle/service/aoc/purchase_event_manager.cpp
|
hle/service/aoc/purchase_event_manager.cpp
|
||||||
|
@ -676,10 +668,6 @@ add_library(core STATIC
|
||||||
hle/service/glue/time/worker.h
|
hle/service/glue/time/worker.h
|
||||||
hle/service/grc/grc.cpp
|
hle/service/grc/grc.cpp
|
||||||
hle/service/grc/grc.h
|
hle/service/grc/grc.h
|
||||||
hle/service/hid/active_vibration_device_list.cpp
|
|
||||||
hle/service/hid/active_vibration_device_list.h
|
|
||||||
hle/service/hid/applet_resource.cpp
|
|
||||||
hle/service/hid/applet_resource.h
|
|
||||||
hle/service/hid/hid.cpp
|
hle/service/hid/hid.cpp
|
||||||
hle/service/hid/hid.h
|
hle/service/hid/hid.h
|
||||||
hle/service/hid/hid_debug_server.cpp
|
hle/service/hid/hid_debug_server.cpp
|
||||||
|
@ -926,8 +914,6 @@ add_library(core STATIC
|
||||||
hle/service/os/multi_wait_utils.h
|
hle/service/os/multi_wait_utils.h
|
||||||
hle/service/os/mutex.cpp
|
hle/service/os/mutex.cpp
|
||||||
hle/service/os/mutex.h
|
hle/service/os/mutex.h
|
||||||
hle/service/os/process.cpp
|
|
||||||
hle/service/os/process.h
|
|
||||||
hle/service/pcie/pcie.cpp
|
hle/service/pcie/pcie.cpp
|
||||||
hle/service/pcie/pcie.h
|
hle/service/pcie/pcie.h
|
||||||
hle/service/pctl/parental_control_service_factory.cpp
|
hle/service/pctl/parental_control_service_factory.cpp
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
|
#include <exception>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
@ -19,6 +20,7 @@
|
||||||
#include "core/cpu_manager.h"
|
#include "core/cpu_manager.h"
|
||||||
#include "core/debugger/debugger.h"
|
#include "core/debugger/debugger.h"
|
||||||
#include "core/device_memory.h"
|
#include "core/device_memory.h"
|
||||||
|
#include "core/file_sys/bis_factory.h"
|
||||||
#include "core/file_sys/fs_filesystem.h"
|
#include "core/file_sys/fs_filesystem.h"
|
||||||
#include "core/file_sys/patch_manager.h"
|
#include "core/file_sys/patch_manager.h"
|
||||||
#include "core/file_sys/registered_cache.h"
|
#include "core/file_sys/registered_cache.h"
|
||||||
|
@ -36,7 +38,6 @@
|
||||||
#include "core/hle/service/acc/profile_manager.h"
|
#include "core/hle/service/acc/profile_manager.h"
|
||||||
#include "core/hle/service/am/applet_manager.h"
|
#include "core/hle/service/am/applet_manager.h"
|
||||||
#include "core/hle/service/am/frontend/applets.h"
|
#include "core/hle/service/am/frontend/applets.h"
|
||||||
#include "core/hle/service/am/process_creation.h"
|
|
||||||
#include "core/hle/service/apm/apm_controller.h"
|
#include "core/hle/service/apm/apm_controller.h"
|
||||||
#include "core/hle/service/filesystem/filesystem.h"
|
#include "core/hle/service/filesystem/filesystem.h"
|
||||||
#include "core/hle/service/glue/glue_manager.h"
|
#include "core/hle/service/glue/glue_manager.h"
|
||||||
|
@ -71,6 +72,30 @@ MICROPROFILE_DEFINE(ARM_CPU3, "ARM", "CPU 3", MP_RGB(255, 64, 64));
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
FileSys::StorageId GetStorageIdForFrontendSlot(
|
||||||
|
std::optional<FileSys::ContentProviderUnionSlot> slot) {
|
||||||
|
if (!slot.has_value()) {
|
||||||
|
return FileSys::StorageId::None;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (*slot) {
|
||||||
|
case FileSys::ContentProviderUnionSlot::UserNAND:
|
||||||
|
return FileSys::StorageId::NandUser;
|
||||||
|
case FileSys::ContentProviderUnionSlot::SysNAND:
|
||||||
|
return FileSys::StorageId::NandSystem;
|
||||||
|
case FileSys::ContentProviderUnionSlot::SDMC:
|
||||||
|
return FileSys::StorageId::SdCard;
|
||||||
|
case FileSys::ContentProviderUnionSlot::FrontendManual:
|
||||||
|
return FileSys::StorageId::Host;
|
||||||
|
default:
|
||||||
|
return FileSys::StorageId::None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // Anonymous namespace
|
||||||
|
|
||||||
FileSys::VirtualFile GetGameFileFromPath(const FileSys::VirtualFilesystem& vfs,
|
FileSys::VirtualFile GetGameFileFromPath(const FileSys::VirtualFilesystem& vfs,
|
||||||
const std::string& path) {
|
const std::string& path) {
|
||||||
// To account for split 00+01+etc files.
|
// To account for split 00+01+etc files.
|
||||||
|
@ -272,6 +297,9 @@ struct System::Impl {
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemResultStatus SetupForApplicationProcess(System& system, Frontend::EmuWindow& emu_window) {
|
SystemResultStatus SetupForApplicationProcess(System& system, Frontend::EmuWindow& emu_window) {
|
||||||
|
/// Reset all glue registrations
|
||||||
|
arp_manager.ResetAll();
|
||||||
|
|
||||||
telemetry_session = std::make_unique<Core::TelemetrySession>();
|
telemetry_session = std::make_unique<Core::TelemetrySession>();
|
||||||
|
|
||||||
host1x_core = std::make_unique<Tegra::Host1x::Host1x>(system);
|
host1x_core = std::make_unique<Tegra::Host1x::Host1x>(system);
|
||||||
|
@ -307,32 +335,16 @@ struct System::Impl {
|
||||||
SystemResultStatus Load(System& system, Frontend::EmuWindow& emu_window,
|
SystemResultStatus Load(System& system, Frontend::EmuWindow& emu_window,
|
||||||
const std::string& filepath,
|
const std::string& filepath,
|
||||||
Service::AM::FrontendAppletParameters& params) {
|
Service::AM::FrontendAppletParameters& params) {
|
||||||
InitializeKernel(system);
|
app_loader = Loader::GetLoader(system, GetGameFileFromPath(virtual_filesystem, filepath),
|
||||||
|
|
||||||
const auto file = GetGameFileFromPath(virtual_filesystem, filepath);
|
|
||||||
|
|
||||||
// Create the application process
|
|
||||||
Loader::ResultStatus load_result{};
|
|
||||||
std::vector<u8> control;
|
|
||||||
auto process =
|
|
||||||
Service::AM::CreateApplicationProcess(control, app_loader, load_result, system, file,
|
|
||||||
params.program_id, params.program_index);
|
params.program_id, params.program_index);
|
||||||
|
|
||||||
if (load_result != Loader::ResultStatus::Success) {
|
|
||||||
LOG_CRITICAL(Core, "Failed to load ROM (Error {})!", load_result);
|
|
||||||
ShutdownMainProcess();
|
|
||||||
|
|
||||||
return static_cast<SystemResultStatus>(
|
|
||||||
static_cast<u32>(SystemResultStatus::ErrorLoader) + static_cast<u32>(load_result));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!app_loader) {
|
if (!app_loader) {
|
||||||
LOG_CRITICAL(Core, "Failed to obtain loader for {}!", filepath);
|
LOG_CRITICAL(Core, "Failed to obtain loader for {}!", filepath);
|
||||||
return SystemResultStatus::ErrorGetLoader;
|
return SystemResultStatus::ErrorGetLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (app_loader->ReadProgramId(params.program_id) != Loader::ResultStatus::Success) {
|
if (app_loader->ReadProgramId(params.program_id) != Loader::ResultStatus::Success) {
|
||||||
LOG_ERROR(Core, "Failed to find program id for ROM!");
|
LOG_ERROR(Core, "Failed to find title id for ROM!");
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name = "Unknown program";
|
std::string name = "Unknown program";
|
||||||
|
@ -340,10 +352,23 @@ struct System::Impl {
|
||||||
LOG_ERROR(Core, "Failed to read title for ROM!");
|
LOG_ERROR(Core, "Failed to read title for ROM!");
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_INFO(Core, "Loading {} ({:016X}) ...", name, params.program_id);
|
LOG_INFO(Core, "Loading {} ({})", name, params.program_id);
|
||||||
|
|
||||||
// Make the process created be the application
|
InitializeKernel(system);
|
||||||
kernel.MakeApplicationProcess(process->GetHandle());
|
|
||||||
|
// Create the application process.
|
||||||
|
auto main_process = Kernel::KProcess::Create(system.Kernel());
|
||||||
|
Kernel::KProcess::Register(system.Kernel(), main_process);
|
||||||
|
kernel.AppendNewProcess(main_process);
|
||||||
|
kernel.MakeApplicationProcess(main_process);
|
||||||
|
const auto [load_result, load_parameters] = app_loader->Load(*main_process, system);
|
||||||
|
if (load_result != Loader::ResultStatus::Success) {
|
||||||
|
LOG_CRITICAL(Core, "Failed to load ROM (Error {})!", load_result);
|
||||||
|
ShutdownMainProcess();
|
||||||
|
|
||||||
|
return static_cast<SystemResultStatus>(
|
||||||
|
static_cast<u32>(SystemResultStatus::ErrorLoader) + static_cast<u32>(load_result));
|
||||||
|
}
|
||||||
|
|
||||||
// Set up the rest of the system.
|
// Set up the rest of the system.
|
||||||
SystemResultStatus init_result{SetupForApplicationProcess(system, emu_window)};
|
SystemResultStatus init_result{SetupForApplicationProcess(system, emu_window)};
|
||||||
|
@ -354,6 +379,7 @@ struct System::Impl {
|
||||||
return init_result;
|
return init_result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AddGlueRegistrationForProcess(*app_loader, *main_process);
|
||||||
telemetry_session->AddInitialInfo(*app_loader, fs_controller, *content_provider);
|
telemetry_session->AddInitialInfo(*app_loader, fs_controller, *content_provider);
|
||||||
|
|
||||||
// Initialize cheat engine
|
// Initialize cheat engine
|
||||||
|
@ -361,9 +387,14 @@ struct System::Impl {
|
||||||
cheat_engine->Initialize();
|
cheat_engine->Initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register with applet manager
|
// Register with applet manager.
|
||||||
// All threads are started, begin main process execution, now that we're in the clear
|
applet_manager.CreateAndInsertByFrontendAppletParameters(main_process->GetProcessId(),
|
||||||
applet_manager.CreateAndInsertByFrontendAppletParameters(std::move(process), params);
|
params);
|
||||||
|
|
||||||
|
// All threads are started, begin main process execution, now that we're in the clear.
|
||||||
|
main_process->Run(load_parameters->main_thread_priority,
|
||||||
|
load_parameters->main_thread_stack_size);
|
||||||
|
main_process->Close();
|
||||||
|
|
||||||
if (Settings::values.gamecard_inserted) {
|
if (Settings::values.gamecard_inserted) {
|
||||||
if (Settings::values.gamecard_current_game) {
|
if (Settings::values.gamecard_current_game) {
|
||||||
|
@ -430,6 +461,7 @@ struct System::Impl {
|
||||||
kernel.SuspendEmulation(true);
|
kernel.SuspendEmulation(true);
|
||||||
kernel.CloseServices();
|
kernel.CloseServices();
|
||||||
kernel.ShutdownCores();
|
kernel.ShutdownCores();
|
||||||
|
applet_manager.Reset();
|
||||||
services.reset();
|
services.reset();
|
||||||
service_manager.reset();
|
service_manager.reset();
|
||||||
fs_controller.Reset();
|
fs_controller.Reset();
|
||||||
|
@ -452,9 +484,6 @@ struct System::Impl {
|
||||||
room_member->SendGameInfo(game_info);
|
room_member->SendGameInfo(game_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset all glue registrations
|
|
||||||
arp_manager.ResetAll();
|
|
||||||
|
|
||||||
LOG_DEBUG(Core, "Shutdown OK");
|
LOG_DEBUG(Core, "Shutdown OK");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -472,6 +501,31 @@ struct System::Impl {
|
||||||
return app_loader->ReadTitle(out);
|
return app_loader->ReadTitle(out);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AddGlueRegistrationForProcess(Loader::AppLoader& loader, Kernel::KProcess& process) {
|
||||||
|
std::vector<u8> nacp_data;
|
||||||
|
FileSys::NACP nacp;
|
||||||
|
if (loader.ReadControlData(nacp) == Loader::ResultStatus::Success) {
|
||||||
|
nacp_data = nacp.GetRawBytes();
|
||||||
|
} else {
|
||||||
|
nacp_data.resize(sizeof(FileSys::RawNACP));
|
||||||
|
}
|
||||||
|
|
||||||
|
Service::Glue::ApplicationLaunchProperty launch{};
|
||||||
|
launch.title_id = process.GetProgramId();
|
||||||
|
|
||||||
|
FileSys::PatchManager pm{launch.title_id, fs_controller, *content_provider};
|
||||||
|
launch.version = pm.GetGameVersion().value_or(0);
|
||||||
|
|
||||||
|
// TODO(DarkLordZach): When FSController/Game Card Support is added, if
|
||||||
|
// current_process_game_card use correct StorageId
|
||||||
|
launch.base_game_storage_id = GetStorageIdForFrontendSlot(content_provider->GetSlotForEntry(
|
||||||
|
launch.title_id, FileSys::ContentRecordType::Program));
|
||||||
|
launch.update_storage_id = GetStorageIdForFrontendSlot(content_provider->GetSlotForEntry(
|
||||||
|
FileSys::GetUpdateTitleID(launch.title_id), FileSys::ContentRecordType::Program));
|
||||||
|
|
||||||
|
arp_manager.Register(launch.title_id, launch, std::move(nacp_data));
|
||||||
|
}
|
||||||
|
|
||||||
void SetStatus(SystemResultStatus new_status, const char* details = nullptr) {
|
void SetStatus(SystemResultStatus new_status, const char* details = nullptr) {
|
||||||
status = new_status;
|
status = new_status;
|
||||||
if (details) {
|
if (details) {
|
||||||
|
|
|
@ -43,8 +43,6 @@ public:
|
||||||
DeviceMemoryManager(const DeviceMemory& device_memory);
|
DeviceMemoryManager(const DeviceMemory& device_memory);
|
||||||
~DeviceMemoryManager();
|
~DeviceMemoryManager();
|
||||||
|
|
||||||
static constexpr bool HAS_FLUSH_INVALIDATION = true;
|
|
||||||
|
|
||||||
void BindInterface(DeviceInterface* device_inter);
|
void BindInterface(DeviceInterface* device_inter);
|
||||||
|
|
||||||
DAddr Allocate(size_t size);
|
DAddr Allocate(size_t size);
|
||||||
|
|
|
@ -105,4 +105,12 @@ VirtualDir PartitionFilesystem::GetParentDirectory() const {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PartitionFilesystem::PrintDebugInfo() const {
|
||||||
|
LOG_DEBUG(Service_FS, "Magic: {:.4}", pfs_header.magic);
|
||||||
|
LOG_DEBUG(Service_FS, "Files: {}", pfs_header.num_entries);
|
||||||
|
for (u32 i = 0; i < pfs_header.num_entries; i++) {
|
||||||
|
LOG_DEBUG(Service_FS, " > File {}: {} (0x{:X} bytes)", i,
|
||||||
|
pfs_files[i]->GetName(), pfs_files[i]->GetSize());
|
||||||
|
}
|
||||||
|
}
|
||||||
} // namespace FileSys
|
} // namespace FileSys
|
||||||
|
|
|
@ -35,6 +35,7 @@ public:
|
||||||
std::vector<VirtualDir> GetSubdirectories() const override;
|
std::vector<VirtualDir> GetSubdirectories() const override;
|
||||||
std::string GetName() const override;
|
std::string GetName() const override;
|
||||||
VirtualDir GetParentDirectory() const override;
|
VirtualDir GetParentDirectory() const override;
|
||||||
|
void PrintDebugInfo() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct Header {
|
struct Header {
|
||||||
|
|
|
@ -9,8 +9,9 @@
|
||||||
namespace FileSys {
|
namespace FileSys {
|
||||||
|
|
||||||
OffsetVfsFile::OffsetVfsFile(VirtualFile file_, std::size_t size_, std::size_t offset_,
|
OffsetVfsFile::OffsetVfsFile(VirtualFile file_, std::size_t size_, std::size_t offset_,
|
||||||
std::string name_)
|
std::string name_, VirtualDir parent_)
|
||||||
: file(file_), offset(offset_), size(size_), name(std::move(name_)) {}
|
: file(file_), offset(offset_), size(size_), name(std::move(name_)),
|
||||||
|
parent(parent_ == nullptr ? file->GetContainingDirectory() : std::move(parent_)) {}
|
||||||
|
|
||||||
OffsetVfsFile::~OffsetVfsFile() = default;
|
OffsetVfsFile::~OffsetVfsFile() = default;
|
||||||
|
|
||||||
|
@ -36,7 +37,7 @@ bool OffsetVfsFile::Resize(std::size_t new_size) {
|
||||||
}
|
}
|
||||||
|
|
||||||
VirtualDir OffsetVfsFile::GetContainingDirectory() const {
|
VirtualDir OffsetVfsFile::GetContainingDirectory() const {
|
||||||
return nullptr;
|
return parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OffsetVfsFile::IsWritable() const {
|
bool OffsetVfsFile::IsWritable() const {
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace FileSys {
|
||||||
class OffsetVfsFile : public VfsFile {
|
class OffsetVfsFile : public VfsFile {
|
||||||
public:
|
public:
|
||||||
OffsetVfsFile(VirtualFile file, std::size_t size, std::size_t offset = 0,
|
OffsetVfsFile(VirtualFile file, std::size_t size, std::size_t offset = 0,
|
||||||
std::string new_name = "");
|
std::string new_name = "", VirtualDir new_parent = nullptr);
|
||||||
~OffsetVfsFile() override;
|
~OffsetVfsFile() override;
|
||||||
|
|
||||||
std::string GetName() const override;
|
std::string GetName() const override;
|
||||||
|
@ -44,6 +44,7 @@ private:
|
||||||
std::size_t offset;
|
std::size_t offset;
|
||||||
std::size_t size;
|
std::size_t size;
|
||||||
std::string name;
|
std::string name;
|
||||||
|
VirtualDir parent;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace FileSys
|
} // namespace FileSys
|
||||||
|
|
|
@ -76,7 +76,6 @@ VfsEntryType RealVfsFilesystem::GetEntryType(std::string_view path_) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
VirtualFile RealVfsFilesystem::OpenFileFromEntry(std::string_view path_, std::optional<u64> size,
|
VirtualFile RealVfsFilesystem::OpenFileFromEntry(std::string_view path_, std::optional<u64> size,
|
||||||
std::optional<std::string> parent_path,
|
|
||||||
OpenMode perms) {
|
OpenMode perms) {
|
||||||
const auto path = FS::SanitizePath(path_, FS::DirectorySeparator::PlatformDefault);
|
const auto path = FS::SanitizePath(path_, FS::DirectorySeparator::PlatformDefault);
|
||||||
std::scoped_lock lk{list_lock};
|
std::scoped_lock lk{list_lock};
|
||||||
|
@ -95,14 +94,14 @@ VirtualFile RealVfsFilesystem::OpenFileFromEntry(std::string_view path_, std::op
|
||||||
this->InsertReferenceIntoListLocked(*reference);
|
this->InsertReferenceIntoListLocked(*reference);
|
||||||
|
|
||||||
auto file = std::shared_ptr<RealVfsFile>(
|
auto file = std::shared_ptr<RealVfsFile>(
|
||||||
new RealVfsFile(*this, std::move(reference), path, perms, size, std::move(parent_path)));
|
new RealVfsFile(*this, std::move(reference), path, perms, size));
|
||||||
cache[path] = file;
|
cache[path] = file;
|
||||||
|
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
VirtualFile RealVfsFilesystem::OpenFile(std::string_view path_, OpenMode perms) {
|
VirtualFile RealVfsFilesystem::OpenFile(std::string_view path_, OpenMode perms) {
|
||||||
return OpenFileFromEntry(path_, {}, {}, perms);
|
return OpenFileFromEntry(path_, {}, perms);
|
||||||
}
|
}
|
||||||
|
|
||||||
VirtualFile RealVfsFilesystem::CreateFile(std::string_view path_, OpenMode perms) {
|
VirtualFile RealVfsFilesystem::CreateFile(std::string_view path_, OpenMode perms) {
|
||||||
|
@ -269,11 +268,10 @@ void RealVfsFilesystem::RemoveReferenceFromListLocked(FileReference& reference)
|
||||||
}
|
}
|
||||||
|
|
||||||
RealVfsFile::RealVfsFile(RealVfsFilesystem& base_, std::unique_ptr<FileReference> reference_,
|
RealVfsFile::RealVfsFile(RealVfsFilesystem& base_, std::unique_ptr<FileReference> reference_,
|
||||||
const std::string& path_, OpenMode perms_, std::optional<u64> size_,
|
const std::string& path_, OpenMode perms_, std::optional<u64> size_)
|
||||||
std::optional<std::string> parent_path_)
|
|
||||||
: base(base_), reference(std::move(reference_)), path(path_),
|
: base(base_), reference(std::move(reference_)), path(path_),
|
||||||
parent_path(parent_path_ ? std::move(*parent_path_) : FS::GetParentPath(path_)),
|
parent_path(FS::GetParentPath(path_)), path_components(FS::SplitPathComponentsCopy(path_)),
|
||||||
path_components(FS::SplitPathComponentsCopy(path_)), size(size_), perms(perms_) {}
|
size(size_), perms(perms_) {}
|
||||||
|
|
||||||
RealVfsFile::~RealVfsFile() {
|
RealVfsFile::~RealVfsFile() {
|
||||||
base.DropReference(std::move(reference));
|
base.DropReference(std::move(reference));
|
||||||
|
@ -350,7 +348,7 @@ std::vector<VirtualFile> RealVfsDirectory::IterateEntries<RealVfsFile, VfsFile>(
|
||||||
&out](const std::filesystem::directory_entry& entry) {
|
&out](const std::filesystem::directory_entry& entry) {
|
||||||
const auto full_path_string = FS::PathToUTF8String(entry.path());
|
const auto full_path_string = FS::PathToUTF8String(entry.path());
|
||||||
|
|
||||||
out.emplace_back(base.OpenFileFromEntry(full_path_string, entry.file_size(), path, perms));
|
out.emplace_back(base.OpenFileFromEntry(full_path_string, entry.file_size(), perms));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
|
@ -62,7 +62,6 @@ private:
|
||||||
private:
|
private:
|
||||||
friend class RealVfsDirectory;
|
friend class RealVfsDirectory;
|
||||||
VirtualFile OpenFileFromEntry(std::string_view path, std::optional<u64> size,
|
VirtualFile OpenFileFromEntry(std::string_view path, std::optional<u64> size,
|
||||||
std::optional<std::string> parent_path,
|
|
||||||
OpenMode perms = OpenMode::Read);
|
OpenMode perms = OpenMode::Read);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -92,7 +91,7 @@ public:
|
||||||
private:
|
private:
|
||||||
RealVfsFile(RealVfsFilesystem& base, std::unique_ptr<FileReference> reference,
|
RealVfsFile(RealVfsFilesystem& base, std::unique_ptr<FileReference> reference,
|
||||||
const std::string& path, OpenMode perms = OpenMode::Read,
|
const std::string& path, OpenMode perms = OpenMode::Read,
|
||||||
std::optional<u64> size = {}, std::optional<std::string> parent_path = {});
|
std::optional<u64> size = {});
|
||||||
|
|
||||||
RealVfsFilesystem& base;
|
RealVfsFilesystem& base;
|
||||||
std::unique_ptr<FileReference> reference;
|
std::unique_ptr<FileReference> reference;
|
||||||
|
|
|
@ -44,32 +44,15 @@ public:
|
||||||
GuestMemory() = delete;
|
GuestMemory() = delete;
|
||||||
explicit GuestMemory(M& memory, u64 addr, std::size_t size,
|
explicit GuestMemory(M& memory, u64 addr, std::size_t size,
|
||||||
Common::ScratchBuffer<T>* backup = nullptr)
|
Common::ScratchBuffer<T>* backup = nullptr)
|
||||||
: m_memory{&memory}, m_addr{addr}, m_size{size} {
|
: m_memory{memory}, m_addr{addr}, m_size{size} {
|
||||||
static_assert(FLAGS & GuestMemoryFlags::Read || FLAGS & GuestMemoryFlags::Write);
|
static_assert(FLAGS & GuestMemoryFlags::Read || FLAGS & GuestMemoryFlags::Write);
|
||||||
if constexpr (!(FLAGS & GuestMemoryFlags::Read)) {
|
if constexpr (FLAGS & GuestMemoryFlags::Read) {
|
||||||
if (!this->TrySetSpan()) {
|
|
||||||
if (backup) {
|
|
||||||
backup->resize_destructive(this->size());
|
|
||||||
m_data_span = *backup;
|
|
||||||
m_span_valid = true;
|
|
||||||
m_is_data_copy = true;
|
|
||||||
} else {
|
|
||||||
m_data_copy.resize(this->size());
|
|
||||||
m_data_span = std::span(m_data_copy);
|
|
||||||
m_span_valid = true;
|
|
||||||
m_is_data_copy = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if constexpr (FLAGS & GuestMemoryFlags::Read) {
|
|
||||||
Read(addr, size, backup);
|
Read(addr, size, backup);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
~GuestMemory() = default;
|
~GuestMemory() = default;
|
||||||
|
|
||||||
GuestMemory(GuestMemory&& rhs) = default;
|
|
||||||
GuestMemory& operator=(GuestMemory&& rhs) = default;
|
|
||||||
|
|
||||||
T* data() noexcept {
|
T* data() noexcept {
|
||||||
return m_data_span.data();
|
return m_data_span.data();
|
||||||
}
|
}
|
||||||
|
@ -126,8 +109,8 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this->TrySetSpan()) {
|
if (this->TrySetSpan()) {
|
||||||
if constexpr (FLAGS & GuestMemoryFlags::Safe && M::HAS_FLUSH_INVALIDATION) {
|
if constexpr (FLAGS & GuestMemoryFlags::Safe) {
|
||||||
m_memory->FlushRegion(m_addr, this->size_bytes());
|
m_memory.FlushRegion(m_addr, this->size_bytes());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (backup) {
|
if (backup) {
|
||||||
|
@ -140,9 +123,9 @@ public:
|
||||||
m_is_data_copy = true;
|
m_is_data_copy = true;
|
||||||
m_span_valid = true;
|
m_span_valid = true;
|
||||||
if constexpr (FLAGS & GuestMemoryFlags::Safe) {
|
if constexpr (FLAGS & GuestMemoryFlags::Safe) {
|
||||||
m_memory->ReadBlock(m_addr, this->data(), this->size_bytes());
|
m_memory.ReadBlock(m_addr, this->data(), this->size_bytes());
|
||||||
} else {
|
} else {
|
||||||
m_memory->ReadBlockUnsafe(m_addr, this->data(), this->size_bytes());
|
m_memory.ReadBlockUnsafe(m_addr, this->data(), this->size_bytes());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return m_data_span;
|
return m_data_span;
|
||||||
|
@ -150,19 +133,18 @@ public:
|
||||||
|
|
||||||
void Write(std::span<T> write_data) noexcept {
|
void Write(std::span<T> write_data) noexcept {
|
||||||
if constexpr (FLAGS & GuestMemoryFlags::Cached) {
|
if constexpr (FLAGS & GuestMemoryFlags::Cached) {
|
||||||
m_memory->WriteBlockCached(m_addr, write_data.data(), this->size_bytes());
|
m_memory.WriteBlockCached(m_addr, write_data.data(), this->size_bytes());
|
||||||
} else if constexpr (FLAGS & GuestMemoryFlags::Safe) {
|
} else if constexpr (FLAGS & GuestMemoryFlags::Safe) {
|
||||||
m_memory->WriteBlock(m_addr, write_data.data(), this->size_bytes());
|
m_memory.WriteBlock(m_addr, write_data.data(), this->size_bytes());
|
||||||
} else {
|
} else {
|
||||||
m_memory->WriteBlockUnsafe(m_addr, write_data.data(), this->size_bytes());
|
m_memory.WriteBlockUnsafe(m_addr, write_data.data(), this->size_bytes());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TrySetSpan() noexcept {
|
bool TrySetSpan() noexcept {
|
||||||
if (u8* ptr = m_memory->GetSpan(m_addr, this->size_bytes()); ptr) {
|
if (u8* ptr = m_memory.GetSpan(m_addr, this->size_bytes()); ptr) {
|
||||||
m_data_span = {reinterpret_cast<T*>(ptr), this->size()};
|
m_data_span = {reinterpret_cast<T*>(ptr), this->size()};
|
||||||
m_span_valid = true;
|
m_span_valid = true;
|
||||||
m_is_data_copy = false;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -177,7 +159,7 @@ protected:
|
||||||
return m_addr_changed;
|
return m_addr_changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
M* m_memory;
|
M& m_memory;
|
||||||
u64 m_addr{};
|
u64 m_addr{};
|
||||||
size_t m_size{};
|
size_t m_size{};
|
||||||
std::span<T> m_data_span{};
|
std::span<T> m_data_span{};
|
||||||
|
@ -193,7 +175,17 @@ public:
|
||||||
GuestMemoryScoped() = delete;
|
GuestMemoryScoped() = delete;
|
||||||
explicit GuestMemoryScoped(M& memory, u64 addr, std::size_t size,
|
explicit GuestMemoryScoped(M& memory, u64 addr, std::size_t size,
|
||||||
Common::ScratchBuffer<T>* backup = nullptr)
|
Common::ScratchBuffer<T>* backup = nullptr)
|
||||||
: GuestMemory<M, T, FLAGS>(memory, addr, size, backup) {}
|
: GuestMemory<M, T, FLAGS>(memory, addr, size, backup) {
|
||||||
|
if constexpr (!(FLAGS & GuestMemoryFlags::Read)) {
|
||||||
|
if (!this->TrySetSpan()) {
|
||||||
|
if (backup) {
|
||||||
|
this->m_data_span = *backup;
|
||||||
|
this->m_span_valid = true;
|
||||||
|
this->m_is_data_copy = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
~GuestMemoryScoped() {
|
~GuestMemoryScoped() {
|
||||||
if constexpr (FLAGS & GuestMemoryFlags::Write) {
|
if constexpr (FLAGS & GuestMemoryFlags::Write) {
|
||||||
|
@ -204,17 +196,15 @@ public:
|
||||||
if (this->AddressChanged() || this->IsDataCopy()) {
|
if (this->AddressChanged() || this->IsDataCopy()) {
|
||||||
ASSERT(this->m_span_valid);
|
ASSERT(this->m_span_valid);
|
||||||
if constexpr (FLAGS & GuestMemoryFlags::Cached) {
|
if constexpr (FLAGS & GuestMemoryFlags::Cached) {
|
||||||
this->m_memory->WriteBlockCached(this->m_addr, this->data(),
|
this->m_memory.WriteBlockCached(this->m_addr, this->data(), this->size_bytes());
|
||||||
this->size_bytes());
|
|
||||||
} else if constexpr (FLAGS & GuestMemoryFlags::Safe) {
|
} else if constexpr (FLAGS & GuestMemoryFlags::Safe) {
|
||||||
this->m_memory->WriteBlock(this->m_addr, this->data(), this->size_bytes());
|
this->m_memory.WriteBlock(this->m_addr, this->data(), this->size_bytes());
|
||||||
} else {
|
} else {
|
||||||
this->m_memory->WriteBlockUnsafe(this->m_addr, this->data(),
|
this->m_memory.WriteBlockUnsafe(this->m_addr, this->data(), this->size_bytes());
|
||||||
this->size_bytes());
|
|
||||||
}
|
}
|
||||||
} else if constexpr ((FLAGS & GuestMemoryFlags::Safe) ||
|
} else if constexpr ((FLAGS & GuestMemoryFlags::Safe) ||
|
||||||
(FLAGS & GuestMemoryFlags::Cached)) {
|
(FLAGS & GuestMemoryFlags::Cached)) {
|
||||||
this->m_memory->InvalidateRegion(this->m_addr, this->size_bytes());
|
this->m_memory.InvalidateRegion(this->m_addr, this->size_bytes());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1170,7 +1170,6 @@ Result KProcess::LoadFromMetadata(const FileSys::ProgramMetadata& metadata, std:
|
||||||
// Determine if we are an application.
|
// Determine if we are an application.
|
||||||
if (pool == KMemoryManager::Pool::Application) {
|
if (pool == KMemoryManager::Pool::Application) {
|
||||||
flag |= Svc::CreateProcessFlag::IsApplication;
|
flag |= Svc::CreateProcessFlag::IsApplication;
|
||||||
m_is_application = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we are 64-bit, create as such.
|
// If we are 64-bit, create as such.
|
||||||
|
|
|
@ -2,26 +2,19 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include "core/hle/service/am/am.h"
|
#include "core/hle/service/am/am.h"
|
||||||
#include "core/hle/service/am/button_poller.h"
|
|
||||||
#include "core/hle/service/am/event_observer.h"
|
|
||||||
#include "core/hle/service/am/service/all_system_applet_proxies_service.h"
|
#include "core/hle/service/am/service/all_system_applet_proxies_service.h"
|
||||||
#include "core/hle/service/am/service/application_proxy_service.h"
|
#include "core/hle/service/am/service/application_proxy_service.h"
|
||||||
#include "core/hle/service/am/window_system.h"
|
|
||||||
#include "core/hle/service/server_manager.h"
|
#include "core/hle/service/server_manager.h"
|
||||||
|
|
||||||
namespace Service::AM {
|
namespace Service::AM {
|
||||||
|
|
||||||
void LoopProcess(Core::System& system) {
|
void LoopProcess(Core::System& system) {
|
||||||
WindowSystem window_system(system);
|
|
||||||
ButtonPoller button_poller(system, window_system);
|
|
||||||
EventObserver event_observer(system, window_system);
|
|
||||||
|
|
||||||
auto server_manager = std::make_unique<ServerManager>(system);
|
auto server_manager = std::make_unique<ServerManager>(system);
|
||||||
|
|
||||||
server_manager->RegisterNamedService(
|
server_manager->RegisterNamedService("appletAE",
|
||||||
"appletAE", std::make_shared<IAllSystemAppletProxiesService>(system, window_system));
|
std::make_shared<IAllSystemAppletProxiesService>(system));
|
||||||
server_manager->RegisterNamedService(
|
server_manager->RegisterNamedService("appletOE",
|
||||||
"appletOE", std::make_shared<IApplicationProxyService>(system, window_system));
|
std::make_shared<IApplicationProxyService>(system));
|
||||||
ServerManager::RunServer(std::move(server_manager));
|
ServerManager::RunServer(std::move(server_manager));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,6 @@ namespace Service::AM {
|
||||||
|
|
||||||
constexpr Result ResultNoDataInChannel{ErrorModule::AM, 2};
|
constexpr Result ResultNoDataInChannel{ErrorModule::AM, 2};
|
||||||
constexpr Result ResultNoMessages{ErrorModule::AM, 3};
|
constexpr Result ResultNoMessages{ErrorModule::AM, 3};
|
||||||
constexpr Result ResultLibraryAppletTerminated{ErrorModule::AM, 22};
|
|
||||||
constexpr Result ResultInvalidOffset{ErrorModule::AM, 503};
|
constexpr Result ResultInvalidOffset{ErrorModule::AM, 503};
|
||||||
constexpr Result ResultInvalidStorageType{ErrorModule::AM, 511};
|
constexpr Result ResultInvalidStorageType{ErrorModule::AM, 511};
|
||||||
constexpr Result ResultFatalSectionCountImbalance{ErrorModule::AM, 512};
|
constexpr Result ResultFatalSectionCountImbalance{ErrorModule::AM, 512};
|
||||||
|
|
|
@ -61,6 +61,12 @@ enum class ScreenshotPermission : u32 {
|
||||||
Disable = 2,
|
Disable = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct FocusHandlingMode {
|
||||||
|
bool notify;
|
||||||
|
bool background;
|
||||||
|
bool suspend;
|
||||||
|
};
|
||||||
|
|
||||||
enum class IdleTimeDetectionExtension : u32 {
|
enum class IdleTimeDetectionExtension : u32 {
|
||||||
Disabled = 0,
|
Disabled = 0,
|
||||||
Extended = 1,
|
Extended = 1,
|
||||||
|
@ -233,6 +239,7 @@ struct ApplicationPlayStatistics {
|
||||||
static_assert(sizeof(ApplicationPlayStatistics) == 0x18,
|
static_assert(sizeof(ApplicationPlayStatistics) == 0x18,
|
||||||
"ApplicationPlayStatistics has incorrect size.");
|
"ApplicationPlayStatistics has incorrect size.");
|
||||||
|
|
||||||
|
using AppletResourceUserId = u64;
|
||||||
using ProgramId = u64;
|
using ProgramId = u64;
|
||||||
|
|
||||||
struct Applet;
|
struct Applet;
|
||||||
|
|
|
@ -1,71 +1,27 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#include "common/scope_exit.h"
|
||||||
|
|
||||||
#include "core/core.h"
|
#include "core/core.h"
|
||||||
|
#include "core/hle/service/am/am_results.h"
|
||||||
#include "core/hle/service/am/applet.h"
|
#include "core/hle/service/am/applet.h"
|
||||||
#include "core/hle/service/am/applet_manager.h"
|
#include "core/hle/service/am/applet_manager.h"
|
||||||
|
|
||||||
namespace Service::AM {
|
namespace Service::AM {
|
||||||
|
|
||||||
Applet::Applet(Core::System& system, std::unique_ptr<Process> process_, bool is_application)
|
Applet::Applet(Core::System& system, std::unique_ptr<Process> process_)
|
||||||
: context(system, "Applet"), lifecycle_manager(system, context, is_application),
|
: context(system, "Applet"), message_queue(system), process(std::move(process_)),
|
||||||
process(std::move(process_)), hid_registration(system, *process),
|
hid_registration(system, *process), gpu_error_detected_event(context),
|
||||||
gpu_error_detected_event(context), friend_invitation_storage_channel_event(context),
|
friend_invitation_storage_channel_event(context), notification_storage_channel_event(context),
|
||||||
notification_storage_channel_event(context), health_warning_disappeared_system_event(context),
|
health_warning_disappeared_system_event(context), acquired_sleep_lock_event(context),
|
||||||
acquired_sleep_lock_event(context), pop_from_general_channel_event(context),
|
pop_from_general_channel_event(context), library_applet_launchable_event(context),
|
||||||
library_applet_launchable_event(context), accumulated_suspended_tick_changed_event(context),
|
accumulated_suspended_tick_changed_event(context), sleep_lock_event(context) {
|
||||||
sleep_lock_event(context), state_changed_event(context) {
|
|
||||||
|
|
||||||
aruid.pid = process->GetProcessId();
|
aruid = process->GetProcessId();
|
||||||
program_id = process->GetProgramId();
|
program_id = process->GetProgramId();
|
||||||
}
|
}
|
||||||
|
|
||||||
Applet::~Applet() = default;
|
Applet::~Applet() = default;
|
||||||
|
|
||||||
void Applet::UpdateSuspensionStateLocked(bool force_message) {
|
|
||||||
// Remove any forced resumption.
|
|
||||||
lifecycle_manager.RemoveForceResumeIfPossible();
|
|
||||||
|
|
||||||
// Check if we're runnable.
|
|
||||||
const bool curr_activity_runnable = lifecycle_manager.IsRunnable();
|
|
||||||
const bool prev_activity_runnable = is_activity_runnable;
|
|
||||||
const bool was_changed = curr_activity_runnable != prev_activity_runnable;
|
|
||||||
|
|
||||||
if (was_changed) {
|
|
||||||
if (curr_activity_runnable) {
|
|
||||||
process->Suspend(false);
|
|
||||||
} else {
|
|
||||||
process->Suspend(true);
|
|
||||||
lifecycle_manager.RequestResumeNotification();
|
|
||||||
}
|
|
||||||
|
|
||||||
is_activity_runnable = curr_activity_runnable;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (lifecycle_manager.GetForcedSuspend()) {
|
|
||||||
// TODO: why is this allowed?
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Signal if the focus state was changed or the process state was changed.
|
|
||||||
if (lifecycle_manager.UpdateRequestedFocusState() || was_changed || force_message) {
|
|
||||||
lifecycle_manager.SignalSystemEventIfNeeded();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Applet::SetInteractibleLocked(bool interactible) {
|
|
||||||
if (is_interactible == interactible) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
is_interactible = interactible;
|
|
||||||
|
|
||||||
hid_registration.EnableAppletToGetInput(interactible && !lifecycle_manager.GetExitRequested());
|
|
||||||
}
|
|
||||||
|
|
||||||
void Applet::OnProcessTerminatedLocked() {
|
|
||||||
is_completed = true;
|
|
||||||
state_changed_event.Signal();
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Service::AM
|
} // namespace Service::AM
|
||||||
|
|
|
@ -3,28 +3,25 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <deque>
|
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
|
||||||
#include "common/math_util.h"
|
#include "common/math_util.h"
|
||||||
#include "core/hle/service/apm/apm_controller.h"
|
#include "core/hle/service/apm/apm_controller.h"
|
||||||
#include "core/hle/service/caps/caps_types.h"
|
#include "core/hle/service/caps/caps_types.h"
|
||||||
#include "core/hle/service/cmif_types.h"
|
|
||||||
#include "core/hle/service/kernel_helpers.h"
|
#include "core/hle/service/kernel_helpers.h"
|
||||||
#include "core/hle/service/os/event.h"
|
#include "core/hle/service/os/event.h"
|
||||||
#include "core/hle/service/os/process.h"
|
|
||||||
#include "core/hle/service/service.h"
|
#include "core/hle/service/service.h"
|
||||||
|
|
||||||
#include "core/hle/service/am/am_types.h"
|
#include "core/hle/service/am/am_types.h"
|
||||||
|
#include "core/hle/service/am/applet_message_queue.h"
|
||||||
#include "core/hle/service/am/display_layer_manager.h"
|
#include "core/hle/service/am/display_layer_manager.h"
|
||||||
#include "core/hle/service/am/hid_registration.h"
|
#include "core/hle/service/am/hid_registration.h"
|
||||||
#include "core/hle/service/am/lifecycle_manager.h"
|
#include "core/hle/service/am/process.h"
|
||||||
#include "core/hle/service/am/process_holder.h"
|
|
||||||
|
|
||||||
namespace Service::AM {
|
namespace Service::AM {
|
||||||
|
|
||||||
struct Applet {
|
struct Applet {
|
||||||
explicit Applet(Core::System& system, std::unique_ptr<Process> process_, bool is_application);
|
explicit Applet(Core::System& system, std::unique_ptr<Process> process_);
|
||||||
~Applet();
|
~Applet();
|
||||||
|
|
||||||
// Lock
|
// Lock
|
||||||
|
@ -33,13 +30,11 @@ struct Applet {
|
||||||
// Event creation helper
|
// Event creation helper
|
||||||
KernelHelpers::ServiceContext context;
|
KernelHelpers::ServiceContext context;
|
||||||
|
|
||||||
// Lifecycle manager
|
// Applet message queue
|
||||||
LifecycleManager lifecycle_manager;
|
AppletMessageQueue message_queue;
|
||||||
|
|
||||||
// Process
|
// Process
|
||||||
std::unique_ptr<Process> process;
|
std::unique_ptr<Process> process;
|
||||||
std::optional<ProcessHolder> process_holder;
|
|
||||||
bool is_process_running{};
|
|
||||||
|
|
||||||
// Creation state
|
// Creation state
|
||||||
AppletId applet_id{};
|
AppletId applet_id{};
|
||||||
|
@ -80,9 +75,11 @@ struct Applet {
|
||||||
bool game_play_recording_supported{};
|
bool game_play_recording_supported{};
|
||||||
GamePlayRecordingState game_play_recording_state{GamePlayRecordingState::Disabled};
|
GamePlayRecordingState game_play_recording_state{GamePlayRecordingState::Disabled};
|
||||||
bool jit_service_launched{};
|
bool jit_service_launched{};
|
||||||
|
bool is_running{};
|
||||||
bool application_crash_report_enabled{};
|
bool application_crash_report_enabled{};
|
||||||
|
|
||||||
// Common state
|
// Common state
|
||||||
|
FocusState focus_state{};
|
||||||
bool sleep_lock_enabled{};
|
bool sleep_lock_enabled{};
|
||||||
bool vr_mode_enabled{};
|
bool vr_mode_enabled{};
|
||||||
bool lcd_backlight_off_enabled{};
|
bool lcd_backlight_off_enabled{};
|
||||||
|
@ -96,12 +93,15 @@ struct Applet {
|
||||||
// Caller applet
|
// Caller applet
|
||||||
std::weak_ptr<Applet> caller_applet{};
|
std::weak_ptr<Applet> caller_applet{};
|
||||||
std::shared_ptr<AppletDataBroker> caller_applet_broker{};
|
std::shared_ptr<AppletDataBroker> caller_applet_broker{};
|
||||||
std::list<std::shared_ptr<Applet>> child_applets{};
|
|
||||||
bool is_completed{};
|
|
||||||
|
|
||||||
// Self state
|
// Self state
|
||||||
bool exit_locked{};
|
bool exit_locked{};
|
||||||
s32 fatal_section_count{};
|
s32 fatal_section_count{};
|
||||||
|
bool operation_mode_changed_notification_enabled{true};
|
||||||
|
bool performance_mode_changed_notification_enabled{true};
|
||||||
|
FocusHandlingMode focus_handling_mode{};
|
||||||
|
bool restart_message_enabled{};
|
||||||
|
bool out_of_focus_suspension_enabled{true};
|
||||||
Capture::AlbumImageOrientation album_image_orientation{};
|
Capture::AlbumImageOrientation album_image_orientation{};
|
||||||
bool handles_request_to_display{};
|
bool handles_request_to_display{};
|
||||||
ScreenshotPermission screenshot_permission{};
|
ScreenshotPermission screenshot_permission{};
|
||||||
|
@ -110,9 +110,6 @@ struct Applet {
|
||||||
u64 suspended_ticks{};
|
u64 suspended_ticks{};
|
||||||
bool album_image_taken_notification_enabled{};
|
bool album_image_taken_notification_enabled{};
|
||||||
bool record_volume_muted{};
|
bool record_volume_muted{};
|
||||||
bool is_activity_runnable{};
|
|
||||||
bool is_interactible{true};
|
|
||||||
bool window_visible{true};
|
|
||||||
|
|
||||||
// Events
|
// Events
|
||||||
Event gpu_error_detected_event;
|
Event gpu_error_detected_event;
|
||||||
|
@ -124,15 +121,9 @@ struct Applet {
|
||||||
Event library_applet_launchable_event;
|
Event library_applet_launchable_event;
|
||||||
Event accumulated_suspended_tick_changed_event;
|
Event accumulated_suspended_tick_changed_event;
|
||||||
Event sleep_lock_event;
|
Event sleep_lock_event;
|
||||||
Event state_changed_event;
|
|
||||||
|
|
||||||
// Frontend state
|
// Frontend state
|
||||||
std::shared_ptr<Frontend::FrontendApplet> frontend{};
|
std::shared_ptr<Frontend::FrontendApplet> frontend{};
|
||||||
|
|
||||||
// Process state management
|
|
||||||
void UpdateSuspensionStateLocked(bool force_message);
|
|
||||||
void SetInteractibleLocked(bool interactible);
|
|
||||||
void OnProcessTerminatedLocked();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Service::AM
|
} // namespace Service::AM
|
||||||
|
|
|
@ -44,8 +44,24 @@ Kernel::KReadableEvent* AppletStorageChannel::GetEvent() {
|
||||||
|
|
||||||
AppletDataBroker::AppletDataBroker(Core::System& system_)
|
AppletDataBroker::AppletDataBroker(Core::System& system_)
|
||||||
: system(system_), context(system_, "AppletDataBroker"), in_data(context),
|
: system(system_), context(system_, "AppletDataBroker"), in_data(context),
|
||||||
interactive_in_data(context), out_data(context), interactive_out_data(context) {}
|
interactive_in_data(context), out_data(context), interactive_out_data(context),
|
||||||
|
state_changed_event(context), is_completed(false) {}
|
||||||
|
|
||||||
AppletDataBroker::~AppletDataBroker() = default;
|
AppletDataBroker::~AppletDataBroker() = default;
|
||||||
|
|
||||||
|
void AppletDataBroker::SignalCompletion() {
|
||||||
|
{
|
||||||
|
std::scoped_lock lk{lock};
|
||||||
|
|
||||||
|
if (is_completed) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
is_completed = true;
|
||||||
|
state_changed_event.Signal();
|
||||||
|
}
|
||||||
|
|
||||||
|
system.GetAppletManager().FocusStateChanged();
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Service::AM
|
} // namespace Service::AM
|
||||||
|
|
|
@ -53,6 +53,16 @@ public:
|
||||||
return interactive_out_data;
|
return interactive_out_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Event& GetStateChangedEvent() {
|
||||||
|
return state_changed_event;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsCompleted() const {
|
||||||
|
return is_completed;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SignalCompletion();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Core::System& system;
|
Core::System& system;
|
||||||
KernelHelpers::ServiceContext context;
|
KernelHelpers::ServiceContext context;
|
||||||
|
@ -61,6 +71,10 @@ private:
|
||||||
AppletStorageChannel interactive_in_data;
|
AppletStorageChannel interactive_in_data;
|
||||||
AppletStorageChannel out_data;
|
AppletStorageChannel out_data;
|
||||||
AppletStorageChannel interactive_out_data;
|
AppletStorageChannel interactive_out_data;
|
||||||
|
Event state_changed_event;
|
||||||
|
|
||||||
|
std::mutex lock;
|
||||||
|
bool is_completed;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Service::AM
|
} // namespace Service::AM
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
#include "core/hle/service/am/frontend/applet_mii_edit_types.h"
|
#include "core/hle/service/am/frontend/applet_mii_edit_types.h"
|
||||||
#include "core/hle/service/am/frontend/applet_software_keyboard_types.h"
|
#include "core/hle/service/am/frontend/applet_software_keyboard_types.h"
|
||||||
#include "core/hle/service/am/service/storage.h"
|
#include "core/hle/service/am/service/storage.h"
|
||||||
#include "core/hle/service/am/window_system.h"
|
|
||||||
#include "hid_core/hid_types.h"
|
#include "hid_core/hid_types.h"
|
||||||
|
|
||||||
namespace Service::AM {
|
namespace Service::AM {
|
||||||
|
@ -226,46 +225,49 @@ void PushInShowSoftwareKeyboard(Core::System& system, AppletStorageChannel& chan
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
AppletManager::AppletManager(Core::System& system) : m_system(system) {}
|
AppletManager::AppletManager(Core::System& system) : m_system(system) {}
|
||||||
AppletManager::~AppletManager() = default;
|
AppletManager::~AppletManager() {
|
||||||
|
this->Reset();
|
||||||
|
}
|
||||||
|
|
||||||
void AppletManager::CreateAndInsertByFrontendAppletParameters(
|
void AppletManager::InsertApplet(std::shared_ptr<Applet> applet) {
|
||||||
std::unique_ptr<Process> process, const FrontendAppletParameters& params) {
|
std::scoped_lock lk{m_lock};
|
||||||
|
|
||||||
|
m_applets.emplace(applet->aruid, std::move(applet));
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppletManager::TerminateAndRemoveApplet(AppletResourceUserId aruid) {
|
||||||
|
std::shared_ptr<Applet> applet;
|
||||||
|
bool should_stop = false;
|
||||||
{
|
{
|
||||||
std::scoped_lock lk{m_lock};
|
std::scoped_lock lk{m_lock};
|
||||||
m_pending_process = std::move(process);
|
|
||||||
m_pending_parameters = params;
|
|
||||||
}
|
|
||||||
m_cv.notify_all();
|
|
||||||
}
|
|
||||||
|
|
||||||
void AppletManager::RequestExit() {
|
const auto it = m_applets.find(aruid);
|
||||||
std::scoped_lock lk{m_lock};
|
if (it == m_applets.end()) {
|
||||||
if (m_window_system) {
|
|
||||||
m_window_system->OnExitRequested();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void AppletManager::OperationModeChanged() {
|
|
||||||
std::scoped_lock lk{m_lock};
|
|
||||||
if (m_window_system) {
|
|
||||||
m_window_system->OnOperationModeChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void AppletManager::SetWindowSystem(WindowSystem* window_system) {
|
|
||||||
std::unique_lock lk{m_lock};
|
|
||||||
|
|
||||||
m_window_system = window_system;
|
|
||||||
if (!m_window_system) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_cv.wait(lk, [&] { return m_pending_process != nullptr; });
|
applet = it->second;
|
||||||
|
m_applets.erase(it);
|
||||||
|
|
||||||
const auto& params = m_pending_parameters;
|
should_stop = m_applets.empty();
|
||||||
auto applet = std::make_shared<Applet>(m_system, std::move(m_pending_process),
|
}
|
||||||
params.applet_id == AppletId::Application);
|
|
||||||
|
|
||||||
|
// Terminate process.
|
||||||
|
applet->process->Terminate();
|
||||||
|
|
||||||
|
// If there were no applets left, stop emulation.
|
||||||
|
if (should_stop) {
|
||||||
|
m_system.Exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppletManager::CreateAndInsertByFrontendAppletParameters(
|
||||||
|
AppletResourceUserId aruid, const FrontendAppletParameters& params) {
|
||||||
|
// TODO: this should be run inside AM so that the events will have a parent process
|
||||||
|
// TODO: have am create the guest process
|
||||||
|
auto applet = std::make_shared<Applet>(m_system, std::make_unique<Process>(m_system));
|
||||||
|
|
||||||
|
applet->aruid = aruid;
|
||||||
applet->program_id = params.program_id;
|
applet->program_id = params.program_id;
|
||||||
applet->applet_id = params.applet_id;
|
applet->applet_id = params.applet_id;
|
||||||
applet->type = params.applet_type;
|
applet->type = params.applet_type;
|
||||||
|
@ -320,19 +322,59 @@ void AppletManager::SetWindowSystem(WindowSystem* window_system) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Applet was started by frontend, so it is foreground.
|
// Applet was started by frontend, so it is foreground.
|
||||||
applet->lifecycle_manager.SetFocusState(FocusState::InFocus);
|
applet->message_queue.PushMessage(AppletMessage::ChangeIntoForeground);
|
||||||
|
applet->message_queue.PushMessage(AppletMessage::FocusStateChanged);
|
||||||
|
applet->focus_state = FocusState::InFocus;
|
||||||
|
|
||||||
if (applet->applet_id == AppletId::QLaunch) {
|
this->InsertApplet(std::move(applet));
|
||||||
applet->lifecycle_manager.SetFocusHandlingMode(false);
|
}
|
||||||
applet->lifecycle_manager.SetOutOfFocusSuspendingEnabled(false);
|
|
||||||
m_window_system->TrackApplet(applet, false);
|
std::shared_ptr<Applet> AppletManager::GetByAppletResourceUserId(AppletResourceUserId aruid) const {
|
||||||
m_window_system->RequestHomeMenuToGetForeground();
|
std::scoped_lock lk{m_lock};
|
||||||
} else {
|
|
||||||
m_window_system->TrackApplet(applet, true);
|
if (const auto it = m_applets.find(aruid); it != m_applets.end()) {
|
||||||
m_window_system->RequestApplicationToGetForeground();
|
return it->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
applet->process->Run();
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppletManager::Reset() {
|
||||||
|
std::scoped_lock lk{m_lock};
|
||||||
|
|
||||||
|
m_applets.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppletManager::RequestExit() {
|
||||||
|
std::scoped_lock lk{m_lock};
|
||||||
|
|
||||||
|
for (const auto& [aruid, applet] : m_applets) {
|
||||||
|
applet->message_queue.RequestExit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppletManager::RequestResume() {
|
||||||
|
std::scoped_lock lk{m_lock};
|
||||||
|
|
||||||
|
for (const auto& [aruid, applet] : m_applets) {
|
||||||
|
applet->message_queue.RequestResume();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppletManager::OperationModeChanged() {
|
||||||
|
std::scoped_lock lk{m_lock};
|
||||||
|
|
||||||
|
for (const auto& [aruid, applet] : m_applets) {
|
||||||
|
applet->message_queue.OperationModeChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppletManager::FocusStateChanged() {
|
||||||
|
std::scoped_lock lk{m_lock};
|
||||||
|
|
||||||
|
for (const auto& [aruid, applet] : m_applets) {
|
||||||
|
applet->message_queue.FocusStateChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Service::AM
|
} // namespace Service::AM
|
||||||
|
|
|
@ -3,23 +3,17 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <condition_variable>
|
#include <map>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
|
||||||
#include "core/hle/service/am/am_types.h"
|
#include "core/hle/service/am/applet.h"
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
class System;
|
class System;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Service {
|
|
||||||
class Process;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace Service::AM {
|
namespace Service::AM {
|
||||||
|
|
||||||
class WindowSystem;
|
|
||||||
|
|
||||||
enum class LaunchType {
|
enum class LaunchType {
|
||||||
FrontendInitiated,
|
FrontendInitiated,
|
||||||
ApplicationInitiated,
|
ApplicationInitiated,
|
||||||
|
@ -39,24 +33,27 @@ public:
|
||||||
explicit AppletManager(Core::System& system);
|
explicit AppletManager(Core::System& system);
|
||||||
~AppletManager();
|
~AppletManager();
|
||||||
|
|
||||||
void CreateAndInsertByFrontendAppletParameters(std::unique_ptr<Process> process,
|
void InsertApplet(std::shared_ptr<Applet> applet);
|
||||||
const FrontendAppletParameters& params);
|
void TerminateAndRemoveApplet(AppletResourceUserId aruid);
|
||||||
void RequestExit();
|
|
||||||
void OperationModeChanged();
|
|
||||||
|
|
||||||
public:
|
void CreateAndInsertByFrontendAppletParameters(AppletResourceUserId aruid,
|
||||||
void SetWindowSystem(WindowSystem* window_system);
|
const FrontendAppletParameters& params);
|
||||||
|
std::shared_ptr<Applet> GetByAppletResourceUserId(AppletResourceUserId aruid) const;
|
||||||
|
|
||||||
|
void Reset();
|
||||||
|
|
||||||
|
void RequestExit();
|
||||||
|
void RequestResume();
|
||||||
|
void OperationModeChanged();
|
||||||
|
void FocusStateChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Core::System& m_system;
|
Core::System& m_system;
|
||||||
|
|
||||||
std::mutex m_lock;
|
mutable std::mutex m_lock{};
|
||||||
std::condition_variable m_cv;
|
std::map<AppletResourceUserId, std::shared_ptr<Applet>> m_applets{};
|
||||||
|
|
||||||
WindowSystem* m_window_system{};
|
// AudioController state goes here
|
||||||
|
|
||||||
FrontendAppletParameters m_pending_parameters{};
|
|
||||||
std::unique_ptr<Process> m_pending_process{};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Service::AM
|
} // namespace Service::AM
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#include "core/hle/service/am/applet_message_queue.h"
|
||||||
|
#include "core/hle/service/ipc_helpers.h"
|
||||||
|
|
||||||
|
namespace Service::AM {
|
||||||
|
|
||||||
|
AppletMessageQueue::AppletMessageQueue(Core::System& system)
|
||||||
|
: service_context{system, "AppletMessageQueue"} {
|
||||||
|
on_new_message = service_context.CreateEvent("AMMessageQueue:OnMessageReceived");
|
||||||
|
on_operation_mode_changed = service_context.CreateEvent("AMMessageQueue:OperationModeChanged");
|
||||||
|
}
|
||||||
|
|
||||||
|
AppletMessageQueue::~AppletMessageQueue() {
|
||||||
|
service_context.CloseEvent(on_new_message);
|
||||||
|
service_context.CloseEvent(on_operation_mode_changed);
|
||||||
|
}
|
||||||
|
|
||||||
|
Kernel::KReadableEvent& AppletMessageQueue::GetMessageReceiveEvent() {
|
||||||
|
return on_new_message->GetReadableEvent();
|
||||||
|
}
|
||||||
|
|
||||||
|
Kernel::KReadableEvent& AppletMessageQueue::GetOperationModeChangedEvent() {
|
||||||
|
return on_operation_mode_changed->GetReadableEvent();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppletMessageQueue::PushMessage(AppletMessage msg) {
|
||||||
|
{
|
||||||
|
std::scoped_lock lk{lock};
|
||||||
|
messages.push(msg);
|
||||||
|
}
|
||||||
|
on_new_message->Signal();
|
||||||
|
}
|
||||||
|
|
||||||
|
AppletMessage AppletMessageQueue::PopMessage() {
|
||||||
|
std::scoped_lock lk{lock};
|
||||||
|
if (messages.empty()) {
|
||||||
|
on_new_message->Clear();
|
||||||
|
return AppletMessage::None;
|
||||||
|
}
|
||||||
|
auto msg = messages.front();
|
||||||
|
messages.pop();
|
||||||
|
if (messages.empty()) {
|
||||||
|
on_new_message->Clear();
|
||||||
|
}
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::size_t AppletMessageQueue::GetMessageCount() const {
|
||||||
|
std::scoped_lock lk{lock};
|
||||||
|
return messages.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppletMessageQueue::RequestExit() {
|
||||||
|
PushMessage(AppletMessage::Exit);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppletMessageQueue::RequestResume() {
|
||||||
|
PushMessage(AppletMessage::Resume);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppletMessageQueue::FocusStateChanged() {
|
||||||
|
PushMessage(AppletMessage::FocusStateChanged);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppletMessageQueue::OperationModeChanged() {
|
||||||
|
PushMessage(AppletMessage::OperationModeChanged);
|
||||||
|
PushMessage(AppletMessage::PerformanceModeChanged);
|
||||||
|
on_operation_mode_changed->Signal();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace Service::AM
|
|
@ -0,0 +1,43 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <queue>
|
||||||
|
|
||||||
|
#include "core/hle/service/am/am_types.h"
|
||||||
|
#include "core/hle/service/kernel_helpers.h"
|
||||||
|
#include "core/hle/service/service.h"
|
||||||
|
|
||||||
|
namespace Kernel {
|
||||||
|
class KReadableEvent;
|
||||||
|
} // namespace Kernel
|
||||||
|
|
||||||
|
namespace Service::AM {
|
||||||
|
|
||||||
|
class AppletMessageQueue {
|
||||||
|
public:
|
||||||
|
explicit AppletMessageQueue(Core::System& system);
|
||||||
|
~AppletMessageQueue();
|
||||||
|
|
||||||
|
Kernel::KReadableEvent& GetMessageReceiveEvent();
|
||||||
|
Kernel::KReadableEvent& GetOperationModeChangedEvent();
|
||||||
|
void PushMessage(AppletMessage msg);
|
||||||
|
AppletMessage PopMessage();
|
||||||
|
std::size_t GetMessageCount() const;
|
||||||
|
void RequestExit();
|
||||||
|
void RequestResume();
|
||||||
|
void FocusStateChanged();
|
||||||
|
void OperationModeChanged();
|
||||||
|
|
||||||
|
private:
|
||||||
|
KernelHelpers::ServiceContext service_context;
|
||||||
|
|
||||||
|
Kernel::KEvent* on_new_message;
|
||||||
|
Kernel::KEvent* on_operation_mode_changed;
|
||||||
|
|
||||||
|
mutable std::mutex lock;
|
||||||
|
std::queue<AppletMessage> messages;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace Service::AM
|
|
@ -1,89 +0,0 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
#include "core/core.h"
|
|
||||||
#include "core/hle/service/am/button_poller.h"
|
|
||||||
#include "core/hle/service/am/window_system.h"
|
|
||||||
#include "hid_core/frontend/emulated_controller.h"
|
|
||||||
#include "hid_core/hid_core.h"
|
|
||||||
#include "hid_core/hid_types.h"
|
|
||||||
|
|
||||||
namespace Service::AM {
|
|
||||||
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
ButtonPressDuration ClassifyPressDuration(std::chrono::steady_clock::time_point start) {
|
|
||||||
using namespace std::chrono_literals;
|
|
||||||
|
|
||||||
const auto dur = std::chrono::steady_clock::now() - start;
|
|
||||||
|
|
||||||
// TODO: determine actual thresholds
|
|
||||||
// TODO: these are likely different for each button
|
|
||||||
if (dur < 500ms) {
|
|
||||||
return ButtonPressDuration::ShortPressing;
|
|
||||||
} else if (dur < 1000ms) {
|
|
||||||
return ButtonPressDuration::MiddlePressing;
|
|
||||||
} else {
|
|
||||||
return ButtonPressDuration::LongPressing;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace
|
|
||||||
|
|
||||||
ButtonPoller::ButtonPoller(Core::System& system, WindowSystem& window_system)
|
|
||||||
: m_window_system(window_system) {
|
|
||||||
// TODO: am reads this from the home button state in hid, which is controller-agnostic.
|
|
||||||
Core::HID::ControllerUpdateCallback engine_callback{
|
|
||||||
.on_change =
|
|
||||||
[this](Core::HID::ControllerTriggerType type) {
|
|
||||||
if (type == Core::HID::ControllerTriggerType::Button) {
|
|
||||||
this->OnButtonStateChanged();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
.is_npad_service = true,
|
|
||||||
};
|
|
||||||
|
|
||||||
m_handheld = system.HIDCore().GetEmulatedController(Core::HID::NpadIdType::Handheld);
|
|
||||||
m_handheld_key = m_handheld->SetCallback(engine_callback);
|
|
||||||
m_player1 = system.HIDCore().GetEmulatedController(Core::HID::NpadIdType::Player1);
|
|
||||||
m_player1_key = m_player1->SetCallback(engine_callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
ButtonPoller::~ButtonPoller() {
|
|
||||||
m_handheld->DeleteCallback(m_handheld_key);
|
|
||||||
m_player1->DeleteCallback(m_player1_key);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ButtonPoller::OnButtonStateChanged() {
|
|
||||||
const bool home_button =
|
|
||||||
m_handheld->GetHomeButtons().home.Value() || m_player1->GetHomeButtons().home.Value();
|
|
||||||
const bool capture_button = m_handheld->GetCaptureButtons().capture.Value() ||
|
|
||||||
m_player1->GetCaptureButtons().capture.Value();
|
|
||||||
|
|
||||||
// Buttons pressed which were not previously pressed
|
|
||||||
if (home_button && !m_home_button_press_start) {
|
|
||||||
m_home_button_press_start = std::chrono::steady_clock::now();
|
|
||||||
}
|
|
||||||
if (capture_button && !m_capture_button_press_start) {
|
|
||||||
m_capture_button_press_start = std::chrono::steady_clock::now();
|
|
||||||
}
|
|
||||||
// if (power_button && !m_power_button_press_start) {
|
|
||||||
// m_power_button_press_start = std::chrono::steady_clock::now();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// Buttons released which were previously held
|
|
||||||
if (!home_button && m_home_button_press_start) {
|
|
||||||
m_window_system.OnHomeButtonPressed(ClassifyPressDuration(*m_home_button_press_start));
|
|
||||||
m_home_button_press_start = std::nullopt;
|
|
||||||
}
|
|
||||||
if (!capture_button && m_capture_button_press_start) {
|
|
||||||
// TODO
|
|
||||||
m_capture_button_press_start = std::nullopt;
|
|
||||||
}
|
|
||||||
// if (!power_button && m_power_button_press_start) {
|
|
||||||
// // TODO
|
|
||||||
// m_power_button_press_start = std::nullopt;
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Service::AM
|
|
|
@ -1,43 +0,0 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <chrono>
|
|
||||||
#include <optional>
|
|
||||||
#include "hid_core/frontend/emulated_controller.h"
|
|
||||||
|
|
||||||
namespace Core {
|
|
||||||
namespace HID {
|
|
||||||
class EmulatedController;
|
|
||||||
}
|
|
||||||
|
|
||||||
class System;
|
|
||||||
} // namespace Core
|
|
||||||
|
|
||||||
namespace Service::AM {
|
|
||||||
|
|
||||||
class WindowSystem;
|
|
||||||
|
|
||||||
class ButtonPoller {
|
|
||||||
public:
|
|
||||||
explicit ButtonPoller(Core::System& system, WindowSystem& window_system);
|
|
||||||
~ButtonPoller();
|
|
||||||
|
|
||||||
private:
|
|
||||||
void OnButtonStateChanged();
|
|
||||||
|
|
||||||
private:
|
|
||||||
WindowSystem& m_window_system;
|
|
||||||
|
|
||||||
Core::HID::EmulatedController* m_handheld{};
|
|
||||||
int m_handheld_key{};
|
|
||||||
Core::HID::EmulatedController* m_player1{};
|
|
||||||
int m_player1_key{};
|
|
||||||
|
|
||||||
std::optional<std::chrono::steady_clock::time_point> m_home_button_press_start{};
|
|
||||||
std::optional<std::chrono::steady_clock::time_point> m_capture_button_press_start{};
|
|
||||||
std::optional<std::chrono::steady_clock::time_point> m_power_button_press_start{};
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Service::AM
|
|
|
@ -1,162 +0,0 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
#include "core/core.h"
|
|
||||||
#include "core/hle/kernel/k_event.h"
|
|
||||||
#include "core/hle/service/am/applet.h"
|
|
||||||
#include "core/hle/service/am/event_observer.h"
|
|
||||||
#include "core/hle/service/am/window_system.h"
|
|
||||||
|
|
||||||
namespace Service::AM {
|
|
||||||
|
|
||||||
enum class UserDataTag : u32 {
|
|
||||||
WakeupEvent,
|
|
||||||
AppletProcess,
|
|
||||||
};
|
|
||||||
|
|
||||||
EventObserver::EventObserver(Core::System& system, WindowSystem& window_system)
|
|
||||||
: m_system(system), m_context(system, "am:EventObserver"), m_window_system(window_system),
|
|
||||||
m_wakeup_event(m_context), m_wakeup_holder(m_wakeup_event.GetHandle()) {
|
|
||||||
m_window_system.SetEventObserver(this);
|
|
||||||
m_wakeup_holder.SetUserData(static_cast<uintptr_t>(UserDataTag::WakeupEvent));
|
|
||||||
m_wakeup_holder.LinkToMultiWait(std::addressof(m_multi_wait));
|
|
||||||
m_thread = std::thread([&] { this->ThreadFunc(); });
|
|
||||||
}
|
|
||||||
|
|
||||||
EventObserver::~EventObserver() {
|
|
||||||
// Signal thread and wait for processing to finish.
|
|
||||||
m_stop_source.request_stop();
|
|
||||||
m_wakeup_event.Signal();
|
|
||||||
m_thread.join();
|
|
||||||
|
|
||||||
// Free remaining owned sessions.
|
|
||||||
auto it = m_process_holder_list.begin();
|
|
||||||
while (it != m_process_holder_list.end()) {
|
|
||||||
// Get the holder.
|
|
||||||
auto* const holder = std::addressof(*it);
|
|
||||||
|
|
||||||
// Remove from the list.
|
|
||||||
it = m_process_holder_list.erase(it);
|
|
||||||
|
|
||||||
// Free the holder.
|
|
||||||
delete holder;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void EventObserver::TrackAppletProcess(Applet& applet) {
|
|
||||||
// Don't observe dummy processes.
|
|
||||||
if (!applet.process->IsInitialized()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Allocate new holder.
|
|
||||||
auto* holder = new ProcessHolder(applet, *applet.process);
|
|
||||||
holder->SetUserData(static_cast<uintptr_t>(UserDataTag::AppletProcess));
|
|
||||||
|
|
||||||
// Insert into list.
|
|
||||||
{
|
|
||||||
std::scoped_lock lk{m_lock};
|
|
||||||
m_process_holder_list.push_back(*holder);
|
|
||||||
holder->LinkToMultiWait(std::addressof(m_deferred_wait_list));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Signal wakeup.
|
|
||||||
m_wakeup_event.Signal();
|
|
||||||
}
|
|
||||||
|
|
||||||
void EventObserver::RequestUpdate() {
|
|
||||||
m_wakeup_event.Signal();
|
|
||||||
}
|
|
||||||
|
|
||||||
void EventObserver::LinkDeferred() {
|
|
||||||
std::scoped_lock lk{m_lock};
|
|
||||||
m_multi_wait.MoveAll(std::addressof(m_deferred_wait_list));
|
|
||||||
}
|
|
||||||
|
|
||||||
MultiWaitHolder* EventObserver::WaitSignaled() {
|
|
||||||
while (true) {
|
|
||||||
this->LinkDeferred();
|
|
||||||
|
|
||||||
// If we're done, return before we start waiting.
|
|
||||||
if (m_stop_source.stop_requested()) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto* selected = m_multi_wait.WaitAny(m_system.Kernel());
|
|
||||||
if (selected != std::addressof(m_wakeup_holder)) {
|
|
||||||
// Unlink the process.
|
|
||||||
selected->UnlinkFromMultiWait();
|
|
||||||
}
|
|
||||||
|
|
||||||
return selected;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void EventObserver::Process(MultiWaitHolder* holder) {
|
|
||||||
switch (static_cast<UserDataTag>(holder->GetUserData())) {
|
|
||||||
case UserDataTag::WakeupEvent:
|
|
||||||
this->OnWakeupEvent(holder);
|
|
||||||
break;
|
|
||||||
case UserDataTag::AppletProcess:
|
|
||||||
this->OnProcessEvent(static_cast<ProcessHolder*>(holder));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
UNREACHABLE();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void EventObserver::OnWakeupEvent(MultiWaitHolder* holder) {
|
|
||||||
m_wakeup_event.Clear();
|
|
||||||
|
|
||||||
// Perform recalculation.
|
|
||||||
m_window_system.Update();
|
|
||||||
}
|
|
||||||
|
|
||||||
void EventObserver::OnProcessEvent(ProcessHolder* holder) {
|
|
||||||
// Check process state.
|
|
||||||
auto& applet = holder->GetApplet();
|
|
||||||
auto& process = holder->GetProcess();
|
|
||||||
|
|
||||||
{
|
|
||||||
std::scoped_lock lk{m_lock, applet.lock};
|
|
||||||
if (process.IsTerminated()) {
|
|
||||||
// Destroy the holder.
|
|
||||||
this->DestroyAppletProcessHolderLocked(holder);
|
|
||||||
} else {
|
|
||||||
// Reset signaled state.
|
|
||||||
process.ResetSignal();
|
|
||||||
|
|
||||||
// Relink wakeup event.
|
|
||||||
holder->LinkToMultiWait(std::addressof(m_deferred_wait_list));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set running.
|
|
||||||
applet.is_process_running = process.IsRunning();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Perform recalculation.
|
|
||||||
m_window_system.Update();
|
|
||||||
}
|
|
||||||
|
|
||||||
void EventObserver::DestroyAppletProcessHolderLocked(ProcessHolder* holder) {
|
|
||||||
// Remove from owned list.
|
|
||||||
m_process_holder_list.erase(m_process_holder_list.iterator_to(*holder));
|
|
||||||
|
|
||||||
// Destroy and free.
|
|
||||||
delete holder;
|
|
||||||
}
|
|
||||||
|
|
||||||
void EventObserver::ThreadFunc() {
|
|
||||||
Common::SetCurrentThreadName("am:EventObserver");
|
|
||||||
|
|
||||||
while (true) {
|
|
||||||
auto* signaled_holder = this->WaitSignaled();
|
|
||||||
if (!signaled_holder) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
this->Process(signaled_holder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Service::AM
|
|
|
@ -1,74 +0,0 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "common/polyfill_thread.h"
|
|
||||||
#include "common/thread.h"
|
|
||||||
#include "core/hle/service/kernel_helpers.h"
|
|
||||||
#include "core/hle/service/os/event.h"
|
|
||||||
#include "core/hle/service/os/multi_wait.h"
|
|
||||||
|
|
||||||
namespace Core {
|
|
||||||
class System;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace Service::AM {
|
|
||||||
|
|
||||||
struct Applet;
|
|
||||||
class ProcessHolder;
|
|
||||||
class WindowSystem;
|
|
||||||
|
|
||||||
class EventObserver {
|
|
||||||
public:
|
|
||||||
explicit EventObserver(Core::System& system, WindowSystem& window_system);
|
|
||||||
~EventObserver();
|
|
||||||
|
|
||||||
void TrackAppletProcess(Applet& applet);
|
|
||||||
void RequestUpdate();
|
|
||||||
|
|
||||||
private:
|
|
||||||
void LinkDeferred();
|
|
||||||
MultiWaitHolder* WaitSignaled();
|
|
||||||
void Process(MultiWaitHolder* holder);
|
|
||||||
bool WaitAndProcessImpl();
|
|
||||||
void LoopProcess();
|
|
||||||
|
|
||||||
private:
|
|
||||||
void OnWakeupEvent(MultiWaitHolder* holder);
|
|
||||||
void OnProcessEvent(ProcessHolder* holder);
|
|
||||||
|
|
||||||
private:
|
|
||||||
void DestroyAppletProcessHolderLocked(ProcessHolder* holder);
|
|
||||||
|
|
||||||
private:
|
|
||||||
void ThreadFunc();
|
|
||||||
|
|
||||||
private:
|
|
||||||
// System reference and context.
|
|
||||||
Core::System& m_system;
|
|
||||||
KernelHelpers::ServiceContext m_context;
|
|
||||||
|
|
||||||
// Window manager.
|
|
||||||
WindowSystem& m_window_system;
|
|
||||||
|
|
||||||
// Guest event handle to wake up the event loop processor.
|
|
||||||
Event m_wakeup_event;
|
|
||||||
MultiWaitHolder m_wakeup_holder;
|
|
||||||
|
|
||||||
// Mutex to protect remaining members.
|
|
||||||
std::mutex m_lock{};
|
|
||||||
|
|
||||||
// List of owned process holders.
|
|
||||||
Common::IntrusiveListBaseTraits<ProcessHolder>::ListType m_process_holder_list;
|
|
||||||
|
|
||||||
// Multi-wait objects for new tasks.
|
|
||||||
MultiWait m_multi_wait;
|
|
||||||
MultiWait m_deferred_wait_list;
|
|
||||||
|
|
||||||
// Processing thread.
|
|
||||||
std::thread m_thread{};
|
|
||||||
std::stop_source m_stop_source{};
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Service::AM
|
|
|
@ -69,11 +69,7 @@ void FrontendApplet::PushInteractiveOutData(std::shared_ptr<IStorage> storage) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void FrontendApplet::Exit() {
|
void FrontendApplet::Exit() {
|
||||||
auto applet_ = applet.lock();
|
applet.lock()->caller_applet_broker->SignalCompletion();
|
||||||
|
|
||||||
std::scoped_lock lk{applet_->lock};
|
|
||||||
applet_->is_completed = true;
|
|
||||||
applet_->state_changed_event.Signal();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FrontendAppletSet::FrontendAppletSet() = default;
|
FrontendAppletSet::FrontendAppletSet() = default;
|
||||||
|
|
|
@ -3,28 +3,24 @@
|
||||||
|
|
||||||
#include "core/core.h"
|
#include "core/core.h"
|
||||||
#include "core/hle/service/am/hid_registration.h"
|
#include "core/hle/service/am/hid_registration.h"
|
||||||
|
#include "core/hle/service/am/process.h"
|
||||||
#include "core/hle/service/hid/hid_server.h"
|
#include "core/hle/service/hid/hid_server.h"
|
||||||
#include "core/hle/service/os/process.h"
|
|
||||||
#include "core/hle/service/sm/sm.h"
|
#include "core/hle/service/sm/sm.h"
|
||||||
#include "hid_core/resource_manager.h"
|
#include "hid_core/resource_manager.h"
|
||||||
|
|
||||||
namespace Service::AM {
|
namespace Service::AM {
|
||||||
|
|
||||||
HidRegistration::HidRegistration(Core::System& system, Process& process) : m_process(process) {
|
HidRegistration::HidRegistration(Core::System& system, Process& process) : m_process(process) {
|
||||||
m_hid_server = system.ServiceManager().GetService<HID::IHidServer>("hid", true);
|
m_hid_server = system.ServiceManager().GetService<HID::IHidServer>("hid");
|
||||||
|
|
||||||
if (m_process.IsInitialized()) {
|
if (m_process.IsInitialized()) {
|
||||||
m_hid_server->GetResourceManager()->RegisterAppletResourceUserId(m_process.GetProcessId(),
|
m_hid_server->GetResourceManager()->RegisterAppletResourceUserId(m_process.GetProcessId(),
|
||||||
true);
|
true);
|
||||||
m_hid_server->GetResourceManager()->SetAruidValidForVibration(m_process.GetProcessId(),
|
|
||||||
true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HidRegistration::~HidRegistration() {
|
HidRegistration::~HidRegistration() {
|
||||||
if (m_process.IsInitialized()) {
|
if (m_process.IsInitialized()) {
|
||||||
m_hid_server->GetResourceManager()->SetAruidValidForVibration(m_process.GetProcessId(),
|
|
||||||
false);
|
|
||||||
m_hid_server->GetResourceManager()->UnregisterAppletResourceUserId(
|
m_hid_server->GetResourceManager()->UnregisterAppletResourceUserId(
|
||||||
m_process.GetProcessId());
|
m_process.GetProcessId());
|
||||||
}
|
}
|
||||||
|
@ -32,8 +28,6 @@ HidRegistration::~HidRegistration() {
|
||||||
|
|
||||||
void HidRegistration::EnableAppletToGetInput(bool enable) {
|
void HidRegistration::EnableAppletToGetInput(bool enable) {
|
||||||
if (m_process.IsInitialized()) {
|
if (m_process.IsInitialized()) {
|
||||||
m_hid_server->GetResourceManager()->SetAruidValidForVibration(m_process.GetProcessId(),
|
|
||||||
enable);
|
|
||||||
m_hid_server->GetResourceManager()->EnableInput(m_process.GetProcessId(), enable);
|
m_hid_server->GetResourceManager()->EnableInput(m_process.GetProcessId(), enable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,12 +13,10 @@ namespace Service::HID {
|
||||||
class IHidServer;
|
class IHidServer;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Service {
|
|
||||||
class Process;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace Service::AM {
|
namespace Service::AM {
|
||||||
|
|
||||||
|
class Process;
|
||||||
|
|
||||||
class HidRegistration {
|
class HidRegistration {
|
||||||
public:
|
public:
|
||||||
explicit HidRegistration(Core::System& system, Process& process);
|
explicit HidRegistration(Core::System& system, Process& process);
|
||||||
|
|
|
@ -1,379 +0,0 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
#include "common/assert.h"
|
|
||||||
#include "core/hle/service/am/lifecycle_manager.h"
|
|
||||||
|
|
||||||
namespace Service::AM {
|
|
||||||
|
|
||||||
LifecycleManager::LifecycleManager(Core::System& system, KernelHelpers::ServiceContext& context,
|
|
||||||
bool is_application)
|
|
||||||
: m_system_event(context), m_operation_mode_changed_system_event(context),
|
|
||||||
m_is_application(is_application) {}
|
|
||||||
|
|
||||||
LifecycleManager::~LifecycleManager() = default;
|
|
||||||
|
|
||||||
Event& LifecycleManager::GetSystemEvent() {
|
|
||||||
return m_system_event;
|
|
||||||
}
|
|
||||||
|
|
||||||
Event& LifecycleManager::GetOperationModeChangedSystemEvent() {
|
|
||||||
return m_operation_mode_changed_system_event;
|
|
||||||
}
|
|
||||||
|
|
||||||
void LifecycleManager::PushUnorderedMessage(AppletMessage message) {
|
|
||||||
m_unordered_messages.push_back(message);
|
|
||||||
this->SignalSystemEventIfNeeded();
|
|
||||||
}
|
|
||||||
|
|
||||||
AppletMessage LifecycleManager::PopMessageInOrderOfPriority() {
|
|
||||||
if (m_has_resume) {
|
|
||||||
m_has_resume = false;
|
|
||||||
return AppletMessage::Resume;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_has_acknowledged_exit != m_has_requested_exit) {
|
|
||||||
m_has_acknowledged_exit = m_has_requested_exit;
|
|
||||||
return AppletMessage::Exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_focus_state_changed_notification_enabled) {
|
|
||||||
if (!m_is_application) {
|
|
||||||
if (m_requested_focus_state != m_acknowledged_focus_state) {
|
|
||||||
m_acknowledged_focus_state = m_requested_focus_state;
|
|
||||||
switch (m_requested_focus_state) {
|
|
||||||
case FocusState::InFocus:
|
|
||||||
return AppletMessage::ChangeIntoForeground;
|
|
||||||
case FocusState::NotInFocus:
|
|
||||||
return AppletMessage::ChangeIntoBackground;
|
|
||||||
default:
|
|
||||||
ASSERT(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (m_has_focus_state_changed) {
|
|
||||||
m_has_focus_state_changed = false;
|
|
||||||
return AppletMessage::FocusStateChanged;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_has_requested_request_to_prepare_sleep != m_has_acknowledged_request_to_prepare_sleep) {
|
|
||||||
m_has_acknowledged_request_to_prepare_sleep = true;
|
|
||||||
return AppletMessage::RequestToPrepareSleep;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_requested_request_to_display_state != m_acknowledged_request_to_display_state) {
|
|
||||||
m_acknowledged_request_to_display_state = m_requested_request_to_display_state;
|
|
||||||
return AppletMessage::RequestToDisplay;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_has_operation_mode_changed) {
|
|
||||||
m_has_operation_mode_changed = false;
|
|
||||||
return AppletMessage::OperationModeChanged;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_has_performance_mode_changed) {
|
|
||||||
m_has_performance_mode_changed = false;
|
|
||||||
return AppletMessage::PerformanceModeChanged;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_has_sd_card_removed) {
|
|
||||||
m_has_sd_card_removed = false;
|
|
||||||
return AppletMessage::SdCardRemoved;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_has_sleep_required_by_high_temperature) {
|
|
||||||
m_has_sleep_required_by_high_temperature = false;
|
|
||||||
return AppletMessage::SleepRequiredByHighTemperature;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_has_sleep_required_by_low_battery) {
|
|
||||||
m_has_sleep_required_by_low_battery = false;
|
|
||||||
return AppletMessage::SleepRequiredByLowBattery;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_has_auto_power_down) {
|
|
||||||
m_has_auto_power_down = false;
|
|
||||||
return AppletMessage::AutoPowerDown;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_has_album_screen_shot_taken) {
|
|
||||||
m_has_album_screen_shot_taken = false;
|
|
||||||
return AppletMessage::AlbumScreenShotTaken;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_has_album_recording_saved) {
|
|
||||||
m_has_album_recording_saved = false;
|
|
||||||
return AppletMessage::AlbumRecordingSaved;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!m_unordered_messages.empty()) {
|
|
||||||
const auto message = m_unordered_messages.front();
|
|
||||||
m_unordered_messages.pop_front();
|
|
||||||
return message;
|
|
||||||
}
|
|
||||||
|
|
||||||
return AppletMessage::None;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool LifecycleManager::ShouldSignalSystemEvent() {
|
|
||||||
if (m_focus_state_changed_notification_enabled) {
|
|
||||||
if (!m_is_application) {
|
|
||||||
if (m_requested_focus_state != m_acknowledged_focus_state) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else if (m_has_focus_state_changed) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return !m_unordered_messages.empty() || m_has_resume ||
|
|
||||||
(m_has_requested_exit != m_has_acknowledged_exit) ||
|
|
||||||
(m_has_requested_request_to_prepare_sleep !=
|
|
||||||
m_has_acknowledged_request_to_prepare_sleep) ||
|
|
||||||
m_has_operation_mode_changed || m_has_performance_mode_changed ||
|
|
||||||
m_has_sd_card_removed || m_has_sleep_required_by_high_temperature ||
|
|
||||||
m_has_sleep_required_by_low_battery || m_has_auto_power_down ||
|
|
||||||
(m_requested_request_to_display_state != m_acknowledged_request_to_display_state) ||
|
|
||||||
m_has_album_screen_shot_taken || m_has_album_recording_saved;
|
|
||||||
}
|
|
||||||
|
|
||||||
void LifecycleManager::OnOperationAndPerformanceModeChanged() {
|
|
||||||
if (m_operation_mode_changed_notification_enabled) {
|
|
||||||
m_has_operation_mode_changed = true;
|
|
||||||
}
|
|
||||||
if (m_performance_mode_changed_notification_enabled) {
|
|
||||||
m_has_performance_mode_changed = true;
|
|
||||||
}
|
|
||||||
m_operation_mode_changed_system_event.Signal();
|
|
||||||
this->SignalSystemEventIfNeeded();
|
|
||||||
}
|
|
||||||
|
|
||||||
void LifecycleManager::SignalSystemEventIfNeeded() {
|
|
||||||
// Check our cached value for the system event.
|
|
||||||
const bool applet_message_available = m_applet_message_available;
|
|
||||||
|
|
||||||
// If it's not current, we need to do an update, either clearing or signaling.
|
|
||||||
if (applet_message_available != this->ShouldSignalSystemEvent()) {
|
|
||||||
if (!applet_message_available) {
|
|
||||||
m_system_event.Signal();
|
|
||||||
m_applet_message_available = true;
|
|
||||||
} else {
|
|
||||||
m_system_event.Clear();
|
|
||||||
m_applet_message_available = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool LifecycleManager::PopMessage(AppletMessage* out_message) {
|
|
||||||
const auto message = this->PopMessageInOrderOfPriority();
|
|
||||||
this->SignalSystemEventIfNeeded();
|
|
||||||
|
|
||||||
*out_message = message;
|
|
||||||
return message != AppletMessage::None;
|
|
||||||
}
|
|
||||||
|
|
||||||
void LifecycleManager::SetFocusHandlingMode(bool suspend) {
|
|
||||||
switch (m_focus_handling_mode) {
|
|
||||||
case FocusHandlingMode::AlwaysSuspend:
|
|
||||||
case FocusHandlingMode::SuspendHomeSleep:
|
|
||||||
if (!suspend) {
|
|
||||||
// Disallow suspension.
|
|
||||||
m_focus_handling_mode = FocusHandlingMode::NoSuspend;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case FocusHandlingMode::NoSuspend:
|
|
||||||
if (suspend) {
|
|
||||||
// Allow suspension temporally.
|
|
||||||
m_focus_handling_mode = FocusHandlingMode::SuspendHomeSleep;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void LifecycleManager::SetOutOfFocusSuspendingEnabled(bool enabled) {
|
|
||||||
switch (m_focus_handling_mode) {
|
|
||||||
case FocusHandlingMode::AlwaysSuspend:
|
|
||||||
if (!enabled) {
|
|
||||||
// Allow suspension temporally.
|
|
||||||
m_focus_handling_mode = FocusHandlingMode::SuspendHomeSleep;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case FocusHandlingMode::SuspendHomeSleep:
|
|
||||||
case FocusHandlingMode::NoSuspend:
|
|
||||||
if (enabled) {
|
|
||||||
// Allow suspension.
|
|
||||||
m_focus_handling_mode = FocusHandlingMode::AlwaysSuspend;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void LifecycleManager::RemoveForceResumeIfPossible() {
|
|
||||||
// If resume is not forced, we have nothing to do.
|
|
||||||
if (m_suspend_mode != SuspendMode::ForceResume) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check activity state.
|
|
||||||
// If we are already resumed, we can remove the forced state.
|
|
||||||
switch (m_activity_state) {
|
|
||||||
case ActivityState::ForegroundVisible:
|
|
||||||
case ActivityState::ForegroundObscured:
|
|
||||||
m_suspend_mode = SuspendMode::NoOverride;
|
|
||||||
return;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check focus handling mode.
|
|
||||||
switch (m_focus_handling_mode) {
|
|
||||||
case FocusHandlingMode::AlwaysSuspend:
|
|
||||||
case FocusHandlingMode::SuspendHomeSleep:
|
|
||||||
// If the applet allows suspension, we can remove the forced state.
|
|
||||||
m_suspend_mode = SuspendMode::NoOverride;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FocusHandlingMode::NoSuspend:
|
|
||||||
// If the applet is not an application, we can remove the forced state.
|
|
||||||
// Only applications can be forced to resume.
|
|
||||||
if (!m_is_application) {
|
|
||||||
m_suspend_mode = SuspendMode::NoOverride;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool LifecycleManager::IsRunnable() const {
|
|
||||||
// If suspend is forced, return that.
|
|
||||||
if (m_forced_suspend) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check suspend mode override.
|
|
||||||
switch (m_suspend_mode) {
|
|
||||||
case SuspendMode::NoOverride:
|
|
||||||
// Continue processing.
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SuspendMode::ForceResume:
|
|
||||||
// The applet is runnable during forced resumption when its exit is requested.
|
|
||||||
return m_has_requested_exit;
|
|
||||||
|
|
||||||
case SuspendMode::ForceSuspend:
|
|
||||||
// The applet is never runnable during forced suspension.
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Always run if exit is requested.
|
|
||||||
if (m_has_requested_exit) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_activity_state == ActivityState::ForegroundVisible) {
|
|
||||||
// The applet is runnable now.
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_activity_state == ActivityState::ForegroundObscured) {
|
|
||||||
switch (m_focus_handling_mode) {
|
|
||||||
case FocusHandlingMode::AlwaysSuspend:
|
|
||||||
// The applet is not runnable while running the applet.
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case FocusHandlingMode::SuspendHomeSleep:
|
|
||||||
// The applet is runnable while running the applet.
|
|
||||||
return true;
|
|
||||||
|
|
||||||
case FocusHandlingMode::NoSuspend:
|
|
||||||
// The applet is always runnable.
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// The activity is a suspended one.
|
|
||||||
// The applet should be suspended unless it has disabled suspension.
|
|
||||||
return m_focus_handling_mode == FocusHandlingMode::NoSuspend;
|
|
||||||
}
|
|
||||||
|
|
||||||
FocusState LifecycleManager::GetFocusStateWhileForegroundObscured() const {
|
|
||||||
switch (m_focus_handling_mode) {
|
|
||||||
case FocusHandlingMode::AlwaysSuspend:
|
|
||||||
// The applet never learns it has lost focus.
|
|
||||||
return FocusState::InFocus;
|
|
||||||
|
|
||||||
case FocusHandlingMode::SuspendHomeSleep:
|
|
||||||
// The applet learns it has lost focus when launching a child applet.
|
|
||||||
return FocusState::NotInFocus;
|
|
||||||
|
|
||||||
case FocusHandlingMode::NoSuspend:
|
|
||||||
// The applet always learns it has lost focus.
|
|
||||||
return FocusState::NotInFocus;
|
|
||||||
|
|
||||||
default:
|
|
||||||
UNREACHABLE();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
FocusState LifecycleManager::GetFocusStateWhileBackground(bool is_obscured) const {
|
|
||||||
switch (m_focus_handling_mode) {
|
|
||||||
case FocusHandlingMode::AlwaysSuspend:
|
|
||||||
// The applet never learns it has lost focus.
|
|
||||||
return FocusState::InFocus;
|
|
||||||
|
|
||||||
case FocusHandlingMode::SuspendHomeSleep:
|
|
||||||
// The applet learns it has lost focus when launching a child applet.
|
|
||||||
return is_obscured ? FocusState::NotInFocus : FocusState::InFocus;
|
|
||||||
|
|
||||||
case FocusHandlingMode::NoSuspend:
|
|
||||||
// The applet always learns it has lost focus.
|
|
||||||
return m_is_application ? FocusState::Background : FocusState::NotInFocus;
|
|
||||||
|
|
||||||
default:
|
|
||||||
UNREACHABLE();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool LifecycleManager::UpdateRequestedFocusState() {
|
|
||||||
FocusState new_state{};
|
|
||||||
|
|
||||||
if (m_suspend_mode == SuspendMode::NoOverride) {
|
|
||||||
// With no forced suspend or resume, we take the focus state designated
|
|
||||||
// by the combination of the activity flag and the focus handling mode.
|
|
||||||
switch (m_activity_state) {
|
|
||||||
case ActivityState::ForegroundVisible:
|
|
||||||
new_state = FocusState::InFocus;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ActivityState::ForegroundObscured:
|
|
||||||
new_state = this->GetFocusStateWhileForegroundObscured();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ActivityState::BackgroundVisible:
|
|
||||||
new_state = this->GetFocusStateWhileBackground(false);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ActivityState::BackgroundObscured:
|
|
||||||
new_state = this->GetFocusStateWhileBackground(true);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
UNREACHABLE();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// With forced suspend or resume, the applet is guaranteed to be background.
|
|
||||||
new_state = this->GetFocusStateWhileBackground(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (new_state != m_requested_focus_state) {
|
|
||||||
// Mark the focus state as ready for update.
|
|
||||||
m_requested_focus_state = new_state;
|
|
||||||
|
|
||||||
// We changed the focus state.
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We didn't change the focus state.
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Service::AM
|
|
|
@ -1,183 +0,0 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <list>
|
|
||||||
|
|
||||||
#include "core/hle/service/am/am_types.h"
|
|
||||||
#include "core/hle/service/os/event.h"
|
|
||||||
|
|
||||||
namespace Core {
|
|
||||||
class System;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace Service::AM {
|
|
||||||
|
|
||||||
enum class ActivityState : u32 {
|
|
||||||
ForegroundVisible = 0,
|
|
||||||
ForegroundObscured = 1,
|
|
||||||
BackgroundVisible = 2,
|
|
||||||
BackgroundObscured = 3,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum class FocusHandlingMode : u32 {
|
|
||||||
AlwaysSuspend = 0,
|
|
||||||
SuspendHomeSleep = 1,
|
|
||||||
NoSuspend = 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum class SuspendMode : u32 {
|
|
||||||
NoOverride = 0,
|
|
||||||
ForceResume = 1,
|
|
||||||
ForceSuspend = 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
class LifecycleManager {
|
|
||||||
public:
|
|
||||||
explicit LifecycleManager(Core::System& system, KernelHelpers::ServiceContext& context,
|
|
||||||
bool is_application);
|
|
||||||
~LifecycleManager();
|
|
||||||
|
|
||||||
public:
|
|
||||||
Event& GetSystemEvent();
|
|
||||||
Event& GetOperationModeChangedSystemEvent();
|
|
||||||
|
|
||||||
public:
|
|
||||||
bool IsApplication() {
|
|
||||||
return m_is_application;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GetForcedSuspend() {
|
|
||||||
return m_forced_suspend;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GetExitRequested() {
|
|
||||||
return m_has_requested_exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
ActivityState GetActivityState() {
|
|
||||||
return m_activity_state;
|
|
||||||
}
|
|
||||||
|
|
||||||
FocusState GetAndClearFocusState() {
|
|
||||||
m_acknowledged_focus_state = m_requested_focus_state;
|
|
||||||
return m_acknowledged_focus_state;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetFocusState(FocusState state) {
|
|
||||||
if (m_requested_focus_state != state) {
|
|
||||||
m_has_focus_state_changed = true;
|
|
||||||
}
|
|
||||||
m_requested_focus_state = state;
|
|
||||||
this->SignalSystemEventIfNeeded();
|
|
||||||
}
|
|
||||||
|
|
||||||
void RequestExit() {
|
|
||||||
m_has_requested_exit = true;
|
|
||||||
this->SignalSystemEventIfNeeded();
|
|
||||||
}
|
|
||||||
|
|
||||||
void RequestResumeNotification() {
|
|
||||||
// NOTE: this appears to be a bug in am.
|
|
||||||
// If an applet makes a concurrent request to receive resume notifications
|
|
||||||
// while it is being suspended, the first resume notification will be lost.
|
|
||||||
// This is not the case with other notification types.
|
|
||||||
if (m_resume_notification_enabled) {
|
|
||||||
m_has_resume = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnOperationAndPerformanceModeChanged();
|
|
||||||
|
|
||||||
public:
|
|
||||||
void SetFocusStateChangedNotificationEnabled(bool enabled) {
|
|
||||||
m_focus_state_changed_notification_enabled = enabled;
|
|
||||||
this->SignalSystemEventIfNeeded();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetOperationModeChangedNotificationEnabled(bool enabled) {
|
|
||||||
m_operation_mode_changed_notification_enabled = enabled;
|
|
||||||
this->SignalSystemEventIfNeeded();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetPerformanceModeChangedNotificationEnabled(bool enabled) {
|
|
||||||
m_performance_mode_changed_notification_enabled = enabled;
|
|
||||||
this->SignalSystemEventIfNeeded();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetResumeNotificationEnabled(bool enabled) {
|
|
||||||
m_resume_notification_enabled = enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetActivityState(ActivityState state) {
|
|
||||||
m_activity_state = state;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetSuspendMode(SuspendMode mode) {
|
|
||||||
m_suspend_mode = mode;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetForcedSuspend(bool enabled) {
|
|
||||||
m_forced_suspend = enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
public:
|
|
||||||
void SetFocusHandlingMode(bool suspend);
|
|
||||||
void SetOutOfFocusSuspendingEnabled(bool enabled);
|
|
||||||
void RemoveForceResumeIfPossible();
|
|
||||||
bool IsRunnable() const;
|
|
||||||
bool UpdateRequestedFocusState();
|
|
||||||
void SignalSystemEventIfNeeded();
|
|
||||||
|
|
||||||
public:
|
|
||||||
void PushUnorderedMessage(AppletMessage message);
|
|
||||||
bool PopMessage(AppletMessage* out_message);
|
|
||||||
|
|
||||||
private:
|
|
||||||
FocusState GetFocusStateWhileForegroundObscured() const;
|
|
||||||
FocusState GetFocusStateWhileBackground(bool is_obscured) const;
|
|
||||||
|
|
||||||
private:
|
|
||||||
AppletMessage PopMessageInOrderOfPriority();
|
|
||||||
bool ShouldSignalSystemEvent();
|
|
||||||
|
|
||||||
private:
|
|
||||||
Event m_system_event;
|
|
||||||
Event m_operation_mode_changed_system_event;
|
|
||||||
|
|
||||||
std::list<AppletMessage> m_unordered_messages{};
|
|
||||||
|
|
||||||
bool m_is_application{};
|
|
||||||
bool m_focus_state_changed_notification_enabled{true};
|
|
||||||
bool m_operation_mode_changed_notification_enabled{true};
|
|
||||||
bool m_performance_mode_changed_notification_enabled{true};
|
|
||||||
bool m_resume_notification_enabled{};
|
|
||||||
|
|
||||||
bool m_requested_request_to_display_state{};
|
|
||||||
bool m_acknowledged_request_to_display_state{};
|
|
||||||
bool m_has_resume{};
|
|
||||||
bool m_has_focus_state_changed{true};
|
|
||||||
bool m_has_album_recording_saved{};
|
|
||||||
bool m_has_album_screen_shot_taken{};
|
|
||||||
bool m_has_auto_power_down{};
|
|
||||||
bool m_has_sleep_required_by_low_battery{};
|
|
||||||
bool m_has_sleep_required_by_high_temperature{};
|
|
||||||
bool m_has_sd_card_removed{};
|
|
||||||
bool m_has_performance_mode_changed{};
|
|
||||||
bool m_has_operation_mode_changed{};
|
|
||||||
bool m_has_requested_request_to_prepare_sleep{};
|
|
||||||
bool m_has_acknowledged_request_to_prepare_sleep{};
|
|
||||||
bool m_has_requested_exit{};
|
|
||||||
bool m_has_acknowledged_exit{};
|
|
||||||
bool m_applet_message_available{};
|
|
||||||
|
|
||||||
bool m_forced_suspend{};
|
|
||||||
FocusHandlingMode m_focus_handling_mode{FocusHandlingMode::SuspendHomeSleep};
|
|
||||||
ActivityState m_activity_state{ActivityState::ForegroundVisible};
|
|
||||||
SuspendMode m_suspend_mode{SuspendMode::NoOverride};
|
|
||||||
FocusState m_requested_focus_state{};
|
|
||||||
FocusState m_acknowledged_focus_state{};
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Service::AM
|
|
|
@ -3,25 +3,66 @@
|
||||||
|
|
||||||
#include "common/scope_exit.h"
|
#include "common/scope_exit.h"
|
||||||
|
|
||||||
|
#include "core/file_sys/content_archive.h"
|
||||||
|
#include "core/file_sys/nca_metadata.h"
|
||||||
|
#include "core/file_sys/registered_cache.h"
|
||||||
#include "core/hle/kernel/k_process.h"
|
#include "core/hle/kernel/k_process.h"
|
||||||
#include "core/hle/kernel/svc_types.h"
|
#include "core/hle/service/am/process.h"
|
||||||
#include "core/hle/service/os/process.h"
|
#include "core/hle/service/filesystem/filesystem.h"
|
||||||
#include "core/loader/loader.h"
|
#include "core/loader/loader.h"
|
||||||
|
|
||||||
namespace Service {
|
namespace Service::AM {
|
||||||
|
|
||||||
Process::Process(Core::System& system)
|
Process::Process(Core::System& system)
|
||||||
: m_system(system), m_process(), m_main_thread_priority(), m_main_thread_stack_size(),
|
: m_system(system), m_process(), m_main_thread_priority(), m_main_thread_stack_size(),
|
||||||
m_process_started() {}
|
m_program_id(), m_process_started() {}
|
||||||
|
|
||||||
Process::~Process() {
|
Process::~Process() {
|
||||||
this->Finalize();
|
this->Finalize();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Process::Initialize(Loader::AppLoader& loader, Loader::ResultStatus& out_load_result) {
|
bool Process::Initialize(u64 program_id, u8 minimum_key_generation, u8 maximum_key_generation) {
|
||||||
// First, ensure we are not holding another process.
|
// First, ensure we are not holding another process.
|
||||||
this->Finalize();
|
this->Finalize();
|
||||||
|
|
||||||
|
// Get the filesystem controller.
|
||||||
|
auto& fsc = m_system.GetFileSystemController();
|
||||||
|
|
||||||
|
// Attempt to load program NCA.
|
||||||
|
const FileSys::RegisteredCache* bis_system{};
|
||||||
|
FileSys::VirtualFile nca_raw{};
|
||||||
|
|
||||||
|
// Get the program NCA from built-in storage.
|
||||||
|
bis_system = fsc.GetSystemNANDContents();
|
||||||
|
if (bis_system) {
|
||||||
|
nca_raw = bis_system->GetEntryRaw(program_id, FileSys::ContentRecordType::Program);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure we retrieved a program NCA.
|
||||||
|
if (!nca_raw) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure we have a suitable version.
|
||||||
|
if (minimum_key_generation > 0) {
|
||||||
|
FileSys::NCA nca(nca_raw);
|
||||||
|
if (nca.GetStatus() == Loader::ResultStatus::Success &&
|
||||||
|
(nca.GetKeyGeneration() < minimum_key_generation ||
|
||||||
|
nca.GetKeyGeneration() > maximum_key_generation)) {
|
||||||
|
LOG_WARNING(Service_LDR, "Skipping program {:016X} with generation {}", program_id,
|
||||||
|
nca.GetKeyGeneration());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the appropriate loader to parse this NCA.
|
||||||
|
auto app_loader = Loader::GetLoader(m_system, nca_raw, program_id, 0);
|
||||||
|
|
||||||
|
// Ensure we have a loader which can parse the NCA.
|
||||||
|
if (!app_loader) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Create the process.
|
// Create the process.
|
||||||
auto* const process = Kernel::KProcess::Create(m_system.Kernel());
|
auto* const process = Kernel::KProcess::Create(m_system.Kernel());
|
||||||
Kernel::KProcess::Register(m_system.Kernel(), process);
|
Kernel::KProcess::Register(m_system.Kernel(), process);
|
||||||
|
@ -32,8 +73,7 @@ bool Process::Initialize(Loader::AppLoader& loader, Loader::ResultStatus& out_lo
|
||||||
};
|
};
|
||||||
|
|
||||||
// Insert process modules into memory.
|
// Insert process modules into memory.
|
||||||
const auto [load_result, load_parameters] = loader.Load(*process, m_system);
|
const auto [load_result, load_parameters] = app_loader->Load(*process, m_system);
|
||||||
out_load_result = load_result;
|
|
||||||
|
|
||||||
// Ensure loading was successful.
|
// Ensure loading was successful.
|
||||||
if (load_result != Loader::ResultStatus::Success) {
|
if (load_result != Loader::ResultStatus::Success) {
|
||||||
|
@ -74,6 +114,7 @@ void Process::Finalize() {
|
||||||
m_process = nullptr;
|
m_process = nullptr;
|
||||||
m_main_thread_priority = 0;
|
m_main_thread_priority = 0;
|
||||||
m_main_thread_stack_size = 0;
|
m_main_thread_stack_size = 0;
|
||||||
|
m_program_id = 0;
|
||||||
m_process_started = false;
|
m_process_started = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,31 +142,6 @@ void Process::Terminate() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Process::ResetSignal() {
|
|
||||||
if (m_process) {
|
|
||||||
m_process->Reset();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Process::IsRunning() const {
|
|
||||||
if (m_process) {
|
|
||||||
const auto state = m_process->GetState();
|
|
||||||
return state == Kernel::KProcess::State::Running ||
|
|
||||||
state == Kernel::KProcess::State::RunningAttached ||
|
|
||||||
state == Kernel::KProcess::State::DebugBreak;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Process::IsTerminated() const {
|
|
||||||
if (m_process) {
|
|
||||||
return m_process->IsTerminated();
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
u64 Process::GetProcessId() const {
|
u64 Process::GetProcessId() const {
|
||||||
if (m_process) {
|
if (m_process) {
|
||||||
return m_process->GetProcessId();
|
return m_process->GetProcessId();
|
||||||
|
@ -134,19 +150,4 @@ u64 Process::GetProcessId() const {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
u64 Process::GetProgramId() const {
|
} // namespace Service::AM
|
||||||
if (m_process) {
|
|
||||||
return m_process->GetProgramId();
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Process::Suspend(bool suspended) {
|
|
||||||
if (m_process) {
|
|
||||||
m_process->SetActivity(suspended ? Kernel::Svc::ProcessActivity::Paused
|
|
||||||
: Kernel::Svc::ProcessActivity::Runnable);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Service
|
|
|
@ -3,47 +3,38 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "common/common_funcs.h"
|
||||||
#include "common/common_types.h"
|
#include "common/common_types.h"
|
||||||
|
|
||||||
namespace Core {
|
|
||||||
class System;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace Loader {
|
|
||||||
class AppLoader;
|
|
||||||
enum class ResultStatus : u16;
|
|
||||||
} // namespace Loader
|
|
||||||
|
|
||||||
namespace Kernel {
|
namespace Kernel {
|
||||||
class KProcess;
|
class KProcess;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Service {
|
namespace Core {
|
||||||
|
class System;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace Service::AM {
|
||||||
|
|
||||||
class Process {
|
class Process {
|
||||||
public:
|
public:
|
||||||
explicit Process(Core::System& system);
|
explicit Process(Core::System& system);
|
||||||
~Process();
|
~Process();
|
||||||
|
|
||||||
bool Initialize(Loader::AppLoader& loader, Loader::ResultStatus& out_load_result);
|
bool Initialize(u64 program_id, u8 minimum_key_generation, u8 maximum_key_generation);
|
||||||
void Finalize();
|
void Finalize();
|
||||||
|
|
||||||
bool Run();
|
bool Run();
|
||||||
void Terminate();
|
void Terminate();
|
||||||
void Suspend(bool suspended);
|
|
||||||
void ResetSignal();
|
|
||||||
|
|
||||||
bool IsInitialized() const {
|
bool IsInitialized() const {
|
||||||
return m_process != nullptr;
|
return m_process != nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsRunning() const;
|
|
||||||
bool IsTerminated() const;
|
|
||||||
|
|
||||||
u64 GetProcessId() const;
|
u64 GetProcessId() const;
|
||||||
u64 GetProgramId() const;
|
u64 GetProgramId() const {
|
||||||
|
return m_program_id;
|
||||||
Kernel::KProcess* GetHandle() const {
|
}
|
||||||
|
Kernel::KProcess* GetProcess() const {
|
||||||
return m_process;
|
return m_process;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +43,8 @@ private:
|
||||||
Kernel::KProcess* m_process{};
|
Kernel::KProcess* m_process{};
|
||||||
s32 m_main_thread_priority{};
|
s32 m_main_thread_priority{};
|
||||||
u64 m_main_thread_stack_size{};
|
u64 m_main_thread_stack_size{};
|
||||||
|
u64 m_program_id{};
|
||||||
bool m_process_started{};
|
bool m_process_started{};
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Service
|
} // namespace Service::AM
|
|
@ -1,130 +0,0 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
#include "core/core.h"
|
|
||||||
#include "core/file_sys/content_archive.h"
|
|
||||||
#include "core/file_sys/nca_metadata.h"
|
|
||||||
#include "core/file_sys/patch_manager.h"
|
|
||||||
#include "core/file_sys/registered_cache.h"
|
|
||||||
#include "core/file_sys/romfs_factory.h"
|
|
||||||
#include "core/hle/service/am/process_creation.h"
|
|
||||||
#include "core/hle/service/glue/glue_manager.h"
|
|
||||||
#include "core/hle/service/os/process.h"
|
|
||||||
#include "core/loader/loader.h"
|
|
||||||
|
|
||||||
namespace Service::AM {
|
|
||||||
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
FileSys::StorageId GetStorageIdForFrontendSlot(
|
|
||||||
std::optional<FileSys::ContentProviderUnionSlot> slot) {
|
|
||||||
if (!slot.has_value()) {
|
|
||||||
return FileSys::StorageId::None;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (*slot) {
|
|
||||||
case FileSys::ContentProviderUnionSlot::UserNAND:
|
|
||||||
return FileSys::StorageId::NandUser;
|
|
||||||
case FileSys::ContentProviderUnionSlot::SysNAND:
|
|
||||||
return FileSys::StorageId::NandSystem;
|
|
||||||
case FileSys::ContentProviderUnionSlot::SDMC:
|
|
||||||
return FileSys::StorageId::SdCard;
|
|
||||||
case FileSys::ContentProviderUnionSlot::FrontendManual:
|
|
||||||
return FileSys::StorageId::Host;
|
|
||||||
default:
|
|
||||||
return FileSys::StorageId::None;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
std::unique_ptr<Process> CreateProcessImpl(std::unique_ptr<Loader::AppLoader>& out_loader,
|
|
||||||
Loader::ResultStatus& out_load_result,
|
|
||||||
Core::System& system, FileSys::VirtualFile file,
|
|
||||||
u64 program_id, u64 program_index) {
|
|
||||||
// Get the appropriate loader to parse this NCA.
|
|
||||||
out_loader = Loader::GetLoader(system, file, program_id, program_index);
|
|
||||||
|
|
||||||
// Ensure we have a loader which can parse the NCA.
|
|
||||||
if (!out_loader) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Try to load the process.
|
|
||||||
auto process = std::make_unique<Process>(system);
|
|
||||||
if (process->Initialize(*out_loader, out_load_result)) {
|
|
||||||
return process;
|
|
||||||
}
|
|
||||||
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // Anonymous namespace
|
|
||||||
|
|
||||||
std::unique_ptr<Process> CreateProcess(Core::System& system, u64 program_id,
|
|
||||||
u8 minimum_key_generation, u8 maximum_key_generation) {
|
|
||||||
// Attempt to load program NCA.
|
|
||||||
FileSys::VirtualFile nca_raw{};
|
|
||||||
|
|
||||||
// Get the program NCA from storage.
|
|
||||||
auto& storage = system.GetContentProviderUnion();
|
|
||||||
nca_raw = storage.GetEntryRaw(program_id, FileSys::ContentRecordType::Program);
|
|
||||||
|
|
||||||
// Ensure we retrieved a program NCA.
|
|
||||||
if (!nca_raw) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ensure we have a suitable version.
|
|
||||||
if (minimum_key_generation > 0) {
|
|
||||||
FileSys::NCA nca(nca_raw);
|
|
||||||
if (nca.GetStatus() == Loader::ResultStatus::Success &&
|
|
||||||
(nca.GetKeyGeneration() < minimum_key_generation ||
|
|
||||||
nca.GetKeyGeneration() > maximum_key_generation)) {
|
|
||||||
LOG_WARNING(Service_LDR, "Skipping program {:016X} with generation {}", program_id,
|
|
||||||
nca.GetKeyGeneration());
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
std::unique_ptr<Loader::AppLoader> loader;
|
|
||||||
Loader::ResultStatus status;
|
|
||||||
return CreateProcessImpl(loader, status, system, nca_raw, program_id, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::unique_ptr<Process> CreateApplicationProcess(std::vector<u8>& out_control,
|
|
||||||
std::unique_ptr<Loader::AppLoader>& out_loader,
|
|
||||||
Loader::ResultStatus& out_load_result,
|
|
||||||
Core::System& system, FileSys::VirtualFile file,
|
|
||||||
u64 program_id, u64 program_index) {
|
|
||||||
auto process =
|
|
||||||
CreateProcessImpl(out_loader, out_load_result, system, file, program_id, program_index);
|
|
||||||
if (!process) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
FileSys::NACP nacp;
|
|
||||||
if (out_loader->ReadControlData(nacp) == Loader::ResultStatus::Success) {
|
|
||||||
out_control = nacp.GetRawBytes();
|
|
||||||
} else {
|
|
||||||
out_control.resize(sizeof(FileSys::RawNACP));
|
|
||||||
}
|
|
||||||
|
|
||||||
auto& storage = system.GetContentProviderUnion();
|
|
||||||
Service::Glue::ApplicationLaunchProperty launch{};
|
|
||||||
launch.title_id = process->GetProgramId();
|
|
||||||
|
|
||||||
FileSys::PatchManager pm{launch.title_id, system.GetFileSystemController(), storage};
|
|
||||||
launch.version = pm.GetGameVersion().value_or(0);
|
|
||||||
|
|
||||||
// TODO(DarkLordZach): When FSController/Game Card Support is added, if
|
|
||||||
// current_process_game_card use correct StorageId
|
|
||||||
launch.base_game_storage_id = GetStorageIdForFrontendSlot(
|
|
||||||
storage.GetSlotForEntry(launch.title_id, FileSys::ContentRecordType::Program));
|
|
||||||
launch.update_storage_id = GetStorageIdForFrontendSlot(storage.GetSlotForEntry(
|
|
||||||
FileSys::GetUpdateTitleID(launch.title_id), FileSys::ContentRecordType::Program));
|
|
||||||
|
|
||||||
system.GetARPManager().Register(launch.title_id, launch, out_control);
|
|
||||||
|
|
||||||
return process;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Service::AM
|
|
|
@ -1,35 +0,0 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <memory>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
#include "common/common_types.h"
|
|
||||||
#include "core/file_sys/vfs/vfs_types.h"
|
|
||||||
|
|
||||||
namespace Core {
|
|
||||||
class System;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace Loader {
|
|
||||||
class AppLoader;
|
|
||||||
enum class ResultStatus : u16;
|
|
||||||
} // namespace Loader
|
|
||||||
|
|
||||||
namespace Service {
|
|
||||||
class Process;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace Service::AM {
|
|
||||||
|
|
||||||
std::unique_ptr<Process> CreateProcess(Core::System& system, u64 program_id,
|
|
||||||
u8 minimum_key_generation, u8 maximum_key_generation);
|
|
||||||
std::unique_ptr<Process> CreateApplicationProcess(std::vector<u8>& out_control,
|
|
||||||
std::unique_ptr<Loader::AppLoader>& out_loader,
|
|
||||||
Loader::ResultStatus& out_load_result,
|
|
||||||
Core::System& system, FileSys::VirtualFile file,
|
|
||||||
u64 program_id, u64 program_index);
|
|
||||||
|
|
||||||
} // namespace Service::AM
|
|
|
@ -1,15 +0,0 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
#include "core/hle/kernel/k_process.h"
|
|
||||||
#include "core/hle/service/am/process_holder.h"
|
|
||||||
#include "core/hle/service/os/process.h"
|
|
||||||
|
|
||||||
namespace Service::AM {
|
|
||||||
|
|
||||||
ProcessHolder::ProcessHolder(Applet& applet, Process& process)
|
|
||||||
: MultiWaitHolder(process.GetHandle()), m_applet(applet), m_process(process) {}
|
|
||||||
|
|
||||||
ProcessHolder::~ProcessHolder() = default;
|
|
||||||
|
|
||||||
} // namespace Service::AM
|
|
|
@ -1,34 +0,0 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "core/hle/service/os/multi_wait_holder.h"
|
|
||||||
|
|
||||||
namespace Service {
|
|
||||||
class Process;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace Service::AM {
|
|
||||||
|
|
||||||
struct Applet;
|
|
||||||
|
|
||||||
class ProcessHolder : public MultiWaitHolder, public Common::IntrusiveListBaseNode<ProcessHolder> {
|
|
||||||
public:
|
|
||||||
explicit ProcessHolder(Applet& applet, Process& process);
|
|
||||||
~ProcessHolder();
|
|
||||||
|
|
||||||
Applet& GetApplet() const {
|
|
||||||
return m_applet;
|
|
||||||
}
|
|
||||||
|
|
||||||
Process& GetProcess() const {
|
|
||||||
return m_process;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
Applet& m_applet;
|
|
||||||
Process& m_process;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Service::AM
|
|
|
@ -6,14 +6,12 @@
|
||||||
#include "core/hle/service/am/service/all_system_applet_proxies_service.h"
|
#include "core/hle/service/am/service/all_system_applet_proxies_service.h"
|
||||||
#include "core/hle/service/am/service/library_applet_proxy.h"
|
#include "core/hle/service/am/service/library_applet_proxy.h"
|
||||||
#include "core/hle/service/am/service/system_applet_proxy.h"
|
#include "core/hle/service/am/service/system_applet_proxy.h"
|
||||||
#include "core/hle/service/am/window_system.h"
|
|
||||||
#include "core/hle/service/cmif_serialization.h"
|
#include "core/hle/service/cmif_serialization.h"
|
||||||
|
|
||||||
namespace Service::AM {
|
namespace Service::AM {
|
||||||
|
|
||||||
IAllSystemAppletProxiesService::IAllSystemAppletProxiesService(Core::System& system_,
|
IAllSystemAppletProxiesService::IAllSystemAppletProxiesService(Core::System& system_)
|
||||||
WindowSystem& window_system)
|
: ServiceFramework{system_, "appletAE"} {
|
||||||
: ServiceFramework{system_, "appletAE"}, m_window_system{window_system} {
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{100, D<&IAllSystemAppletProxiesService::OpenSystemAppletProxy>, "OpenSystemAppletProxy"},
|
{100, D<&IAllSystemAppletProxiesService::OpenSystemAppletProxy>, "OpenSystemAppletProxy"},
|
||||||
|
@ -38,8 +36,8 @@ Result IAllSystemAppletProxiesService::OpenSystemAppletProxy(
|
||||||
LOG_DEBUG(Service_AM, "called");
|
LOG_DEBUG(Service_AM, "called");
|
||||||
|
|
||||||
if (const auto applet = this->GetAppletFromProcessId(pid); applet) {
|
if (const auto applet = this->GetAppletFromProcessId(pid); applet) {
|
||||||
*out_system_applet_proxy = std::make_shared<ISystemAppletProxy>(
|
*out_system_applet_proxy =
|
||||||
system, applet, process_handle.Get(), m_window_system);
|
std::make_shared<ISystemAppletProxy>(system, applet, process_handle.Get());
|
||||||
R_SUCCEED();
|
R_SUCCEED();
|
||||||
} else {
|
} else {
|
||||||
UNIMPLEMENTED();
|
UNIMPLEMENTED();
|
||||||
|
@ -54,8 +52,8 @@ Result IAllSystemAppletProxiesService::OpenLibraryAppletProxy(
|
||||||
LOG_DEBUG(Service_AM, "called");
|
LOG_DEBUG(Service_AM, "called");
|
||||||
|
|
||||||
if (const auto applet = this->GetAppletFromProcessId(pid); applet) {
|
if (const auto applet = this->GetAppletFromProcessId(pid); applet) {
|
||||||
*out_library_applet_proxy = std::make_shared<ILibraryAppletProxy>(
|
*out_library_applet_proxy =
|
||||||
system, applet, process_handle.Get(), m_window_system);
|
std::make_shared<ILibraryAppletProxy>(system, applet, process_handle.Get());
|
||||||
R_SUCCEED();
|
R_SUCCEED();
|
||||||
} else {
|
} else {
|
||||||
UNIMPLEMENTED();
|
UNIMPLEMENTED();
|
||||||
|
@ -75,7 +73,7 @@ Result IAllSystemAppletProxiesService::OpenLibraryAppletProxyOld(
|
||||||
|
|
||||||
std::shared_ptr<Applet> IAllSystemAppletProxiesService::GetAppletFromProcessId(
|
std::shared_ptr<Applet> IAllSystemAppletProxiesService::GetAppletFromProcessId(
|
||||||
ProcessId process_id) {
|
ProcessId process_id) {
|
||||||
return m_window_system.GetByAppletResourceUserId(process_id.pid);
|
return system.GetAppletManager().GetByAppletResourceUserId(process_id.pid);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Service::AM
|
} // namespace Service::AM
|
||||||
|
|
|
@ -14,12 +14,11 @@ struct Applet;
|
||||||
struct AppletAttribute;
|
struct AppletAttribute;
|
||||||
class ILibraryAppletProxy;
|
class ILibraryAppletProxy;
|
||||||
class ISystemAppletProxy;
|
class ISystemAppletProxy;
|
||||||
class WindowSystem;
|
|
||||||
|
|
||||||
class IAllSystemAppletProxiesService final
|
class IAllSystemAppletProxiesService final
|
||||||
: public ServiceFramework<IAllSystemAppletProxiesService> {
|
: public ServiceFramework<IAllSystemAppletProxiesService> {
|
||||||
public:
|
public:
|
||||||
explicit IAllSystemAppletProxiesService(Core::System& system_, WindowSystem& window_system);
|
explicit IAllSystemAppletProxiesService(Core::System& system_);
|
||||||
~IAllSystemAppletProxiesService() override;
|
~IAllSystemAppletProxiesService() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -36,8 +35,6 @@ private:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<Applet> GetAppletFromProcessId(ProcessId pid);
|
std::shared_ptr<Applet> GetAppletFromProcessId(ProcessId pid);
|
||||||
|
|
||||||
WindowSystem& m_window_system;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace AM
|
} // namespace AM
|
||||||
|
|
|
@ -19,7 +19,7 @@ IAppletCommonFunctions::IAppletCommonFunctions(Core::System& system_,
|
||||||
{21, nullptr, "TryPopFromAppletBoundChannel"},
|
{21, nullptr, "TryPopFromAppletBoundChannel"},
|
||||||
{40, nullptr, "GetDisplayLogicalResolution"},
|
{40, nullptr, "GetDisplayLogicalResolution"},
|
||||||
{42, nullptr, "SetDisplayMagnification"},
|
{42, nullptr, "SetDisplayMagnification"},
|
||||||
{50, D<&IAppletCommonFunctions::SetHomeButtonDoubleClickEnabled>, "SetHomeButtonDoubleClickEnabled"},
|
{50, nullptr, "SetHomeButtonDoubleClickEnabled"},
|
||||||
{51, D<&IAppletCommonFunctions::GetHomeButtonDoubleClickEnabled>, "GetHomeButtonDoubleClickEnabled"},
|
{51, D<&IAppletCommonFunctions::GetHomeButtonDoubleClickEnabled>, "GetHomeButtonDoubleClickEnabled"},
|
||||||
{52, nullptr, "IsHomeButtonShortPressedBlocked"},
|
{52, nullptr, "IsHomeButtonShortPressedBlocked"},
|
||||||
{60, nullptr, "IsVrModeCurtainRequired"},
|
{60, nullptr, "IsVrModeCurtainRequired"},
|
||||||
|
@ -40,13 +40,6 @@ IAppletCommonFunctions::IAppletCommonFunctions(Core::System& system_,
|
||||||
|
|
||||||
IAppletCommonFunctions::~IAppletCommonFunctions() = default;
|
IAppletCommonFunctions::~IAppletCommonFunctions() = default;
|
||||||
|
|
||||||
Result IAppletCommonFunctions::SetHomeButtonDoubleClickEnabled(
|
|
||||||
bool home_button_double_click_enabled) {
|
|
||||||
LOG_WARNING(Service_AM, "(STUBBED) called, home_button_double_click_enabled={}",
|
|
||||||
home_button_double_click_enabled);
|
|
||||||
R_SUCCEED();
|
|
||||||
}
|
|
||||||
|
|
||||||
Result IAppletCommonFunctions::GetHomeButtonDoubleClickEnabled(
|
Result IAppletCommonFunctions::GetHomeButtonDoubleClickEnabled(
|
||||||
Out<bool> out_home_button_double_click_enabled) {
|
Out<bool> out_home_button_double_click_enabled) {
|
||||||
LOG_WARNING(Service_AM, "(STUBBED) called");
|
LOG_WARNING(Service_AM, "(STUBBED) called");
|
||||||
|
|
|
@ -16,7 +16,6 @@ public:
|
||||||
~IAppletCommonFunctions() override;
|
~IAppletCommonFunctions() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Result SetHomeButtonDoubleClickEnabled(bool home_button_double_click_enabled);
|
|
||||||
Result GetHomeButtonDoubleClickEnabled(Out<bool> out_home_button_double_click_enabled);
|
Result GetHomeButtonDoubleClickEnabled(Out<bool> out_home_button_double_click_enabled);
|
||||||
Result SetCpuBoostRequestPriority(s32 priority);
|
Result SetCpuBoostRequestPriority(s32 priority);
|
||||||
Result GetCurrentApplicationId(Out<u64> out_application_id);
|
Result GetCurrentApplicationId(Out<u64> out_application_id);
|
||||||
|
|
|
@ -9,16 +9,12 @@
|
||||||
#include "core/hle/service/am/service/application_accessor.h"
|
#include "core/hle/service/am/service/application_accessor.h"
|
||||||
#include "core/hle/service/am/service/library_applet_accessor.h"
|
#include "core/hle/service/am/service/library_applet_accessor.h"
|
||||||
#include "core/hle/service/am/service/storage.h"
|
#include "core/hle/service/am/service/storage.h"
|
||||||
#include "core/hle/service/am/window_system.h"
|
|
||||||
#include "core/hle/service/cmif_serialization.h"
|
#include "core/hle/service/cmif_serialization.h"
|
||||||
#include "core/hle/service/glue/glue_manager.h"
|
|
||||||
|
|
||||||
namespace Service::AM {
|
namespace Service::AM {
|
||||||
|
|
||||||
IApplicationAccessor::IApplicationAccessor(Core::System& system_, std::shared_ptr<Applet> applet,
|
IApplicationAccessor::IApplicationAccessor(Core::System& system_, std::shared_ptr<Applet> applet)
|
||||||
WindowSystem& window_system)
|
: ServiceFramework{system_, "IApplicationAccessor"}, m_applet(std::move(applet)) {
|
||||||
: ServiceFramework{system_, "IApplicationAccessor"}, m_window_system(window_system),
|
|
||||||
m_applet(std::move(applet)) {
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, D<&IApplicationAccessor::GetAppletStateChangedEvent>, "GetAppletStateChangedEvent"},
|
{0, D<&IApplicationAccessor::GetAppletStateChangedEvent>, "GetAppletStateChangedEvent"},
|
||||||
|
@ -63,15 +59,7 @@ Result IApplicationAccessor::Start() {
|
||||||
|
|
||||||
Result IApplicationAccessor::RequestExit() {
|
Result IApplicationAccessor::RequestExit() {
|
||||||
LOG_INFO(Service_AM, "called");
|
LOG_INFO(Service_AM, "called");
|
||||||
|
m_applet->message_queue.RequestExit();
|
||||||
std::scoped_lock lk{m_applet->lock};
|
|
||||||
if (m_applet->exit_locked) {
|
|
||||||
m_applet->lifecycle_manager.RequestExit();
|
|
||||||
m_applet->UpdateSuspensionStateLocked(true);
|
|
||||||
} else {
|
|
||||||
m_applet->process->Terminate();
|
|
||||||
}
|
|
||||||
|
|
||||||
R_SUCCEED();
|
R_SUCCEED();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,14 +71,13 @@ Result IApplicationAccessor::Terminate() {
|
||||||
|
|
||||||
Result IApplicationAccessor::GetResult() {
|
Result IApplicationAccessor::GetResult() {
|
||||||
LOG_INFO(Service_AM, "called");
|
LOG_INFO(Service_AM, "called");
|
||||||
std::scoped_lock lk{m_applet->lock};
|
R_SUCCEED();
|
||||||
R_RETURN(m_applet->terminate_result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Result IApplicationAccessor::GetAppletStateChangedEvent(
|
Result IApplicationAccessor::GetAppletStateChangedEvent(
|
||||||
OutCopyHandle<Kernel::KReadableEvent> out_event) {
|
OutCopyHandle<Kernel::KReadableEvent> out_event) {
|
||||||
LOG_INFO(Service_AM, "called");
|
LOG_INFO(Service_AM, "called");
|
||||||
*out_event = m_applet->state_changed_event.GetHandle();
|
*out_event = m_applet->caller_applet_broker->GetStateChangedEvent().GetHandle();
|
||||||
R_SUCCEED();
|
R_SUCCEED();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,15 +96,8 @@ Result IApplicationAccessor::PushLaunchParameter(LaunchParameterKind kind,
|
||||||
|
|
||||||
Result IApplicationAccessor::GetApplicationControlProperty(
|
Result IApplicationAccessor::GetApplicationControlProperty(
|
||||||
OutBuffer<BufferAttr_HipcMapAlias> out_control_property) {
|
OutBuffer<BufferAttr_HipcMapAlias> out_control_property) {
|
||||||
LOG_INFO(Service_AM, "called");
|
LOG_WARNING(Service_AM, "(STUBBED) called");
|
||||||
|
R_THROW(ResultUnknown);
|
||||||
std::vector<u8> nacp;
|
|
||||||
R_TRY(system.GetARPManager().GetControlProperty(&nacp, m_applet->program_id));
|
|
||||||
|
|
||||||
std::memcpy(out_control_property.data(), nacp.data(),
|
|
||||||
std::min(out_control_property.size(), nacp.size()));
|
|
||||||
|
|
||||||
R_SUCCEED();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Result IApplicationAccessor::SetUsers(bool enable,
|
Result IApplicationAccessor::SetUsers(bool enable,
|
||||||
|
@ -134,9 +114,8 @@ Result IApplicationAccessor::GetCurrentLibraryApplet(
|
||||||
}
|
}
|
||||||
|
|
||||||
Result IApplicationAccessor::RequestForApplicationToGetForeground() {
|
Result IApplicationAccessor::RequestForApplicationToGetForeground() {
|
||||||
LOG_INFO(Service_AM, "called");
|
LOG_WARNING(Service_AM, "(STUBBED) called");
|
||||||
m_window_system.RequestApplicationToGetForeground();
|
R_THROW(ResultUnknown);
|
||||||
R_SUCCEED();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Result IApplicationAccessor::CheckRightsEnvironmentAvailable(Out<bool> out_is_available) {
|
Result IApplicationAccessor::CheckRightsEnvironmentAvailable(Out<bool> out_is_available) {
|
||||||
|
|
|
@ -13,12 +13,10 @@ namespace Service::AM {
|
||||||
struct Applet;
|
struct Applet;
|
||||||
class ILibraryAppletAccessor;
|
class ILibraryAppletAccessor;
|
||||||
class IStorage;
|
class IStorage;
|
||||||
class WindowSystem;
|
|
||||||
|
|
||||||
class IApplicationAccessor final : public ServiceFramework<IApplicationAccessor> {
|
class IApplicationAccessor final : public ServiceFramework<IApplicationAccessor> {
|
||||||
public:
|
public:
|
||||||
explicit IApplicationAccessor(Core::System& system_, std::shared_ptr<Applet> applet,
|
explicit IApplicationAccessor(Core::System& system_, std::shared_ptr<Applet> applet);
|
||||||
WindowSystem& window_system);
|
|
||||||
~IApplicationAccessor() override;
|
~IApplicationAccessor() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -36,7 +34,6 @@ private:
|
||||||
Result GetNsRightsEnvironmentHandle(Out<u64> out_handle);
|
Result GetNsRightsEnvironmentHandle(Out<u64> out_handle);
|
||||||
Result ReportApplicationExitTimeout();
|
Result ReportApplicationExitTimeout();
|
||||||
|
|
||||||
WindowSystem& m_window_system;
|
|
||||||
const std::shared_ptr<Applet> m_applet;
|
const std::shared_ptr<Applet> m_applet;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,57 +1,17 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include "core/file_sys/nca_metadata.h"
|
|
||||||
#include "core/file_sys/registered_cache.h"
|
|
||||||
#include "core/hle/service/am/am_types.h"
|
#include "core/hle/service/am/am_types.h"
|
||||||
#include "core/hle/service/am/applet.h"
|
#include "core/hle/service/am/applet.h"
|
||||||
#include "core/hle/service/am/applet_manager.h"
|
#include "core/hle/service/am/applet_manager.h"
|
||||||
#include "core/hle/service/am/process_creation.h"
|
|
||||||
#include "core/hle/service/am/service/application_accessor.h"
|
#include "core/hle/service/am/service/application_accessor.h"
|
||||||
#include "core/hle/service/am/service/application_creator.h"
|
#include "core/hle/service/am/service/application_creator.h"
|
||||||
#include "core/hle/service/am/window_system.h"
|
|
||||||
#include "core/hle/service/cmif_serialization.h"
|
#include "core/hle/service/cmif_serialization.h"
|
||||||
#include "core/loader/loader.h"
|
|
||||||
|
|
||||||
namespace Service::AM {
|
namespace Service::AM {
|
||||||
|
|
||||||
namespace {
|
IApplicationCreator::IApplicationCreator(Core::System& system_)
|
||||||
|
: ServiceFramework{system_, "IApplicationCreator"} {
|
||||||
Result CreateGuestApplication(SharedPointer<IApplicationAccessor>* out_application_accessor,
|
|
||||||
Core::System& system, WindowSystem& window_system, u64 program_id) {
|
|
||||||
FileSys::VirtualFile nca_raw{};
|
|
||||||
|
|
||||||
// Get the program NCA from storage.
|
|
||||||
auto& storage = system.GetContentProviderUnion();
|
|
||||||
nca_raw = storage.GetEntryRaw(program_id, FileSys::ContentRecordType::Program);
|
|
||||||
|
|
||||||
// Ensure we retrieved a program NCA.
|
|
||||||
R_UNLESS(nca_raw != nullptr, ResultUnknown);
|
|
||||||
|
|
||||||
std::vector<u8> control;
|
|
||||||
std::unique_ptr<Loader::AppLoader> loader;
|
|
||||||
Loader::ResultStatus result;
|
|
||||||
auto process =
|
|
||||||
CreateApplicationProcess(control, loader, result, system, nca_raw, program_id, 0);
|
|
||||||
R_UNLESS(process != nullptr, ResultUnknown);
|
|
||||||
|
|
||||||
const auto applet = std::make_shared<Applet>(system, std::move(process), true);
|
|
||||||
applet->program_id = program_id;
|
|
||||||
applet->applet_id = AppletId::Application;
|
|
||||||
applet->type = AppletType::Application;
|
|
||||||
applet->library_applet_mode = LibraryAppletMode::AllForeground;
|
|
||||||
|
|
||||||
window_system.TrackApplet(applet, true);
|
|
||||||
|
|
||||||
*out_application_accessor =
|
|
||||||
std::make_shared<IApplicationAccessor>(system, applet, window_system);
|
|
||||||
R_SUCCEED();
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace
|
|
||||||
|
|
||||||
IApplicationCreator::IApplicationCreator(Core::System& system_, WindowSystem& window_system)
|
|
||||||
: ServiceFramework{system_, "IApplicationCreator"}, m_window_system{window_system} {
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, D<&IApplicationCreator::CreateApplication>, "CreateApplication"},
|
{0, D<&IApplicationCreator::CreateApplication>, "CreateApplication"},
|
||||||
|
@ -68,9 +28,8 @@ IApplicationCreator::~IApplicationCreator() = default;
|
||||||
|
|
||||||
Result IApplicationCreator::CreateApplication(
|
Result IApplicationCreator::CreateApplication(
|
||||||
Out<SharedPointer<IApplicationAccessor>> out_application_accessor, u64 application_id) {
|
Out<SharedPointer<IApplicationAccessor>> out_application_accessor, u64 application_id) {
|
||||||
LOG_INFO(Service_NS, "called, application_id={:016X}", application_id);
|
LOG_ERROR(Service_NS, "called, application_id={:x}", application_id);
|
||||||
R_RETURN(
|
R_THROW(ResultUnknown);
|
||||||
CreateGuestApplication(out_application_accessor, system, m_window_system, application_id));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Service::AM
|
} // namespace Service::AM
|
||||||
|
|
|
@ -10,17 +10,14 @@ namespace Service::AM {
|
||||||
|
|
||||||
class IApplicationAccessor;
|
class IApplicationAccessor;
|
||||||
struct Applet;
|
struct Applet;
|
||||||
class WindowSystem;
|
|
||||||
|
|
||||||
class IApplicationCreator final : public ServiceFramework<IApplicationCreator> {
|
class IApplicationCreator final : public ServiceFramework<IApplicationCreator> {
|
||||||
public:
|
public:
|
||||||
explicit IApplicationCreator(Core::System& system_, WindowSystem& window_system);
|
explicit IApplicationCreator(Core::System& system_);
|
||||||
~IApplicationCreator() override;
|
~IApplicationCreator() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Result CreateApplication(Out<SharedPointer<IApplicationAccessor>>, u64 application_id);
|
Result CreateApplication(Out<SharedPointer<IApplicationAccessor>>, u64 application_id);
|
||||||
|
|
||||||
WindowSystem& m_window_system;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Service::AM
|
} // namespace Service::AM
|
||||||
|
|
|
@ -181,8 +181,7 @@ Result IApplicationFunctions::GetDesiredLanguage(Out<u64> out_language_code) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Result IApplicationFunctions::SetTerminateResult(Result terminate_result) {
|
Result IApplicationFunctions::SetTerminateResult(Result terminate_result) {
|
||||||
LOG_INFO(Service_AM, "(STUBBED) called, result={:#x} ({:04}-{:04})",
|
LOG_INFO(Service_AM, "(STUBBED) called, result={:#x} ({}-{})", terminate_result.GetInnerValue(),
|
||||||
terminate_result.GetInnerValue(),
|
|
||||||
static_cast<u32>(terminate_result.GetModule()) + 2000,
|
static_cast<u32>(terminate_result.GetModule()) + 2000,
|
||||||
terminate_result.GetDescription());
|
terminate_result.GetDescription());
|
||||||
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
namespace Service::AM {
|
namespace Service::AM {
|
||||||
|
|
||||||
IApplicationProxy::IApplicationProxy(Core::System& system_, std::shared_ptr<Applet> applet,
|
IApplicationProxy::IApplicationProxy(Core::System& system_, std::shared_ptr<Applet> applet,
|
||||||
Kernel::KProcess* process, WindowSystem& window_system)
|
Kernel::KProcess* process)
|
||||||
: ServiceFramework{system_, "IApplicationProxy"},
|
: ServiceFramework{system_, "IApplicationProxy"}, m_process{process}, m_applet{
|
||||||
m_window_system{window_system}, m_process{process}, m_applet{std::move(applet)} {
|
std::move(applet)} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, D<&IApplicationProxy::GetCommonStateGetter>, "GetCommonStateGetter"},
|
{0, D<&IApplicationProxy::GetCommonStateGetter>, "GetCommonStateGetter"},
|
||||||
|
@ -70,7 +70,7 @@ Result IApplicationProxy::GetDebugFunctions(
|
||||||
Result IApplicationProxy::GetWindowController(
|
Result IApplicationProxy::GetWindowController(
|
||||||
Out<SharedPointer<IWindowController>> out_window_controller) {
|
Out<SharedPointer<IWindowController>> out_window_controller) {
|
||||||
LOG_DEBUG(Service_AM, "called");
|
LOG_DEBUG(Service_AM, "called");
|
||||||
*out_window_controller = std::make_shared<IWindowController>(system, m_applet, m_window_system);
|
*out_window_controller = std::make_shared<IWindowController>(system, m_applet);
|
||||||
R_SUCCEED();
|
R_SUCCEED();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,8 +91,7 @@ Result IApplicationProxy::GetCommonStateGetter(
|
||||||
Result IApplicationProxy::GetLibraryAppletCreator(
|
Result IApplicationProxy::GetLibraryAppletCreator(
|
||||||
Out<SharedPointer<ILibraryAppletCreator>> out_library_applet_creator) {
|
Out<SharedPointer<ILibraryAppletCreator>> out_library_applet_creator) {
|
||||||
LOG_DEBUG(Service_AM, "called");
|
LOG_DEBUG(Service_AM, "called");
|
||||||
*out_library_applet_creator =
|
*out_library_applet_creator = std::make_shared<ILibraryAppletCreator>(system, m_applet);
|
||||||
std::make_shared<ILibraryAppletCreator>(system, m_applet, m_window_system);
|
|
||||||
R_SUCCEED();
|
R_SUCCEED();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,12 +18,11 @@ class ILibraryAppletCreator;
|
||||||
class IProcessWindingController;
|
class IProcessWindingController;
|
||||||
class ISelfController;
|
class ISelfController;
|
||||||
class IWindowController;
|
class IWindowController;
|
||||||
class WindowSystem;
|
|
||||||
|
|
||||||
class IApplicationProxy final : public ServiceFramework<IApplicationProxy> {
|
class IApplicationProxy final : public ServiceFramework<IApplicationProxy> {
|
||||||
public:
|
public:
|
||||||
explicit IApplicationProxy(Core::System& system_, std::shared_ptr<Applet> applet,
|
explicit IApplicationProxy(Core::System& system_, std::shared_ptr<Applet> applet,
|
||||||
Kernel::KProcess* process, WindowSystem& window_system);
|
Kernel::KProcess* process);
|
||||||
~IApplicationProxy();
|
~IApplicationProxy();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -41,7 +40,6 @@ private:
|
||||||
Out<SharedPointer<IApplicationFunctions>> out_application_functions);
|
Out<SharedPointer<IApplicationFunctions>> out_application_functions);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
WindowSystem& m_window_system;
|
|
||||||
Kernel::KProcess* const m_process;
|
Kernel::KProcess* const m_process;
|
||||||
const std::shared_ptr<Applet> m_applet;
|
const std::shared_ptr<Applet> m_applet;
|
||||||
};
|
};
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue