diff options
author | pineappleEA <pineaea@gmail.com> | 2023-06-13 09:04:01 +0200 |
---|---|---|
committer | pineappleEA <pineaea@gmail.com> | 2023-06-13 09:04:01 +0200 |
commit | fbb35fcc7e453e749b3767e64027ae27780c5f53 (patch) | |
tree | 1cf210320da1480472d509d7cd755831e7500ea6 | |
parent | abe9c2ff0df0c3ba8d39154526ca00d04cc55000 (diff) |
early-access version 3669EA-3669
23 files changed, 146 insertions, 222 deletions
@@ -1,7 +1,7 @@ | |||
1 | yuzu emulator early access | 1 | yuzu emulator early access |
2 | ============= | 2 | ============= |
3 | 3 | ||
4 | This is the source code for early-access 3667. | 4 | This is the source code for early-access 3669. |
5 | 5 | ||
6 | ## Legal Notice | 6 | ## Legal Notice |
7 | 7 | ||
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt index c5722a5a1..fa84f94f5 100755 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt | |||
@@ -26,13 +26,18 @@ enum class IntSetting( | |||
26 | RENDERER_FORCE_MAX_CLOCK( | 26 | RENDERER_FORCE_MAX_CLOCK( |
27 | "force_max_clock", | 27 | "force_max_clock", |
28 | Settings.SECTION_RENDERER, | 28 | Settings.SECTION_RENDERER, |
29 | 1 | 29 | 0 |
30 | ), | 30 | ), |
31 | RENDERER_ASYNCHRONOUS_SHADERS( | 31 | RENDERER_ASYNCHRONOUS_SHADERS( |
32 | "use_asynchronous_shaders", | 32 | "use_asynchronous_shaders", |
33 | Settings.SECTION_RENDERER, | 33 | Settings.SECTION_RENDERER, |
34 | 0 | 34 | 0 |
35 | ), | 35 | ), |
36 | RENDERER_REACTIVE_FLUSHING( | ||
37 | "use_reactive_flushing", | ||
38 | Settings.SECTION_RENDERER, | ||
39 | 0 | ||
40 | ), | ||
36 | RENDERER_DEBUG( | 41 | RENDERER_DEBUG( |
37 | "debug", | 42 | "debug", |
38 | Settings.SECTION_RENDERER, | 43 | Settings.SECTION_RENDERER, |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt index 061046b2e..1ceaa6fb4 100755 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt | |||
@@ -321,6 +321,15 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
321 | IntSetting.RENDERER_ASYNCHRONOUS_SHADERS.defaultValue | 321 | IntSetting.RENDERER_ASYNCHRONOUS_SHADERS.defaultValue |
322 | ) | 322 | ) |
323 | ) | 323 | ) |
324 | add( | ||
325 | SwitchSetting( | ||
326 | IntSetting.RENDERER_REACTIVE_FLUSHING, | ||
327 | R.string.renderer_reactive_flushing, | ||
328 | R.string.renderer_reactive_flushing_description, | ||
329 | IntSetting.RENDERER_REACTIVE_FLUSHING.key, | ||
330 | IntSetting.RENDERER_REACTIVE_FLUSHING.defaultValue | ||
331 | ) | ||
332 | ) | ||
324 | } | 333 | } |
325 | } | 334 | } |
326 | 335 | ||
diff --git a/src/android/app/src/main/jni/config.cpp b/src/android/app/src/main/jni/config.cpp index 2d622a048..43e8aa72a 100755 --- a/src/android/app/src/main/jni/config.cpp +++ b/src/android/app/src/main/jni/config.cpp | |||
@@ -235,9 +235,13 @@ void Config::ReadValues() { | |||
235 | Settings::values.async_presentation = | 235 | Settings::values.async_presentation = |
236 | config->GetBoolean("Renderer", "async_presentation", true); | 236 | config->GetBoolean("Renderer", "async_presentation", true); |
237 | 237 | ||
238 | // Enable force_max_clock by default on Android | 238 | // Disable force_max_clock by default on Android |
239 | Settings::values.renderer_force_max_clock = | 239 | Settings::values.renderer_force_max_clock = |
240 | config->GetBoolean("Renderer", "force_max_clock", true); | 240 | config->GetBoolean("Renderer", "force_max_clock", false); |
241 | |||
242 | // Disable use_reactive_flushing by default on Android | ||
243 | Settings::values.use_reactive_flushing = | ||
244 | config->GetBoolean("Renderer", "use_reactive_flushing", false); | ||
241 | 245 | ||
242 | // Audio | 246 | // Audio |
243 | ReadSetting("Audio", Settings::values.sink_id); | 247 | ReadSetting("Audio", Settings::values.sink_id); |
diff --git a/src/android/app/src/main/jni/default_ini.h b/src/android/app/src/main/jni/default_ini.h index c5dfaff54..d81422a74 100755 --- a/src/android/app/src/main/jni/default_ini.h +++ b/src/android/app/src/main/jni/default_ini.h | |||
@@ -251,7 +251,7 @@ backend = | |||
251 | # 0: Off, 1 (default): On | 251 | # 0: Off, 1 (default): On |
252 | async_presentation = | 252 | async_presentation = |
253 | 253 | ||
254 | # Enable graphics API debugging mode. | 254 | # Forces the GPU to run at the maximum possible clocks (thermal constraints will still be applied). |
255 | # 0 (default): Disabled, 1: Enabled | 255 | # 0 (default): Disabled, 1: Enabled |
256 | force_max_clock = | 256 | force_max_clock = |
257 | 257 | ||
@@ -328,6 +328,10 @@ shader_backend = | |||
328 | # 0 (default): Off, 1: On | 328 | # 0 (default): Off, 1: On |
329 | use_asynchronous_shaders = | 329 | use_asynchronous_shaders = |
330 | 330 | ||
331 | # Uses reactive flushing instead of predictive flushing. Allowing a more accurate syncing of memory. | ||
332 | # 0 (default): Off, 1: On | ||
333 | use_reactive_flushing = | ||
334 | |||
331 | # NVDEC emulation. | 335 | # NVDEC emulation. |
332 | # 0: Disabled, 1: CPU Decoding, 2 (default): GPU Decoding | 336 | # 0: Disabled, 1: CPU Decoding, 2 (default): GPU Decoding |
333 | nvdec_emulation = | 337 | nvdec_emulation = |
diff --git a/src/android/app/src/main/res/values-de/strings.xml b/src/android/app/src/main/res/values-de/strings.xml index 795320e3e..969223ef8 100755 --- a/src/android/app/src/main/res/values-de/strings.xml +++ b/src/android/app/src/main/res/values-de/strings.xml | |||
@@ -176,7 +176,6 @@ | |||
176 | <string name="installing_driver">Treiber wird installiert...</string> | 176 | <string name="installing_driver">Treiber wird installiert...</string> |
177 | 177 | ||
178 | <!-- Preferences Screen --> | 178 | <!-- Preferences Screen --> |
179 | <string name="preferences_advanced_settings">Erweiterte Einstellungen</string> | ||
180 | <string name="preferences_settings">Einstellungen</string> | 179 | <string name="preferences_settings">Einstellungen</string> |
181 | <string name="preferences_general">Allgemein</string> | 180 | <string name="preferences_general">Allgemein</string> |
182 | <string name="preferences_system">System</string> | 181 | <string name="preferences_system">System</string> |
@@ -228,7 +227,6 @@ | |||
228 | <string name="performance_warning">Das Deaktivieren dieser Einstellung führt zu erheblichen Leistungsverlusten! Für ein optimales Erlebnis wird empfohlen, sie aktiviert zu lassen.</string> | 227 | <string name="performance_warning">Das Deaktivieren dieser Einstellung führt zu erheblichen Leistungsverlusten! Für ein optimales Erlebnis wird empfohlen, sie aktiviert zu lassen.</string> |
229 | 228 | ||
230 | <!-- Region Names --> | 229 | <!-- Region Names --> |
231 | <string name="region_auto">Automatisch auswählen</string> | ||
232 | <string name="region_japan">Japan</string> | 230 | <string name="region_japan">Japan</string> |
233 | <string name="region_usa">USA</string> | 231 | <string name="region_usa">USA</string> |
234 | <string name="region_europe">Europa</string> | 232 | <string name="region_europe">Europa</string> |
@@ -301,7 +299,6 @@ | |||
301 | <string name="ratio_stretch">Auf Fenster anpassen</string> | 299 | <string name="ratio_stretch">Auf Fenster anpassen</string> |
302 | 300 | ||
303 | <!-- CPU Accuracy --> | 301 | <!-- CPU Accuracy --> |
304 | <string name="cpu_accuracy_auto">Auto</string> | ||
305 | <string name="cpu_accuracy_accurate">Akkurat</string> | 302 | <string name="cpu_accuracy_accurate">Akkurat</string> |
306 | <string name="cpu_accuracy_unsafe">Unsicher</string> | 303 | <string name="cpu_accuracy_unsafe">Unsicher</string> |
307 | <string name="cpu_accuracy_paranoid">Paranoid (Langsam)</string> | 304 | <string name="cpu_accuracy_paranoid">Paranoid (Langsam)</string> |
diff --git a/src/android/app/src/main/res/values-es/strings.xml b/src/android/app/src/main/res/values-es/strings.xml index a7b4ebef4..986e80e50 100755 --- a/src/android/app/src/main/res/values-es/strings.xml +++ b/src/android/app/src/main/res/values-es/strings.xml | |||
@@ -61,11 +61,6 @@ | |||
61 | <string name="invalid_keys_file">Archivo de claves inválido seleccionado</string> | 61 | <string name="invalid_keys_file">Archivo de claves inválido seleccionado</string> |
62 | <string name="install_keys_success">Claves instaladas correctamente</string> | 62 | <string name="install_keys_success">Claves instaladas correctamente</string> |
63 | <string name="reading_keys_failure">Error al leer las claves de cifrado</string> | 63 | <string name="reading_keys_failure">Error al leer las claves de cifrado</string> |
64 | <string name="install_keys_failure_extension_description"> | ||
65 | 1. Verifique que sus claves acaben con la extensión .keys.\n\n | ||
66 | 2. Las claves no deben de estar almacenadas en la carpeta Descargas.\n\n | ||
67 | Resuelva el/los problema(s) y vuelva a intentarlo. | ||
68 | </string> | ||
69 | <string name="invalid_keys_error">Claves de cifrado no válidas</string> | 64 | <string name="invalid_keys_error">Claves de cifrado no válidas</string> |
70 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> | 65 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> |
71 | <string name="install_keys_failure_description">El archivo seleccionado es incorrecto o está corrupto. Vuelva a redumpear sus claves.</string> | 66 | <string name="install_keys_failure_description">El archivo seleccionado es incorrecto o está corrupto. Vuelva a redumpear sus claves.</string> |
@@ -184,7 +179,6 @@ | |||
184 | <string name="installing_driver">Instalando driver...</string> | 179 | <string name="installing_driver">Instalando driver...</string> |
185 | 180 | ||
186 | <!-- Preferences Screen --> | 181 | <!-- Preferences Screen --> |
187 | <string name="preferences_advanced_settings">Configuración avanzada</string> | ||
188 | <string name="preferences_settings">Ajustes</string> | 182 | <string name="preferences_settings">Ajustes</string> |
189 | <string name="preferences_general">General</string> | 183 | <string name="preferences_general">General</string> |
190 | <string name="preferences_system">Sistema</string> | 184 | <string name="preferences_system">Sistema</string> |
@@ -238,7 +232,6 @@ | |||
238 | <string name="performance_warning">¡Desactivar esta configuración reducirá significativamente el rendimiento de la emulación! Para obtener la mejor experiencia, se recomienda dejar esta configuración habilitada.</string> | 232 | <string name="performance_warning">¡Desactivar esta configuración reducirá significativamente el rendimiento de la emulación! Para obtener la mejor experiencia, se recomienda dejar esta configuración habilitada.</string> |
239 | 233 | ||
240 | <!-- Region Names --> | 234 | <!-- Region Names --> |
241 | <string name="region_auto">Auto seleccionar</string> | ||
242 | <string name="region_japan">Japón</string> | 235 | <string name="region_japan">Japón</string> |
243 | <string name="region_usa">EEUU</string> | 236 | <string name="region_usa">EEUU</string> |
244 | <string name="region_europe">Europa</string> | 237 | <string name="region_europe">Europa</string> |
@@ -311,7 +304,6 @@ | |||
311 | <string name="ratio_stretch">Ajustar a la ventana</string> | 304 | <string name="ratio_stretch">Ajustar a la ventana</string> |
312 | 305 | ||
313 | <!-- CPU Accuracy --> | 306 | <!-- CPU Accuracy --> |
314 | <string name="cpu_accuracy_auto">Auto</string> | ||
315 | <string name="cpu_accuracy_accurate">Preciso</string> | 307 | <string name="cpu_accuracy_accurate">Preciso</string> |
316 | <string name="cpu_accuracy_unsafe">Impreciso</string> | 308 | <string name="cpu_accuracy_unsafe">Impreciso</string> |
317 | <string name="cpu_accuracy_paranoid">Paranoico (Lento)</string> | 309 | <string name="cpu_accuracy_paranoid">Paranoico (Lento)</string> |
diff --git a/src/android/app/src/main/res/values-fr/strings.xml b/src/android/app/src/main/res/values-fr/strings.xml index 905ab5c03..14a9b2d5c 100755 --- a/src/android/app/src/main/res/values-fr/strings.xml +++ b/src/android/app/src/main/res/values-fr/strings.xml | |||
@@ -61,11 +61,6 @@ | |||
61 | <string name="invalid_keys_file">Fichier de clés sélectionné invalide</string> | 61 | <string name="invalid_keys_file">Fichier de clés sélectionné invalide</string> |
62 | <string name="install_keys_success">Clés installées avec succès</string> | 62 | <string name="install_keys_success">Clés installées avec succès</string> |
63 | <string name="reading_keys_failure">Erreur lors de la lecture des clés de chiffrement</string> | 63 | <string name="reading_keys_failure">Erreur lors de la lecture des clés de chiffrement</string> |
64 | <string name="install_keys_failure_extension_description"> | ||
65 | 1. Vérifiez que vos clés ont l\'extension .keys.\n\n | ||
66 | 2. Les clés ne doivent pas être stockées dans le dossier Téléchargements.\n\n | ||
67 | Résolvez le(s) problème(s) et réessayez. | ||
68 | </string> | ||
69 | <string name="invalid_keys_error">Clés de chiffrement invalides</string> | 64 | <string name="invalid_keys_error">Clés de chiffrement invalides</string> |
70 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> | 65 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> |
71 | <string name="install_keys_failure_description">Le fichier sélectionné est incorrect ou corrompu. Veuillez dumper à nouveau vos clés.</string> | 66 | <string name="install_keys_failure_description">Le fichier sélectionné est incorrect ou corrompu. Veuillez dumper à nouveau vos clés.</string> |
@@ -184,7 +179,6 @@ | |||
184 | <string name="installing_driver">Installation du pilote...</string> | 179 | <string name="installing_driver">Installation du pilote...</string> |
185 | 180 | ||
186 | <!-- Preferences Screen --> | 181 | <!-- Preferences Screen --> |
187 | <string name="preferences_advanced_settings">Paramètres avancés</string> | ||
188 | <string name="preferences_settings">Paramètres</string> | 182 | <string name="preferences_settings">Paramètres</string> |
189 | <string name="preferences_general">Général</string> | 183 | <string name="preferences_general">Général</string> |
190 | <string name="preferences_system">Système</string> | 184 | <string name="preferences_system">Système</string> |
@@ -238,7 +232,6 @@ | |||
238 | <string name="performance_warning">La désactivation de ce paramètre réduira considérablement les performances d\'émulation ! Pour une expérience optimale, il est recommandé de laisser ce paramètre activé.</string> | 232 | <string name="performance_warning">La désactivation de ce paramètre réduira considérablement les performances d\'émulation ! Pour une expérience optimale, il est recommandé de laisser ce paramètre activé.</string> |
239 | 233 | ||
240 | <!-- Region Names --> | 234 | <!-- Region Names --> |
241 | <string name="region_auto">Sélection automatique</string> | ||
242 | <string name="region_japan">Japon</string> | 235 | <string name="region_japan">Japon</string> |
243 | <string name="region_usa">É.-U.A.</string> | 236 | <string name="region_usa">É.-U.A.</string> |
244 | <string name="region_europe">Europe</string> | 237 | <string name="region_europe">Europe</string> |
@@ -311,7 +304,6 @@ | |||
311 | <string name="ratio_stretch">Étirer à la fenêtre</string> | 304 | <string name="ratio_stretch">Étirer à la fenêtre</string> |
312 | 305 | ||
313 | <!-- CPU Accuracy --> | 306 | <!-- CPU Accuracy --> |
314 | <string name="cpu_accuracy_auto">Auto</string> | ||
315 | <string name="cpu_accuracy_accurate">Précis</string> | 307 | <string name="cpu_accuracy_accurate">Précis</string> |
316 | <string name="cpu_accuracy_unsafe">Risqué</string> | 308 | <string name="cpu_accuracy_unsafe">Risqué</string> |
317 | <string name="cpu_accuracy_paranoid">Paranoïaque (Lent)</string> | 309 | <string name="cpu_accuracy_paranoid">Paranoïaque (Lent)</string> |
diff --git a/src/android/app/src/main/res/values-it/strings.xml b/src/android/app/src/main/res/values-it/strings.xml index fede49650..47a4cfa31 100755 --- a/src/android/app/src/main/res/values-it/strings.xml +++ b/src/android/app/src/main/res/values-it/strings.xml | |||
@@ -61,10 +61,6 @@ | |||
61 | <string name="invalid_keys_file">Selezionate chiavi non valide</string> | 61 | <string name="invalid_keys_file">Selezionate chiavi non valide</string> |
62 | <string name="install_keys_success">Chiavi installate correttamente</string> | 62 | <string name="install_keys_success">Chiavi installate correttamente</string> |
63 | <string name="reading_keys_failure">Errore durante la lettura delle chiavi di crittografia</string> | 63 | <string name="reading_keys_failure">Errore durante la lettura delle chiavi di crittografia</string> |
64 | <string name="install_keys_failure_extension_description"> | ||
65 | 1. Verifica che le tue chiavi abbiano l\'estensione .keys.\n\n | ||
66 | 2. Le chiavi non devono essere archiviate nella cartella Download.\n\n | ||
67 | Risolvi i problemi e riprova.</string> | ||
68 | <string name="invalid_keys_error">Chiavi di crittografia non valide</string> | 64 | <string name="invalid_keys_error">Chiavi di crittografia non valide</string> |
69 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> | 65 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> |
70 | <string name="install_keys_failure_description">Il file selezionato è incorretto o corrotto. Per favore riesegui il dump delle tue chiavi.</string> | 66 | <string name="install_keys_failure_description">Il file selezionato è incorretto o corrotto. Per favore riesegui il dump delle tue chiavi.</string> |
@@ -183,7 +179,6 @@ Risolvi i problemi e riprova.</string> | |||
183 | <string name="installing_driver">Installando i driver...</string> | 179 | <string name="installing_driver">Installando i driver...</string> |
184 | 180 | ||
185 | <!-- Preferences Screen --> | 181 | <!-- Preferences Screen --> |
186 | <string name="preferences_advanced_settings">Impostazioni Avanzate</string> | ||
187 | <string name="preferences_settings">Impostazioni</string> | 182 | <string name="preferences_settings">Impostazioni</string> |
188 | <string name="preferences_general">Generali</string> | 183 | <string name="preferences_general">Generali</string> |
189 | <string name="preferences_system">Sistema</string> | 184 | <string name="preferences_system">Sistema</string> |
@@ -237,7 +232,6 @@ Risolvi i problemi e riprova.</string> | |||
237 | <string name="performance_warning">Disattivare questa impostazione può ridurre significativamente le performance di emulazione! Per una migliore esperienza, è consigliato lasciare questa impostazione attivata.</string> | 232 | <string name="performance_warning">Disattivare questa impostazione può ridurre significativamente le performance di emulazione! Per una migliore esperienza, è consigliato lasciare questa impostazione attivata.</string> |
238 | 233 | ||
239 | <!-- Region Names --> | 234 | <!-- Region Names --> |
240 | <string name="region_auto">Selezione automatica</string> | ||
241 | <string name="region_japan">Giappone</string> | 235 | <string name="region_japan">Giappone</string> |
242 | <string name="region_usa">USA</string> | 236 | <string name="region_usa">USA</string> |
243 | <string name="region_europe">Europa</string> | 237 | <string name="region_europe">Europa</string> |
@@ -310,7 +304,6 @@ Risolvi i problemi e riprova.</string> | |||
310 | <string name="ratio_stretch">Allunga a finestra</string> | 304 | <string name="ratio_stretch">Allunga a finestra</string> |
311 | 305 | ||
312 | <!-- CPU Accuracy --> | 306 | <!-- CPU Accuracy --> |
313 | <string name="cpu_accuracy_auto">Automatico</string> | ||
314 | <string name="cpu_accuracy_accurate">Accurata</string> | 307 | <string name="cpu_accuracy_accurate">Accurata</string> |
315 | <string name="cpu_accuracy_unsafe">Non sicura</string> | 308 | <string name="cpu_accuracy_unsafe">Non sicura</string> |
316 | <string name="cpu_accuracy_paranoid">Paranoico (Lento)</string> | 309 | <string name="cpu_accuracy_paranoid">Paranoico (Lento)</string> |
diff --git a/src/android/app/src/main/res/values-ja/strings.xml b/src/android/app/src/main/res/values-ja/strings.xml index 4a649778e..46eda9ef7 100755 --- a/src/android/app/src/main/res/values-ja/strings.xml +++ b/src/android/app/src/main/res/values-ja/strings.xml | |||
@@ -60,11 +60,6 @@ | |||
60 | <string name="invalid_keys_file">無効なキーファイルが選択されました</string> | 60 | <string name="invalid_keys_file">無効なキーファイルが選択されました</string> |
61 | <string name="install_keys_success">正常にインストールされました</string> | 61 | <string name="install_keys_success">正常にインストールされました</string> |
62 | <string name="reading_keys_failure">暗号化キーの読み取りエラー</string> | 62 | <string name="reading_keys_failure">暗号化キーの読み取りエラー</string> |
63 | <string name="install_keys_failure_extension_description"> | ||
64 | 1. キーの拡張子が .keys であることを確認します。\n\n | ||
65 | 2. キーはダウンロードフォルダに保存しないでください。\n\n | ||
66 | 問題を解決して、再度お試しください。 | ||
67 | </string> | ||
68 | <string name="invalid_keys_error">暗号化キーが無効です</string> | 63 | <string name="invalid_keys_error">暗号化キーが無効です</string> |
69 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> | 64 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> |
70 | <string name="install_keys_failure_description">選択されたファイルが不正または破損しています。キーを再ダンプしてください。</string> | 65 | <string name="install_keys_failure_description">選択されたファイルが不正または破損しています。キーを再ダンプしてください。</string> |
@@ -183,7 +178,6 @@ | |||
183 | <string name="installing_driver">インストール中…</string> | 178 | <string name="installing_driver">インストール中…</string> |
184 | 179 | ||
185 | <!-- Preferences Screen --> | 180 | <!-- Preferences Screen --> |
186 | <string name="preferences_advanced_settings">詳細設定</string> | ||
187 | <string name="preferences_settings">設定</string> | 181 | <string name="preferences_settings">設定</string> |
188 | <string name="preferences_general">全般</string> | 182 | <string name="preferences_general">全般</string> |
189 | <string name="preferences_system">システム</string> | 183 | <string name="preferences_system">システム</string> |
@@ -236,7 +230,6 @@ | |||
236 | <string name="performance_warning">この設定をオフにすると、エミュレーションのパフォーマンスが著しく低下します!最高の体験を得るためには、この設定を有効にしておくことをお勧めします。</string> | 230 | <string name="performance_warning">この設定をオフにすると、エミュレーションのパフォーマンスが著しく低下します!最高の体験を得るためには、この設定を有効にしておくことをお勧めします。</string> |
237 | 231 | ||
238 | <!-- Region Names --> | 232 | <!-- Region Names --> |
239 | <string name="region_auto">自動選択</string> | ||
240 | <string name="region_japan">日本</string> | 233 | <string name="region_japan">日本</string> |
241 | <string name="region_usa">アメリカ</string> | 234 | <string name="region_usa">アメリカ</string> |
242 | <string name="region_europe">ヨーロッパ</string> | 235 | <string name="region_europe">ヨーロッパ</string> |
@@ -309,7 +302,6 @@ | |||
309 | <string name="ratio_stretch">ウィンドウに合わせる</string> | 302 | <string name="ratio_stretch">ウィンドウに合わせる</string> |
310 | 303 | ||
311 | <!-- CPU Accuracy --> | 304 | <!-- CPU Accuracy --> |
312 | <string name="cpu_accuracy_auto">自動</string> | ||
313 | <string name="cpu_accuracy_accurate">正確</string> | 305 | <string name="cpu_accuracy_accurate">正確</string> |
314 | <string name="cpu_accuracy_unsafe">不安定</string> | 306 | <string name="cpu_accuracy_unsafe">不安定</string> |
315 | <string name="cpu_accuracy_paranoid">パラノイド (低速)</string> | 307 | <string name="cpu_accuracy_paranoid">パラノイド (低速)</string> |
diff --git a/src/android/app/src/main/res/values-ko/strings.xml b/src/android/app/src/main/res/values-ko/strings.xml index 43b00ebc4..5da80ab4b 100755 --- a/src/android/app/src/main/res/values-ko/strings.xml +++ b/src/android/app/src/main/res/values-ko/strings.xml | |||
@@ -61,11 +61,6 @@ | |||
61 | <string name="invalid_keys_file">잘못된 keys 파일 선택</string> | 61 | <string name="invalid_keys_file">잘못된 keys 파일 선택</string> |
62 | <string name="install_keys_success">keys가 성공적으로 설치됨</string> | 62 | <string name="install_keys_success">keys가 성공적으로 설치됨</string> |
63 | <string name="reading_keys_failure">암호화 keys 읽기 오류</string> | 63 | <string name="reading_keys_failure">암호화 keys 읽기 오류</string> |
64 | <string name="install_keys_failure_extension_description"> | ||
65 | 1. keys의 확장자가 .keys인지 확인하세요.\n\n | ||
66 | 2. keys는 다운로드 폴더에 저장하면 안 됩니다.\n\n | ||
67 | 문제를 해결하고 다시 시도하세요. | ||
68 | </string> | ||
69 | <string name="invalid_keys_error">잘못된 암호화 keys</string> | 64 | <string name="invalid_keys_error">잘못된 암호화 keys</string> |
70 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> | 65 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> |
71 | <string name="install_keys_failure_description">선택한 파일이 잘못되었거나 손상되었습니다. keys를 다시 덤프하세요.</string> | 66 | <string name="install_keys_failure_description">선택한 파일이 잘못되었거나 손상되었습니다. keys를 다시 덤프하세요.</string> |
@@ -184,7 +179,6 @@ | |||
184 | <string name="installing_driver">드라이버 설치 중...</string> | 179 | <string name="installing_driver">드라이버 설치 중...</string> |
185 | 180 | ||
186 | <!-- Preferences Screen --> | 181 | <!-- Preferences Screen --> |
187 | <string name="preferences_advanced_settings">고급 설정</string> | ||
188 | <string name="preferences_settings">설정</string> | 182 | <string name="preferences_settings">설정</string> |
189 | <string name="preferences_general">일반</string> | 183 | <string name="preferences_general">일반</string> |
190 | <string name="preferences_system">시스템</string> | 184 | <string name="preferences_system">시스템</string> |
@@ -238,7 +232,6 @@ | |||
238 | <string name="performance_warning">이 설정을 끄면 에뮬레이션 성능이 크게 저하됩니다! 최상의 환경을 위해 이 설정을 활성화된 상태로 두는 것이 좋습니다.</string> | 232 | <string name="performance_warning">이 설정을 끄면 에뮬레이션 성능이 크게 저하됩니다! 최상의 환경을 위해 이 설정을 활성화된 상태로 두는 것이 좋습니다.</string> |
239 | 233 | ||
240 | <!-- Region Names --> | 234 | <!-- Region Names --> |
241 | <string name="region_auto">자동 선택</string> | ||
242 | <string name="region_japan">일본</string> | 235 | <string name="region_japan">일본</string> |
243 | <string name="region_usa">미국</string> | 236 | <string name="region_usa">미국</string> |
244 | <string name="region_europe">유럽</string> | 237 | <string name="region_europe">유럽</string> |
@@ -311,7 +304,6 @@ | |||
311 | <string name="ratio_stretch">창에 맞게 늘림</string> | 304 | <string name="ratio_stretch">창에 맞게 늘림</string> |
312 | 305 | ||
313 | <!-- CPU Accuracy --> | 306 | <!-- CPU Accuracy --> |
314 | <string name="cpu_accuracy_auto">자동</string> | ||
315 | <string name="cpu_accuracy_accurate">정확함</string> | 307 | <string name="cpu_accuracy_accurate">정확함</string> |
316 | <string name="cpu_accuracy_unsafe">안전하지 않음</string> | 308 | <string name="cpu_accuracy_unsafe">안전하지 않음</string> |
317 | <string name="cpu_accuracy_paranoid">편집증 (느림)</string> | 309 | <string name="cpu_accuracy_paranoid">편집증 (느림)</string> |
diff --git a/src/android/app/src/main/res/values-nb/strings.xml b/src/android/app/src/main/res/values-nb/strings.xml index 80213aed4..3e1f9bce5 100755 --- a/src/android/app/src/main/res/values-nb/strings.xml +++ b/src/android/app/src/main/res/values-nb/strings.xml | |||
@@ -61,11 +61,6 @@ | |||
61 | <string name="invalid_keys_file">Ugyldig nøkkelfil valgt</string> | 61 | <string name="invalid_keys_file">Ugyldig nøkkelfil valgt</string> |
62 | <string name="install_keys_success">Nøkler vellykket installert</string> | 62 | <string name="install_keys_success">Nøkler vellykket installert</string> |
63 | <string name="reading_keys_failure">Feil ved lesing av krypteringsnøkler</string> | 63 | <string name="reading_keys_failure">Feil ved lesing av krypteringsnøkler</string> |
64 | <string name="install_keys_failure_extension_description"> | ||
65 | 1. Kontroller at nøklene har filtypen .keys.\n\n | ||
66 | 2. Nøkler må ikke lagres i nedlastingsmappen.\n\n | ||
67 | Løs problemet/problemene og prøv igjen. | ||
68 | </string> | ||
69 | <string name="invalid_keys_error">Ugyldige krypteringsnøkler</string> | 64 | <string name="invalid_keys_error">Ugyldige krypteringsnøkler</string> |
70 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> | 65 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> |
71 | <string name="install_keys_failure_description">Den valgte filen er feil eller ødelagt. Vennligst dump nøklene på nytt.</string> | 66 | <string name="install_keys_failure_description">Den valgte filen er feil eller ødelagt. Vennligst dump nøklene på nytt.</string> |
@@ -184,7 +179,6 @@ | |||
184 | <string name="installing_driver">Installerer driver...</string> | 179 | <string name="installing_driver">Installerer driver...</string> |
185 | 180 | ||
186 | <!-- Preferences Screen --> | 181 | <!-- Preferences Screen --> |
187 | <string name="preferences_advanced_settings">Avanserte innstillinger</string> | ||
188 | <string name="preferences_settings">Innstillinger</string> | 182 | <string name="preferences_settings">Innstillinger</string> |
189 | <string name="preferences_general">Generelt</string> | 183 | <string name="preferences_general">Generelt</string> |
190 | <string name="preferences_system">System</string> | 184 | <string name="preferences_system">System</string> |
@@ -238,7 +232,6 @@ | |||
238 | <string name="performance_warning">Hvis du slår av denne innstillingen, reduseres emuleringsytelsen betydelig! Vi anbefaler at du lar denne innstillingen være aktivert for å få den beste opplevelsen.</string> | 232 | <string name="performance_warning">Hvis du slår av denne innstillingen, reduseres emuleringsytelsen betydelig! Vi anbefaler at du lar denne innstillingen være aktivert for å få den beste opplevelsen.</string> |
239 | 233 | ||
240 | <!-- Region Names --> | 234 | <!-- Region Names --> |
241 | <string name="region_auto">Automatisk valg</string> | ||
242 | <string name="region_japan">Japan</string> | 235 | <string name="region_japan">Japan</string> |
243 | <string name="region_usa">USA</string> | 236 | <string name="region_usa">USA</string> |
244 | <string name="region_europe">Europa</string> | 237 | <string name="region_europe">Europa</string> |
@@ -311,7 +304,6 @@ | |||
311 | <string name="ratio_stretch">Strekk til Vindu</string> | 304 | <string name="ratio_stretch">Strekk til Vindu</string> |
312 | 305 | ||
313 | <!-- CPU Accuracy --> | 306 | <!-- CPU Accuracy --> |
314 | <string name="cpu_accuracy_auto">Auto</string> | ||
315 | <string name="cpu_accuracy_accurate">Nøyaktig</string> | 307 | <string name="cpu_accuracy_accurate">Nøyaktig</string> |
316 | <string name="cpu_accuracy_unsafe">Utrygt</string> | 308 | <string name="cpu_accuracy_unsafe">Utrygt</string> |
317 | <string name="cpu_accuracy_paranoid">Paranoid (Langsom)</string> | 309 | <string name="cpu_accuracy_paranoid">Paranoid (Langsom)</string> |
diff --git a/src/android/app/src/main/res/values-pl/strings.xml b/src/android/app/src/main/res/values-pl/strings.xml index fc9f49e0e..1cd1a8f87 100755 --- a/src/android/app/src/main/res/values-pl/strings.xml +++ b/src/android/app/src/main/res/values-pl/strings.xml | |||
@@ -61,10 +61,6 @@ | |||
61 | <string name="invalid_keys_file">Wybrano niepoprawne klucze</string> | 61 | <string name="invalid_keys_file">Wybrano niepoprawne klucze</string> |
62 | <string name="install_keys_success">Klucze zainstalowane pomyślnie</string> | 62 | <string name="install_keys_success">Klucze zainstalowane pomyślnie</string> |
63 | <string name="reading_keys_failure">Błąd podczas odczytu kluczy</string> | 63 | <string name="reading_keys_failure">Błąd podczas odczytu kluczy</string> |
64 | <string name="install_keys_failure_extension_description"> | ||
65 | 1. Upewnij się że klucze mają rozszerzenie .keys. \n\n | ||
66 | 2. Klucze nie mogą znajdować się w folderze Pobrane. \n\n | ||
67 | Rozwiąż te problemy (oba) i spróbuj ponownie.</string> | ||
68 | <string name="invalid_keys_error">Niepoprawne klucze</string> | 64 | <string name="invalid_keys_error">Niepoprawne klucze</string> |
69 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> | 65 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> |
70 | <string name="install_keys_failure_description">Wybrany plik jest niepoprawny lub uszkodzony. Zrzuć ponownie swoje klucze.</string> | 66 | <string name="install_keys_failure_description">Wybrany plik jest niepoprawny lub uszkodzony. Zrzuć ponownie swoje klucze.</string> |
@@ -183,7 +179,6 @@ Rozwiąż te problemy (oba) i spróbuj ponownie.</string> | |||
183 | <string name="installing_driver">Instalowanie sterownika...</string> | 179 | <string name="installing_driver">Instalowanie sterownika...</string> |
184 | 180 | ||
185 | <!-- Preferences Screen --> | 181 | <!-- Preferences Screen --> |
186 | <string name="preferences_advanced_settings">Zaawansowane</string> | ||
187 | <string name="preferences_settings">Ustawienia</string> | 182 | <string name="preferences_settings">Ustawienia</string> |
188 | <string name="preferences_general">Ogólne</string> | 183 | <string name="preferences_general">Ogólne</string> |
189 | <string name="preferences_system">System</string> | 184 | <string name="preferences_system">System</string> |
@@ -237,7 +232,6 @@ Rozwiąż te problemy (oba) i spróbuj ponownie.</string> | |||
237 | <string name="performance_warning">Wyłączenie tej opcji znacząco ograniczy wydajność! Dla najlepszego doświadczenia, zaleca się zostawienie tej opcji włączonej.</string> | 232 | <string name="performance_warning">Wyłączenie tej opcji znacząco ograniczy wydajność! Dla najlepszego doświadczenia, zaleca się zostawienie tej opcji włączonej.</string> |
238 | 233 | ||
239 | <!-- Region Names --> | 234 | <!-- Region Names --> |
240 | <string name="region_auto">Auto-wybór</string> | ||
241 | <string name="region_japan">Japonia</string> | 235 | <string name="region_japan">Japonia</string> |
242 | <string name="region_usa">USA</string> | 236 | <string name="region_usa">USA</string> |
243 | <string name="region_europe">Europa</string> | 237 | <string name="region_europe">Europa</string> |
@@ -310,7 +304,6 @@ Rozwiąż te problemy (oba) i spróbuj ponownie.</string> | |||
310 | <string name="ratio_stretch">Rozciągnij do Okna</string> | 304 | <string name="ratio_stretch">Rozciągnij do Okna</string> |
311 | 305 | ||
312 | <!-- CPU Accuracy --> | 306 | <!-- CPU Accuracy --> |
313 | <string name="cpu_accuracy_auto">Automatyczny</string> | ||
314 | <string name="cpu_accuracy_accurate">Dokładny</string> | 307 | <string name="cpu_accuracy_accurate">Dokładny</string> |
315 | <string name="cpu_accuracy_unsafe">Niebezpieczny</string> | 308 | <string name="cpu_accuracy_unsafe">Niebezpieczny</string> |
316 | <string name="cpu_accuracy_paranoid">Paranoid (Wolny)</string> | 309 | <string name="cpu_accuracy_paranoid">Paranoid (Wolny)</string> |
diff --git a/src/android/app/src/main/res/values-pt-rBR/strings.xml b/src/android/app/src/main/res/values-pt-rBR/strings.xml index 83185c385..35197c280 100755 --- a/src/android/app/src/main/res/values-pt-rBR/strings.xml +++ b/src/android/app/src/main/res/values-pt-rBR/strings.xml | |||
@@ -61,11 +61,6 @@ | |||
61 | <string name="invalid_keys_file">Ficheiro de chaves inválido</string> | 61 | <string name="invalid_keys_file">Ficheiro de chaves inválido</string> |
62 | <string name="install_keys_success">Chaves instaladas com sucesso</string> | 62 | <string name="install_keys_success">Chaves instaladas com sucesso</string> |
63 | <string name="reading_keys_failure">Erro ao ler chaves de encriptação</string> | 63 | <string name="reading_keys_failure">Erro ao ler chaves de encriptação</string> |
64 | <string name="install_keys_failure_extension_description"> | ||
65 | 1. Verifica se as tuas chaves têm a extensão .keys.\n\n | ||
66 | 2. As Chaves não podem estar gravadas na pasta Transferências.\n\n | ||
67 | Resolve esta(s) questões e tenta novamente. | ||
68 | </string> | ||
69 | <string name="invalid_keys_error">Chaves de encriptação inválidas</string> | 64 | <string name="invalid_keys_error">Chaves de encriptação inválidas</string> |
70 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> | 65 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> |
71 | <string name="install_keys_failure_description">O ficheiro selecionado está corrompido. Por favor recarrega as tuas chaves.</string> | 66 | <string name="install_keys_failure_description">O ficheiro selecionado está corrompido. Por favor recarrega as tuas chaves.</string> |
@@ -184,7 +179,6 @@ | |||
184 | <string name="installing_driver">A instalar o Driver...</string> | 179 | <string name="installing_driver">A instalar o Driver...</string> |
185 | 180 | ||
186 | <!-- Preferences Screen --> | 181 | <!-- Preferences Screen --> |
187 | <string name="preferences_advanced_settings">Configurações avançadas</string> | ||
188 | <string name="preferences_settings">Configurações</string> | 182 | <string name="preferences_settings">Configurações</string> |
189 | <string name="preferences_general">Geral</string> | 183 | <string name="preferences_general">Geral</string> |
190 | <string name="preferences_system">Sistema</string> | 184 | <string name="preferences_system">Sistema</string> |
@@ -238,7 +232,6 @@ | |||
238 | <string name="performance_warning">Desligar esta configuração irá reduzir a performance da emulação significantemente! Para a melhor experiência é recomendado que deixes esta configuração ativada.</string> | 232 | <string name="performance_warning">Desligar esta configuração irá reduzir a performance da emulação significantemente! Para a melhor experiência é recomendado que deixes esta configuração ativada.</string> |
239 | 233 | ||
240 | <!-- Region Names --> | 234 | <!-- Region Names --> |
241 | <string name="region_auto">Auto seleção</string> | ||
242 | <string name="region_japan">Japão</string> | 235 | <string name="region_japan">Japão</string> |
243 | <string name="region_usa">EUA</string> | 236 | <string name="region_usa">EUA</string> |
244 | <string name="region_europe">Europa</string> | 237 | <string name="region_europe">Europa</string> |
@@ -311,7 +304,6 @@ | |||
311 | <string name="ratio_stretch">Esticar para a janela</string> | 304 | <string name="ratio_stretch">Esticar para a janela</string> |
312 | 305 | ||
313 | <!-- CPU Accuracy --> | 306 | <!-- CPU Accuracy --> |
314 | <string name="cpu_accuracy_auto">Automático</string> | ||
315 | <string name="cpu_accuracy_accurate">Preciso</string> | 307 | <string name="cpu_accuracy_accurate">Preciso</string> |
316 | <string name="cpu_accuracy_unsafe">Não seguro</string> | 308 | <string name="cpu_accuracy_unsafe">Não seguro</string> |
317 | <string name="cpu_accuracy_paranoid">Paranoid (Lento)</string> | 309 | <string name="cpu_accuracy_paranoid">Paranoid (Lento)</string> |
diff --git a/src/android/app/src/main/res/values-pt-rPT/strings.xml b/src/android/app/src/main/res/values-pt-rPT/strings.xml index 3d0851e6f..8761e2374 100755 --- a/src/android/app/src/main/res/values-pt-rPT/strings.xml +++ b/src/android/app/src/main/res/values-pt-rPT/strings.xml | |||
@@ -61,11 +61,6 @@ | |||
61 | <string name="invalid_keys_file">Ficheiro de chaves inválido</string> | 61 | <string name="invalid_keys_file">Ficheiro de chaves inválido</string> |
62 | <string name="install_keys_success">Chaves instaladas com sucesso</string> | 62 | <string name="install_keys_success">Chaves instaladas com sucesso</string> |
63 | <string name="reading_keys_failure">Erro ao ler chaves de encriptação</string> | 63 | <string name="reading_keys_failure">Erro ao ler chaves de encriptação</string> |
64 | <string name="install_keys_failure_extension_description"> | ||
65 | 1. Verifica se as tuas chaves têm a extensão .keys.\n\n | ||
66 | 2. As Chaves não podem estar gravadas na pasta Transferências.\n\n | ||
67 | Resolve esta(s) questões e tenta novamente. | ||
68 | </string> | ||
69 | <string name="invalid_keys_error">Chaves de encriptação inválidas</string> | 64 | <string name="invalid_keys_error">Chaves de encriptação inválidas</string> |
70 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> | 65 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> |
71 | <string name="install_keys_failure_description">O ficheiro selecionado está corrompido. Por favor recarrega as tuas chaves.</string> | 66 | <string name="install_keys_failure_description">O ficheiro selecionado está corrompido. Por favor recarrega as tuas chaves.</string> |
@@ -184,7 +179,6 @@ | |||
184 | <string name="installing_driver">A instalar o Driver...</string> | 179 | <string name="installing_driver">A instalar o Driver...</string> |
185 | 180 | ||
186 | <!-- Preferences Screen --> | 181 | <!-- Preferences Screen --> |
187 | <string name="preferences_advanced_settings">Configurações avançadas</string> | ||
188 | <string name="preferences_settings">Configurações</string> | 182 | <string name="preferences_settings">Configurações</string> |
189 | <string name="preferences_general">Geral</string> | 183 | <string name="preferences_general">Geral</string> |
190 | <string name="preferences_system">Sistema</string> | 184 | <string name="preferences_system">Sistema</string> |
@@ -238,7 +232,6 @@ | |||
238 | <string name="performance_warning">Desligar esta configuração irá reduzir a performance da emulação significantemente! Para a melhor experiência é recomendado que deixes esta configuração ativada.</string> | 232 | <string name="performance_warning">Desligar esta configuração irá reduzir a performance da emulação significantemente! Para a melhor experiência é recomendado que deixes esta configuração ativada.</string> |
239 | 233 | ||
240 | <!-- Region Names --> | 234 | <!-- Region Names --> |
241 | <string name="region_auto">Autosseleção</string> | ||
242 | <string name="region_japan">Japão</string> | 235 | <string name="region_japan">Japão</string> |
243 | <string name="region_usa">EUA</string> | 236 | <string name="region_usa">EUA</string> |
244 | <string name="region_europe">Europa</string> | 237 | <string name="region_europe">Europa</string> |
@@ -311,7 +304,6 @@ | |||
311 | <string name="ratio_stretch">Esticar à Janela</string> | 304 | <string name="ratio_stretch">Esticar à Janela</string> |
312 | 305 | ||
313 | <!-- CPU Accuracy --> | 306 | <!-- CPU Accuracy --> |
314 | <string name="cpu_accuracy_auto">Automático</string> | ||
315 | <string name="cpu_accuracy_accurate">Preciso</string> | 307 | <string name="cpu_accuracy_accurate">Preciso</string> |
316 | <string name="cpu_accuracy_unsafe">Inseguro</string> | 308 | <string name="cpu_accuracy_unsafe">Inseguro</string> |
317 | <string name="cpu_accuracy_paranoid">Paranoid (Lento)</string> | 309 | <string name="cpu_accuracy_paranoid">Paranoid (Lento)</string> |
diff --git a/src/android/app/src/main/res/values-ru/strings.xml b/src/android/app/src/main/res/values-ru/strings.xml index 1401cf6a0..0fb4908f7 100755 --- a/src/android/app/src/main/res/values-ru/strings.xml +++ b/src/android/app/src/main/res/values-ru/strings.xml | |||
@@ -61,11 +61,6 @@ | |||
61 | <string name="invalid_keys_file">Выбран неверный файл ключей</string> | 61 | <string name="invalid_keys_file">Выбран неверный файл ключей</string> |
62 | <string name="install_keys_success">Ключи успешно установлены</string> | 62 | <string name="install_keys_success">Ключи успешно установлены</string> |
63 | <string name="reading_keys_failure">Ошибка при чтении ключей шифрования</string> | 63 | <string name="reading_keys_failure">Ошибка при чтении ключей шифрования</string> |
64 | <string name="install_keys_failure_extension_description"> | ||
65 | 1. Убедитесь, что ваши ключи имеют расширение .keys\n\n | ||
66 | 2. Ключи не должны находиться в папке Downloads.\n\n | ||
67 | Исправьте проблему(-ы) и повторите попытку. | ||
68 | </string> | ||
69 | <string name="invalid_keys_error">Неверные ключи шифрования</string> | 64 | <string name="invalid_keys_error">Неверные ключи шифрования</string> |
70 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> | 65 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> |
71 | <string name="install_keys_failure_description">Выбранный файл неверен или поврежден. Пожалуйста, пере-дампите ваши ключи.</string> | 66 | <string name="install_keys_failure_description">Выбранный файл неверен или поврежден. Пожалуйста, пере-дампите ваши ключи.</string> |
@@ -184,7 +179,6 @@ | |||
184 | <string name="installing_driver">Установка драйвера...</string> | 179 | <string name="installing_driver">Установка драйвера...</string> |
185 | 180 | ||
186 | <!-- Preferences Screen --> | 181 | <!-- Preferences Screen --> |
187 | <string name="preferences_advanced_settings">Расширенные настройки</string> | ||
188 | <string name="preferences_settings">Настройки</string> | 182 | <string name="preferences_settings">Настройки</string> |
189 | <string name="preferences_general">Общие</string> | 183 | <string name="preferences_general">Общие</string> |
190 | <string name="preferences_system">Система</string> | 184 | <string name="preferences_system">Система</string> |
@@ -238,7 +232,6 @@ | |||
238 | <string name="performance_warning">Отключение этой настройки значительно снизит производительность эмуляции! Для достижения наилучших результатов рекомендуется оставить эту настройку включенной.</string> | 232 | <string name="performance_warning">Отключение этой настройки значительно снизит производительность эмуляции! Для достижения наилучших результатов рекомендуется оставить эту настройку включенной.</string> |
239 | 233 | ||
240 | <!-- Region Names --> | 234 | <!-- Region Names --> |
241 | <string name="region_auto">Авто-выбор</string> | ||
242 | <string name="region_japan">Япония</string> | 235 | <string name="region_japan">Япония</string> |
243 | <string name="region_usa">США</string> | 236 | <string name="region_usa">США</string> |
244 | <string name="region_europe">Европа</string> | 237 | <string name="region_europe">Европа</string> |
@@ -311,7 +304,6 @@ | |||
311 | <string name="ratio_stretch">Растянуть до окна</string> | 304 | <string name="ratio_stretch">Растянуть до окна</string> |
312 | 305 | ||
313 | <!-- CPU Accuracy --> | 306 | <!-- CPU Accuracy --> |
314 | <string name="cpu_accuracy_auto">Авто</string> | ||
315 | <string name="cpu_accuracy_accurate">Точно</string> | 307 | <string name="cpu_accuracy_accurate">Точно</string> |
316 | <string name="cpu_accuracy_unsafe">Небезопасно</string> | 308 | <string name="cpu_accuracy_unsafe">Небезопасно</string> |
317 | <string name="cpu_accuracy_paranoid">Параноик (медленно)</string> | 309 | <string name="cpu_accuracy_paranoid">Параноик (медленно)</string> |
diff --git a/src/android/app/src/main/res/values-uk/strings.xml b/src/android/app/src/main/res/values-uk/strings.xml index 86d9c84f0..0d11eb2d2 100755 --- a/src/android/app/src/main/res/values-uk/strings.xml +++ b/src/android/app/src/main/res/values-uk/strings.xml | |||
@@ -61,11 +61,6 @@ | |||
61 | <string name="invalid_keys_file">Вибрано неправильний файл ключів</string> | 61 | <string name="invalid_keys_file">Вибрано неправильний файл ключів</string> |
62 | <string name="install_keys_success">Ключі успішно встановлено</string> | 62 | <string name="install_keys_success">Ключі успішно встановлено</string> |
63 | <string name="reading_keys_failure">Помилка під час зчитування ключів шифрування</string> | 63 | <string name="reading_keys_failure">Помилка під час зчитування ключів шифрування</string> |
64 | <string name="install_keys_failure_extension_description"> | ||
65 | 1. Переконайтеся, що ваші ключі мають розширення .keys\n\n | ||
66 | 2. Ключі не повинні знаходитися в папці Downloads.\n\n | ||
67 | Виправте проблему(-и) та спробуйте ще раз. | ||
68 | </string> | ||
69 | <string name="invalid_keys_error">Невірні ключі шифрування</string> | 64 | <string name="invalid_keys_error">Невірні ключі шифрування</string> |
70 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> | 65 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> |
71 | <string name="install_keys_failure_description">Обраний файл невірний або пошкоджений. Будь ласка, пере-дампіть ваші ключі.</string> | 66 | <string name="install_keys_failure_description">Обраний файл невірний або пошкоджений. Будь ласка, пере-дампіть ваші ключі.</string> |
@@ -184,7 +179,6 @@ | |||
184 | <string name="installing_driver">Встановлення драйвера...</string> | 179 | <string name="installing_driver">Встановлення драйвера...</string> |
185 | 180 | ||
186 | <!-- Preferences Screen --> | 181 | <!-- Preferences Screen --> |
187 | <string name="preferences_advanced_settings">Розширені налаштування</string> | ||
188 | <string name="preferences_settings">Налаштування</string> | 182 | <string name="preferences_settings">Налаштування</string> |
189 | <string name="preferences_general">Загальні</string> | 183 | <string name="preferences_general">Загальні</string> |
190 | <string name="preferences_system">Система</string> | 184 | <string name="preferences_system">Система</string> |
@@ -238,7 +232,6 @@ | |||
238 | <string name="performance_warning">Вимкнення цього налаштування значно знизить продуктивність емуляції! Для досягнення найкращих результатів рекомендується залишити це налаштування увімкненим.</string> | 232 | <string name="performance_warning">Вимкнення цього налаштування значно знизить продуктивність емуляції! Для досягнення найкращих результатів рекомендується залишити це налаштування увімкненим.</string> |
239 | 233 | ||
240 | <!-- Region Names --> | 234 | <!-- Region Names --> |
241 | <string name="region_auto">Авто-вибір</string> | ||
242 | <string name="region_japan">Японія</string> | 235 | <string name="region_japan">Японія</string> |
243 | <string name="region_usa">США</string> | 236 | <string name="region_usa">США</string> |
244 | <string name="region_europe">Європа</string> | 237 | <string name="region_europe">Європа</string> |
@@ -311,7 +304,6 @@ | |||
311 | <string name="ratio_stretch">Розтягнути до вікна</string> | 304 | <string name="ratio_stretch">Розтягнути до вікна</string> |
312 | 305 | ||
313 | <!-- CPU Accuracy --> | 306 | <!-- CPU Accuracy --> |
314 | <string name="cpu_accuracy_auto">Авто</string> | ||
315 | <string name="cpu_accuracy_accurate">Точно</string> | 307 | <string name="cpu_accuracy_accurate">Точно</string> |
316 | <string name="cpu_accuracy_unsafe">Небезпечно</string> | 308 | <string name="cpu_accuracy_unsafe">Небезпечно</string> |
317 | <string name="cpu_accuracy_paranoid">Параноїк (повільно)</string> | 309 | <string name="cpu_accuracy_paranoid">Параноїк (повільно)</string> |
diff --git a/src/android/app/src/main/res/values-zh-rCN/strings.xml b/src/android/app/src/main/res/values-zh-rCN/strings.xml index 034421c92..e00bbaa2e 100755 --- a/src/android/app/src/main/res/values-zh-rCN/strings.xml +++ b/src/android/app/src/main/res/values-zh-rCN/strings.xml | |||
@@ -61,11 +61,6 @@ | |||
61 | <string name="invalid_keys_file">选择的密钥文件无效</string> | 61 | <string name="invalid_keys_file">选择的密钥文件无效</string> |
62 | <string name="install_keys_success">密钥文件已成功安装</string> | 62 | <string name="install_keys_success">密钥文件已成功安装</string> |
63 | <string name="reading_keys_failure">读取加密密钥时出错</string> | 63 | <string name="reading_keys_failure">读取加密密钥时出错</string> |
64 | <string name="install_keys_failure_extension_description"> | ||
65 | 1. 验证您的密钥文件是否具有 .keys 扩展名。\n\n | ||
66 | 2. 密钥文件不能放置于 Downloads 文件夹。\n\n | ||
67 | 解决问题并再试一次。 | ||
68 | </string> | ||
69 | <string name="invalid_keys_error">无效的加密密钥</string> | 64 | <string name="invalid_keys_error">无效的加密密钥</string> |
70 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> | 65 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> |
71 | <string name="install_keys_failure_description">选择的密钥文件不正确或已损坏。请重新转储密钥文件。</string> | 66 | <string name="install_keys_failure_description">选择的密钥文件不正确或已损坏。请重新转储密钥文件。</string> |
@@ -184,7 +179,6 @@ | |||
184 | <string name="installing_driver">正在安装驱动程序…</string> | 179 | <string name="installing_driver">正在安装驱动程序…</string> |
185 | 180 | ||
186 | <!-- Preferences Screen --> | 181 | <!-- Preferences Screen --> |
187 | <string name="preferences_advanced_settings">高级选项</string> | ||
188 | <string name="preferences_settings">设置</string> | 182 | <string name="preferences_settings">设置</string> |
189 | <string name="preferences_general">通用</string> | 183 | <string name="preferences_general">通用</string> |
190 | <string name="preferences_system">系统</string> | 184 | <string name="preferences_system">系统</string> |
@@ -238,7 +232,6 @@ | |||
238 | <string name="performance_warning">关闭此项会显著降低模拟性能!建议您将此项保持为启用状态。</string> | 232 | <string name="performance_warning">关闭此项会显著降低模拟性能!建议您将此项保持为启用状态。</string> |
239 | 233 | ||
240 | <!-- Region Names --> | 234 | <!-- Region Names --> |
241 | <string name="region_auto">自动选择</string> | ||
242 | <string name="region_japan">日本</string> | 235 | <string name="region_japan">日本</string> |
243 | <string name="region_usa">美国</string> | 236 | <string name="region_usa">美国</string> |
244 | <string name="region_europe">欧洲</string> | 237 | <string name="region_europe">欧洲</string> |
@@ -311,7 +304,6 @@ | |||
311 | <string name="ratio_stretch">拉伸窗口</string> | 304 | <string name="ratio_stretch">拉伸窗口</string> |
312 | 305 | ||
313 | <!-- CPU Accuracy --> | 306 | <!-- CPU Accuracy --> |
314 | <string name="cpu_accuracy_auto">自动</string> | ||
315 | <string name="cpu_accuracy_accurate">高精度</string> | 307 | <string name="cpu_accuracy_accurate">高精度</string> |
316 | <string name="cpu_accuracy_unsafe">低精度</string> | 308 | <string name="cpu_accuracy_unsafe">低精度</string> |
317 | <string name="cpu_accuracy_paranoid">偏执模式 (慢速)</string> | 309 | <string name="cpu_accuracy_paranoid">偏执模式 (慢速)</string> |
diff --git a/src/android/app/src/main/res/values-zh-rTW/strings.xml b/src/android/app/src/main/res/values-zh-rTW/strings.xml index 85798cc6a..a54d04248 100755 --- a/src/android/app/src/main/res/values-zh-rTW/strings.xml +++ b/src/android/app/src/main/res/values-zh-rTW/strings.xml | |||
@@ -61,11 +61,6 @@ | |||
61 | <string name="invalid_keys_file">無效的金鑰檔案已選取</string> | 61 | <string name="invalid_keys_file">無效的金鑰檔案已選取</string> |
62 | <string name="install_keys_success">金鑰已成功安裝</string> | 62 | <string name="install_keys_success">金鑰已成功安裝</string> |
63 | <string name="reading_keys_failure">讀取加密金鑰時出現錯誤</string> | 63 | <string name="reading_keys_failure">讀取加密金鑰時出現錯誤</string> |
64 | <string name="install_keys_failure_extension_description"> | ||
65 | 1. 驗證您的金鑰是否具有 .keys 副檔名。\n\n | ||
66 | 2. 金鑰不能儲存於 Downloads 資料夾。\n\n | ||
67 | 解決問題並再試一次。 | ||
68 | </string> | ||
69 | <string name="invalid_keys_error">無效的加密金鑰</string> | 64 | <string name="invalid_keys_error">無效的加密金鑰</string> |
70 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> | 65 | <string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string> |
71 | <string name="install_keys_failure_description">選取的檔案不正確或已損毀,請重新傾印您的金鑰。</string> | 66 | <string name="install_keys_failure_description">選取的檔案不正確或已損毀,請重新傾印您的金鑰。</string> |
@@ -184,7 +179,6 @@ | |||
184 | <string name="installing_driver">正在安裝驅動程式…</string> | 179 | <string name="installing_driver">正在安裝驅動程式…</string> |
185 | 180 | ||
186 | <!-- Preferences Screen --> | 181 | <!-- Preferences Screen --> |
187 | <string name="preferences_advanced_settings">進階設定</string> | ||
188 | <string name="preferences_settings">設定</string> | 182 | <string name="preferences_settings">設定</string> |
189 | <string name="preferences_general">一般</string> | 183 | <string name="preferences_general">一般</string> |
190 | <string name="preferences_system">系統</string> | 184 | <string name="preferences_system">系統</string> |
@@ -238,7 +232,6 @@ | |||
238 | <string name="performance_warning">關閉此設定會顯著降低模擬效能!如需最佳體驗,建議您將此設定保持為啟用狀態。</string> | 232 | <string name="performance_warning">關閉此設定會顯著降低模擬效能!如需最佳體驗,建議您將此設定保持為啟用狀態。</string> |
239 | 233 | ||
240 | <!-- Region Names --> | 234 | <!-- Region Names --> |
241 | <string name="region_auto">自動選取</string> | ||
242 | <string name="region_japan">日本</string> | 235 | <string name="region_japan">日本</string> |
243 | <string name="region_usa">美國</string> | 236 | <string name="region_usa">美國</string> |
244 | <string name="region_europe">歐洲</string> | 237 | <string name="region_europe">歐洲</string> |
@@ -311,8 +304,6 @@ | |||
311 | <string name="ratio_stretch">延伸視窗</string> | 304 | <string name="ratio_stretch">延伸視窗</string> |
312 | 305 | ||
313 | <!-- CPU Accuracy --> | 306 | <!-- CPU Accuracy --> |
314 | <string name="cpu_accuracy_auto">自動</string> | ||
315 | <string name="cpu_accuracy_accurate">高精度</string> | ||
316 | <string name="cpu_accuracy_unsafe">低精度</string> | 307 | <string name="cpu_accuracy_unsafe">低精度</string> |
317 | <string name="cpu_accuracy_paranoid">不合理 (慢)</string> | 308 | <string name="cpu_accuracy_paranoid">不合理 (慢)</string> |
318 | 309 | ||
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 7dae63dcb..c236811fa 100755 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml | |||
@@ -169,6 +169,8 @@ | |||
169 | <string name="renderer_force_max_clock_description">Forces the GPU to run at the maximum possible clocks (thermal constraints will still be applied).</string> | 169 | <string name="renderer_force_max_clock_description">Forces the GPU to run at the maximum possible clocks (thermal constraints will still be applied).</string> |
170 | <string name="renderer_asynchronous_shaders">Use asynchronous shaders</string> | 170 | <string name="renderer_asynchronous_shaders">Use asynchronous shaders</string> |
171 | <string name="renderer_asynchronous_shaders_description">Compiles shaders asynchronously, reducing stutter but may introduce glitches.</string> | 171 | <string name="renderer_asynchronous_shaders_description">Compiles shaders asynchronously, reducing stutter but may introduce glitches.</string> |
172 | <string name="renderer_reactive_flushing">Use reactive flushing</string> | ||
173 | <string name="renderer_reactive_flushing_description">Improves rendering accuracy in some games at the cost of performance.</string> | ||
172 | <string name="renderer_debug">Graphics debugging</string> | 174 | <string name="renderer_debug">Graphics debugging</string> |
173 | <string name="renderer_debug_description">Sets the graphics API to a slow debugging mode.</string> | 175 | <string name="renderer_debug_description">Sets the graphics API to a slow debugging mode.</string> |
174 | <string name="use_disk_shader_cache">Disk shader cache</string> | 176 | <string name="use_disk_shader_cache">Disk shader cache</string> |
diff --git a/src/core/file_sys/vfs_real.cpp b/src/core/file_sys/vfs_real.cpp index 2bc656ed0..140c1199a 100755 --- a/src/core/file_sys/vfs_real.cpp +++ b/src/core/file_sys/vfs_real.cpp | |||
@@ -25,8 +25,6 @@ namespace FS = Common::FS; | |||
25 | 25 | ||
26 | namespace { | 26 | namespace { |
27 | 27 | ||
28 | constexpr size_t MaxOpenFiles = 512; | ||
29 | |||
30 | constexpr FS::FileAccessMode ModeFlagsToFileAccessMode(Mode mode) { | 28 | constexpr FS::FileAccessMode ModeFlagsToFileAccessMode(Mode mode) { |
31 | switch (mode) { | 29 | switch (mode) { |
32 | case Mode::Read: | 30 | case Mode::Read: |
@@ -75,10 +73,24 @@ VfsEntryType RealVfsFilesystem::GetEntryType(std::string_view path_) const { | |||
75 | VirtualFile RealVfsFilesystem::OpenFile(std::string_view path_, Mode perms) { | 73 | VirtualFile RealVfsFilesystem::OpenFile(std::string_view path_, Mode perms) { |
76 | const auto path = FS::SanitizePath(path_, FS::DirectorySeparator::PlatformDefault); | 74 | const auto path = FS::SanitizePath(path_, FS::DirectorySeparator::PlatformDefault); |
77 | 75 | ||
78 | auto reference = std::make_unique<FileReference>(); | 76 | if (const auto weak_iter = cache.find(path); weak_iter != cache.cend()) { |
79 | this->InsertReferenceIntoList(*reference); | 77 | const auto& weak = weak_iter->second; |
78 | |||
79 | if (!weak.expired()) { | ||
80 | return std::shared_ptr<RealVfsFile>(new RealVfsFile(*this, weak.lock(), path, perms)); | ||
81 | } | ||
82 | } | ||
80 | 83 | ||
81 | return std::shared_ptr<RealVfsFile>(new RealVfsFile(*this, std::move(reference), path, perms)); | 84 | auto backing = FS::FileOpen(path, ModeFlagsToFileAccessMode(perms), FS::FileType::BinaryFile); |
85 | |||
86 | if (!backing) { | ||
87 | return nullptr; | ||
88 | } | ||
89 | |||
90 | cache.insert_or_assign(path, std::move(backing)); | ||
91 | |||
92 | // Cannot use make_shared as RealVfsFile constructor is private | ||
93 | return std::shared_ptr<RealVfsFile>(new RealVfsFile(*this, backing, path, perms)); | ||
82 | } | 94 | } |
83 | 95 | ||
84 | VirtualFile RealVfsFilesystem::CreateFile(std::string_view path_, Mode perms) { | 96 | VirtualFile RealVfsFilesystem::CreateFile(std::string_view path_, Mode perms) { |
@@ -111,19 +123,51 @@ VirtualFile RealVfsFilesystem::CopyFile(std::string_view old_path_, std::string_ | |||
111 | VirtualFile RealVfsFilesystem::MoveFile(std::string_view old_path_, std::string_view new_path_) { | 123 | VirtualFile RealVfsFilesystem::MoveFile(std::string_view old_path_, std::string_view new_path_) { |
112 | const auto old_path = FS::SanitizePath(old_path_, FS::DirectorySeparator::PlatformDefault); | 124 | const auto old_path = FS::SanitizePath(old_path_, FS::DirectorySeparator::PlatformDefault); |
113 | const auto new_path = FS::SanitizePath(new_path_, FS::DirectorySeparator::PlatformDefault); | 125 | const auto new_path = FS::SanitizePath(new_path_, FS::DirectorySeparator::PlatformDefault); |
114 | if (!FS::RenameFile(old_path, new_path)) { | 126 | const auto cached_file_iter = cache.find(old_path); |
127 | |||
128 | if (cached_file_iter != cache.cend()) { | ||
129 | auto file = cached_file_iter->second.lock(); | ||
130 | |||
131 | if (!cached_file_iter->second.expired()) { | ||
132 | file->Close(); | ||
133 | } | ||
134 | |||
135 | if (!FS::RenameFile(old_path, new_path)) { | ||
136 | return nullptr; | ||
137 | } | ||
138 | |||
139 | cache.erase(old_path); | ||
140 | file->Open(new_path, FS::FileAccessMode::Read, FS::FileType::BinaryFile); | ||
141 | if (file->IsOpen()) { | ||
142 | cache.insert_or_assign(new_path, std::move(file)); | ||
143 | } else { | ||
144 | LOG_ERROR(Service_FS, "Failed to open path {} in order to re-cache it", new_path); | ||
145 | } | ||
146 | } else { | ||
147 | ASSERT(false); | ||
115 | return nullptr; | 148 | return nullptr; |
116 | } | 149 | } |
150 | |||
117 | return OpenFile(new_path, Mode::ReadWrite); | 151 | return OpenFile(new_path, Mode::ReadWrite); |
118 | } | 152 | } |
119 | 153 | ||
120 | bool RealVfsFilesystem::DeleteFile(std::string_view path_) { | 154 | bool RealVfsFilesystem::DeleteFile(std::string_view path_) { |
121 | const auto path = FS::SanitizePath(path_, FS::DirectorySeparator::PlatformDefault); | 155 | const auto path = FS::SanitizePath(path_, FS::DirectorySeparator::PlatformDefault); |
156 | const auto cached_iter = cache.find(path); | ||
157 | |||
158 | if (cached_iter != cache.cend()) { | ||
159 | if (!cached_iter->second.expired()) { | ||
160 | cached_iter->second.lock()->Close(); | ||
161 | } | ||
162 | cache.erase(path); | ||
163 | } | ||
164 | |||
122 | return FS::RemoveFile(path); | 165 | return FS::RemoveFile(path); |
123 | } | 166 | } |
124 | 167 | ||
125 | VirtualDir RealVfsFilesystem::OpenDirectory(std::string_view path_, Mode perms) { | 168 | VirtualDir RealVfsFilesystem::OpenDirectory(std::string_view path_, Mode perms) { |
126 | const auto path = FS::SanitizePath(path_, FS::DirectorySeparator::PlatformDefault); | 169 | const auto path = FS::SanitizePath(path_, FS::DirectorySeparator::PlatformDefault); |
170 | // Cannot use make_shared as RealVfsDirectory constructor is private | ||
127 | return std::shared_ptr<RealVfsDirectory>(new RealVfsDirectory(*this, path, perms)); | 171 | return std::shared_ptr<RealVfsDirectory>(new RealVfsDirectory(*this, path, perms)); |
128 | } | 172 | } |
129 | 173 | ||
@@ -132,6 +176,7 @@ VirtualDir RealVfsFilesystem::CreateDirectory(std::string_view path_, Mode perms | |||
132 | if (!FS::CreateDirs(path)) { | 176 | if (!FS::CreateDirs(path)) { |
133 | return nullptr; | 177 | return nullptr; |
134 | } | 178 | } |
179 | // Cannot use make_shared as RealVfsDirectory constructor is private | ||
135 | return std::shared_ptr<RealVfsDirectory>(new RealVfsDirectory(*this, path, perms)); | 180 | return std::shared_ptr<RealVfsDirectory>(new RealVfsDirectory(*this, path, perms)); |
136 | } | 181 | } |
137 | 182 | ||
@@ -149,102 +194,73 @@ VirtualDir RealVfsFilesystem::MoveDirectory(std::string_view old_path_, | |||
149 | if (!FS::RenameDir(old_path, new_path)) { | 194 | if (!FS::RenameDir(old_path, new_path)) { |
150 | return nullptr; | 195 | return nullptr; |
151 | } | 196 | } |
152 | return OpenDirectory(new_path, Mode::ReadWrite); | ||
153 | } | ||
154 | 197 | ||
155 | bool RealVfsFilesystem::DeleteDirectory(std::string_view path_) { | 198 | for (auto& kv : cache) { |
156 | const auto path = FS::SanitizePath(path_, FS::DirectorySeparator::PlatformDefault); | 199 | // If the path in the cache doesn't start with old_path, then bail on this file. |
157 | return FS::RemoveDirRecursively(path); | 200 | if (kv.first.rfind(old_path, 0) != 0) { |
158 | } | 201 | continue; |
202 | } | ||
159 | 203 | ||
160 | void RealVfsFilesystem::RefreshReference(const std::string& path, Mode perms, | 204 | const auto file_old_path = |
161 | FileReference& reference) { | 205 | FS::SanitizePath(kv.first, FS::DirectorySeparator::PlatformDefault); |
162 | // Temporarily remove from list. | 206 | auto file_new_path = FS::SanitizePath(new_path + '/' + kv.first.substr(old_path.size()), |
163 | this->RemoveReferenceFromList(reference); | 207 | FS::DirectorySeparator::PlatformDefault); |
208 | const auto& cached = cache[file_old_path]; | ||
164 | 209 | ||
165 | // Restore file if needed. | 210 | if (cached.expired()) { |
166 | if (!reference.file) { | 211 | continue; |
167 | this->EvictSingleReference(); | 212 | } |
168 | 213 | ||
169 | reference.file = | 214 | auto file = cached.lock(); |
170 | FS::FileOpen(path, ModeFlagsToFileAccessMode(perms), FS::FileType::BinaryFile); | 215 | cache.erase(file_old_path); |
171 | if (reference.file) { | 216 | file->Open(file_new_path, FS::FileAccessMode::Read, FS::FileType::BinaryFile); |
172 | num_open_files++; | 217 | if (file->IsOpen()) { |
218 | cache.insert_or_assign(std::move(file_new_path), std::move(file)); | ||
219 | } else { | ||
220 | LOG_ERROR(Service_FS, "Failed to open path {} in order to re-cache it", file_new_path); | ||
173 | } | 221 | } |
174 | } | 222 | } |
175 | 223 | ||
176 | // Reinsert into list. | 224 | return OpenDirectory(new_path, Mode::ReadWrite); |
177 | this->InsertReferenceIntoList(reference); | ||
178 | } | ||
179 | |||
180 | void RealVfsFilesystem::DropReference(std::unique_ptr<FileReference>&& reference) { | ||
181 | // Remove from list. | ||
182 | this->RemoveReferenceFromList(*reference); | ||
183 | |||
184 | // Close the file. | ||
185 | if (reference->file) { | ||
186 | reference->file.reset(); | ||
187 | num_open_files--; | ||
188 | } | ||
189 | } | 225 | } |
190 | 226 | ||
191 | void RealVfsFilesystem::EvictSingleReference() { | 227 | bool RealVfsFilesystem::DeleteDirectory(std::string_view path_) { |
192 | if (num_open_files < MaxOpenFiles || open_references.empty()) { | 228 | const auto path = FS::SanitizePath(path_, FS::DirectorySeparator::PlatformDefault); |
193 | return; | ||
194 | } | ||
195 | |||
196 | // Get and remove from list. | ||
197 | auto& reference = open_references.back(); | ||
198 | this->RemoveReferenceFromList(reference); | ||
199 | 229 | ||
200 | // Close the file. | 230 | for (auto& kv : cache) { |
201 | if (reference.file) { | 231 | // If the path in the cache doesn't start with path, then bail on this file. |
202 | reference.file.reset(); | 232 | if (kv.first.rfind(path, 0) != 0) { |
203 | num_open_files--; | 233 | continue; |
204 | } | 234 | } |
205 | 235 | ||
206 | // Reinsert into closed list. | 236 | const auto& entry = cache[kv.first]; |
207 | this->InsertReferenceIntoList(reference); | 237 | if (!entry.expired()) { |
208 | } | 238 | entry.lock()->Close(); |
239 | } | ||
209 | 240 | ||
210 | void RealVfsFilesystem::InsertReferenceIntoList(FileReference& reference) { | 241 | cache.erase(kv.first); |
211 | if (reference.file) { | ||
212 | open_references.push_front(reference); | ||
213 | } else { | ||
214 | closed_references.push_front(reference); | ||
215 | } | 242 | } |
216 | } | ||
217 | 243 | ||
218 | void RealVfsFilesystem::RemoveReferenceFromList(FileReference& reference) { | 244 | return FS::RemoveDirRecursively(path); |
219 | if (reference.file) { | ||
220 | open_references.erase(open_references.iterator_to(reference)); | ||
221 | } else { | ||
222 | closed_references.erase(closed_references.iterator_to(reference)); | ||
223 | } | ||
224 | } | 245 | } |
225 | 246 | ||
226 | RealVfsFile::RealVfsFile(RealVfsFilesystem& base_, std::unique_ptr<FileReference> reference_, | 247 | RealVfsFile::RealVfsFile(RealVfsFilesystem& base_, std::shared_ptr<FS::IOFile> backing_, |
227 | const std::string& path_, Mode perms_) | 248 | const std::string& path_, Mode perms_) |
228 | : base(base_), reference(std::move(reference_)), path(path_), | 249 | : base(base_), backing(std::move(backing_)), path(path_), parent_path(FS::GetParentPath(path_)), |
229 | parent_path(FS::GetParentPath(path_)), path_components(FS::SplitPathComponents(path_)), | 250 | path_components(FS::SplitPathComponents(path_)), perms(perms_) {} |
230 | perms(perms_) {} | ||
231 | 251 | ||
232 | RealVfsFile::~RealVfsFile() { | 252 | RealVfsFile::~RealVfsFile() = default; |
233 | base.DropReference(std::move(reference)); | ||
234 | } | ||
235 | 253 | ||
236 | std::string RealVfsFile::GetName() const { | 254 | std::string RealVfsFile::GetName() const { |
237 | return path_components.back(); | 255 | return path_components.back(); |
238 | } | 256 | } |
239 | 257 | ||
240 | std::size_t RealVfsFile::GetSize() const { | 258 | std::size_t RealVfsFile::GetSize() const { |
241 | base.RefreshReference(path, perms, *reference); | 259 | return backing->GetSize(); |
242 | return reference->file ? reference->file->GetSize() : 0; | ||
243 | } | 260 | } |
244 | 261 | ||
245 | bool RealVfsFile::Resize(std::size_t new_size) { | 262 | bool RealVfsFile::Resize(std::size_t new_size) { |
246 | base.RefreshReference(path, perms, *reference); | 263 | return backing->SetSize(new_size); |
247 | return reference->file ? reference->file->SetSize(new_size) : false; | ||
248 | } | 264 | } |
249 | 265 | ||
250 | VirtualDir RealVfsFile::GetContainingDirectory() const { | 266 | VirtualDir RealVfsFile::GetContainingDirectory() const { |
@@ -260,25 +276,27 @@ bool RealVfsFile::IsReadable() const { | |||
260 | } | 276 | } |
261 | 277 | ||
262 | std::size_t RealVfsFile::Read(u8* data, std::size_t length, std::size_t offset) const { | 278 | std::size_t RealVfsFile::Read(u8* data, std::size_t length, std::size_t offset) const { |
263 | base.RefreshReference(path, perms, *reference); | 279 | if (!backing->Seek(static_cast<s64>(offset))) { |
264 | if (!reference->file || !reference->file->Seek(static_cast<s64>(offset))) { | ||
265 | return 0; | 280 | return 0; |
266 | } | 281 | } |
267 | return reference->file->ReadSpan(std::span{data, length}); | 282 | return backing->ReadSpan(std::span{data, length}); |
268 | } | 283 | } |
269 | 284 | ||
270 | std::size_t RealVfsFile::Write(const u8* data, std::size_t length, std::size_t offset) { | 285 | std::size_t RealVfsFile::Write(const u8* data, std::size_t length, std::size_t offset) { |
271 | base.RefreshReference(path, perms, *reference); | 286 | if (!backing->Seek(static_cast<s64>(offset))) { |
272 | if (!reference->file || !reference->file->Seek(static_cast<s64>(offset))) { | ||
273 | return 0; | 287 | return 0; |
274 | } | 288 | } |
275 | return reference->file->WriteSpan(std::span{data, length}); | 289 | return backing->WriteSpan(std::span{data, length}); |
276 | } | 290 | } |
277 | 291 | ||
278 | bool RealVfsFile::Rename(std::string_view name) { | 292 | bool RealVfsFile::Rename(std::string_view name) { |
279 | return base.MoveFile(path, parent_path + '/' + std::string(name)) != nullptr; | 293 | return base.MoveFile(path, parent_path + '/' + std::string(name)) != nullptr; |
280 | } | 294 | } |
281 | 295 | ||
296 | void RealVfsFile::Close() { | ||
297 | backing->Close(); | ||
298 | } | ||
299 | |||
282 | // TODO(DarkLordZach): MSVC would not let me combine the following two functions using 'if | 300 | // TODO(DarkLordZach): MSVC would not let me combine the following two functions using 'if |
283 | // constexpr' because there is a compile error in the branch not used. | 301 | // constexpr' because there is a compile error in the branch not used. |
284 | 302 | ||
diff --git a/src/core/file_sys/vfs_real.h b/src/core/file_sys/vfs_real.h index 4c2879fec..ba29857df 100755 --- a/src/core/file_sys/vfs_real.h +++ b/src/core/file_sys/vfs_real.h | |||
@@ -4,7 +4,7 @@ | |||
4 | #pragma once | 4 | #pragma once |
5 | 5 | ||
6 | #include <string_view> | 6 | #include <string_view> |
7 | #include "common/intrusive_list.h" | 7 | #include <boost/container/flat_map.hpp> |
8 | #include "core/file_sys/mode.h" | 8 | #include "core/file_sys/mode.h" |
9 | #include "core/file_sys/vfs.h" | 9 | #include "core/file_sys/vfs.h" |
10 | 10 | ||
@@ -14,11 +14,6 @@ class IOFile; | |||
14 | 14 | ||
15 | namespace FileSys { | 15 | namespace FileSys { |
16 | 16 | ||
17 | struct FileReference : public Common::IntrusiveListBaseNode<FileReference> { | ||
18 | std::shared_ptr<Common::FS::IOFile> file{}; | ||
19 | }; | ||
20 | |||
21 | class RealVfsFile; | ||
22 | class RealVfsFilesystem : public VfsFilesystem { | 17 | class RealVfsFilesystem : public VfsFilesystem { |
23 | public: | 18 | public: |
24 | RealVfsFilesystem(); | 19 | RealVfsFilesystem(); |
@@ -40,20 +35,7 @@ public: | |||
40 | bool DeleteDirectory(std::string_view path) override; | 35 | bool DeleteDirectory(std::string_view path) override; |
41 | 36 | ||
42 | private: | 37 | private: |
43 | using ReferenceListType = Common::IntrusiveListBaseTraits<FileReference>::ListType; | 38 | boost::container::flat_map<std::string, std::weak_ptr<Common::FS::IOFile>> cache; |
44 | ReferenceListType open_references; | ||
45 | ReferenceListType closed_references; | ||
46 | size_t num_open_files{}; | ||
47 | |||
48 | private: | ||
49 | friend class RealVfsFile; | ||
50 | void RefreshReference(const std::string& path, Mode perms, FileReference& reference); | ||
51 | void DropReference(std::unique_ptr<FileReference>&& reference); | ||
52 | void EvictSingleReference(); | ||
53 | |||
54 | private: | ||
55 | void InsertReferenceIntoList(FileReference& reference); | ||
56 | void RemoveReferenceFromList(FileReference& reference); | ||
57 | }; | 39 | }; |
58 | 40 | ||
59 | // An implementation of VfsFile that represents a file on the user's computer. | 41 | // An implementation of VfsFile that represents a file on the user's computer. |
@@ -75,11 +57,13 @@ public: | |||
75 | bool Rename(std::string_view name) override; | 57 | bool Rename(std::string_view name) override; |
76 | 58 | ||
77 | private: | 59 | private: |
78 | RealVfsFile(RealVfsFilesystem& base, std::unique_ptr<FileReference> reference, | 60 | RealVfsFile(RealVfsFilesystem& base, std::shared_ptr<Common::FS::IOFile> backing, |
79 | const std::string& path, Mode perms = Mode::Read); | 61 | const std::string& path, Mode perms = Mode::Read); |
80 | 62 | ||
63 | void Close(); | ||
64 | |||
81 | RealVfsFilesystem& base; | 65 | RealVfsFilesystem& base; |
82 | std::unique_ptr<FileReference> reference; | 66 | std::shared_ptr<Common::FS::IOFile> backing; |
83 | std::string path; | 67 | std::string path; |
84 | std::string parent_path; | 68 | std::string parent_path; |
85 | std::vector<std::string> path_components; | 69 | std::vector<std::string> path_components; |
diff --git a/src/video_core/texture_cache/image_info.cpp b/src/video_core/texture_cache/image_info.cpp index dbe6018d8..22eb7bd00 100755 --- a/src/video_core/texture_cache/image_info.cpp +++ b/src/video_core/texture_cache/image_info.cpp | |||
@@ -22,6 +22,9 @@ using Tegra::Texture::TICEntry; | |||
22 | using VideoCore::Surface::PixelFormat; | 22 | using VideoCore::Surface::PixelFormat; |
23 | using VideoCore::Surface::SurfaceType; | 23 | using VideoCore::Surface::SurfaceType; |
24 | 24 | ||
25 | constexpr u32 RescaleHeightThreshold = 288; | ||
26 | constexpr u32 DownscaleHeightThreshold = 512; | ||
27 | |||
25 | ImageInfo::ImageInfo(const TICEntry& config) noexcept { | 28 | ImageInfo::ImageInfo(const TICEntry& config) noexcept { |
26 | forced_flushed = config.IsPitchLinear() && !Settings::values.use_reactive_flushing.GetValue(); | 29 | forced_flushed = config.IsPitchLinear() && !Settings::values.use_reactive_flushing.GetValue(); |
27 | dma_downloaded = forced_flushed; | 30 | dma_downloaded = forced_flushed; |
@@ -113,8 +116,9 @@ ImageInfo::ImageInfo(const TICEntry& config) noexcept { | |||
113 | layer_stride = CalculateLayerStride(*this); | 116 | layer_stride = CalculateLayerStride(*this); |
114 | maybe_unaligned_layer_stride = CalculateLayerSize(*this); | 117 | maybe_unaligned_layer_stride = CalculateLayerSize(*this); |
115 | rescaleable &= (block.depth == 0) && resources.levels == 1; | 118 | rescaleable &= (block.depth == 0) && resources.levels == 1; |
116 | rescaleable &= size.height > 256 || GetFormatType(format) != SurfaceType::ColorTexture; | 119 | rescaleable &= size.height > RescaleHeightThreshold || |
117 | downscaleable = size.height > 512; | 120 | GetFormatType(format) != SurfaceType::ColorTexture; |
121 | downscaleable = size.height > DownscaleHeightThreshold; | ||
118 | } | 122 | } |
119 | } | 123 | } |
120 | 124 | ||
@@ -152,8 +156,8 @@ ImageInfo::ImageInfo(const Maxwell3D::Regs::RenderTargetConfig& ct, | |||
152 | size.depth = ct.depth; | 156 | size.depth = ct.depth; |
153 | } else { | 157 | } else { |
154 | rescaleable = block.depth == 0; | 158 | rescaleable = block.depth == 0; |
155 | rescaleable &= size.height > 256; | 159 | rescaleable &= size.height > RescaleHeightThreshold; |
156 | downscaleable = size.height > 512; | 160 | downscaleable = size.height > DownscaleHeightThreshold; |
157 | type = ImageType::e2D; | 161 | type = ImageType::e2D; |
158 | resources.layers = ct.depth; | 162 | resources.layers = ct.depth; |
159 | } | 163 | } |
@@ -232,8 +236,8 @@ ImageInfo::ImageInfo(const Fermi2D::Surface& config) noexcept { | |||
232 | .height = config.height, | 236 | .height = config.height, |
233 | .depth = 1, | 237 | .depth = 1, |
234 | }; | 238 | }; |
235 | rescaleable = block.depth == 0 && size.height > 256; | 239 | rescaleable = block.depth == 0 && size.height > RescaleHeightThreshold; |
236 | downscaleable = size.height > 512; | 240 | downscaleable = size.height > DownscaleHeightThreshold; |
237 | } | 241 | } |
238 | } | 242 | } |
239 | 243 | ||
@@ -275,8 +279,8 @@ ImageInfo::ImageInfo(const Tegra::DMA::ImageOperand& config) noexcept { | |||
275 | resources.layers = 1; | 279 | resources.layers = 1; |
276 | layer_stride = CalculateLayerStride(*this); | 280 | layer_stride = CalculateLayerStride(*this); |
277 | maybe_unaligned_layer_stride = CalculateLayerSize(*this); | 281 | maybe_unaligned_layer_stride = CalculateLayerSize(*this); |
278 | rescaleable = block.depth == 0 && size.height > 256; | 282 | rescaleable = block.depth == 0 && size.height > RescaleHeightThreshold; |
279 | downscaleable = size.height > 512; | 283 | downscaleable = size.height > DownscaleHeightThreshold; |
280 | } | 284 | } |
281 | 285 | ||
282 | } // namespace VideoCommon | 286 | } // namespace VideoCommon |