Ultra 2.3|R2

This commit is contained in:
redraz 2024-11-15 12:49:24 +03:00
parent 73b0904544
commit e1812455bb
74 changed files with 1252 additions and 55 deletions
README.mdREADME_ENG.md
SaltySD
exceptions.txt
plugins/FPSLocker/patches
010000A017F96000
010008E01E32A000
01000BB00E9D2000
010019B00BE72000
010019C00E9CC000
01001BE01908C000
010025C0145D4000
010027B01E32C000
010037A01F96C000
01003E601E324000
01004A001E32E000
010054E01D878000
01005D2016934000
010069C01AB82000
01006BD018B54000
01006D0017F7A000
010070A00E9CE000
010073C01AF34000
010076F00E9C8000
0100770008DD8000
0100853015E86000
010085500130A000
01008E401E6D0000
0100926016012000
010097F018538000
0100A9400C9C2000
0100AA80194B0000
0100B0500FE4E000
0100BF500207C000
0100BFE00E9CA000
0100C3800049C000
0100C9801FEE6000
0100CAF00B744000
0100D1501ABAE000
0100D3801E6CE000
0100D680194B2000
0100DA201EBF8000
0100E5600D446000
0100E6900A5A8000
0100E6B01BD3A000
0100E9001A94C000
0100E95004038000
0100F3400332C000
saltysd_bootstrap.elfsaltysd_bootstrap32_3k.elfsaltysd_bootstrap32_5k.elfsaltysd_core.elfsaltysd_core32.elf
atmosphere
config
switch

@ -74,7 +74,7 @@
* [ThemezerNX](https://github.com/suchmememanyskill/themezer-nx) + [NXThemes Installer](https://github.com/exelix11/SwitchThemeInjector) + [Theme Patches](https://github.com/exelix11/theme-patches) - Поиск и установка тем на свитч.
* [ReverseNX Tool](https://github.com/masagrator/ReverseNX-Tool) - Программа для управления ReverseNX.
* [Battery Desync Fix](https://github.com/CTCaer/battery_desync_fix_nx) - Программа для сброса контроллера батареи. Не используйте просто так!
* **`MemToolkitNX`** - Бенчмарк и Тестер памяти. Результат сильно зависит от разгона CPU.
* [MemToolkitNX](https://discord.com/channels/854839758815363072/1173171845139288114/1276196700750479480) - Бенчмарк и Тестер памяти. Результат сильно зависит от разгона CPU.
* Overlays:
* [Tetris](https://github.com/ppkantorski/Tetris-Overlay) - Та самая игра в виде оверлея. Работает только на последних версиях Ultrahand.
* [BT Audio](https://github.com/masagrator/BT_Audio-ovl) - Оверлей, позволяющий быстро отключаться/подключаться к bluetooth-гарнитуре.
@ -106,12 +106,12 @@
## Благодарности
* Meha
* B3711
* ppkantorski
* Cooler3D
* rashevskyv
* Meha
* duckbill
* snupt
* Cooler3D
* 4PDA
#### А так же - отдельная благодарность администрации и участникам Ultra Group
@ -120,15 +120,17 @@
## Поддержка
Если вам нравится проект, и у вас появилось желание поддержать меня копеечкой - я буду очень благодарен.
У меня в данный момент нет других заработков, так что любая денежная помощь очень ценна для меня.
### Tinkoff QR
![](https://github.com/Ultra-NX/Ultra-Resources/raw/main/Tinkoff%20small.png)
У меня в данный момент нет других заработков, так что любая денежная помощь очень ценна для меня.
```
TON: UQDioCnnPI5sk4KvxWzfPWsWbAyWCkzwhaYjy8Qpg2QwWMiL
BTC: 1HsC4z8X1YkZzcSKZz1t7MXRa7rPi8qChV
USDT: TQi3qLVrNGcr6avfVQBXRjpPTyvp5JZ7i2
Сбербанк: 2202200513345833
Tinkoff: 2200700170486970
```
СБП : +79168089980
Альфа : 2200152336577997
Tinkoff : 2200700170486970
```
### Tinkoff QR
![](https://github.com/Ultra-NX/Ultra-Resources/raw/main/Tinkoff%20small.png)

@ -102,12 +102,12 @@ Listed below are the licenses of those programs that have been modified specific
## Credits
* Meha
* B3711
* ppkantorski
* Cooler3D
* rashevskyv
* Meha
* duckbill
* snupt
* Cooler3D
* 4PDA
#### And also - a special thanks to the administration and members of Ultra Group

@ -14,10 +14,6 @@ X01003A400C3DA000
;1.1_46609 - 1.1.4_60709 crash on first loading
010075D00E8BA000
;Grandia Collection
;Only launcher is 64-bit, games are 32-bit
0100E0600BBC8000
;Immortals Fenyx Rising
;1.0.3, 1.3.4 crash
01004A600EC0A000

@ -0,0 +1,27 @@
# Gori: Cuddly Carnage 1.0.6
# BID: 1146A5AA87A93969
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x6A02E68, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x6A3C938, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x6245AA8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

@ -0,0 +1,30 @@
# S.T.A.L.K.E.R.: Call of Prypiat 1.0.1
# BID: 823FE359B4A99A4D
unsafeCheck: true
ALL_FPS:
# psLoadedFrameLimitFps
-
type: evaluate_write
address: [MAIN, 0x17DD77C]
value_type: float
value: FPS_LOCK_TARGET
# psCurrentFrameLimitFps
-
type: evaluate_write
address: [MAIN, 0x17FA8A0]
value_type: float
value: FPS_LOCK_TARGET
# psCurrentFrameLimitMs
-
type: evaluate_write
address: [MAIN, 0x1A6490C]
value_type: float
value: "1000 / FPS_LOCK_TARGET"
# ResolutionInfo::sDynresGPUBudgetMs
-
type: evaluate_write
address: [MAIN, 0x17DD758]
value_type: float
value: "0.99 * FRAMETIME_TARGET"

@ -1,5 +1,5 @@
# The Witcher 3: Wild Hund - Complete Edition 4.04b
# BID: D27FD8A515077F34
# BID: 4BC4A8A814FD46A4
unsafeCheck: true

@ -0,0 +1,13 @@
# Cel Damage HD 1.0.0
# BID: 03B058B1F6BE7195
# Credit to Hazerou for finding offset
# His note: 60 FPS may cause some Graphical Glitches like huge shadow and flashing light/colors appearing out of nowhere.
unsafeCheck: true
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x32EE1C]
value_type: float
value: ["1/FPS_TARGET", "FPS_TARGET"]

@ -1,5 +1,5 @@
# The Witcher 3: Wild Hund - Complete Edition 4.04b
# BID: D27FD8A515077F34
# BID: 4BC4A8A814FD46A4
unsafeCheck: true

@ -0,0 +1,27 @@
# HOT WHEELS UNLEASHED 2 1.0.11
# BID: FE78C7B94C4E791A
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0xAD73888, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0xB58D090, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xB631E08, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

@ -0,0 +1,27 @@
# GUNDAM BREAKER 4 1.6.0
# BID: EA4853C29547CBBC
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x9F97D48, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x9FC57E8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x97C9DA8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

@ -0,0 +1,30 @@
# S.T.A.L.K.E.R.: Clear Sky 1.0.1
# BID: 38171F8A5687B940
unsafeCheck: true
ALL_FPS:
# psLoadedFrameLimitFps
-
type: evaluate_write
address: [MAIN, 0x17BD76C]
value_type: float
value: FPS_LOCK_TARGET
# psCurrentFrameLimitFps
-
type: evaluate_write
address: [MAIN, 0x17DA8E8]
value_type: float
value: FPS_LOCK_TARGET
# psCurrentFrameLimitMs
-
type: evaluate_write
address: [MAIN, 0x1A4436C]
value_type: float
value: "1000 / FPS_LOCK_TARGET"
# ResolutionInfo::sDynresGPUBudgetMs
-
type: evaluate_write
address: [MAIN, 0x17BD748]
value_type: float
value: "0.99 * FRAMETIME_TARGET"

@ -0,0 +1,12 @@
# Shadows of the Damned: Hella Remastered 1.0.1
# BID: 5B863A6EFCE084B0
unsafeCheck: true
ALL_FPS:
# Bool Lock FPS, ref: LDR S0, [X0,#0x694]
-
type: write
address: [MAIN, 0x3A8A2F8]
value_type: uint32
value: 0

@ -0,0 +1,27 @@
# DRAGON QUEST III HD-2D Remake 1.0.1
# BID: 6F49452BD0B343B1
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x5A9D3E8, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x6289E28, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x62B7B68, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

@ -0,0 +1,30 @@
# S.T.A.L.K.E.R.: Shadow Of Chornobyl 1.0.1
# BID: 0214CA2211DE8313
unsafeCheck: true
ALL_FPS:
# psLoadedFrameLimitFps
-
type: evaluate_write
address: [MAIN, 0x16494EC]
value_type: float
value: FPS_LOCK_TARGET
# psCurrentFrameLimitFps
-
type: evaluate_write
address: [MAIN, 0x16659F0]
value_type: float
value: FPS_LOCK_TARGET
# psCurrentFrameLimitMs
-
type: evaluate_write
address: [MAIN, 0x18CDACC]
value_type: float
value: "1000 / FPS_LOCK_TARGET"
# ResolutionInfo::sDynresGPUBudgetMs
-
type: evaluate_write
address: [MAIN, 0x16492F0]
value_type: float
value: "0.99 * FRAMETIME_TARGET"

@ -0,0 +1,12 @@
# EA SPORTS FC 25 1.74.9f94
# BID: 0181E008CA25A289
unsafeCheck: true
ALL_FPS:
# Internal FPS Lock
-
type: evaluate_write
address: [MAIN, 0xCDFCA68, 8]
value_type: double
value: FPS_TARGET

@ -0,0 +1,27 @@
# Ghostbusters: Spirits Unleashed Ecto Edition 1.10.0
# BID: 090A100AA49CE00F
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0xBBFBF70, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xBC21B48, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0xB42B9B8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

@ -0,0 +1,31 @@
# SHIN MEGAMI TENSEI V: Vengeance 1.0.3 US/EUR
# BID: 0A4F14A5C12F470A
unsafeCheck: true
MASTER_WRITE:
# Block from reapplying t.MaxFPS by game, REF: 01 E4 00 2F 00 AC 21 1E 08 00 40 F9 08 75 41 F9, nop BLR X8 after LDR X8, [X8,#0x2E8]
-
type: bytes
main_offset: 0x3780DD0
value_type: uint32
value: 0xD503201F
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x7AAFBB8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# r.VSync
-
type: write
address: [MAIN, 0x7273AD0, 0]
value_type: uint32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7AD5858, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]

@ -0,0 +1,27 @@
# The Plucky Squire 1.0.5
# BID: 0A1AC10CCFE46061
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x63A30F8, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 1 decimal
-
type: evaluate_write
address: [MAIN, 0x6B72668, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x6BA0328, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

@ -0,0 +1,27 @@
# Mario & Luigi: Brothership 1.0.0
# BID: 59874C9B530095AC
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x651F708, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x6CEC8C8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x6D1A498, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

@ -1,5 +1,5 @@
# The Witcher 3: Wild Hund - Complete Edition 4.04b
# BID: D27FD8A515077F34
# BID: 4BC4A8A814FD46A4
unsafeCheck: true

@ -0,0 +1,27 @@
# LEGO Horizon Adventures 1.1.0
# BID: 2D99FA4793E426C3
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x90FC980, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0xA0CA138, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xA104AE0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

@ -1,5 +1,5 @@
# The Witcher 3: Wild Hund - Complete Edition 4.04b
# BID: D27FD8A515077F34
# BID: 4BC4A8A814FD46A4
unsafeCheck: true

@ -0,0 +1,11 @@
# Monster Hunter Generations Ultimate 1.4.0
# BID: FB08F1D20FD1204F
unsafeCheck: true
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x18A6210, 0x243C]
value_type: float
value: FPS_LOCK_TARGET

@ -0,0 +1,32 @@
# No Man's Sky 5.2.2
# BID: 9AA64F897E1D50BA
unsafeCheck: true
MASTER_WRITE:
# Redirect DR frametime target to MAIN+0x4962F00
-
type: bytes
main_offset: 0x1F9B6B8
value_type: uint32
value: 0xD503201F
-
type: bytes
main_offset: 0x1F9B6C4
value_type: uint32
value:
- 0xF0014E32
- 0xB9400408
- 0xBD4F0240
# default value
-
type: bytes
main_offset: 0x4962F00
value_type: float
value: 33.3333333333
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x4962F00]
value_type: float
value: FRAMETIME_TARGET

@ -0,0 +1,17 @@
# 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
-
type: compare
compare_address: [MAIN, 0x2590998]
compare_type: "!="
compare_value_type: uint64
compare_value: 0
address: [MAIN]
value_type: refresh_rate
value: 30

@ -0,0 +1,27 @@
# The Smurfs - Dreams 1.0.1
# BID: C124FFD193F533B4
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x831F958, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x92DCDE8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x9317260, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

@ -0,0 +1,27 @@
# The Smurfs - Dreams 1.0.2
# BID: E08769D5B56A5A25
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x8321958, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x92DEDE8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x9319260, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

@ -0,0 +1,12 @@
# PowerWash Simulator 1.9.1
# BID: 7FF42DE6AA57290B
unsafeCheck: false
ALL_FPS:
# FuturLab.SingletonMonoBehaviour<FrameRateLimiter>_TypeInfo (don't block FPSlocker internal lock because game's lock is kinda shit)
-
type: evaluate_write
address: [MAIN, 0x5FA0BD8, 0xB8, 0, 0x28]
value_type: int32
value: FPS_LOCK_TARGET

@ -0,0 +1,12 @@
# DAVE THE DIVER 1.0.3.938
# BID: 54300203FF8ABCC6
unsafeCheck: true
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x97BB3C0, 0x48]
value_type: float
value: "1 / FPS_TARGET"

@ -0,0 +1,77 @@
# Tokyo Mirage Sessions #FE Encore 1.0.0
# 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
-
type: bytes
main_offset: 0x2F3CD8
value_type: uint32
value: 0xE3A01003
-
type: bytes
main_offset: 0x35C218
value_type: uint32
value: 0xE3A00003
-
type: bytes
main_offset: 0x35C2C0
value_type: uint32
value: 0xE3A02003
-
type: bytes
main_offset: 0x35C2D0
value_type: uint32
value: 0xE3A02003
# Code Cave, read speed from MAIN + 0x1B1CF00
# Animation speed
# Jump to MAIN + 0x4EFBE0
-
type: bytes
main_offset: 0x1CE4B4
value_type: uint32
value: 0xEA0C85C9
-
type: bytes
main_offset: 0x4EFBE0
value_type: uint32
value:
- 0xE28F0616
- 0xE30D1318
- 0xE0800001
- 0xE3A01802
- 0xE0800001
- 0xED909A00
- 0xEAF37A2E
# Movement speed
# Jump to MAIN + 0x4EFBFC
-
type: bytes
main_offset: 0x20B750
value_type: uint32
value: 0xEA0B9129
-
type: bytes
main_offset: 0x4EFBFC
value_type: uint32
value:
- 0xE28F0616
- 0xE30D62FC
- 0xE0800006
- 0xE3A06802
- 0xE0800006
- 0xED901A00
- 0xEAF46ECE
type: bytes
main_offset: 0x1B1CF00
value_type: float
value: 0.0333333333
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x1B1CF00]
value_type: float
value: 1 / FPS_TARGET

@ -0,0 +1,22 @@
# Pikmin 1 1.1.0
# BID: C32B29CB5FBA96D9
# Credits to Hazerou for discovering offsets
unsafeCheck: true
ALL_FPS:
# Block cutscenes to 30 FPS
-
type: compare
compare_address: [MAIN, 0x749A3C]
compare_type: "!="
compare_value_type: uint32
compare_value: 0
address: [MAIN]
value_type: refresh_rate
value: 30
-
type: evaluate_write
address: [MAIN, 0x7606A0]
value_type: uint32
value: VSYNC_TARGET

@ -0,0 +1,12 @@
# Good Job! 1.0.0
# BID: 951D09EECE122A47
unsafeCheck: true
ALL_FPS:
# fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x4D38EF8, 0x48]
value_type: float
value: 1 / FPS_TARGET

@ -0,0 +1,34 @@
# Bloodstained: Ritual of the Night 1.60
# BID: 461B14E505AB9555
unsafeCheck: true
MASTER_WRITE:
# Disable double buffer
-
type: bytes
main_offset: 0xB080C02
value_type: int8
value: 0x53
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0xCC20CC8, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0xD450E90, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xD477F10, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

@ -0,0 +1,27 @@
# The Witcher 3: Wild Hund - Complete Edition 4.04b
# BID: 4BC4A8A814FD46A4
unsafeCheck: true
ALL_FPS:
# DRGameTargetFrameTimeInMs
-
type: evaluate_write
address: [MAIN, 0x41312B4]
value_type: float
value: "0.945 * FRAMETIME_TARGET"
# DRCinematicTargetFrameTimeInMs
-
type: evaluate_write
address: [MAIN, 0x41312E4]
value_type: float
value: "0.945 * FRAMETIME_TARGET"
# LimitFPS
-
type: evaluate_write
address: [MAIN, 0x411DCFC]
value_type: int32
value: FPS_LOCK_TARGET
-
type: block
what: timing

@ -1,27 +0,0 @@
# The Witcher 3: Wild Hund - Complete Edition 4.04b
# BID: D27FD8A515077F34
unsafeCheck: true
ALL_FPS:
# DRGameTargetFrameTimeInMs
-
type: evaluate_write
address: [MAIN, 0x41312B4]
value_type: float
value: "0.945 * FRAMETIME_TARGET"
# DRCinematicTargetFrameTimeInMs
-
type: evaluate_write
address: [MAIN, 0x41312E4]
value_type: float
value: "0.945 * FRAMETIME_TARGET"
# LimitFPS
-
type: evaluate_write
address: [MAIN, 0x411DCFC]
value_type: int32
value: FPS_LOCK_TARGET
-
type: block
what: timing

@ -0,0 +1,11 @@
# Monster Hunter XX Nintendo Switch Ver. 1.5.1
# BID: 9D4C86E6EF74504A
unsafeCheck: true
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x214B898, 0x484C]
value_type: float
value: FPS_LOCK_TARGET

@ -0,0 +1,16 @@
# Yakuza Kiwami 1.00
# BID: 53F407A2CFBF5202
unsafeCheck: true
ALL_FPS:
# Block cutscenes to 30 FPS to fix glitches, experimental
-
type: compare
compare_type: "!="
compare_value_type: uint64
compare_address: [MAIN, 0x2596E00]
compare_value: 0
address: [MAIN]
value_type: refresh_rate
value: 30

@ -0,0 +1,13 @@
# Valkyria Chronicles 1.0.0
# BID: FE77FFB8CBFB3A5C
# 2D Animations speed is still tied to framerate
unsafeCheck: true
ALL_FPS:
# 3D Game Speed
-
type: evaluate_write
address: [MAIN, 0x95CA9C]
value_type: float
value: "60 / FPS_TARGET"

@ -0,0 +1,27 @@
# SOUTH PARK: SNOW DAY! 1.0.10
# BID: 9A2DB2F402A31811
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x7E96DB8, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 1 decimal
-
type: evaluate_write
address: [MAIN, 0x8662488, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8687EF8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

@ -0,0 +1,27 @@
# Poppy Playtime: Chapter 2 1.1
# BID: E3A3FC8EEC76A4FB
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x640E6A8, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x73F4290, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x742E790, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

@ -0,0 +1,67 @@
# Pikmin 2 1.1.0
# BID: 9A257FAB83444214
# Credits to Hazerou for finding offsets
unsafeCheck: true
ALL_FPS:
-
type: write
address: [MAIN, 0xC104B0, 0x28]
value_type: uint32
value: 1
# Block cutscenes to 30 FPS
-
type: evaluate_compare
compare_address: [MAIN, 0xC18080]
compare_type: "<="
compare_value_type: uint32
compare_value: 0x4B
address: [MAIN, 0xC0C040, 0xE0]
value_type: float
value: "1 / 30"
-
type: compare
compare_address: [MAIN, 0xC18080]
compare_type: "<="
compare_value_type: uint32
compare_value: 0x4B
address: [MAIN, 0xC0C040, 0x100]
value_type: float
value: 2
-
type: compare
compare_address: [MAIN, 0xC18080]
compare_type: "<="
compare_value_type: uint32
compare_value: 0x4B
address: [MAIN]
value_type: refresh_rate
value: 30
-
type: evaluate_compare
compare_address: [MAIN, 0xC18080]
compare_type: "<"
compare_value_type: uint32
compare_value: 0x49
address: [MAIN, 0xC0C040, 0xE0]
value_type: float
value: "1 / FPS_TARGET"
-
type: evaluate_compare
compare_address: [MAIN, 0xC18080]
compare_type: "<"
compare_value_type: uint32
compare_value: 0x49
address: [MAIN, 0xC0C040, 0x100]
value_type: float
value: "60 / FPS_TARGET"
-
type: compare
compare_address: [MAIN, 0xC18080]
compare_type: "<"
compare_value_type: uint32
compare_value: 0x49
address: [MAIN]
value_type: refresh_rate
value: 0

@ -0,0 +1,35 @@
# Disney Epic Mickey: Rebrushed 1.0.3
# BID: EE2CAB96FB6BEDA9
unsafeCheck: true
MASTER_WRITE:
# Don't lock prerendered cutscenes to 30 FPS
# REF: C1 02 40 FD 29 08 60 1E 61 1E 40 FD / second result, search for LDRB W8, [X19,#0x30] above it
-
type: bytes
main_offset: 0xF6E9E8
value_type: uint32
value: 0x2A1F03E8
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x6E34A58, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x6E626F8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x6665658, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

@ -0,0 +1,22 @@
# Ni no Kuni: Wrath of the White Witch 1.0.2
# BID: C32B29CB5FBA96D9
unsafeCheck: true
ALL_FPS:
# Game speed value
-
type: evaluate_write
address: [MAIN, 0x2218B44, 0x20]
value_type: float
value: "1 / FPS_TARGET"
# Play prerendered cutscenes only at 60 FPS
-
type: evaluate_compare
compare_address: [MAIN, 0x1728B58]
compare_type: "!="
compare_value_type: uint32
compare_value: 0
address: [MAIN]
value_type: refresh_rate
value: 60

@ -0,0 +1,14 @@
# 戦場のヴァルキュリア for Nintendo Switch 1.0.1
# BID: A184B59D5091B68A
# Main 2D Animations speed is still tied to framerate
# Thanks to ~Arch for offset
unsafeCheck: true
ALL_FPS:
# 3D Game Speed
-
type: evaluate_write
address: [MAIN, 0x957E1C]
value_type: float
value: "60 / FPS_TARGET"

@ -0,0 +1,13 @@
# Card-en-Ciel 1.0.4
# BID: 393323C7FBCBD72D
unsafeCheck: true
ALL_FPS:
# Internal FPS Lock
# REF: look at nn::os::SleepThread() called in nnMain()
-
type: evaluate_write
address: [MAIN, 0x2055248, 0x5C]
value_type: float
value: 1 / FPS_LOCK_TARGET

@ -0,0 +1,27 @@
# TinTin Reporter - Cigars of the Pharaoh 1.4.0
# BID: ACBD89C999804FD2
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (default is 50 ms xD)
-
type: evaluate_write
address: [MAIN, 0x7868B48, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x78964B8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x709A278, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

@ -0,0 +1,127 @@
# Xenoblade Chronicles 2 2.1.0
# BID: F77F1559371C0EC6
unsafeCheck: true
MASTER_WRITE:
# Dynamic speed
# Jump before pushing frame to the end of .plt, which is 0x8B3900 (backup: MOV W8, #0x21A0)
-
type: bytes
main_offset: 0x700164
value_type: uint32
value: 0x1406CDE7
# Game speed math, write data to unused .bss, tick at 0x15ECF00, game speed at tick at 0x15ECF08, take min delta from 0x15ECF10
-
type: bytes
main_offset: 0x8B3900
value_type: uint32
value:
- 0x97FFFB80
- 0xB00069C2
- 0xF9478041
- 0xF9078040
- 0xB5000061
- 0x52843408
- 0x17F93214
- 0xCB010000
- 0x97FFFB7C
- 0x1E25D002
- 0x52807D01
- 0x9AC10800
- 0x9E220000
- 0x52848001
- 0x72A92E81
- 0x1E270021
- 0x14000018
- 0x900016E0
- 0xF9406800
- 0xB4FFFE40
- 0xBD007800
- 0xBD007C00
- 0xF0001B60
- 0xF9416400
- 0xBD008000
- 0xB00069C0
- 0xBD0F0800
- 0x17FFFFEA
- 0x1E2E1001
- 0x1E221822
- 0x1E222000
- 0x5400006B
- 0x1E204040
- 0x17FFFFF0
- 0xB00069C0
- 0xBD4F1002
- 0x1E222000
- 0x54FFFD88
- 0x1E204040
- 0x17FFFFEA
- 0x1E211800
- 0x17FFFFF3
# Patch wind speed to take game speed from MAIN + 0x15ECF08
-
type: bytes
main_offset: 0x747DD8
value_type: uint32
value:
- 0xB0007528
- 0xBD4F0906
# Redirect DR timing to MAIN + 0x15ECF18
-
type: bytes
main_offset: 0x6AA14C
value_type: uint32
value:
- 0xD0007A08
- 0xBD4F1900
# Default values
-
type: bytes
main_offset: 0x15ECF08
value_type: float
value: [0.0333333333, 0.0333333333, 0.0333333333, 0.0166666666]
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0xB74BF0]
value_type: uint32
value: ["VSYNC_TARGET", "VSYNC_TARGET"]
-
type: evaluate_write
address: [MAIN, 0x15ECF10]
value_type: float
value: "1 / FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0x15ECF18]
value_type: float
value: "(1 / FPS_TARGET) / VSYNC_TARGET"
# Cutscenes in 30 FPS
-
type: compare
compare_type: "=="
compare_value_type: uint8
compare_value: 1
compare_address: [MAIN, 0xBD7F40]
address: [MAIN]
value_type: refresh_rate
value: 30
-
type: compare
compare_type: "=="
compare_value_type: uint8
compare_value: 1
compare_address: [MAIN, 0xBD7F40]
address: [MAIN, 0x15ECF10]
value_type: float
value: 0.0333333333
-
type: compare
compare_type: "=="
compare_value_type: uint8
compare_value: 1
compare_address: [MAIN, 0xBD7F40]
address: [MAIN, 0x15ECF18]
value_type: float
value: 0.0333333333

@ -0,0 +1,127 @@
# Xenoblade2 2.0.2
# BID: E3938FA78579C1CA
unsafeCheck: true
MASTER_WRITE:
# Dynamic speed
# Jump before pushing frame to the end of .plt, which is 0x8B3448 (backup: MOV W8, #0x21A0)
-
type: bytes
main_offset: 0x700050
value_type: uint32
value: 0x1406CCFE
# Game speed math, write data to unused .bss, tick at 0x15ECF00, game speed at 0x15ECF08, take min delta from 0x15ECF10
-
type: bytes
main_offset: 0x8B3448
value_type: uint32
value:
- 0x97FFFB84
- 0xB00069C2
- 0xF9478041
- 0xF9078040
- 0xB5000061
- 0x52843408
- 0x17F932FD
- 0xCB010000
- 0x97FFFB80
- 0x1E25D002
- 0x52807D01
- 0x9AC10800
- 0x9E220000
- 0x52848001
- 0x72A92E81
- 0x1E270021
- 0x14000018
- 0x900016E0
- 0xF9406800
- 0xB4FFFE40
- 0xBD007800
- 0xBD007C00
- 0xF0001B60
- 0xF9416400
- 0xBD008000
- 0xB00069C0
- 0xBD0F0800
- 0x17FFFFEA
- 0x1E2E1001
- 0x1E221822
- 0x1E222000
- 0x5400006B
- 0x1E204040
- 0x17FFFFF0
- 0xB00069C0
- 0xBD4F1002
- 0x1E222000
- 0x54FFFD88
- 0x1E204040
- 0x17FFFFEA
- 0x1E211800
- 0x17FFFFF3
# Patch wind speed to take game speed from MAIN + 0x15ECF08
-
type: bytes
main_offset: 0x747CC4
value_type: uint32
value:
- 0xB0007528
- 0xBD4F0906
# Redirect DR timing to MAIN + 0x15ECF18
-
type: bytes
main_offset: 0x6AA038
value_type: uint32
value:
- 0xD0007A08
- 0xBD4F1900
# Default values
-
type: bytes
main_offset: 0x15ECF08
value_type: float
value: [0.0333333333, 0.0333333333, 0.0333333333, 0.0166666666, 0.0333333333]
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0xB74BC0]
value_type: uint32
value: ["VSYNC_TARGET", "VSYNC_TARGET"]
-
type: evaluate_write
address: [MAIN, 0x15ECF10]
value_type: float
value: "1 / FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0x15ECF18]
value_type: float
value: "(1 / FPS_TARGET) / VSYNC_TARGET"
# Cutscenes in 30 FPS
-
type: compare
compare_type: "=="
compare_value_type: uint8
compare_value: 1
compare_address: [MAIN, 0xBD7F40]
address: [MAIN]
value_type: refresh_rate
value: 30
-
type: compare
compare_type: "=="
compare_value_type: uint8
compare_value: 1
compare_address: [MAIN, 0xBD7F40]
address: [MAIN, 0x15ECF10]
value_type: float
value: 0.0333333333
-
type: compare
compare_type: "=="
compare_value_type: uint8
compare_value: 1
compare_address: [MAIN, 0xBD7F40]
address: [MAIN, 0x15ECF18]
value_type: float
value: 0.0333333333

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
SaltySD/saltysd_core32.elf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -2,6 +2,7 @@
ultra=Ultra
battery_avg_iir_filter=false
battery_time_left_refreshrate=60
average_gpu_load=true
[full]
refresh_rate=1

@ -57,7 +57,7 @@
"STORAGE": "Speicherplatz",
"NOTICE": "Hinweis",
"UTILIZES": "Verwendet",
"FREE": "vrij",
"FREE": "frei",
"MEMORY_EXPANSION": "Speichererweiterung",
"REBOOT_REQUIRED": "*Neustart erforderlich.",
"LOCAL_IP": "Lokale IP",
@ -72,18 +72,19 @@
"OVERLAY_VERSIONS": "Overlay Versionsnr.",
"PACKAGE_VERSIONS": "Paket Versionsnr.",
"OPAQUE_SCREENSHOTS": "Undurchsichtige Screenshots",
"PAGE_SWAP": "Seitenwechsel",
"ON": "AN",
"OFF": "AUS",
"PACKAGE_INFO": "Paket-Info",
"VERSION": "Version",
"CREATOR": "Schöpfer",
"CREATOR": "Ersteller",
"ABOUT": "Über",
"CREDITS": "Credits",
"OK": "OK",
"BACK": "Zurück",
"REBOOT_TO": "Neustart zu",
"REBOOT": "Neustart",
"SHUTDOWN": "Abschalten",
"SHUTDOWN": "Ausschalten",
"BOOT_ENTRY": "Start Eintrag",
"GAP_1": " ",
"GAP_2": " ",
@ -96,8 +97,8 @@
"ON_A_COMMAND": "Auf einem Befehl",
"ON_OVERLAY_PACKAGE": "Auf einem OVL/PKT",
"EFFECTS": "Effekte",
"SWIPE_TO_OPEN": "Swipe to Open",
"RIGHT_SIDE_MODE": "Right-side Mode",
"SWIPE_TO_OPEN": "Zum Öffnen wischen",
"RIGHT_SIDE_MODE": "Rechtsmodus",
"PROGRESS_ANIMATION": "Fortschrittsanimation",
"EMPTY": "Leer",
"SUNDAY": "Sonntag",

@ -71,6 +71,7 @@
"OVERLAY_VERSIONS": "Overlay Versions",
"PACKAGE_VERSIONS": "Package Versions",
"OPAQUE_SCREENSHOTS": "Opaque Screenshots",
"PAGE_SWAP": "Page Swap",
"ON": "On",
"OFF": "Off",
"PACKAGE_INFO": "Package Info",
@ -87,7 +88,7 @@
"BOOT_ENTRY": "Boot Entry",
"GAP_1": " ",
"GAP_2": " ",
"USERGUIDE_OFFSET": "173",
"USERGUIDE_OFFSET": "175",
"SETTINGS_MENU": "Settings Menu",
"SCRIPT_OVERLAY": "Script Overlay",
"STAR_FAVORITE": "Star/Favorite",

@ -71,6 +71,7 @@
"OVERLAY_VERSIONS": "Etiquetas de Superposición",
"PACKAGE_VERSIONS": "Etiquetas de Paquete",
"OPAQUE_SCREENSHOTS": "Capturas de Pantalla Opacas",
"PAGE_SWAP": "Page Swap",
"ON": "Encendido",
"OFF": "Apagado",
"PACKAGE_INFO": "Información del Paquete",

@ -71,6 +71,7 @@
"OVERLAY_VERSIONS": "Étiquettes de superposition",
"PACKAGE_VERSIONS": "Étiquettes de paquet",
"OPAQUE_SCREENSHOTS": "Captures Décran Opaques",
"PAGE_SWAP": "Page Swap",
"ON": "Activer",
"OFF": "Désactiver",
"PACKAGE_INFO": "Informations sur le paquet",

@ -71,6 +71,7 @@
"OVERLAY_VERSIONS": "Etichette Sovrapposte",
"PACKAGE_VERSIONS": "Etichette Pacchetto",
"OPAQUE_SCREENSHOTS": "Screenshot Opachi",
"PAGE_SWAP": "Page Swap",
"ON": "Acceso",
"OFF": "Spento",
"PACKAGE_INFO": "Informazioni Pacchetto",

@ -71,6 +71,7 @@
"OVERLAY_VERSIONS": "オーバーレイバージョン",
"PACKAGE_VERSIONS": "パッケージバージョン",
"OPAQUE_SCREENSHOTS": "不透明なスクリーンショット",
"PAGE_SWAP": "Page Swap",
"ON": "オン",
"OFF": "オフ",
"PACKAGE_INFO": "パッケージ情報",

@ -71,6 +71,7 @@
"OVERLAY_VERSIONS": "오버레이 라벨",
"PACKAGE_VERSIONS": "패키지 라벨",
"OPAQUE_SCREENSHOTS": "불투명한 스크린샷",
"PAGE_SWAP": "Page Swap",
"ON": "켜기",
"OFF": "끄기",
"PACKAGE_INFO": "패키지 정보",

@ -71,6 +71,7 @@
"OVERLAY_VERSIONS": "Overlay Labels",
"PACKAGE_VERSIONS": "Pakket Labels",
"OPAQUE_SCREENSHOTS": "Ondoorzichtige Screenshots",
"PAGE_SWAP": "Page Swap",
"ON": "Aan",
"OFF": "Uit",
"PACKAGE_INFO": "Pakketinformatie",

@ -71,6 +71,7 @@
"OVERLAY_VERSIONS": "Wersje Nakładek",
"PACKAGE_VERSIONS": "Wersje Paczek",
"OPAQUE_SCREENSHOTS": "Nieprzezroczyste zrzuty ekranu",
"PAGE_SWAP": "Page Swap",
"ON": "Włącz",
"OFF": "Wyłącz",
"PACKAGE_INFO": "Informacje o Paczce",

@ -71,6 +71,7 @@
"OVERLAY_VERSIONS": "Rótulos de Sobreposição",
"PACKAGE_VERSIONS": "Rótulos de Pacote",
"OPAQUE_SCREENSHOTS": "Capturas de Tela Opaques",
"PAGE_SWAP": "Page Swap",
"ON": "Ligado",
"OFF": "Desligado",
"PACKAGE_INFO": "Informações do Pacote",

@ -71,6 +71,7 @@
"OVERLAY_VERSIONS": "Версии Оверлеев",
"PACKAGE_VERSIONS": "Версии Пакетов",
"OPAQUE_SCREENSHOTS": "Непрозрачные Скриншоты",
"PAGE_SWAP": "Page Swap",
"ON": "Вкл",
"OFF": "Выкл",
"PACKAGE_INFO": "Информация",

@ -71,6 +71,7 @@
"OVERLAY_VERSIONS": "插件版本显示",
"PACKAGE_VERSIONS": "插件包版本显示",
"OPAQUE_SCREENSHOTS": "不透明的截图”",
"PAGE_SWAP": "Page Swap",
"ON": "开启",
"OFF": "关闭",
"PACKAGE_INFO": "插件包信息",

@ -71,6 +71,7 @@
"OVERLAY_VERSIONS": "插件的標簽",
"PACKAGE_VERSIONS": "插件包的標簽",
"OPAQUE_SCREENSHOTS": "不透明的截圖",
"PAGE_SWAP": "Page Swap",
"ON": "啟用",
"OFF": "停用",
"PACKAGE_INFO": "插件包信息",

Binary file not shown.

Binary file not shown.

@ -1,6 +1,8 @@
[boot]
clear hex_sum_cache
hex-by-swap /atmosphere/kips/loader.kip 016B89FB 006B29FA
del '/atmosphere/config_templates/'
del '/atmosphere/contents/00FF0000636C6BFF/toolbox.json'
del '/atmosphere/flags/'