Ultra 2.7|R3

This commit is contained in:
redraz 2026-01-15 02:19:18 +03:00
parent a270126d52
commit 6b00854da6
127 changed files with 1832 additions and 106 deletions

View File

@ -8,7 +8,7 @@
### Ultra - это функциональная кастомная прошивка для Nintendo Switch, с упором в разгон и улучшенный пользовательский опыт.
### [UltraNX 2.7|R2](https://github.com/Ultra-NX/UltraNX/releases/tag/2.7-R2) Поддерживает все HOS до 21.1.0 включительно
### [UltraNX 2.7|R3](https://github.com/Ultra-NX/UltraNX/releases/tag/2.7-R3) Поддерживает все HOS до 21.2.0 включительно (21.2.0 в Safe Mode)

View File

@ -6,7 +6,7 @@
#
### Ultra is a functional custom firmware for Nintendo Switch, with a focus on overclocking and an improved user experience.
### [UltraNX 2.7|R2](https://github.com/Ultra-NX/UltraNX/releases/tag/2.7-R2) Supports all HOS up to and including 21.1.0
### [UltraNX 2.7|R3](https://github.com/Ultra-NX/UltraNX/releases/tag/2.7-R3) Supports all HOS up to and including 21.2.0 (21.2.0 in Safe Mode)

View File

@ -1,50 +1,3 @@
;GRID: Autosport
;1.4.0RC9, 1.5_46790, 1.8_49215 and 1.8.3_61741 crash, 1.4.1_45339 stucks in infinite loop
0100DC800A602000
;Luigi's Mansion 3
;1.0.0-1.4.0 crash
0100DCA0064A6000
;YouTube
;Stucks in infinite loop
01003A400C3DA000
;Alien: Isolation
;1.1_46609 - 1.1.4_60709 crash on first loading
010075D00E8BA000
;Immortals Fenyx Rising
;1.0.3, 1.3.4 crash
01004A600EC0A000
;Stubbs the Zombie in Rebel Without a Pulse
;1.0.0 - 1.0.3 crash on boot
0100964012528000
;Olympic Games Tokyo 2020 The Official Video Game
;1.0.0-1.0.2 crash on boot
;1.0.9 crash on boot
010034B00E14C000
01004CE00AAE2000
;Mario Strikers: Battle League
;1.0.0 crash on boot
010019401051C000
;The Lara Croft Collection
;1.0.0 - Games in collection are crashing on boot, only launcher doesn't
010079C017F5E001
010079C017F5E002
;Plants vs. Zombies: Battle for Neighborville
;1.0.3 crash on boot
0100C56010FD8000
;EA SPORTS FC 24
;1.0.0 - v1.55.bc14 crash
0100BDB01A0E6000
;Company of Heroes Collection
;1.5_66915 crashes
0100ABD0156F8000

View File

@ -0,0 +1,75 @@
# 無双アビス 1.5.0
# BID: A9DEA3043D6E0060
DECLARATIONS:
-
type: variable
name: dr_target1
value_type: float
default_value: 50
evaluate: "1.5 * FRAMETIME_TARGET"
-
type: variable
name: dr_target2
value_type: float
default_value: 40
evaluate: "1.2 * FRAMETIME_TARGET"
MASTER_WRITE:
# REF: 09 49 A8 52 21 01 27 1E 00 20 21 1E
# Use FPS Target instead of vsync value for Dynamic Resolution max delta
-
type: asm_a64
main_offset: 0x8B69C0
instructions: [
[adrp, x1, 0x11F3000],
[ldr, s1, [x1, 0xE10]]
]
# Redirect DR Targets
-
type: asm_a64
main_offset: 0x8B6A64
instructions: [
[adrp, x9, $dr_target1],
[ldr, s1, [x9, $dr_target1]]
]
-
type: asm_a64
main_offset: 0x8B6A74
instructions: [
[adrp, x9, $dr_target2],
[ldr, s1, [x9, $dr_target2]]
]
ALL_FPS:
# REF: 00 00 F0 42 78 00 00 00 00 00 F0 42 04 00 00 00
# FPS Lock
-
type: evaluate_write
address: [MAIN, 0x11F3E1C]
value_type: uint32
value: "120 / FPS_LOCK_TARGET"
# Prevent from setting it as 0, otherwise game crashes
-
type: evaluate_compare
compare_address: [MAIN, 0x11F3E1C]
compare_type: "=="
compare_value_type: uint32
compare_value: 0
address: [MAIN, 0x11F3E1C]
value_type: uint32
value: 1
# Others
-
type: evaluate_write
address: [MAIN, 0x11F3E10]
value_type: float
value: "FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0x11F3E14]
value_type: uint32
value: "FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0x11F3E18]
value_type: float
value: "FPS_TARGET"

View File

@ -0,0 +1,18 @@
# The Elder Scrolls V: Skyrim 1.1.404.0
# BID: 0C0CAC3FCF0F0BEB
ALL_FPS:
# Dynamic Resolution Frame Time Max = 0.99 * (1000/FPS)
# REF: 21 0C 02 1F 01 FC 00 BD, third ldr below
-
type: evaluate_write
address: [MAIN, 0x3357FB0]
value_type: float
value: "0.99 * FRAMETIME_TARGET"
# Dynamic Resolution Frame Time Min = 0.9 * (1000/FPS)
# REF: 21 0C 02 1F 01 FC 00 BD, first ldr below
-
type: evaluate_write
address: [MAIN, 0x3357FC8]
value_type: float
value: "0.9 * FRAMETIME_TARGET"

View File

@ -0,0 +1,25 @@
# Five Nights at Freddy's: Secret of the Mimic 1.0.0
# BID: 196339C0BADE07C3
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x64D8628, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x64FE0E8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x5D0C1D0, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,10 @@
# The Walking Dead: Destinies 1.3.0.8
# BID: 3D3FEFC161B49AB8
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x666C420, 0x48]
value_type: float
value: "1 / FPS_TARGET"

View File

@ -0,0 +1,10 @@
# Figment 1.6.0
# BID: 6401F57C7D6D3728
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x450C7C0, 0x48]
value_type: float
value: "1 / FPS_TARGET"

View File

@ -0,0 +1,25 @@
# The Witcher 3: Wild Hunt - The Complete Edition `Cartridge only 2` 4.04a-4.04b
# BID: 4BC4A8A814FD46A4
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

View File

@ -0,0 +1,10 @@
# Escape Academy: The Complete Edition 3.0.6.2
# BID: 9E365FE9EC3A52D3
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x54AFB80, 0x48]
value_type: float
value: "1 / FPS_TARGET"

View File

@ -0,0 +1,10 @@
# Cooking Simulator 1.0.1
# BID: CCEE412E679A2143
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x43E7FB8, 0x48]
value_type: float
value: "1 / FPS_TARGET"

View File

@ -0,0 +1,26 @@
# Remothered Tormented Fathers `Cartridge only` 1.2.0
# BID: EB57CF3434044523
# Game stores textures inside fixed size class, so it's hard to get triple buffer
ALL_FPS:
# Disable bUseFixedFrameRate and bSmoothFrameRate
-
type: write
address: [MAIN, 0x54C75F0, 0x770]
value_type: uint32
value: 7
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x54C7F70, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x4C641D0, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,4 +1,4 @@
# Divinity Original Sin 2 1.0.10
# Divinity Original Sin 2 1.0.10-1.0.11
# BID: 4979B200D53BB282
# Game is using double buffer, buffers are not allocated in loop.
# So it's not possible to get stable FPS lock between 30 and 60 without changing refresh rate.

View File

@ -0,0 +1,18 @@
# The Elder Scrolls V: Skyrim JPN 1.1.404.0
# BID: 0C0CAC3FCF0F0BEB
ALL_FPS:
# Dynamic Resolution Frame Time Max = 0.99 * (1000/FPS)
# REF: 21 0C 02 1F 01 FC 00 BD, third ldr below
-
type: evaluate_write
address: [MAIN, 0x3357FB0]
value_type: float
value: "0.99 * FRAMETIME_TARGET"
# Dynamic Resolution Frame Time Min = 0.9 * (1000/FPS)
# REF: 21 0C 02 1F 01 FC 00 BD, first ldr below
-
type: evaluate_write
address: [MAIN, 0x3357FC8]
value_type: float
value: "0.9 * FRAMETIME_TARGET"

View File

@ -0,0 +1,19 @@
# Storm Lancers 1.1.0.5
# BID: E5D70A1E288F74A7
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7ED6D60, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x6EB8F28, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,11 @@
# Inertial Drift 1.2.1
# BID: 4C277E67AB50D547
ALL_FPS:
# Assets.Source.Tools.CorePlugin_TypeInfo
-
type: evaluate_write
address: [MAIN, 0x577BF78, 0xB8, 0, 0xF0, 0xD8, 0x28, 0x20]
address_unsafe: true
value_type: uint32
value: FPS_TARGET

View File

@ -0,0 +1,10 @@
# Just Crow Things 1.0.21
# BID: A42569DBA6D326B5
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x53B5280, 0x48]
value_type: float
value: "1 / FPS_TARGET"

View File

@ -0,0 +1,25 @@
# The Witcher 3: Wild Hunt - The Complete Edition `Cartridge only` 4.04a-4.04b
# BID: B151A224A429F9A7
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

View File

@ -0,0 +1,31 @@
# DRAGON BALL: Sparking! ZERO 2.0.74
# BID: E363F4466EE5E8BE
ALL_FPS:
# Disable bUseFixedFrameRate to unlock framerate
-
type: write
address: [MAIN, 0x9A35A20, 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, 0x9A36FF0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x923FB68, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,22 @@
# Little Goody Two Shoes 1.0.5
# BID: 6895FE7D0D1B8E2F
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x70CFF00, 0x48]
value_type: float
value: "1 / FPS_TARGET"
# UnityEngine.Time::maximumDeltaTime / UnityEngine.Time::maximumParticleDeltaTime
-
type: write
address: [MAIN, 0x70CFF00, 0x100]
value_type: float
value: [0.06666666666, 0.06666666666]
# UnityEngine.Application::targetFrameRate
-
type: evaluate_write
address: [MAIN, 0x6D58DA8]
value_type: uint32
value: FPS_TARGET

View File

@ -0,0 +1,10 @@
# Succubus With Guns 1.0.1
# BID: A5EC643318B3A543
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x4577FC0, 0x48]
value_type: float
value: "1 / FPS_TARGET"

View File

@ -0,0 +1,25 @@
# WAIFU IMPACT 1.0.2
# BID: DC33AFEE8682A86C
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x67B78E8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# r.VSync
-
type: write
address: [MAIN, 0x5FEB078, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x67E54B8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,10 @@
# たまごっちのプチプチおみせっち おまちど~さま! 1.0.6
# BID: 1E965D5B338E3D05
ALL_FPS:
# UnityEngine.Rendering.OnDemandRendering_TypeInfo
-
type: write
address: [MAIN, 0x68B81F8, 0xB8, 0]
value_type: int32
value: -1

View File

@ -0,0 +1,37 @@
# 모두의 골프 월드 / 全民高爾夫 環球之旅 1.1.4
# BID: C2D14E1A5A788D6A
# Changed frametime target value math formula because default one sucks at 60 FPS target
DECLARATIONS:
-
type: variable
name: dr_frametime_max
value_type: double
default_value: 40
evaluate: "0.9 * FRAMETIME_TARGET"
-
type: variable
name: dr_frametime_min
value_type: double
default_value: 33.3333333333
evaluate: "(0.9 * FRAMETIME_TARGET) - 6"
MASTER_WRITE:
# REF: 0a 00 a4 d2 8a 08 e8 f2 41 01 67 9e
-
type: asm_a64
main_offset: 0x3936338
instructions: [
[adrp, x10, $dr_frametime_max],
[ldr, d1, [x10, $dr_frametime_max]],
[nop]
]
# REF: 00 0d 40 fd 0a 00 b8 d2
-
type: asm_a64
main_offset: 0x393640C
instructions: [
[adrp, x10, $dr_frametime_min],
[ldr, d1, [x10, $dr_frametime_min]],
[nop],
[nop]
]

View File

@ -0,0 +1,25 @@
# GetsuFumaDen: Undying Moon 1.1.1
# BID: 8683E654CCD68852
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x79020E8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# r.VSync
-
type: write
address: [MAIN, 0x7136C78, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x792F998, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,19 @@
# モンスターエナジースーパークロス オフィシャルビデオゲーム 1.0.1
# BID: A03FD278F67CDFD2
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x67FD408, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x6551268, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,13 @@
# EA SPORTS FC 26 1.81.7867
# BID: 0115E50A2C326DF5
ALL_FPS:
# Internal FPS Lock
-
type: evaluate_write
address: [MAIN, 0xC6496F8, 8]
value_type: double
value: FPS_TARGET
-
type: block
what: timing

View File

@ -0,0 +1,19 @@
# Octopath Traveler 0 1.0.3
# BID: 51198224D1A8F16C
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6C4F6E8, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7C718E0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,32 @@
# Metamorphosis 1.0.1
# BID: 9F1B5FB4C53E321F
ALL_FPS:
# Disable SmoothFrameRate
-
type: write
address: [MAIN, 0x58C2C68, 0x7C0]
address_unsafe: true
value_type: uint32
value: 7
# r.DynamicRes.FrameTimeBudget (Default is 42)
-
type: evaluate_write
address: [MAIN, 0x58991A8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# r.VSync
-
type: write
address: [MAIN, 0x4D2EFF8, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x58C33A0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,19 @@
# WRITHE 1.3.0
# BID: 97313EA9E2BD0EC1
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x5853008, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x587FAD0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,74 @@
# テイルズ オブ エクシリア リマスター 1.0.2
# BID: CAEAFFC2CD152394
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: 0x244EF94
instructions: [
[bl, _applyCustomSpeed()]
]
-
type: asm_a64
main_offset: 0x28F36BC
instructions: [
[bl, _applyCustomSpeed()]
]
-
type: asm_a64
main_offset: 0x2B2E174
instructions: [
[bl, _applyCustomSpeed()]
]
ALL_FPS:
# Game Speed
## REF: Global_TypeInfo
-
type: evaluate_write
address: [MAIN, 0x82E1310, 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, 0x9FEC278, 0x100]
value_type: float
value: [0.066666666, 0.066666666]
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x9FEC278, 0x48]
value_type: float
value: "1 / FPS_TARGET"
# UnityEngine.Application::targetFrameRate
-
type: evaluate_write
address: [MAIN, 0x84FE4E8]
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,33 @@
# Detective - Stella Porta Case 1.0.0
# BID: 50F47EC19A33A73E
# Game has bug that makes it work 2x slower than in other platforms, so with this patch we are also fixing the issue across all FPS ranges
ALL_FPS:
# Disable bUseFixedFrameRagte
-
type: write
address: [MAIN, 0x73379C8, 0x9DC]
address_unsafe: true
value_type: uint32
value: 7
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x7303CF0, 0]
value_type: float
value: ["0.9 * FRAMETIME_TARGET", "0.9 * FRAMETIME_TARGET"]
# r.VSync
-
type: write
address: [MAIN, 0x6B5FCB8, 0]
value_type: uint32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7338158, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,75 @@
# WARRIORS: Abyss 1.5.0
# BID: A9DEA3043D6E0060
DECLARATIONS:
-
type: variable
name: dr_target1
value_type: float
default_value: 50
evaluate: "1.5 * FRAMETIME_TARGET"
-
type: variable
name: dr_target2
value_type: float
default_value: 40
evaluate: "1.2 * FRAMETIME_TARGET"
MASTER_WRITE:
# REF: 09 49 A8 52 21 01 27 1E 00 20 21 1E
# Use FPS Target instead of vsync value for Dynamic Resolution max delta
-
type: asm_a64
main_offset: 0x8B69C0
instructions: [
[adrp, x1, 0x11F3000],
[ldr, s1, [x1, 0xE10]]
]
# Redirect DR Targets
-
type: asm_a64
main_offset: 0x8B6A64
instructions: [
[adrp, x9, $dr_target1],
[ldr, s1, [x9, $dr_target1]]
]
-
type: asm_a64
main_offset: 0x8B6A74
instructions: [
[adrp, x9, $dr_target2],
[ldr, s1, [x9, $dr_target2]]
]
ALL_FPS:
# REF: 00 00 F0 42 78 00 00 00 00 00 F0 42 04 00 00 00
# FPS Lock
-
type: evaluate_write
address: [MAIN, 0x11F3E1C]
value_type: uint32
value: "120 / FPS_LOCK_TARGET"
# Prevent from setting it as 0, otherwise game crashes
-
type: evaluate_compare
compare_address: [MAIN, 0x11F3E1C]
compare_type: "=="
compare_value_type: uint32
compare_value: 0
address: [MAIN, 0x11F3E1C]
value_type: uint32
value: 1
# Others
-
type: evaluate_write
address: [MAIN, 0x11F3E10]
value_type: float
value: "FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0x11F3E14]
value_type: uint32
value: "FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0x11F3E18]
value_type: float
value: "FPS_TARGET"

View File

@ -0,0 +1,25 @@
# Spirit of the North 1.3.1
# BID: 44AA379DE2A71A9F
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x542D038, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# r.VSync
-
type: write
address: [MAIN, 0x4CF1AB8, 0]
value_type: uint32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x5459A90, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,19 @@
# SHIN MEGAMI TENSEI V `The Americas` 1.0.2
# BID: 68FED4970010ACF3
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x75F81D0, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7621D70, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,10 @@
# パックマンワールド2 リ・パック 1.0.4
# BID: 0BB69E112916D851
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x87DF838, 0x58]
value_type: uint32
value: "2352000 * FPS_TARGET"

View File

@ -0,0 +1,19 @@
# Nicktoons & The Dice of Destiny 1.3.0
# BID: DCBCB511177F87F6
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7EDF380, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x6EC0EE8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,10 @@
# Becastled 1.4
# BID: 10F5B0B223490693
ALL_FPS:
# DynamicResolution_TypeInfo
-
type: evaluate_write
address: [MAIN, 0xA09DB40, 0xB8, 0, 0x58]
value_type: float
value: "0.96 * FRAMETIME_TARGET"

View File

@ -0,0 +1,10 @@
# Becastled 1.3
# BID: FBDD7ABB7B1DB6A9
ALL_FPS:
# DynamicResolution_TypeInfo
-
type: evaluate_write
address: [MAIN, 0xA04B708, 0xB8, 0, 0x58]
value_type: float
value: "0.96 * FRAMETIME_TARGET"

View File

@ -0,0 +1,25 @@
# Formula Legends 1.0.10
# BID: 3768668BABF5F551
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x83C9F68, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# r.VSync
-
type: write
address: [MAIN, 0x73E5EE8, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8405780, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,25 @@
# Double Dragon Revive N1.30
# BID: 43B775EC81DB2B63
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x82DBE98, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x92B9D48, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x92E7A58, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,19 @@
# Hot Blood 1.0.1
# BID: B91475B2ADE6F74D
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (Default is 36)
-
type: evaluate_write
address: [MAIN, 0x5CB4658, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x5CE23A8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,19 @@
# Monster Energy Supercross - The Official Videogame 1.0.2
# BID: A03FD278F67CDFD2
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x67FD408, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x6551268, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,19 @@
# FANTASY LIFE i: The Girl Who Steals Time 2.0.0
# BID: C561C6BED2F0B348
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xB58C938, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0xA56C728, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,50 @@
# DRAGON BALL XENOVERSE 2 FOR NINTENDO SWITCH 1.25.02
# BID: 60EF5AF2F6E5231F
# 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,19 @@
# Warhammer 40,000: Dakka Squadron 1.0.2
# BID: 7E20C8548DC38F3A
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x4C7D408, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x5810650, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,33 @@
# 真・女神転生Ⅴ Vengeance 1.0.3
# BID: 21502D0863ED6F58
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: asm_a64
main_offset: 0x3780C20
instructions: [
[nop]
]
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]
-
type: block
what: timing

View File

@ -0,0 +1,25 @@
# Maneater `Asia` 1.02
# BID: E8418C6B4BDCC1EE
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x6FF8FB0, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x70241F0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x6858620, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,25 @@
# Paradise Killer 1.3.0
# BID: 3C1DC69847A35C30
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x7D1C738, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7D41D80, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7552E58, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,37 @@
# EVERYBODY'S GOLF: Hot Shots US 1.1.4
# BID: D45002D206976B20
# Changed frametime target value math formula because default one sucks at 60 FPS target
DECLARATIONS:
-
type: variable
name: dr_frametime_max
value_type: double
default_value: 40
evaluate: "0.9 * FRAMETIME_TARGET"
-
type: variable
name: dr_frametime_min
value_type: double
default_value: 33.3333333333
evaluate: "(0.9 * FRAMETIME_TARGET) - 6"
MASTER_WRITE:
# REF: 0a 00 a4 d2 8a 08 e8 f2 41 01 67 9e
-
type: asm_a64
main_offset: 0x3936328
instructions: [
[adrp, x10, $dr_frametime_max],
[ldr, d1, [x10, $dr_frametime_max]],
[nop]
]
# REF: 00 0d 40 fd 0a 00 b8 d2
-
type: asm_a64
main_offset: 0x39363FC
instructions: [
[adrp, x10, $dr_frametime_min],
[ldr, d1, [x10, $dr_frametime_min]],
[nop],
[nop]
]

View File

@ -0,0 +1,10 @@
# Hollow Coccon 1.0.4
# BID: A6F7BF79EBCBCC70
ALL_FPS:
# REF: OptionData::SetNewScale()
-
type: evaluate_write
address: [MAIN, 0x5E0B0F8, 0, 0xB8, 0]
value_type: double
value: [FPS_TARGET, FRAMETIME_TARGET]

View File

@ -0,0 +1,10 @@
# Commandos 3 - HD Remaster 1.00.053
# BID: E5AD28BC6E790692
ALL_FPS:
# REF: 0x3D042108 hardcoded in assembly
-
type: evaluate_write
address: [MAIN, 0xB282A0]
value_type: float
value: "1 / FPS_LOCK_TARGET"

View File

@ -0,0 +1,11 @@
# 옛날 옛적에 괴혼 / 從前從前有個塊魂 1.0.3
# BID: 55E2BD1FFCD31993
ALL_FPS:
# Dynamic Resolution
## REF: App.KatamariSin.AppSupport_TypeInfo
-
type: evaluate_write
address: [MAIN, 0x8F858B8, 0xB8, 0x18]
value_type: double
value: "0.9 * FRAMETIME_TARGET"

View File

@ -0,0 +1,12 @@
# Don't Starve Together 1.24.0
# BID: CBFC09BA9105CD4D
ALL_FPS:
# FPS Lock
# REF: Find instruction 36 D9 34 F8, use X9 to find main offset
-
type: evaluate_write
address: [MAIN, 0x91C448, 0, 0x320]
address_unsafe: true
value_type: float
value: "1 / FPS_TARGET"

View File

@ -0,0 +1,25 @@
# Maneater 1.02
# BID: E8418C6B4BDCC1EE
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x6FF8FB0, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x70241F0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x6858620, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,25 @@
# ウィッチャー3 ワイルドハント コンプリートエディション `Cartridge only` 4.04a-4.04b
# BID: 4BC4A8A814FD46A4
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

View File

@ -0,0 +1,10 @@
# 팩맨 월드 2 리팩 / 吃豆人 吃遍世界2 1.0.4
# BID: 0BB69E112916D851
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x87DF838, 0x58]
value_type: uint32
value: "2352000 * FPS_TARGET"

View File

@ -0,0 +1,10 @@
# Dinkum 1.0.2.47
# BID: 16346DDFF65961FF
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x5C6C220, 0x48]
value_type: float
value: "1 / FPS_TARGET"

View File

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

View File

@ -0,0 +1,26 @@
# KAMEN RIDER memory of heroez Premium Sound Edition 1.0.2
# BID: B0ADB498E82BC644
DECLARATIONS:
-
type: variable
name: dr_target
value_type: double
default_value: 40
evaluate: "0.96 * FRAMETIME_TARGET"
-
type: code
name: getDrTarget
instructions: [
[adrp, x0, $dr_target],
[ldr, d1, [x0, $dr_target]],
[ret]
]
MASTER_WRITE:
# REF: 01 8d 47 fd
-
type: asm_a64
main_offset: 0xAC6368
instructions: [
[bl, _getDrTarget()]
]

View File

@ -0,0 +1,25 @@
# KIBORG 1.0
# BID: 635E7DB24F2BCD32
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x7EB55E0, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# r.VSync
-
type: write
address: [MAIN, 0x6EE0290, 0]
value_type: uint32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7EF6AC8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,28 @@
# INAZUMA ELEVEN: Victory Road 1.5.0
# BID: 2F0040A6AA0866EF
DECLARATIONS:
-
type: variable
name: fps_target
value_type: float
default_value: 30
evaluate: FPS_TARGET
MASTER_WRITE:
# Dynamic Resolution FPS Target
## REF: 62 02 23 1E 21 18 22 1E, ucvtf + fdiv
-
type: asm_a64
main_offset: 0xC475D8
instructions: [
[adrp, x9, $fps_target],
[ldr, s1, [x9, $fps_target]]
]
ALL_FPS:
# Disable FPS Lock
## REF: 20 01 00 A9 00 01 63 9E, second LDRB below that, IDA will show address after full analyze
-
type: write
address: [MAIN, 0x37676D9]
value_type: uint8
value: 0

View File

@ -0,0 +1,28 @@
# INAZUMA ELEVEN: Victory Road 2.0.1
# BID: F99F0CE4FC4567ED
DECLARATIONS:
-
type: variable
name: fps_target
value_type: float
default_value: 30
evaluate: FPS_TARGET
MASTER_WRITE:
# Dynamic Resolution FPS Target
## REF: 62 02 23 1E 21 18 22 1E, ucvtf + fdiv
-
type: asm_a64
main_offset: 0xC5EAA8
instructions: [
[adrp, x9, $fps_target],
[ldr, s1, [x9, $fps_target]]
]
ALL_FPS:
# Disable FPS Lock
## REF: 20 01 00 A9 00 01 63 9E, second LDRB below that, IDA will show address after full analyze
-
type: write
address: [MAIN, 0x37850BD]
value_type: uint8
value: 0

View File

@ -0,0 +1,16 @@
# Fabledom 1.0.7
# BID: 6895E4F3E01808C4
ALL_FPS:
# DynamicResolution_TypeInfo
-
type: evaluate_write
address: [MAIN, 0x673C9A0, 0xB8, 0]
value_type: double
value: [FPS_TARGET, FRAMETIME_TARGET]
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x6BFF660, 0x48]
value_type: float
value: "1 / FPS_TARGET"

View File

@ -0,0 +1,11 @@
# ワンス・アポン・ア・塊魂 1.0.4
# BID: B7242BF0E5B17B6F
ALL_FPS:
# Dynamic Resolution
## REF: App.KatamariSin.AppSupport_TypeInfo
-
type: evaluate_write
address: [MAIN, 0x8F86948, 0xB8, 0x18]
value_type: double
value: "0.9 * FRAMETIME_TARGET"

View File

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

View File

@ -0,0 +1,33 @@
# Detective - Rainy Night 1.0.1-1.0.2
# BID: 553262E59A96741B
# Game has bug that makes it work 2x slower than in other platforms, so with this patch we are also fixing the issue across all FPS ranges
ALL_FPS:
# Disable bUseFixedFrameRate
-
type: write
address: [MAIN, 0x7EEA3E8, 0xC34]
address_unsafe: true
value_type: uint32
value: 7
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x7EA95E0, 0]
value_type: float
value: ["0.9 * FRAMETIME_TARGET", "0.9 * FRAMETIME_TARGET"]
# r.VSync
-
type: write
address: [MAIN, 0x6ED4290, 0]
value_type: uint32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7EEAAB8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

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

View File

@ -0,0 +1,25 @@
# TEMPUS 1.0.0
# BID: 582ADD6F24A2A6B7
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x69881C8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# r.VSync
-
type: write
address: [MAIN, 0x61BA938, 0]
value_type: uint32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x69B5D98, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,25 @@
# Rune Factory: Guardians of Azuma `Cartridge only` 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

@ -0,0 +1,25 @@
# A Juggler's Tale 1.17
# BID: 2438B00670539268
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x65F9970, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# r.VSync
-
type: write
address: [MAIN, 0x5E59728, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x6624488, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,10 @@
# Garfield Kart 2 - All You Can Drift 1.0.5
# BID: 3F6808C5518371F9
ALL_FPS:
# Eden.Graphics.DynamicResolutionScaler_TypeInfo
-
type: evaluate_write
address: [MAIN, 0xF648538, 0xB8, 0x18, 0x20]
value_type: float
value: ["0.93 / FPS_TARGET", "(0.93 / FPS_TARGET) - 0.002", "(0.93 / FPS_TARGET) - 0.001"]

View File

@ -0,0 +1,30 @@
# Jet Kave Adventure 1.1.0
# BID: 85BF83CDD25CC542
MASTER_WRITE:
# Remove custom FPS lock
# REF: FrameLimiter.<Limit>d__3::MoveNext()
-
type: asm_a64
main_offset: 0x16CDC8C
instructions: [
[mov, w0, wzr]
]
# Set nvn interval to 2 to lock game back to 30 FPS
-
type: bytes
main_offset: 0x3EEDEC8
value_type: uint32
value: 2
-
type: asm_a64
main_offset: 0x1A2334C
instructions: [
[nop]
]
-
type: asm_a64
main_offset: 0x1A1554C
instructions: [
[nop]
]

View File

@ -1,4 +1,4 @@
# Endling 1.3.0
# Endling 1.3.0-1.3.1
# BID: 33DBE39C8A83F1E6
ALL_FPS:
@ -22,4 +22,4 @@ ALL_FPS:
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing
what: timing

View File

@ -0,0 +1,37 @@
# EVERYBODY'S GOLF: Hot Shots EUR 1.1.5
# BID: 6C434B4568552ADB
# Changed frametime target value math formula because default one sucks at 60 FPS target
DECLARATIONS:
-
type: variable
name: dr_frametime_max
value_type: double
default_value: 40
evaluate: "0.9 * FRAMETIME_TARGET"
-
type: variable
name: dr_frametime_min
value_type: double
default_value: 33.3333333333
evaluate: "(0.9 * FRAMETIME_TARGET) - 6"
MASTER_WRITE:
# REF: 0a 00 a4 d2 8a 08 e8 f2 41 01 67 9e
-
type: asm_a64
main_offset: 0x3977188
instructions: [
[adrp, x10, $dr_frametime_max],
[ldr, d1, [x10, $dr_frametime_max]],
[nop]
]
# REF: 00 0d 40 fd 0a 00 b8 d2
-
type: asm_a64
main_offset: 0x397725C
instructions: [
[adrp, x10, $dr_frametime_min],
[ldr, d1, [x10, $dr_frametime_min]],
[nop],
[nop]
]

View File

@ -0,0 +1,25 @@
# パラダイスキラー 1.3.0
# BID: 3C1DC69847A35C30
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x7D1C738, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7D41D80, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7552E58, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,74 @@
# Tales of Xillia Remastered 1.0.2
# BID: 5A2EE9B7315F91E5
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: 0x244EF94
instructions: [
[bl, _applyCustomSpeed()]
]
-
type: asm_a64
main_offset: 0x28F3A1C
instructions: [
[bl, _applyCustomSpeed()]
]
-
type: asm_a64
main_offset: 0x2B2E4D4
instructions: [
[bl, _applyCustomSpeed()]
]
ALL_FPS:
# Game Speed
## REF: Global_TypeInfo
-
type: evaluate_write
address: [MAIN, 0x82E1310, 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, 0x9FEC278, 0x100]
value_type: float
value: [0.066666666, 0.066666666]
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x9FEC278, 0x48]
value_type: float
value: "1 / FPS_TARGET"
# UnityEngine.Application::targetFrameRate
-
type: evaluate_write
address: [MAIN, 0x84FE4E8]
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,25 @@
# System Shock 2.0.3
# BID: 14A66A472139D638
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x63C3408, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# r.VSync
-
type: write
address: [MAIN, 0x5BF4108, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x63F10C8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,25 @@
# Monster Energy Supercross - The Official Videogame 2 1.0.6
# BID: 3CAC2B84D43AF415
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8B1ACB0, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8B44E30, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x82D7990, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,6 @@
{
"name": "SaltyNX",
"tid": "0000000000534C56",
"requires_reboot": true,
"version": "1.5.4"
"name": "SaltyNX",
"tid": "0000000000534C56",
"requires_reboot": true,
"version": "1.7.2"
}

View File

@ -1,5 +1,5 @@
10C14AD346AE02E32AA52A9030A3A87B98D89642000000000000000000000000.ips - Stubbs the Zombie in Rebel Without a Pulse 1.0.3, TID: 0100964012528000
ECF4B91AF1B669ECD92829F25E4B530EE48985FA000000000000000000000000.ips - Stubbs the Zombie in Rebel Without a Pulse 1.0.0, TID: 0100964012528000
053ABE9494B5397AE818B3721DE50995.ips - Olympic Games Tokyo 2020 EUR/AUS 1.0.0, TID: 010034B00E14C000
C4D1BCED9D8C5B813295345B7F9FDF97.ips - Olympic Games Tokyo 2020 EUR/AUS 1.0.2, TID: 010034B00E14C000
053ABE9494B5397AE818B3721DE50995.ips - Olympic Games Tokyo 2020 EUR/AUS + US 1.0.0, TID: 010034B00E14C000 + 0100A8B00E14A000
C4D1BCED9D8C5B813295345B7F9FDF97.ips - Olympic Games Tokyo 2020 EUR/AUS + US 1.0.2, TID: 010034B00E14C000 + 0100A8B00E14A000
66A8EB853DE90A1AF13D19DA575E339B.ips - Olympic Games Tokyo 2020 Asia 1.0.9, TID: 01004CE00AAE2000

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

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