UltraNX 3.0|R3x

This commit is contained in:
redraz 2026-08-15 04:05:34 +03:00
parent 5b016a714f
commit 1c296e9ff5
64 changed files with 1166 additions and 149 deletions

View File

@ -1,4 +1,4 @@
# Subnautica Below Zero 1.21.49397-1.22.54460 # Subnautica Below Zero 1.21.49397-1.23.55063
# BID: 5B050C55B8264040 # BID: 5B050C55B8264040
ALL_FPS: ALL_FPS:

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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]
]

View File

@ -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"

View File

@ -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]]
]

View File

@ -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]]
]

View File

@ -1,8 +1,6 @@
# Ghostrunner 1.8 # Ghostrunner 1.8
# BID: D3DD5B220DCEB626 # BID: D3DD5B220DCEB626
unsafeCheck: true
ALL_FPS: ALL_FPS:
# r.DynamicRes.FrameTimeBudget = 0.93 * (1000/FPS) # r.DynamicRes.FrameTimeBudget = 0.93 * (1000/FPS)
- -

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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]
]

View File

@ -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

View File

@ -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]]
]

Binary file not shown.

BIN
SaltySD/saltynx_core.elf Normal file

Binary file not shown.

BIN
SaltySD/saltynx_core32.elf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -2,5 +2,5 @@
"name": "SaltyNX", "name": "SaltyNX",
"tid": "0000000000534C56", "tid": "0000000000534C56",
"requires_reboot": true, "requires_reboot": true,
"version": "1.8.1" "version": "1.9.2"
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,6 @@
{ {
"ams": { "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": { "misc": {
"Refresh AIO": "https://github.com/Ultra-NX/Ultra-Resources/releases/download/Homebrews/AIO.zip" "Refresh AIO": "https://github.com/Ultra-NX/Ultra-Resources/releases/download/Homebrews/AIO.zip"

View File

@ -1,14 +1,14 @@
{ {
"Status Monitor": "Status Monitor", "Status Monitor": "Status Monitor",
"Modes": "Режимы", "Modes": "Режимы",
"Modes   Configure": "Режимы   Настроить", "Modes   Configure": "Режимы   Настройка",
"Full": "Полный", "Full": "Полный",
"Mini": "Мини", "Mini": "Мини",
"Micro": "Микро", "Micro": "Микро",
"FPS Graph": "График FPS", "FPS Graph": "График FPS",
"FPS Counter": "Счётчик FPS", "FPS Counter": "Счётчик FPS",
"Game Resolutions": "Разрешения игры", "Game Resolutions": "Разрешения игры",
"Other": "Прочее", "Other": "Другое",
"Battery/Charger": "Аккумулятор/Зарядка", "Battery/Charger": "Аккумулятор/Зарядка",
"Miscellaneous": "Разное", "Miscellaneous": "Разное",
"CPU Usage": "Загрузка CPU", "CPU Usage": "Загрузка CPU",
@ -21,33 +21,33 @@
"Core 2 ": "Ядро 2 ", "Core 2 ": "Ядро 2 ",
"Core 3 ": "Ядро 3 ", "Core 3 ": "Ядро 3 ",
"Load": "Нагрузка", "Load": "Нагрузка",
"Total\nApplication\nApplet\nSystem\nSystem Unsafe": "Всего\nПриложение\nАпплет\nСистема\nСистема (небезопасно)", "Total\nApplication\nApplet\nSystem\nSystem Unsafe": "Общая\nПриложение\nАпплет\nСистема\nСистем. (небез.)",
"Board": "Плата", "Board": "Плата",
"Battery Power Flow": "Поток энергии аккумулятора", "Battery Power Flow": "Мощность аккумулятора",
"\nTemperatures": "\nТемпературы", "\nTemperatures": "\nТемпературы",
"SoC\nPCB\nSkin": "SoC\nPCB\nSkin", "SoC\nPCB\nSkin": "SoC\nPCB\nSkin",
"Fan Rotation Level": "Уровень вращения вентилятора", "Fan Rotation Level": "Скорость вентилятора",
"Game": "Игра", "Game": "Игра",
"PFPS ": "PFPS ", "PFPS ": "PFPS ",
"FPS ": "FPS ", "FPS ": "FPS ",
"Resolutions ": "Разрешения ", "Resolutions ": "Разрешение ",
"Read Speed ": "Скорость чтения ", "Read Speed ": "Скорость чтения ",
"Press ": "Нажмите ", "Press ": "Нажмите ",
" to Exit": " для выхода", " to Exit": " для выхода",
"Depth": "Глубина", "Depth": "Глубина",
"Viewport": "Viewport", "Viewport": "Вывод",
"Game is not running\nor it's incompatible.": "Игра не запущена\nили несовместима.", "Game is not running\nor it's incompatible.": "Игра не запущена\nили несовместима.",
"Battery Stats": "Статистика аккумулятора", "Battery Stats": "Состояние аккумулятора",
"Actual Capacity": "Фактическая ёмкость", "Actual Capacity": "Текущая ёмкость",
"Designed Capacity": "Номинальная ёмкость", "Designed Capacity": "Расчётная ёмкость",
"Temperature": "Температура", "Temperature": "Температура",
"Raw Charge": "Сырой заряд", "Raw Charge": "Заряд (сырой)",
"Age": "Возраст", "Age": "Износ",
"Voltage": "Напряжение", "Voltage": "Напряжение",
"Current Flow": "Ток", "Current Flow": "Сила тока",
"Power Flow": "Мощность", "Power Flow": "Мощность",
"Remaining Time": "Оставшееся время", "Remaining Time": "Оставшееся время",
"Charger Stats": "Статистика зарядки", "Charger Stats": "Состояние зарядки",
"Input Current Limit": "Лимит входного тока", "Input Current Limit": "Лимит входного тока",
"VBUS Current Limit": "Лимит тока VBUS", "VBUS Current Limit": "Лимит тока VBUS",
"Voltage Limit": "Лимит напряжения", "Voltage Limit": "Лимит напряжения",
@ -61,61 +61,64 @@
"NVJPG": "NVJPG", "NVJPG": "NVJPG",
"Network": "Сеть", "Network": "Сеть",
"Type: Wi-Fi": "Тип: Wi-Fi", "Type: Wi-Fi": "Тип: Wi-Fi",
"Press Y to show password": "Нажмите Y, чтобы показать пароль", "Press Y to show password": "Нажмите Y для показа пароля",
"Type: Ethernet": "Тип: Ethernet", "Type: Ethernet": "Тип: Ethernet",
"Type: Not connected": "Тип: Не подключено", "Type: Not connected": "Тип: Не подключено",
"CPU\nGPU\nRAM\nSOC\nPCB\nSKN": "CPU\nGPU\nRAM\nSOC\nPCB\nSKN", "CPU\nGPU\nRAM\nSOC\nPCB\nSKN": "CPU\nGPU\nRAM\nSOC\nPCB\nSKN",
"Elements   Move Down   Move Up": "Элементы   Вниз   Вверх", "Elements   Move Down   Move Up": "Элементы   Вниз   Вверх",
"Transparent": "Прозрачный", "Transparent": "Прозрачный",
"Opaque": "Непрозрачный", "Opaque": "Непрозрачный",
"Alpha": "Альфа", "Alpha": "Альфа-канал",
"Pretty": "Красивый", "Pretty": "Красивый",
"Compact": "Компактный", "Compact": "Компактный",
"FileSafe": "FileSafe", "FileSafe": "Безопасный",
"Day+Time": "День+Время", "Day+Time": "День+Время",
"Date+Time(s)": "Дата+Время(с)", "Date+Time(s)": "Дата+Время(с)",
"Date+Time AM/PM": "Дата+Время AM/PM", "Date+Time AM/PM": "Дата+Время AM/PM",
"Date+Time(s) AM/PM": "Дата+Время(с) AM/PM", "Date+Time(s) AM/PM": "Дата+Время(с) AM/PM",
"Date+Time EU": "Дата+Время EU", "Date+Time EU": "Дата+Время (EU)",
"Date+Time EU AM/PM": "Дата+Время EU AM/PM", "Date+Time EU AM/PM": "Дата+Время (EU) AM/PM",
"Date+Time(s) EU AM/PM": "Дата+Время(с) EU AM/PM", "Date+Time(s) EU AM/PM": "Дата+Время(с) (EU) AM/PM",
"Date+Time ISO": "Дата+Время ISO", "Date+Time ISO": "Дата+Время ISO",
"Time 24h": "Время 24ч", "Time 24h": "Время 24ч",
"Time AM/PM": "Время AM/PM", "Time AM/PM": "Время AM/PM",
"Time(s) 24h": "Время(с) 24ч", "Time(s) 24h": "Время(с) 24ч",
"Time(s) AM/PM": "Время(с) AM/PM", "Time(s) AM/PM": "Время(с) AM/PM",
"Date US": "Дата US", "Date US": "Дата (US)",
"Date EU": "Дата EU", "Date EU": "Дата (EU)",
"Date ISO": "Дата ISO", "Date ISO": "Дата ISO",
"Date Short": "Краткая дата", "Date Short": "Короткая дата",
"DTC Format": "Формат DTC", "DTC Format": "Формат DTC",
"Toggles": "Переключатели", "Toggles": "Переключатели",
"Info": "Показать информацию", "Info": "Показывать инфо",
"Disable Screenshots": "Отключить скриншоты", "Disable Screenshots": "Откл. скриншоты",
"Real Freqs": "Реальные частоты", "Real Freqs": "Реал. частоты",
"Deltas": "Дельты", "Deltas": "Дельта",
"Target Freqs": "Целевые частоты", "Target Freqs": "Цел. частоты",
"FPS": "FPS", "FPS": "FPS",
"RES": "РАЗР.", "RES": "RES",
"Read Speed": "Скорость чтения", "Read Speed": "Скорость чтения",
"Real Frequencies": "Реальные частоты", "Real Frequencies": "Реальные частоты",
"Real Voltages": "Реальные напряжения", "Real Voltages": "Реальные напряжения",
"Full CPU": "Полный CPU", "Full CPU": "Полный CPU",
"VDDQ": "VDDQ", "VDDQ": "VDDQ",
"VDD2": "VDD2", "VDD2": "VDD2",
"Stacked VDD2/VDDQ": "VDD2/VDDQ (стек)",
"Full Resolution": "Полное разрешение", "Full Resolution": "Полное разрешение",
"SOC Voltage": "Напряжение SOC", "SOC Voltage": "Напряжение SOC",
"RAM Load CPU/GPU": "Нагрузка RAM CPU/GPU", "Stacked Fan/SOC": "Вентилятор/SOC (стек)",
"Use DTC Symbol": "Использовать символ DTC", "RAM Load CPU/GPU": "Загрузка RAM CPU/GPU",
"Use Dynamic Colors": "Использовать динамические цвета", "Stacked RAM Load CPU/GPU": "Загрузка RAM CPU/GPU (стек)",
"Use DTC Symbol": "Исп. символ DTC",
"Use Dynamic Colors": "Исп. динамические цвета",
"Sleep Exit": "Выход из сна", "Sleep Exit": "Выход из сна",
"Configuration": "Конфигурация", "Configuration": "Конфигурация",
"Refresh Rate": "Частота обновления", "Refresh Rate": "Частота обновления",
"Frame Padding": "Отступ кадра", "Frame Padding": "Отступ рамки",
" Font Size": " Размер шрифта", " Font Size": " Размер шрифта",
"Font Sizes": "Размеры шрифта", "Font Sizes": "Размеры шрифта",
"Handheld Font Size": "Размер шрифта в портативном режиме", "Handheld Font Size": "Шрифт (портативный)",
"Docked Font Size": "Размер шрифта в док-режиме", "Docked Font Size": "Шрифт (в доке)",
"Black": "Чёрный", "Black": "Чёрный",
"Dark Gray": "Тёмно-серый", "Dark Gray": "Тёмно-серый",
"Gray": "Серый", "Gray": "Серый",
@ -137,13 +140,13 @@
"Dark Purple": "Тёмно-фиолетовый", "Dark Purple": "Тёмно-фиолетовый",
"Purple": "Фиолетовый", "Purple": "Фиолетовый",
"Light Purple": "Светло-фиолетовый", "Light Purple": "Светло-фиолетовый",
"Violet": "Фиолетовый", "Violet": "Лиловый",
"Orange": "Оранжевый", "Orange": "Оранжевый",
"Yellow": "Жёлтый", "Yellow": "Жёлтый",
"Light Yellow": "Светло-жёлтый", "Light Yellow": "Светло-жёлтый",
"Teal": "Бирюзовый", "Teal": "Бирюзовый",
"Cyan": "Голубой", "Cyan": "Циан",
"Light Cyan": "Светло-голубой", "Light Cyan": "Светлый циан",
"Magenta": "Пурпурный", "Magenta": "Пурпурный",
"Hot Pink": "Ярко-розовый", "Hot Pink": "Ярко-розовый",
"Brown": "Коричневый", "Brown": "Коричневый",
@ -162,29 +165,29 @@
"Rounded Line": "Скруглённая линия", "Rounded Line": "Скруглённая линия",
"Perfect Line": "Идеальная линия", "Perfect Line": "Идеальная линия",
" Color": " Цвет", " Color": " Цвет",
" Alpha": " Прозрачность", " Alpha": " Альфа",
"Category Color": "Цвет категории", "Category Color": "Цвет категории",
"Category Color 1": "Цвет категории 1", "Category Color 1": "Цвет категории 1",
"Category Color 2": "Цвет категории 2", "Category Color 2": "Цвет категории 2",
"Separator Color": "Цвет разделителя", "Separator Color": "Цвет разделителя",
"Elements": "Элементы", "Elements": "Элементы",
"Text Alignment": "Выравнивание текста", "Text Alignment": "Выравнивание текста",
"Vertical Position": "Вертикальная позиция", "Vertical Position": "Вертикальное положение",
"Horizontal Position": "Горизонтальная позиция", "Horizontal Position": "Горизонтальное положение",
"Left": "Слева", "Left": "По левому краю",
"Right": "Справа", "Right": "По правому краю",
"Top": "Сверху", "Top": "Сверху",
"Center": "По центру", "Center": "По центру",
"Bottom": "Снизу", "Bottom": "Снизу",
"FPS Counter Color": "Цвет счётчика FPS", "FPS Counter Color": "Цвет счётчика FPS",
"FPS Counter Alpha": "Прозрачность счётчика FPS", "FPS Counter Alpha": "Прозрачность счётчика FPS",
"Border Color": "Цвет границы", "Border Color": "Цвет границы",
"Dashed Line Color": "Цвет пунктирной линии", "Dashed Line Color": "Цвет пунктира",
"Dashed Line Alpha": "Прозрачность пунктирной линии", "Dashed Line Alpha": "Прозрачность пунктира",
"Max FPS Text Color": "Цвет текста макс. FPS", "Max FPS Text Color": "Цвет макс. FPS",
"Min FPS Text Color": "Цвет текста мин. FPS", "Min FPS Text Color": "Цвет мин. FPS",
"Main Line Color": "Цвет основной линии", "Main Line Color": "Цвет основной линии",
"Rounded Line Color": "Цвет скруглённой линии", "Rounded Line Color": "Цвет скругл. линии",
"Perfect Line Color": "Цвет идеальной линии", "Perfect Line Color": "Цвет идеальной линии",
"CPU": "CPU", "CPU": "CPU",
"GPU": "GPU", "GPU": "GPU",
@ -202,66 +205,66 @@
"PCB ": "PCB ", "PCB ": "PCB ",
"Skin ": "Skin ", "Skin ": "Skin ",
"Border Thickness": "Толщина границы", "Border Thickness": "Толщина границы",
"Corner Radius": "Радиус угла", "Corner Radius": "Скругление углов",
"Element Padding": "Отступ элемента", "Element Padding": "Внутр. отступ эл-та",
"Horizontal Padding": "Горизонтальный отступ", "Horizontal Padding": "Гориз. отступ",
"Vertical Padding": "Вертикальный отступ", "Vertical Padding": "Вертик. отступ",
"Label Padding": "Отступ метки", "Label Padding": "Отступ метки",
"Paddings": "Отступы", "Paddings": "Отступы",
"Spacing": "Интервал", "Spacing": "Промежутки",
"Stacked Spacing": "Интервал стека", "Stacked Spacing": "Промежуток (стек)",
"Sample Rate": "Частота выборки", "Sample Rate": "Частота выборки",
"Touch Move Delay": "Задержка перем. касанием", "Touch Move Delay": "Задержка касания",
"Button Move Delay": "Задержка перем. кнопкой", "Button Move Delay": "Задержка кнопок",
"Mode Combo": "Комбинация режима", "Mode Combo": "Комб. режима",
"None": "Нет", "None": "Нет",
"Global": "Общие", "Global": "Глобальный",
"Temperatures": "Температуры", "Temperatures": "Температуры",
"System": "Система", "System": "Система",
"DTC Format 1": "Формат DTC 1", "DTC Format 1": "DTC Формат 1",
"DTC Format 2": "Формат DTC 2", "DTC Format 2": "DTC Формат 2",
"Target Frequencies": "Целевые частоты", "Target Frequencies": "Целевые частоты",
"Frequency Deltas": "Дельты частот", "Frequency Deltas": "Дельта частот",
"Labels": "Метки", "Labels": "Метки",
"Stacked": "Стопкой", "Stacked": "Стек",
"Handheld": "Портативный", "Handheld": "Портативный",
"Docked": "Док-режим", "Docked": "В доке",
"1080p Docked": "1080p док", "1080p Docked": "В доке (1080p)",
"Integer FPS": "Целочисленный FPS", "Integer FPS": "Целочисленный FPS",
"Use FPS Graph": "Использовать график FPS", "Use FPS Graph": "Исп. график FPS",
"Graph": "График", "Graph": "График",
"Graph Background": "Фон графика", "Graph Background": "Фон графика",
"Graph Border": "Граница графика", "Graph Border": "Граница графика",
"CW Border Flow": "Поток границы по часовой", "CW Border Flow": "Поток границы (по ЧС)",
"Dynamic Border": "Динамическая граница", "Dynamic Border": "Динамическая граница",
"Border Wheel 1": "Колесо границы 1", "Border Wheel 1": "Колесо границы 1",
"Border Wheel 2": "Колесо границы 2", "Border Wheel 2": "Колесо границы 2",
"Border Wheel 3": "Колесо границы 3", "Border Wheel 3": "Колесо границы 3",
"Border Wheel 3 Deep": "Колесо границы 3 глубокий", "Border Wheel 3 Deep": "Колесо границы 3 (глуб.)",
"Border Wheel 4": "Колесо границы 4", "Border Wheel 4": "Колесо границы 4",
"Border Wheel 4 Deep": "Колесо границы 4 глубокий", "Border Wheel 4 Deep": "Колесо границы 4 (глуб.)",
"Dynamic Temps": "Динамические темп.", "Dynamic Temps": "Динамические темп.",
"Stacked Temps": "Температуры стопкой", "Stacked Temps": "Темп. (стек)",
"CPU/GPU/RAM Temps": "Темп. CPU/GPU/RAM", "CPU/GPU/RAM Temps": "Темп. CPU/GPU/RAM",
"SOC/PCB/Skin Temps": "Темп. SOC/PCB/Skin", "SOC/PCB/Skin Temps": "Темп. SOC/Плата/Корпус",
"CPU Temp": "Темп. CPU", "CPU Temp": "Темп. CPU",
"GPU Temp": "Темп. GPU", "GPU Temp": "Темп. GPU",
"RAM Temp": "Темп. RAM", "RAM Temp": "Темп. RAM",
"Stacked CPU Temp": "Темп. CPU стопкой", "Stacked CPU Temp": "Темп. CPU (стек)",
"Stacked GPU Temp": "Темп. GPU стопкой", "Stacked GPU Temp": "Темп. GPU (стек)",
"Stacked RAM Temp": "Темп. RAM стопкой", "Stacked RAM Temp": "Темп. RAM (стек)",
"Stacked Full CPU": "Полный CPU стопкой", "Stacked Full CPU": "Полный CPU (стек)",
"Full CPU Max Core 0-2": "Полный CPU макс. ядро 0-2", "Full CPU Max Core 0-2": "Полный CPU макс. ядра 0-2",
"RAM Bandwidth": "Пропускная способность RAM", "RAM Bandwidth": "Пропускная способность RAM",
"Stacked RAM Bandwidth": "Пропускная способность RAM стопкой", "Stacked RAM Bandwidth": "Проп. RAM (стек)",
"Invert Battery Display": "Инвертировать показ батареи", "Invert Battery Display": "Инвертировать элемент аккумулятора",
"Voltage At End": "Напряжение в конце", "Voltage At End": "Напряжение в конце",
"Primary Only": "Только основное", "Primary Only": "Только основное",
"Charcoal": "Угольный", "Charcoal": "Угольный",
"Cool Gray": "Холодный серый", "Cool Gray": "Холодный серый",
"Off-White": "Молочно-белый", "Off-White": "Молочно-белый",
"Warm White": "Тёплый белый", "Warm White": "Тёплый белый",
"Slate": "Грифельный", "Slate": "Свинцовый",
"Burgundy": "Бордовый", "Burgundy": "Бордовый",
"Maroon": "Тёмно-бордовый", "Maroon": "Тёмно-бордовый",
"Crimson": "Малиновый", "Crimson": "Малиновый",
@ -278,7 +281,7 @@
"Peach": "Персиковый", "Peach": "Персиковый",
"Caramel": "Карамельный", "Caramel": "Карамельный",
"Sienna": "Сиена", "Sienna": "Сиена",
"Tan": "Рыжевато-коричневый", "Tan": "Бежевый",
"Taupe": "Серо-коричневый", "Taupe": "Серо-коричневый",
"Sand": "Песочный", "Sand": "Песочный",
"Wheat": "Пшеничный", "Wheat": "Пшеничный",
@ -297,42 +300,42 @@
"Bright Green": "Ярко-зелёный", "Bright Green": "Ярко-зелёный",
"Sage": "Шалфейный", "Sage": "Шалфейный",
"Seafoam": "Морская пена", "Seafoam": "Морская пена",
"Seafoam Green": "Зеленоватая пена", "Seafoam Green": "Зелёная морская пена",
"Pale Green": "Бледно-зелёный", "Pale Green": "Бледно-зелёный",
"Mint": "Мятный", "Mint": "Мятный",
"Chartreuse": "Шартрёз", "Chartreuse": "Шартрёз",
"Dark Teal": "Тёмно-бирюзовый", "Dark Teal": "Тёмно-бирюзовый",
"Dark Cyan": "Тёмно-голубой", "Dark Cyan": "Тёмно-циановый",
"Cerulean": "Церулеум", "Cerulean": "Церулеум",
"Aqua": "Аквамарин", "Aqua": "Аквамарин",
"Steel Cyan": "Стальной голубой", "Steel Cyan": "Стальной циановый",
"Navy": "Морской синий", "Navy": "Морской синий",
"Cobalt": "Кобальтовый", "Cobalt": "Кобальтовый",
"Denim": "Джинсовый", "Denim": "Джинсовый",
"Slate Navy": "Грифельно-синий", "Slate Navy": "Свинцовый синий",
"Steel Blue": "Стальной синий", "Steel Blue": "Стальной синий",
"Royal Blue": "Королевский синий", "Royal Blue": "Королевский синий",
"Azure": "Лазурно-синий", "Azure": "Лазурный",
"Cornflower": "Васильковый", "Cornflower": "Васильковый",
"Ice Blue": "Ледяной голубой", "Ice Blue": "Ледяной голубой",
"Powder Blue": ыльно-голубой", "Powder Blue": удрово-голубой",
"Indigo": "Индиго", "Indigo": "Индиго",
"Indigo Blue": "Индигово-синий", "Indigo Blue": "Индиго-синий",
"Violet Blue": "Сине-фиолетовый", "Violet Blue": "Сине-фиолетовый",
"Deep Purple": "Насыщенный фиолетовый", "Deep Purple": "Тёмно-фиолетовый",
"Periwinkle": "Барвинковый", "Periwinkle": "Барвинковый",
"Light Periwinkle": "Светло-барвинковый", "Light Periwinkle": "Светло-барвинковый",
"Amethyst": "Аметистовый", "Amethyst": "Аметистовый",
"Mauve": "Розовато-лиловый", "Mauve": "Лиловый",
"Muted Mauve": "Приглушённый лиловый", "Muted Mauve": "Приглуш. лиловый",
"Lavender": "Лавандовый", "Lavender": "Лавандовый",
"Orchid": "Орхидея", "Orchid": "Орхидея",
"Plum": "Сливовый", "Plum": "Сливовый",
"Thistle": "Чертополоховый", "Thistle": "Чертополох",
"Dark Magenta": "Тёмно-пурпурный", "Dark Magenta": "Тёмно-пурпурный",
"Fuchsia": "Фуксия", "Fuchsia": "Фуксия",
"Rose": "Розово-красный", "Rose": "Розовый",
"Dusty Rose": "Пыльная роза", "Dusty Rose": "Пыльно-розовый",
"Baby Pink": "Нежно-розовый", "Baby Pink": "Нежно-розовый",
"Light Pink": "Светло-розовый", "Light Pink": "Светло-розовый",
"Petal": "Лепестковый", "Petal": "Лепестковый",
@ -348,16 +351,16 @@
"Date EU Dash": "Дата EU (-)", "Date EU Dash": "Дата EU (-)",
"Date EU Slash": "Дата EU (/)", "Date EU Slash": "Дата EU (/)",
"Date ISO Slash": "Дата ISO (/)", "Date ISO Slash": "Дата ISO (/)",
"Date Short US": "Краткая дата US", "Date Short US": "Короткая дата US",
"Date Short EU": "Краткая дата EU", "Date Short EU": "Короткая дата EU",
"Date Compact": "Компактная дата", "Date Compact": "Компактная дата",
"Day + Date Short": "День недели + Краткая дата", "Day + Date Short": "День + короткая дата",
"Day + Date Full": "День недели + Полная дата", "Day + Date Full": "День + полная дата",
"Weekday Short": "День недели кратко", "Weekday Short": "День недели (корот.)",
"Weekday Full": "День недели полностью", "Weekday Full": "День недели (полн.)",
"Month Short": "Месяц кратко", "Month Short": "Месяц (корот.)",
"Month Full": "Месяц полностью", "Month Full": "Месяц (полн.)",
"Month + Year": "Месяц + Год", "Month + Year": "Месяц и год",
"Day of Year": "День года", "Day of Year": "День в году",
"Stop Watch": "Секундомер" "Stop Watch": "Секундомер"
} }

View File

@ -449,6 +449,28 @@ home=13
lstick_click=11 lstick_click=11
rstick_click=12 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 #[0f0d-00c1] ; KIWITATA N64 USB Mini Controller
#a=3,10 #a=3,10
#l=5 #l=5
@ -639,6 +661,20 @@ r=6
minus=7 minus=7
plus=8 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 [0d22-0c31] ; MSI GC30 V2 USB cable
b=2 b=2
a=3 a=3
@ -749,6 +785,22 @@ rstick_right=Z
rstick_up=Rz rstick_up=Rz
rstick_down=-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 [18d1-9400] ;Google Stadia Controller
b=1 b=1
a=2 a=2
@ -762,6 +814,8 @@ minus=11
plus=12 plus=12
capture=17 capture=17
home=18 home=18
lstick_click=14
rstick_click=15
[2dc8-301c] ;8bitdo Ultimate 2C Wireless Dongle [2dc8-301c] ;8bitdo Ultimate 2C Wireless Dongle
A=1 A=1

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,5 +1,6 @@
[ultrahand] [ultrahand]
clean_version_labels=false clean_version_labels=false
current_sounds=official
current_theme=Ultra Paw current_theme=Ultra Paw
datetime_format='%a %T' datetime_format='%a %T'
default_lang=en default_lang=en

View File

@ -24,10 +24,10 @@
"HIDDEN": "Скрыто", "HIDDEN": "Скрыто",
"HIDE_OVERLAY": "Скрыть оверлей", "HIDE_OVERLAY": "Скрыть оверлей",
"HIDE_PACKAGE": "Скрыть пакет", "HIDE_PACKAGE": "Скрыть пакет",
"LAUNCH_ARGUMENTS": "Параметры запуска", "LAUNCH_ARGUMENTS": "Аргументы запуска",
"FORCE_AMS110_SUPPORT": "Форсировать AMS110+", "FORCE_AMS110_SUPPORT": "Форсировать AMS110+",
"QUICK_LAUNCH": "Быстрый запуск", "QUICK_LAUNCH": "Быстрый запуск",
"BOOT_COMMANDS": "Команды загрузки", "BOOT_COMMANDS": "Команды запуска",
"EXIT_COMMANDS": "Команды выхода", "EXIT_COMMANDS": "Команды выхода",
"ERROR_LOGGING": "Журнал ошибок", "ERROR_LOGGING": "Журнал ошибок",
"COMMANDS": "Команды", "COMMANDS": "Команды",
@ -40,73 +40,73 @@
"WIDGET_SETTINGS": "Настройки виджета", "WIDGET_SETTINGS": "Настройки виджета",
"CLOCK": "Часы", "CLOCK": "Часы",
"BATTERY": "Аккумулятор", "BATTERY": "Аккумулятор",
"SOC_TEMPERATURE": "Темп. SOC", "SOC_TEMPERATURE": "Температура SOC",
"PCB_TEMPERATURE": "Темп. PCB", "PCB_TEMPERATURE": "Температура PCB",
"BACKDROP": "Фон", "BACKDROP": "Фон",
"BORDER": "Граница", "BORDER": "Граница",
"DYNAMIC_BORDER": "Динамическая граница", "DYNAMIC_BORDER": "Динамическая граница",
"DYNAMIC_TEMPS": "Динамические температуры", "DYNAMIC_TEMPS": "Динамические температуры",
"CENTER_ALIGNMENT": "По центру", "CENTER_ALIGNMENT": "Выравнивание по центру",
"EXTENDED_BACKDROP": "Расширенный фон", "EXTENDED_BACKDROP": "Расширенный фон",
"MISCELLANEOUS": "Прочее", "MISCELLANEOUS": "Разное",
"INPUT_SETTINGS": "Настройки ввода", "INPUT_SETTINGS": "Настройки ввода",
"LAUNCH_COMBOS": "Комбо запуска", "LAUNCH_COMBOS": "Комбинации запуска",
"SWIPE_TO_OPEN": "Свайп для открытия", "SWIPE_TO_OPEN": "Открытие свайпом",
"HAPTIC_FEEDBACK": "Виброотклик", "HAPTIC_FEEDBACK": "Тактильная отдача",
"STICK_NAVIGATION": "Навигация стиком", "STICK_NAVIGATION": "Навигация стиками",
"HOLD_DURATION": "Время удержания", "HOLD_DURATION": "Длительность удержания",
"FEATURE_SETTINGS": "Настройки функций", "FEATURE_SETTINGS": "Настройки функций",
"OPAQUE_SCREENSHOTS": "Непрозрачные скриншоты", "OPAQUE_SCREENSHOTS": "Непрозрачные скриншоты",
"RIGHT_SIDE_MODE": "Режим справа", "RIGHT_SIDE_MODE": "Режим с правой стороны",
"NTP_SYNC_DOWNLOADS": "Загрузки NTP Sync", "NTP_SYNC_DOWNLOADS": "Синхронизация NTP при загрузках",
"MENU_SETTINGS": "Настройки меню", "MENU_SETTINGS": "Настройки меню",
"PACKAGES_MENU": "Меню пакетов", "PACKAGES_MENU": "Меню пакетов",
"USER_GUIDE": "Руководство", "USER_GUIDE": "Руководство",
"SHOW_HIDDEN": "Показать скрытые", "SHOW_HIDDEN": "Показывать скрытые",
"SHOW_DELETE": "Показать удаление", "SHOW_DELETE": "Показывать удаление",
"SHOW_UNSUPPORTED": "Показать неподдерживаемые", "SHOW_UNSUPPORTED": "Показывать неподдерживаемые",
"PAGE_SWAP": "Смена страницы", "PAGE_SWAP": "Смена страницы",
"OVERLAY_VERSIONS": "Версии оверлеев", "OVERLAY_VERSIONS": "Версии оверлеев",
"PACKAGE_VERSIONS": "Версии пакетов", "PACKAGE_VERSIONS": "Версии пакетов",
"CLEAN_VERSIONS": "Скрыть (v)", "CLEAN_VERSIONS": "Чистые версии",
"THEME_SETTINGS": "Настройки темы", "THEME_SETTINGS": "Настройки темы",
"SWITCH_2_STYLE": "Стиль Switch 2", "SWITCH_2_STYLE": "Стиль Switch 2",
"DYNAMIC_LOGO": "Динамический логотип", "DYNAMIC_LOGO": "Динамический логотип",
"DYNAMIC_TABLES": "Динамические таблицы", "DYNAMIC_TABLES": "Динамические таблицы",
"SELECTION_BACKGROUND": "Фон выделения", "SELECTION_BACKGROUND": "Фон выделения",
"SELECTION_TEXT": "Текст выделения", "SELECTION_TEXT": "Текст выделения",
"SELECTION_VALUE": "Значение", "SELECTION_VALUE": "Значение выделения",
"LIBULTRAHAND_TITLES": "Заголовки libultrahand", "LIBULTRAHAND_TITLES": "Заголовки libultrahand",
"LIBULTRAHAND_VERSIONS": "Версии libultrahand", "LIBULTRAHAND_VERSIONS": "Версии libultrahand",
"PACKAGE_TITLES": "Заголовки пакетов", "PACKAGE_TITLES": "Заголовки пакетов",
"IN_PACKAGE_TITLES": "Внутрипакетные заголовки", "IN_PACKAGE_TITLES": "Заголовки внутри пакетов",
"KEY_COMBO": "Комбинация", "KEY_COMBO": "Комб. клавиш",
"MODE": "Режим", "MODE": "Режим",
"LAUNCH_MODES": "Режимы запуска", "LAUNCH_MODES": "Режимы запуска",
"LANGUAGE": "Язык", "LANGUAGE": "Язык",
"OVERLAY_INFO": "Инфо оверлея", "OVERLAY_INFO": "Информация об оверлее",
"SOFTWARE_UPDATE": "Обновления", "SOFTWARE_UPDATE": "Обновление ПО",
"UPDATE_ULTRAHAND": "Обновить Ultrahand", "UPDATE_ULTRAHAND": "Обновить Ultrahand",
"SYSTEM": "Система", "SYSTEM": "Система",
"DEVICE_INFO": "О устройстве", "DEVICE_INFO": "Информация об устройстве",
"FIRMWARE": "Прошивка", "FIRMWARE": "Прошивка",
"BOOTLOADER": "Загрузчик", "BOOTLOADER": "Загрузчик",
"HARDWARE": "Оборудование", "HARDWARE": "Оборудование",
"MEMORY": "Память", "MEMORY": "Память",
"VENDOR": "Производитель", "VENDOR": "Производитель",
"MODEL": "Модель", "MODEL": "Модель",
"STORAGE": "Хранилище", "STORAGE": "Накопитель",
"INCOMPATIBLE_WARNING": "Несовместимо с AMS v1.10+", "INCOMPATIBLE_WARNING": "Несовместимо с AMS v1.10+",
"OVERLAY_DOES_NOT_EXIST": "Оверлей не найден!", "OVERLAY_DOES_NOT_EXIST": "Оверлей не найден!",
"SYSTEM_RAM": "ОЗУ системы", "SYSTEM_RAM": "Системная RAM",
"FREE": "свободно", "FREE": "FREE",
"OVERLAY_MEMORY": "Память оверлея", "OVERLAY_MEMORY": "Память оверлея",
"NOT_ENOUGH_MEMORY": "Недостаточно памяти", "NOT_ENOUGH_MEMORY": "Недостаточно памяти.",
"WALLPAPER_SUPPORT_DISABLED": "Обои выключены", "WALLPAPER_SUPPORT_DISABLED": "Поддержка обоев отключена",
"SOUND_SUPPORT_DISABLED": "Звук выключен", "SOUND_SUPPORT_DISABLED": "Поддержка звука отключена",
"WALLPAPER_SUPPORT_ENABLED": "Обои включены", "WALLPAPER_SUPPORT_ENABLED": "Поддержка обоев включена",
"SOUND_SUPPORT_ENABLED": "Звук включён", "SOUND_SUPPORT_ENABLED": "Поддержка звука включена",
"EXIT_OVERLAY_SYSTEM": "Выйти из оверлеев", "EXIT_OVERLAY_SYSTEM": "Выйти из системы оверлеев",
"ULTRAHAND_ABOUT": "Ultrahand Overlay — это настраиваемая экосистема оверлеев для команд, оверлеев, горячих клавиш и расширенного взаимодействия с системой.", "ULTRAHAND_ABOUT": "Ultrahand Overlay — это настраиваемая экосистема оверлеев для команд, оверлеев, горячих клавиш и расширенного взаимодействия с системой.",
"ULTRAHAND_CREDITS_START": "Особая благодарность ", "ULTRAHAND_CREDITS_START": "Особая благодарность ",
"ULTRAHAND_CREDITS_END": " и многим другим. ♥", "ULTRAHAND_CREDITS_END": " и многим другим. ♥",
@ -114,7 +114,7 @@
"WALLPAPER": "Обои", "WALLPAPER": "Обои",
"THEME": "Тема", "THEME": "Тема",
"SOUNDS": "Звуки", "SOUNDS": "Звуки",
"DEFAULT": "стандарт", "DEFAULT": "по умолчанию",
"ROOT_PACKAGE": "Корневой пакет", "ROOT_PACKAGE": "Корневой пакет",
"SORT_PRIORITY": "Приоритет сортировки", "SORT_PRIORITY": "Приоритет сортировки",
"OPTIONS": "Опции", "OPTIONS": "Опции",
@ -123,21 +123,21 @@
"NOTIFICATION_SETTINGS": "Настройки уведомлений", "NOTIFICATION_SETTINGS": "Настройки уведомлений",
"SILENCE_NOTIFICATIONS": "Отключить уведомления", "SILENCE_NOTIFICATIONS": "Отключить уведомления",
"STARTUP_NOTIFICATION": "Уведомление при запуске", "STARTUP_NOTIFICATION": "Уведомление при запуске",
"MAX_SLOTS": "Макс. слоты", "MAX_SLOTS": "Макс. слотов",
"API_NOTIFICATIONS": "Уведомления API", "API_NOTIFICATIONS": "Уведомления API",
"API_TOGGLE_HOTKEY": "Горячая клавиша API", "API_TOGGLE_HOTKEY": "Горячая клавиша API",
"DISMISS_NOTIFICATION": "Закрыть уведомление", "DISMISS_NOTIFICATION": "Отклонить уведомление",
"API_TOGGLE": "Переключить API", "API_TOGGLE": "Переключить API",
"CLICK": "клик", "CLICK": "клик",
"TAP": "тап", "TAP": "тап",
"HOLD_FOR_4S": "удерживать 4 с", "HOLD_FOR_4S": "удерживать 4с",
"ON": "Вкл", "ON": "Вкл",
"OFF": "Выкл", "OFF": "Выкл",
"PACKAGE_INFO": "Инфо пакета", "PACKAGE_INFO": "Информация о пакете",
"_TITLE": "Название", "_TITLE": "Название",
"_VERSION": "Версия", "_VERSION": "Версия",
"_CREATOR": "Автор(ы)", "_CREATOR": "Автор(ы)",
"_ABOUT": "О прг.", "_ABOUT": "О прогр.",
"_CREDITS": "Спасибо", "_CREDITS": "Спасибо",
"OK": "ОК", "OK": "ОК",
"BACK": "Назад", "BACK": "Назад",
@ -163,7 +163,7 @@
"DELETE_PACKAGE": "Удалить пакет", "DELETE_PACKAGE": "Удалить пакет",
"DELETE_OVERLAY": "Удалить оверлей", "DELETE_OVERLAY": "Удалить оверлей",
"SELECTION_IS_EMPTY": "Выбор пуст!", "SELECTION_IS_EMPTY": "Выбор пуст!",
"FORCED_SUPPORT_WARNING": "Принудительная поддержка опасна", "FORCED_SUPPORT_WARNING": "Принудительная поддержка может быть опасна.",
"TASK_IS_COMPLETE": "Задача выполнена!", "TASK_IS_COMPLETE": "Задача выполнена!",
"TASK_HAS_FAILED": "Задача провалена", "TASK_HAS_FAILED": "Задача провалена",
"SUNDAY": "Воскресенье", "SUNDAY": "Воскресенье",

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.