Compare commits

...

3 Commits

Author SHA1 Message Date
redraz
793c4b81c2 Ultra 2.7|Pre2 2025-11-25 20:14:45 +03:00
redraz
90945e3415 UPD1.1 2025-11-19 17:59:43 +03:00
redraz
ad67db0f49 Ultra 2.7|Pre1 2025-11-18 17:15:28 +03:00
132 changed files with 1694 additions and 758 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|Pre2](https://github.com/Ultra-NX/UltraNX/releases/tag/2.7-R2) Поддерживает все HOS до 21.0.1 включительно. Не полноценный релиз!
@ -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|Pre2](https://github.com/Ultra-NX/UltraNX/releases/tag/2.7-R2) Supports all HOS up to and including 21.0.1. 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,7 +35,7 @@ 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]

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

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,7 +2,7 @@
# 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

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

@ -1,5 +1,5 @@
# 光明之響 龍奏回音 1.0.0
# BID: 069E3EFC16365FFD
# BID: F5AC009011277359
MASTER_WRITE:
# Triple buffer

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.

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 +1,12 @@
[config]
theme=romfs:/themes/oled_black_theme.ini
mtp_enabled=1
replace_hbmenu=0
replace_hbmenu=1
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!": "Ошибка загрузки страницы!"
}

View File

@ -0,0 +1,4 @@
[/switch/hbmenu.nro]
hidden=1
[/switch/sphaira/sphaira.nro]
hidden=1

View File

@ -604,6 +604,28 @@ minus=11
plus=12
home=13
[2563-0526] ; Redragon Harrow G808
b=1
a=2
x=5
y=4
l=7
r=8
zl=9
zr=10
minus=11
plus=12
lstick_click=14
rstick_click=15
simulate_home=plus+minus
[03eb-8041] ;L-TEK Dance Pad PRO
dpad_left=1
dpad_right=2
dpad_up=3
dpad_down=4
a=11
; ***************************************
; N64 / GC adapter
; ***************************************
@ -665,6 +687,20 @@ rstick_right=Z
rstick_up=Rz
rstick_down=-Rz
[18d1-9400] ;Google Stadia Controller
b=1
a=2
x=5
y=4
l=7
r=8
zl=brake
zr=accelerator
minus=11
plus=12
capture=17
home=18
; ***************************************
; Switch controllers
; ***************************************
@ -1424,10 +1460,3 @@ profile=xbox360
[2f24-0050]
profile=xbox360
[03eb-8041] ;L-TEK Dance Pad PRO
dpad_left=1
dpad_right=2
dpad_up=3
dpad_down=4
a=11

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