mirror of
https://github.com/Ultra-NX/UltraNX.git
synced 2026-04-27 20:43:14 +00:00
Ultra 2.7|R3
This commit is contained in:
parent
a270126d52
commit
6b00854da6
@ -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)
|
||||
|
||||
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"
|
||||
@ -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"
|
||||
@ -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
|
||||
@ -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"
|
||||
@ -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"
|
||||
@ -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
|
||||
@ -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"
|
||||
@ -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"
|
||||
@ -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
|
||||
@ -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.
|
||||
|
||||
@ -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"
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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"
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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"
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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]
|
||||
]
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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"
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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"
|
||||
@ -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
|
||||
@ -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"
|
||||
@ -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"
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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"
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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]
|
||||
]
|
||||
@ -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]
|
||||
@ -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"
|
||||
@ -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"
|
||||
@ -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"
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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"
|
||||
@ -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"
|
||||
@ -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"
|
||||
@ -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()]
|
||||
]
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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"
|
||||
@ -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"
|
||||
@ -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"
|
||||
@ -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
|
||||
@ -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"
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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"]
|
||||
@ -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]
|
||||
]
|
||||
@ -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
|
||||
|
||||
@ -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]
|
||||
]
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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.
Binary file not shown.
@ -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"
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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.
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
Loading…
x
Reference in New Issue
Block a user