Ultra 2.7|Pre1

This commit is contained in:
redraz 2025-11-18 17:15:28 +03:00
parent 589be70874
commit ad67db0f49
129 changed files with 1544 additions and 2202 deletions

View File

@ -8,7 +8,9 @@
### Ultra - это функциональная кастомная прошивка для Nintendo Switch, с упором в разгон и улучшенный пользовательский опыт.
### [UltraNX](https://github.com/Ultra-NX/UltraNX/releases) Поддерживает все HOS, включая 20.5.0
### [UltraNX 2.6|R3](https://github.com/Ultra-NX/UltraNX/releases/tag/2.6-R3) Поддерживает все HOS до 20.5.0 включительно
### [UltraNX 2.7|Pre1](https://github.com/Ultra-NX/UltraNX/releases/tag/2.7-R1) Поддерживает все HOS до 21.0.0 включительно. Не полноценный релиз!
@ -82,7 +84,7 @@
* [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay) - Форк Status Monitor от kantorski.
* [Tetris](https://github.com/ppkantorski/Tetris-Overlay) - Та самая игра в виде оверлея. Работает только на последних версиях Ultrahand.
* [MasterVolume](https://github.com/averne/MasterVolume) - Регулировка глобальной громкости, позволяет поднять громкость выше максимума. Использовать аккуратно!
* [NX-FanControl](https://github.com/Zathawo/NX-FanControl) - Модуль для ручной регулировки оборотов кулера. Изменения применяются сразу, модуль смотрит на температуру SOC а не Skin, как Атмосфера.
* [NX-FanControl](https://github.com/Insektaure/NX-FanControl) - Модуль для ручной регулировки оборотов кулера. Изменения применяются сразу, модуль смотрит на температуру SOC а не Skin, как Атмосфера.
* [BT Audio](https://github.com/masagrator/BT_Audio-ovl) - Оверлей, позволяющий быстро отключаться\подключаться к bluetooth-гарнитуре.
* [Fizeau](https://github.com/averne/Fizeau) - Модуль для изменения цветового профиля экрана.
* [sys-tune](https://github.com/HookedBehemoth/sys-tune) - Оверлей-музыкальный плеер, работает в фоне.

View File

@ -6,7 +6,9 @@
#
### Ultra is a functional custom firmware for Nintendo Switch, with a focus on overclocking and an improved user experience.
### [UltraNX](https://github.com/Ultra-NX/UltraNX/releases) Supports all HOS, including 20.5.0
### [UltraNX 2.6|R3](https://github.com/Ultra-NX/UltraNX/releases/tag/2.6-R3) Supports all HOS up to and including 20.5.0
### [UltraNX 2.7|Pre1](https://github.com/Ultra-NX/UltraNX/releases/tag/2.7-R1) Supports all HOS up to and including 21.0.0. Not a full-fledged release!
@ -78,7 +80,7 @@
* [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay) - Status Monitor fork from kantorski.
* [Tetris](https://github.com/ppkantorski/Tetris-Overlay/) - "That" game in the form of an overlay. Works only on the latest versions of Ultrahand.
* [MasterVolume](https://github.com/averne/MasterVolume) - Global volume control, allows you to raise the volume above the maximum. Use with care!
* [NX-FanControl](https://github.com/Zathawo/NX-FanControl) - Module for manually adjusting the speed of the cooler. The changes are applied immediately, the module works from SOC temperature and not Skin temperature like Atmosphere.
* [NX-FanControl](https://github.com/Insektaure/NX-FanControl) - Module for manually adjusting the speed of the cooler. The changes are applied immediately, the module works from SOC temperature and not Skin temperature like Atmosphere.
* [BT Audio](https://github.com/masagrator/BT_Audio-ovl) - An overlay that allows you to quickly disconnect\connect to a bluetooth headset.
* [Fizeau](https://github.com/averne/Fizeau) - Module for changing the screen color profile.
* [sys-tune](https://github.com/HookedBehemoth/sys-tune) - Overlay music player, works in background.

View File

@ -0,0 +1,25 @@
# ソードアート・オンライン フラクチュアード デイドリーム 1.5.2.0
# BID: 2EEE840599DC7021
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8676768, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x86B12E0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7EB0F88, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,11 @@
# Atelier Resleriana: The Red Alchemist & the White Guardian 1.3
# BID: F140F141FDC4C331
ALL_FPS:
# MagicaCloth2.MagicaManager_TypeInfo
-
type: evaluate_write
address: [MAIN, 0x7760D60, 0xB8, 0, 0x10, 0x20, 0x10]
address_unsafe: true
value_type: uint32
value: "FPS_TARGET + 5"

View File

@ -1,11 +1,10 @@
# SONIC FORCES 1.1.0
# SONIC FORCES 1.1.0/1.2.0
# BID: 6D9EA94F8AAC00A8
# Game speed is tied to framerate
unsafeCheck: true
MASTER_WRITE:
# Remove double buffer
## REF: E8 37 00 B9 E8 03 1F 32
-
type: asm_a64
main_offset: 0xAD40FC
@ -13,6 +12,7 @@ MASTER_WRITE:
[mov, w8, 3]
]
# Block switching back to 30 FPS mode on loading screens
## REF: 08 10 40 F9 48 00 00 B4, replace STR
-
type: asm_a64
main_offset: 0x6173B0
@ -21,12 +21,14 @@ MASTER_WRITE:
]
ALL_FPS:
# Switch to 60 FPS Mode
## REF: 7F 7E 07 A9 6A A2 01 A9, ADRP + LDR below
-
type: write
address: [MAIN, 0x1CAC518, 0x28, 0x20, 0x14]
value_type: uint32
value: 1
# FPS target
## REF: 00 1D 40 BD 01 D0 37 1E, ADRP + LDR above it
-
type: evaluate_write
address: [MAIN, 0x1C38C28, 0x1C]

View File

@ -0,0 +1,43 @@
# 하늘의 궤적 the 1st 1.0.6.1
# BID: 6656BA1B5B8AC30A
DECLARATIONS:
# Lock Max Handheld Resolution to 720p instead of 900p
-
type: code
name: adjustDrResToNativeInHH
instructions: [
[cmp, w10, 1280],
[b.le, :goto1],
[adrp, x21, 0x730000],
[ldr, w21, [x21, 0x820]], ## REF: nn::oe::GetOperationMode in nnMain
[cbnz, w21, :goto1],
[mov, w10, 1280],
[mov, w8, 720],
:goto1, [stp, w10, w8, [x19, 0x10]],
[ret]
]
MASTER_WRITE:
## REF: 88 C2 88 1A 6A 22 02 29
-
type: asm_a64
main_offset: 0x2CF7B4
instructions: [
[bl, _adjustDrResToNativeInHH()]
]
ALL_FPS:
# Min Delta
## REF: C1 03 80 52 28 4D 28 9B, first ADRP + ADD below it
-
type: evaluate_write
address: [MAIN, 0x730850, 0x2C]
value_type: uint32
value: FPS_TARGET
# Dynamic Resolution
## REF: First function in .init_array section, ADRP + ADD + 0x220 (default float: 2)
## Adding there 0.95 by myself because game seems to have issues with reaching 60 FPS with 1.0
-
type: write
address: [MAIN, 0x7303D0]
value_type: float
value: 0.95

View File

@ -0,0 +1,43 @@
# 하늘의 궤적 the 1st 1.0.5
# BID: 8CFF66758D7BD507
DECLARATIONS:
# Lock Max Handheld Resolution to 720p instead of 900p
-
type: code
name: adjustDrResToNativeInHH
instructions: [
[cmp, w9, 1280],
[b.le, :goto1],
[adrp, x21, 0x65F000],
[ldr, w21, [x21, 0x830]], ## REF: nn::oe::GetOperationMode in nnMain
[cbnz, w21, :goto1],
[mov, w9, 1280],
[mov, w8, 720],
:goto1, [stp, w9, w8, [x19, 0x10]],
[ret]
]
MASTER_WRITE:
## REF: 69 22 02 29
-
type: asm_a64
main_offset: 0x2380A4
instructions: [
[bl, _adjustDrResToNativeInHH()]
]
ALL_FPS:
# Min Delta
## REF: 88 01 80 52 C1 03 80 52 28 4D 28 9B 29 00 80 52, first ADRP + ADD below it
-
type: evaluate_write
address: [MAIN, 0x65F860, 0x2C]
value_type: uint32
value: FPS_TARGET
# Dynamic Resolution
## REF: First function in .init_array section, ADRP + ADD + 0x220 (default float: 2)
## Adding there 0.95 by myself because game seems to have issues with reaching 60 FPS with 1.0
-
type: write
address: [MAIN, 0x65F378]
value_type: float
value: 0.95

View File

@ -0,0 +1,43 @@
# Trails in the Sky 1st Chapter 1.0.6
# BID: 2B18130BD191CAC5
DECLARATIONS:
# Lock Max Handheld Resolution to 720p instead of 900p
-
type: code
name: adjustDrResToNativeInHH
instructions: [
[cmp, w10, 1280],
[b.le, :goto1],
[adrp, x21, 0x732000],
[ldr, w21, [x21, 0x820]], ## REF: nn::oe::GetOperationMode in nnMain
[cbnz, w21, :goto1],
[mov, w10, 1280],
[mov, w8, 720],
:goto1, [stp, w10, w8, [x19, 0x10]],
[ret]
]
MASTER_WRITE:
## REF: 88 C2 88 1A 6A 22 02 29
-
type: asm_a64
main_offset: 0x2D07B4
instructions: [
[bl, _adjustDrResToNativeInHH()]
]
ALL_FPS:
# Min Delta
## REF: C1 03 80 52 28 4D 28 9B, first ADRP + ADD below it
-
type: evaluate_write
address: [MAIN, 0x732850, 0x2C]
value_type: uint32
value: FPS_TARGET
# Dynamic Resolution
## REF: First function in .init_array section, ADRP + ADD + 0x220 (default float: 2)
## Adding there 0.9 by myself because game seems to have issues with reaching 60 FPS without it
-
type: write
address: [MAIN, 0x7323D0]
value_type: float
value: 0.95

View File

@ -0,0 +1,31 @@
# DRAGON BALL: Sparking! ZERO 2.0.73
# BID: 7B53433FA04477FC
ALL_FPS:
# Disable bUseFixedFrameRate to unlock framerate
-
type: write
address: [MAIN, 0x9A2EA20, 0x9C4]
address_unsafe: true
value_type: uint32
# Default is 0x47, bUseFixedFrameRate |= 0x40
# By writing 7 we are making sure that other flags are maintained:
# bAllowMultiThreadedAnimationUpdate |= 4
# bOptimizeAnimBlueprintMemberVariableAccess |= 2
# bCanBlueprintsTickByDefault |= 1
value: 7
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x9A2FFF0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x9238B68, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,7 +1,5 @@
# The Great Ace Attorney Chronicles 1.0.0
# BID: 761CD556AB357C87
unsafeCheck: true
# BID: 1DA748FC9499882F
ALL_FPS:
# FPS lock

View File

@ -0,0 +1,25 @@
# Platform 8 1.0.4
# BID: 42A0B64E45AD9ABA
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x7910200, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7949910, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x69296E8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,18 @@
# Hitman Absolution 1.2.2RC1
# BID: 96B7F9BD973D298E
ALL_FPS:
# IdleFPS/ResponsiveFPS
# REF: 68 22 40 39 1F 01 00 71 A2 02 94 1A, first ADRP + ADD, add to it 0x38
-
type: evaluate_write
address: [MAIN, 0x2E7DA10, 0x70]
value_type: uint32
value: [FPS_TARGET, FPS_TARGET]
# DynamicResolutionScaling/FPSTarget
# REF: E0 1E 40 BD 01 10 2E 1E 00 20 21 1E, any result, first ADRP+ADD above that
-
type: evaluate_write
address: [MAIN, 0x2B7B328, 0x2C]
value_type: float
value: FPS_TARGET

View File

@ -0,0 +1,25 @@
# Rune Factory: Guardians of Azuma 1.1.1
# BID: F678FD2BB197125B
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8F68D40, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8FA2470, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7F816E8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,8 +1,6 @@
# Wolfenstein: Youngblood 1.5
# BID: 8B40EBBA7244C94A
unsafeCheck: true
ALL_FPS:
# rs_force460
-
@ -24,7 +22,7 @@ ALL_FPS:
value: "(30 / FPS_TARGET) * 0.984"
# com_adaptiveTickMaxHz
-
type: write
type: evaluate_write
address: [MAIN, 0x85F74E0]
value_type: int32
value: FPS_LOCK_TARGET

View File

@ -0,0 +1,25 @@
# The Exit 8 1.0.9
# BID: 5346BDF1EEC2BA4C
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x7614450, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x764DB60, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x66356E8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,74 @@
# 테일즈 오브 엑실리아 리마스터 1.0.1
# BID: D64B8283BD5CEA63
DECLARATIONS:
-
type: variable
name: patch_running
value_type: uint8
default_value: 0
-
type: code
name: applyCustomSpeed
instructions: [
[adrp, x4, $patch_running],
[ldrb, w4, [x4, $patch_running]],
[cbnz, w4, :goto1],
[stp, s0, s1, [x8, 0x6C]],
:goto1, [ret]
]
MASTER_WRITE:
# Block updating game speed
## REF: 00 85 0d 2d
-
type: asm_a64
main_offset: 0x244A5F4
instructions: [
[bl, _applyCustomSpeed()]
]
-
type: asm_a64
main_offset: 0x28EBB1C
instructions: [
[bl, _applyCustomSpeed()]
]
-
type: asm_a64
main_offset: 0x2B26CC4
instructions: [
[bl, _applyCustomSpeed()]
]
ALL_FPS:
# Game Speed
## REF: Global_TypeInfo
-
type: evaluate_write
address: [MAIN, 0x82C50C0, 0xB8, 0x6C]
value_type: float
value: [FPS_TARGET, "60 / FPS_TARGET"]
# Just in case, dunno if they are used for anything, but all of them were set to target strictly 30 FPS
# UnityEngine.Time::maximumDeltaTime
-
type: write
address: [MAIN, 0x9FCFBF8, 0x100]
value_type: float
value: [0.066666666, 0.066666666]
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x9FCFBF8, 0x48]
value_type: float
value: "1 / FPS_TARGET"
# UnityEngine.Application::targetFrameRate
-
type: evaluate_write
address: [MAIN, 0x84E1EB0]
value_type: uint32
value: FPS_TARGET
-
type: compare
compare_address: [VARIABLE, patch_running]
compare_type: "=="
compare_value: 0
address: [VARIABLE, patch_running]
value: 1

View File

@ -1,7 +1,5 @@
# WRC10 1.1.0
# BID: 69CACEEC5F01C418
unsafeCheck: true
# BID: 69CACEEC5F01C41B
ALL_FPS:
# OptimalFrameDuration_ms = (1000/FPS) - (0.07 * (1000/30)

View File

@ -0,0 +1,43 @@
# 空の軌跡 the 1st 1.0.6
# BID: 4583D73E326FFE7B
DECLARATIONS:
# Lock Max Handheld Resolution to 720p instead of 900p
-
type: code
name: adjustDrResToNativeInHH
instructions: [
[cmp, w10, 1280],
[b.le, :goto1],
[adrp, x21, 0x730000],
[ldr, w21, [x21, 0x820]], ## REF: nn::oe::GetOperationMode in nnMain
[cbnz, w21, :goto1],
[mov, w10, 1280],
[mov, w8, 720],
:goto1, [stp, w10, w8, [x19, 0x10]],
[ret]
]
MASTER_WRITE:
## REF: 6A 22 02 29, second result
-
type: asm_a64
main_offset: 0x2CF6E4
instructions: [
[bl, _adjustDrResToNativeInHH()]
]
ALL_FPS:
# Min Delta
## REF: C1 03 80 52 28 4D 28 9B, first ADRP + ADD below it
-
type: evaluate_write
address: [MAIN, 0x730850, 0x2C]
value_type: uint32
value: FPS_TARGET
# Dynamic Resolution
## REF: First function in .init_array section, ADRP + ADD + 0x220 (default float: 2)
## Adding there 0.95 by myself because game seems to have issues with reaching 60 FPS without it
-
type: write
address: [MAIN, 0x7303D0]
value_type: float
value: 0.95

View File

@ -35,9 +35,9 @@ ALL_FPS:
value: FPS_TARGET
# Dynamic Resolution
## REF: First function in .init_array section, ADRP + ADD + 0x220 (default float: 2)
## Adding there 0.9 by myself because game seems to have issues with reaching 60 FPS without it
## Adding there 0.95 by myself because game seems to have issues with reaching 60 FPS at 1.0
-
type: write
address: [MAIN, 0x72F3D0]
value_type: float
value: 0.95
value: 0.95

View File

@ -2,91 +2,6 @@
# BID: A6CE40DC3AEDB1BE
# Thanks to Hazerou for finding interval offsets
MASTER_WRITE:
# Remove double buffer
## REF: 08 07 40 B9 49 00 80 52
-
type: asm_a64
main_offset: 0x747C04
instructions: [
[mov, w9, 3]
]
# Fix helper functions to not corrupt stack
## REF: 42 00 80 52 BF FF 30 A9
-
type: asm_a64
main_offset: 0x747CE0
instructions: [
[mov, w2, 3]
]
## REF: 08 65 45 F9 42 00 80 52, first result
-
type: asm_a64
main_offset: 0x75ADFC
instructions: [
[mov, w2, 3]
]
## REF: 09 C0 9D 52 09 01 A0 72 E1 03 00 91 F6 03 00 91, beginning of function
-
type: asm_a64
main_offset: 0x676AC8
instructions: [
[sub, sp, sp, 0x50],
[stp, x22, x21, [sp, 0x20]],
[stp, x20, x19, [sp, 0x30]],
[stp, x29, x30, [sp, 0x40]],
[add, x29, sp, 0x40]
]
## REF: 00 61 00 91 42 00 80 52
-
type: asm_a64
main_offset: 0x676B1C
instructions: [
[mov, w2, 3]
]
## REF: End of function from code above, first ldp x29 x30
-
type: asm_a64
main_offset: 0x676B40
instructions: [
[ldp, x29, x30, [sp, 0x40]],
[ldp, x20, x19, [sp, 0x30]],
[ldp, x22, x21, [sp, 0x20]],
[add, sp, sp, 0x50]
]
## REF: 42 00 80 52 F6 03 00 91
-
type: asm_a64
main_offset: 0x74C280
instructions: [
[mov, w2, 3]
]
## REF: 42 00 80 52 16 69 69 F8, second result
-
type: asm_a64
main_offset: 0x75AE68
instructions: [
[mov, w2, 3]
]
## REF: 42 00 80 52 08 05 40 F9
-
type: asm_a64
main_offset: 0x7C2E64
instructions: [
[mov, w2, 3]
]
# Block transparency in some 2D elements to avoid issue with flickering at triple buffer
## REF: 49 91 89 B9 4A 41 48 B9
-
type: asm_a64
main_offset: 0x6A757C
instructions: [
[mov, x9, 0x102],
[ldr, w10, [x10, 0x840]],
[add, x20, x8, 0x820],
[lsl, x12, x10, 3],
[str, x9, [x20]]
]
ALL_FPS:
# Interval (Setting it to 0 unlocks framerate and sets dynamic game speed)
## REF: 17 6C 90 52 57 01 A0 72 08 7C 01 A9, first STR above it

View File

@ -2,81 +2,6 @@
# BID: D9BA7DB72FFAFECD
# Thanks to Hazerou for finding interval offsets
MASTER_WRITE:
# Remove double buffer
-
type: asm_a64
main_offset: 0x745E94
instructions: [
[mov, w9, 3]
]
# Fix helper functions to not corrupt stack
-
type: asm_a64
main_offset: 0x745F70
instructions: [
[mov, w2, 3]
]
-
type: asm_a64
main_offset: 0x75908C
instructions: [
[mov, w2, 3]
]
-
type: asm_a64
main_offset: 0x675198
instructions: [
[sub, sp, sp, 0x50],
[stp, x22, x21, [sp, 0x20]],
[stp, x20, x19, [sp, 0x30]],
[stp, x29, x30, [sp, 0x40]],
[add, x29, sp, 0x40]
]
-
type: asm_a64
main_offset: 0x6751EC
instructions: [
[mov, w2, 3]
]
-
type: asm_a64
main_offset: 0x675210
instructions: [
[ldp, x29, x30, [sp, 0x40]],
[ldp, x20, x19, [sp, 0x30]],
[ldp, x22, x21, [sp, 0x20]],
[add, sp, sp, 0x50]
]
-
type: asm_a64
main_offset: 0x74A510
instructions: [
[mov, w2, 3]
]
-
type: asm_a64
main_offset: 0x7590F8
instructions: [
[mov, w2, 3]
]
-
type: asm_a64
main_offset: 0x7BDCD4
instructions: [
[mov, w2, 3]
]
# Block transparency in some 2D elements to avoid issue with flickering at triple buffer
-
type: asm_a64
main_offset: 0x6A58C8
instructions: [
[mov, x9, 0x102],
[ldr, w10, [x10, 0x840]],
[add, x20, x8, 0x820],
[lsl, x12, x10, 3],
[str, x9, [x20]]
]
ALL_FPS:
# Interval (Setting it to 0 unlocks framerate and sets dynamic game speed)
-

View File

@ -0,0 +1,13 @@
# EA SPORTS FC 26 1.81.fdc
# BID: EBFF3A6C8EA30490
ALL_FPS:
# Internal FPS Lock
-
type: evaluate_write
address: [MAIN, 0xC63C6F8, 8]
value_type: double
value: FPS_TARGET
-
type: block
what: timing

View File

@ -21,9 +21,8 @@ DECLARATIONS:
type: code
name: designalCutscene
instructions: [
[mov, w1, wzr],
[adrp, x2, $cutscene_flag],
[str, w1, [x2, $cutscene_flag]],
[adrp, x1, $cutscene_flag],
[str, wzr, [x1, $cutscene_flag]],
[ret]
]
MASTER_WRITE:
@ -54,3 +53,4 @@ ALL_FPS:
compare_address: [VARIABLE, cutscene_flag]
value_type: refresh_rate
value: 30

View File

@ -0,0 +1,10 @@
# Little Noah: Scion of Paradise 1.41
# BID: 8CCC67A5A75CB8E5
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x3D2E180, 0x48]
value_type: float
value: "1 / FPS_TARGET"

View File

@ -0,0 +1,43 @@
# ドラゴンクエストXI 過ぎ去りし時を求めて S 1.0.4
# BID: 325E49E94A030B7E
ALL_FPS:
# r.DynamicResolution.MaxTimeBudget = 0.99 * (1000/FPS)
-
type: evaluate_write
address: [MAIN, 0x84EBDD8, 0]
value_type: float
value: ["0.99 * FRAMETIME_TARGET", "0.99 * FRAMETIME_TARGET"]
# r.DynamicResolution.MinTimeBudget = 0.9 * (1000/FPS)
-
type: evaluate_write
address: [MAIN, 0x84EBDF0, 0]
value_type: float
value: ["0.9 * FRAMETIME_TARGET", "0.9 * FRAMETIME_TARGET"]
# r.DynamicResolution.HeavyTimeBudget = 1.05 * (1000/FPS)
-
type: evaluate_write
address: [MAIN, 0x84EBE08, 0]
value_type: float
value: ["1.05 * FRAMETIME_TARGET", "1.05 * FRAMETIME_TARGET"]
# r.DynamicResolution.LightTimeBudget = 0.9 * (1000/FPS)
-
type: evaluate_write
address: [MAIN, 0x84EBE20, 0]
value_type: float
value: ["0.9 * FRAMETIME_TARGET", "0.9 * FRAMETIME_TARGET"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8500C48, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7878500, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,40 @@
# Trine 4: The Nightmare Prince 1.0.3
# BID: B70F06EAC87FA2AF
# REF: 00 00 00 00 00 00 41 40, its xref
DECLARATIONS:
-
type: variable
name: dr_target_max
value_type: double
default_value: 34
evaluate: "1.02 * FRAMETIME_TARGET"
-
type: variable
name: dr_target_min
value_type: double
default_value: 33
evaluate: "0.99 * FRAMETIME_TARGET"
MASTER_WRITE:
# Allow changing dynamic resolution timings
# Max
-
type: asm_a64
main_offset: 0x16DC3B8
instructions: [
[adrp, x8, $dr_target_max],
[ldr, d2, [x8, $dr_target_max]]
]
# Min
-
type: asm_a64
main_offset: 0x16DC404
instructions: [
[adrp, x10, $dr_target_min]
]
-
type: asm_a64
main_offset: 0x16DC418
instructions: [
[ldr, d4, [x10, $dr_target_min]]
]

View File

@ -0,0 +1,75 @@
# テイルズ オブ エクシリア リマスター 1.0.1
# BID: 4779B3A56B655418
DECLARATIONS:
-
type: variable
name: patch_running
value_type: uint8
default_value: 0
-
type: code
name: applyCustomSpeed
instructions: [
[adrp, x4, $patch_running],
[ldrb, w4, [x4, $patch_running]],
[cbnz, w4, :goto1],
[stp, s0, s1, [x8, 0x6C]],
:goto1, [ret]
]
MASTER_WRITE:
# Block updating game speed
## REF: 00 85 0d 2d
-
type: asm_a64
main_offset: 0x244A5F4
instructions: [
[bl, _applyCustomSpeed()]
]
-
type: asm_a64
main_offset: 0x28EB8FC
instructions: [
[bl, _applyCustomSpeed()]
]
-
type: asm_a64
main_offset: 0x2B26AA4
instructions: [
[bl, _applyCustomSpeed()]
]
ALL_FPS:
# Game Speed
## REF: Global_TypeInfo
-
type: evaluate_write
address: [MAIN, 0x82C50C0, 0xB8, 0x6C]
value_type: float
value: [FPS_TARGET, "60 / FPS_TARGET"]
# Just in case, dunno if they are used for anything, but all of them were set to target strictly 30 FPS
# UnityEngine.Time::maximumDeltaTime
-
type: write
address: [MAIN, 0x9FCFBF8, 0x100]
value_type: float
value: [0.066666666, 0.066666666]
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x9FCFBF8, 0x48]
value_type: float
value: "1 / FPS_TARGET"
# UnityEngine.Application::targetFrameRate
-
type: evaluate_write
address: [MAIN, 0x84E1EA8]
value_type: uint32
value: FPS_TARGET
-
type: compare
compare_address: [VARIABLE, patch_running]
compare_type: "=="
compare_value: 0
address: [VARIABLE, patch_running]
value: 1

View File

@ -0,0 +1,19 @@
# Unbox: Newbie's Adventure 1.0.3
# BID: 83A6B710A3F3F4F9
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x585F3A8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x4FBBEA0, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,19 @@
# Little Nightmares III 1.0.3
# BID: F3FFA17B5E56809F
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7CADE48, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x74B9210, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,25 @@
# Formula Legends 1.0.5
# BID: 2735E564A9BD3DA3
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x73BDEE8, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x83A1F68, 0]
value_type: float
value: [FRAMETIME_TARGET, FRAMETIME_TARGET]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x83DD780, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,25 @@
# Formula Legends 1.0.6
# BID: 84C1B1AE29550FC8
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x73B5EE8, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8399F68, 0]
value_type: float
value: [FRAMETIME_TARGET, FRAMETIME_TARGET]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x83D5780, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,25 @@
# Lynked: Banner of the Spark 1.2.2
# BID: 9646E1065A7E897B
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x7EAC348, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7EDA028, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x76DD488, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,19 @@
# Blue Fire 6.1.0
# BID: 2619FF1E39C93BAE
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x60E2D38, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x59178E8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,52 @@
# DRAGON BALL XENOVERSE 2 FOR NINTENDO SWITCH 1.25.01
# BID: 81E15238E2B6AABD
# 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, 0x4B26AD8, 0x698]
address_unsafe: true
value_type: float
value: 0.0
# Unknown
-
type: write
address: [MAIN, 0x4B26AD8, 0x6A4]
address_unsafe: true
value_type: float
value: 0.0
# Game Battle Speed Factor
-
type: evaluate_write
address: [MAIN, 0x4B26AD8, 0x6B0]
address_unsafe: true
value_type: uint32
value: VSYNC_TARGET
# Cutscenes Speed Factor
-
type: evaluate_write
address: [MAIN, 0x4B26AD8, 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, 0x244E090]
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, 0x242A3C8, 0x1844]
address_unsafe: true
value_type: float
value: "FPS_TARGET"

View File

@ -0,0 +1,21 @@
# No Man's Sky 6.10.0
# BID: DEA84284F054C693
DECLARATIONS:
-
type: variable
name: dr_target
value_type: float
default_value: 30
evaluate: FPS_TARGET
MASTER_WRITE:
# Redirect DR frametime target
# REF: 08 4E A8 52 00 01 27 1E 48 8F A8 52, ADRP + ADD + LDR above that
-
type: asm_a64
main_offset: 0x1F9BC40
instructions: [
[adrp, x9, $dr_target],
[ldr, s0, [x9, $dr_target]],
[nop]
]

View File

@ -1,8 +1,6 @@
# LEGO City Undercover 1.0.3
# BID: 32C590B064956546
unsafeCheck: true
ALL_FPS:
# Block to 30 FPS when prerendered cutscene is played
# REF: LegoCutscenes::s_fmvCutsceneAudioInstance
@ -12,6 +10,5 @@ ALL_FPS:
compare_type: "!="
compare_value_type: uint64
compare_value: 0
address: [MAIN]
value_type: refresh_rate
value: 30
value: 30

View File

@ -21,9 +21,8 @@ DECLARATIONS:
type: code
name: designalCutscene
instructions: [
[mov, w3, wzr],
[adrp, x4, $cutscene_flag],
[str, w3, [x4, $cutscene_flag]],
[adrp, x3, $cutscene_flag],
[str, wzr, [x3, $cutscene_flag]],
[ret]
]
MASTER_WRITE:
@ -54,3 +53,4 @@ ALL_FPS:
compare_address: [VARIABLE, cutscene_flag]
value_type: refresh_rate
value: 30

View File

@ -0,0 +1,10 @@
# DAVE THE DIVER 1.0.4.1075
# BID: 682B1552A9C571C9
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x98E9540, 0x48]
value_type: float
value: "1 / FPS_TARGET"

View File

@ -1,7 +1,5 @@
# Borderlands 3 1.0.3
# BID: AFDEB128252898AC
unsafeCheck: true
# BID: AE2768797E3337EE
ALL_FPS:
# r.DynamicRes.FrameTimeBudget

View File

@ -0,0 +1,10 @@
# Dinkum 1.0.2.44
# BID: 8B3609ECB49DBBED
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x5C65CA0, 0x48]
value_type: float
value: "1 / FPS_TARGET"

View File

@ -2,8 +2,6 @@
# BID: 33463E11899166BB
# What is still not adjusted: movement speed in cutscenes, 2D animations speed (it includes UI and 2D effects on 3D objects), none of them uses 1/30 nor 1/60 float
unsafeCheck: true
MASTER_WRITE:
# Triple buffer
-
@ -65,6 +63,7 @@ MASTER_WRITE:
- 0xE0800006
- 0xED901A00
- 0xEAF46ECE
-
type: bytes
main_offset: 0x1B1CF00
value_type: float

View File

@ -1,9 +1,7 @@
# Pikmin 1 1.1.0
# BID: C32B29CB5FBA96D9
# BID: 3A8E744D8F65CDEA
# Credits to Hazerou for discovering offsets
unsafeCheck: true
ALL_FPS:
# Block cutscenes to 30 FPS
-

View File

@ -0,0 +1,25 @@
# Mandragora: Whispers of the Witch Tree JPN 1.5.4.135908
# BID: AF42903B754D4859
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x5D56250, 0]
value_type: uint32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x6522698, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x6547F28, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,29 @@
# INAZUMA ELEVEN: Victory Road 1.2.0
# BID: 09AD6947189FC6D9
# Thanks to Fl4sh for finding out function responsible for FPS Lock
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
-
type: asm_a64
main_offset: 0xC35488
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
-
type: write
address: [MAIN, 0x3294F09]
value_type: uint8
value: 0

View File

@ -0,0 +1,19 @@
# Pandemic Shooter 1.0.0
# BID: 02D54DEBD40AF215
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x624FF78, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x5A8BE30, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -6,6 +6,7 @@ ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0xCDF1E20, 8]
address_unsafe: true
value_type: double
value: FPS_TARGET
-

View File

@ -0,0 +1,11 @@
# Once Upon A KATAMARI 1.0.2
# BID: FF53171B18C7701A
ALL_FPS:
# Dynamic Resolution
## REF: App.KatamariSin.AppSupport_TypeInfo
-
type: evaluate_write
address: [MAIN, 0x8F7C6D8, 0xB8, 0x18]
value_type: double
value: "0.9 * FRAMETIME_TARGET"

View File

@ -0,0 +1,12 @@
# Sworn 1.0.2
# BID: 87F1CEF6D52392AE
ALL_FPS:
# Dynamic Resolution target
## REF: DynamicResolution_TypeInfo
-
type: evaluate_write
address: [MAIN, 0x5F98160, 0xB8, 0]
address_unsafe: true
value_type: double
value: [FPS_TARGET, FRAMETIME_TARGET]

View File

@ -0,0 +1,10 @@
# PAC-MAN WORLD 2 Re-PAC 1.0.3
# BID: B70D6561B718C8E0
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x87DE838, 0x58]
value_type: uint32
value: "2352000 * FPS_TARGET"

View File

@ -2,10 +2,10 @@
# BID: 5AD255D6667B6EB5
ALL_FPS:
# fb::Settings<fb::GameRenderSettings>::s_settings + 0x20
# REF: fb::Settings<fb::GameRenderSettings>::s_settings
# Dynamic Resolution frametime target
-
type: evaluate_write
address: [MAIN, 0x9ED3AA0, 0x20]
value_type: float
value: "0.93 * FRAMETIME_TARGET"
value: "0.93 * FRAMETIME_TARGET"

View File

@ -0,0 +1,19 @@
# Unbound: Worlds Apart 1.0.3
# BID: 1B98D227021142B1
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x65C4920, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x6D886E8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,25 @@
# CRISIS CORE -FINAL FANTASY VII- REUNION Asia 1.0.4
# BID: 4710B51EB3A3C05C
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) rounded to 1 decimal
-
type: evaluate_write
address: [MAIN, 0x96CFDA8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x96FDCD0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x8EFC0E8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -22,4 +22,4 @@ ALL_FPS:
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing
what: timing

View File

@ -1,5 +1,5 @@
# 光明之響 龍奏回音 1.0.0
# BID: 069E3EFC16365FFD
# BID: F5AC009011277359
MASTER_WRITE:
# Triple buffer
@ -23,4 +23,4 @@ ALL_FPS:
type: evaluate_write
address: [MAIN, 0xFBEDBC]
value_type: float
value: "30.0 / FPS_TARGET"
value: "30.0 / FPS_TARGET"

View File

@ -0,0 +1,25 @@
# Trials of Mana 1.1.1
# BID: 92C25172D38DFEDB
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x5708B68, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x5F39E40, 0]
value_type: float
value: [FRAMETIME_TARGET, FRAMETIME_TARGET]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x5F5F8B8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,25 @@
# DRAGON QUEST I & II HD-2D Remake 1.0.1
# BID: 94B4FA4F36E01BE3
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x647E5F8, 0]
value_type: float
value: [FRAMETIME_TARGET, FRAMETIME_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x5C913E8, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x64AC358, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,25 @@
# Endling 1.3.0
# BID: 33DBE39C8A83F1E6
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x7453898, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# r.VSync
-
type: write
address: [MAIN, 0x6C85E08, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7481468, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,19 @@
# Hello Neighbor 2 1.1
# BID: AB75C103EEC0D5FC
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7B70CE8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x73733F8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,19 @@
# HYKE:Northern Light(s) 1.0.1
# BID: 2F723E9FD78D184B
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x8508958, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x9500260, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,19 @@
# HYKE:Northern Light(s) 1.0.2
# BID: F9248820D4E4406B
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x8507958, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x94FF260, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,74 @@
# Tales of Xillia Remastered 1.0.1
# BID: 171806C35E4152E7
DECLARATIONS:
-
type: variable
name: patch_running
value_type: uint8
default_value: 0
-
type: code
name: applyCustomSpeed
instructions: [
[adrp, x4, $patch_running],
[ldrb, w4, [x4, $patch_running]],
[cbnz, w4, :goto1],
[stp, s0, s1, [x8, 0x6C]],
:goto1, [ret]
]
MASTER_WRITE:
# Block updating game speed
## REF: 00 85 0d 2d
-
type: asm_a64
main_offset: 0x244A5F4
instructions: [
[bl, _applyCustomSpeed()]
]
-
type: asm_a64
main_offset: 0x28EBC5C
instructions: [
[bl, _applyCustomSpeed()]
]
-
type: asm_a64
main_offset: 0x2B26E04
instructions: [
[bl, _applyCustomSpeed()]
]
ALL_FPS:
# Game Speed
## REF: Global_TypeInfo
-
type: evaluate_write
address: [MAIN, 0x82C50C0, 0xB8, 0x6C]
value_type: float
value: [FPS_TARGET, "60 / FPS_TARGET"]
# Just in case, dunno if they are used for anything, but all of them were set to target strictly 30 FPS
# UnityEngine.Time::maximumDeltaTime
-
type: write
address: [MAIN, 0x9FCFBF8, 0x100]
value_type: float
value: [0.066666666, 0.066666666]
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x9FCFBF8, 0x48]
value_type: float
value: "1 / FPS_TARGET"
# UnityEngine.Application::targetFrameRate
-
type: evaluate_write
address: [MAIN, 0x84E1EA8]
value_type: uint32
value: FPS_TARGET
-
type: compare
compare_address: [VARIABLE, patch_running]
compare_type: "=="
compare_value: 0
address: [VARIABLE, patch_running]
value: 1

View File

@ -0,0 +1,212 @@
# Pokémon Legends: Z-A 1.0.1
# BID: 7222E13ECF6ADB32
DECLARATIONS:
-
type: variable
name: frametick
value_type: uint64
default_value: 0
-
type: const
name: max_delta
value: 66666667
-
type: variable
name: min_delta
value_type: uint64
default_value: 33333334
evaluate: "(FRAMETIME_TARGET * 1000000) + 1"
-
type: variable
name: fps_target
value_type: uint32
default_value: 30
evaluate: FPS_TARGET
-
type: const
name: 60FPSInNanoseconds
value: 16666667
-
type: const
name: 30FPSInNanoseconds
value: 33333334
-
type: variable
name: frametime
value_type: uint64
default_value: 0
-
type: variable
name: roll_flag
value_type: uint32
default_value: 0
-
type: variable
name: interval_pointer
value_type: uint64
default_value: 0
-
type: code
name: dynamicFPS
instructions: [
[stp, x29, x30, [sp, -16], "!"],
[mov, x29, sp],
[blr, x8],
[mrs, x11, cntpct_el0],
[adrp, x10, $frametick],
[ldr, x12, [x10, $frametick]],
[str, x11, [x10, $frametick]],
[mov, x10, x12],
[cbz, x10, :goto1],
[sub, x10, x11, x10],
[mov, x11, 625],
[mul, x10, x10, x11],
[mov, x11, 12],
[udiv, x10, x10, x11],
[mov, x12, $max_delta],
[movk, x12, $max_delta, 16],
[cmp, x10, x12],
[csel, x10, x10, x12, lt],
[adrp, x11, $min_delta],
[ldr, x11, [x11, $min_delta]],
[cmp, x10, x11],
[csel, x2, x10, x11, gt],
[adrp, x10, $fps_target],
[ldr, w10, [x10, $fps_target]],
[cmp, w10, 60],
[csel, x2, x11, x2, eq],
[adrp, x10, $frametime],
[str, x2, [x10, $frametime]],
[mov, x12, $30FPSInNanoseconds],
[movk, x12, $30FPSInNanoseconds, 16],
[mov, w13, 0x100],
[cmp, x2, x12],
[b.lt, :goto1],
[mov, w13, 0x101],
:goto1, [adrp, x10, $interval_pointer],
[ldr, x10, [x10, $interval_pointer]],
[strh, w13, [x10]],
[adrp, x10, $roll_flag],
[ldr, w11, [x10, $roll_flag]],
[cmp, w11, 0],
[b.eq, :goto2],
[sub, w11, w11, 1],
[str, w11, [x10, $roll_flag]],
:goto2, [ldp, x29, x30, [sp], 16],
[ret]
]
-
type: code
name: readDynamicFPS
instructions: [
[adrp, x10, $frametime],
[ldr, x11, [x10, $frametime]],
[cmp, x11, 0],
[csel, x2, x2, x11, eq],
[adrp, x10, $roll_flag],
[ldr, w10, [x10, $roll_flag]],
[cmp, w10, 0],
[adrp, x10, $min_delta],
[ldr, x10, [x10, $min_delta]],
[csel, x2, x2, x10, eq],
[adrp, x10, 0x5F0C000],
[add, x10, x10, 0x600], # Offset where is written flag when ladder is in use
[ldrb, w10, [x10]],
[mov, x12, $60FPSInNanoseconds],
[movk, x12, $60FPSInNanoseconds, 16], # Climbing animation expects from us animation to be multiplication of 1/60s, otherwise climbing speed is uneven and eventually we fall
[mov, x13, $30FPSInNanoseconds],
[movk, x13, $30FPSInNanoseconds, 16],
[cmp, x11, x13],
[csel, x11, x12, x13, lt],
[cmp, w10, 0],
[csel, x2, x2, x11, eq],
[br, x3]
]
-
type: code
name: setTo60FPSMode
instructions: [
[str, x0, [x26, 0x40]],
[add, x0, x0, 0x20],
[adrp, x8, $interval_pointer],
[str, x0, [x8, $interval_pointer]],
[mov, w8, 0x101],
[strh, w8, [x0]],
[sub, x0, x0, 0x20],
[ret]
]
-
type: const
name: rollFixTiming
value: 20000001
-
type: code
name: rollFix
instructions: [
[ldr, x8, [x0, 0x120]],
[tbnz, x8, 1, +8], # Bit 1 = ladder/rolling
[b, :goto1],
[adrp, x22, $frametime],
[ldr, x22, [x22, $frametime]],
[mov, x21, $rollFixTiming],
[movk, x21, $rollFixTiming, 16],
[cmp, x22, x21],
[b.gt, :goto1], # If our FPS target is not above 50, don't do anything
[mov, w21, 3],
[adrp, x22, $fps_target],
[ldr, w22, [x22, $fps_target]],
[udiv, w22, w22, w21], # Divide FPS target by 3 to get amount of frames necessary for rolling animation to not stuck our character
[adrp, x19, $roll_flag],
[str, w22, [x19, $roll_flag]],
:goto1, [ret]
]
MASTER_WRITE:
# Roll Fix, thanks to Fl4sh9174 for address
-
type: asm_a64
main_offset: 0x2962A74
instructions: [
[bl, _rollFix()]
]
# Restore original 30 FPS lock
-
type: asm_a64
main_offset: 0x175E864
instructions: [
[mov, w1, 2]
]
# Dynamic Resolution
## REF: 21 D8 61 5E 21 18 68 1E 00 18 61 1E, replace ADRP + ADD + LDR above it
-
type: asm_a64
main_offset: 0xD5AB0
instructions: [
[adrp, x9, $min_delta],
[ldr, d1, [x9, $min_delta]],
[nop]
]
# Calculate frame time by replacing call to nvnQueuePresentTexture
-
type: asm_a64
main_offset: 0x175F154
instructions: [
[bl, _dynamicFPS()]
]
# Replace reading hardcoded values
## REF: 02 D9 62 F8 08 00 40 F9 03 09 40 F9 60 00 1F D6, last REF. Check two other results if anything will go wrong somewhere
-
type: asm_a64
main_offset: 0x2891B08
instructions: [
[b, _readDynamicFPS()]
]
# Force game to start in 60 FPS mode for better game thread synchronization (writing 0 to 0x20) + enable constantly updating speed (writing 1 to 0x21)
## REF: 40 23 00 F9 08 04 40 F9
-
type: asm_a64
main_offset: 0x19DD334
instructions: [
[bl, _setTo60FPSMode()]
]

View File

@ -0,0 +1,21 @@
# SnowRunner 1.0.42
# BID: 8C7A99CBD1AEA208
# Just search for 0x42055555 in case of REF not working
DECLARATIONS:
-
type: variable
name: dr_target
value_type: float
default_value: 33.333333
evaluate: FRAMETIME_TARGET
MASTER_WRITE:
# Redirect DR frametime target
## REF: 01 04 0C 5E 00 10 2E 1E
-
type: asm_a64
main_offset: 0x1944154
instructions: [
[adrp, x10, $dr_target],
[ldr, s2, [x10, $dr_target]]
]

View File

@ -0,0 +1,14 @@
# Space Marshals 3 1.0.0
# BID: 0AFE1AE664D9AFA1
ALL_FPS:
# FPS Lock
## REF: CAppSWITCH xref, 0x10 above address storing pointer
-
type: evaluate_write
address: [MAIN, 0x5E14D0]
value_type: double
value: "1 / FPS_TARGET"
-
type: block
what: timing

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 @@
{
"name" : "sys-con",
"tid" : "690000000000000D",
"requires_reboot": false
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -9,13 +9,6 @@ autonogc=0
updater2p=0
bootprotect=0
[Atmosphere]
fss0=atmosphere/package3
cal0blank=1
kip1=atmosphere/kips/*
logopath=bootloader/res/bootscreen.bmp
icon=bootloader/res/atmo_cfw.bmp
[Safe Mode]
fss0=atmosphere/package3
cal0blank=1

View File

@ -1,11 +1,3 @@
[Semi Stock]
fss0=atmosphere/package3
emummc_force_disable=1
cal0blank=0
kip1=atmosphere/kips/*
logopath=bootloader/res/bootscreen.bmp
icon=bootloader/res/sys_cfw_nobox.bmp
[Semi Safe]
fss0=atmosphere/package3
emummc_force_disable=1

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,7 @@
{
"ams": {
"[PACK] UltraNX": "https://github.com/Ultra-NX/Ultra/releases/latest/download/Ultra.zip"
"[PACK] UltraNX 2.6|R3 Stable HOS ≤20.5.0": "https://github.com/Ultra-NX/Ultra/releases/latest/download/Ultra.zip",
"[PACK] UltraNX 2.7|Pre1 Test HOS ≤21.0.0": "https://github.com/Ultra-NX/UltraNX/releases/download/2.7-R1/Ultra.zip"
},
"misc": {
"Refresh AIO": "https://github.com/Ultra-NX/Ultra-Resources/releases/download/Homebrews/AIO.zip"

View File

@ -1,13 +0,0 @@
[config]
theme=romfs:/themes/oled_black_theme.ini
mtp_enabled=1
replace_hbmenu=0
install_emummc=1
install_prompt=0
[homebrew]
layout=1
hide_sphaira=0
[filebrowser]
show_hidden=1

View File

@ -1,477 +0,0 @@
{
"[Applet Mode]": "[Режим Applet]",
"No Internet": "Нет интернета",
"Switch-Handheld!": "Режим Портатива",
"Switch-Docked!": "Режим Дока",
"Warning! Logs are enabled, Sphaira will run slowly!": "Внимание! Включены логи, Sphaira будет работать медленно!",
"Audio disabled due to suspended game": "Звук отключён из-за приостановки игры",
"Are you sure you wish to cancel?": "Вы уверены, что хотите отменить?",
"An error occurred": "Произошла ошибка",
"If this message appears repeatedly, please open an issue.": "Если ошибка появляется неоднократно, пожалуйста, откройте issue",
"Menu Options": "Опции меню",
"Menu": "Меню",
"Theme": "Тема",
"Theme Options": "Опции темы",
"Select Theme": "Выбор темы",
"Music": "Музыка",
"12 Hour Time": "12-часовое время",
"Download Default Music": "Скачать стандартную музыку",
"Failed to download default_music.bfstm, please try again": "Не удалось загрузить default_music.bfstm, попробуйте снова",
"Overwrite current default music?": "Переписать текущую стандартную музыку?",
"Network": "Сеть",
"Network Options": "Опции сети",
"Ftp": "FTP",
"Mtp": "MTP",
"Nxlink": "NXLink",
"Nxlink Connected": "NXLink подключён",
"Nxlink Upload": "NXLink отправка",
"Nxlink Finished": "NXLink завершено",
"Hdd": "HDD",
"Hdd write protect": "Защита HDD от записи",
"Language": "Язык",
"Auto": "Авто",
"English": "English",
"Japanese": "日本語",
"French": "Français",
"German": "Deutsch",
"Italian": "Italiano",
"Spanish": "Español",
"Chinese": "中文",
"Korean": "한국어",
"Dutch": "Dutch",
"Portuguese": "Português",
"Russian": "Русский",
"Swedish": "Svenska",
"Vietnamese": "Vietnamese",
"Ukrainian": "Українська",
"Misc": "Прочее",
"Misc Options": "Прочие опции",
"Games": "Игры",
"Game Options": "Опции игр",
"Hide forwarders": "Скрыть форвардеры",
"Launch random game": "Запустить случайную игру",
"List meta records": "Список мета-записей",
"Entries": "Записи",
"Failed to list application meta entries": "Не удалось получить список мета-записей приложений",
"No meta entries found...\n": "Мета-записей не найдено...\n",
"Updating application record list": "Обновление списка записей приложений",
"Dump": "Дамп",
"Dump options": "Опции дампа",
"Dump Options": "Опции дампа",
"Select content to dump": "Выберите содержимое для дампа",
"Dump All": "Дамп всего",
"Dump Application": "Дамп приложения",
"Dump Patch": "Дамп патча",
"Dump AddOnContent": "Дамп дополнительного контента",
"Dump DataPatch": "Дамп патча данных",
"Created nested folder": "Создать вложенную папку",
"Append folder with .xci": "Добавить папку с .xci",
"Trim XCI": "Обрезать .xci",
"Label trimmed XCI": "Пометить обрезанный .xci",
"Multi-threaded USB transfer": "Многоядерная USB передача",
"Dump All Bins": "Дамп всех BIN-файлов",
"Dump XCI": "Дамп XCI",
"Dump Card ID Set": "Дамп набора ID карты",
"Dump Card UID": "Дамп UID карты",
"Dump Certificate": "Дамп сертификата",
"Dump Initial Data": "Дамп начальных данных",
"Select dump location": "Выберите место для дампа",
"microSD card (/dumps/)": "microSD (/dumps/)",
"USB transfer (Switch 2 Switch)": "Передача по USB (Switch 2 Switch)",
"/dev/null (Speed Test)": "/dev/null (тест скорости)",
"Dumping": "Снятие дампа",
"Dump successfull!": "Дамп выполнен успешно!",
"Dump failed!": "Сбой дампа!",
"Delete successfull!": "Удаление успешно!",
"Delete failed!": "Ошибка удаления!",
"Success": "Успех",
"Refresh": "Обновить",
"Create contents folder": "Создать папку \"Contents\"",
"Create save": "Создать сохранение",
"Title cache": "Кэш заголовков",
"Delete title cache": "Удалить кэш заголовков",
"Saves": "Сохранения",
"Save Options": "Опции сохранений",
"Account": "Пользователь",
"Data Type": "Тип данных",
"System": "Система",
"BCAT": "BCAT",
"Device": "Устройство",
"Temporary": "Временные",
"Cache": "Кэш",
"System BCAT": "BCAT (Система)",
"Backup": "Сделать бэкап",
"Auto backup": "Автоматический бэкап",
"Auto backup on restore": "Бэкап при восстановлении",
"Compress backup": "Сжимать бэкапы",
"Are you sure you want to backup save(s)?": "Вы уверены, что хотите сделать бэкап(ы)?",
"No saves found in ": "Сохранения не найдены в ",
"Backed up to ": "Бэкап сохранен в ",
"Backup successfull!": "Бэкап успешно создан!",
"Backup failed!": "Ошибка бэкапа!",
"Select backup location": "Выберите место для бэкапа",
"Select restore location": "Выберите место для восстановления",
"Restore save for: ": "Восстановить сохранение для: ",
"Are you sure you want to restore ": "Вы уверены, что хотите восстановить ",
"Restore successfull!": "Восстановление успешно!",
"Restore failed!": "Ошибка восстановления!",
"Themezer": "Themezer",
"Themezer Options": "Опции Themezer",
"Nsfw": "NSFW",
"Page": "Страница",
"Page %zu / %zu": "Страница %zu / %zu",
"Enter Page Number": "Номер страницы",
"Bad Page": "Неверная страница",
"Download theme?": "Скачать тему?",
"GitHub": "GitHub",
"Downloading json": "Загрузка json",
"Select asset to download for ": "Выберите ресурс для загрузки: ",
"Failed to download json": "Не удалось загрузить json",
"Failed to download app!": "Не удалось загрузить приложение!",
"FTP Install": "Установка по FTP",
"Connection Type: WiFi | Strength: ": "Тип подключения: WiFi | Сигнал: ",
"Connection Type: Ethernet": "Тип подключения: Ethernet",
"Connection Type: None": "Нет подключения",
"Host:": "Хост:",
"Port:": "Порт:",
"Username:": "Имя пользователя:",
"Password:": "Пароль:",
"SSID:": "SSID:",
"Passphrase:": "Пароль:",
"Failed to install, press B to exit...": "Не удалось установить по FTP, нажмите B для выхода...",
"Install success!": "Установка по FTP прошла успешно!",
"Install failed!": "Сбой установки по FTP!",
"MTP Install": "Установка по MTP",
"State: %s | Speed: %s": "Состояние: %s | Скорость: %s",
"Detached": "Отключено",
"Attached": "Подключено",
"Powered": "Заряжается",
"Default": "По умолчанию",
"Address": "Адрес",
"Configured": "Настроено",
"Suspended": "Приостановлено",
"USB 1.0 Low Speed": "USB 1.0",
"USB 1.1 Full Speed": "USB 1.1",
"USB 2.0 High Speed": "USB 2.0",
"USB 3.0 Super Speed": "USB 3.0",
"Drag'n'Drop (NSP, XCI, NSZ, XCZ) to the install folder": "Перетащите (NSP, XCI, NSZ, XCZ) в папку установки",
"Failed to install via MTP, press B to exit...": "Не удалось установить по MTP, нажмите B для выхода...",
"MTP install success!": "Установка по MTP успешна!",
"MTP install failed!": "Сбой установки по MTP!",
"USB Install": "Установка по USB",
"USB": "USB",
"Connected, waiting for file list...": "Подключено, ожидание списка файлов...",
"Connected, starting transfer...": "Подключено, начало передачи...",
"Failed to init usb, press B to exit...": "Не удалось инициализировать USB, нажмите B для выхода...",
"Waiting for connection...": "Ожидание подключения...",
"Transferring data...": "Передача данных...",
"USB connected, sending file list": "USB подключено, отправка списка файлов",
"Sent file list, waiting for command...": "Список файлов отправлен, ожидание команды...",
"waiting for usb connection...": "ожидание подключения USB...",
"Disable MTP for usb install": "MTP отключён для установки по USB",
"Re-enabled MTP": "MTP снова включен",
"Installed via usb": "Установлено по USB",
"Usb install success!": "Установка по USB успешна!",
"Usb install failed!": "Сбой установки по USB!",
"Press B to exit...": "Нажмите B для выхода...",
"GameCard Install": "Установка с картриджа",
"GameCard": "Картридж",
"GC": "GC",
"System memory %.1f GB": "NAND %.1f ГБ",
"microSD card %.1f GB": "microSD %.1f ГБ",
"Exit": "Выход",
"Install disabled...\nPlease enable installing via the install options.": "Установка отключена...\nПожалуйста, включите установку в опциях установки.",
"No GameCard inserted": "Картридж не вставлен",
"GameCard is already trimmed!": "Картридж уже обрезан!",
"WARNING: GameCard is already trimmed!": "ВНИМАНИЕ: Картридж уже обрезан!",
"Continue": "Продолжить",
"Gc install success!": "Установка с картриджа успешна!",
"Gc install failed!": "Сбой установки с картриджа!",
"IRS (Infrared Joycon Camera)": "IRS (инфракрасная камера JoyCon)",
"IRS": "IRS",
"Irs": "IRS",
"Ambient Noise Level: ": "Уровень фонового шума: ",
"Controller": "Контроллер",
"Pad ": "Геймпад ",
"HandHeld": "Портатив",
" (Available)": " (Доступно)",
" (Unsupported)": " (Не поддерживается)",
" (Unconnected)": " (Не подключено)",
"Rotation": "Поворот",
"0 (Sideways)": "0 (боком)",
"90 (Flat)": "90 (ровно)",
"180 (-Sideways)": "180 (-боком)",
"270 (Upside down)": "270 (перевернуто)",
"Colour": "Цвет",
"Grey": "Серый",
"Ironbow": "Фьюжн",
"Green": "Зеленый",
"Red": "Красный",
"Blue": "Синий",
"Light Target": "Светодиоды",
"All leds": "Все",
"Bright group": "Яркие",
"Dim group": "Тусклые",
"None": "Отключены",
"Gain": "Яркость",
"Negative Image": "Негатив",
"Normal image": "Отключён",
"Negative image": "Включен",
"Format": "Разрешение",
"Trimming Format": "Обрезка",
"External Light Filter": "Внешний светофильтр",
"Load Default": "По умолчанию",
"Web": "Браузер",
"Select URL": "Выберите URL",
"Enter custom URL": "Введите свой URL",
"Enter URL": "Введите URL",
"Advanced": "Продвинутые опции",
"Advanced Options": "Расширенные опции",
"Advanced options": "Расширенные опции",
"Logging": "Логи",
"Replace hbmenu on exit": "Замена hbmenu при выходе",
"Restore hbmenu?": "Восстановить hbmenu?",
"Restore": "Восстановить",
"Failed to find /switch/hbmenu.nro\nUse the Appstore to re-install hbmenu": "Не удалось найти /switch/hbmenu.nro\nИспользуйте Appstore для переустановки hbmenu",
"Failed to restore hbmenu, please re-download hbmenu": "Не удалось восстановить hbmenu, пожалуйста, загрузите его снова",
"Failed to restore hbmenu, using sphaira instead": "Не удалось восстановить hbmenu, используется sphaira",
"Restored hbmenu, closing sphaira": "hbmenu восстановлен, закрытие sphaira",
"Restored hbmenu": "hbmenu восстановлен",
"Restart Sphaira?": "Перезапустить Sphaira?",
"Press OK to restart Sphaira": "Нажмите OK для перезапуска Sphaira",
"Boost CPU during transfer": "Разгон CPU при передаче",
"Text scroll speed": "Скорость текста",
"Slow": "Медленная",
"Normal": "Обычная",
"Fast": "Быстрая",
"Set left-side menu": "Меню слева",
"Set right-side menu": "Меню справа",
"Install options": "Опции установки",
"Install Options": "Опции установки",
"Enable sysmmc": "Включить на сиснанде",
"Enable emummc": "Включить на эмунанде",
"Show install warning": "Предупрежд. при установке",
"Install location": "Место установки",
"System memory": "NAND",
"microSD card": "microSD",
"Allow downgrade": "Разрешить даунгрейд",
"Skip if already installed": "Пропуск установленного",
"Ticket only": "Только тикет",
"Skip base": "Пропустить базу игры",
"Skip patch": "Пропустить патч",
"Skip dlc": "Пропустить DLC",
"Skip data patch": "Пропустить патч данных",
"Skip ticket": "Пропустить тикет",
"Skip NCA hash verify": "Не проверять NCA hash",
"Skip RSA header verify": "Не проверять RSA header",
"Skip RSA NPDM verify": "Не проверять RSA NPDM",
"Ignore distribution bit": "Игнор. битa распределения",
"Convert to common ticket": "Конверт. в общий тикет",
"Convert to standard crypto": "Конверт. в стандарт. крипт.",
"Lower master key": "Снизить мастер-ключ",
"Lower system version": "Снизить версию системы",
"Disable erpt_reports": "Отключить \"erpt_reports\"",
"Homebrew": "Homebrew",
"Apps": "Приложения",
"Homebrew Options": "Опции Homebrew",
"Hide Sphaira": "Скрыть Sphaira",
"Install Forwarder": "Установить форвардер",
"Hide": "Скрыть",
"Show hidden": "Показать скрытые",
"WARNING: Installing forwarders will lead to a ban!": "ВНИМАНИЕ: \nУстановка в сиснанд приведет к бану!",
"Installing Forwarder": "Установка форвардера",
"Creating Program": "Создание программы",
"Creating Control": "Создание элемента управления",
"Creating Meta": "Создание меты",
"Writing Nca": "Запись NCA",
"Updating ncm database": "Обновление базы данных NCM",
"Pushing application record": "Добавление записи приложения",
"Failed to install forwarder": "Не удалось установить форвардер",
"Unstar": "Убрать из избранного",
"Star": "Добавить в избранное",
"Unstarred ": "Удалено из избранного: ",
"Starred ": "Добавлено в избранное: ",
"Failed to remove old forwarder, please manually remove it!": "Не удалось удалить старый форвардер, удалите его вручную!",
"AppStore": "AppStore",
"Appstore": "AppStore",
"Store": "Магазин",
"Filter: %s | Sort: %s | Order: %s": "Показывать: %s | Сортировка: %s | Порядок: %s",
"AppStore Options": "Опции AppStore",
"Info": "Информация",
"Changelog": "Список изменений",
"Details": "Подробности",
"version: %s": "версия: %s",
"updated: %s": "обновлено: %s",
"category: %s": "категория: %s",
"extracted: %.2f MiB": "извлечено: %.2f MiB",
"app_dls: %s": "app_dls: %s",
"More by Author": "Другое от автора",
"Leave Feedback": "Оставить отзыв",
"Visit Website": "Посетить сайт",
"FileBrowser": "Файлы",
"Files": "Файлы",
"%zd files": "%zd файлы",
"%zd dirs": "%zd разделы",
"File Options": "Опции файла",
"Show Hidden": "Показать скрытые",
"Folders First": "Папки в начале",
"Hidden Last": "Скрытые в конце",
"Split": "Разделить",
"Cut": "Вырезать",
"Copy": "Копировать",
"Copying ": "Копирование ",
"Paste": "Вставить",
"Paste file(s)?": "Вставить файл(ы)?",
"Pasting ": "Вставка ",
"Pasting": "Вставка",
"Rename": "Переименовать",
"Set New File Name": "Задайте новое имя файла",
"Failed to delete directory": "Не удалось удалить папку",
"Failed to delete file": "Не удалось удалить файл",
"Extract zip": "Распаковать .zip",
"Extract Options": "Опции распаковки",
"Extract here": "Распаковать сюда",
"Extract to root": "Распаковать в корень",
"Are you sure you want to extract to root?": "Вы уверены, что хотите распаковать в корень?",
"Extract to...": "Распаковать в...",
"Enter the path to the folder to extract into": "Введите путь к папке для распаковки",
"Extracting ": "Распаковка ",
"Extract success!": "Распаковка успешна!",
"Extract failed!": "Сбой распаковки!",
"Compress to zip": "Сжать в .zip",
"Compress Options": "Опции сжатия",
"Compress": "Сжать",
"Compress to...": "Сжать в...",
"Compressing ": "Сжатие ",
"Compress success!": "Сжатие успешно!",
"Compress failed!": "Сбой сжатия!",
"Create File": "Создать файл",
"Set File Name": "Укажите имя файла",
"Create Folder": "Создать папку",
"Set Folder Name": "Укажите имя папки",
"Creating ": "Создание ",
"View as text (unfinished)": "Открыть как текст (не доделано)",
"Upload": "Отправить",
"Select upload location": "Выберите место загрузки",
"No upload locations set!": "Места загрузки не заданы!",
"Uploading": "Отправка",
"Upload successfull!": "Отправка успешна!",
"Upload failed!": "Сбой Отправки!",
"Hash": "Хэш",
"Hash Options": "Опции хэша",
"Hashing": "Вычисление хэша",
"Failed to hash file...": "Не удалось вычислить хэш файла...",
"Ignore read only": "Игнор. только для чтения",
"Mount": "Монтировать",
"Sd": "Micro SD",
"Image System memory": "Альбом Сиснанда",
"Image microSD card": "Альбом Эмунанда",
"Empty...": "Пусто...",
"Open with DayBreak?": "Открыть с помощью DayBreak?",
"Launch ": "Запуск ",
"Launch option for: ": "Опции запуска для: ",
"Select launcher for: ": "Выберите загрузчик для: ",
"Close FileBrowser?": "Закрыть Файлы?",
"Sort By": "Сортировка",
"Sort Options": "Опции сортировки",
"Filter": "Показывать",
"All": "Всё",
"Emulators": "Эмуляторы",
"Tools": "Инструменты",
"Themes": "Темы",
"Legacy": "Легаси",
"Sort": "Сортировать",
"Size": "По размеру",
"Size (Star)": "По размеру (избр.)",
"Alphabetical": "По имени",
"Alphabetical (Star)": "По имени (избр.)",
"Updated": "По дате",
"Updated (Star)": "По дате (избр.)",
"Downloads": "По загрузкам",
"Likes": "По лайкам",
"ID": "По ID",
"Order": "Порядок",
"Descending": "По убыванию",
"Descending (down)": "По убыванию",
"Desc": "По убыванию",
"Ascending": "По возрастанию",
"Ascending (Up)": "По возрастанию",
"Asc": "По возрастанию",
"Layout": "Макет",
"List": "Список",
"Icon": "Иконки",
"Grid": "Сетка",
"Search": "Поиск",
"Options": "Опции",
"Split": "Разделить",
"OK": "ОК",
"Back": "Назад",
"Select": "Выбрать",
"Open": "Открыть",
"Close": "Закрыть",
"Launch": "Запуск",
"Restart": "Перезапустить",
"Next": "Далее",
"Prev": "Назад",
"Yes": "Да",
"No": "Нет",
"On": "Вкл",
"Off": "Выкл",
"Install": "Установить",
"Install Selected files?": "Установить выбранные файлы?",
"Installing ": "Установка ",
"Installed ": "Установлено ",
"Installed!": "Установлено!",
"Trying to load ": "Попытка загрузить ",
"Checking MD5": "Проверка MD5",
"Delete": "Удалить",
"Delete Selected files?": "Удалить выбранные файлы?",
"Are you sure you want to delete ": "Вы уверены, что хотите удалить ",
"Scanning ": "Сканирование ",
"Deleting ": "Удаление ",
"Deleting": "Удаление",
"Remove": "Удалить",
"Completely remove ": "Полностью удалить ",
"Removing ": "Удаляется ",
"Uninstalling ": "Деинсталляция ",
"Removed ": "Удалено ",
"Download": "Скачать",
"Downloading ": "Загрузка ",
"Downloaded ": "Загружено ",
"Download via the Network options!": "Скачайте через: Меню - Сеть",
"Update": "Обновить",
"Update avaliable: ": "Доступно обновление: ",
"Download update: ": "Скачать обновление: ",
"Updated to ": "Обновлено до ",
"Failed to download update": "Не удалось загрузить обновление",
"%zu hours %zu minutes remaining": "Осталось %zu ч %zu мин",
"%zu minutes %zu seconds remaining": "Осталось %zu мин %zu сек",
"%zu seconds remaining": "Осталось %zu сек",
"Loading...": "Загрузка...",
"Loading": "Загрузка",
"Empty!": "Пусто!",
"Not Ready...": "Не готово...",
"Error loading page!": "Ошибка загрузки страницы!"
}

File diff suppressed because it is too large Load Diff

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