Compare commits

..

238 Commits

Author SHA1 Message Date
yuzubot
dc529a89ae Android 278 2024-03-04 00:57:21 +00:00
yuzubot
1869349dce Merge yuzu-emu#13177 2024-03-04 00:57:21 +00:00
yuzubot
70711ddb39 Merge yuzu-emu#13174 2024-03-04 00:57:21 +00:00
yuzubot
adc597a799 Merge yuzu-emu#13018 2024-03-04 00:57:21 +00:00
yuzubot
276ceb26d0 Merge yuzu-emu#12461 2024-03-04 00:57:21 +00:00
Narr the Reg
15e6e48bef
Merge pull request #13198 from zhaobot/tx-update-20240301020652
Update translations (2024-03-01)
2024-03-01 01:57:00 -06:00
Pengfei Zhu
2f57c5a0e9
Revert arbaic translation 2024-03-01 15:20:53 +08:00
Pengfei Zhu
338e088b9d
Remove trailing whitespaces 2024-03-01 14:19:02 +08:00
The yuzu Community
56c9107d08 Update translations (2024-03-01) 2024-03-01 03:12:19 +00:00
liamwhite
dc94882c90
Merge pull request #13135 from german77/hid-interface
service: hid: Migrate HidServer to new IPC
2024-02-27 12:26:26 -05:00
liamwhite
30567a5909
Merge pull request #13175 from liamwhite/asan
general: fix asan errors
2024-02-27 09:42:59 -05:00
liamwhite
f1b1530249
Merge pull request #13171 from liamwhite/fake-address
texture_cache: do not track invalid addresses
2024-02-27 09:42:46 -05:00
liamwhite
6948ac8c16
general: workarounds for SMMU syncing issues (#12749) 2024-02-27 15:42:15 +01:00
liamwhite
b2e129eaa5
vk_rasterizer: flip scissor y on lower left origin mode (#13122) 2024-02-27 15:40:33 +01:00
liamwhite
1de37306a5
buffer_cache: avoid overflow in usage tracker (#13166) 2024-02-27 15:39:11 +01:00
liamwhite
9bc85dda5f
texture_cache: use two-pass collection for costly load resources (#13096) 2024-02-27 15:38:14 +01:00
Liam
c7174d5f61 general: fix asan errors 2024-02-26 19:28:49 -05:00
Narr the Reg
1bec420695
Merge pull request #13172 from liamwhite/gl-streams
renderer_opengl: declare geometry stream support in profile
2024-02-26 11:51:25 -06:00
liamwhite
79edad2533
Merge pull request #13159 from liamwhite/web-error
core: enable error applet, add stubs for web applet
2024-02-26 12:44:55 -05:00
liamwhite
ce62fa6f7b
Merge pull request #13149 from liamwhite/per-channel-program
video_core: make gpu context aware of rendering program
2024-02-26 12:44:46 -05:00
Liam
a0e254e7c4 renderer_opengl: declare geometry stream support in profile 2024-02-26 11:18:30 -05:00
Liam
25c3bbba0e settings: remove global override for smash on amdvlk 2024-02-26 11:16:18 -05:00
Liam
d66ca8b731 video_core: make gpu context aware of rendering program 2024-02-26 11:16:14 -05:00
Liam
fd9ed54f27 texture_cache: do not track invalid addresses 2024-02-26 10:26:27 -05:00
liamwhite
f9bfdb1555
Merge pull request #13164 from merryhime/reset-submodules
tools: Add reset submodules script
2024-02-25 14:01:11 -05:00
liamwhite
15831b19a3
Merge pull request #13163 from german77/ring
core: hid: hid_core doesn't have access to LIBUSB
2024-02-25 14:01:05 -05:00
liamwhite
8416d1c028
Merge pull request #13154 from german77/vibration-filter
core: hid: Reintroduce vibration filter
2024-02-25 14:00:59 -05:00
Merry
4d5d37ae61 tools: Add reset submodules script 2024-02-25 17:17:01 +00:00
german77
e62cea20d1 core: hid: hid_core doesn't have access to LIBUSB 2024-02-25 10:06:43 -06:00
Narr the Reg
9e27dbb53b
Merge pull request #13160 from liamwhite/time
glue: load initial year setting as s32
2024-02-25 08:47:16 -06:00
Liam
dc50b95a47 settings: enable error applet 2024-02-24 22:56:08 -05:00
Liam
4050242cf3 ldn: return no connection from GetStateForMonitor 2024-02-24 22:56:08 -05:00
Liam
fd718f350c ssl: add cert store 2024-02-24 22:56:05 -05:00
Liam
0d6fd12231 glue: load initial year setting as s32 2024-02-24 22:49:38 -05:00
Liam
f297e98a9e acc: add account manager for acc:u1 2024-02-24 22:25:34 -05:00
Liam
637c54e205 fs: add stubs for online web applet 2024-02-24 22:25:34 -05:00
Liam
f045fa576b erpt: stub report creation 2024-02-24 22:25:34 -05:00
Liam
692ba0fa7d set: add GetPlatformRegion 2024-02-24 22:25:34 -05:00
liamwhite
a93d249ac1
Merge pull request #13155 from german77/GetSettingsItemValue
service: set: Fix GetSettingsItemValue
2024-02-24 16:24:01 -05:00
german77
9fccccedee service: set: Fix GetSettingsItemValue 2024-02-24 14:44:21 -06:00
german77
ca7f949ee8 core: hid: Reintroduce vibration filter 2024-02-24 12:19:51 -06:00
liamwhite
05f94dc5fc
Merge pull request #13153 from german77/defaultset
service: set: Enable nfc and others by default and bump version
2024-02-24 12:48:31 -05:00
liamwhite
dcf7698924
Merge pull request #13081 from FearlessTobi/aoc-ipc
aoc: Migrate to use cmif serialization
2024-02-24 12:48:26 -05:00
Narr the Reg
7b68d7d467
Merge pull request #13150 from liamwhite/region
set: fix region code for system settings
2024-02-24 11:40:31 -06:00
german77
4741e50047 service: set: Enable nfc and others by default and bump version 2024-02-24 11:19:51 -06:00
Liam
7836c0867d set: fix region code for system settings 2024-02-24 00:48:44 -05:00
liamwhite
d1e0039bc8
Merge pull request #13142 from t895/vibration-queue
android: Play vibrations asynchronously
2024-02-24 00:38:13 -05:00
liamwhite
7a51eaa727
Merge pull request #13146 from wheremyfoodat/patch-1
common/ring_buffer: Include <limits> header
2024-02-23 20:32:40 -05:00
liamwhite
6c40d75e47
Merge pull request #13140 from german77/yet-more-qlaunch
service: Stub multiple function for qlaunch
2024-02-23 20:32:32 -05:00
Narr the Reg
0a0c257206 service: audio: Add missing logging properties of SetHeadphoneOutputLevelMode 2024-02-23 18:58:51 -06:00
Narr the Reg
7019023cbc service: btdrv: Add EnableRadio for Qlaunch 2024-02-23 18:58:51 -06:00
Narr the Reg
c48c182fe0 service: friend: Add GetFriendCount, GetNewlyFriendCount, GetReceivedFriendRequestCount, GetPlayHistoryStatistics, GetReceivedFriendInvitationCountCache for QLaunch 2024-02-23 18:58:51 -06:00
Narr the Reg
98be02898b service: hid: Add IsAnyCustomButtonConfigEnabled for QLaunch 2024-02-23 18:58:51 -06:00
Narr the Reg
e1bdeb2942 service: lbl: Add SaveCurrentSetting, LoadCurrentSetting and IsAutoBrightnessControlSupported for QLaunch 2024-02-23 18:58:50 -06:00
Narr the Reg
015d666a4d service: nfc: Implement SetNfcEnabled 2024-02-23 18:58:50 -06:00
Narr the Reg
624c90a439 service: npns: Add ListenTo and GetReceiveEvent for QLaunch 2024-02-23 18:58:39 -06:00
Narr the Reg
0fb26acccc service: set: Add default eula setting 2024-02-23 18:58:19 -06:00
wheremyfoodat
ed315fb8a5
common/ring_buffer: Include <limits> header 2024-02-24 02:34:09 +02:00
Narr the Reg
fc6a87bba1 service: hid: Migrate HidServer to new IPC 2024-02-23 17:49:02 -06:00
Narr the Reg
d08f201e0c service: hid: Move and migrate AppletResource and ActiveVibrationDevice 2024-02-23 17:49:02 -06:00
t895
0369c65870 android: Play vibrations asynchronously 2024-02-23 16:41:59 -05:00
liamwhite
975d6f1ec4
Merge pull request #13141 from liamwhite/swap
fs: fix argument order
2024-02-23 15:23:06 -05:00
liamwhite
7c9e2255be
Merge pull request #13137 from liamwhite/mac-ci
ci: fix mac build
2024-02-23 15:21:18 -05:00
liamwhite
9f6818a6e5
Merge pull request #13136 from liamwhite/fs-launch
fs: add ISaveDataTransferProhibiter, stub FindSaveDataWithFilter
2024-02-23 15:21:12 -05:00
Liam
f1c16b487a fs: fix argument order 2024-02-23 15:10:35 -05:00
Liam
6512f39061 ci: fix mac build 2024-02-23 13:25:48 -05:00
Liam
22b91afa69 fs: add ISaveDataTransferProhibiter, stub FindSaveDataWithFilter 2024-02-23 12:17:24 -05:00
liamwhite
77107ba124
Merge pull request #13133 from liamwhite/libstdcxx-issue
vi: workaround conductor includes
2024-02-23 11:34:34 -05:00
liamwhite
fa4dec9fe9
Merge pull request #13115 from liamwhite/olsc-pctl
olsc, pctl: move to new ipc
2024-02-23 11:34:29 -05:00
liamwhite
215e887be0
Merge pull request #13100 from liamwhite/audio-ipc
audio: move to new ipc
2024-02-23 11:34:21 -05:00
liamwhite
0da6704fc2
Merge pull request #13073 from FearlessTobi/fsp-srv-ipc
fsp: Migrate remaining interfaces to cmif serialization
2024-02-23 11:34:06 -05:00
Liam
812754edec vi: workaround conductor includes 2024-02-23 10:34:49 -05:00
Liam
964e19ab56 oboe_sink: handle temporary stream creation failure 2024-02-23 10:30:52 -05:00
liamwhite
9dc624f5dc
Merge pull request #13121 from german77/clean-shortcut
yuzu: Fix shortcut error message
2024-02-22 23:04:28 -05:00
liamwhite
dad9ea3e07
Merge pull request #13117 from liamwhite/ovln
psc: stub overlay notification channel
2024-02-22 20:26:03 -05:00
Liam
2c00599a53 audio: fix released buffer bounds check 2024-02-22 20:20:31 -05:00
FearlessTobi
2786d34dd7 aoc: Rename AOC_U to IAddOnContentManager 2024-02-23 01:19:18 +01:00
Narr the Reg
864b046500 yuzu: Fix shortcut error message 2024-02-22 17:52:30 -06:00
liamwhite
d12d9dad40
Merge pull request #12982 from FearlessTobi/fs-rewrite-part0
fs: Add FileSystemAccessor and use cmif serialization
2024-02-22 12:34:47 -05:00
Narr the Reg
2b3f1d3fc5
Merge pull request #13000 from liamwhite/skip-null-memory
device_memory_manager: skip unregistered interfaces on invalidate
2024-02-22 11:34:23 -06:00
Narr the Reg
984396a21a
Merge pull request #13001 from liamwhite/scaled-availability
vulkan_device: don't use fixed cap for memory limits
2024-02-22 11:31:17 -06:00
Narr the Reg
4f95ee5209
Merge pull request #13075 from liamwhite/mali-having-a-bad-time
shader_recompiler: throw on missing geometry streams in geometry shaders
2024-02-22 11:30:26 -06:00
Liam
c04567fad4 audio: add NotifyHeadphoneVolumeWarningDisplayedEvent 2024-02-21 23:54:10 -05:00
Liam
89c2fd3d28 pctl: rewrite IParentalControlService 2024-02-21 23:42:33 -05:00
Liam
5ab49c833d pctl: rewrite IParentalControlServiceFactory 2024-02-21 23:00:01 -05:00
Liam
0e74204aad pctl: move IParentalControlServiceFactory 2024-02-21 23:00:01 -05:00
Liam
a37bd0b9a7 pctl: move IParentalControlService 2024-02-21 23:00:01 -05:00
Liam
01d89acd13 pctl: move types and results 2024-02-21 22:58:20 -05:00
Liam
e85466c1ae psc: stub overlay notification channel 2024-02-21 22:54:05 -05:00
Liam
352297d361 psc: rewrite IPmService 2024-02-21 22:26:32 -05:00
Liam
6c2d6cff19 psc: move IPmControl, IPmModule, IPmService 2024-02-21 22:26:12 -05:00
Liam
e540757279 olsc: rewrite IOlscServiceForSystemService 2024-02-21 20:02:00 -05:00
Liam
a8bca24292 olsc: add IRemoteStorageController 2024-02-21 19:47:54 -05:00
Liam
5f3c03d6a8 olsc: add IDaemonController 2024-02-21 19:05:19 -05:00
Liam
6b956a6951 olsc: rewrite ITransferTaskListController 2024-02-21 18:36:17 -05:00
Liam
8689370830 olsc: rewrite INativeHandleHolder 2024-02-21 18:19:48 -05:00
Liam
8ffa27b311 olsc: rewrite IOlscServiceForApplication 2024-02-21 18:19:12 -05:00
Liam
6334616b44 olsc: move INativeHandleHolder, IOlscServiceForApplication, IOlscServiceForSystemService, ITransferTaskListController 2024-02-21 16:13:01 -05:00
liamwhite
8bbc209950
Merge pull request #13105 from t895/connection-fix
android: Misc controller fixes
2024-02-21 10:43:46 -05:00
liamwhite
9e1a67b950
fs: add missing mutex header for member (#13106) 2024-02-21 16:43:05 +01:00
t895
de5422b1fd android: Connect controllers with supported styles
If you tried to connect a controller that was previously configured with an unsupported style for your game, when you try to connect that controller, it will immediately disconnect. This ensures that the controller that is being connected will be changed to the first supported style index before being connected.
2024-02-21 08:37:55 -05:00
t895
45f450fca5 android: Add additional check for hasMapping
Controls can have no mapping if they are either "[empty]" or and empty string. This was causing an issue if you reset mapping on all controllers and then tried to play a game. The check to determine whether auto mapping was required would fail and leave you will no mapped controllers. This feels a bit like user error but it smooths things out if you forget so I see it as necessary.
2024-02-21 08:17:30 -05:00
t895
9a3fd76b25 android: Enable all controller styles on emulation shutdown 2024-02-21 08:13:54 -05:00
Charles Lombardo
60fc6df407
Merge pull request #13099 from t895/default-fix
android: Fix extra stick setting default values
2024-02-21 07:02:58 -05:00
Liam
2e4a6b7f92 audio: format 2024-02-20 22:51:39 -05:00
Liam
5f90bd88da audio: rewrite IHardwareOpusDecoder 2024-02-20 22:15:38 -05:00
Liam
c575a85233 audio: rewrite IAudioDevice 2024-02-20 22:15:38 -05:00
Liam
ea4703cb31 audio: rewrite IHardwareOpusDecoderManager 2024-02-20 22:15:38 -05:00
Liam
0471e54e5a audio: rewrite IAudioRenderer 2024-02-20 22:15:38 -05:00
Liam
6012c9fe3a audio: rewrite IAudioRendererManager 2024-02-20 22:15:37 -05:00
Liam
f65539504f audio: split IHardwarweOpusDecoder, move IHardwareOpusDecoderManager 2024-02-20 22:15:37 -05:00
Liam
62083fcafd audio: split IAudioDevice, IAudioRenderer, move IAudioRendererManager 2024-02-20 22:15:37 -05:00
Liam
2e5a9cf119 audio: move IFinalOutputRecorderManager{,ForApplet} 2024-02-20 22:15:37 -05:00
Liam
a45b8bc9bc audio: rewrite IAudioOutManager 2024-02-20 22:15:37 -05:00
Liam
a05bd3c47e audio: rewrite IAudioOut 2024-02-20 22:15:37 -05:00
Liam
2a2c92f181 audio: rewrite IAudioInManager 2024-02-20 22:15:37 -05:00
Liam
f54277364c audio: rewrite IAudioIn 2024-02-20 22:15:37 -05:00
t895
de2d496e71 android: Fix extra stick setting default values
The default value was accidentally hardcoded for all extra stick settings
2024-02-20 22:13:59 -05:00
liamwhite
7b5bdd076d
Merge pull request #13095 from liamwhite/ns-oops
ns: fix alignment of uid type
2024-02-20 21:19:35 -05:00
Matías Locatti
e0c17a2113
Merge pull request #10529 from liamwhite/critical-spacing
caches: make critical reclamation less eager and possible in more cases
2024-02-20 23:19:27 -03:00
Liam
b107435a3f ns: fix alignment of uid type 2024-02-20 18:43:44 -05:00
liamwhite
4e1fcd4a63
Merge pull request #13091 from t895/device-renaming
android: Expose device name setting
2024-02-20 18:30:54 -05:00
liamwhite
ea4a96b45e
Merge pull request #13079 from liamwhite/vi3
vi: misc fixes
2024-02-20 18:30:47 -05:00
t895
6a90db8c19 android: Expose device name setting 2024-02-20 08:16:38 -05:00
t895
0e5972b0b5 android: Add StringInputSetting settings item 2024-02-20 08:06:56 -05:00
Liam
5f7608a7c6 vi: ignore shared buffer destruction failure on termination 2024-02-20 00:02:56 -05:00
Liam
668ff0db3a vi: remove superfluous locking in shared buffer manager 2024-02-19 23:59:35 -05:00
Liam
9f159dd62c nvnflinger/vi: don't recreate buffer queue on open/close 2024-02-19 23:59:35 -05:00
Andrew Pilley
d1eaeeed8c
Import keys from filesystem. (#13056)
* Import keys, re-initialize KeyManager, re-scan vfs, re-populate game list.

* <.< spelling.

* Update based on feedback on #13047 and this PR

* Based on feedback: Don't delete existing files. There's legitimate reasons that someone may want to keep their retail keys and title key handling is resilient to mismatches.

* Update src/yuzu/main.cpp

Co-authored-by: Tobias <thm.frey@gmail.com>

* Remove translation of literal filename/filter format.

* clang-format.

---------

Co-authored-by: Tobias <thm.frey@gmail.com>
2024-02-19 19:18:13 -05:00
liamwhite
10e27a2902
Merge pull request #13086 from t895/clear-button-fix
android: Fix broken clear button check
2024-02-19 19:18:05 -05:00
Charles Lombardo
f567a41f53
android: Have input overlay follow player 1 style index (#13085) 2024-02-19 22:47:21 +01:00
t895
704c62ca01 android: Fix broken clear button check 2024-02-19 15:54:52 -05:00
liamwhite
8d5473e67c
Merge pull request #13031 from german77/btm-interfcae
service: btm: Migrate service to new IPC
2024-02-19 14:49:42 -05:00
Charles Lombardo
3b1b98c645
android: Fix overlay visibility reset (#13083) 2024-02-19 19:44:42 +01:00
Charles Lombardo
daf350f5d3
android: Show done button when configuring input overlay (#13082) 2024-02-19 19:26:18 +01:00
FearlessTobi
ef50277124 Address review comments pt. 2 2024-02-19 19:22:51 +01:00
FearlessTobi
ba70dc4c13 Address review comments 2024-02-19 19:20:46 +01:00
FearlessTobi
934e420e36 fs: Refactor to use cmif serialization 2024-02-19 19:20:46 +01:00
FearlessTobi
d5e4617ab5 fs: Add FileSystemAccessor classes 2024-02-19 19:20:40 +01:00
FearlessTobi
b5a17b501b Address review comments 2024-02-19 19:11:07 +01:00
FearlessTobi
2b18957365 fs: Add and use fs_save_data_types.h 2024-02-19 19:06:31 +01:00
FearlessTobi
4c71bf3d90 fsp: Migrate remaining interfaces to cmif serialization 2024-02-19 19:06:31 +01:00
FearlessTobi
fdf4a5bc90 fsp-srv: Migrate to use cmif serialization 2024-02-19 19:06:31 +01:00
FearlessTobi
b7d9eba72b fsp: Move IMultiCommitManager to a seperate file 2024-02-19 19:06:31 +01:00
FearlessTobi
380475af32 fsp: Move ISaveDataInfoReader to a seperate file 2024-02-19 19:06:31 +01:00
FearlessTobi
a2a0be4246 aoc: Migrate to use cmif serialization 2024-02-19 17:20:02 +01:00
liamwhite
c9ef2e26ca
Merge pull request #13080 from FearlessTobi/scope-exit
scope_exit: Make constexpr
2024-02-19 10:50:45 -05:00
FearlessTobi
aa6532cf34 core/aoc: Move IPurchaseEventManager to separate file 2024-02-19 16:36:24 +01:00
FearlessTobi
310c1f50be scope_exit: Make constexpr
Allows the use of the macro in constexpr-contexts.
Also avoids some potential problems when nesting braces inside it.
2024-02-19 16:00:46 +01:00
FearlessTobi
665fce871f core/CMakeLists: Sort alphabetically 2024-02-19 15:51:02 +01:00
Narr the Reg
58c7e846cb
Merge pull request #13006 from liamwhite/a-hat-in-vram
buffer_cache: use mapped range with large vertex buffer size
2024-02-18 23:37:49 -06:00
Narr the Reg
8b0fb98a11
Merge pull request #13026 from liamwhite/scale-this-mf
shader_recompiler: fix non-const offset for arrayed image types
2024-02-18 23:37:25 -06:00
Narr the Reg
8615509c40
Merge pull request #13035 from liamwhite/vi2
vi: manage resources independently of nvnflinger and refactor
2024-02-18 23:36:53 -06:00
Narr the Reg
d0af52f28e
Merge pull request #13048 from liamwhite/new-shell
ns: rewrite for new IPC
2024-02-18 23:36:29 -06:00
Liam
f46dc31683 shader_recompiler: throw on missing geometry streams in geometry shaders 2024-02-19 00:34:00 -05:00
liamwhite
ef89b79d7e
Merge pull request #13070 from liamwhite/offset
am: account for offset in transfer memory storage
2024-02-18 19:03:56 -05:00
liamwhite
3e41f9a673
Merge pull request #13030 from german77/audio-controller
service: audio: Rewrite IAudioController to new IPC
2024-02-18 19:03:49 -05:00
Liam
d45a12826c ns: address review comments 2024-02-18 19:02:00 -05:00
Liam
56810541f0 vulkan_device: don't use fixed cap for memory limits 2024-02-18 18:59:13 -05:00
Liam
911ee8fd1f am: account for offset in transfer memory storage 2024-02-18 14:56:48 -05:00
Charles Lombardo
5361027ef0
Merge pull request #13068 from german77/no_errors
core: hid: Remove driver errors from log
2024-02-18 13:30:54 -05:00
german77
56721517ea core: hid: Remove driver errors from log 2024-02-18 10:54:56 -06:00
Liam
940a71422e nvnflinger: check for layers before compose 2024-02-18 11:25:52 -05:00
liamwhite
da225d4aa1
Merge pull request #13067 from t895/xbox-automap-invert
android: Flip AB/XY for xbox controllers during auto-mapping
2024-02-18 10:48:54 -05:00
t895
8d74c107f5 android: Flip AB/XY for xbox controllers during auto-mapping 2024-02-18 10:40:33 -05:00
liamwhite
1fc86b1e3a
Merge pull request #13032 from german77/qlauncher
service: Implement functions needed by Qlaunch
2024-02-18 10:37:52 -05:00
Liam
4cdf18095d ns: rewrite IQueryService 2024-02-18 10:35:39 -05:00
Liam
2d43831d1f ns: rewrite IServiceGetterInterface 2024-02-18 10:35:39 -05:00
Liam
2e96921f9c ns: rewrite IApplicationManagerInterface 2024-02-18 10:35:39 -05:00
Liam
cf0de18982 ns: move IDevelopInterface 2024-02-18 10:35:37 -05:00
Liam
ae83ee28a3 ns: rewrite ISystemUpdateInterface 2024-02-18 10:32:21 -05:00
Liam
306ed4984b ns: move ISystemUpdateControl 2024-02-18 10:32:21 -05:00
Liam
626f2e65b1 ns: rewrite IVulnerabilityManagerInterface 2024-02-18 10:32:21 -05:00
Liam
2eded86b4b ns: rewrite IReadOnlyApplicationControlDataInterface 2024-02-18 10:32:21 -05:00
Liam
786fc512e2 ns: rewrite IReadOnlyApplicationRecordInterface 2024-02-18 10:32:21 -05:00
Liam
c31ac45332 ns: add IDynamicRightsInterface 2024-02-18 10:32:21 -05:00
Liam
db172ba249 ns: rewrite IDownloadTaskInterface 2024-02-18 10:32:21 -05:00
Liam
bb59940b03 ns: rewrite IDocumentInterface 2024-02-18 10:32:21 -05:00
Liam
04887953ff ns: rewrite IContentManagementInterface 2024-02-18 10:32:21 -05:00
Liam
8ea72cc99d ns: move IFactoryResetInterface 2024-02-18 10:32:21 -05:00
Liam
44d2e90217 ns: move IECommerceInterface 2024-02-18 10:32:21 -05:00
Liam
12926eb5db ns: move IApplicationVersionInterface 2024-02-18 10:32:21 -05:00
Liam
ae114d2fa1 ns: move IAccountProxyInterface 2024-02-18 10:32:21 -05:00
Liam
270d07be2f ns: rewrite IPlatformServiceManager 2024-02-18 10:32:21 -05:00
Liam
947cdbe4b1 ns: rename results header 2024-02-18 10:32:21 -05:00
liamwhite
5583957616
Merge pull request #13064 from t895/auto-map-fail
android: Only do first startup automapping if nothing has been mapped
2024-02-18 10:27:49 -05:00
liamwhite
6d731e1aa1
Merge pull request #13049 from Leystryku/master
Fix Just Dance 2023 not booting
2024-02-18 10:25:18 -05:00
liamwhite
839ded7d59
Merge pull request #13065 from t895/cancel-button-fail
android: Show cancel button for the content install notice
2024-02-18 10:25:04 -05:00
liamwhite
f57281ebc1
Merge pull request #13066 from t895/touch-fix
android: Map touches to touchscreen
2024-02-18 10:24:58 -05:00
t895
0a3bc6c0cf android: Map touches to touchscreen
I neglected to map touches to the touchscreen when refactoring in the input mapping PR. This fixes that regression.
2024-02-18 10:00:37 -05:00
t895
55a7815064 android: Show cancel button for the content install notice 2024-02-18 09:23:46 -05:00
t895
a1c4f53c8c android: Only do first startup automapping if nothing has been mapped 2024-02-18 09:18:54 -05:00
Leystryku
8bbb44a74e service: Change unique_ptr to make_unique in GetCacheStorageMax 2024-02-18 07:03:50 +01:00
Leystryku
bc5ae04ea0 file_sys: Formatting changes and use unique_ptr in GetCacheStorageMax 2024-02-18 06:17:35 +01:00
Leystryku
4f387b0b74 file_sys: Fix nacp field cache_storage_max_index datatype 2024-02-18 06:00:42 +01:00
liamwhite
bdf8aca750
Merge pull request #13047 from anpilley/import-firmware
Import firmware from folder of loose NCA files
2024-02-17 23:18:00 -05:00
liamwhite
acfc4d6dfb
Merge pull request #13054 from t895/lifecycle-utils
android: Create lifecycle utility to simplify common StateFlow operations
2024-02-17 23:17:49 -05:00
t895
35a3c7226a android: Create lifecycle utility to simplify common StateFlow operations 2024-02-17 23:09:09 -05:00
Leystryku
d93fdc8a6c service: Add proper GetCacheStorageMax implementation to IApplicationFunctions 2024-02-18 05:02:35 +01:00
liamwhite
5d3c7433b8
Merge pull request #13050 from t895/marquee-helper
android: Use extension functions for view visibility and text marquee
2024-02-17 22:48:36 -05:00
t895
0010d42f82 android: Use extension functions for view visibility and text marquee 2024-02-17 22:45:33 -05:00
liamwhite
316089c39f
Merge pull request #13052 from t895/serializable-stuff
android: Move CoreErrorDialogFragment to its own file
2024-02-17 22:22:46 -05:00
liamwhite
5024df1925
Merge pull request #13051 from german77/cheatmiss
dmnt: cheats: Fix valid address range
2024-02-17 22:22:14 -05:00
liamwhite
e7146309de
Merge pull request #13034 from t895/map-all-the-inputs
android: Input mapping
2024-02-17 22:22:06 -05:00
t895
c327d2a62c android: Move CoreErrorDialogFragment to its own file 2024-02-17 21:58:25 -05:00
Andrew Pilley
cb2e312f13 Add check for corrupted firmware files after install. 2024-02-18 12:31:14 +11:00
german77
366bb52ec8 dmnt: cheats: Fix valid address range 2024-02-17 19:10:17 -06:00
Leystryku
82949085c0 fsp: Add FlushAccessLogOnSdCard stub 2024-02-18 00:52:22 +01:00
Leystryku
90c43aa2e7 service: Add GetCacheStorageMax stub to IApplicationFunctions 2024-02-18 00:49:41 +01:00
german77
a07f0883b9 service: vi: Implement ListDisplayMode 2024-02-17 18:08:41 -05:00
Liam
812f23d05c vi: manage resources independently of nvnflinger and refactor 2024-02-17 18:08:38 -05:00
Liam
dcce9837d2 vi: move shared buffer management from nvnflinger 2024-02-17 18:01:41 -05:00
Liam
ee8eccc5fa nvnflinger: convert to process 2024-02-17 18:01:41 -05:00
Liam
7b79cddacd am: unify display layer management 2024-02-17 18:00:28 -05:00
Narr the Reg
4cbafc1ef6 service: audio: Rewrite IAudioController to new IPC 2024-02-17 15:05:13 -06:00
Andrew Pilley
e31c926bf0 >.> spelling 2024-02-18 07:58:41 +11:00
Andrew Pilley
59ede32f8e cleanup by clang-format. 2024-02-18 07:41:24 +11:00
Andrew Pilley
9eba64adce Improve behavior when one or more firmware files can't be deleted. 2024-02-18 07:38:47 +11:00
Narr the Reg
110969e207 service: btm: Implement function needed by QLaunch 2024-02-17 12:39:36 -06:00
t895
50ecad547e android: Input mapping 2024-02-17 12:32:33 -05:00
Andrew Pilley
e2e0916100
Merge branch 'yuzu-emu:master' into import-firmware 2024-02-17 23:36:43 +11:00
Andrew Pilley
501e3ae05a Implement In-app firmware installation. 2024-02-17 23:33:55 +11:00
t895
ac33847b30 hid_core: Prevent crash if we try to iterate through empty color devices list 2024-02-16 21:11:47 -05:00
t895
18494b0ad6 hid_core: Use dedicated "port" for android's input overlay 2024-02-16 21:09:42 -05:00
t895
dc2c302a84 config: Reset per-game profile name on load if empty 2024-02-16 21:07:03 -05:00
t895
a251f77556 android: Allow SettingsItems to use String or StringRes 2024-02-16 21:04:26 -05:00
Narr the Reg
ec02a1cfe5 service: erpt: Implement SubmitContext 2024-02-16 12:22:09 -06:00
Narr the Reg
39b958ab86 service: caps: Implement GetAlbumFIleList 2024-02-16 12:15:37 -06:00
Narr the Reg
9c0724b270 service: btm: Migrate service to new IPC 2024-02-16 12:15:06 -06:00
Narr the Reg
dbcc447f43 service: am: Fix GetMainAppletAvailableUsers for user creation 2024-02-16 12:13:10 -06:00
Narr the Reg
2954c01b47 service: am: Add QLaunch launcher 2024-02-16 12:13:10 -06:00
Liam
462ea921e3 shader_recompiler: fix non-const offset for arrayed image types 2024-02-15 18:49:23 -05:00
Liam
cb29aa0473 Revert "shader_recompiler: use only ConstOffset for OpImageFetch"
This reverts commit f296a9ce9a1a144d322d54d4628dba6f8a800cb7.
2024-02-15 18:38:56 -05:00
Liam
3067bfd126 buffer_cache: use mapped range with large vertex buffer size 2024-02-13 08:27:33 -05:00
Liam
461eaca7e8 device_memory_manager: skip unregistered interfaces on invalidate 2024-02-12 20:02:59 -05:00
Liam
368bf2211f texture_cache: tweak iteration tracking change 2024-02-11 13:41:13 -05:00
Liam
de8a623932 texture_cache: avoid overestimation of ASTC texture sizes 2024-02-11 13:41:13 -05:00
Liam
865a0186b6 caches: make critical reclamation less eager and possible in more cases 2024-02-11 13:41:13 -05:00
478 changed files with 46799 additions and 28720 deletions

View File

@ -81,8 +81,7 @@ jobs:
fetch-depth: 0
- name: Install dependencies
run: |
# workaround for https://github.com/actions/setup-python/issues/577
brew install autoconf automake boost@1.83 ccache ffmpeg fmt glslang hidapi libtool libusb lz4 ninja nlohmann-json openssl pkg-config qt@5 sdl2 speexdsp zlib zlib zstd || brew link --overwrite python@3.12
brew install autoconf automake boost ccache ffmpeg fmt glslang hidapi libtool libusb lz4 ninja nlohmann-json openssl pkg-config qt@5 sdl2 speexdsp zlib zlib zstd
- name: Build
run: |
mkdir build

View File

@ -1,16 +1,9 @@
| Pull Request | Commit | Title | Author | Merged? |
|----|----|----|----|----|
| [10529](https://github.com/yuzu-emu/yuzu//pull/10529) | [`368bf2211`](https://github.com/yuzu-emu/yuzu//pull/10529/files) | caches: make critical reclamation less eager and possible in more cases | [liamwhite](https://github.com/liamwhite/) | Yes |
| [12461](https://github.com/yuzu-emu/yuzu//pull/12461) | [`acc26667b`](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 |
| [12749](https://github.com/yuzu-emu/yuzu//pull/12749) | [`aad4b0d6f`](https://github.com/yuzu-emu/yuzu//pull/12749/files) | general: workarounds for SMMU syncing issues | [liamwhite](https://github.com/liamwhite/) | Yes |
| [13000](https://github.com/yuzu-emu/yuzu//pull/13000) | [`461eaca7e`](https://github.com/yuzu-emu/yuzu//pull/13000/files) | device_memory_manager: skip unregistered interfaces on invalidate | [liamwhite](https://github.com/liamwhite/) | Yes |
| [13006](https://github.com/yuzu-emu/yuzu//pull/13006) | [`3067bfd12`](https://github.com/yuzu-emu/yuzu//pull/13006/files) | buffer_cache: use mapped range with large vertex buffer size | [liamwhite](https://github.com/liamwhite/) | Yes |
| [13026](https://github.com/yuzu-emu/yuzu//pull/13026) | [`462ea921e`](https://github.com/yuzu-emu/yuzu//pull/13026/files) | shader_recompiler: fix non-const offset for arrayed image types | [liamwhite](https://github.com/liamwhite/) | Yes |
| [13030](https://github.com/yuzu-emu/yuzu//pull/13030) | [`4cbafc1ef`](https://github.com/yuzu-emu/yuzu//pull/13030/files) | service: audio: Rewrite IAudioController to new IPC | [german77](https://github.com/german77/) | Yes |
| [13032](https://github.com/yuzu-emu/yuzu//pull/13032) | [`ec02a1cfe`](https://github.com/yuzu-emu/yuzu//pull/13032/files) | service: Implement functions needed by Qlaunch | [german77](https://github.com/german77/) | Yes |
| [13034](https://github.com/yuzu-emu/yuzu//pull/13034) | [`50ecad547`](https://github.com/yuzu-emu/yuzu//pull/13034/files) | android: Input mapping | [t895](https://github.com/t895/) | Yes |
| [13035](https://github.com/yuzu-emu/yuzu//pull/13035) | [`a07f0883b`](https://github.com/yuzu-emu/yuzu//pull/13035/files) | vi: manage resources independently of nvnflinger and refactor | [liamwhite](https://github.com/liamwhite/) | Yes |
| [13048](https://github.com/yuzu-emu/yuzu//pull/13048) | [`72d806db0`](https://github.com/yuzu-emu/yuzu//pull/13048/files) | ns: rewrite for new IPC | [liamwhite](https://github.com/liamwhite/) | Yes |
| [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.

2110
dist/languages/ar.ts vendored

File diff suppressed because it is too large Load Diff

2100
dist/languages/ca.ts vendored

File diff suppressed because it is too large Load Diff

2260
dist/languages/cs.ts vendored

File diff suppressed because it is too large Load Diff

2182
dist/languages/da.ts vendored

File diff suppressed because it is too large Load Diff

1636
dist/languages/de.ts vendored

File diff suppressed because it is too large Load Diff

2062
dist/languages/el.ts vendored

File diff suppressed because it is too large Load Diff

1722
dist/languages/es.ts vendored

File diff suppressed because it is too large Load Diff

1684
dist/languages/fr.ts vendored

File diff suppressed because it is too large Load Diff

1932
dist/languages/hu.ts vendored

File diff suppressed because it is too large Load Diff

2397
dist/languages/id.ts vendored

File diff suppressed because it is too large Load Diff

1692
dist/languages/it.ts vendored

File diff suppressed because it is too large Load Diff

1950
dist/languages/ja_JP.ts vendored

File diff suppressed because it is too large Load Diff

2054
dist/languages/ko_KR.ts vendored

File diff suppressed because it is too large Load Diff

2054
dist/languages/nb.ts vendored

File diff suppressed because it is too large Load Diff

2054
dist/languages/nl.ts vendored

File diff suppressed because it is too large Load Diff

2054
dist/languages/pl.ts vendored

File diff suppressed because it is too large Load Diff

2046
dist/languages/pt_BR.ts vendored

File diff suppressed because it is too large Load Diff

1680
dist/languages/pt_PT.ts vendored

File diff suppressed because it is too large Load Diff

1677
dist/languages/ru_RU.ts vendored

File diff suppressed because it is too large Load Diff

2230
dist/languages/sv.ts vendored

File diff suppressed because it is too large Load Diff

1976
dist/languages/tr_TR.ts vendored

File diff suppressed because it is too large Load Diff

2054
dist/languages/uk.ts vendored

File diff suppressed because it is too large Load Diff

2054
dist/languages/vi.ts vendored

File diff suppressed because it is too large Load Diff

2054
dist/languages/vi_VN.ts vendored

File diff suppressed because it is too large Load Diff

1719
dist/languages/zh_CN.ts vendored

File diff suppressed because it is too large Load Diff

1682
dist/languages/zh_TW.ts vendored

File diff suppressed because it is too large Load Diff

View File

@ -121,6 +121,7 @@ else()
-Wno-attributes
-Wno-invalid-offsetof
-Wno-unused-parameter
-Wno-missing-field-initializers
)
if (CMAKE_CXX_COMPILER_ID MATCHES Clang) # Clang or AppleClang

View File

@ -3,24 +3,21 @@
package org.yuzu.yuzu_emu
import android.app.Dialog
import android.content.DialogInterface
import android.net.Uri
import android.os.Bundle
import android.text.Html
import android.text.method.LinkMovementMethod
import android.view.Surface
import android.view.View
import android.widget.TextView
import androidx.annotation.Keep
import androidx.fragment.app.DialogFragment
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import java.lang.ref.WeakReference
import org.yuzu.yuzu_emu.activities.EmulationActivity
import org.yuzu.yuzu_emu.fragments.CoreErrorDialogFragment
import org.yuzu.yuzu_emu.utils.DocumentsTree
import org.yuzu.yuzu_emu.utils.FileUtil
import org.yuzu.yuzu_emu.utils.Log
import org.yuzu.yuzu_emu.utils.SerializableHelper.serializable
import org.yuzu.yuzu_emu.model.InstallResult
import org.yuzu.yuzu_emu.model.Patch
import org.yuzu.yuzu_emu.model.GameVerificationResult
@ -184,46 +181,13 @@ object NativeLibrary {
ErrorUnknown
}
private var coreErrorAlertResult = false
private val coreErrorAlertLock = Object()
class CoreErrorDialogFragment : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val title = requireArguments().serializable<String>("title")
val message = requireArguments().serializable<String>("message")
return MaterialAlertDialogBuilder(requireActivity())
.setTitle(title)
.setMessage(message)
.setPositiveButton(R.string.continue_button, null)
.setNegativeButton(R.string.abort_button) { _: DialogInterface?, _: Int ->
coreErrorAlertResult = false
synchronized(coreErrorAlertLock) { coreErrorAlertLock.notify() }
}
.create()
}
override fun onDismiss(dialog: DialogInterface) {
coreErrorAlertResult = true
synchronized(coreErrorAlertLock) { coreErrorAlertLock.notify() }
}
companion object {
fun newInstance(title: String?, message: String?): CoreErrorDialogFragment {
val frag = CoreErrorDialogFragment()
val args = Bundle()
args.putString("title", title)
args.putString("message", message)
frag.arguments = args
return frag
}
}
}
var coreErrorAlertResult = false
val coreErrorAlertLock = Object()
private fun onCoreErrorImpl(title: String, message: String) {
val emulationActivity = sEmulationActivity.get()
if (emulationActivity == null) {
error("[NativeLibrary] EmulationActivity not present")
Log.error("[NativeLibrary] EmulationActivity not present")
return
}
@ -239,7 +203,7 @@ object NativeLibrary {
fun onCoreError(error: CoreError?, details: String): Boolean {
val emulationActivity = sEmulationActivity.get()
if (emulationActivity == null) {
error("[NativeLibrary] EmulationActivity not present")
Log.error("[NativeLibrary] EmulationActivity not present")
return false
}
@ -270,7 +234,7 @@ object NativeLibrary {
}
// Show the AlertDialog on the main thread.
emulationActivity.runOnUiThread(Runnable { onCoreErrorImpl(title, message) })
emulationActivity.runOnUiThread { onCoreErrorImpl(title, message) }
// Wait for the lock to notify that it is complete.
synchronized(coreErrorAlertLock) { coreErrorAlertLock.wait() }

View File

@ -80,8 +80,14 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener {
super.onCreate(savedInstanceState)
InputHandler.updateControllerData()
val playerOne = NativeConfig.getInputSettings(true)[0]
if (!playerOne.hasMapping() && InputHandler.androidControllers.isNotEmpty()) {
val players = NativeConfig.getInputSettings(true)
var hasConfiguredControllers = false
players.forEach {
if (it.hasMapping()) {
hasConfiguredControllers = true
}
}
if (!hasConfiguredControllers && InputHandler.androidControllers.isNotEmpty()) {
var params: ParamPackage? = null
for (controller in InputHandler.registeredControllers) {
if (controller.get("port", -1) == 0) {

View File

@ -3,15 +3,15 @@
package org.yuzu.yuzu_emu.adapters
import android.text.TextUtils
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import org.yuzu.yuzu_emu.R
import org.yuzu.yuzu_emu.databinding.CardDriverOptionBinding
import org.yuzu.yuzu_emu.features.settings.model.StringSetting
import org.yuzu.yuzu_emu.model.Driver
import org.yuzu.yuzu_emu.model.DriverViewModel
import org.yuzu.yuzu_emu.utils.ViewUtils.marquee
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder
class DriverAdapter(private val driverViewModel: DriverViewModel) :
@ -44,25 +44,15 @@ class DriverAdapter(private val driverViewModel: DriverViewModel) :
}
// Delay marquee by 3s
title.postDelayed(
{
title.isSelected = true
title.ellipsize = TextUtils.TruncateAt.MARQUEE
version.isSelected = true
version.ellipsize = TextUtils.TruncateAt.MARQUEE
description.isSelected = true
description.ellipsize = TextUtils.TruncateAt.MARQUEE
},
3000
)
title.marquee()
version.marquee()
description.marquee()
title.text = model.title
version.text = model.version
description.text = model.description
if (model.title != binding.root.context.getString(R.string.system_gpu_driver)) {
buttonDelete.visibility = View.VISIBLE
} else {
buttonDelete.visibility = View.GONE
}
buttonDelete.setVisible(
model.title != binding.root.context.getString(R.string.system_gpu_driver)
)
}
}
}

View File

@ -4,7 +4,6 @@
package org.yuzu.yuzu_emu.adapters
import android.net.Uri
import android.text.TextUtils
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.fragment.app.FragmentActivity
@ -12,6 +11,7 @@ import org.yuzu.yuzu_emu.databinding.CardFolderBinding
import org.yuzu.yuzu_emu.fragments.GameFolderPropertiesDialogFragment
import org.yuzu.yuzu_emu.model.GameDir
import org.yuzu.yuzu_emu.model.GamesViewModel
import org.yuzu.yuzu_emu.utils.ViewUtils.marquee
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder
class FolderAdapter(val activity: FragmentActivity, val gamesViewModel: GamesViewModel) :
@ -29,13 +29,7 @@ class FolderAdapter(val activity: FragmentActivity, val gamesViewModel: GamesVie
override fun bind(model: GameDir) {
binding.apply {
path.text = Uri.parse(model.uriString).path
path.postDelayed(
{
path.isSelected = true
path.ellipsize = TextUtils.TruncateAt.MARQUEE
},
3000
)
path.marquee()
buttonEdit.setOnClickListener {
GameFolderPropertiesDialogFragment.newInstance(model)

View File

@ -4,7 +4,6 @@
package org.yuzu.yuzu_emu.adapters
import android.net.Uri
import android.text.TextUtils
import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.ImageView
@ -27,6 +26,7 @@ import org.yuzu.yuzu_emu.databinding.CardGameBinding
import org.yuzu.yuzu_emu.model.Game
import org.yuzu.yuzu_emu.model.GamesViewModel
import org.yuzu.yuzu_emu.utils.GameIconUtils
import org.yuzu.yuzu_emu.utils.ViewUtils.marquee
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder
class GameAdapter(private val activity: AppCompatActivity) :
@ -44,14 +44,7 @@ class GameAdapter(private val activity: AppCompatActivity) :
binding.textGameTitle.text = model.title.replace("[\\t\\n\\r]+".toRegex(), " ")
binding.textGameTitle.postDelayed(
{
binding.textGameTitle.ellipsize = TextUtils.TruncateAt.MARQUEE
binding.textGameTitle.isSelected = true
},
3000
)
binding.textGameTitle.marquee()
binding.cardGame.setOnClickListener { onClick(model) }
binding.cardGame.setOnLongClickListener { onLongClick(model) }
}

View File

@ -3,21 +3,18 @@
package org.yuzu.yuzu_emu.adapters
import android.text.TextUtils
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.content.res.ResourcesCompat
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import kotlinx.coroutines.launch
import org.yuzu.yuzu_emu.databinding.CardInstallableIconBinding
import org.yuzu.yuzu_emu.databinding.CardSimpleOutlinedBinding
import org.yuzu.yuzu_emu.model.GameProperty
import org.yuzu.yuzu_emu.model.InstallableProperty
import org.yuzu.yuzu_emu.model.SubmenuProperty
import org.yuzu.yuzu_emu.utils.ViewUtils.marquee
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
import org.yuzu.yuzu_emu.utils.collect
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder
class GamePropertiesAdapter(
@ -76,23 +73,15 @@ class GamePropertiesAdapter(
)
)
binding.details.postDelayed({
binding.details.isSelected = true
binding.details.ellipsize = TextUtils.TruncateAt.MARQUEE
}, 3000)
binding.details.marquee()
if (submenuProperty.details != null) {
binding.details.visibility = View.VISIBLE
binding.details.setVisible(true)
binding.details.text = submenuProperty.details.invoke()
} else if (submenuProperty.detailsFlow != null) {
binding.details.visibility = View.VISIBLE
viewLifecycle.lifecycleScope.launch {
viewLifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) {
submenuProperty.detailsFlow.collect { binding.details.text = it }
}
}
binding.details.setVisible(true)
submenuProperty.detailsFlow.collect(viewLifecycle) { binding.details.text = it }
} else {
binding.details.visibility = View.GONE
binding.details.setVisible(false)
}
}
}
@ -112,14 +101,10 @@ class GamePropertiesAdapter(
)
)
if (installableProperty.install != null) {
binding.buttonInstall.visibility = View.VISIBLE
binding.buttonInstall.setOnClickListener { installableProperty.install.invoke() }
}
if (installableProperty.export != null) {
binding.buttonExport.visibility = View.VISIBLE
binding.buttonExport.setOnClickListener { installableProperty.export.invoke() }
}
binding.buttonInstall.setVisible(installableProperty.install != null)
binding.buttonInstall.setOnClickListener { installableProperty.install?.invoke() }
binding.buttonExport.setVisible(installableProperty.export != null)
binding.buttonExport.setOnClickListener { installableProperty.export?.invoke() }
}
}

View File

@ -3,22 +3,19 @@
package org.yuzu.yuzu_emu.adapters
import android.text.TextUtils
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import kotlinx.coroutines.launch
import org.yuzu.yuzu_emu.R
import org.yuzu.yuzu_emu.databinding.CardHomeOptionBinding
import org.yuzu.yuzu_emu.fragments.MessageDialogFragment
import org.yuzu.yuzu_emu.model.HomeSetting
import org.yuzu.yuzu_emu.utils.ViewUtils.marquee
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
import org.yuzu.yuzu_emu.utils.collect
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder
class HomeSettingAdapter(
@ -59,18 +56,8 @@ class HomeSettingAdapter(
binding.optionIcon.alpha = 0.5f
}
viewLifecycle.lifecycleScope.launch {
viewLifecycle.repeatOnLifecycle(Lifecycle.State.CREATED) {
model.details.collect { updateOptionDetails(it) }
}
}
binding.optionDetail.postDelayed(
{
binding.optionDetail.ellipsize = TextUtils.TruncateAt.MARQUEE
binding.optionDetail.isSelected = true
},
3000
)
model.details.collect(viewLifecycle) { updateOptionDetails(it) }
binding.optionDetail.marquee()
binding.root.setOnClickListener { onClick(model) }
}
@ -90,7 +77,7 @@ class HomeSettingAdapter(
private fun updateOptionDetails(detailString: String) {
if (detailString.isNotEmpty()) {
binding.optionDetail.text = detailString
binding.optionDetail.visibility = View.VISIBLE
binding.optionDetail.setVisible(true)
}
}
}

View File

@ -4,10 +4,10 @@
package org.yuzu.yuzu_emu.adapters
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import org.yuzu.yuzu_emu.databinding.CardInstallableBinding
import org.yuzu.yuzu_emu.model.Installable
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder
class InstallableAdapter(installables: List<Installable>) :
@ -26,14 +26,10 @@ class InstallableAdapter(installables: List<Installable>) :
binding.title.setText(model.titleId)
binding.description.setText(model.descriptionId)
if (model.install != null) {
binding.buttonInstall.visibility = View.VISIBLE
binding.buttonInstall.setOnClickListener { model.install.invoke() }
}
if (model.export != null) {
binding.buttonExport.visibility = View.VISIBLE
binding.buttonExport.setOnClickListener { model.export.invoke() }
}
binding.buttonInstall.setVisible(model.install != null)
binding.buttonInstall.setOnClickListener { model.install?.invoke() }
binding.buttonExport.setVisible(model.export != null)
binding.buttonExport.setOnClickListener { model.export?.invoke() }
}
}
}

View File

@ -4,12 +4,12 @@
package org.yuzu.yuzu_emu.adapters
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding
import org.yuzu.yuzu_emu.fragments.LicenseBottomSheetDialogFragment
import org.yuzu.yuzu_emu.model.License
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder
class LicenseAdapter(private val activity: AppCompatActivity, licenses: List<License>) :
@ -25,7 +25,7 @@ class LicenseAdapter(private val activity: AppCompatActivity, licenses: List<Lic
binding.apply {
textSettingName.text = root.context.getString(model.titleId)
textSettingDescription.text = root.context.getString(model.descriptionId)
textSettingValue.visibility = View.GONE
textSettingValue.setVisible(false)
root.setOnClickListener { onClick(model) }
}

View File

@ -5,7 +5,6 @@ package org.yuzu.yuzu_emu.adapters
import android.text.Html
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.res.ResourcesCompat
@ -17,6 +16,7 @@ import org.yuzu.yuzu_emu.model.SetupCallback
import org.yuzu.yuzu_emu.model.SetupPage
import org.yuzu.yuzu_emu.model.StepState
import org.yuzu.yuzu_emu.utils.ViewUtils
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder
class SetupAdapter(val activity: AppCompatActivity, pages: List<SetupPage>) :
@ -30,8 +30,8 @@ class SetupAdapter(val activity: AppCompatActivity, pages: List<SetupPage>) :
AbstractViewHolder<SetupPage>(binding), SetupCallback {
override fun bind(model: SetupPage) {
if (model.stepCompleted.invoke() == StepState.COMPLETE) {
binding.buttonAction.visibility = View.INVISIBLE
binding.textConfirmation.visibility = View.VISIBLE
binding.buttonAction.setVisible(visible = false, gone = false)
binding.textConfirmation.setVisible(true)
}
binding.icon.setImageDrawable(

View File

@ -64,17 +64,17 @@ data class PlayerInput(
fun hasMapping(): Boolean {
var hasMapping = false
buttons.forEach {
if (it != "[empty]") {
if (it != "[empty]" && it.isNotEmpty()) {
hasMapping = true
}
}
analogs.forEach {
if (it != "[empty]") {
if (it != "[empty]" && it.isNotEmpty()) {
hasMapping = true
}
}
motions.forEach {
if (it != "[empty]") {
if (it != "[empty]" && it.isNotEmpty()) {
hasMapping = true
}
}

View File

@ -6,7 +6,8 @@ package org.yuzu.yuzu_emu.features.settings.model
import org.yuzu.yuzu_emu.utils.NativeConfig
enum class StringSetting(override val key: String) : AbstractStringSetting {
DRIVER_PATH("driver_path");
DRIVER_PATH("driver_path"),
DEVICE_NAME("device_name");
override fun getString(needsGlobal: Boolean): String = NativeConfig.getString(key, needsGlobal)

View File

@ -16,6 +16,7 @@ import org.yuzu.yuzu_emu.features.settings.model.ByteSetting
import org.yuzu.yuzu_emu.features.settings.model.IntSetting
import org.yuzu.yuzu_emu.features.settings.model.LongSetting
import org.yuzu.yuzu_emu.features.settings.model.ShortSetting
import org.yuzu.yuzu_emu.features.settings.model.StringSetting
import org.yuzu.yuzu_emu.utils.NativeConfig
/**
@ -75,6 +76,9 @@ abstract class SettingsItem(
get() = NativeLibrary.isRunning() && !setting.global &&
!NativeConfig.isPerGameConfigLoaded()
val clearable: Boolean
get() = !setting.global && NativeConfig.isPerGameConfigLoaded()
companion object {
const val TYPE_HEADER = 0
const val TYPE_SWITCH = 1
@ -87,6 +91,7 @@ abstract class SettingsItem(
const val TYPE_INPUT = 8
const val TYPE_INT_SINGLE_CHOICE = 9
const val TYPE_INPUT_PROFILE = 10
const val TYPE_STRING_INPUT = 11
const val FASTMEM_COMBINED = "fastmem_combined"
@ -105,6 +110,7 @@ abstract class SettingsItem(
// List of all general
val settingsItems = HashMap<String, SettingsItem>().apply {
put(StringInputSetting(StringSetting.DEVICE_NAME, titleId = R.string.device_name))
put(
SwitchSetting(
BooleanSetting.RENDERER_USE_SPEED_LIMIT,

View File

@ -0,0 +1,22 @@
// SPDX-FileCopyrightText: 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.features.settings.model.view
import androidx.annotation.StringRes
import org.yuzu.yuzu_emu.features.settings.model.AbstractStringSetting
class StringInputSetting(
setting: AbstractStringSetting,
@StringRes titleId: Int = 0,
titleString: String = "",
@StringRes descriptionId: Int = 0,
descriptionString: String = ""
) : SettingsItem(setting, titleId, titleString, descriptionId, descriptionString) {
override val type = TYPE_STRING_INPUT
fun getSelectedValue(needsGlobal: Boolean = false) = setting.getValueAsString(needsGlobal)
fun setSelectedValue(selection: String) =
(setting as AbstractStringSetting).setString(selection)
}

View File

@ -11,16 +11,13 @@ import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import kotlinx.coroutines.launch
import org.yuzu.yuzu_emu.R
import org.yuzu.yuzu_emu.databinding.DialogInputProfilesBinding
import org.yuzu.yuzu_emu.features.settings.model.view.InputProfileSetting
import org.yuzu.yuzu_emu.fragments.MessageDialogFragment
import org.yuzu.yuzu_emu.utils.collect
class InputProfileDialogFragment : DialogFragment() {
private var position = 0
@ -110,9 +107,7 @@ class InputProfileDialogFragment : DialogFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewLifecycleOwner.lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
settingsViewModel.shouldShowDeleteProfileDialog.collect {
settingsViewModel.shouldShowDeleteProfileDialog.collect(viewLifecycleOwner) {
if (it.isNotEmpty()) {
MessageDialogFragment.newInstance(
activity = requireActivity(),
@ -130,8 +125,6 @@ class InputProfileDialogFragment : DialogFragment() {
}
}
}
}
}
companion object {
const val TAG = "InputProfileDialogFragment"

View File

@ -13,14 +13,9 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.navArgs
import com.google.android.material.color.MaterialColors
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import org.yuzu.yuzu_emu.NativeLibrary
import java.io.IOException
import org.yuzu.yuzu_emu.R
@ -70,41 +65,25 @@ class SettingsActivity : AppCompatActivity() {
)
}
lifecycleScope.apply {
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
settingsViewModel.shouldRecreate.collectLatest {
settingsViewModel.shouldRecreate.collect(
this,
resetState = { settingsViewModel.setShouldRecreate(false) }
) { if (it) recreate() }
settingsViewModel.shouldNavigateBack.collect(
this,
resetState = { settingsViewModel.setShouldNavigateBack(false) }
) { if (it) navigateBack() }
settingsViewModel.shouldShowResetSettingsDialog.collect(
this,
resetState = { settingsViewModel.setShouldShowResetSettingsDialog(false) }
) {
if (it) {
settingsViewModel.setShouldRecreate(false)
recreate()
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
settingsViewModel.shouldNavigateBack.collectLatest {
if (it) {
settingsViewModel.setShouldNavigateBack(false)
navigateBack()
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
settingsViewModel.shouldShowResetSettingsDialog.collectLatest {
if (it) {
settingsViewModel.setShouldShowResetSettingsDialog(false)
ResetSettingsDialogFragment().show(
supportFragmentManager,
ResetSettingsDialogFragment.TAG
)
}
}
}
}
}
onBackPressedDispatcher.addCallback(
this,

View File

@ -85,6 +85,10 @@ class SettingsAdapter(
InputProfileViewHolder(ListItemSettingBinding.inflate(inflater), this)
}
SettingsItem.TYPE_STRING_INPUT -> {
StringInputViewHolder(ListItemSettingBinding.inflate(inflater), this)
}
else -> {
HeaderViewHolder(ListItemSettingsHeaderBinding.inflate(inflater), this)
}
@ -392,6 +396,15 @@ class SettingsAdapter(
popup.show()
}
fun onStringInputClick(item: StringInputSetting, position: Int) {
SettingsDialogFragment.newInstance(
settingsViewModel,
item,
SettingsItem.TYPE_STRING_INPUT,
position
).show(fragment.childFragmentManager, SettingsDialogFragment.TAG)
}
fun onLongClick(item: SettingsItem, position: Int): Boolean {
SettingsDialogFragment.newInstance(
settingsViewModel,

View File

@ -11,13 +11,10 @@ import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.slider.Slider
import kotlinx.coroutines.launch
import org.yuzu.yuzu_emu.R
import org.yuzu.yuzu_emu.databinding.DialogEditTextBinding
import org.yuzu.yuzu_emu.databinding.DialogSliderBinding
import org.yuzu.yuzu_emu.features.input.NativeInput
import org.yuzu.yuzu_emu.features.input.model.AnalogDirection
@ -27,8 +24,10 @@ import org.yuzu.yuzu_emu.features.settings.model.view.IntSingleChoiceSetting
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
import org.yuzu.yuzu_emu.features.settings.model.view.SingleChoiceSetting
import org.yuzu.yuzu_emu.features.settings.model.view.SliderSetting
import org.yuzu.yuzu_emu.features.settings.model.view.StringInputSetting
import org.yuzu.yuzu_emu.features.settings.model.view.StringSingleChoiceSetting
import org.yuzu.yuzu_emu.utils.ParamPackage
import org.yuzu.yuzu_emu.utils.collect
class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener {
private var type = 0
@ -40,6 +39,7 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener
private val settingsViewModel: SettingsViewModel by activityViewModels()
private lateinit var sliderBinding: DialogSliderBinding
private lateinit var stringInputBinding: DialogEditTextBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -134,6 +134,18 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener
.create()
}
SettingsItem.TYPE_STRING_INPUT -> {
stringInputBinding = DialogEditTextBinding.inflate(layoutInflater)
val item = settingsViewModel.clickedItem as StringInputSetting
stringInputBinding.editText.setText(item.getSelectedValue())
MaterialAlertDialogBuilder(requireContext())
.setTitle(item.title)
.setView(stringInputBinding.root)
.setPositiveButton(android.R.string.ok, this)
.setNegativeButton(android.R.string.cancel, defaultCancelListener)
.create()
}
SettingsItem.TYPE_STRING_SINGLE_CHOICE -> {
val item = settingsViewModel.clickedItem as StringSingleChoiceSetting
MaterialAlertDialogBuilder(requireContext())
@ -161,6 +173,7 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener
): View? {
return when (type) {
SettingsItem.TYPE_SLIDER -> sliderBinding.root
SettingsItem.TYPE_STRING_INPUT -> stringInputBinding.root
else -> super.onCreateView(inflater, container, savedInstanceState)
}
}
@ -169,21 +182,15 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener
super.onViewCreated(view, savedInstanceState)
when (type) {
SettingsItem.TYPE_SLIDER -> {
viewLifecycleOwner.lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
settingsViewModel.sliderTextValue.collect {
settingsViewModel.sliderTextValue.collect(viewLifecycleOwner) {
sliderBinding.textValue.text = it
}
}
repeatOnLifecycle(Lifecycle.State.CREATED) {
settingsViewModel.sliderProgress.collect {
settingsViewModel.sliderProgress.collect(viewLifecycleOwner) {
sliderBinding.slider.value = it.toFloat()
}
}
}
}
}
}
override fun onClick(dialog: DialogInterface, which: Int) {
when (settingsViewModel.clickedItem) {
@ -209,6 +216,13 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener
val sliderSetting = settingsViewModel.clickedItem as SliderSetting
sliderSetting.setSelectedValue(settingsViewModel.sliderProgress.value)
}
is StringInputSetting -> {
val stringInputSetting = settingsViewModel.clickedItem as StringInputSetting
stringInputSetting.setSelectedValue(
(stringInputBinding.editText.text ?: "").toString()
)
}
}
closeDialog()
}

View File

@ -13,21 +13,17 @@ import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.findNavController
import androidx.navigation.fragment.navArgs
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.transition.MaterialSharedAxis
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import org.yuzu.yuzu_emu.R
import org.yuzu.yuzu_emu.databinding.FragmentSettingsBinding
import org.yuzu.yuzu_emu.features.input.NativeInput
import org.yuzu.yuzu_emu.features.settings.model.Settings
import org.yuzu.yuzu_emu.fragments.MessageDialogFragment
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
import org.yuzu.yuzu_emu.utils.collect
class SettingsFragment : Fragment() {
private lateinit var presenter: SettingsFragmentPresenter
@ -63,8 +59,7 @@ class SettingsFragment : Fragment() {
return binding.root
}
// This is using the correct scope, lint is just acting up
@SuppressLint("UnsafeRepeatOnLifecycleDetector", "NotifyDataSetChanged")
@SuppressLint("NotifyDataSetChanged")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
settingsAdapter = SettingsAdapter(this, requireContext())
@ -100,50 +95,26 @@ class SettingsFragment : Fragment() {
settingsViewModel.setShouldNavigateBack(true)
}
viewLifecycleOwner.lifecycleScope.apply {
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
settingsViewModel.shouldReloadSettingsList.collectLatest {
if (it) {
settingsViewModel.setShouldReloadSettingsList(false)
presenter.loadSettingsList()
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
settingsViewModel.adapterItemChanged.collect {
if (it != -1) {
settingsAdapter?.notifyItemChanged(it)
settingsViewModel.setAdapterItemChanged(-1)
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
settingsViewModel.datasetChanged.collect {
if (it) {
settingsAdapter?.notifyDataSetChanged()
settingsViewModel.setDatasetChanged(false)
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
settingsViewModel.reloadListAndNotifyDataset.collectLatest {
if (it) {
settingsViewModel.setReloadListAndNotifyDataset(false)
presenter.loadSettingsList(true)
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
settingsViewModel.shouldShowResetInputDialog.collectLatest {
settingsViewModel.shouldReloadSettingsList.collect(
viewLifecycleOwner,
resetState = { settingsViewModel.setShouldReloadSettingsList(false) }
) { if (it) presenter.loadSettingsList() }
settingsViewModel.adapterItemChanged.collect(
viewLifecycleOwner,
resetState = { settingsViewModel.setAdapterItemChanged(-1) }
) { if (it != -1) settingsAdapter?.notifyItemChanged(it) }
settingsViewModel.datasetChanged.collect(
viewLifecycleOwner,
resetState = { settingsViewModel.setDatasetChanged(false) }
) { if (it) settingsAdapter?.notifyDataSetChanged() }
settingsViewModel.reloadListAndNotifyDataset.collect(
viewLifecycleOwner,
resetState = { settingsViewModel.setReloadListAndNotifyDataset(false) }
) { if (it) presenter.loadSettingsList(true) }
settingsViewModel.shouldShowResetInputDialog.collect(
viewLifecycleOwner,
resetState = { settingsViewModel.setShouldShowResetInputDialog(false) }
) {
if (it) {
MessageDialogFragment.newInstance(
activity = requireActivity(),
@ -155,10 +126,6 @@ class SettingsFragment : Fragment() {
},
negativeAction = {}
).show(parentFragmentManager, MessageDialogFragment.TAG)
settingsViewModel.setShouldShowResetInputDialog(false)
}
}
}
}
}

View File

@ -23,6 +23,7 @@ import org.yuzu.yuzu_emu.features.settings.model.LongSetting
import org.yuzu.yuzu_emu.features.settings.model.Settings
import org.yuzu.yuzu_emu.features.settings.model.Settings.MenuTag
import org.yuzu.yuzu_emu.features.settings.model.ShortSetting
import org.yuzu.yuzu_emu.features.settings.model.StringSetting
import org.yuzu.yuzu_emu.features.settings.model.view.*
import org.yuzu.yuzu_emu.utils.InputHandler
import org.yuzu.yuzu_emu.utils.NativeConfig
@ -153,6 +154,7 @@ class SettingsFragmentPresenter(
private fun addSystemSettings(sl: ArrayList<SettingsItem>) {
sl.apply {
add(StringSetting.DEVICE_NAME.key)
add(BooleanSetting.RENDERER_USE_SPEED_LIMIT.key)
add(ShortSetting.RENDERER_SPEED_LIMIT.key)
add(BooleanSetting.USE_DOCKED_MODE.key)
@ -778,7 +780,7 @@ class SettingsFragmentPresenter(
playerIndex: Int,
paramName: String,
stick: NativeAnalog,
defaultValue: Int
defaultValue: Float
): AbstractIntSetting =
object : AbstractIntSetting {
val params get() = NativeInput.getStickParam(playerIndex, stick)
@ -786,7 +788,7 @@ class SettingsFragmentPresenter(
override val key = ""
override fun getInt(needsGlobal: Boolean): Int =
(params.get(paramName, 0.15f) * 100).toInt()
(params.get(paramName, defaultValue) * 100).toInt()
override fun setInt(value: Int) {
val tempParams = params
@ -794,12 +796,12 @@ class SettingsFragmentPresenter(
NativeInput.setStickParam(playerIndex, stick, tempParams)
}
override val defaultValue = defaultValue
override val defaultValue = (defaultValue * 100).toInt()
override fun getValueAsString(needsGlobal: Boolean): String =
getInt(needsGlobal).toString()
override fun reset() = setInt(defaultValue)
override fun reset() = setInt(this.defaultValue)
}
private fun getExtraStickSettings(
@ -809,11 +811,11 @@ class SettingsFragmentPresenter(
val stickIsController =
NativeInput.isController(NativeInput.getStickParam(playerIndex, nativeAnalog))
val modifierRangeSetting =
getStickIntSettingFromParam(playerIndex, "modifier_scale", nativeAnalog, 50)
getStickIntSettingFromParam(playerIndex, "modifier_scale", nativeAnalog, 0.5f)
val stickRangeSetting =
getStickIntSettingFromParam(playerIndex, "range", nativeAnalog, 95)
getStickIntSettingFromParam(playerIndex, "range", nativeAnalog, 0.95f)
val stickDeadzoneSetting =
getStickIntSettingFromParam(playerIndex, "deadzone", nativeAnalog, 15)
getStickIntSettingFromParam(playerIndex, "deadzone", nativeAnalog, 0.15f)
val out = mutableListOf<SettingsItem>().apply {
if (stickIsController) {

View File

@ -15,19 +15,17 @@ import androidx.core.view.updatePadding
import androidx.core.widget.doOnTextChanged
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.divider.MaterialDividerItemDecoration
import com.google.android.material.transition.MaterialSharedAxis
import info.debatty.java.stringsimilarity.Cosine
import kotlinx.coroutines.launch
import org.yuzu.yuzu_emu.R
import org.yuzu.yuzu_emu.databinding.FragmentSettingsSearchBinding
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
import org.yuzu.yuzu_emu.utils.NativeConfig
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
import org.yuzu.yuzu_emu.utils.collect
class SettingsSearchFragment : Fragment() {
private var _binding: FragmentSettingsSearchBinding? = null
@ -83,16 +81,12 @@ class SettingsSearchFragment : Fragment() {
search()
binding.settingsList.smoothScrollToPosition(0)
}
viewLifecycleOwner.lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
settingsViewModel.shouldReloadSettingsList.collect {
settingsViewModel.shouldReloadSettingsList.collect(viewLifecycleOwner) {
if (it) {
settingsViewModel.setShouldReloadSettingsList(false)
search()
}
}
}
}
search()
@ -106,10 +100,9 @@ class SettingsSearchFragment : Fragment() {
private fun search() {
val searchTerm = binding.searchText.text.toString().lowercase()
binding.clearButton.visibility =
if (searchTerm.isEmpty()) View.INVISIBLE else View.VISIBLE
binding.clearButton.setVisible(visible = searchTerm.isNotEmpty(), gone = false)
if (searchTerm.isEmpty()) {
binding.noResultsView.visibility = View.VISIBLE
binding.noResultsView.setVisible(visible = false, gone = false)
settingsAdapter?.submitList(emptyList())
return
}
@ -136,8 +129,7 @@ class SettingsSearchFragment : Fragment() {
optionalSetting
}
settingsAdapter?.submitList(sortedList)
binding.noResultsView.visibility =
if (sortedList.isEmpty()) View.VISIBLE else View.INVISIBLE
binding.noResultsView.setVisible(visible = sortedList.isEmpty(), gone = false)
}
private fun focusSearch() {

View File

@ -13,7 +13,7 @@ import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding
import org.yuzu.yuzu_emu.features.settings.model.view.DateTimeSetting
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter
import org.yuzu.yuzu_emu.utils.NativeConfig
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
class DateTimeViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) :
SettingViewHolder(binding.root, adapter) {
@ -22,27 +22,16 @@ class DateTimeViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA
override fun bind(item: SettingsItem) {
setting = item as DateTimeSetting
binding.textSettingName.text = item.title
if (setting.description.isNotEmpty()) {
binding.textSettingDescription.setVisible(item.description.isNotEmpty())
binding.textSettingDescription.text = item.description
binding.textSettingDescription.visibility = View.VISIBLE
} else {
binding.textSettingDescription.visibility = View.GONE
}
binding.textSettingValue.visibility = View.VISIBLE
binding.textSettingValue.setVisible(true)
val epochTime = setting.getValue()
val instant = Instant.ofEpochMilli(epochTime * 1000)
val zonedTime = ZonedDateTime.ofInstant(instant, ZoneId.of("UTC"))
val dateFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM)
binding.textSettingValue.text = dateFormatter.format(zonedTime)
binding.buttonClear.visibility = if (setting.setting.global ||
!NativeConfig.isPerGameConfigLoaded()
) {
View.GONE
} else {
View.VISIBLE
}
binding.buttonClear.setVisible(setting.clearable)
binding.buttonClear.setOnClickListener {
adapter.onClearClick(setting, bindingAdapterPosition)
}

View File

@ -9,6 +9,7 @@ import org.yuzu.yuzu_emu.features.settings.model.view.InputProfileSetting
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter
import org.yuzu.yuzu_emu.R
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
class InputProfileViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) :
SettingViewHolder(binding.root, adapter) {
@ -20,10 +21,10 @@ class InputProfileViewHolder(val binding: ListItemSettingBinding, adapter: Setti
binding.textSettingValue.text =
setting.getCurrentProfile().ifEmpty { binding.root.context.getString(R.string.not_set) }
binding.textSettingDescription.visibility = View.GONE
binding.buttonClear.visibility = View.GONE
binding.icon.visibility = View.GONE
binding.buttonClear.visibility = View.GONE
binding.textSettingDescription.setVisible(false)
binding.buttonClear.setVisible(false)
binding.icon.setVisible(false)
binding.buttonClear.setVisible(false)
}
override fun onClick(clicked: View) =

View File

@ -12,6 +12,7 @@ import org.yuzu.yuzu_emu.features.settings.model.view.InputSetting
import org.yuzu.yuzu_emu.features.settings.model.view.ModifierInputSetting
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
class InputViewHolder(val binding: ListItemSettingInputBinding, adapter: SettingsAdapter) :
SettingViewHolder(binding.root, adapter) {
@ -22,38 +23,26 @@ class InputViewHolder(val binding: ListItemSettingInputBinding, adapter: Setting
binding.textSettingName.text = setting.title
binding.textSettingValue.text = setting.getSelectedValue()
binding.buttonOptions.visibility = when (item) {
when (item) {
is AnalogInputSetting -> {
val param = NativeInput.getStickParam(item.playerIndex, item.nativeAnalog)
if (
binding.buttonOptions.setVisible(
param.get("engine", "") == "analog_from_button" ||
param.has("axis_x") || param.has("axis_y")
) {
View.VISIBLE
} else {
View.GONE
}
)
}
is ButtonInputSetting -> {
val param = NativeInput.getButtonParam(item.playerIndex, item.nativeButton)
if (
binding.buttonOptions.setVisible(
param.has("code") || param.has("button") || param.has("hat") ||
param.has("axis")
) {
View.VISIBLE
} else {
View.GONE
}
)
}
is ModifierInputSetting -> {
val params = NativeInput.getStickParam(item.playerIndex, item.nativeAnalog)
if (params.has("modifier")) {
View.VISIBLE
} else {
View.GONE
}
binding.buttonOptions.setVisible(params.has("modifier"))
}
}

View File

@ -9,6 +9,7 @@ import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding
import org.yuzu.yuzu_emu.features.settings.model.view.RunnableSetting
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
class RunnableViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) :
SettingViewHolder(binding.root, adapter) {
@ -16,8 +17,8 @@ class RunnableViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA
override fun bind(item: SettingsItem) {
setting = item as RunnableSetting
binding.icon.setVisible(setting.iconId != 0)
if (setting.iconId != 0) {
binding.icon.visibility = View.VISIBLE
binding.icon.setImageDrawable(
ResourcesCompat.getDrawable(
binding.icon.resources,
@ -25,19 +26,13 @@ class RunnableViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA
binding.icon.context.theme
)
)
} else {
binding.icon.visibility = View.GONE
}
binding.textSettingName.text = setting.title
if (setting.description.isNotEmpty()) {
binding.textSettingDescription.setText(item.descriptionId)
binding.textSettingDescription.visibility = View.VISIBLE
} else {
binding.textSettingDescription.visibility = View.GONE
}
binding.textSettingValue.visibility = View.GONE
binding.buttonClear.visibility = View.GONE
binding.textSettingDescription.setVisible(setting.description.isNotEmpty())
binding.textSettingDescription.text = item.description
binding.textSettingValue.setVisible(false)
binding.buttonClear.setVisible(false)
setStyle(setting.isEditable, binding)
}

View File

@ -10,7 +10,7 @@ import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
import org.yuzu.yuzu_emu.features.settings.model.view.SingleChoiceSetting
import org.yuzu.yuzu_emu.features.settings.model.view.StringSingleChoiceSetting
import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter
import org.yuzu.yuzu_emu.utils.NativeConfig
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) :
SettingViewHolder(binding.root, adapter) {
@ -19,14 +19,10 @@ class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: Setti
override fun bind(item: SettingsItem) {
setting = item
binding.textSettingName.text = setting.title
if (item.description.isNotEmpty()) {
binding.textSettingDescription.setVisible(item.description.isNotEmpty())
binding.textSettingDescription.text = item.description
binding.textSettingDescription.visibility = View.VISIBLE
} else {
binding.textSettingDescription.visibility = View.GONE
}
binding.textSettingValue.visibility = View.VISIBLE
binding.textSettingValue.setVisible(true)
when (item) {
is SingleChoiceSetting -> {
val resMgr = binding.textSettingValue.context.resources
@ -48,16 +44,10 @@ class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: Setti
}
}
if (binding.textSettingValue.text.isEmpty()) {
binding.textSettingValue.visibility = View.GONE
binding.textSettingValue.setVisible(false)
}
binding.buttonClear.visibility = if (setting.setting.global ||
!NativeConfig.isPerGameConfigLoaded()
) {
View.GONE
} else {
View.VISIBLE
}
binding.buttonClear.setVisible(setting.clearable)
binding.buttonClear.setOnClickListener {
adapter.onClearClick(setting, bindingAdapterPosition)
}

View File

@ -9,7 +9,7 @@ import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
import org.yuzu.yuzu_emu.features.settings.model.view.SliderSetting
import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter
import org.yuzu.yuzu_emu.utils.NativeConfig
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
class SliderViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) :
SettingViewHolder(binding.root, adapter) {
@ -18,26 +18,16 @@ class SliderViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAda
override fun bind(item: SettingsItem) {
setting = item as SliderSetting
binding.textSettingName.text = setting.title
if (item.description.isNotEmpty()) {
binding.textSettingDescription.setVisible(item.description.isNotEmpty())
binding.textSettingDescription.text = setting.description
binding.textSettingDescription.visibility = View.VISIBLE
} else {
binding.textSettingDescription.visibility = View.GONE
}
binding.textSettingValue.visibility = View.VISIBLE
binding.textSettingValue.setVisible(true)
binding.textSettingValue.text = String.format(
binding.textSettingValue.context.getString(R.string.value_with_units),
setting.getSelectedValue(),
setting.units
)
binding.buttonClear.visibility = if (setting.setting.global ||
!NativeConfig.isPerGameConfigLoaded()
) {
View.GONE
} else {
View.VISIBLE
}
binding.buttonClear.setVisible(setting.clearable)
binding.buttonClear.setOnClickListener {
adapter.onClearClick(setting, bindingAdapterPosition)
}

View File

@ -0,0 +1,45 @@
// SPDX-FileCopyrightText: 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.features.settings.ui.viewholder
import android.view.View
import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
import org.yuzu.yuzu_emu.features.settings.model.view.StringInputSetting
import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
class StringInputViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) :
SettingViewHolder(binding.root, adapter) {
private lateinit var setting: StringInputSetting
override fun bind(item: SettingsItem) {
setting = item as StringInputSetting
binding.textSettingName.text = setting.title
binding.textSettingDescription.setVisible(setting.description.isNotEmpty())
binding.textSettingDescription.text = setting.description
binding.textSettingValue.setVisible(true)
binding.textSettingValue.text = setting.getSelectedValue()
binding.buttonClear.setVisible(setting.clearable)
binding.buttonClear.setOnClickListener {
adapter.onClearClick(setting, bindingAdapterPosition)
}
setStyle(setting.isEditable, binding)
}
override fun onClick(clicked: View) {
if (setting.isEditable) {
adapter.onStringInputClick(setting, bindingAdapterPosition)
}
}
override fun onLongClick(clicked: View): Boolean {
if (setting.isEditable) {
return adapter.onLongClick(setting, bindingAdapterPosition)
}
return false
}
}

View File

@ -9,6 +9,7 @@ import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
import org.yuzu.yuzu_emu.features.settings.model.view.SubmenuSetting
import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
class SubmenuViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) :
SettingViewHolder(binding.root, adapter) {
@ -16,8 +17,8 @@ class SubmenuViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAd
override fun bind(item: SettingsItem) {
setting = item as SubmenuSetting
binding.icon.setVisible(setting.iconId != 0)
if (setting.iconId != 0) {
binding.icon.visibility = View.VISIBLE
binding.icon.setImageDrawable(
ResourcesCompat.getDrawable(
binding.icon.resources,
@ -25,19 +26,13 @@ class SubmenuViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAd
binding.icon.context.theme
)
)
} else {
binding.icon.visibility = View.GONE
}
binding.textSettingName.text = setting.title
if (setting.description.isNotEmpty()) {
binding.textSettingDescription.setVisible(setting.description.isNotEmpty())
binding.textSettingDescription.text = setting.description
binding.textSettingDescription.visibility = View.VISIBLE
} else {
binding.textSettingDescription.visibility = View.GONE
}
binding.textSettingValue.visibility = View.GONE
binding.buttonClear.visibility = View.GONE
binding.textSettingValue.setVisible(false)
binding.buttonClear.setVisible(false)
}
override fun onClick(clicked: View) {

View File

@ -9,7 +9,7 @@ import org.yuzu.yuzu_emu.databinding.ListItemSettingSwitchBinding
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
import org.yuzu.yuzu_emu.features.settings.model.view.SwitchSetting
import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter
import org.yuzu.yuzu_emu.utils.NativeConfig
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
class SwitchSettingViewHolder(val binding: ListItemSettingSwitchBinding, adapter: SettingsAdapter) :
SettingViewHolder(binding.root, adapter) {
@ -19,12 +19,8 @@ class SwitchSettingViewHolder(val binding: ListItemSettingSwitchBinding, adapter
override fun bind(item: SettingsItem) {
setting = item as SwitchSetting
binding.textSettingName.text = setting.title
if (setting.description.isNotEmpty()) {
binding.textSettingDescription.setVisible(setting.description.isNotEmpty())
binding.textSettingDescription.text = setting.description
binding.textSettingDescription.visibility = View.VISIBLE
} else {
binding.textSettingDescription.visibility = View.GONE
}
binding.switchWidget.setOnCheckedChangeListener(null)
binding.switchWidget.isChecked = setting.getIsChecked(setting.needsRuntimeGlobal)
@ -32,13 +28,7 @@ class SwitchSettingViewHolder(val binding: ListItemSettingSwitchBinding, adapter
adapter.onBooleanClick(setting, binding.switchWidget.isChecked, bindingAdapterPosition)
}
binding.buttonClear.visibility = if (setting.setting.global ||
!NativeConfig.isPerGameConfigLoaded()
) {
View.GONE
} else {
View.VISIBLE
}
binding.buttonClear.setVisible(setting.clearable)
binding.buttonClear.setOnClickListener {
adapter.onClearClick(setting, bindingAdapterPosition)
}

View File

@ -3,7 +3,6 @@
package org.yuzu.yuzu_emu.fragments
import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
@ -16,9 +15,6 @@ import androidx.core.view.updatePadding
import androidx.documentfile.provider.DocumentFile
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.findNavController
import androidx.navigation.fragment.navArgs
import androidx.recyclerview.widget.LinearLayoutManager
@ -32,6 +28,7 @@ import org.yuzu.yuzu_emu.model.HomeViewModel
import org.yuzu.yuzu_emu.utils.AddonUtil
import org.yuzu.yuzu_emu.utils.FileUtil.copyFilesTo
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
import org.yuzu.yuzu_emu.utils.collect
import java.io.File
class AddonsFragment : Fragment() {
@ -60,8 +57,6 @@ class AddonsFragment : Fragment() {
return binding.root
}
// This is using the correct scope, lint is just acting up
@SuppressLint("UnsafeRepeatOnLifecycleDetector")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
homeViewModel.setNavigationVisibility(visible = false, animated = false)
@ -78,27 +73,17 @@ class AddonsFragment : Fragment() {
adapter = AddonAdapter(addonViewModel)
}
viewLifecycleOwner.lifecycleScope.apply {
launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
addonViewModel.addonList.collect {
addonViewModel.addonList.collect(viewLifecycleOwner) {
(binding.listAddons.adapter as AddonAdapter).submitList(it)
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
addonViewModel.showModInstallPicker.collect {
if (it) {
installAddon.launch(Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).data)
addonViewModel.showModInstallPicker(false)
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
addonViewModel.showModNoticeDialog.collect {
addonViewModel.showModInstallPicker.collect(
viewLifecycleOwner,
resetState = { addonViewModel.showModInstallPicker(false) }
) { if (it) installAddon.launch(Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).data) }
addonViewModel.showModNoticeDialog.collect(
viewLifecycleOwner,
resetState = { addonViewModel.showModNoticeDialog(false) }
) {
if (it) {
MessageDialogFragment.newInstance(
requireActivity(),
@ -109,14 +94,12 @@ class AddonsFragment : Fragment() {
negativeAction = {},
negativeButtonTitleId = R.string.close
).show(parentFragmentManager, MessageDialogFragment.TAG)
addonViewModel.showModNoticeDialog(false)
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
addonViewModel.addonToDelete.collect {
addonViewModel.addonToDelete.collect(
viewLifecycleOwner,
resetState = { addonViewModel.setAddonToDelete(null) }
) {
if (it != null) {
MessageDialogFragment.newInstance(
requireActivity(),
@ -125,10 +108,6 @@ class AddonsFragment : Fragment() {
positiveAction = { addonViewModel.onDeleteAddon(it) },
negativeAction = {}
).show(parentFragmentManager, MessageDialogFragment.TAG)
addonViewModel.setAddonToDelete(null)
}
}
}
}
}

View File

@ -0,0 +1,47 @@
// SPDX-FileCopyrightText: 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.fragments
import android.app.Dialog
import android.content.DialogInterface
import android.os.Bundle
import androidx.fragment.app.DialogFragment
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.yuzu.yuzu_emu.NativeLibrary
import org.yuzu.yuzu_emu.R
class CoreErrorDialogFragment : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog =
MaterialAlertDialogBuilder(requireActivity())
.setTitle(requireArguments().getString(TITLE))
.setMessage(requireArguments().getString(MESSAGE))
.setPositiveButton(R.string.continue_button, null)
.setNegativeButton(R.string.abort_button) { _: DialogInterface?, _: Int ->
NativeLibrary.coreErrorAlertResult = false
synchronized(NativeLibrary.coreErrorAlertLock) {
NativeLibrary.coreErrorAlertLock.notify()
}
}
.create()
override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
NativeLibrary.coreErrorAlertResult = true
synchronized(NativeLibrary.coreErrorAlertLock) { NativeLibrary.coreErrorAlertLock.notify() }
}
companion object {
const val TITLE = "Title"
const val MESSAGE = "Message"
fun newInstance(title: String, message: String): CoreErrorDialogFragment {
val frag = CoreErrorDialogFragment()
val args = Bundle()
args.putString(TITLE, title)
args.putString(MESSAGE, message)
frag.arguments = args
return frag
}
}
}

View File

@ -3,7 +3,6 @@
package org.yuzu.yuzu_emu.fragments
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
@ -14,9 +13,6 @@ import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.findNavController
import androidx.navigation.fragment.navArgs
import androidx.recyclerview.widget.GridLayoutManager
@ -35,6 +31,7 @@ import org.yuzu.yuzu_emu.utils.FileUtil
import org.yuzu.yuzu_emu.utils.GpuDriverHelper
import org.yuzu.yuzu_emu.utils.NativeConfig
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
import org.yuzu.yuzu_emu.utils.collect
import java.io.File
import java.io.IOException
@ -63,8 +60,6 @@ class DriverManagerFragment : Fragment() {
return binding.root
}
// This is using the correct scope, lint is just acting up
@SuppressLint("UnsafeRepeatOnLifecycleDetector")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
homeViewModel.setNavigationVisibility(visible = false, animated = true)
@ -89,15 +84,8 @@ class DriverManagerFragment : Fragment() {
}
}
viewLifecycleOwner.lifecycleScope.apply {
launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
driverViewModel.showClearButton.collect {
binding.toolbarDrivers.menu
.findItem(R.id.menu_driver_use_global).isVisible = it
}
}
}
driverViewModel.showClearButton.collect(viewLifecycleOwner) {
binding.toolbarDrivers.menu.findItem(R.id.menu_driver_use_global).isVisible = it
}
}

View File

@ -10,14 +10,11 @@ import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import kotlinx.coroutines.launch
import org.yuzu.yuzu_emu.R
import org.yuzu.yuzu_emu.databinding.DialogProgressBarBinding
import org.yuzu.yuzu_emu.model.DriverViewModel
import org.yuzu.yuzu_emu.utils.collect
class DriversLoadingDialogFragment : DialogFragment() {
private val driverViewModel: DriverViewModel by activityViewModels()
@ -44,13 +41,7 @@ class DriversLoadingDialogFragment : DialogFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewLifecycleOwner.lifecycleScope.apply {
launch {
repeatOnLifecycle(Lifecycle.State.RESUMED) {
driverViewModel.isInteractionAllowed.collect { if (it) dismiss() }
}
}
}
driverViewModel.isInteractionAllowed.collect(viewLifecycleOwner) { if (it) dismiss() }
}
companion object {

View File

@ -32,9 +32,6 @@ import androidx.drawerlayout.widget.DrawerLayout
import androidx.drawerlayout.widget.DrawerLayout.DrawerListener
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.findNavController
import androidx.navigation.fragment.navArgs
import androidx.window.layout.FoldingFeature
@ -42,9 +39,6 @@ import androidx.window.layout.WindowInfoTracker
import androidx.window.layout.WindowLayoutInfo
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.slider.Slider
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import org.yuzu.yuzu_emu.HomeNavigationDirections
import org.yuzu.yuzu_emu.NativeLibrary
import org.yuzu.yuzu_emu.R
@ -63,6 +57,7 @@ import org.yuzu.yuzu_emu.model.EmulationViewModel
import org.yuzu.yuzu_emu.overlay.model.OverlayControl
import org.yuzu.yuzu_emu.overlay.model.OverlayLayout
import org.yuzu.yuzu_emu.utils.*
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
import java.lang.NullPointerException
class EmulationFragment : Fragment(), SurfaceHolder.Callback {
@ -90,14 +85,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
if (context is EmulationActivity) {
emulationActivity = context
NativeLibrary.setEmulationActivity(context)
lifecycleScope.launch(Dispatchers.Main) {
lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) {
WindowInfoTracker.getOrCreate(context)
.windowLayoutInfo(context)
.collect { updateFoldableLayout(context, it) }
}
}
} else {
throw IllegalStateException("EmulationFragment must have EmulationActivity parent")
}
@ -168,8 +155,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
return binding.root
}
// This is using the correct scope, lint is just acting up
@SuppressLint("UnsafeRepeatOnLifecycleDetector")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
if (requireActivity().isFinishing) {
@ -350,19 +335,11 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
binding.loadingTitle.isSelected = true
binding.loadingText.isSelected = true
viewLifecycleOwner.lifecycleScope.apply {
launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
WindowInfoTracker.getOrCreate(requireContext())
.windowLayoutInfo(requireActivity())
.collect {
.windowLayoutInfo(requireActivity()).collect(viewLifecycleOwner) {
updateFoldableLayout(requireActivity() as EmulationActivity, it)
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
emulationViewModel.shaderProgress.collectLatest {
emulationViewModel.shaderProgress.collect(viewLifecycleOwner) {
if (it > 0 && it != emulationViewModel.totalShaders.value) {
binding.loadingProgressIndicator.isIndeterminate = false
@ -376,36 +353,16 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
binding.loadingProgressIndicator.isIndeterminate = true
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
emulationViewModel.totalShaders.collectLatest {
emulationViewModel.totalShaders.collect(viewLifecycleOwner) {
binding.loadingProgressIndicator.max = it
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
emulationViewModel.shaderMessage.collectLatest {
emulationViewModel.shaderMessage.collect(viewLifecycleOwner) {
if (it.isNotEmpty()) {
binding.loadingText.text = it
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.RESUMED) {
driverViewModel.isInteractionAllowed.collect {
if (it) {
startEmulation()
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
emulationViewModel.emulationStarted.collectLatest {
emulationViewModel.emulationStarted.collect(viewLifecycleOwner) {
if (it) {
binding.drawerLayout.setDrawerLockMode(IntSetting.LOCK_DRAWER.getInt())
ViewUtils.showView(binding.surfaceInputOverlay)
@ -418,11 +375,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
updateThermalOverlay()
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
emulationViewModel.isEmulationStopping.collectLatest {
emulationViewModel.isEmulationStopping.collect(viewLifecycleOwner) {
if (it) {
binding.loadingText.setText(R.string.shutting_down)
ViewUtils.showView(binding.loadingIndicator)
@ -430,11 +383,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
ViewUtils.hideView(binding.showFpsText)
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
emulationViewModel.drawerOpen.collect {
emulationViewModel.drawerOpen.collect(viewLifecycleOwner) {
if (it) {
binding.drawerLayout.open()
binding.inGameMenu.requestFocus()
@ -442,11 +391,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
binding.drawerLayout.close()
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
emulationViewModel.programChanged.collect {
emulationViewModel.programChanged.collect(viewLifecycleOwner) {
if (it != 0) {
emulationViewModel.setEmulationStarted(false)
binding.drawerLayout.close()
@ -456,11 +401,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
ViewUtils.showView(binding.loadingIndicator)
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
emulationViewModel.emulationStopped.collect {
emulationViewModel.emulationStopped.collect(viewLifecycleOwner) {
if (it && emulationViewModel.programChanged.value != -1) {
if (perfStatsUpdater != null) {
perfStatsUpdateHandler.removeCallbacks(perfStatsUpdater!!)
@ -470,8 +411,9 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
emulationViewModel.setEmulationStopped(false)
}
}
}
}
driverViewModel.isInteractionAllowed.collect(viewLifecycleOwner) {
if (it) startEmulation()
}
}
@ -500,14 +442,12 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
binding.drawerLayout.close()
}
if (showInputOverlay) {
binding.surfaceInputOverlay.visibility = View.INVISIBLE
binding.surfaceInputOverlay.setVisible(visible = false, gone = false)
}
} else {
if (showInputOverlay && emulationViewModel.emulationStarted.value) {
binding.surfaceInputOverlay.visibility = View.VISIBLE
} else {
binding.surfaceInputOverlay.visibility = View.INVISIBLE
}
binding.surfaceInputOverlay.setVisible(
showInputOverlay && emulationViewModel.emulationStarted.value
)
if (!isInFoldableLayout) {
if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
binding.surfaceInputOverlay.layout = OverlayLayout.Portrait
@ -544,7 +484,9 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
}
private fun updateShowFpsOverlay() {
if (BooleanSetting.SHOW_PERFORMANCE_OVERLAY.getBoolean()) {
val showOverlay = BooleanSetting.SHOW_PERFORMANCE_OVERLAY.getBoolean()
binding.showFpsText.setVisible(showOverlay)
if (showOverlay) {
val SYSTEM_FPS = 0
val FPS = 1
val FRAMETIME = 2
@ -564,17 +506,17 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
}
}
perfStatsUpdateHandler.post(perfStatsUpdater!!)
binding.showFpsText.visibility = View.VISIBLE
} else {
if (perfStatsUpdater != null) {
perfStatsUpdateHandler.removeCallbacks(perfStatsUpdater!!)
}
binding.showFpsText.visibility = View.GONE
}
}
private fun updateThermalOverlay() {
if (BooleanSetting.SHOW_THERMAL_OVERLAY.getBoolean()) {
val showOverlay = BooleanSetting.SHOW_THERMAL_OVERLAY.getBoolean()
binding.showThermalsText.setVisible(showOverlay)
if (showOverlay) {
thermalStatsUpdater = {
if (emulationViewModel.emulationStarted.value &&
!emulationViewModel.isEmulationStopping.value
@ -596,12 +538,10 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
}
}
thermalStatsUpdateHandler.post(thermalStatsUpdater!!)
binding.showThermalsText.visibility = View.VISIBLE
} else {
if (thermalStatsUpdater != null) {
thermalStatsUpdateHandler.removeCallbacks(thermalStatsUpdater!!)
}
binding.showThermalsText.visibility = View.GONE
}
}
@ -870,12 +810,12 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
}
}
}
binding.doneControlConfig.visibility = View.VISIBLE
binding.doneControlConfig.setVisible(true)
binding.surfaceInputOverlay.setIsInEditMode(true)
}
private fun stopConfiguringControls() {
binding.doneControlConfig.visibility = View.GONE
binding.doneControlConfig.setVisible(false)
binding.surfaceInputOverlay.setIsInEditMode(false)
// Unlock the orientation if it was locked for editing
if (IntSetting.RENDERER_SCREEN_LAYOUT.getInt() == EmulationOrientation.Unspecified.int) {

View File

@ -13,9 +13,6 @@ import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.findNavController
import androidx.recyclerview.widget.GridLayoutManager
import com.google.android.material.transition.MaterialSharedAxis
@ -27,6 +24,7 @@ import org.yuzu.yuzu_emu.model.GamesViewModel
import org.yuzu.yuzu_emu.model.HomeViewModel
import org.yuzu.yuzu_emu.ui.main.MainActivity
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
import org.yuzu.yuzu_emu.utils.collect
class GameFoldersFragment : Fragment() {
private var _binding: FragmentFoldersBinding? = null
@ -70,13 +68,9 @@ class GameFoldersFragment : Fragment() {
adapter = FolderAdapter(requireActivity(), gamesViewModel)
}
viewLifecycleOwner.lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
gamesViewModel.folders.collect {
gamesViewModel.folders.collect(viewLifecycleOwner) {
(binding.listFolders.adapter as FolderAdapter).submitList(it)
}
}
}
val mainActivity = requireActivity() as MainActivity
binding.buttonAdd.setOnClickListener {

View File

@ -27,6 +27,7 @@ import org.yuzu.yuzu_emu.databinding.FragmentGameInfoBinding
import org.yuzu.yuzu_emu.model.GameVerificationResult
import org.yuzu.yuzu_emu.model.HomeViewModel
import org.yuzu.yuzu_emu.utils.GameMetadata
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
class GameInfoFragment : Fragment() {
@ -85,7 +86,7 @@ class GameInfoFragment : Fragment() {
copyToClipboard(getString(R.string.developer), args.game.developer)
}
} else {
developer.visibility = View.GONE
developer.setVisible(false)
}
version.setHint(R.string.version)

View File

@ -3,11 +3,9 @@
package org.yuzu.yuzu_emu.fragments
import android.annotation.SuppressLint
import android.content.pm.ShortcutInfo
import android.content.pm.ShortcutManager
import android.os.Bundle
import android.text.TextUtils
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@ -18,9 +16,7 @@ import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.findNavController
import androidx.navigation.fragment.navArgs
import androidx.recyclerview.widget.GridLayoutManager
@ -46,7 +42,9 @@ import org.yuzu.yuzu_emu.utils.FileUtil
import org.yuzu.yuzu_emu.utils.GameIconUtils
import org.yuzu.yuzu_emu.utils.GpuDriverHelper
import org.yuzu.yuzu_emu.utils.MemoryUtil
import org.yuzu.yuzu_emu.utils.ViewUtils.marquee
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
import org.yuzu.yuzu_emu.utils.collect
import java.io.BufferedOutputStream
import java.io.File
@ -76,8 +74,6 @@ class GamePropertiesFragment : Fragment() {
return binding.root
}
// This is using the correct scope, lint is just acting up
@SuppressLint("UnsafeRepeatOnLifecycleDetector")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
homeViewModel.setNavigationVisibility(visible = false, animated = true)
@ -107,13 +103,7 @@ class GamePropertiesFragment : Fragment() {
GameIconUtils.loadGameIcon(args.game, binding.imageGameScreen)
binding.title.text = args.game.title
binding.title.postDelayed(
{
binding.title.ellipsize = TextUtils.TruncateAt.MARQUEE
binding.title.isSelected = true
},
3000
)
binding.title.marquee()
binding.buttonStart.setOnClickListener {
LaunchGameDialogFragment.newInstance(args.game)
@ -122,28 +112,14 @@ class GamePropertiesFragment : Fragment() {
reloadList()
viewLifecycleOwner.lifecycleScope.apply {
launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
homeViewModel.openImportSaves.collect {
if (it) {
importSaves.launch(arrayOf("application/zip"))
homeViewModel.setOpenImportSaves(false)
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
homeViewModel.reloadPropertiesList.collect {
if (it) {
reloadList()
homeViewModel.reloadPropertiesList(false)
}
}
}
}
}
homeViewModel.openImportSaves.collect(
viewLifecycleOwner,
resetState = { homeViewModel.setOpenImportSaves(false) }
) { if (it) importSaves.launch(arrayOf("application/zip")) }
homeViewModel.reloadPropertiesList.collect(
viewLifecycleOwner,
resetState = { homeViewModel.reloadPropertiesList(false) }
) { if (it) reloadList() }
setInsets()
}

View File

@ -14,9 +14,6 @@ import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.findNavController
import androidx.recyclerview.widget.GridLayoutManager
import com.google.android.material.transition.MaterialSharedAxis
@ -35,6 +32,7 @@ import org.yuzu.yuzu_emu.ui.main.MainActivity
import org.yuzu.yuzu_emu.utils.DirectoryInitialization
import org.yuzu.yuzu_emu.utils.FileUtil
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
import org.yuzu.yuzu_emu.utils.collect
import java.io.BufferedOutputStream
import java.io.File
import java.math.BigInteger
@ -75,16 +73,12 @@ class InstallableFragment : Fragment() {
binding.root.findNavController().popBackStack()
}
viewLifecycleOwner.lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
homeViewModel.openImportSaves.collect {
homeViewModel.openImportSaves.collect(viewLifecycleOwner) {
if (it) {
importSaves.launch(arrayOf("application/zip"))
homeViewModel.setOpenImportSaves(false)
}
}
}
}
val installables = listOf(
Installable(

View File

@ -13,15 +13,13 @@ import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.FragmentActivity
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import kotlinx.coroutines.launch
import org.yuzu.yuzu_emu.R
import org.yuzu.yuzu_emu.databinding.DialogProgressBarBinding
import org.yuzu.yuzu_emu.model.TaskViewModel
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
import org.yuzu.yuzu_emu.utils.collect
class ProgressDialogFragment : DialogFragment() {
private val taskViewModel: TaskViewModel by activityViewModels()
@ -64,10 +62,7 @@ class ProgressDialogFragment : DialogFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.message.isSelected = true
viewLifecycleOwner.lifecycleScope.apply {
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
taskViewModel.isComplete.collect {
taskViewModel.isComplete.collect(viewLifecycleOwner) {
if (it) {
dismiss()
when (val result = taskViewModel.result.value) {
@ -89,20 +84,12 @@ class ProgressDialogFragment : DialogFragment() {
taskViewModel.clear()
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
taskViewModel.cancelled.collect {
taskViewModel.cancelled.collect(viewLifecycleOwner) {
if (it) {
dialog?.setTitle(R.string.cancelling)
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
taskViewModel.progress.collect {
taskViewModel.progress.collect(viewLifecycleOwner) {
if (it != 0.0) {
binding.progressBar.apply {
isIndeterminate = false
@ -115,22 +102,11 @@ class ProgressDialogFragment : DialogFragment() {
}
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
taskViewModel.message.collect {
if (it.isEmpty()) {
binding.message.visibility = View.GONE
} else {
binding.message.visibility = View.VISIBLE
taskViewModel.message.collect(viewLifecycleOwner) {
binding.message.setVisible(it.isNotEmpty())
binding.message.text = it
}
}
}
}
}
}
// By default, the ProgressDialog will immediately dismiss itself upon a button being pressed.
// Setting the OnClickListener again after the dialog is shown overrides this behavior.

View File

@ -3,7 +3,6 @@
package org.yuzu.yuzu_emu.fragments
import android.annotation.SuppressLint
import android.content.Context
import android.content.SharedPreferences
import android.os.Bundle
@ -18,14 +17,9 @@ import androidx.core.view.updatePadding
import androidx.core.widget.doOnTextChanged
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.preference.PreferenceManager
import info.debatty.java.stringsimilarity.Jaccard
import info.debatty.java.stringsimilarity.JaroWinkler
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import java.util.Locale
import org.yuzu.yuzu_emu.R
import org.yuzu.yuzu_emu.YuzuApplication
@ -35,6 +29,8 @@ import org.yuzu.yuzu_emu.layout.AutofitGridLayoutManager
import org.yuzu.yuzu_emu.model.Game
import org.yuzu.yuzu_emu.model.GamesViewModel
import org.yuzu.yuzu_emu.model.HomeViewModel
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
import org.yuzu.yuzu_emu.utils.collect
class SearchFragment : Fragment() {
private var _binding: FragmentSearchBinding? = null
@ -58,8 +54,6 @@ class SearchFragment : Fragment() {
return binding.root
}
// This is using the correct scope, lint is just acting up
@SuppressLint("UnsafeRepeatOnLifecycleDetector")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
homeViewModel.setNavigationVisibility(visible = true, animated = true)
@ -81,42 +75,18 @@ class SearchFragment : Fragment() {
binding.chipGroup.setOnCheckedStateChangeListener { _, _ -> filterAndSearch() }
binding.searchText.doOnTextChanged { text: CharSequence?, _: Int, _: Int, _: Int ->
if (text.toString().isNotEmpty()) {
binding.clearButton.visibility = View.VISIBLE
} else {
binding.clearButton.visibility = View.INVISIBLE
}
binding.clearButton.setVisible(text.toString().isNotEmpty())
filterAndSearch()
}
viewLifecycleOwner.lifecycleScope.apply {
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
gamesViewModel.searchFocused.collect {
if (it) {
focusSearch()
gamesViewModel.setSearchFocused(false)
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
gamesViewModel.games.collectLatest { filterAndSearch() }
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
gamesViewModel.searchedGames.collect {
gamesViewModel.searchFocused.collect(
viewLifecycleOwner,
resetState = { gamesViewModel.setSearchFocused(false) }
) { if (it) focusSearch() }
gamesViewModel.games.collect(viewLifecycleOwner) { filterAndSearch() }
gamesViewModel.searchedGames.collect(viewLifecycleOwner) {
(binding.gridGamesSearch.adapter as GameAdapter).submitList(it)
if (it.isEmpty()) {
binding.noResultsView.visibility = View.VISIBLE
} else {
binding.noResultsView.visibility = View.GONE
}
}
}
}
binding.noResultsView.setVisible(it.isNotEmpty())
}
binding.clearButton.setOnClickListener { binding.searchText.setText("") }

View File

@ -4,7 +4,6 @@
package org.yuzu.yuzu_emu.fragments
import android.Manifest
import android.annotation.SuppressLint
import android.content.Intent
import android.os.Build
import android.os.Bundle
@ -23,9 +22,6 @@ import androidx.core.view.isVisible
import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.findNavController
import androidx.preference.PreferenceManager
import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
@ -46,6 +42,8 @@ import org.yuzu.yuzu_emu.ui.main.MainActivity
import org.yuzu.yuzu_emu.utils.DirectoryInitialization
import org.yuzu.yuzu_emu.utils.NativeConfig
import org.yuzu.yuzu_emu.utils.ViewUtils
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
import org.yuzu.yuzu_emu.utils.collect
class SetupFragment : Fragment() {
private var _binding: FragmentSetupBinding? = null
@ -77,8 +75,6 @@ class SetupFragment : Fragment() {
return binding.root
}
// This is using the correct scope, lint is just acting up
@SuppressLint("UnsafeRepeatOnLifecycleDetector")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
mainActivity = requireActivity() as MainActivity
@ -210,28 +206,14 @@ class SetupFragment : Fragment() {
)
}
viewLifecycleOwner.lifecycleScope.apply {
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
homeViewModel.shouldPageForward.collect {
if (it) {
pageForward()
homeViewModel.setShouldPageForward(false)
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
homeViewModel.gamesDirSelected.collect {
if (it) {
gamesDirCallback.onStepCompleted()
homeViewModel.setGamesDirSelected(false)
}
}
}
}
}
homeViewModel.shouldPageForward.collect(
viewLifecycleOwner,
resetState = { homeViewModel.setShouldPageForward(false) }
) { if (it) pageForward() }
homeViewModel.gamesDirSelected.collect(
viewLifecycleOwner,
resetState = { homeViewModel.setGamesDirSelected(false) }
) { if (it) gamesDirCallback.onStepCompleted() }
binding.viewPager2.apply {
adapter = SetupAdapter(requireActivity() as AppCompatActivity, pages)
@ -292,12 +274,8 @@ class SetupFragment : Fragment() {
val backIsVisible = savedInstanceState.getBoolean(KEY_BACK_VISIBILITY)
hasBeenWarned = savedInstanceState.getBooleanArray(KEY_HAS_BEEN_WARNED)!!
if (nextIsVisible) {
binding.buttonNext.visibility = View.VISIBLE
}
if (backIsVisible) {
binding.buttonBack.visibility = View.VISIBLE
}
binding.buttonNext.setVisible(nextIsVisible)
binding.buttonBack.setVisible(backIsVisible)
} else {
hasBeenWarned = BooleanArray(pages.size)
}

View File

@ -28,6 +28,7 @@ import org.yuzu.yuzu_emu.features.input.NativeInput
import org.yuzu.yuzu_emu.R
import org.yuzu.yuzu_emu.features.input.model.NativeAnalog
import org.yuzu.yuzu_emu.features.input.model.NativeButton
import org.yuzu.yuzu_emu.features.input.model.NpadStyleIndex
import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting
import org.yuzu.yuzu_emu.features.settings.model.IntSetting
import org.yuzu.yuzu_emu.overlay.model.OverlayControl
@ -99,11 +100,9 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
}
var shouldUpdateView = false
val playerIndex =
if (NativeInput.isHandheldOnly()) {
NativeInput.ConsoleDevice
} else {
NativeInput.Player1Device
val playerIndex = when (NativeInput.getStyleIndex(0)) {
NpadStyleIndex.Handheld -> 8
else -> 0
}
for (button in overlayButtons) {
@ -664,7 +663,7 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
val overlayControlData = NativeConfig.getOverlayControlData()
overlayControlData.forEach {
it.enabled = OverlayControl.from(it.id)?.defaultVisibility == false
it.enabled = OverlayControl.from(it.id)?.defaultVisibility == true
}
NativeConfig.setOverlayControlData(overlayControlData)

View File

@ -3,7 +3,6 @@
package org.yuzu.yuzu_emu.ui
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
@ -14,19 +13,16 @@ import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.google.android.material.color.MaterialColors
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import org.yuzu.yuzu_emu.R
import org.yuzu.yuzu_emu.adapters.GameAdapter
import org.yuzu.yuzu_emu.databinding.FragmentGamesBinding
import org.yuzu.yuzu_emu.layout.AutofitGridLayoutManager
import org.yuzu.yuzu_emu.model.GamesViewModel
import org.yuzu.yuzu_emu.model.HomeViewModel
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
import org.yuzu.yuzu_emu.utils.collect
class GamesFragment : Fragment() {
private var _binding: FragmentGamesBinding? = null
@ -44,8 +40,6 @@ class GamesFragment : Fragment() {
return binding.root
}
// This is using the correct scope, lint is just acting up
@SuppressLint("UnsafeRepeatOnLifecycleDetector")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
homeViewModel.setNavigationVisibility(visible = true, animated = true)
@ -88,49 +82,28 @@ class GamesFragment : Fragment() {
}
}
viewLifecycleOwner.lifecycleScope.apply {
launch {
repeatOnLifecycle(Lifecycle.State.RESUMED) {
gamesViewModel.isReloading.collect {
gamesViewModel.isReloading.collect(viewLifecycleOwner) {
binding.swipeRefresh.isRefreshing = it
if (gamesViewModel.games.value.isEmpty() && !it) {
binding.noticeText.visibility = View.VISIBLE
} else {
binding.noticeText.visibility = View.INVISIBLE
binding.noticeText.setVisible(
visible = gamesViewModel.games.value.isEmpty() && !it,
gone = false
)
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.RESUMED) {
gamesViewModel.games.collectLatest {
gamesViewModel.games.collect(viewLifecycleOwner) {
(binding.gridGames.adapter as GameAdapter).submitList(it)
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.RESUMED) {
gamesViewModel.shouldSwapData.collect {
gamesViewModel.shouldSwapData.collect(
viewLifecycleOwner,
resetState = { gamesViewModel.setShouldSwapData(false) }
) {
if (it) {
(binding.gridGames.adapter as GameAdapter).submitList(
gamesViewModel.games.value
)
gamesViewModel.setShouldSwapData(false)
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.RESUMED) {
gamesViewModel.shouldScrollToTop.collect {
if (it) {
scrollToTop()
gamesViewModel.setShouldScrollToTop(false)
}
}
}
(binding.gridGames.adapter as GameAdapter).submitList(gamesViewModel.games.value)
}
}
gamesViewModel.shouldScrollToTop.collect(
viewLifecycleOwner,
resetState = { gamesViewModel.setShouldScrollToTop(false) }
) { if (it) scrollToTop() }
setInsets()
}

View File

@ -19,9 +19,6 @@ import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.core.view.ViewCompat
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.setupWithNavController
@ -30,7 +27,6 @@ import com.google.android.material.color.MaterialColors
import com.google.android.material.navigation.NavigationBarView
import java.io.File
import java.io.FilenameFilter
import kotlinx.coroutines.launch
import org.yuzu.yuzu_emu.HomeNavigationDirections
import org.yuzu.yuzu_emu.NativeLibrary
import org.yuzu.yuzu_emu.R
@ -47,6 +43,7 @@ import org.yuzu.yuzu_emu.model.InstallResult
import org.yuzu.yuzu_emu.model.TaskState
import org.yuzu.yuzu_emu.model.TaskViewModel
import org.yuzu.yuzu_emu.utils.*
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
import java.io.BufferedInputStream
import java.io.BufferedOutputStream
import java.util.zip.ZipEntry
@ -139,41 +136,22 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
// Prevents navigation from being drawn for a short time on recreation if set to hidden
if (!homeViewModel.navigationVisible.value.first) {
binding.navigationView.visibility = View.INVISIBLE
binding.statusBarShade.visibility = View.INVISIBLE
binding.navigationView.setVisible(visible = false, gone = false)
binding.statusBarShade.setVisible(visible = false, gone = false)
}
lifecycleScope.apply {
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
homeViewModel.navigationVisible.collect { showNavigation(it.first, it.second) }
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
homeViewModel.statusBarShadeVisible.collect { showStatusBarShade(it) }
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
homeViewModel.contentToInstall.collect {
homeViewModel.navigationVisible.collect(this) { showNavigation(it.first, it.second) }
homeViewModel.statusBarShadeVisible.collect(this) { showStatusBarShade(it) }
homeViewModel.contentToInstall.collect(
this,
resetState = { homeViewModel.setContentToInstall(null) }
) {
if (it != null) {
installContent(it)
homeViewModel.setContentToInstall(null)
}
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
homeViewModel.checkKeys.collect {
if (it) {
checkKeys()
homeViewModel.setCheckKeys(false)
}
}
}
}
homeViewModel.checkKeys.collect(this, resetState = { homeViewModel.setCheckKeys(false) }) {
if (it) checkKeys()
}
setInsets()
@ -214,18 +192,14 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
private fun showNavigation(visible: Boolean, animated: Boolean) {
if (!animated) {
if (visible) {
binding.navigationView.visibility = View.VISIBLE
} else {
binding.navigationView.visibility = View.INVISIBLE
}
binding.navigationView.setVisible(visible)
return
}
val smallLayout = resources.getBoolean(R.bool.small_layout)
binding.navigationView.animate().apply {
if (visible) {
binding.navigationView.visibility = View.VISIBLE
binding.navigationView.setVisible(true)
duration = 300
interpolator = PathInterpolator(0.05f, 0.7f, 0.1f, 1f)
@ -264,7 +238,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
}
}.withEndAction {
if (!visible) {
binding.navigationView.visibility = View.INVISIBLE
binding.navigationView.setVisible(visible = false, gone = false)
}
}.start()
}
@ -272,7 +246,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
private fun showStatusBarShade(visible: Boolean) {
binding.statusBarShade.animate().apply {
if (visible) {
binding.statusBarShade.visibility = View.VISIBLE
binding.statusBarShade.setVisible(true)
binding.statusBarShade.translationY = binding.statusBarShade.height.toFloat() * -2
duration = 300
translationY(0f)
@ -284,7 +258,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
}
}.withEndAction {
if (!visible) {
binding.statusBarShade.visibility = View.INVISIBLE
binding.statusBarShade.setVisible(visible = false, gone = false)
}
}.start()
}
@ -524,7 +498,8 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
this@MainActivity,
titleId = R.string.content_install_notice,
descriptionId = R.string.content_install_notice_description,
positiveAction = { homeViewModel.setContentToInstall(documents) }
positiveAction = { homeViewModel.setContentToInstall(documents) },
negativeAction = {}
)
}
}.show(supportFragmentManager, ProgressDialogFragment.TAG)

View File

@ -0,0 +1,38 @@
// SPDX-FileCopyrightText: 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.utils
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch
/**
* Collects this [Flow] with a given [LifecycleOwner].
* @param scope [LifecycleOwner] that this [Flow] will be collected with.
* @param repeatState When to repeat collection on this [Flow].
* @param resetState Optional lambda to reset state of an underlying [MutableStateFlow] after
* [stateCollector] has been run.
* @param stateCollector Lambda that receives new state.
*/
inline fun <reified T> Flow<T>.collect(
scope: LifecycleOwner,
repeatState: Lifecycle.State = Lifecycle.State.CREATED,
crossinline resetState: () -> Unit = {},
crossinline stateCollector: (state: T) -> Unit
) {
scope.apply {
lifecycleScope.launch {
repeatOnLifecycle(repeatState) {
this@collect.collect {
stateCollector(it)
resetState()
}
}
}
}
}

View File

@ -3,8 +3,10 @@
package org.yuzu.yuzu_emu.utils
import android.text.TextUtils
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
object ViewUtils {
fun showView(view: View, length: Long = 300) {
@ -57,4 +59,35 @@ object ViewUtils {
}
this.layoutParams = layoutParams
}
/**
* Shows or hides a view.
* @param visible Whether a view will be made View.VISIBLE or View.INVISIBLE/GONE.
* @param gone Optional parameter for hiding a view. Uses View.GONE if true and View.INVISIBLE otherwise.
*/
fun View.setVisible(visible: Boolean, gone: Boolean = true) {
visibility = if (visible) {
View.VISIBLE
} else {
if (gone) {
View.GONE
} else {
View.INVISIBLE
}
}
}
/**
* Starts a marquee on some text.
* @param delay Optional parameter for changing the start delay. 3 seconds of delay by default.
*/
fun TextView.marquee(delay: Long = 3000) {
ellipsize = null
marqueeRepeatLimit = -1
isSingleLine = true
postDelayed({
ellipsize = TextUtils.TruncateAt.MARQUEE
isSelected = true
}, delay)
}
}

View File

@ -23,6 +23,22 @@ void EmuWindow_Android::OnSurfaceChanged(ANativeWindow* surface) {
window_info.render_surface = reinterpret_cast<void*>(surface);
}
void EmuWindow_Android::OnTouchPressed(int id, float x, float y) {
const auto [touch_x, touch_y] = MapToTouchScreen(x, y);
EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchPressed(touch_x,
touch_y, id);
}
void EmuWindow_Android::OnTouchMoved(int id, float x, float y) {
const auto [touch_x, touch_y] = MapToTouchScreen(x, y);
EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchMoved(touch_x,
touch_y, id);
}
void EmuWindow_Android::OnTouchReleased(int id) {
EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchReleased(id);
}
void EmuWindow_Android::OnFrameDisplayed() {
if (!m_first_frame) {
Common::Android::RunJNIOnFiber<void>(

View File

@ -38,6 +38,10 @@ public:
void OnSurfaceChanged(ANativeWindow* surface);
void OnFrameDisplayed() override;
void OnTouchPressed(int id, float x, float y);
void OnTouchMoved(int id, float x, float y);
void OnTouchReleased(int id);
std::unique_ptr<Core::Frontend::GraphicsContext> CreateSharedContext() const override {
return {std::make_unique<GraphicsContext_Android>(m_driver_library)};
}

View File

@ -292,6 +292,9 @@ void EmulationSession::ShutdownEmulation() {
// Unload user input.
m_system.HIDCore().UnloadInputDevices();
// Enable all controllers
m_system.HIDCore().SetSupportedStyleTag({Core::HID::NpadStyleSet::All});
// Shutdown the main emulated process
if (m_load_result == Core::SystemResultStatus::Success) {
m_system.DetachDebugger();
@ -404,7 +407,9 @@ static Core::SystemResultStatus RunEmulation(const std::string& filepath,
const size_t program_index,
const bool frontend_initiated) {
MicroProfileOnThreadCreate("EmuThread");
SCOPE_EXIT({ MicroProfileShutdown(); });
SCOPE_EXIT {
MicroProfileShutdown();
};
LOG_INFO(Frontend, "starting");
@ -413,7 +418,9 @@ static Core::SystemResultStatus RunEmulation(const std::string& filepath,
return Core::SystemResultStatus::ErrorLoader;
}
SCOPE_EXIT({ EmulationSession::GetInstance().ShutdownEmulation(); });
SCOPE_EXIT {
EmulationSession::GetInstance().ShutdownEmulation();
};
jconst result = EmulationSession::GetInstance().InitializeEmulation(filepath, program_index,
frontend_initiated);
@ -661,7 +668,7 @@ void Java_org_yuzu_yuzu_1emu_NativeLibrary_initializeEmptyUserDirectory(JNIEnv*
ASSERT(user_id);
const auto user_save_data_path = FileSys::SaveDataFactory::GetFullPath(
{}, vfs_nand_dir, FileSys::SaveDataSpaceId::NandUser, FileSys::SaveDataType::SaveData, 1,
{}, vfs_nand_dir, FileSys::SaveDataSpaceId::User, FileSys::SaveDataType::Account, 1,
user_id->AsU128(), 0);
const auto full_path = Common::FS::ConcatPathSafe(nand_dir, user_save_data_path);
@ -829,8 +836,8 @@ jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getSavePath(JNIEnv* env, jobject j
FileSys::OpenMode::Read);
const auto user_save_data_path = FileSys::SaveDataFactory::GetFullPath(
{}, vfsNandDir, FileSys::SaveDataSpaceId::NandUser, FileSys::SaveDataType::SaveData,
program_id, user_id->AsU128(), 0);
{}, vfsNandDir, FileSys::SaveDataSpaceId::User, FileSys::SaveDataType::Account, program_id,
user_id->AsU128(), 0);
return Common::Android::ToJString(env, user_save_data_path);
}

View File

@ -102,8 +102,50 @@ void ApplyControllerConfig(size_t player_index,
}
}
std::vector<s32> GetSupportedStyles(int player_index) {
auto& hid_core = EmulationSession::GetInstance().System().HIDCore();
const auto npad_style_set = hid_core.GetSupportedStyleTag();
std::vector<s32> supported_indexes;
if (npad_style_set.fullkey == 1) {
supported_indexes.push_back(static_cast<s32>(Core::HID::NpadStyleIndex::Fullkey));
}
if (npad_style_set.joycon_dual == 1) {
supported_indexes.push_back(static_cast<s32>(Core::HID::NpadStyleIndex::JoyconDual));
}
if (npad_style_set.joycon_left == 1) {
supported_indexes.push_back(static_cast<s32>(Core::HID::NpadStyleIndex::JoyconLeft));
}
if (npad_style_set.joycon_right == 1) {
supported_indexes.push_back(static_cast<s32>(Core::HID::NpadStyleIndex::JoyconRight));
}
if (player_index == 0 && npad_style_set.handheld == 1) {
supported_indexes.push_back(static_cast<s32>(Core::HID::NpadStyleIndex::Handheld));
}
if (npad_style_set.gamecube == 1) {
supported_indexes.push_back(static_cast<s32>(Core::HID::NpadStyleIndex::GameCube));
}
return supported_indexes;
}
void ConnectController(size_t player_index, bool connected) {
auto& hid_core = EmulationSession::GetInstance().System().HIDCore();
ApplyControllerConfig(player_index, [&](Core::HID::EmulatedController* controller) {
auto supported_styles = GetSupportedStyles(player_index);
auto controller_style = controller->GetNpadStyleIndex(true);
auto style = std::find(supported_styles.begin(), supported_styles.end(),
static_cast<int>(controller_style));
if (style == supported_styles.end() && !supported_styles.empty()) {
controller->SetNpadStyleIndex(
static_cast<Core::HID::NpadStyleIndex>(supported_styles[0]));
}
});
if (player_index == 0) {
auto* handheld = hid_core.GetEmulatedController(Core::HID::NpadIdType::Handheld);
auto* player_one = hid_core.GetEmulatedController(Core::HID::NpadIdType::Player1);
@ -190,8 +232,7 @@ void Java_org_yuzu_yuzu_1emu_features_input_NativeInput_onTouchPressed(JNIEnv* e
jint j_id, jfloat j_x_axis,
jfloat j_y_axis) {
if (EmulationSession::GetInstance().IsRunning()) {
EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchPressed(
j_id, j_x_axis, j_y_axis);
EmulationSession::GetInstance().Window().OnTouchPressed(j_id, j_x_axis, j_y_axis);
}
}
@ -199,15 +240,14 @@ void Java_org_yuzu_yuzu_1emu_features_input_NativeInput_onTouchMoved(JNIEnv* env
jint j_id, jfloat j_x_axis,
jfloat j_y_axis) {
if (EmulationSession::GetInstance().IsRunning()) {
EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchMoved(
j_id, j_x_axis, j_y_axis);
EmulationSession::GetInstance().Window().OnTouchMoved(j_id, j_x_axis, j_y_axis);
}
}
void Java_org_yuzu_yuzu_1emu_features_input_NativeInput_onTouchReleased(JNIEnv* env, jobject j_obj,
jint j_id) {
if (EmulationSession::GetInstance().IsRunning()) {
EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchReleased(j_id);
EmulationSession::GetInstance().Window().OnTouchReleased(j_id);
}
}
@ -524,36 +564,10 @@ jint Java_org_yuzu_yuzu_1emu_features_input_NativeInput_getButtonNameImpl(JNIEnv
jintArray Java_org_yuzu_yuzu_1emu_features_input_NativeInput_getSupportedStyleTagsImpl(
JNIEnv* env, jobject j_obj, jint j_player_index) {
auto& hid_core = EmulationSession::GetInstance().System().HIDCore();
const auto npad_style_set = hid_core.GetSupportedStyleTag();
std::vector<s32> supported_indexes;
if (npad_style_set.fullkey == 1) {
supported_indexes.push_back(static_cast<u32>(Core::HID::NpadStyleIndex::Fullkey));
}
if (npad_style_set.joycon_dual == 1) {
supported_indexes.push_back(static_cast<u32>(Core::HID::NpadStyleIndex::JoyconDual));
}
if (npad_style_set.joycon_left == 1) {
supported_indexes.push_back(static_cast<u32>(Core::HID::NpadStyleIndex::JoyconLeft));
}
if (npad_style_set.joycon_right == 1) {
supported_indexes.push_back(static_cast<u32>(Core::HID::NpadStyleIndex::JoyconRight));
}
if (j_player_index == 0 && npad_style_set.handheld == 1) {
supported_indexes.push_back(static_cast<u32>(Core::HID::NpadStyleIndex::Handheld));
}
if (npad_style_set.gamecube == 1) {
supported_indexes.push_back(static_cast<u32>(Core::HID::NpadStyleIndex::GameCube));
}
jintArray j_supported_indexes = env->NewIntArray(supported_indexes.size());
env->SetIntArrayRegion(j_supported_indexes, 0, supported_indexes.size(),
supported_indexes.data());
auto supported_styles = GetSupportedStyles(j_player_index);
jintArray j_supported_indexes = env->NewIntArray(supported_styles.size());
env->SetIntArrayRegion(j_supported_indexes, 0, supported_styles.size(),
supported_styles.data());
return j_supported_indexes;
}

View File

@ -39,10 +39,7 @@
style="@style/TextAppearance.Material3.TitleMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="none"
android:marqueeRepeatLimit="marquee_forever"
android:requiresFadingEdge="horizontal"
android:singleLine="true"
android:textAlignment="viewStart"
tools:text="@string/select_gpu_driver_default" />
@ -52,10 +49,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:ellipsize="none"
android:marqueeRepeatLimit="marquee_forever"
android:requiresFadingEdge="horizontal"
android:singleLine="true"
android:textAlignment="viewStart"
tools:text="@string/install_gpu_driver_description" />
@ -65,10 +59,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:ellipsize="none"
android:marqueeRepeatLimit="marquee_forever"
android:requiresFadingEdge="horizontal"
android:singleLine="true"
android:textAlignment="viewStart"
tools:text="@string/install_gpu_driver_description" />

View File

@ -21,10 +21,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:ellipsize="none"
android:marqueeRepeatLimit="marquee_forever"
android:requiresFadingEdge="horizontal"
android:singleLine="true"
android:textAlignment="viewStart"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/button_layout"

View File

@ -40,10 +40,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:ellipsize="none"
android:marqueeRepeatLimit="marquee_forever"
android:requiresFadingEdge="horizontal"
android:singleLine="true"
android:textAlignment="center"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="@+id/image_game_screen"

View File

@ -59,9 +59,6 @@
android:textAlignment="viewStart"
android:textSize="14sp"
android:textStyle="bold"
android:singleLine="true"
android:marqueeRepeatLimit="marquee_forever"
android:ellipsize="none"
android:requiresFadingEdge="horizontal"
android:layout_marginTop="6dp"
android:visibility="gone"

View File

@ -76,10 +76,7 @@
android:layout_marginTop="12dp"
android:layout_marginBottom="12dp"
android:layout_marginHorizontal="16dp"
android:ellipsize="none"
android:marqueeRepeatLimit="marquee_forever"
android:requiresFadingEdge="horizontal"
android:singleLine="true"
android:textAlignment="center"
tools:text="deko_basic" />

View File

@ -95,6 +95,8 @@
<string name="install_game_content">دامەزراندنی ناوەڕۆکی یاری</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="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- About screen strings -->
<string name="gaia_is_not_real">گایا ڕاستەقینە نییە</string>
<string name="copied_to_clipboard">کۆپی کرا بۆ تەختەی نووسین</string>
@ -128,7 +130,6 @@
<string name="frame_limit_slider">سنووردارکردنی لەسەدای خێرایی</string>
<string name="frame_limit_slider_description">ڕێژەی سەدی دیاری دەکات بۆ سنووردارکردنی خێرایی ئیمولەیشن. 100% خێرایی ئاساییە. بەهایی بەرزتر یان نزمتر دەبێتە هۆی زیاد یان کەمکردنەوەی سنووری خێرایی.</string>
<string name="cpu_accuracy">وردی CPU</string>
<!-- System settings strings -->
<string name="use_docked_mode">دۆخی دۆککراو</string>
<string name="use_docked_mode_description">ڕوونی زیاد دەکات، کارایی کەم دەکاتەوە. دۆخی دەستی بەکاردێت کاتێک لەکاردەخرێت، ئەمەش ڕوونی دادەبەزێنێت و کارایی زیاد دەکات.</string>
<string name="emulated_region">ناوچەی ئیمولەیشن</string>
@ -162,6 +163,46 @@
<string name="audio_volume">قەبارەی دەنگی</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 -->
<string name="slider_default">بنەڕەت</string>
<string name="ini_saved">ڕێکخستنە پاشەکەوتکراوەکان</string>
@ -182,6 +223,8 @@
<string name="install">دامەزراندن</string>
<string name="delete">سڕینەوە</string>
<string name="clear">سڕینەوە</string>
<string name="save">هەڵگرتن</string>
<!-- GPU driver installation -->
<string name="select_gpu_driver">هەڵبژاردنی وەگەڕخەری GPU</string>
<string name="select_gpu_driver_title">حەز دەکەیت وەگەڕخەری GPU ی ئێستات بگۆڕیت؟</string>
@ -228,7 +271,6 @@
<string name="emulation_unpause">لادانی وەستاندنی ئیمولەیشن</string>
<string name="emulation_input_overlay">هەڵبژاردەکانی داپۆشەر</string>
<string name="touchscreen">رووکاری لەمسی</string>
<string name="load_settings">بارکردنی ڕێکخستنەکان...</string>
<!-- Software keyboard -->

View File

@ -84,7 +84,8 @@
<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="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. Wirklich fortfahren?</string>
<string name="import_save_warning_description">Das überschreibt alle existierenden Speicherdaten für dieses Spiel mit der ausgewählten Datei.
Wirklich fortfahren?</string>
<string name="import_export_saves_description">Speicherdaten importieren oder exportieren</string>
<string name="save_files_importing">Importiere Speicherdaten...</string>
<string name="save_files_exporting">Exportiere Speicherdaten...</string>
@ -112,6 +113,8 @@
<string name="share_save_file">Speicherdaten teilen</string>
<string name="game_folders">Spiele-Ordner</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>
<!-- About screen strings -->
<string name="gaia_is_not_real">Gaia ist nicht real</string>
@ -152,9 +155,9 @@
<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="cpu_accuracy">CPU-Genauigkeit</string>
<!-- System settings strings -->
<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. Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die Leistung.</string>
<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>
<string name="emulated_region">Emulierte Region</string>
<string name="emulated_language">Emulierte Sprache</string>
<string name="select_rtc_date">RTC-Datum auswählen</string>
@ -180,6 +183,49 @@
<string name="audio_volume">Lautstärke</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 -->
<string name="slider_default">Standard</string>
<string name="ini_saved">Einstellungen gespeichert</string>
@ -210,7 +256,11 @@
<string name="export_success">Erfolgreich exportiert</string>
<string name="start">Start</string>
<string name="clear">Löschen</string>
<string name="global">Global</string>
<string name="custom">Benutzerdefiniert</string>
<string name="use_global_setting">Globale Einstellung nutzen</string>
<string name="save">Speichern</string>
<!-- GPU driver installation -->
<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>
@ -230,6 +280,7 @@
<string name="preferences_graphics_description">Genauigkeitsstufe, Auflösung, Shader-Cache</string>
<string name="preferences_audio">Audio</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_debug">Debug</string>
<!-- Game properties -->
@ -237,13 +288,14 @@
<string name="info_description">Programm-ID, Entwickler, Version</string>
<string name="per_game_settings">Spieleinstellungen</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="program_id">Programm-ID</string>
<string name="developer">Entwickler</string>
<string name="version">Version</string>
<string name="copy_details">Details kopieren</string>
<string name="add_ons">Add-ons</string>
<string name="add_ons_description">Mods, Updates und DLC aktivieren oder deaktivieren</string>
<string name="add_ons_description">Mods, Updates und DLCs aktivieren oder deaktivieren</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="cleared_shaders_successfully">Shader erfolgreich gelöscht</string>
@ -252,10 +304,19 @@
<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_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. Wirklich fortfahren?</string>
<string name="delete_save_data_warning_description">Das löscht unwiederbringlich alle Speicherdaten für dieses Spiel.
Wirklich fortfahren?</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="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 -->
<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>
@ -278,6 +339,8 @@
<string name="emulation_unpause">Emulation fortsetzen</string>
<string name="emulation_input_overlay">Overlay-Optionen</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>
@ -357,7 +420,7 @@
<string name="ratio_default">Standard (16:9)</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_sixteen_ten">Erzwinge 16:10</string>
<string name="ratio_force_sixteen_ten">16:10 erzwingen</string>
<string name="ratio_stretch">Auf Bildschirmgröße anpsassen</string>
<!-- CPU Accuracy -->

View File

@ -137,6 +137,11 @@
<item quantity="other">%d archivos de guardado importados con éxito.</item>
</plurals>
<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 -->
<string name="applets">Ejecutador de applet</string>
@ -202,7 +207,6 @@
<string name="cpu_accuracy">Precisión de CPU</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_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>
@ -220,6 +224,8 @@
<string name="renderer_screen_layout">Orientación</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="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_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>
@ -247,6 +253,49 @@
<string name="audio_volume">Volumen</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 -->
<string name="slider_default">Predeterminado</string>
<string name="ini_saved">Configuración guardada</string>
@ -281,6 +330,11 @@
<string name="custom">Perzonalizado</string>
<string name="notice">Aviso</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 -->
<string name="select_gpu_driver">Seleccionar driver GPU</string>
<string name="select_gpu_driver_title">¿Quiere reemplazar el driver de GPU actual?</string>
@ -301,6 +355,7 @@
<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_description">Motor de salida, volumen</string>
<string name="preferences_controls">Controles</string>
<string name="preferences_theme">Tema y color</string>
<string name="preferences_debug">Depuración</string>
<string name="preferences_debug_description">CPU/GPU debug, API gráfica, fastMEM</string>
@ -342,6 +397,17 @@
<string name="verifying_content">Verificando 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="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 -->
<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>
@ -355,6 +421,7 @@
<string name="emulation_exit">Salir de la emulación</string>
<string name="emulation_done">Hecho</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_rel_stick_center">Centro relativo del stick</string>
<string name="emulation_dpad_slide">Deslizamiento de la cruceta</string>
@ -370,6 +437,8 @@
<string name="emulation_unpause">Despausar emulación</string>
<string name="emulation_input_overlay">Opciones de overlay</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>
@ -514,6 +583,12 @@
<string name="mute">Mutear</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 -->
<string name="licenses">Licencias</string>
<string name="license_fidelityfx_fsr_description">Upscaling de alta calidad de AMD</string>

View File

@ -0,0 +1,595 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
<string name="app_disclaimer">این نرم‌افزار برای اجرای بازی‌های کنسول نینتندو سوییچ است. هیچ بازی یا کلیدی داخل برنامه گنجانده نشده است.&lt;br /&gt;&lt;br /&gt;قبل از شروع، لطفاً فایل <![CDATA[ prod.keys ]]> خود را در حافظه دستگاه خود پیدا کنید.&lt;br /&gt; &lt;br /&gt;<![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">نحوه راه اندازی &lt;b>yuzu&lt;/b> و شبیه سازی را بیاموزید.</string>
<string name="get_started">شروع کنید</string>
<string name="keys">کلیدها</string>
<string name="keys_description">فایل &lt;b>prod.keys&lt;/b> خود را با دکمه زیر انتخاب کنید.</string>
<string name="select_keys">انتخاب کلیدها</string>
<string name="games">بازی‌ها</string>
<string name="games_description">پوشه &lt;b>بازی‌ها&lt;/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>

View File

@ -137,6 +137,11 @@
<item quantity="other">%d sauvegardes importées avec succès</item>
</plurals>
<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 -->
<string name="applets">Lanceur d\'applets</string>
@ -203,6 +208,7 @@
<string name="value_with_units">%1$s%2$s</string>
<!-- 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_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>
@ -220,6 +226,8 @@
<string name="renderer_screen_layout">Orientation</string>
<string name="renderer_aspect_ratio">Format</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_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>
@ -247,6 +255,92 @@
<string name="audio_volume">Volume</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 -->
<string name="slider_default">Par défaut</string>
<string name="ini_saved">Paramètres enregistrés</string>
@ -281,6 +375,14 @@
<string name="custom">Personnalisé</string>
<string name="notice">Avis</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 -->
<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>
@ -301,6 +403,9 @@
<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_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_debug">Débogage</string>
<string name="preferences_debug_description">Débogage CPU/GPU, API graphique, fastmem</string>
@ -342,6 +447,17 @@
<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_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 -->
<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>
@ -355,6 +471,7 @@
<string name="emulation_exit">Quitter l\'émulation</string>
<string name="emulation_done">Terminé</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_rel_stick_center">Centre du stick relatif</string>
<string name="emulation_dpad_slide">Glissement du D-pad</string>
@ -370,6 +487,8 @@
<string name="emulation_unpause">Reprendre l\'émulation</string>
<string name="emulation_input_overlay">Options de l\'overlay</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>
@ -514,6 +633,12 @@
<string name="mute">Couper 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 -->
<string name="licenses">Licences</string>
<string name="license_fidelityfx_fsr_description">Mise à l\'échelle de haute qualité par AMD.</string>

View File

@ -84,7 +84,10 @@
<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>
@ -123,6 +126,8 @@
<string name="add_game_folder">הוסף תיקיית משחקים</string>
<string name="folder_already_added">התיקייה הזו נוספה כבר!</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 -->
<string name="applets">משגר Applet</string>
<string name="applets_description">מערכת שיגור Applet משתמשת בתוכנה המותקנת</string>
@ -187,7 +192,6 @@
<string name="cpu_accuracy">דיוק המעבד</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_description">מעלה את הרזולוציה, פוגע בביצועים. משתמש במצב נייד כאשר מנוטרל, מפחית את הרזולוציה ומעלה את הביצועים.</string>
<string name="emulated_region">אזור אמולציה</string>
@ -229,6 +233,33 @@
<string name="audio_volume">עוצמת שמע</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 -->
<string name="slider_default">ברירת מחדל</string>
<string name="ini_saved">הגדרות שמורות</string>
@ -259,6 +290,8 @@
<string name="export_success">יוצא בהצלחה</string>
<string name="start">התחלה</string>
<string name="clear">נקה</string>
<string name="save">שמור</string>
<!-- GPU driver installation -->
<string name="select_gpu_driver">בחר דרייבר למעבד הגרפי</string>
<string name="select_gpu_driver_title">אתה מעוניין להחליף את הדרייבר של המעבד הגרפי שלך?</string>
@ -289,6 +322,7 @@
<string name="developer">מפתח</string>
<string name="version">גרסה</string>
<string name="add_ons">תוספים</string>
<string name="verify_success">אימות התקינות הצליח!</string>
<!-- ROM loading errors -->
<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>
@ -317,7 +351,6 @@
<string name="emulation_unpause">המשך אמולציה</string>
<string name="emulation_input_overlay">אופציות עבור שכבת-על</string>
<string name="touchscreen">מסך מגע</string>
<string name="load_settings">טוען הגדרות...</string>
<!-- Software keyboard -->

View File

@ -11,11 +11,10 @@
<string name="welcome_description">Ismerkedj meg a &lt;b>yuzu&lt;/b> beállításával és ugorj bele az emulációba.</string>
<string name="get_started">Vágjunk bele</string>
<string name="keys">Kulcsok</string>
<string name="keys_description">Válaszd ki a(z) &lt;b>prod.keys&lt;/b> fájlodat az alábbi gombbal.</string>
<string name="keys_description">Válaszd ki a &lt;b>prod.keys&lt;/b> fájlodat az alábbi gombbal.</string>
<string name="select_keys">Kulcsok kiválasztása</string>
<string name="games">Játékok</string>
<string name="games_description">
Válaszd ki a(z) &lt;b>Games&lt;/b> mappát az alábbi gombbal.</string>
<string name="games_description">Válaszd ki a &lt;b>Játékok&lt;/b> mappát az alábbi gombbal.</string>
<string name="done">Kész</string>
<string name="done_description">Minden kész.\nJó szórakozást!</string>
<string name="text_continue">Folytatás</string>
@ -48,10 +47,10 @@ Válaszd ki a(z) &lt;b>Games&lt;/b> mappát 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="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 imformációkról</string>
<string name="notification_warning_description">yuzu nem fog tudni értesíteni a fontos információkról</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="about">A programról</string>
<string name="about">Névjegy</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_skip">Kihagyás</string>
@ -134,6 +133,11 @@ Válaszd ki a(z) &lt;b>Games&lt;/b> mappát az alábbi gombbal.</string>
<item quantity="other">%dmentés sikeresen importálva</item>
</plurals>
<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 -->
<string name="applets">Applet indító</string>
@ -191,13 +195,14 @@ Válaszd ki a(z) &lt;b>Games&lt;/b> mappát az alábbi gombbal.</string>
<!-- General settings strings -->
<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_slider">Sebességkorlát százaléka</string>
<string name="frame_limit_slider">Sebesség korlátozása</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_accuracy">CPU pontosság</string>
<string name="value_with_units">%1$s%2$s</string>
<!-- 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_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>
@ -215,6 +220,8 @@ Válaszd ki a(z) &lt;b>Games&lt;/b> mappát az alábbi gombbal.</string>
<string name="renderer_screen_layout">Orientáció</string>
<string name="renderer_aspect_ratio">Képarány</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_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>
@ -225,6 +232,8 @@ Válaszd ki a(z) &lt;b>Games&lt;/b> mappát az alábbi gombbal.</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="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 -->
<string name="cpu">CPU</string>
<string name="cpu_debug_mode">CPU hibakeresés</string>
@ -238,6 +247,89 @@ Válaszd ki a(z) &lt;b>Games&lt;/b> mappát az alábbi gombbal.</string>
<string name="audio_volume">Hangerő</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 -->
<string name="slider_default">Alapértelmezett</string>
<string name="ini_saved">Beállítások elmentve</string>
@ -274,6 +366,11 @@ Válaszd ki a(z) &lt;b>Games&lt;/b> mappát az alábbi gombbal.</string>
<string name="import_complete">Importálás befejezve</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="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 -->
<string name="select_gpu_driver">Válassz GPU illesztőprogramot</string>
@ -295,6 +392,8 @@ Válaszd ki a(z) &lt;b>Games&lt;/b> mappát az alábbi gombbal.</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_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_debug">Hibakeresés</string>
<string name="preferences_debug_description">CPU/GPU hibakeresés, grafikus API, fastmem</string>
@ -338,6 +437,14 @@ Válaszd ki a(z) &lt;b>Games&lt;/b> mappát az alábbi gombbal.</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_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 -->
<string name="loader_error_encrypted">ROM titkosítva</string>
@ -351,11 +458,12 @@ Válaszd ki a(z) &lt;b>Games&lt;/b> mappát az alábbi gombbal.</string>
<string name="emulation_exit">Emuláció bezárása</string>
<string name="emulation_done">Kész</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_dpad_slide">D-pad csúsztatása</string>
<string name="emulation_haptics">Érintés haptikája</string>
<string name="emulation_show_overlay">Átfedés mutatása</string>
<string name="emulation_toggle_all">Össze átkapcsolása</string>
<string name="emulation_toggle_all">Összes átkapcsolá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_opacity">Átlátszóság</string>
@ -365,6 +473,8 @@ Válaszd ki a(z) &lt;b>Games&lt;/b> mappát az alábbi gombbal.</string>
<string name="emulation_unpause">Emuláció folytatása</string>
<string name="emulation_input_overlay">Átfedés beállításai</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>
@ -423,9 +533,9 @@ Válaszd ki a(z) &lt;b>Games&lt;/b> mappát az alábbi gombbal.</string>
<!-- Renderer VSync -->
<string name="renderer_vsync_immediate">Azonnali (Ki)</string>
<string name="renderer_vsync_mailbox">Postaláda</string>
<string name="renderer_vsync_mailbox">Mailbox</string>
<string name="renderer_vsync_fifo">FIFO (Be)</string>
<string name="renderer_vsync_fifo_relaxed">FIFO Relaxált</string>
<string name="renderer_vsync_fifo_relaxed">FIFO Relaxed</string>
<!-- Scaling Filters -->
<string name="scaling_filter_nearest_neighbor">Legközelebbi szomszéd</string>
@ -456,6 +566,8 @@ Válaszd ki a(z) &lt;b>Games&lt;/b> mappát az alábbi gombbal.</string>
<!-- CPU Backend -->
<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 -->
<string name="cpu_accuracy_accurate">Pontos</string>
<string name="cpu_accuracy_unsafe">Nem biztonságos</string>
@ -503,6 +615,12 @@ Válaszd ki a(z) &lt;b>Games&lt;/b> mappát az alábbi gombbal.</string>
<string name="mute">Némítás</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 -->
<string name="licenses">Licenszek</string>
<string name="license_fidelityfx_fsr_description">Magas minőségű felskálázás az AMD-től</string>

View File

@ -0,0 +1,587 @@
<?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.&lt;br /&gt;&lt;br /&gt;Sebelum memulai, harap cari file <![CDATA[<b> prod.keys </b>]]> di penyimpanan perangkat anda. &lt;br /&gt;&lt;br /&gt;<![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 &lt;b>yuzu&lt;/b> dan masuk ke dalam emulasi.</string>
<string name="get_started">Memulai</string>
<string name="keys">Kunci</string>
<string name="keys_description">Pilih file &lt;b>prod.keys&lt;/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 &lt;b>Games&lt;/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>

View File

@ -31,6 +31,7 @@
<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="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="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>
@ -83,7 +84,11 @@
<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_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="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_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>
@ -116,6 +121,16 @@
<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="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 -->
<string name="applets">Avvia applet</string>
<string name="applets_description">Avvia applet di sistema usando il firmware installato</string>
@ -176,10 +191,10 @@
<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_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="value_with_units">%1$s%2$s</string>
<!-- System settings strings -->
<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="emulated_region">Regione emulata</string>
@ -206,6 +221,9 @@
<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_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 -->
<string name="cpu">CPU</string>
<string name="cpu_debug_mode">Debug della CPU</string>
@ -221,6 +239,49 @@
<string name="audio_volume">Volume</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 -->
<string name="slider_default">Predefinito</string>
<string name="ini_saved">Impostazioni salvate</string>
@ -231,6 +292,7 @@
<string name="shutting_down">Spegnimento...</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_description">Reimposta tutte le impostazione avanzate</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="settings_reset">Reimposta le impostazioni</string>
@ -246,9 +308,19 @@
<string name="cancelling">Cancellazione</string>
<string name="install">Installa</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="clear">Cancella</string>
<string name="global">Globale</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 -->
<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>
@ -264,16 +336,32 @@
<string name="preferences_settings">Impostazioni</string>
<string name="preferences_general">Generali</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_description">Livello di Accuratezza, Risoluzione, Shader Cache</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_debug">Debug</string>
<string name="preferences_debug_description">Debugging CPU/GPU, API grafiche, fastmem</string>
<!-- Game properties -->
<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="program_id">Id Programma</string>
<string name="developer">Sviluppatore</string>
<string name="version">Versione</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 -->
<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>
@ -302,7 +390,6 @@
<string name="emulation_unpause">Riprendi l\'emulazione</string>
<string name="emulation_input_overlay">Opzioni overlay</string>
<string name="touchscreen">Touchscreen</string>
<string name="load_settings">Carico le impostazioni...</string>
<!-- Software keyboard -->
@ -316,7 +403,7 @@
<string name="system_archive_general">Un archivio di sistema</string>
<string name="save_load_error">Errore di salvataggio/caricamento</string>
<string name="fatal_error">Errore Fatale</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="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="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="memory_formatted">%1$s%2$s</string>

View File

@ -83,7 +83,9 @@
<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_export_saves_description">セーブファイルをインポート/エクスポート</string>
<string name="save_files_importing">セーブファイルをインポート中...</string>
<string name="save_file_imported_success">インポートが完了しました</string>
<string name="save_file_invalid_zip_structure">セーブデータのディレクトリ構造が無効</string>
<string name="save_file_invalid_zip_structure_description">最初のサブフォルダ名は、ゲームのタイトルIDである必要があります。</string>
@ -109,6 +111,8 @@
<string name="custom_driver_not_supported">カスタムドライバはサポートされていません</string>
<string name="manage_yuzu_data">yuzu データを管理</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="album_applet">アルバム</string>
<string name="cabinet_nickname_and_owner">ニックネームと所有者の設定</string>
@ -151,8 +155,8 @@
<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">CPUバックエンド</string>
<string name="cpu_accuracy">CPU精度</string>
<!-- System settings strings -->
<string name="use_docked_mode">TVモード</string>
<string name="use_docked_mode_description">高解像度、低パフォーマンス。無効時には携帯モードが使用されます(低解像度、高パフォーマンス)。</string>
<string name="emulated_region">地域</string>
@ -179,6 +183,9 @@
<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">CPU</string>
<string name="cpu_debug_mode">CPUデバッグ</string>
@ -193,6 +200,47 @@
<string name="audio_volume">音量</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 -->
<string name="slider_default">デフォルト</string>
<string name="ini_saved">設定を保存しました</string>
@ -220,6 +268,8 @@
<string name="start">開始</string>
<string name="clear">クリア</string>
<string name="custom">カスタム</string>
<string name="save">保存</string>
<!-- GPU driver installation -->
<string name="select_gpu_driver">GPUドライバを選択</string>
<string name="select_gpu_driver_title">現在のGPUドライバを置き換えますか</string>
@ -235,6 +285,7 @@
<string name="preferences_system">システム</string>
<string name="preferences_graphics">グラフィック</string>
<string name="preferences_audio">サウンド</string>
<string name="preferences_controls">操作</string>
<string name="preferences_theme">テーマと色</string>
<string name="preferences_debug">デバッグ</string>
<!-- Game properties -->
@ -243,6 +294,9 @@
<string name="developer">開発元</string>
<string name="version">バージョン</string>
<string name="add_ons">アドオン</string>
<string name="invalid_directory">無効なディレクトリ</string>
<string name="verify_success">整合性の確認に成功しました!</string>
<string name="verify_failure">整合性の確認に失敗しました!</string>
<!-- ROM loading errors -->
<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>
@ -270,7 +324,6 @@
<string name="emulation_unpause">再開</string>
<string name="emulation_input_overlay">表示オプション</string>
<string name="touchscreen">タッチスクリーン</string>
<string name="load_settings">設定をロード中…</string>
<!-- Software keyboard -->
@ -356,6 +409,10 @@
<string name="ratio_force_sixteen_ten">強制 16:10</string>
<string name="ratio_stretch">画面に合わせる</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">Dynarmic (低速)</string>
<string name="cpu_backend_nce">ネイティブコード実行 (NCE)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">正確</string>
<string name="cpu_accuracy_unsafe">不安定</string>
@ -383,6 +440,8 @@
<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 -->

View File

@ -133,6 +133,11 @@
<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>
@ -198,7 +203,6 @@
<string name="cpu_accuracy">CPU 정확도</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_description">해상도를 높이며 성능이 저하됩니다. 비활성화시 휴대 모드가 사용되며 해상도는 낮아지고 성능은 향상됩니다.</string>
<string name="emulated_region">에뮬레이트 지역</string>
@ -243,6 +247,48 @@
<string name="audio_volume">볼륨</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 -->
<string name="slider_default">기본값</string>
<string name="ini_saved">설정이 저장되었습니다.</string>
@ -272,13 +318,15 @@
<string name="edit">편집</string>
<string name="export_success">데이터를 내보냈습니다.</string>
<string name="start">시작</string>
<string name="clear">초기화</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>
<string name="save">저장</string>
<!-- GPU driver installation -->
<string name="select_gpu_driver">GPU 드라이버 선택</string>
@ -300,6 +348,7 @@
<string name="preferences_graphics_description">정확도 수준, 해상도, 셰이더 캐시</string>
<string name="preferences_audio">오디오</string>
<string name="preferences_audio_description">출력 엔진, 불륨</string>
<string name="preferences_controls">조작</string>
<string name="preferences_theme">테마 및 색상</string>
<string name="preferences_debug">디버그</string>
<string name="preferences_debug_description">CPU/GPU 디버깅, 그래픽 API, Fastmem</string>
@ -310,7 +359,7 @@
<string name="per_game_settings">게임별 설정</string>
<string name="per_game_settings_description">현재 게임에 적용되는 설정을 편집합니다.</string>
<string name="launch_options">실행 구성</string>
<string name="path">주소</string>
<string name="path">경로</string>
<string name="program_id">프로그램 ID</string>
<string name="developer">개발자</string>
<string name="version">버전</string>
@ -343,6 +392,14 @@
<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>
@ -372,6 +429,8 @@
<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>
@ -406,7 +465,7 @@
<string name="memory_byte_shorthand">B</string>
<string name="memory_kilobyte">KB</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_petabyte">PB</string>
<string name="memory_exabyte">EB</string>
@ -449,12 +508,12 @@
<!-- Screen Layouts -->
<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_reverse_landscape">가로 고정 (역방향 고정)</string>
<string name="screen_layout_sensor_portrait">세로 고정 (방향 감지)</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>
<string name="screen_layout_reverse_portrait">세로 (역방향)</string>
<!-- Aspect Ratios -->
<string name="ratio_default">기본 (16:9)</string>

View File

@ -95,6 +95,8 @@
<string name="install_game_content">Installer spillinnhold</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="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
<!-- About screen strings -->
<string name="gaia_is_not_real">Gaia er ikke ekte</string>
<string name="copied_to_clipboard">Kopiert til utklippstavlen</string>
@ -128,7 +130,6 @@
<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="cpu_accuracy">CPU-nøyaktighet</string>
<!-- System settings strings -->
<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="emulated_region">Emulert region</string>
@ -162,6 +163,48 @@
<string name="audio_volume">Volum</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 -->
<string name="slider_default">Standard</string>
<string name="ini_saved">Lagrede innstillinger</string>
@ -184,6 +227,8 @@
<string name="delete">Slett</string>
<string name="start">Start</string>
<string name="clear">Fjern</string>
<string name="save">Lagre</string>
<!-- GPU driver installation -->
<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>
@ -199,6 +244,7 @@
<string name="preferences_system">System</string>
<string name="preferences_graphics">Grafikk</string>
<string name="preferences_audio">Lyd</string>
<string name="preferences_controls">Kontrollere</string>
<string name="preferences_theme">Tema og farge</string>
<string name="preferences_debug">Feilsøk</string>
<!-- Game properties -->
@ -207,6 +253,8 @@
<string name="developer">Utvikler</string>
<string name="version">Versjon</string>
<string name="add_ons">Tilleggsprogrammer</string>
<string name="verify_success">Integritetsverifisering vellykket!</string>
<string name="verify_failure">Integritetsverifisering mislyktes!</string>
<!-- ROM loading errors -->
<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>
@ -234,7 +282,6 @@
<string name="emulation_unpause">Ta emuleringen ut av pause</string>
<string name="emulation_input_overlay">Overlay-alternativer</string>
<string name="touchscreen">Touch-skjerm</string>
<string name="load_settings">Laster inn innstillinger...</string>
<!-- Software keyboard -->

View File

@ -95,6 +95,8 @@
<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_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 -->
<string name="gaia_is_not_real">Gaia isn\'t real</string>
<string name="copied_to_clipboard">Skopiowano do schowka</string>
@ -128,7 +130,6 @@
<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="cpu_accuracy">Dokładność procesora CPU</string>
<!-- System settings strings -->
<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="emulated_region">Region emulacji</string>
@ -162,6 +163,48 @@
<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="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 -->
<string name="slider_default">Domyślne</string>
<string name="ini_saved">Ustawienia zapisane</string>
@ -184,6 +227,8 @@
<string name="start">Start</string>
<string name="clear">Wyczyść</string>
<string name="custom">Losowy</string>
<string name="save">Zapisz</string>
<!-- GPU driver installation -->
<string name="select_gpu_driver">Wybierz sterownik GPU </string>
<string name="select_gpu_driver_title">Chcesz zastąpić obecny sterownik układu graficznego?</string>
@ -199,6 +244,7 @@
<string name="preferences_system">System</string>
<string name="preferences_graphics">Grafika</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_debug">Debug</string>
<!-- Game properties -->
@ -234,7 +280,6 @@
<string name="emulation_unpause">Wznów emulację</string>
<string name="emulation_input_overlay">Opcje nakładki</string>
<string name="touchscreen">Ekran dotykowy</string>
<string name="load_settings">Wczytuję ustawienia...</string>
<!-- Software keyboard -->

View File

@ -22,16 +22,16 @@
<string name="back">Voltar</string>
<string name="add_games">Adicionar Jogos</string>
<string name="add_games_description">Selecione sua pasta de Jogos</string>
<string name="step_complete">Completo!</string>
<string name="step_complete">Concluído!</string>
<!-- Home strings -->
<string name="home_games">Jogos</string>
<string name="home_search">Pesquisar</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="search_and_filter_games">Procura e filtra jogos.</string>
<string name="select_games_folder">Seleciona a pasta de jogos.</string>
<string name="manage_game_folders">Gerencie as pastas de 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="manage_game_folders">Gerenciar pastas 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_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="games_dir_selected">Pasta de jogos selecionada</string>
<string name="install_prod_keys">Instalar prod.keys</string>
<string name="install_prod_keys_description">Necessário para desencriptar jogos comerciais</string>
<string name="install_prod_keys_description">Necessárias para desencriptar jogos comerciais</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_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="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_description">Yuzu não conseguirá te notificar de informações importantes. </string>
<string name="notification_warning_description">O Yuzu não irá te notificar de informações importantes. </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="about">Sobre</string>
<string name="about_description">Versão de compilação, créditos e mais</string>
<string name="about_description">Versão da compilação, créditos e mais</string>
<string name="warning_help">Ajuda</string>
<string name="warning_skip">Ignorar</string>
<string name="warning_cancel">Cancelar</string>
<string name="install_amiibo_keys">Instalar chaves Amiibo</string>
<string name="install_amiibo_keys_description">Necessário para usar Amiibos em um jogo</string>
<string name="install_amiibo_keys_description">Necessárias para usar Amiibos em um jogo</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="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="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="install_gpu_driver">Instala driver para GPU</string>
<string name="install_gpu_driver_description">Instala drivers alternativos para desempenho ou precisão potencialmente melhores</string>
<string name="install_gpu_driver">Instalar driver para GPU</string>
<string name="install_gpu_driver_description">Instale drivers alternativos para desempenho ou precisão potencialmente melhores</string>
<string name="advanced_settings">Configurações avançadas</string>
<string name="advanced_settings_game">Configurações avançadas: %1$s</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="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_description">Por favor localize a pasta do usuário com o painel lateral do gerenciador de arquivos manualmente.</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="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="import_save_warning">Importar dados salvos</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_save_warning_description">Isso irá substituir 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="save_files_importing">Importando 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_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 sub pasta deve ser a ID do jogo.</string>
<string name="save_file_invalid_zip_structure_description">O nome da primeira subpasta deve ser a ID do jogo.</string>
<string name="import_saves">Importar</string>
<string name="export_saves">Exportar</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_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="share_log">Compartilhar registros de debug</string>
<string name="share_log">Compartilhar registros de depuração</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="install_game_content">Instalar conteúdo de jogos</string>
<string name="install_game_content_description">Instala atualizações de jogos ou DLC</string>
<string name="install_game_content_description">Instale atualizações de jogos ou DLC</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_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_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_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="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="manage_yuzu_data">Administrar dados do yuzu</string>
<string name="manage_yuzu_data_description">Importa/exporta firmware, chaves, dados do usuário e mais!</string>
<string name="manage_yuzu_data_description">Importe/exporte firmware, chaves, dados do usuário e mais!</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="game_folders">Pastas de jogos</string>
@ -137,20 +137,25 @@
<item quantity="other">Dados salvos de %d importados com sucesso</item>
</plurals>
<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 -->
<string name="applets">Launcher de miniaplicativos</string>
<string name="applets_description">Inicia miniaplicativos do sistema usando o firmware instalado</string>
<string name="applets_description">Execute miniaplicativos do sistema usando o firmware 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_description"><![CDATA[Por favor verifique se o arquivo 1prod.keys1 e o 2firmware2 estão instalados e tente novamente.]]></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="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="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="cabinet_applet">Arquivo</string>
<string name="cabinet_applet_description">Edite e delete dados armazenados nos amiibos</string>
<string name="cabinet_launcher">Inicializador do Arquivo</string>
<string name="cabinet_launcher">Launcher do Arquivo</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_restorer">Restaurar</string>
@ -164,9 +169,9 @@
<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="licenses_description">Projetos que tornam o yuzu para Android possível</string>
<string name="build">Versão</string>
<string name="build">Versão da Compilação</string>
<string name="user_data">Dados do usuário</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="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="exporting_user_data">Exportando 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>
@ -174,14 +179,14 @@
<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_export_cancelled">Exportação cancelada</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="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="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">Acesso Antecipado</string>
<string name="get_early_access">Obtenha o Acesso Antecipado</string>
<string name="get_early_access">Obter Acesso Antecipado</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="early_access_benefits">Benefícios do Acesso Antecipado</string>
@ -203,32 +208,35 @@
<string name="value_with_units">%1$s%2$s</string>
<!-- System settings strings -->
<string name="device_name">Nome do Dispositivo</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="emulated_region">Região 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_time">Selecione a hora do sistema</string>
<string name="use_custom_rtc">Data e hora personalizada</string>
<string name="use_custom_rtc">Data e hora personalizadas</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">Defina um relógio em tempo real personalizado</string>
<string name="set_custom_rtc">Definir um relógio em tempo real personalizado</string>
<!-- Graphics settings strings -->
<string name="renderer_accuracy">Nível de precisão</string>
<string name="renderer_resolution">Resolução (Portátil/Modo TV)</string>
<string name="renderer_vsync">Modo VSync</string>
<string name="renderer_vsync">Modo de VSync</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 de tela</string>
<string name="renderer_scaling_filter">Filtro de Adaptação da Janela</string>
<string name="renderer_anti_aliasing">Método de Anti-Serrilhado</string>
<string name="fsr_sharpness">Nitidez do FSR</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_description">Força o GPU a rodar na velocidade máxima (restrições térmicas serão aplicadas)</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_asynchronous_shaders">Usar shaders assíncronos </string>
<string name="renderer_asynchronous_shaders_description">Compila os shaders de forma assíncrona, reduzindo travamentos, mas pode apresentar problemas.</string>
<string name="renderer_asynchronous_shaders_description">Compila os shaders de forma assíncrona, reduzindo engasgos, mas pode apresentar problemas.</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="use_disk_shader_cache">Cache de shaders em disco</string>
<string name="use_disk_shader_cache_description">Reduz travamentos ao armazenar e carregar localmente os shaders.</string>
<string name="use_disk_shader_cache_description">Reduz engasgos ao armazenar e carregar localmente os shaders.</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>
@ -243,9 +251,96 @@
<string name="fastmem">Fastmem</string>
<!-- Audio settings strings -->
<string name="audio_output_engine">Engine de reprodução</string>
<string name="audio_output_engine">Mecanismo de saída</string>
<string name="audio_volume">Volume</string>
<string name="audio_volume_description">Especifica o volume de reprodução.</string>
<string name="audio_volume_description">Especifica o volume da reprodução do áudio.</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 -->
<string name="slider_default">Padrão</string>
@ -256,10 +351,10 @@
<string name="loading">Carregando...</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_to_default">Reverter para o padrão</string>
<string name="reset_to_default">Redefinir para o padrão</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_description">Todas as configurações avançadas retornarão ao padrão. Isto não pode ser desfeito.</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="settings_reset">Configurações redefinidas</string>
<string name="close">Fechar</string>
<string name="learn_more">Saiba mais</string>
@ -278,9 +373,17 @@
<string name="start">Start</string>
<string name="clear">Limpar</string>
<string name="global">Global</string>
<string name="custom">Personalizado</string>
<string name="custom">Personalizada</string>
<string name="notice">Aviso</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 -->
<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>
@ -298,9 +401,12 @@
<string name="preferences_system">Sistema</string>
<string name="preferences_system_description">Modo TV, região, idioma</string>
<string name="preferences_graphics">Gráficos</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 shaders</string>
<string name="preferences_audio">Áudio</string>
<string name="preferences_audio_description">Engine de reprodução, volume</string>
<string name="preferences_audio_description">Mecanismo de saída, 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_debug">Depuração</string>
<string name="preferences_debug_description">Depuração de CPU/GPU, API gráfica, fastmem</string>
@ -308,7 +414,7 @@
<!-- Game properties -->
<string name="info">Informações</string>
<string name="info_description">ID do Programa, desenvolvedora, versão</string>
<string name="per_game_settings">Configurações por jogo</string>
<string name="per_game_settings">Configurações do 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="path">Caminho</string>
@ -316,13 +422,13 @@
<string name="developer">Desenvolvedora</string>
<string name="version">Versão</string>
<string name="copy_details">Copiar detalhes</string>
<string name="add_ons">Adicionais</string>
<string name="add_ons">Complementos</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_description">Remove todos os shaders compilados durante a execução do jogo</string>
<string name="clear_shader_cache_warning_description">Você terá mais travamentos enquanto o cache de shaders for recompilado</string>
<string name="clear_shader_cache_warning_description">Você terá mais engasgos enquanto o cache de shaders for recompilado</string>
<string name="cleared_shaders_successfully">Shaders excluídos com sucesso</string>
<string name="addons_game">Adicionais: %1$s</string>
<string name="addons_game">Complementos: %1$s</string>
<string name="save_data">Dados salvos</string>
<string name="save_data_description">Gerencie dados salvos específicos deste jogo</string>
<string name="delete_save_data">Deletar dados salvos</string>
@ -332,22 +438,33 @@
<string name="select_content_type">Tipo de conteúdo</string>
<string name="updates_and_dlc">Atualizações e DLC</string>
<string name="mods_and_cheats">Mods e cheats</string>
<string name="addon_notice">Aviso importante sobre os adicionais</string>
<string name="addon_notice">Aviso importante sobre os complementos</string>
<!-- "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="invalid_directory">Diretório inválido </string>
<!-- "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="addon_installed_successfully">Adicional instalado com sucesso</string>
<string name="addon_installed_successfully">Complemento instalado com sucesso</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 a instalação do conteúdo</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 -->
<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 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_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_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_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_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_invalid_format">Impossível carregar a ROM</string>
<string name="loader_error_file_not_found">O arquivo ROM não existe</string>
@ -355,6 +472,7 @@
<string name="emulation_exit">Sair da emulação</string>
<string name="emulation_done">Feito</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_rel_stick_center">Centro Relativo do Analógico</string>
<string name="emulation_dpad_slide">Deslizamento dos Botões Direcionais</string>
@ -364,12 +482,14 @@
<string name="emulation_control_adjust">Ajustar overlay</string>
<string name="emulation_control_scale">Escala</string>
<string name="emulation_control_opacity">Opacidade</string>
<string name="emulation_touch_overlay_reset">Resetar overlay</string>
<string name="emulation_touch_overlay_reset">Redefinir overlay</string>
<string name="emulation_touch_overlay_edit">Editar overlay</string>
<string name="emulation_pause">Pausar emulação</string>
<string name="emulation_unpause">Retomar a emulação</string>
<string name="emulation_input_overlay">Opções de overlay</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>
@ -411,12 +531,12 @@
<!-- Renderer APIs -->
<string name="renderer_vulkan">Vulkan</string>
<string name="renderer_none">Nenhum</string>
<string name="renderer_none">Nenhuma</string>
<!-- Renderer Accuracy -->
<string name="renderer_accuracy_normal">Normal</string>
<string name="renderer_accuracy_high">Alto</string>
<string name="renderer_accuracy_extreme">Extremo (Lento)</string>
<string name="renderer_accuracy_high">Alta</string>
<string name="renderer_accuracy_extreme">Extrema (Lenta)</string>
<!-- Resolutions -->
<string name="resolution_half">0.5X (360p/540p)</string>
@ -462,13 +582,13 @@
<string name="ratio_stretch">Esticar à janela</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">Dynarmic (Lento)</string>
<string name="cpu_backend_dynarmic">Dynarmic (Lenta)</string>
<string name="cpu_backend_nce">Execução de código nativo (NCE)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">Preciso</string>
<string name="cpu_accuracy_unsafe">Não seguro</string>
<string name="cpu_accuracy_paranoid">Paranóico (Lento)</string>
<string name="cpu_accuracy_accurate">Precisa</string>
<string name="cpu_accuracy_unsafe">Não segura</string>
<string name="cpu_accuracy_paranoid">Paranoica (Lenta)</string>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">Botões Direcionais</string>
@ -503,7 +623,7 @@
<string name="multiplier_sixteen">16x</string>
<!-- Black backgrounds theme -->
<string name="use_black_backgrounds">Plano de fundo preto</string>
<string name="use_black_backgrounds">Planos de fundo pretos</string>
<string name="use_black_backgrounds_description">Quando usar o tema escuro, aplicar fundos pretos</string>
<!-- Picture-In-Picture -->
@ -514,6 +634,12 @@
<string name="mute">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 -->
<string name="licenses">Licenças</string>
<string name="license_fidelityfx_fsr_description">Upscaling de alta qualidade da AMD</string>

View File

@ -137,6 +137,11 @@
<item quantity="other">Dados salvos de %d importados com sucesso</item>
</plurals>
<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 -->
<string name="applets">Launcher de miniaplicativos</string>
@ -203,6 +208,7 @@
<string name="value_with_units">%1$s%2$s</string>
<!-- System settings strings -->
<string name="device_name">Nome do Dispositivo</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="emulated_region">Região da emulação</string>
@ -220,6 +226,8 @@
<string name="renderer_screen_layout">Oriantação</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="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_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>
@ -247,6 +255,93 @@
<string name="audio_volume">Volume</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 -->
<string name="slider_default">Padrão</string>
<string name="ini_saved">Configurações guardadas</string>
@ -281,6 +376,14 @@
<string name="custom">Personalizado</string>
<string name="notice">Aviso</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 -->
<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>
@ -301,6 +404,9 @@
<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_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_debug">Depurar</string>
<string name="preferences_debug_description">Depuração de CPU/GPU, API gráfica, fastmem</string>
@ -342,6 +448,17 @@
<string name="verifying_content">Verificando 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="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 -->
<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>
@ -355,6 +472,7 @@
<string name="emulation_exit">Parar emulação</string>
<string name="emulation_done">Feito</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_rel_stick_center">Centro Relativo de Analógico</string>
<string name="emulation_dpad_slide">Deslizamento dos Botões Direcionais</string>
@ -370,6 +488,8 @@
<string name="emulation_unpause">Despausar emulação</string>
<string name="emulation_input_overlay">Opções de overlay</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>
@ -514,6 +634,12 @@
<string name="mute">Mute</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 -->
<string name="licenses">Licenças</string>
<string name="license_fidelityfx_fsr_description">Upscaling de alta qualidade da AMD</string>

Some files were not shown because too many files have changed in this diff Show More