diff --git a/SaltySD/plugins/FPSLocker/patches/010014C011146000/5B050C55B8264040.yaml b/SaltySD/plugins/FPSLocker/patches/010014C011146000/5B050C55B8264040.yaml index 8a8fd8c..a948c6e 100644 --- a/SaltySD/plugins/FPSLocker/patches/010014C011146000/5B050C55B8264040.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010014C011146000/5B050C55B8264040.yaml @@ -1,4 +1,4 @@ -# Subnautica Below Zero 1.21.49397-1.22.54460 +# Subnautica Below Zero 1.21.49397-1.23.55063 # BID: 5B050C55B8264040 ALL_FPS: diff --git a/SaltySD/plugins/FPSLocker/patches/010046200FC62000/B1C0E2F9DBF2ADFB.yaml b/SaltySD/plugins/FPSLocker/patches/010046200FC62000/B1C0E2F9DBF2ADFB.yaml new file mode 100644 index 0000000..de3de46 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010046200FC62000/B1C0E2F9DBF2ADFB.yaml @@ -0,0 +1,34 @@ +# Kingdom Rush Frontiers 3.2.23 +# BID: B1C0E2F9DBF2ADFB + +MASTER_WRITE: + - # REF: vtable with string "getAverageDelta", search inside that vtable "sleep", it's above actual function, patch BLX X1 inside that function + type: bytes + main_offset: 0xF5514 + value_type: uint32 + value: 0xEB069E4D # BL 0x29CE50 + - + type: bytes + main_offset: 0x29CE50 # Code cave + value_type: uint32 + value: + - 0xE24F2008 # SUB R2, PC, #8 + - 0xE30931A8 # MOVW R3, #0x91A8 + - 0xE3403076 # MOVT R3, #0x0076 + - 0xE0822003 # ADD R2, R2, R3 - 0x29CE50 + 0x7691A8 = 0xA05FF8 + - 0xED921B00 # VLDR D1, [R2] + - 0xEEB51B40 # VCMP.F64 D1, #0.0 + - 0xEEF1FA10 # VMRS APSR_nzcv, FPSCR + - 0x1EB00B41 # VMOVNE.F64 D0, D1 + - 0xE12FFF11 # BX R1 + - + type: bytes + main_offset: 0xA05FF8 + value_type: double + value: 0 +ALL_FPS: + - + type: write + address: [MAIN, 0xA05FF8] + value_type: double + value: 0.001 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100465013578000/F05A2BD2BD050256.yaml b/SaltySD/plugins/FPSLocker/patches/0100465013578000/F05A2BD2BD050256.yaml new file mode 100644 index 0000000..b00641d --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100465013578000/F05A2BD2BD050256.yaml @@ -0,0 +1,19 @@ +# 고스트러너 1.7 +# BID: F05A2BD2BD050256 + +ALL_FPS: + # r.DynamicRes.FrameTimeBudget = 0.93 * (1000/FPS) + - + type: evaluate_write + address: [MAIN, 0x6B0C480, 0] + value_type: float + value: ["0.93 * FRAMETIME_TARGET", "0.93 * FRAMETIME_TARGET"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x6B35A08, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/01004D501F078000/B18F4EAC4D5148A1.yaml b/SaltySD/plugins/FPSLocker/patches/01004D501F078000/B18F4EAC4D5148A1.yaml new file mode 100644 index 0000000..a21919a --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01004D501F078000/B18F4EAC4D5148A1.yaml @@ -0,0 +1,82 @@ +# The Lord of the Rings: War in the North - Legacy Edition 1.0.1 +# BID: B18F4EAC4D5148A1 +# INFO: RenderThreadWaitOnGPU blocks game to 59 FPS and causes CPU cores to rampage if not adjusted, but if adjusted to allow perfect 60 FPS image starts tearing, so i decided to not change it + +DECLARATIONS: + - + type: variable + name: frametime + value_type: uint32 + default_value: 33333 + evaluate: 1000000 / FPS_LOCK_TARGET + - + type: variable + name: half_frametime + value_type: float + default_value: 0.01665 + evaluate: 0.999 * (1 / FPS_TARGET) + - + type: code + name: sleep + instructions: [ + [adrp, x26, $frametime], + [ldr, w26, [x26, $frametime]], + [sub, w24, w26, 1], + [cmp, x0, x24], + [b, 0x1B6DD8] + ] + - + type: code + name: sleep2 + instructions: [ + [adrp, x26, $frametime], + [ldr, w26, [x26, $frametime]], + [sub, w24, w26, 1], + [cmp, x0, x24], + [b, 0x1B6D30] + ] + - + type: code + name: gpuSleep + instructions: [ + [mov, x0, -2], + [svc, 0xB], + [mov, x0, 10000], + [svc, 0xB], + [ret] + ] +MASTER_WRITE: + # RenderThreadWaitOnMainThread, main FPS lock + # REF: 98 46 90 52 BA 46 90 52, search for CMP X0, X24 + - + type: asm_a64 + main_offset: 0x1B6DD4 + instructions: [ + [b, _sleep()] + ] + - + type: asm_a64 + main_offset: 0x1B6D2C + instructions: [ + [b, _sleep2()] + ] + # RenderThreadWaitOnGPU + # REF: A8 B2 8C 52 08 91 A7 72 + - + type: asm_a64 + main_offset: 0x25C998 + instructions: [ + [adrp, x8, $half_frametime], + [ldr, w8, [x8, $half_frametime]] + ] + # Stabilize CPU usage + - + type: asm_a64 + main_offset: 0x25C9B0 + instructions: [ + [bl, _gpuSleep()] + ] +ALL_FPS: + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/01004FF021942000/C4D335206D970E73.yaml b/SaltySD/plugins/FPSLocker/patches/01004FF021942000/C4D335206D970E73.yaml new file mode 100644 index 0000000..1b646a6 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01004FF021942000/C4D335206D970E73.yaml @@ -0,0 +1,13 @@ +# EA SPORTS FC 26 1.8a.e1b8 +# BID: C4D335206D970E73 + +ALL_FPS: + # Internal FPS Lock + - + type: evaluate_write + address: [MAIN, 0xC713938, 8] + value_type: double + value: FPS_TARGET + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100544020572000/B7431B2671E05764.yaml b/SaltySD/plugins/FPSLocker/patches/0100544020572000/B7431B2671E05764.yaml new file mode 100644 index 0000000..0eb1412 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100544020572000/B7431B2671E05764.yaml @@ -0,0 +1,30 @@ +# Atelier Yumia: The Alchemist of Memories & the Envisioned Land 1.7.0 +# BID: B7431B2671E05764 + +DECLARATIONS: + - + type: variable + name: dr_target + value_type: float + default_value: 0.035714287 # Basically = 1/28 + evaluate: "1.01 / FPS_TARGET" +MASTER_WRITE: + # Redirect DR + # REF: A9 24 89 52 49 A2 A7 72, second REF + - + type: asm_a64 + main_offset: 0x10F7B74 + instructions: [ + [adrp, x9, $dr_target], + [ldr, s1, [x9, $dr_target]], + [nop] + ] +ALL_FPS: + # Disable FPS Lock + # REF: 88 46 40 F9 03 11 40 F9, first ADRP+LDR above it + - + type: write + address: [MAIN, 0x2FEBCD0, 0xE0, 0x294] + address_unsafe: true + value_type: uint8 + value: 0 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010064C01A9BA000/74908F08D86477CB.yaml b/SaltySD/plugins/FPSLocker/patches/010064C01A9BA000/74908F08D86477CB.yaml new file mode 100644 index 0000000..8e9a566 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010064C01A9BA000/74908F08D86477CB.yaml @@ -0,0 +1,10 @@ +# Tamagotchi Plaza 1.0.9 +# BID: 74908F08D86477CB + +ALL_FPS: + # UnityEngine.Rendering.OnDemandRendering_TypeInfo + - + type: write + address: [MAIN, 0x7109700, 0xB8, 0] + value_type: int32 + value: -1 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010066101A55A000/138F11463DE5DFE7.yaml b/SaltySD/plugins/FPSLocker/patches/010066101A55A000/138F11463DE5DFE7.yaml new file mode 100644 index 0000000..c4c8244 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010066101A55A000/138F11463DE5DFE7.yaml @@ -0,0 +1,19 @@ +# Little Nightmares III 1.1.1 +# BID: 138F11463DE5DFE7 + +ALL_FPS: + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x7D55E48, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + # r.VSync + - + type: write + address: [MAIN, 0x7561210, 0] + value_type: uint32 + value: [0, 0] + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100760020BBA000/CE703129D86CA47E.yaml b/SaltySD/plugins/FPSLocker/patches/0100760020BBA000/CE703129D86CA47E.yaml new file mode 100644 index 0000000..92217a9 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100760020BBA000/CE703129D86CA47E.yaml @@ -0,0 +1,37 @@ +# みんなのGOLF WORLD 1.1.11 +# BID: CE703129D86CA47E +# Changed frametime target value math formula because default one sucks at 60 FPS target + +DECLARATIONS: + - + type: variable + name: dr_frametime_max + value_type: double + default_value: 40 + evaluate: "0.9 * FRAMETIME_TARGET" + - + type: variable + name: dr_frametime_min + value_type: double + default_value: 33.3333333333 + evaluate: "(0.9 * FRAMETIME_TARGET) - 6" +MASTER_WRITE: + # REF: 0a 00 a4 d2 8a 08 e8 f2 41 01 67 9e + - + type: asm_a64 + main_offset: 0x39A2048 + instructions: [ + [adrp, x10, $dr_frametime_max], + [ldr, d1, [x10, $dr_frametime_max]], + [nop] + ] + - + # REF: 00 0d 40 fd 0a 00 b8 d2, result offset + 4 + type: asm_a64 + main_offset: 0x39A211C + instructions: [ + [adrp, x10, $dr_frametime_min], + [ldr, d1, [x10, $dr_frametime_min]], + [nop], + [nop] + ] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010078D000F88000/D3B3F636A2BF3628.yaml b/SaltySD/plugins/FPSLocker/patches/010078D000F88000/D3B3F636A2BF3628.yaml new file mode 100644 index 0000000..6ddecd8 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010078D000F88000/D3B3F636A2BF3628.yaml @@ -0,0 +1,50 @@ +# DRAGON BALL XENOVERSE 2 FOR NINTENDO SWITCH 1.26.01 +# BID: D3B3F636A2BF3628 +# Double buffer is hardcoded in class, getting triple buffer is hard. +# Some graphical effects like aura have wrong speed outside of 15, 20, 30 and 60 FPS + +ALL_FPS: + # Search those in Edizon by searching for 1/60 in title menu, then 1/30 when FPS lock is applied. + # FPS Lock + - + type: write + address: [MAIN, 0x4B80AD8, 0x698] + address_unsafe: true + value_type: float + value: 0.0 + # Unknown + - + type: write + address: [MAIN, 0x4B80AD8, 0x6A4] + address_unsafe: true + value_type: float + value: 0.0 + # Game Battle Speed Factor + - + type: evaluate_write + address: [MAIN, 0x4B80AD8, 0x6B0] + address_unsafe: true + value_type: uint32 + value: VSYNC_TARGET + # Cutscenes Speed Factor + - + type: evaluate_write + address: [MAIN, 0x4B80AD8, 0x6B4] + address_unsafe: true + value_type: uint32 + value: VSYNC_TARGET + # Target Speed + # REF: E9 03 00 32 09 01 00 39 C0 03 5F D6, first result, LDR instruction + - + type: evaluate_write + address: [MAIN, 0x24A86D0] + value_type: float + value: "(1 / FPS_TARGET) * VSYNC_TARGET" + # Dynamic Resolution FPS Target + # REF: 16 4E A8 52 F7 03 60 B2, first ADRP + LDR above it + - + type: evaluate_write + address: [MAIN, 0x24843C8, 0x1844] + address_unsafe: true + value_type: float + value: "FPS_TARGET" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01007AB012872000/DAE8585805CE94AC.yaml b/SaltySD/plugins/FPSLocker/patches/01007AB012872000/DAE8585805CE94AC.yaml new file mode 100644 index 0000000..c625aba --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01007AB012872000/DAE8585805CE94AC.yaml @@ -0,0 +1,37 @@ +# 信長の野望・新生 1.1.7 +# BID: DAE8585805CE94AC +# Cursor speed is tied to framerate + +DECLARATIONS: + - + type: variable + name: fps_target + value_type: uint32 + default_value: 30 + evaluate: FPS_TARGET + - + type: variable + name: frametime_target + value_type: uint32 + default_value: 33 + evaluate: 1000 / FPS_LOCK_TARGET + - + type: variable + name: lock30 + value_type: uint32 + default_value: 1 + evaluate: VSYNC_TARGET - 1 +MASTER_WRITE: + # Min delta based on vsync + fps lock outside of cutscenes + # REF: 28 00 80 52 68 CE 00 B9 C8 03 80 D2 28 04 C0 F2 + # 2nd REF: Search immediate 0x210000001E and main_offset is MOV W8, #1 above + - + type: asm_a64 + main_offset: 0x12AFA18 + instructions: [ + [adrp, x8, $fps_target], + [ldr, w1, [x8, $lock30]], + [ldp, w8, w9, [x8]], + [str, w1, [x19, 0xCC]], + [stp, w8, w9, [x21]] + ] diff --git a/SaltySD/plugins/FPSLocker/patches/01007AB012872001/91D5134A1EA382D0.yaml b/SaltySD/plugins/FPSLocker/patches/01007AB012872001/91D5134A1EA382D0.yaml new file mode 100644 index 0000000..dc4507c --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01007AB012872001/91D5134A1EA382D0.yaml @@ -0,0 +1,37 @@ +# 信長の野望・新生 with パワーアップキット 1.1.7 +# BID: 91D5134A1EA382D0 +# Cursor speed is tied to framerate + +DECLARATIONS: + - + type: variable + name: fps_target + value_type: uint32 + default_value: 30 + evaluate: FPS_TARGET + - + type: variable + name: frametime_target + value_type: uint32 + default_value: 33 + evaluate: 1000 / FPS_LOCK_TARGET + - + type: variable + name: lock30 + value_type: uint32 + default_value: 1 + evaluate: VSYNC_TARGET - 1 +MASTER_WRITE: + # Min delta based on vsync + fps lock outside of cutscenes + # REF: 28 00 80 52 68 D2 00 B9 C8 03 80 D2 28 04 C0 F2 + # 2nd REF: Search immediate 0x210000001E and main_offset is MOV W8, #1 above + - + type: asm_a64 + main_offset: 0x184469C + instructions: [ + [adrp, x8, $fps_target], + [ldr, w1, [x8, $lock30]], + [ldp, w8, w9, [x8]], + [str, w1, [x19, 0xD0]], + [stp, w8, w9, [x21]] + ] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010090F012916000/D3DD5B220DCEB626.yaml b/SaltySD/plugins/FPSLocker/patches/010090F012916000/D3DD5B220DCEB626.yaml index 1a113ff..a469565 100644 --- a/SaltySD/plugins/FPSLocker/patches/010090F012916000/D3DD5B220DCEB626.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010090F012916000/D3DD5B220DCEB626.yaml @@ -1,8 +1,6 @@ # Ghostrunner 1.8 # BID: D3DD5B220DCEB626 -unsafeCheck: true - ALL_FPS: # r.DynamicRes.FrameTimeBudget = 0.93 * (1000/FPS) - diff --git a/SaltySD/plugins/FPSLocker/patches/010097F018538000/5D158A80EEC25473.yaml b/SaltySD/plugins/FPSLocker/patches/010097F018538000/5D158A80EEC25473.yaml new file mode 100644 index 0000000..349c40c --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010097F018538000/5D158A80EEC25473.yaml @@ -0,0 +1,10 @@ +# DAVE THE DIVER 1.0.6.1224 +# BID: 5D158A80EEC25473 + +ALL_FPS: + # UnityEngine.Time::fixedDeltaTime + - + type: evaluate_write + address: [MAIN, 0xA475028, 0x50] + value_type: uint32 + value: "141120000 / FPS_TARGET" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010097F018538000/D26FA1059AE0B629.yaml b/SaltySD/plugins/FPSLocker/patches/010097F018538000/D26FA1059AE0B629.yaml new file mode 100644 index 0000000..9b18dc8 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010097F018538000/D26FA1059AE0B629.yaml @@ -0,0 +1,10 @@ +# DAVE THE DIVER 1.0.6.1243 +# BID: D26FA1059AE0B629 + +ALL_FPS: + # UnityEngine.Time::fixedDeltaTime + - + type: evaluate_write + address: [MAIN, 0xA475028, 0x50] + value_type: uint32 + value: "141120000 / FPS_TARGET" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100A18021FCC000/3E5F01690365FBF4.yaml b/SaltySD/plugins/FPSLocker/patches/0100A18021FCC000/3E5F01690365FBF4.yaml new file mode 100644 index 0000000..e4c2a7f --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100A18021FCC000/3E5F01690365FBF4.yaml @@ -0,0 +1,18 @@ +# Deer & Boy 1.3.2 +# BID: 3E5F01690365FBF4 + +ALL_FPS: + # Vsync + # Ref: 01 00 00 00 03 00 00 00 00 00 00 08 + - + type: evaluate_write + address: [MAIN, 0x9ADEAB8] + value_type: int32 + value: VSYNC_TARGET + # fixedDeltaTime + # Fixes an issue with game animation targeting always 25 FPS + - + type: evaluate_write + address: [MAIN, 0x9E03A68, 0x50] + value_type: uint32 + value: "141120000 / FPS_TARGET" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100A280121F6000/11813C311AF1737F.yaml b/SaltySD/plugins/FPSLocker/patches/0100A280121F6000/11813C311AF1737F.yaml new file mode 100644 index 0000000..87d41cd --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100A280121F6000/11813C311AF1737F.yaml @@ -0,0 +1,34 @@ +# Kingdom Rush 5.6.10 +# BID: 11813C311AF1737F + +MASTER_WRITE: + - # REF: vtable with string "getAverageDelta", search inside that vtable "sleep", it's above actual function, patch BLX X1 inside that function + type: bytes + main_offset: 0xF5514 + value_type: uint32 + value: 0xEB069E4D # BL 0x29CE50 + - + type: bytes + main_offset: 0x29CE50 # Code cave + value_type: uint32 + value: + - 0xE24F2008 # SUB R2, PC, #8 + - 0xE30931A8 # MOVW R3, #0x91A8 + - 0xE3403076 # MOVT R3, #0x0076 + - 0xE0822003 # ADD R2, R2, R3 - 0x29CE50 + 0x7691A8 = 0xA05FF8 + - 0xED921B00 # VLDR D1, [R2] + - 0xEEB51B40 # VCMP.F64 D1, #0.0 + - 0xEEF1FA10 # VMRS APSR_nzcv, FPSCR + - 0x1EB00B41 # VMOVNE.F64 D0, D1 + - 0xE12FFF11 # BX R1 + - + type: bytes + main_offset: 0xA05FF8 + value_type: double + value: 0 +ALL_FPS: + - + type: write + address: [MAIN, 0xA05FF8] + value_type: double + value: 0.001 diff --git a/SaltySD/plugins/FPSLocker/patches/0100ABE0121F8000/C1A74A28CBF48C3C.yaml b/SaltySD/plugins/FPSLocker/patches/0100ABE0121F8000/C1A74A28CBF48C3C.yaml new file mode 100644 index 0000000..33fbf7b --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100ABE0121F8000/C1A74A28CBF48C3C.yaml @@ -0,0 +1,34 @@ +# Kingdom Rush Origins 4.2.27.1 +# BID: C1A74A28CBF48C3C + +MASTER_WRITE: + - # REF: vtable with string "getAverageDelta", search inside that vtable "sleep", it's above actual function, patch BLX X1 inside that function + type: bytes + main_offset: 0xF5514 + value_type: uint32 + value: 0xEB069E4D # BL 0x29CE50 + - + type: bytes + main_offset: 0x29CE50 # Code cave + value_type: uint32 + value: + - 0xE24F2008 # SUB R2, PC, #8 + - 0xE30931A8 # MOVW R3, #0x91A8 + - 0xE3403076 # MOVT R3, #0x0076 + - 0xE0822003 # ADD R2, R2, R3 - 0x29CE50 + 0x7691A8 = 0xA05FF8 + - 0xED921B00 # VLDR D1, [R2] + - 0xEEB51B40 # VCMP.F64 D1, #0.0 + - 0xEEF1FA10 # VMRS APSR_nzcv, FPSCR + - 0x1EB00B41 # VMOVNE.F64 D0, D1 + - 0xE12FFF11 # BX R1 + - + type: bytes + main_offset: 0xA05FF8 + value_type: double + value: 0 +ALL_FPS: + - + type: write + address: [MAIN, 0xA05FF8] + value_type: double + value: 0.001 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100B36008F90000/E97CE4B17DED638D.yaml b/SaltySD/plugins/FPSLocker/patches/0100B36008F90000/E97CE4B17DED638D.yaml new file mode 100644 index 0000000..24a6bea --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100B36008F90000/E97CE4B17DED638D.yaml @@ -0,0 +1,28 @@ +# INAZUMA ELEVEN: Victory Road 7.1.0 +# BID: E97CE4B17DED638D + +DECLARATIONS: + - + type: variable + name: fps_target + value_type: float + default_value: 30 + evaluate: FPS_TARGET +MASTER_WRITE: + # Dynamic Resolution FPS Target + ## REF: 62 02 23 1E 21 18 22 1E, ucvtf + fdiv + - + type: asm_a64 + main_offset: 0xCC3308 + instructions: [ + [adrp, x9, $fps_target], + [ldr, s1, [x9, $fps_target]] + ] +ALL_FPS: + # Disable FPS Lock + ## REF: 20 01 00 A9 00 01 63 9E, second LDRB below that, IDA will show address after full analyze + - + type: write + address: [MAIN, 0x3C34237] + value_type: uint8 + value: 0 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100B36008F90000/FC6538F6244CA7D5.yaml b/SaltySD/plugins/FPSLocker/patches/0100B36008F90000/FC6538F6244CA7D5.yaml new file mode 100644 index 0000000..9863938 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100B36008F90000/FC6538F6244CA7D5.yaml @@ -0,0 +1,28 @@ +# INAZUMA ELEVEN: Victory Road 7.1.2 +# BID: FC6538F6244CA7D5 + +DECLARATIONS: + - + type: variable + name: fps_target + value_type: float + default_value: 30 + evaluate: FPS_TARGET +MASTER_WRITE: + # Dynamic Resolution FPS Target + ## REF: 62 02 23 1E 21 18 22 1E, ucvtf + fdiv + - + type: asm_a64 + main_offset: 0xCC4238 + instructions: [ + [adrp, x9, $fps_target], + [ldr, s1, [x9, $fps_target]] + ] +ALL_FPS: + # Disable FPS Lock + ## REF: 20 01 00 A9 00 01 63 9E, second LDRB below that, IDA will show address after full analyze + - + type: write + address: [MAIN, 0x3C35237] + value_type: uint8 + value: 0 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100C520268DE000/E9E041CDF870F33C.yaml b/SaltySD/plugins/FPSLocker/patches/0100C520268DE000/E9E041CDF870F33C.yaml new file mode 100644 index 0000000..c13ec4c --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100C520268DE000/E9E041CDF870F33C.yaml @@ -0,0 +1,11 @@ +# 亰都ザナドゥ -桜花幻舞- 1.0.4 +# BID: E9E041CDF870F33C + +ALL_FPS: + # Used to set min delta timing for various parts of game + # REF: C9 03 80 52 first result, look where is written + - + type: evaluate_write + address: [MAIN, 0x7E4810, 0x2C] + value_type: uint32 + value: FPS_TARGET \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100D20027AB6000/45BFC9E681BE8A02.yaml b/SaltySD/plugins/FPSLocker/patches/0100D20027AB6000/45BFC9E681BE8A02.yaml new file mode 100644 index 0000000..d2f2a81 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100D20027AB6000/45BFC9E681BE8A02.yaml @@ -0,0 +1,11 @@ +# 쿄토 재너두 -앵화환무- 1.0.3 +# BID: 45BFC9E681BE8A02 + +ALL_FPS: + # Used to set min delta timing for various parts of game + # REF: C9 03 80 52 first result, look where is written + - + type: evaluate_write + address: [MAIN, 0x7DB820, 0x2C] + value_type: uint32 + value: FPS_TARGET \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100E95004038000/12A2634F01346F21.yaml b/SaltySD/plugins/FPSLocker/patches/0100E95004038000/12A2634F01346F21.yaml new file mode 100644 index 0000000..2141bce --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100E95004038000/12A2634F01346F21.yaml @@ -0,0 +1,168 @@ +# Xenoblade Chronicles 2 3.0.0 +# BID: 12A2634F01346F21 + +DECLARATIONS: + - + type: variable + name: last_tick + value_type: uint64 + default_value: 0 + - + type: variable + name: game_speed + value_type: float + default_value: 0.03333333333 + - + type: variable + name: min_delta + value_type: float + default_value: 0.03333333333 + evaluate: "1 / FPS_TARGET" + - + type: variable + name: max_delta + value_type: float + default_value: 30 + evaluate: "FPS_TARGET / 2" + - + type: variable + name: dr_target + value_type: float + default_value: 0.0166666666 + evaluate: "(1 / FPS_TARGET) / VSYNC_TARGET * 0.96" + - + type: const + name: microseconds_in_sec + value: 1000000 + - + type: const + name: nano_in_micro + value: 1000 + - + type: code + name: dynamicSpeed + instructions: [ + [stp, x29, x30, [sp, -16], "!"], + [mov, x29, sp], + [mrs, x0, cntpct_el0], + [adrp, x2, $last_tick], + [ldr, x1, [x2, $last_tick]], + [str, x0, [x2, $last_tick]], + [cbz, x1, :goto3], + [sub, x0, x0, x1], + [bl, _convertTickToTimeSpan()], + [adrp, x1, $max_delta], + [ldr, s2, [x1, $max_delta]], + [mov, w1, $nano_in_micro], + [udiv, x0, x0, x1], + [ucvtf, s0, x0], + [mov, w1, $microseconds_in_sec], + [movk, w1, $microseconds_in_sec, 16], + [ucvtf, s1, w1], + [b, :goto2], + :goto4, [adrp, x0, 0xb90000], + [ldr, x0, [x0, 0xd0]], # REF: F4 03 00 AA 88 22 47 39 09 12 80 52, adrp + ldr below it + [cbz, x0, :goto3], + [str, s0, [x0, 0x78]], + [str, s0, [x0, 0x7c]], + [adrp, x0, 0xc23000], # REF: 29 01 40 F9 1F 01 00 F1 24 19 40 FA, two results, the one that has no RET soon after this, look at first adrp + ldr above it + [ldr, x0, [x0, 0x2c8]], + [str, s0, [x0, 0x80]], + [adrp, x0, $game_speed], + [str, s0, [x0, $game_speed]], + [b, :goto3], + :goto5, [fmov, s1, 1.0], + [fdiv, s2, s1, s2], + [fcmp, s0, s2], + [b.lt, :goto6], + [fmov, s0, s2], + [b, :goto4], + :goto6, [adrp, x0, $min_delta], + [ldr, s2, [x0, $min_delta]], + [fcmp, s0, s2], + [b.hi, :goto4], + [fmov, s0, s2], + [b, :goto4], + :goto2, [fdiv, s0, s0, s1], + [b, :goto5], + :goto3, [mov, w8, 0x21a0], + [ldp, x29, x30, [sp], 16], + [ret], + ] +MASTER_WRITE: + # Dynamic speed + # Jump before pushing frame + - + type: asm_a64 + main_offset: 0x7009E4 + instructions: [ + [bl, _dynamicSpeed()] + ] + # Patch wind speed to take game speed + # REF: C6 09 26 1E C8 08 23 1E C9 08 21 1E CA 08 22 1E, adrp + ldr above + - + type: asm_a64 + main_offset: 0x748658 + instructions: [ + [adrp, x8, $game_speed], + [ldr, s6, [x8, $game_speed]] + ] + # Redirect DR timing + # REF: 74 02 40 B9 08 FD 66 D3 08 01 23 1E, LDR X8, [X8,#0xD0] below it + - + type: asm_a64 + main_offset: 0x6AAABC + instructions: [ + [adrp, x8, $dr_target], + [ldr, s0, [x8, $dr_target]] + ] +ALL_FPS: + # REF: 0A 01 40 B9 00 01 00 B9, adrp + ldr above + - + type: evaluate_write + address: [MAIN, 0xB75C40] + value_type: uint32 + value: ["VSYNC_TARGET", "VSYNC_TARGET"] + # Cutscenes in 30 FPS + # REF: 09 41 00 91 08 E1 00 91 3F D8 09 A9, any result, first STR XZR above is the offset we want + - + type: compare + compare_type: "==" + compare_value_type: uint8 + compare_value: 1 + compare_address: [MAIN, 0xBD8F40] + value_type: refresh_rate + value: 60 + - + type: compare + compare_type: "==" + compare_value_type: uint8 + compare_value: 1 + compare_address: [MAIN, 0xBD8F40] + address: [VARIABLE, min_delta] + value: 0.0333333333 + - + type: compare + compare_type: "==" + compare_value_type: uint8 + compare_value: 1 + compare_address: [MAIN, 0xBD8F40] + address: [VARIABLE, max_delta] + value: 30 + - + type: compare + compare_type: "==" + compare_value_type: uint8 + compare_value: 1 + compare_address: [MAIN, 0xBD8F40] + address: [MAIN, 0xB75C40] # VSYNC TARGET + value_type: uint32 + value: [2, 2] + - + type: compare + compare_type: "==" + compare_value_type: uint8 + compare_value: 1 + compare_address: [MAIN, 0xBD8F40] + address: [VARIABLE, dr_target] + value: 0.0166666666 diff --git a/SaltySD/plugins/FPSLocker/patches/0100EBE020BC0000/E27471D00147BA8C.yaml b/SaltySD/plugins/FPSLocker/patches/0100EBE020BC0000/E27471D00147BA8C.yaml new file mode 100644 index 0000000..1678706 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100EBE020BC0000/E27471D00147BA8C.yaml @@ -0,0 +1,37 @@ +# EVERYBODY'S GOLF: Hot Shots EUR 1.1.11 +# BID: E27471D00147BA8C +# Changed frametime target value math formula because default one sucks at 60 FPS target + +DECLARATIONS: + - + type: variable + name: dr_frametime_max + value_type: double + default_value: 40 + evaluate: "0.9 * FRAMETIME_TARGET" + - + type: variable + name: dr_frametime_min + value_type: double + default_value: 33.3333333333 + evaluate: "(0.9 * FRAMETIME_TARGET) - 6" +MASTER_WRITE: + # REF: 0a 00 a4 d2 8a 08 e8 f2 41 01 67 9e + - + type: asm_a64 + main_offset: 0x39A2058 + instructions: [ + [adrp, x10, $dr_frametime_max], + [ldr, d1, [x10, $dr_frametime_max]], + [nop] + ] + # REF: 00 0d 40 fd 0a 00 b8 d2, result offset + 4 + - + type: asm_a64 + main_offset: 0x39A212C + instructions: [ + [adrp, x10, $dr_frametime_min], + [ldr, d1, [x10, $dr_frametime_min]], + [nop], + [nop] + ] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100F3400332C000/FEEE7AFA8A1541BD.yaml b/SaltySD/plugins/FPSLocker/patches/0100F3400332C000/FEEE7AFA8A1541BD.yaml new file mode 100644 index 0000000..03dbb69 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100F3400332C000/FEEE7AFA8A1541BD.yaml @@ -0,0 +1,168 @@ +# Xenoblade2 3.0.0 +# BID: FEEE7AFA8A1541BD + +DECLARATIONS: + - + type: variable + name: last_tick + value_type: uint64 + default_value: 0 + - + type: variable + name: game_speed + value_type: float + default_value: 0.03333333333 + - + type: variable + name: min_delta + value_type: float + default_value: 0.03333333333 + evaluate: "1 / FPS_TARGET" + - + type: variable + name: max_delta + value_type: float + default_value: 30 + evaluate: "FPS_TARGET / 2" + - + type: variable + name: dr_target + value_type: float + default_value: 0.0166666666 + evaluate: "(1 / FPS_TARGET) / VSYNC_TARGET * 0.96" + - + type: const + name: microseconds_in_sec + value: 1000000 + - + type: const + name: nano_in_micro + value: 1000 + - + type: code + name: dynamicSpeed + instructions: [ + [stp, x29, x30, [sp, -16], "!"], + [mov, x29, sp], + [mrs, x0, cntpct_el0], + [adrp, x2, $last_tick], + [ldr, x1, [x2, $last_tick]], + [str, x0, [x2, $last_tick]], + [cbz, x1, :goto3], + [sub, x0, x0, x1], + [bl, _convertTickToTimeSpan()], + [adrp, x1, $max_delta], + [ldr, s2, [x1, $max_delta]], + [mov, w1, $nano_in_micro], + [udiv, x0, x0, x1], + [ucvtf, s0, x0], + [mov, w1, $microseconds_in_sec], + [movk, w1, $microseconds_in_sec, 16], + [ucvtf, s1, w1], + [b, :goto2], + :goto4, [adrp, x0, 0xb90000], + [ldr, x0, [x0, 0xd0]], # REF: F4 03 00 AA 88 22 47 39 09 12 80 52, adrp + ldr below it + [cbz, x0, :goto3], + [str, s0, [x0, 0x78]], + [str, s0, [x0, 0x7c]], + [adrp, x0, 0xc23000], # REF: 29 01 40 F9 1F 01 00 F1 24 19 40 FA, two results, the one that has no RET soon after this, look at first adrp + ldr above it + [ldr, x0, [x0, 0x2c8]], + [str, s0, [x0, 0x80]], + [adrp, x0, $game_speed], + [str, s0, [x0, $game_speed]], + [b, :goto3], + :goto5, [fmov, s1, 1.0], + [fdiv, s2, s1, s2], + [fcmp, s0, s2], + [b.lt, :goto6], + [fmov, s0, s2], + [b, :goto4], + :goto6, [adrp, x0, $min_delta], + [ldr, s2, [x0, $min_delta]], + [fcmp, s0, s2], + [b.hi, :goto4], + [fmov, s0, s2], + [b, :goto4], + :goto2, [fdiv, s0, s0, s1], + [b, :goto5], + :goto3, [mov, w8, 0x21a0], + [ldp, x29, x30, [sp], 16], + [ret], + ] +MASTER_WRITE: + # Dynamic speed + # REF: 08 34 84 52 75 02 08 8B 08 1A 84 52 + - + type: asm_a64 + main_offset: 0x7009E4 + instructions: [ + [bl, _dynamicSpeed()] + ] + # Patch wind speed to take game speed + # REF: C6 09 26 1E C8 08 23 1E C9 08 21 1E CA 08 22 1E, adrp + ldr above + - + type: asm_a64 + main_offset: 0x748658 + instructions: [ + [adrp, x8, $game_speed], + [ldr, s6, [x8, $game_speed]] + ] + # Redirect DR timing + # REF: 74 02 40 B9 08 FD 66 D3 08 01 23 1E, LDR X8, [X8,#0xD0] below it + - + type: asm_a64 + main_offset: 0x6AAABC + instructions: [ + [adrp, x8, $dr_target], + [ldr, s0, [x8, $dr_target]] + ] +ALL_FPS: + # REF: 0A 01 40 B9 00 01 00 B9, adrp + ldr above + - + type: evaluate_write + address: [MAIN, 0xB75C40] + value_type: uint32 + value: ["VSYNC_TARGET", "VSYNC_TARGET"] + # Cutscenes in 30 FPS + # REF: 09 41 00 91 08 E1 00 91 3F D8 09 A9, any result, first STR XZR above is the offset we want + - + type: compare + compare_type: "==" + compare_value_type: uint8 + compare_value: 1 + compare_address: [MAIN, 0xBD8F40] + value_type: refresh_rate + value: 60 + - + type: compare + compare_type: "==" + compare_value_type: uint8 + compare_value: 1 + compare_address: [MAIN, 0xBD8F40] + address: [VARIABLE, min_delta] + value: 0.0333333333 + - + type: compare + compare_type: "==" + compare_value_type: uint8 + compare_value: 1 + compare_address: [MAIN, 0xBD8F40] + address: [VARIABLE, max_delta] + value: 30 + - + type: compare + compare_type: "==" + compare_value_type: uint8 + compare_value: 1 + compare_address: [MAIN, 0xBD8F40] + address: [MAIN, 0xB75C40] # VSYNC TARGET + value_type: uint32 + value: [2, 2] + - + type: compare + compare_type: "==" + compare_value_type: uint8 + compare_value: 1 + compare_address: [MAIN, 0xBD8F40] + address: [VARIABLE, dr_target] + value: 0.0166666666 diff --git a/SaltySD/plugins/FPSLocker/patches/0100F9A01B0A2000/EB53655DBA49C6C8.yaml b/SaltySD/plugins/FPSLocker/patches/0100F9A01B0A2000/EB53655DBA49C6C8.yaml new file mode 100644 index 0000000..b890668 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100F9A01B0A2000/EB53655DBA49C6C8.yaml @@ -0,0 +1,36 @@ +# Nobunaga's Ambition: Awakening 1.1.1 +# BID: EB53655DBA49C6C8 +# Cursor speed is tied to framerate + +DECLARATIONS: + - + type: variable + name: fps_target + value_type: uint32 + default_value: 30 + evaluate: FPS_TARGET + - + type: variable + name: frametime_target + value_type: uint32 + default_value: 33 + evaluate: 1000 / FPS_LOCK_TARGET + - + type: variable + name: lock30 + value_type: uint32 + default_value: 1 + evaluate: VSYNC_TARGET - 1 +MASTER_WRITE: + # Min delta based on vsync + fps lock outside of cutscenes + # REF: 28 00 80 52 68 D2 00 B9 C8 03 80 D2 28 04 C0 F2 + - + type: asm_a64 + main_offset: 0x1991950 + instructions: [ + [adrp, x8, $fps_target], + [ldr, w1, [x8, $lock30]], + [ldp, w8, w9, [x8]], + [str, w1, [x19, 0xD0]], + [stp, w8, w9, [x21]] + ] \ No newline at end of file diff --git a/SaltySD/saltynx_bootstrap.elf b/SaltySD/saltynx_bootstrap.elf new file mode 100644 index 0000000..288a02c Binary files /dev/null and b/SaltySD/saltynx_bootstrap.elf differ diff --git a/SaltySD/saltysd_bootstrap32_3k.elf b/SaltySD/saltynx_bootstrap32_3k.elf similarity index 84% rename from SaltySD/saltysd_bootstrap32_3k.elf rename to SaltySD/saltynx_bootstrap32_3k.elf index 25887d5..b6673d1 100644 Binary files a/SaltySD/saltysd_bootstrap32_3k.elf and b/SaltySD/saltynx_bootstrap32_3k.elf differ diff --git a/SaltySD/saltysd_bootstrap32_5k.elf b/SaltySD/saltynx_bootstrap32_5k.elf similarity index 84% rename from SaltySD/saltysd_bootstrap32_5k.elf rename to SaltySD/saltynx_bootstrap32_5k.elf index 6564afb..69f8d9c 100644 Binary files a/SaltySD/saltysd_bootstrap32_5k.elf and b/SaltySD/saltynx_bootstrap32_5k.elf differ diff --git a/SaltySD/saltynx_core.elf b/SaltySD/saltynx_core.elf new file mode 100644 index 0000000..51c3d6c Binary files /dev/null and b/SaltySD/saltynx_core.elf differ diff --git a/SaltySD/saltynx_core32.elf b/SaltySD/saltynx_core32.elf new file mode 100644 index 0000000..56fb848 Binary files /dev/null and b/SaltySD/saltynx_core32.elf differ diff --git a/SaltySD/saltysd_bootstrap.elf b/SaltySD/saltysd_bootstrap.elf deleted file mode 100644 index 8c4577b..0000000 Binary files a/SaltySD/saltysd_bootstrap.elf and /dev/null differ diff --git a/SaltySD/saltysd_core.elf b/SaltySD/saltysd_core.elf deleted file mode 100644 index b940b7c..0000000 Binary files a/SaltySD/saltysd_core.elf and /dev/null differ diff --git a/SaltySD/saltysd_core32.elf b/SaltySD/saltysd_core32.elf deleted file mode 100644 index cd79be2..0000000 Binary files a/SaltySD/saltysd_core32.elf and /dev/null differ diff --git a/atmosphere/contents/0000000000534C56/exefs.nsp b/atmosphere/contents/0000000000534C56/exefs.nsp index ddc81d4..24a9989 100644 Binary files a/atmosphere/contents/0000000000534C56/exefs.nsp and b/atmosphere/contents/0000000000534C56/exefs.nsp differ diff --git a/atmosphere/contents/0000000000534C56/toolbox.json b/atmosphere/contents/0000000000534C56/toolbox.json index a35660e..b7c3fa4 100644 --- a/atmosphere/contents/0000000000534C56/toolbox.json +++ b/atmosphere/contents/0000000000534C56/toolbox.json @@ -2,5 +2,5 @@ "name": "SaltyNX", "tid": "0000000000534C56", "requires_reboot": true, - "version": "1.8.1" + "version": "1.9.2" } diff --git a/atmosphere/contents/00FF0000636C6BFF/exefs.nsp b/atmosphere/contents/00FF0000636C6BFF/exefs.nsp index 2e5cc23..a9380fe 100644 Binary files a/atmosphere/contents/00FF0000636C6BFF/exefs.nsp and b/atmosphere/contents/00FF0000636C6BFF/exefs.nsp differ diff --git a/atmosphere/contents/690000000000000D/exefs.nsp b/atmosphere/contents/690000000000000D/exefs.nsp index 8b23a4e..0c91dde 100644 Binary files a/atmosphere/contents/690000000000000D/exefs.nsp and b/atmosphere/contents/690000000000000D/exefs.nsp differ diff --git a/atmosphere/contents/690000000000000D/flags/boot2.flag b/atmosphere/contents/690000000000000D/flags/boot2.flag new file mode 100644 index 0000000..e69de29 diff --git a/atmosphere/kips/hoc.kip b/atmosphere/kips/hoc.kip index 49270b0..afe1590 100644 Binary files a/atmosphere/kips/hoc.kip and b/atmosphere/kips/hoc.kip differ diff --git a/atmosphere/package3 b/atmosphere/package3 index 30329cf..d6c7819 100644 Binary files a/atmosphere/package3 and b/atmosphere/package3 differ diff --git a/bootloader/payloads/Lockpick_RCM.bin b/bootloader/payloads/Lockpick_RCM.bin index 87a85db..359e6a4 100644 Binary files a/bootloader/payloads/Lockpick_RCM.bin and b/bootloader/payloads/Lockpick_RCM.bin differ diff --git a/bootloader/sys/nyx.bin b/bootloader/sys/nyx.bin index 01ca473..461299a 100644 Binary files a/bootloader/sys/nyx.bin and b/bootloader/sys/nyx.bin differ diff --git a/config/aio-switch-updater/custom_packs.json b/config/aio-switch-updater/custom_packs.json index 9ac92ee..3a57bdb 100644 --- a/config/aio-switch-updater/custom_packs.json +++ b/config/aio-switch-updater/custom_packs.json @@ -1,6 +1,6 @@ { "ams": { - "[PACK] UltraNX 3.0|R2": "https://github.com/Ultra-NX/UltraNX/releases/latest/download/Ultra.zip" + "[PACK] UltraNX 3.0|R3+": "https://github.com/Ultra-NX/UltraNX/releases/latest/download/Ultra.zip" }, "misc": { "Refresh AIO": "https://github.com/Ultra-NX/Ultra-Resources/releases/download/Homebrews/AIO.zip" diff --git a/config/status-monitor/lang/ru.json b/config/status-monitor/lang/ru.json index 1734c80..735c347 100644 --- a/config/status-monitor/lang/ru.json +++ b/config/status-monitor/lang/ru.json @@ -1,14 +1,14 @@ { "Status Monitor": "Status Monitor", "Modes": "Режимы", - "Modes   Configure": "Режимы   Настроить", + "Modes   Configure": "Режимы   Настройка", "Full": "Полный", "Mini": "Мини", "Micro": "Микро", "FPS Graph": "График FPS", "FPS Counter": "Счётчик FPS", "Game Resolutions": "Разрешения игры", - "Other": "Прочее", + "Other": "Другое", "Battery/Charger": "Аккумулятор/Зарядка", "Miscellaneous": "Разное", "CPU Usage": "Загрузка CPU", @@ -21,33 +21,33 @@ "Core 2 ": "Ядро 2 ", "Core 3 ": "Ядро 3 ", "Load": "Нагрузка", - "Total\nApplication\nApplet\nSystem\nSystem Unsafe": "Всего\nПриложение\nАпплет\nСистема\nСистема (небезопасно)", + "Total\nApplication\nApplet\nSystem\nSystem Unsafe": "Общая\nПриложение\nАпплет\nСистема\nСистем. (небез.)", "Board": "Плата", - "Battery Power Flow": "Поток энергии аккумулятора", + "Battery Power Flow": "Мощность аккумулятора", "\nTemperatures": "\nТемпературы", "SoC\nPCB\nSkin": "SoC\nPCB\nSkin", - "Fan Rotation Level": "Уровень вращения вентилятора", + "Fan Rotation Level": "Скорость вентилятора", "Game": "Игра", "PFPS ": "PFPS ", "FPS ": "FPS ", - "Resolutions ": "Разрешения ", + "Resolutions ": "Разрешение ", "Read Speed ": "Скорость чтения ", "Press ": "Нажмите ", " to Exit": " для выхода", "Depth": "Глубина", - "Viewport": "Viewport", + "Viewport": "Вывод", "Game is not running\nor it's incompatible.": "Игра не запущена\nили несовместима.", - "Battery Stats": "Статистика аккумулятора", - "Actual Capacity": "Фактическая ёмкость", - "Designed Capacity": "Номинальная ёмкость", + "Battery Stats": "Состояние аккумулятора", + "Actual Capacity": "Текущая ёмкость", + "Designed Capacity": "Расчётная ёмкость", "Temperature": "Температура", - "Raw Charge": "Сырой заряд", - "Age": "Возраст", + "Raw Charge": "Заряд (сырой)", + "Age": "Износ", "Voltage": "Напряжение", - "Current Flow": "Ток", + "Current Flow": "Сила тока", "Power Flow": "Мощность", "Remaining Time": "Оставшееся время", - "Charger Stats": "Статистика зарядки", + "Charger Stats": "Состояние зарядки", "Input Current Limit": "Лимит входного тока", "VBUS Current Limit": "Лимит тока VBUS", "Voltage Limit": "Лимит напряжения", @@ -61,61 +61,64 @@ "NVJPG": "NVJPG", "Network": "Сеть", "Type: Wi-Fi": "Тип: Wi-Fi", - "Press Y to show password": "Нажмите Y, чтобы показать пароль", + "Press Y to show password": "Нажмите Y для показа пароля", "Type: Ethernet": "Тип: Ethernet", "Type: Not connected": "Тип: Не подключено", "CPU\nGPU\nRAM\nSOC\nPCB\nSKN": "CPU\nGPU\nRAM\nSOC\nPCB\nSKN", - "Elements   Move Down   Move Up": "Элементы   Вниз   Вверх", + "Elements   Move Down   Move Up": "Элементы   Вниз   Вверх", "Transparent": "Прозрачный", "Opaque": "Непрозрачный", - "Alpha": "Альфа", + "Alpha": "Альфа-канал", "Pretty": "Красивый", "Compact": "Компактный", - "FileSafe": "FileSafe", + "FileSafe": "Безопасный", "Day+Time": "День+Время", "Date+Time(s)": "Дата+Время(с)", "Date+Time AM/PM": "Дата+Время AM/PM", "Date+Time(s) AM/PM": "Дата+Время(с) AM/PM", - "Date+Time EU": "Дата+Время EU", - "Date+Time EU AM/PM": "Дата+Время EU AM/PM", - "Date+Time(s) EU AM/PM": "Дата+Время(с) EU AM/PM", + "Date+Time EU": "Дата+Время (EU)", + "Date+Time EU AM/PM": "Дата+Время (EU) AM/PM", + "Date+Time(s) EU AM/PM": "Дата+Время(с) (EU) AM/PM", "Date+Time ISO": "Дата+Время ISO", "Time 24h": "Время 24ч", "Time AM/PM": "Время AM/PM", "Time(s) 24h": "Время(с) 24ч", "Time(s) AM/PM": "Время(с) AM/PM", - "Date US": "Дата US", - "Date EU": "Дата EU", + "Date US": "Дата (US)", + "Date EU": "Дата (EU)", "Date ISO": "Дата ISO", - "Date Short": "Краткая дата", + "Date Short": "Короткая дата", "DTC Format": "Формат DTC", "Toggles": "Переключатели", - "Info": "Показать информацию", - "Disable Screenshots": "Отключить скриншоты", - "Real Freqs": "Реальные частоты", - "Deltas": "Дельты", - "Target Freqs": "Целевые частоты", + "Info": "Показывать инфо", + "Disable Screenshots": "Откл. скриншоты", + "Real Freqs": "Реал. частоты", + "Deltas": "Дельта", + "Target Freqs": "Цел. частоты", "FPS": "FPS", - "RES": "РАЗР.", + "RES": "RES", "Read Speed": "Скорость чтения", "Real Frequencies": "Реальные частоты", "Real Voltages": "Реальные напряжения", "Full CPU": "Полный CPU", "VDDQ": "VDDQ", "VDD2": "VDD2", + "Stacked VDD2/VDDQ": "VDD2/VDDQ (стек)", "Full Resolution": "Полное разрешение", "SOC Voltage": "Напряжение SOC", - "RAM Load CPU/GPU": "Нагрузка RAM CPU/GPU", - "Use DTC Symbol": "Использовать символ DTC", - "Use Dynamic Colors": "Использовать динамические цвета", + "Stacked Fan/SOC": "Вентилятор/SOC (стек)", + "RAM Load CPU/GPU": "Загрузка RAM CPU/GPU", + "Stacked RAM Load CPU/GPU": "Загрузка RAM CPU/GPU (стек)", + "Use DTC Symbol": "Исп. символ DTC", + "Use Dynamic Colors": "Исп. динамические цвета", "Sleep Exit": "Выход из сна", "Configuration": "Конфигурация", "Refresh Rate": "Частота обновления", - "Frame Padding": "Отступ кадра", + "Frame Padding": "Отступ рамки", " Font Size": " Размер шрифта", "Font Sizes": "Размеры шрифта", - "Handheld Font Size": "Размер шрифта в портативном режиме", - "Docked Font Size": "Размер шрифта в док-режиме", + "Handheld Font Size": "Шрифт (портативный)", + "Docked Font Size": "Шрифт (в доке)", "Black": "Чёрный", "Dark Gray": "Тёмно-серый", "Gray": "Серый", @@ -137,13 +140,13 @@ "Dark Purple": "Тёмно-фиолетовый", "Purple": "Фиолетовый", "Light Purple": "Светло-фиолетовый", - "Violet": "Фиолетовый", + "Violet": "Лиловый", "Orange": "Оранжевый", "Yellow": "Жёлтый", "Light Yellow": "Светло-жёлтый", "Teal": "Бирюзовый", - "Cyan": "Голубой", - "Light Cyan": "Светло-голубой", + "Cyan": "Циан", + "Light Cyan": "Светлый циан", "Magenta": "Пурпурный", "Hot Pink": "Ярко-розовый", "Brown": "Коричневый", @@ -162,29 +165,29 @@ "Rounded Line": "Скруглённая линия", "Perfect Line": "Идеальная линия", " Color": " Цвет", - " Alpha": " Прозрачность", + " Alpha": " Альфа", "Category Color": "Цвет категории", "Category Color 1": "Цвет категории 1", "Category Color 2": "Цвет категории 2", "Separator Color": "Цвет разделителя", "Elements": "Элементы", "Text Alignment": "Выравнивание текста", - "Vertical Position": "Вертикальная позиция", - "Horizontal Position": "Горизонтальная позиция", - "Left": "Слева", - "Right": "Справа", + "Vertical Position": "Вертикальное положение", + "Horizontal Position": "Горизонтальное положение", + "Left": "По левому краю", + "Right": "По правому краю", "Top": "Сверху", "Center": "По центру", "Bottom": "Снизу", "FPS Counter Color": "Цвет счётчика FPS", "FPS Counter Alpha": "Прозрачность счётчика FPS", "Border Color": "Цвет границы", - "Dashed Line Color": "Цвет пунктирной линии", - "Dashed Line Alpha": "Прозрачность пунктирной линии", - "Max FPS Text Color": "Цвет текста макс. FPS", - "Min FPS Text Color": "Цвет текста мин. FPS", + "Dashed Line Color": "Цвет пунктира", + "Dashed Line Alpha": "Прозрачность пунктира", + "Max FPS Text Color": "Цвет макс. FPS", + "Min FPS Text Color": "Цвет мин. FPS", "Main Line Color": "Цвет основной линии", - "Rounded Line Color": "Цвет скруглённой линии", + "Rounded Line Color": "Цвет скругл. линии", "Perfect Line Color": "Цвет идеальной линии", "CPU": "CPU", "GPU": "GPU", @@ -202,66 +205,66 @@ "PCB ": "PCB ", "Skin ": "Skin ", "Border Thickness": "Толщина границы", - "Corner Radius": "Радиус угла", - "Element Padding": "Отступ элемента", - "Horizontal Padding": "Горизонтальный отступ", - "Vertical Padding": "Вертикальный отступ", + "Corner Radius": "Скругление углов", + "Element Padding": "Внутр. отступ эл-та", + "Horizontal Padding": "Гориз. отступ", + "Vertical Padding": "Вертик. отступ", "Label Padding": "Отступ метки", "Paddings": "Отступы", - "Spacing": "Интервал", - "Stacked Spacing": "Интервал стека", + "Spacing": "Промежутки", + "Stacked Spacing": "Промежуток (стек)", "Sample Rate": "Частота выборки", - "Touch Move Delay": "Задержка перем. касанием", - "Button Move Delay": "Задержка перем. кнопкой", - "Mode Combo": "Комбинация режима", + "Touch Move Delay": "Задержка касания", + "Button Move Delay": "Задержка кнопок", + "Mode Combo": "Комб. режима", "None": "Нет", - "Global": "Общие", + "Global": "Глобальный", "Temperatures": "Температуры", "System": "Система", - "DTC Format 1": "Формат DTC 1", - "DTC Format 2": "Формат DTC 2", + "DTC Format 1": "DTC Формат 1", + "DTC Format 2": "DTC Формат 2", "Target Frequencies": "Целевые частоты", - "Frequency Deltas": "Дельты частот", + "Frequency Deltas": "Дельта частот", "Labels": "Метки", - "Stacked": "Стопкой", + "Stacked": "Стек", "Handheld": "Портативный", - "Docked": "Док-режим", - "1080p Docked": "1080p док", + "Docked": "В доке", + "1080p Docked": "В доке (1080p)", "Integer FPS": "Целочисленный FPS", - "Use FPS Graph": "Использовать график FPS", + "Use FPS Graph": "Исп. график FPS", "Graph": "График", "Graph Background": "Фон графика", "Graph Border": "Граница графика", - "CW Border Flow": "Поток границы по часовой", + "CW Border Flow": "Поток границы (по ЧС)", "Dynamic Border": "Динамическая граница", "Border Wheel 1": "Колесо границы 1", "Border Wheel 2": "Колесо границы 2", "Border Wheel 3": "Колесо границы 3", - "Border Wheel 3 Deep": "Колесо границы 3 глубокий", + "Border Wheel 3 Deep": "Колесо границы 3 (глуб.)", "Border Wheel 4": "Колесо границы 4", - "Border Wheel 4 Deep": "Колесо границы 4 глубокий", + "Border Wheel 4 Deep": "Колесо границы 4 (глуб.)", "Dynamic Temps": "Динамические темп.", - "Stacked Temps": "Температуры стопкой", + "Stacked Temps": "Темп. (стек)", "CPU/GPU/RAM Temps": "Темп. CPU/GPU/RAM", - "SOC/PCB/Skin Temps": "Темп. SOC/PCB/Skin", + "SOC/PCB/Skin Temps": "Темп. SOC/Плата/Корпус", "CPU Temp": "Темп. CPU", "GPU Temp": "Темп. GPU", "RAM Temp": "Темп. RAM", - "Stacked CPU Temp": "Темп. CPU стопкой", - "Stacked GPU Temp": "Темп. GPU стопкой", - "Stacked RAM Temp": "Темп. RAM стопкой", - "Stacked Full CPU": "Полный CPU стопкой", - "Full CPU Max Core 0-2": "Полный CPU макс. ядро 0-2", + "Stacked CPU Temp": "Темп. CPU (стек)", + "Stacked GPU Temp": "Темп. GPU (стек)", + "Stacked RAM Temp": "Темп. RAM (стек)", + "Stacked Full CPU": "Полный CPU (стек)", + "Full CPU Max Core 0-2": "Полный CPU макс. ядра 0-2", "RAM Bandwidth": "Пропускная способность RAM", - "Stacked RAM Bandwidth": "Пропускная способность RAM стопкой", - "Invert Battery Display": "Инвертировать показ батареи", + "Stacked RAM Bandwidth": "Проп. RAM (стек)", + "Invert Battery Display": "Инвертировать элемент аккумулятора", "Voltage At End": "Напряжение в конце", "Primary Only": "Только основное", "Charcoal": "Угольный", "Cool Gray": "Холодный серый", "Off-White": "Молочно-белый", "Warm White": "Тёплый белый", - "Slate": "Грифельный", + "Slate": "Свинцовый", "Burgundy": "Бордовый", "Maroon": "Тёмно-бордовый", "Crimson": "Малиновый", @@ -278,7 +281,7 @@ "Peach": "Персиковый", "Caramel": "Карамельный", "Sienna": "Сиена", - "Tan": "Рыжевато-коричневый", + "Tan": "Бежевый", "Taupe": "Серо-коричневый", "Sand": "Песочный", "Wheat": "Пшеничный", @@ -297,42 +300,42 @@ "Bright Green": "Ярко-зелёный", "Sage": "Шалфейный", "Seafoam": "Морская пена", - "Seafoam Green": "Зеленоватая пена", + "Seafoam Green": "Зелёная морская пена", "Pale Green": "Бледно-зелёный", "Mint": "Мятный", "Chartreuse": "Шартрёз", "Dark Teal": "Тёмно-бирюзовый", - "Dark Cyan": "Тёмно-голубой", + "Dark Cyan": "Тёмно-циановый", "Cerulean": "Церулеум", "Aqua": "Аквамарин", - "Steel Cyan": "Стальной голубой", + "Steel Cyan": "Стальной циановый", "Navy": "Морской синий", "Cobalt": "Кобальтовый", "Denim": "Джинсовый", - "Slate Navy": "Грифельно-синий", + "Slate Navy": "Свинцовый синий", "Steel Blue": "Стальной синий", "Royal Blue": "Королевский синий", - "Azure": "Лазурно-синий", + "Azure": "Лазурный", "Cornflower": "Васильковый", "Ice Blue": "Ледяной голубой", - "Powder Blue": "Пыльно-голубой", + "Powder Blue": "Пудрово-голубой", "Indigo": "Индиго", - "Indigo Blue": "Индигово-синий", + "Indigo Blue": "Индиго-синий", "Violet Blue": "Сине-фиолетовый", - "Deep Purple": "Насыщенный фиолетовый", + "Deep Purple": "Тёмно-фиолетовый", "Periwinkle": "Барвинковый", "Light Periwinkle": "Светло-барвинковый", "Amethyst": "Аметистовый", - "Mauve": "Розовато-лиловый", - "Muted Mauve": "Приглушённый лиловый", + "Mauve": "Лиловый", + "Muted Mauve": "Приглуш. лиловый", "Lavender": "Лавандовый", "Orchid": "Орхидея", "Plum": "Сливовый", - "Thistle": "Чертополоховый", + "Thistle": "Чертополох", "Dark Magenta": "Тёмно-пурпурный", "Fuchsia": "Фуксия", - "Rose": "Розово-красный", - "Dusty Rose": "Пыльная роза", + "Rose": "Розовый", + "Dusty Rose": "Пыльно-розовый", "Baby Pink": "Нежно-розовый", "Light Pink": "Светло-розовый", "Petal": "Лепестковый", @@ -348,16 +351,16 @@ "Date EU Dash": "Дата EU (-)", "Date EU Slash": "Дата EU (/)", "Date ISO Slash": "Дата ISO (/)", - "Date Short US": "Краткая дата US", - "Date Short EU": "Краткая дата EU", + "Date Short US": "Короткая дата US", + "Date Short EU": "Короткая дата EU", "Date Compact": "Компактная дата", - "Day + Date Short": "День недели + Краткая дата", - "Day + Date Full": "День недели + Полная дата", - "Weekday Short": "День недели кратко", - "Weekday Full": "День недели полностью", - "Month Short": "Месяц кратко", - "Month Full": "Месяц полностью", - "Month + Year": "Месяц + Год", - "Day of Year": "День года", + "Day + Date Short": "День + короткая дата", + "Day + Date Full": "День + полная дата", + "Weekday Short": "День недели (корот.)", + "Weekday Full": "День недели (полн.)", + "Month Short": "Месяц (корот.)", + "Month Full": "Месяц (полн.)", + "Month + Year": "Месяц и год", + "Day of Year": "День в году", "Stop Watch": "Секундомер" -} +} \ No newline at end of file diff --git a/config/sys-con/config.ini b/config/sys-con/config.ini index fbbee5c..891bdd1 100644 --- a/config/sys-con/config.ini +++ b/config/sys-con/config.ini @@ -449,6 +449,28 @@ home=13 lstick_click=11 rstick_click=12 +#[0f0d-00c1] ;Retro-bit SEGA Saturn Wireless 8-Button Arcade +#;Preserves correct Mega Drive 6-button layout in Nintendo Switch Online Mega Drive +#;Keeps NSO suspend menu accessible via Saturn L+R +#;Provides a sensible default for NSO SNES/GBA/GB/NES without per-game remapping: +#; X +#; Switch Y A becomes Saturn L X R +#; B Y B A +#b=2 +#a=8 +#x=1 +#y=3 +#l=4 +#r=7 +#zl=5 +#zr=6 +#minus=9 +#plus=10 +#capture=14 +#home=13 +#lstick_click=11 +#rstick_click=12 + #[0f0d-00c1] ; KIWITATA N64 USB Mini Controller #a=3,10 #l=5 @@ -639,6 +661,20 @@ r=6 minus=7 plus=8 +[0d22-0c20] ;MSI GC20 +b=2 +a=3 +x=4 +y=1 +l=5 +r=6 +zl=7 +zr=8 +minus=9 +plus=10 +lstick_click=11 +rstick_click=12 + [0d22-0c31] ; MSI GC30 V2 USB cable b=2 a=3 @@ -749,6 +785,22 @@ rstick_right=Z rstick_up=Rz rstick_down=-Rz +[06f7-0001] ;Adaptoid +a=1 +b=4 +l=7 +r=8 +plus=9 +zl=10 +dpad_up=11 +dpad_down=12 +dpad_left=13 +dpad_right=14 +rstick_up=2 +rstick_down=6 +rstick_left=5 +rstick_right=3 + [18d1-9400] ;Google Stadia Controller b=1 a=2 @@ -762,6 +814,8 @@ minus=11 plus=12 capture=17 home=18 +lstick_click=14 +rstick_click=15 [2dc8-301c] ;8bitdo Ultimate 2C Wireless Dongle A=1 diff --git a/config/ultrahand/.sounds/FF7.zip b/config/ultrahand/.sounds/FF7.zip new file mode 100644 index 0000000..7668592 Binary files /dev/null and b/config/ultrahand/.sounds/FF7.zip differ diff --git a/config/ultrahand/.sounds/GSNG.zip b/config/ultrahand/.sounds/GSNG.zip new file mode 100644 index 0000000..bd83998 Binary files /dev/null and b/config/ultrahand/.sounds/GSNG.zip differ diff --git a/config/ultrahand/.sounds/Switch 2.zip b/config/ultrahand/.sounds/Switch 2.zip new file mode 100644 index 0000000..fe8f473 Binary files /dev/null and b/config/ultrahand/.sounds/Switch 2.zip differ diff --git a/config/ultrahand/.sounds/default.zip b/config/ultrahand/.sounds/default.zip new file mode 100644 index 0000000..2d35ed2 Binary files /dev/null and b/config/ultrahand/.sounds/default.zip differ diff --git a/config/ultrahand/.sounds/official.zip b/config/ultrahand/.sounds/official.zip new file mode 100644 index 0000000..e14977f Binary files /dev/null and b/config/ultrahand/.sounds/official.zip differ diff --git a/config/ultrahand/config.ini b/config/ultrahand/config.ini index 93c9a2e..9c0fd44 100644 --- a/config/ultrahand/config.ini +++ b/config/ultrahand/config.ini @@ -1,5 +1,6 @@ [ultrahand] clean_version_labels=false +current_sounds=official current_theme=Ultra Paw datetime_format='%a %T' default_lang=en diff --git a/config/ultrahand/lang/ru.json b/config/ultrahand/lang/ru.json index 97c8565..2cc0716 100644 --- a/config/ultrahand/lang/ru.json +++ b/config/ultrahand/lang/ru.json @@ -24,10 +24,10 @@ "HIDDEN": "Скрыто", "HIDE_OVERLAY": "Скрыть оверлей", "HIDE_PACKAGE": "Скрыть пакет", - "LAUNCH_ARGUMENTS": "Параметры запуска", + "LAUNCH_ARGUMENTS": "Аргументы запуска", "FORCE_AMS110_SUPPORT": "Форсировать AMS110+", "QUICK_LAUNCH": "Быстрый запуск", - "BOOT_COMMANDS": "Команды загрузки", + "BOOT_COMMANDS": "Команды запуска", "EXIT_COMMANDS": "Команды выхода", "ERROR_LOGGING": "Журнал ошибок", "COMMANDS": "Команды", @@ -40,73 +40,73 @@ "WIDGET_SETTINGS": "Настройки виджета", "CLOCK": "Часы", "BATTERY": "Аккумулятор", - "SOC_TEMPERATURE": "Темп. SOC", - "PCB_TEMPERATURE": "Темп. PCB", + "SOC_TEMPERATURE": "Температура SOC", + "PCB_TEMPERATURE": "Температура PCB", "BACKDROP": "Фон", "BORDER": "Граница", "DYNAMIC_BORDER": "Динамическая граница", "DYNAMIC_TEMPS": "Динамические температуры", - "CENTER_ALIGNMENT": "По центру", + "CENTER_ALIGNMENT": "Выравнивание по центру", "EXTENDED_BACKDROP": "Расширенный фон", - "MISCELLANEOUS": "Прочее", + "MISCELLANEOUS": "Разное", "INPUT_SETTINGS": "Настройки ввода", - "LAUNCH_COMBOS": "Комбо запуска", - "SWIPE_TO_OPEN": "Свайп для открытия", - "HAPTIC_FEEDBACK": "Виброотклик", - "STICK_NAVIGATION": "Навигация стиком", - "HOLD_DURATION": "Время удержания", + "LAUNCH_COMBOS": "Комбинации запуска", + "SWIPE_TO_OPEN": "Открытие свайпом", + "HAPTIC_FEEDBACK": "Тактильная отдача", + "STICK_NAVIGATION": "Навигация стиками", + "HOLD_DURATION": "Длительность удержания", "FEATURE_SETTINGS": "Настройки функций", "OPAQUE_SCREENSHOTS": "Непрозрачные скриншоты", - "RIGHT_SIDE_MODE": "Режим справа", - "NTP_SYNC_DOWNLOADS": "Загрузки NTP Sync", + "RIGHT_SIDE_MODE": "Режим с правой стороны", + "NTP_SYNC_DOWNLOADS": "Синхронизация NTP при загрузках", "MENU_SETTINGS": "Настройки меню", "PACKAGES_MENU": "Меню пакетов", "USER_GUIDE": "Руководство", - "SHOW_HIDDEN": "Показать скрытые", - "SHOW_DELETE": "Показать удаление", - "SHOW_UNSUPPORTED": "Показать неподдерживаемые", + "SHOW_HIDDEN": "Показывать скрытые", + "SHOW_DELETE": "Показывать удаление", + "SHOW_UNSUPPORTED": "Показывать неподдерживаемые", "PAGE_SWAP": "Смена страницы", "OVERLAY_VERSIONS": "Версии оверлеев", "PACKAGE_VERSIONS": "Версии пакетов", - "CLEAN_VERSIONS": "Скрыть (v)", + "CLEAN_VERSIONS": "Чистые версии", "THEME_SETTINGS": "Настройки темы", "SWITCH_2_STYLE": "Стиль Switch 2", "DYNAMIC_LOGO": "Динамический логотип", "DYNAMIC_TABLES": "Динамические таблицы", "SELECTION_BACKGROUND": "Фон выделения", "SELECTION_TEXT": "Текст выделения", - "SELECTION_VALUE": "Значение", + "SELECTION_VALUE": "Значение выделения", "LIBULTRAHAND_TITLES": "Заголовки libultrahand", "LIBULTRAHAND_VERSIONS": "Версии libultrahand", "PACKAGE_TITLES": "Заголовки пакетов", - "IN_PACKAGE_TITLES": "Внутрипакетные заголовки", - "KEY_COMBO": "Комбинация", + "IN_PACKAGE_TITLES": "Заголовки внутри пакетов", + "KEY_COMBO": "Комб. клавиш", "MODE": "Режим", "LAUNCH_MODES": "Режимы запуска", "LANGUAGE": "Язык", - "OVERLAY_INFO": "Инфо оверлея", - "SOFTWARE_UPDATE": "Обновления", + "OVERLAY_INFO": "Информация об оверлее", + "SOFTWARE_UPDATE": "Обновление ПО", "UPDATE_ULTRAHAND": "Обновить Ultrahand", "SYSTEM": "Система", - "DEVICE_INFO": "О устройстве", + "DEVICE_INFO": "Информация об устройстве", "FIRMWARE": "Прошивка", "BOOTLOADER": "Загрузчик", "HARDWARE": "Оборудование", "MEMORY": "Память", "VENDOR": "Производитель", "MODEL": "Модель", - "STORAGE": "Хранилище", + "STORAGE": "Накопитель", "INCOMPATIBLE_WARNING": "Несовместимо с AMS v1.10+", "OVERLAY_DOES_NOT_EXIST": "Оверлей не найден!", - "SYSTEM_RAM": "ОЗУ системы", - "FREE": "свободно", + "SYSTEM_RAM": "Системная RAM", + "FREE": "FREE", "OVERLAY_MEMORY": "Память оверлея", - "NOT_ENOUGH_MEMORY": "Недостаточно памяти", - "WALLPAPER_SUPPORT_DISABLED": "Обои выключены", - "SOUND_SUPPORT_DISABLED": "Звук выключен", - "WALLPAPER_SUPPORT_ENABLED": "Обои включены", - "SOUND_SUPPORT_ENABLED": "Звук включён", - "EXIT_OVERLAY_SYSTEM": "Выйти из оверлеев", + "NOT_ENOUGH_MEMORY": "Недостаточно памяти.", + "WALLPAPER_SUPPORT_DISABLED": "Поддержка обоев отключена", + "SOUND_SUPPORT_DISABLED": "Поддержка звука отключена", + "WALLPAPER_SUPPORT_ENABLED": "Поддержка обоев включена", + "SOUND_SUPPORT_ENABLED": "Поддержка звука включена", + "EXIT_OVERLAY_SYSTEM": "Выйти из системы оверлеев", "ULTRAHAND_ABOUT": "Ultrahand Overlay — это настраиваемая экосистема оверлеев для команд, оверлеев, горячих клавиш и расширенного взаимодействия с системой.", "ULTRAHAND_CREDITS_START": "Особая благодарность ", "ULTRAHAND_CREDITS_END": " и многим другим. ♥", @@ -114,7 +114,7 @@ "WALLPAPER": "Обои", "THEME": "Тема", "SOUNDS": "Звуки", - "DEFAULT": "стандарт", + "DEFAULT": "по умолчанию", "ROOT_PACKAGE": "Корневой пакет", "SORT_PRIORITY": "Приоритет сортировки", "OPTIONS": "Опции", @@ -123,21 +123,21 @@ "NOTIFICATION_SETTINGS": "Настройки уведомлений", "SILENCE_NOTIFICATIONS": "Отключить уведомления", "STARTUP_NOTIFICATION": "Уведомление при запуске", - "MAX_SLOTS": "Макс. слоты", + "MAX_SLOTS": "Макс. слотов", "API_NOTIFICATIONS": "Уведомления API", "API_TOGGLE_HOTKEY": "Горячая клавиша API", - "DISMISS_NOTIFICATION": "Закрыть уведомление", + "DISMISS_NOTIFICATION": "Отклонить уведомление", "API_TOGGLE": "Переключить API", "CLICK": "клик", "TAP": "тап", - "HOLD_FOR_4S": "удерживать 4 с", + "HOLD_FOR_4S": "удерживать 4с", "ON": "Вкл", "OFF": "Выкл", - "PACKAGE_INFO": "Инфо пакета", + "PACKAGE_INFO": "Информация о пакете", "_TITLE": "Название", "_VERSION": "Версия", "_CREATOR": "Автор(ы)", - "_ABOUT": "О прг.", + "_ABOUT": "О прогр.", "_CREDITS": "Спасибо", "OK": "ОК", "BACK": "Назад", @@ -163,7 +163,7 @@ "DELETE_PACKAGE": "Удалить пакет", "DELETE_OVERLAY": "Удалить оверлей", "SELECTION_IS_EMPTY": "Выбор пуст!", - "FORCED_SUPPORT_WARNING": "Принудительная поддержка опасна", + "FORCED_SUPPORT_WARNING": "Принудительная поддержка может быть опасна.", "TASK_IS_COMPLETE": "Задача выполнена!", "TASK_HAS_FAILED": "Задача провалена", "SUNDAY": "Воскресенье", @@ -204,4 +204,4 @@ "OCT": "Окт", "NOV": "Ноя", "DEC": "Дек" -} +} \ No newline at end of file diff --git a/config/ultrahand/sounds/enter.wav b/config/ultrahand/sounds/enter.wav index 055e93b..d00b45e 100644 Binary files a/config/ultrahand/sounds/enter.wav and b/config/ultrahand/sounds/enter.wav differ diff --git a/config/ultrahand/sounds/exit.wav b/config/ultrahand/sounds/exit.wav index 3d7c0c1..78a8883 100644 Binary files a/config/ultrahand/sounds/exit.wav and b/config/ultrahand/sounds/exit.wav differ diff --git a/config/ultrahand/sounds/move.wav b/config/ultrahand/sounds/move.wav index d2b98a2..12d7c0c 100644 Binary files a/config/ultrahand/sounds/move.wav and b/config/ultrahand/sounds/move.wav differ diff --git a/config/ultrahand/sounds/notification.wav b/config/ultrahand/sounds/notification.wav deleted file mode 100644 index 3e6664e..0000000 Binary files a/config/ultrahand/sounds/notification.wav and /dev/null differ diff --git a/config/ultrahand/sounds/off.wav b/config/ultrahand/sounds/off.wav index 5a1dc62..e65fc46 100644 Binary files a/config/ultrahand/sounds/off.wav and b/config/ultrahand/sounds/off.wav differ diff --git a/config/ultrahand/sounds/on.wav b/config/ultrahand/sounds/on.wav index 9cd57a2..fa212a2 100644 Binary files a/config/ultrahand/sounds/on.wav and b/config/ultrahand/sounds/on.wav differ diff --git a/config/ultrahand/sounds/settings.wav b/config/ultrahand/sounds/settings.wav index ac8129f..59e82b1 100644 Binary files a/config/ultrahand/sounds/settings.wav and b/config/ultrahand/sounds/settings.wav differ diff --git a/config/ultrahand/sounds/tick.wav b/config/ultrahand/sounds/tick.wav index 6cc529a..4dceea0 100644 Binary files a/config/ultrahand/sounds/tick.wav and b/config/ultrahand/sounds/tick.wav differ diff --git a/config/ultrahand/sounds/wall.wav b/config/ultrahand/sounds/wall.wav index dbb90cf..13d6640 100644 Binary files a/config/ultrahand/sounds/wall.wav and b/config/ultrahand/sounds/wall.wav differ diff --git a/switch/.overlays/horizon-oc-overlay.ovl b/switch/.overlays/horizon-oc-overlay.ovl index 376899d..a077008 100644 Binary files a/switch/.overlays/horizon-oc-overlay.ovl and b/switch/.overlays/horizon-oc-overlay.ovl differ diff --git a/switch/Ultrahand-Reload/Ultrahand-Reload.nro b/switch/Ultrahand-Reload/Ultrahand-Reload.nro new file mode 100644 index 0000000..9af687e Binary files /dev/null and b/switch/Ultrahand-Reload/Ultrahand-Reload.nro differ