mirror of
https://github.com/Ultra-NX/UltraNX.git
synced 2025-12-13 10:23:57 +00:00
Ultra 2.7|R1
This commit is contained in:
parent
ef2146f5c4
commit
2e2398427c
@ -8,9 +8,7 @@
|
||||
|
||||
### Ultra - это функциональная кастомная прошивка для Nintendo Switch, с упором в разгон и улучшенный пользовательский опыт.
|
||||
|
||||
### [UltraNX 2.6|R3](https://github.com/Ultra-NX/UltraNX/releases/tag/2.6-R3) Поддерживает все HOS до 20.5.0 включительно
|
||||
|
||||
### [UltraNX 2.7|Pre2](https://github.com/Ultra-NX/UltraNX/releases/tag/2.7-Pre2) Поддерживает все HOS до 21.0.1 включительно. Не полноценный релиз!
|
||||
### [UltraNX 2.7|R1](https://github.com/Ultra-NX/UltraNX/releases/tag/2.7-R1) Поддерживает все HOS до 21.0.1 включительно
|
||||
|
||||
|
||||
|
||||
@ -93,7 +91,7 @@
|
||||
* [FPSLocker Patches](https://github.com/masagrator/FPSLocker-Warehouse) - Пакет патчей для FPSLocker, позволяет обновить все патчи сразу, вместо скачивания по одному через оверлей FPSLocker'а. В Ультре по умолчанию всегда последние патчи, так что достаточно своевременно обновлять сборку.
|
||||
* [DVR Patches](https://github.com/exelix11/dvr-patches) - Патчи SysDVR, работают и без системного модуля, активируя фоновую запись в играх, где это изначально запрещено.
|
||||
* [Mod Alchemist](https://github.com/ppkantorski/Mod-Alchemist) - Пакет для скачивания, установки и управления модами для игр.
|
||||
* [sys-ftpd](https://github.com/tomvita/sys-ftpd-light) - FTP сервер, работающий на фоне.
|
||||
* [sys-ftpd](https://github.com/ELY3M/sys-ftpd) - FTP сервер, работающий на фоне.
|
||||
|
||||
|
||||
|
||||
|
||||
@ -6,9 +6,7 @@
|
||||
#
|
||||
### Ultra is a functional custom firmware for Nintendo Switch, with a focus on overclocking and an improved user experience.
|
||||
|
||||
### [UltraNX 2.6|R3](https://github.com/Ultra-NX/UltraNX/releases/tag/2.6-R3) Supports all HOS up to and including 20.5.0
|
||||
|
||||
### [UltraNX 2.7|Pre2](https://github.com/Ultra-NX/UltraNX/releases/tag/2.7-Pre2) Supports all HOS up to and including 21.0.1. Not a full-fledged release!
|
||||
### [UltraNX 2.7|R1](https://github.com/Ultra-NX/UltraNX/releases/tag/2.7-R1) Supports all HOS up to and including 21.0.1
|
||||
|
||||
|
||||
|
||||
@ -89,7 +87,7 @@
|
||||
* [FPSLocker Patches](https://github.com/masagrator/FPSLocker-Warehouse) - The patch package for FPSLocker allows you to update all patches at once, instead of downloading one at a time through the FPSLocker overlay. UltraNX always has the latest patches by default, so it's enough to update the CFW in a timely manner.
|
||||
* [DVR Patches](https://github.com/exelix11/dvr-patches) - SysDVR patches, work without the system module, activating background recording in games where it is initially prohibited.
|
||||
* [Mod Alchemist](https://github.com/ppkantorski/Mod-Alchemist) - A package for downloading, installing, and managing mods for games.
|
||||
* [sys-ftpd](https://github.com/cathery/sys-ftpd) - FTP server running in background.
|
||||
* [sys-ftpd](https://github.com/ELY3M/sys-ftpd) - FTP server running in background.
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
# Gori: Cuddly Carnage 1.0.7
|
||||
# BID: A21FFE97D09DCE4E
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
@ -24,4 +22,4 @@ ALL_FPS:
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
what: timing
|
||||
|
||||
@ -0,0 +1,75 @@
|
||||
# 無双アビス 1.4.2
|
||||
# BID: 2D22A87AE49C75AA
|
||||
|
||||
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: 0x6E3B50
|
||||
instructions: [
|
||||
[adrp, x1, 0x1021000],
|
||||
[ldr, s1, [x1, 0xe10]]
|
||||
]
|
||||
# Redirect DR Targets
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x6E3BF4
|
||||
instructions: [
|
||||
[adrp, x9, $dr_target1],
|
||||
[ldr, s1, [x9, $dr_target1]]
|
||||
]
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x6E3C04
|
||||
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, 0x1021E1C]
|
||||
value_type: uint32
|
||||
value: "120 / FPS_LOCK_TARGET"
|
||||
# Prevent from setting it as 0, otherwise game crashes
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_address: [MAIN, 0x1021E1C]
|
||||
compare_type: "=="
|
||||
compare_value_type: uint32
|
||||
compare_value: 0
|
||||
address: [MAIN, 0x1021E1C]
|
||||
value_type: uint32
|
||||
value: 1
|
||||
# Others
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1021E10]
|
||||
value_type: float
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1021E14]
|
||||
value_type: uint32
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1021E18]
|
||||
value_type: float
|
||||
value: "FPS_TARGET"
|
||||
@ -1,8 +1,6 @@
|
||||
# WRC Generations 1.2.2
|
||||
# BID: B8BE1CFAE53CAEBE
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# OptimalFrameDuration_ms = (1000/FPS) - (0.07 * (1000/30)
|
||||
-
|
||||
|
||||
@ -1,9 +1,7 @@
|
||||
# Gal*Gun Returns 1.0.4
|
||||
# ぎゃる☆がん りたーんず 1.0.4
|
||||
# BID: 7E65E5BC3564BE46
|
||||
# Buffers are hardcoded into fixed size class, so it's hard to get triple buffer
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# FPS Target + FPS Lock
|
||||
-
|
||||
|
||||
@ -0,0 +1,26 @@
|
||||
# Borderlands: The Pre-Sequel Ultimate Edition 1.0.1
|
||||
# BID: 090B1F7F7AF35D00
|
||||
|
||||
DECLARATIONS:
|
||||
-
|
||||
type: variable
|
||||
name: dr_frametime_max
|
||||
value_type: float
|
||||
default_value: 33.3
|
||||
evaluate: "0.999 * FRAMETIME_TARGET"
|
||||
-
|
||||
type: variable
|
||||
name: dr_frametime_min
|
||||
value_type: float
|
||||
default_value: 29.97
|
||||
evaluate: "0.8991 * FRAMETIME_TARGET"
|
||||
MASTER_WRITE:
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0xEA60B8
|
||||
instructions: [
|
||||
[adrp, x9, $dr_frametime_max],
|
||||
[ldr, s11, [x9, $dr_frametime_max]],
|
||||
[adrp, x9, $dr_frametime_min],
|
||||
[ldr, s12, [x9, $dr_frametime_min]]
|
||||
]
|
||||
@ -1,8 +1,6 @@
|
||||
# Sniper Elite 4 1.0.3
|
||||
# BID: 4EEA2970DF38ECE1
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Dynamic Resolution frame time target
|
||||
-
|
||||
|
||||
@ -0,0 +1,46 @@
|
||||
# Life is Strange: Before the Storm Remastered 1.0
|
||||
# BID: 30B812AB1BA3D447
|
||||
|
||||
DECLARATIONS:
|
||||
-
|
||||
type: variable
|
||||
name: dr_frametime_max
|
||||
value_type: float
|
||||
default_value: 30
|
||||
evaluate: "0.9 * FRAMETIME_TARGET"
|
||||
-
|
||||
type: variable
|
||||
name: dr_frametime_min
|
||||
value_type: float
|
||||
default_value: 25
|
||||
evaluate: "0.75 * FRAMETIME_TARGET"
|
||||
-
|
||||
type: code
|
||||
name: getDrFrametimeMax
|
||||
instructions: [
|
||||
[adrp, x8, $dr_frametime_max],
|
||||
[ldr, s1, [x8, $dr_frametime_max]],
|
||||
[ret]
|
||||
]
|
||||
-
|
||||
type: code
|
||||
name: getDrFrametimeMin
|
||||
instructions: [
|
||||
[adrp, x8, $dr_frametime_min],
|
||||
[ldr, s1, [x8, $dr_frametime_min]],
|
||||
[ret]
|
||||
]
|
||||
MASTER_WRITE:
|
||||
# REF: 60 2e 40 bd 01 d0 27 1e 00 20 21 1e
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x14FD210
|
||||
instructions: [
|
||||
[bl, _getDrFrametimeMax()]
|
||||
]
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x14FD23C
|
||||
instructions: [
|
||||
[bl, _getDrFrametimeMin()]
|
||||
]
|
||||
@ -0,0 +1,11 @@
|
||||
# Tomb Raider: Definitive Edition 1.0.1
|
||||
# BID: 2A4A71E176DAA356
|
||||
|
||||
ALL_FPS:
|
||||
# Dynamic Resolution Frametime Target
|
||||
# REF: E9 F3 00 B2 A9 40 A8 F2 A9 40 E8 F2
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1C2BB00]
|
||||
value_type: float
|
||||
value: FRAMETIME_TARGET
|
||||
@ -0,0 +1,25 @@
|
||||
# ソードアート・オンライン フラクチュアード デイドリーム 1.5.2.0
|
||||
# BID: 2EEE840599DC7021
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8676768, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x86B12E0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x7EB0F88, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -22,4 +22,4 @@ ALL_FPS:
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
what: timing
|
||||
@ -1,8 +1,6 @@
|
||||
# The Elder Scrolls V: Skyrim 1.1.392.3925134
|
||||
# BID: 4F7995092FAA5DC0
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Dynamic Resolution Frame Time Min = 0.9 * (1000/FPS)
|
||||
-
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
# The Witcher 3: Wild Hund - Complete Edition 4.04b
|
||||
# ウィッチャー3 ワイルドハント コンプリートエディション 4.04b
|
||||
# BID: 4BC4A8A814FD46A4
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# DRGameTargetFrameTimeInMs
|
||||
-
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
# Zombie Army 4: Dead War 1.1.1
|
||||
# BID: 12024D08CCFD25EB
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Dynamic Resolution FPS Target
|
||||
-
|
||||
|
||||
@ -0,0 +1,18 @@
|
||||
# Fate/Samurai Remnant `JPN` 1.3.2
|
||||
# BID: 6C46135714ABB870
|
||||
|
||||
# Disable setting double buffer, REF: 28 63 A8 9B B8 5F 6E 29 2B F7 01 51 B9 83 57 B8
|
||||
MASTER_WRITE:
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x5DB12C
|
||||
instructions: [
|
||||
[mov, w25, 3]
|
||||
]
|
||||
ALL_FPS:
|
||||
# interval, REF: 29 00 80 52 16 00 08 8B 08 A0 8C 52 28 00 A0 72
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x3412388]
|
||||
value_type: int32
|
||||
value: VSYNC_TARGET
|
||||
@ -0,0 +1,25 @@
|
||||
# リマザード:ブロークン ポーセリン 2.0.0
|
||||
# BID: 5EFAB20F5C1F0F68
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 1 decimals
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x58210E8, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x584D710, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x4CB8880, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,25 @@
|
||||
# Remothered: Broken Porcelain 修道院:破碎的瓷器 2.0.0
|
||||
# BID: 5EFAB20F5C1F0F68
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 1 decimals
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x58210E8, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x584D710, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x4CB8880, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,11 @@
|
||||
# Atelier Resleriana: The Red Alchemist & the White Guardian 1.4
|
||||
# BID: 8593E6008F5A883D
|
||||
|
||||
ALL_FPS:
|
||||
# MagicaCloth2.MagicaManager_TypeInfo
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x778EF80, 0xB8, 0, 0x10, 0x20, 0x10]
|
||||
address_unsafe: true
|
||||
value_type: uint32
|
||||
value: "FPS_TARGET + 5"
|
||||
@ -0,0 +1,11 @@
|
||||
# Atelier Resleriana: The Red Alchemist & the White Guardian 1.3
|
||||
# BID: F140F141FDC4C331
|
||||
|
||||
ALL_FPS:
|
||||
# MagicaCloth2.MagicaManager_TypeInfo
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7760D60, 0xB8, 0, 0x10, 0x20, 0x10]
|
||||
address_unsafe: true
|
||||
value_type: uint32
|
||||
value: "FPS_TARGET + 5"
|
||||
@ -0,0 +1,10 @@
|
||||
# 60 Parsecs! 1.0.10
|
||||
# BID: 12F93E2DBBCFA54F
|
||||
|
||||
ALL_FPS:
|
||||
# UnityEngine.Time::fixedDeltaTime
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x393D5F8, 0x48]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
||||
@ -0,0 +1,31 @@
|
||||
# Dusk Diver 酉閃町 -ダスクダイバー ユウセンチョウ- 1.0.6
|
||||
# BID: FAD1AF4EDC6DB267
|
||||
|
||||
ALL_FPS:
|
||||
# Disable bSmoothFrameRate and bUseFixedFrameRate to untie game speed from framerate and unlock FPS
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x5379338, 0x780]
|
||||
address_unsafe: true
|
||||
value_type: uint32
|
||||
# Default is 0x67, bSmoothFrameRate |= 0x20, bUseFixedFrameRate |= 0x40
|
||||
# By writing 7 we are making sure that other flags are maintained:
|
||||
# bAllowMultiThreadedAnimationUpdate |= 4
|
||||
# bOptimizeAnimBlueprintMemberVariableAccess |= 2
|
||||
# bCanBlueprintsTickByDefault |= 1
|
||||
value: 7
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 1 decimal
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x5354210, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x537A880, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -1,11 +1,10 @@
|
||||
# SONIC FORCES 1.1.0
|
||||
# SONIC FORCES 1.1.0/1.2.0
|
||||
# BID: 6D9EA94F8AAC00A8
|
||||
# Game speed is tied to framerate
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Remove double buffer
|
||||
## REF: E8 37 00 B9 E8 03 1F 32
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0xAD40FC
|
||||
@ -13,6 +12,7 @@ MASTER_WRITE:
|
||||
[mov, w8, 3]
|
||||
]
|
||||
# Block switching back to 30 FPS mode on loading screens
|
||||
## REF: 08 10 40 F9 48 00 00 B4, replace STR
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x6173B0
|
||||
@ -21,12 +21,14 @@ MASTER_WRITE:
|
||||
]
|
||||
ALL_FPS:
|
||||
# Switch to 60 FPS Mode
|
||||
## REF: 7F 7E 07 A9 6A A2 01 A9, ADRP + LDR below
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x1CAC518, 0x28, 0x20, 0x14]
|
||||
value_type: uint32
|
||||
value: 1
|
||||
# FPS target
|
||||
## REF: 00 1D 40 BD 01 D0 37 1E, ADRP + LDR above it
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1C38C28, 0x1C]
|
||||
|
||||
@ -0,0 +1,10 @@
|
||||
# V-Rally 4 JPN 1.2.0
|
||||
# BID: EB8A679B5DDD0060
|
||||
|
||||
ALL_FPS:
|
||||
# OptimalFrameDuration_ms = (1000/FPS) - (0.07 * (1000/30)
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x20A0E44]
|
||||
value_type: float
|
||||
value: "FRAMETIME_TARGET - (0.07 * (1000/30))"
|
||||
@ -2,8 +2,6 @@
|
||||
# BID: 3D4E3A9252AA6C63
|
||||
# There are small issues with animations in cutscenes at higher framerates
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock, pointer ref: 00 01 40 F9 E5 03 04 2A
|
||||
-
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
# The Witcher 3: Wild Hund - Complete Edition 4.04b
|
||||
# 《巫師 3:狂獵》-完全版 4.04b
|
||||
# BID: 4BC4A8A814FD46A4
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# DRGameTargetFrameTimeInMs
|
||||
-
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
# CRYMACHINA 慟哭奇機 / 크라이마키나 1.2.0
|
||||
# BID: E196E389FD9E0364
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x7538918, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7D33D38, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -1,8 +1,6 @@
|
||||
# HOT WHEELS UNLEASHED 2 1.0.11
|
||||
# BID: FE78C7B94C4E791A
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
@ -24,4 +22,4 @@ ALL_FPS:
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
what: timing
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
# スター・オーバードライブ 1.0.10
|
||||
# BID: 6D05923E7005E182
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x674C6E8, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x77322F0, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x776C850, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,43 @@
|
||||
# 하늘의 궤적 the 1st 1.0.6.1
|
||||
# BID: 6656BA1B5B8AC30A
|
||||
|
||||
DECLARATIONS:
|
||||
# Lock Max Handheld Resolution to 720p instead of 900p
|
||||
-
|
||||
type: code
|
||||
name: adjustDrResToNativeInHH
|
||||
instructions: [
|
||||
[cmp, w10, 1280],
|
||||
[b.le, :goto1],
|
||||
[adrp, x21, 0x730000],
|
||||
[ldr, w21, [x21, 0x820]], ## REF: nn::oe::GetOperationMode in nnMain
|
||||
[cbnz, w21, :goto1],
|
||||
[mov, w10, 1280],
|
||||
[mov, w8, 720],
|
||||
:goto1, [stp, w10, w8, [x19, 0x10]],
|
||||
[ret]
|
||||
]
|
||||
MASTER_WRITE:
|
||||
## REF: 88 C2 88 1A 6A 22 02 29
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x2CF7B4
|
||||
instructions: [
|
||||
[bl, _adjustDrResToNativeInHH()]
|
||||
]
|
||||
ALL_FPS:
|
||||
# Min Delta
|
||||
## REF: C1 03 80 52 28 4D 28 9B, first ADRP + ADD below it
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x730850, 0x2C]
|
||||
value_type: uint32
|
||||
value: FPS_TARGET
|
||||
# Dynamic Resolution
|
||||
## REF: First function in .init_array section, ADRP + ADD + 0x220 (default float: 2)
|
||||
## Adding there 0.95 by myself because game seems to have issues with reaching 60 FPS with 1.0
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x7303D0]
|
||||
value_type: float
|
||||
value: 0.95
|
||||
@ -0,0 +1,43 @@
|
||||
# 하늘의 궤적 the 1st 1.0.5
|
||||
# BID: 8CFF66758D7BD507
|
||||
|
||||
DECLARATIONS:
|
||||
# Lock Max Handheld Resolution to 720p instead of 900p
|
||||
-
|
||||
type: code
|
||||
name: adjustDrResToNativeInHH
|
||||
instructions: [
|
||||
[cmp, w9, 1280],
|
||||
[b.le, :goto1],
|
||||
[adrp, x21, 0x65F000],
|
||||
[ldr, w21, [x21, 0x830]], ## REF: nn::oe::GetOperationMode in nnMain
|
||||
[cbnz, w21, :goto1],
|
||||
[mov, w9, 1280],
|
||||
[mov, w8, 720],
|
||||
:goto1, [stp, w9, w8, [x19, 0x10]],
|
||||
[ret]
|
||||
]
|
||||
MASTER_WRITE:
|
||||
## REF: 69 22 02 29
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x2380A4
|
||||
instructions: [
|
||||
[bl, _adjustDrResToNativeInHH()]
|
||||
]
|
||||
ALL_FPS:
|
||||
# Min Delta
|
||||
## REF: 88 01 80 52 C1 03 80 52 28 4D 28 9B 29 00 80 52, first ADRP + ADD below it
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x65F860, 0x2C]
|
||||
value_type: uint32
|
||||
value: FPS_TARGET
|
||||
# Dynamic Resolution
|
||||
## REF: First function in .init_array section, ADRP + ADD + 0x220 (default float: 2)
|
||||
## Adding there 0.95 by myself because game seems to have issues with reaching 60 FPS with 1.0
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x65F378]
|
||||
value_type: float
|
||||
value: 0.95
|
||||
@ -0,0 +1,17 @@
|
||||
# Bendy and the Dark Revival 1.6.3s
|
||||
# BID: 2C2D599E55912C6C
|
||||
|
||||
ALL_FPS:
|
||||
# PSH.DynamicResolution.DynamicResolutionController_TypeInfo
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x396F660, 0xB8, 0]
|
||||
address_unsafe: true
|
||||
value_type: double
|
||||
value: [FPS_TARGET, FRAMETIME_TARGET]
|
||||
# UnityEngine.Time::fixedDeltaTime
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x3D42700, 0x48]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
||||
@ -0,0 +1,19 @@
|
||||
# 셜록 홈즈 어웨이큰드 1.0.1
|
||||
# BID: A1E1EFBA68B846A9
|
||||
|
||||
ALL_FPS:
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7D81968, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x75811D8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,25 @@
|
||||
# Rune Factory: Guardians of Azuma US 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,12 @@
|
||||
# Hellpoint 1.0.2.0
|
||||
# BID: 3776E7BBC7C01E43
|
||||
|
||||
ALL_FPS:
|
||||
# Manager<DynamicResolutionManager>_TypeInfo
|
||||
# Using different scales than original (0.78, 1.14) because they seem to not be good for targeting 60 FPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x5357390, 0xB8, 0, 0x20, 0x20]
|
||||
address_unsafe: true
|
||||
value_type: float
|
||||
value: ["0.6 * FRAMETIME_TARGET", "0.84 * FRAMETIME_TARGET"]
|
||||
@ -0,0 +1,10 @@
|
||||
# Zombie Army 4: Dead War `Asia` 1.1.1
|
||||
# BID: 12024D08CCFD25EB
|
||||
|
||||
ALL_FPS:
|
||||
# Dynamic Resolution FPS Target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x179EF64]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
||||
@ -0,0 +1,19 @@
|
||||
# Caligula Overdose/カリギュラ オーバードーズ 1.01
|
||||
# BID: A953B35A45BEA33D
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to one decimal
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x5CF2530, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x5D170A8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,38 @@
|
||||
# 鬼滅の刃 ヒノカミ血風譚 1.53
|
||||
# BID: 14C878ECCA9D7CB5
|
||||
|
||||
ALL_FPS:
|
||||
# Disable bUseFixedFrameRate to unlock framerate
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0xB314540, 0x7F8]
|
||||
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
|
||||
# Disable CustomTimeStep
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0xB314540, 0x810]
|
||||
value_type: uint8
|
||||
value: 0
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xB314830, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0xAB49110, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
|
||||
@ -0,0 +1,26 @@
|
||||
# The Beast Inside 1.2.0
|
||||
# BID: EB58D577539E9151
|
||||
|
||||
ALL_FPS:
|
||||
# Disable bUseFixedFrameRate
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x64AD448, 0x7A4]
|
||||
address_unsafe: true
|
||||
value_type: uint32
|
||||
value: 7
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x64ADD48, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x5CE8100, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,16 @@
|
||||
# The Elder Scrolls V: Skyrim JPN 1.1.392.3925134
|
||||
# BID: 4F7995092FAA5DC0
|
||||
|
||||
ALL_FPS:
|
||||
# Dynamic Resolution Frame Time Min = 0.9 * (1000/FPS)
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x3356FC8]
|
||||
value_type: float
|
||||
value: "0.9 * FRAMETIME_TARGET"
|
||||
# Dynamic Resolution Frame Time Max = 0.99 * (1000/FPS)
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x3356FB0]
|
||||
value_type: float
|
||||
value: "0.99 * FRAMETIME_TARGET"
|
||||
@ -0,0 +1,19 @@
|
||||
# Storm Lancers 1.0.1.72
|
||||
# BID: 99519C9259122E4F
|
||||
|
||||
ALL_FPS:
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7ED0D60, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x6EB2F28, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,36 @@
|
||||
# Tennis World Tour 2 1.3.0
|
||||
# BID: D1B29E1ABDCD955E
|
||||
|
||||
DECLARATIONS:
|
||||
-
|
||||
type: variable
|
||||
name: dr_target
|
||||
value_type: float
|
||||
default_value: 0.03333333333
|
||||
evaluate: "1 / FPS_TARGET"
|
||||
-
|
||||
type: code
|
||||
name: tripleBuffer
|
||||
instructions: [
|
||||
[mov, w9, 3],
|
||||
[str, w9, [x8, 0x1A0]],
|
||||
[mov, w8, w9],
|
||||
[ret]
|
||||
]
|
||||
MASTER_WRITE:
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x726338
|
||||
instructions: [
|
||||
[bl, _tripleBuffer()]
|
||||
]
|
||||
# Redirect Dynamic Resolution target reading to MAIN + 0x30C3F00
|
||||
# REF: 28 11 91 52 08 A1 A7 72 03 01 27 1E
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x1896448
|
||||
instructions: [
|
||||
[adrp, x12, $dr_target],
|
||||
[ldr, s17, [x12, $dr_target]],
|
||||
[nop]
|
||||
]
|
||||
@ -0,0 +1,20 @@
|
||||
# Expeditions: A Mudrunner Game 1.19.0.0
|
||||
# BID: 0F7616E6F5EE08CE
|
||||
# REF: 01 04 0C 5E 00 10 2E 1E
|
||||
|
||||
DECLARATIONS:
|
||||
-
|
||||
type: variable
|
||||
name: dr_target
|
||||
value_type: float
|
||||
default_value: 33.333333
|
||||
evaluate: FRAMETIME_TARGET
|
||||
MASTER_WRITE:
|
||||
# Redirect DR frametime target
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x177D4A4
|
||||
instructions: [
|
||||
[adrp, x13, $dr_target],
|
||||
[ldr, s2, [x13, $dr_target]]
|
||||
]
|
||||
@ -0,0 +1,43 @@
|
||||
# Trails in the Sky 1st Chapter 1.0.6
|
||||
# BID: 2B18130BD191CAC5
|
||||
|
||||
DECLARATIONS:
|
||||
# Lock Max Handheld Resolution to 720p instead of 900p
|
||||
-
|
||||
type: code
|
||||
name: adjustDrResToNativeInHH
|
||||
instructions: [
|
||||
[cmp, w10, 1280],
|
||||
[b.le, :goto1],
|
||||
[adrp, x21, 0x732000],
|
||||
[ldr, w21, [x21, 0x820]], ## REF: nn::oe::GetOperationMode in nnMain
|
||||
[cbnz, w21, :goto1],
|
||||
[mov, w10, 1280],
|
||||
[mov, w8, 720],
|
||||
:goto1, [stp, w10, w8, [x19, 0x10]],
|
||||
[ret]
|
||||
]
|
||||
MASTER_WRITE:
|
||||
## REF: 88 C2 88 1A 6A 22 02 29
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x2D07B4
|
||||
instructions: [
|
||||
[bl, _adjustDrResToNativeInHH()]
|
||||
]
|
||||
ALL_FPS:
|
||||
# Min Delta
|
||||
## REF: C1 03 80 52 28 4D 28 9B, first ADRP + ADD below it
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x732850, 0x2C]
|
||||
value_type: uint32
|
||||
value: FPS_TARGET
|
||||
# Dynamic Resolution
|
||||
## REF: First function in .init_array section, ADRP + ADD + 0x220 (default float: 2)
|
||||
## Adding there 0.9 by myself because game seems to have issues with reaching 60 FPS without it
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x7323D0]
|
||||
value_type: float
|
||||
value: 0.95
|
||||
@ -0,0 +1,42 @@
|
||||
# 魂斗羅 ローグ コープス 1.3.0
|
||||
# BID: 4CCD2F6D331DD104
|
||||
|
||||
DECLARATIONS:
|
||||
-
|
||||
type: variable
|
||||
name: dr_factor
|
||||
value_type: float
|
||||
default_value: 1000000
|
||||
evaluate: "30000000 / FPS_TARGET"
|
||||
-
|
||||
type: code
|
||||
name: fpsTarget
|
||||
instructions: [
|
||||
[adrp, x8, 0xd94000],
|
||||
[ldr, w8, [x8, 0x628]],
|
||||
[ret]
|
||||
]
|
||||
MASTER_WRITE:
|
||||
# Read FPS target from code cave
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x2004
|
||||
instructions: [
|
||||
[bl, _fpsTarget()]
|
||||
]
|
||||
# Redirect DR time factor
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x2140
|
||||
instructions: [
|
||||
[adrp, x8, $dr_factor],
|
||||
[ldr, s9, [x8, $dr_factor]]
|
||||
]
|
||||
ALL_FPS:
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xD94628]
|
||||
value_type: uint32
|
||||
value: FPS_TARGET
|
||||
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
# Moto Racer 4 1.0.3
|
||||
# BID: 31F61EC3A4FEFDF7
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x52ADD30, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x5B3BAB8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,25 @@
|
||||
# Five Nights at Freddy's: Help Wanted 2 0.3
|
||||
# BID: DE7B50B9FEF89856
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x686AE48, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7036778, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x705C0F0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,25 @@
|
||||
# Five Nights at Freddy's: Help Wanted 2 0.1-0.2
|
||||
# BID: F7EB23F0D8E5A933
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x53F45F8, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x5BC3628, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x5BF1308, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,21 @@
|
||||
# スノーランナー 1.0.42
|
||||
# BID: 8C7A99CBD1AEA208
|
||||
# Just search for 0x42055555 in case of REF not working
|
||||
|
||||
DECLARATIONS:
|
||||
-
|
||||
type: variable
|
||||
name: dr_target
|
||||
value_type: float
|
||||
default_value: 33.333333
|
||||
evaluate: FRAMETIME_TARGET
|
||||
MASTER_WRITE:
|
||||
# Redirect DR frametime target
|
||||
## REF: 01 04 0C 5E 00 10 2E 1E
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x1944154
|
||||
instructions: [
|
||||
[adrp, x10, $dr_target],
|
||||
[ldr, s2, [x10, $dr_target]]
|
||||
]
|
||||
@ -0,0 +1,31 @@
|
||||
# DRAGON BALL: Sparking! ZERO 2.0.73
|
||||
# BID: 7B53433FA04477FC
|
||||
|
||||
ALL_FPS:
|
||||
# Disable bUseFixedFrameRate to unlock framerate
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x9A2EA20, 0x9C4]
|
||||
address_unsafe: true
|
||||
value_type: uint32
|
||||
# Default is 0x47, bUseFixedFrameRate |= 0x40
|
||||
# By writing 7 we are making sure that other flags are maintained:
|
||||
# bAllowMultiThreadedAnimationUpdate |= 4
|
||||
# bOptimizeAnimBlueprintMemberVariableAccess |= 2
|
||||
# bCanBlueprintsTickByDefault |= 1
|
||||
value: 7
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x9A2FFF0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x9238B68, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -1,7 +1,5 @@
|
||||
# The Great Ace Attorney Chronicles 1.0.0
|
||||
# BID: 761CD556AB357C87
|
||||
|
||||
unsafeCheck: true
|
||||
# BID: 1DA748FC9499882F
|
||||
|
||||
ALL_FPS:
|
||||
# FPS lock
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
# Platform 8 1.0.4
|
||||
# BID: 42A0B64E45AD9ABA
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7910200, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7949910, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x69296E8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,25 @@
|
||||
# DreamWorks All-Star Kart Racing 0.1.0.11740
|
||||
# BID: 3C3A2E68DBD1BBEC
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7F0F6B8, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x7740598, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7F3D368, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,18 @@
|
||||
# Hitman Absolution 1.2.2RC1
|
||||
# BID: 96B7F9BD973D298E
|
||||
|
||||
ALL_FPS:
|
||||
# IdleFPS/ResponsiveFPS
|
||||
# REF: 68 22 40 39 1F 01 00 71 A2 02 94 1A, first ADRP + ADD, add to it 0x38
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x2E7DA10, 0x70]
|
||||
value_type: uint32
|
||||
value: [FPS_TARGET, FPS_TARGET]
|
||||
# DynamicResolutionScaling/FPSTarget
|
||||
# REF: E0 1E 40 BD 01 10 2E 1E 00 20 21 1E, any result, first ADRP+ADD above that
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x2B7B328, 0x2C]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
||||
@ -0,0 +1,19 @@
|
||||
# 真・女神轉生Ⅴ HK 1.0.2
|
||||
# BID: 019FBFE7738EA314
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
|
||||
-
|
||||
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
|
||||
@ -1,8 +1,6 @@
|
||||
# The Witcher 3: Wild Hund - Complete Edition 4.04b
|
||||
# The Witcher 3: Wild Hunt - Complete Edition 4.04b
|
||||
# BID: D27FD8A515077F34
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# DRGameTargetFrameTimeInMs
|
||||
-
|
||||
|
||||
@ -0,0 +1,11 @@
|
||||
# Wobbly Life 1.0.0.3
|
||||
# BID: B174F363C2823CBE
|
||||
|
||||
ALL_FPS:
|
||||
# DynamicResolutionManager_TypeInfo
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x84A6F58, 0xB8, 0]
|
||||
address_unsafe: true
|
||||
value_type: double
|
||||
value: [FPS_TARGET, FRAMETIME_TARGET]
|
||||
@ -1,4 +1,4 @@
|
||||
# Dusk Diver 2 1.0.1
|
||||
# Dusk Diver 2 `US` 1.0.1
|
||||
# BID: 217C9ECF258C0312
|
||||
|
||||
ALL_FPS:
|
||||
@ -29,4 +29,3 @@ ALL_FPS:
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
# Rune Factory: Guardians of Azuma 1.1.1
|
||||
# BID: F678FD2BB197125B
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8F68D40, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8FA2470, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x7F816E8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,25 @@
|
||||
# Nickelodeon Kart Racers 3: Slime Speedway 0.3.2.15969
|
||||
# BID: EF2694EA89E001DB
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7F32158, 0]
|
||||
value_type: float
|
||||
value: [FRAMETIME_TARGET, FRAMETIME_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x7764D78, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7F5FD48, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -1,8 +1,6 @@
|
||||
# Wolfenstein: Youngblood 1.5
|
||||
# BID: 8B40EBBA7244C94A
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# rs_force460
|
||||
-
|
||||
@ -24,7 +22,7 @@ ALL_FPS:
|
||||
value: "(30 / FPS_TARGET) * 0.984"
|
||||
# com_adaptiveTickMaxHz
|
||||
-
|
||||
type: write
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x85F74E0]
|
||||
value_type: int32
|
||||
value: FPS_LOCK_TARGET
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
# The Exit 8 1.0.9
|
||||
# BID: 5346BDF1EEC2BA4C
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7614450, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x764DB60, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x66356E8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,74 @@
|
||||
# 테일즈 오브 엑실리아 리마스터 1.0.1
|
||||
# BID: D64B8283BD5CEA63
|
||||
|
||||
DECLARATIONS:
|
||||
-
|
||||
type: variable
|
||||
name: patch_running
|
||||
value_type: uint8
|
||||
default_value: 0
|
||||
-
|
||||
type: code
|
||||
name: applyCustomSpeed
|
||||
instructions: [
|
||||
[adrp, x4, $patch_running],
|
||||
[ldrb, w4, [x4, $patch_running]],
|
||||
[cbnz, w4, :goto1],
|
||||
[stp, s0, s1, [x8, 0x6C]],
|
||||
:goto1, [ret]
|
||||
]
|
||||
MASTER_WRITE:
|
||||
# Block updating game speed
|
||||
## REF: 00 85 0d 2d
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x244A5F4
|
||||
instructions: [
|
||||
[bl, _applyCustomSpeed()]
|
||||
]
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x28EBB1C
|
||||
instructions: [
|
||||
[bl, _applyCustomSpeed()]
|
||||
]
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x2B26CC4
|
||||
instructions: [
|
||||
[bl, _applyCustomSpeed()]
|
||||
]
|
||||
ALL_FPS:
|
||||
# Game Speed
|
||||
## REF: Global_TypeInfo
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x82C50C0, 0xB8, 0x6C]
|
||||
value_type: float
|
||||
value: [FPS_TARGET, "60 / FPS_TARGET"]
|
||||
# Just in case, dunno if they are used for anything, but all of them were set to target strictly 30 FPS
|
||||
# UnityEngine.Time::maximumDeltaTime
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x9FCFBF8, 0x100]
|
||||
value_type: float
|
||||
value: [0.066666666, 0.066666666]
|
||||
# UnityEngine.Time::fixedDeltaTime
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x9FCFBF8, 0x48]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
||||
# UnityEngine.Application::targetFrameRate
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x84E1EB0]
|
||||
value_type: uint32
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: compare
|
||||
compare_address: [VARIABLE, patch_running]
|
||||
compare_type: "=="
|
||||
compare_value: 0
|
||||
address: [VARIABLE, patch_running]
|
||||
value: 1
|
||||
@ -1,8 +1,6 @@
|
||||
# The Witcher 3: Wild Hund - Complete Edition 4.04b
|
||||
# The Witcher 3: Wild Hunt - Complete Edition 4.04b
|
||||
# BID: 4BC4A8A814FD46A4
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# DRGameTargetFrameTimeInMs
|
||||
-
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
# WRC10 1.1.0
|
||||
# BID: 69CACEEC5F01C418
|
||||
|
||||
unsafeCheck: true
|
||||
# BID: 69CACEEC5F01C41B
|
||||
|
||||
ALL_FPS:
|
||||
# OptimalFrameDuration_ms = (1000/FPS) - (0.07 * (1000/30)
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
# ウィッチャー3 ワイルドハント 4.04b
|
||||
# BID: D27FD8A515077F34
|
||||
|
||||
ALL_FPS:
|
||||
# DRGameTargetFrameTimeInMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x41312B4]
|
||||
value_type: float
|
||||
value: "0.945 * FRAMETIME_TARGET"
|
||||
# DRCinematicTargetFrameTimeInMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x41312E4]
|
||||
value_type: float
|
||||
value: "0.945 * FRAMETIME_TARGET"
|
||||
# LimitFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x411DCFC]
|
||||
value_type: int32
|
||||
value: FPS_LOCK_TARGET
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -1,8 +1,6 @@
|
||||
# DOOM 1.4
|
||||
# DOOM `West` 1.4
|
||||
# BID: 2847991952B3D7AB
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# rs_460Threshold (default is 0.285)
|
||||
-
|
||||
|
||||
@ -0,0 +1,36 @@
|
||||
# 모두의 골프 월드 / 全民高爾夫 環球之旅 1.1.3
|
||||
# BID: A179DD4F4BFB3A04
|
||||
# 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: DynamicResolution::Compute()
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x3925918
|
||||
instructions: [
|
||||
[adrp, x10, $dr_frametime_max],
|
||||
[ldr, d1, [x10, $dr_frametime_max]],
|
||||
[nop]
|
||||
]
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x39259EC
|
||||
instructions: [
|
||||
[adrp, x10, $dr_frametime_min],
|
||||
[ldr, d1, [x10, $dr_frametime_min]],
|
||||
[nop],
|
||||
[nop]
|
||||
]
|
||||
@ -0,0 +1,35 @@
|
||||
# AO Tennis 2 1.7.0
|
||||
# BID: 01EB7A6DE827BFD9
|
||||
|
||||
DECLARATIONS:
|
||||
-
|
||||
type: variable
|
||||
name: dr_target
|
||||
value_type: float
|
||||
default_value: 0.03333333333
|
||||
evaluate: "1 / FPS_TARGET"
|
||||
-
|
||||
type: code
|
||||
name: tripleBuffer
|
||||
instructions: [
|
||||
[mov, w9, 3],
|
||||
[str, w9, [x21, 0x1A0]],
|
||||
[mov, w8, w9],
|
||||
[ret]
|
||||
]
|
||||
MASTER_WRITE:
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x3DBAFC
|
||||
instructions: [
|
||||
[bl, _tripleBuffer()]
|
||||
]
|
||||
# Redirect Dynamic Resolution target
|
||||
# REF: EC AF 40 B9 EB 07 9F 1A, first adrp + ldr below
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x131922C
|
||||
instructions: [
|
||||
[adrp, x12, $dr_target],
|
||||
[ldr, s18, [x12, $dr_target]]
|
||||
]
|
||||
@ -1,8 +1,6 @@
|
||||
# Star Overdrive 1.0.10
|
||||
# BID: 6D05923E7005E182
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
|
||||
@ -0,0 +1,16 @@
|
||||
# Hob: The Definitive Edition 1.1.3
|
||||
# BID: 4E7978E35F9D7490
|
||||
|
||||
ALL_FPS:
|
||||
# r_dynamicResGPUTimeDrop
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x2F8A248]
|
||||
value_type: float
|
||||
value: ["0.96 * FRAMETIME_TARGET", "0.96 * FRAMETIME_TARGET"]
|
||||
# r_dynamicResGPUTimeRaise
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x2F8A268]
|
||||
value_type: float
|
||||
value: ["0.84 * FRAMETIME_TARGET", "0.84 * FRAMETIME_TARGET"]
|
||||
@ -0,0 +1,38 @@
|
||||
# 귀멸의 칼날 히노카미 혈풍담 1.53
|
||||
# BID: 14C878ECCA9D7CB5
|
||||
|
||||
ALL_FPS:
|
||||
# Disable bUseFixedFrameRate to unlock framerate
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0xB314540, 0x7F8]
|
||||
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
|
||||
# Disable CustomTimeStep
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0xB314540, 0x810]
|
||||
value_type: uint8
|
||||
value: 0
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xB314830, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0xAB49110, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
|
||||
@ -0,0 +1,43 @@
|
||||
# 空の軌跡 the 1st 1.0.6
|
||||
# BID: 4583D73E326FFE7B
|
||||
|
||||
DECLARATIONS:
|
||||
# Lock Max Handheld Resolution to 720p instead of 900p
|
||||
-
|
||||
type: code
|
||||
name: adjustDrResToNativeInHH
|
||||
instructions: [
|
||||
[cmp, w10, 1280],
|
||||
[b.le, :goto1],
|
||||
[adrp, x21, 0x730000],
|
||||
[ldr, w21, [x21, 0x820]], ## REF: nn::oe::GetOperationMode in nnMain
|
||||
[cbnz, w21, :goto1],
|
||||
[mov, w10, 1280],
|
||||
[mov, w8, 720],
|
||||
:goto1, [stp, w10, w8, [x19, 0x10]],
|
||||
[ret]
|
||||
]
|
||||
MASTER_WRITE:
|
||||
## REF: 6A 22 02 29, second result
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x2CF6E4
|
||||
instructions: [
|
||||
[bl, _adjustDrResToNativeInHH()]
|
||||
]
|
||||
ALL_FPS:
|
||||
# Min Delta
|
||||
## REF: C1 03 80 52 28 4D 28 9B, first ADRP + ADD below it
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x730850, 0x2C]
|
||||
value_type: uint32
|
||||
value: FPS_TARGET
|
||||
# Dynamic Resolution
|
||||
## REF: First function in .init_array section, ADRP + ADD + 0x220 (default float: 2)
|
||||
## Adding there 0.95 by myself because game seems to have issues with reaching 60 FPS without it
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x7303D0]
|
||||
value_type: float
|
||||
value: 0.95
|
||||
@ -35,9 +35,9 @@ ALL_FPS:
|
||||
value: FPS_TARGET
|
||||
# Dynamic Resolution
|
||||
## REF: First function in .init_array section, ADRP + ADD + 0x220 (default float: 2)
|
||||
## Adding there 0.9 by myself because game seems to have issues with reaching 60 FPS without it
|
||||
## Adding there 0.95 by myself because game seems to have issues with reaching 60 FPS at 1.0
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x72F3D0]
|
||||
value_type: float
|
||||
value: 0.95
|
||||
value: 0.95
|
||||
|
||||
@ -2,91 +2,6 @@
|
||||
# BID: A6CE40DC3AEDB1BE
|
||||
# Thanks to Hazerou for finding interval offsets
|
||||
|
||||
MASTER_WRITE:
|
||||
# Remove double buffer
|
||||
## REF: 08 07 40 B9 49 00 80 52
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x747C04
|
||||
instructions: [
|
||||
[mov, w9, 3]
|
||||
]
|
||||
# Fix helper functions to not corrupt stack
|
||||
## REF: 42 00 80 52 BF FF 30 A9
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x747CE0
|
||||
instructions: [
|
||||
[mov, w2, 3]
|
||||
]
|
||||
## REF: 08 65 45 F9 42 00 80 52, first result
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x75ADFC
|
||||
instructions: [
|
||||
[mov, w2, 3]
|
||||
]
|
||||
## REF: 09 C0 9D 52 09 01 A0 72 E1 03 00 91 F6 03 00 91, beginning of function
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x676AC8
|
||||
instructions: [
|
||||
[sub, sp, sp, 0x50],
|
||||
[stp, x22, x21, [sp, 0x20]],
|
||||
[stp, x20, x19, [sp, 0x30]],
|
||||
[stp, x29, x30, [sp, 0x40]],
|
||||
[add, x29, sp, 0x40]
|
||||
]
|
||||
## REF: 00 61 00 91 42 00 80 52
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x676B1C
|
||||
instructions: [
|
||||
[mov, w2, 3]
|
||||
]
|
||||
## REF: End of function from code above, first ldp x29 x30
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x676B40
|
||||
instructions: [
|
||||
[ldp, x29, x30, [sp, 0x40]],
|
||||
[ldp, x20, x19, [sp, 0x30]],
|
||||
[ldp, x22, x21, [sp, 0x20]],
|
||||
[add, sp, sp, 0x50]
|
||||
]
|
||||
## REF: 42 00 80 52 F6 03 00 91
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x74C280
|
||||
instructions: [
|
||||
[mov, w2, 3]
|
||||
]
|
||||
## REF: 42 00 80 52 16 69 69 F8, second result
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x75AE68
|
||||
instructions: [
|
||||
[mov, w2, 3]
|
||||
]
|
||||
## REF: 42 00 80 52 08 05 40 F9
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x7C2E64
|
||||
instructions: [
|
||||
[mov, w2, 3]
|
||||
]
|
||||
# Block transparency in some 2D elements to avoid issue with flickering at triple buffer
|
||||
## REF: 49 91 89 B9 4A 41 48 B9
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x6A757C
|
||||
instructions: [
|
||||
[mov, x9, 0x102],
|
||||
[ldr, w10, [x10, 0x840]],
|
||||
[add, x20, x8, 0x820],
|
||||
[lsl, x12, x10, 3],
|
||||
[str, x9, [x20]]
|
||||
]
|
||||
ALL_FPS:
|
||||
# Interval (Setting it to 0 unlocks framerate and sets dynamic game speed)
|
||||
## REF: 17 6C 90 52 57 01 A0 72 08 7C 01 A9, first STR above it
|
||||
|
||||
@ -2,81 +2,6 @@
|
||||
# BID: D9BA7DB72FFAFECD
|
||||
# Thanks to Hazerou for finding interval offsets
|
||||
|
||||
MASTER_WRITE:
|
||||
# Remove double buffer
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x745E94
|
||||
instructions: [
|
||||
[mov, w9, 3]
|
||||
]
|
||||
# Fix helper functions to not corrupt stack
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x745F70
|
||||
instructions: [
|
||||
[mov, w2, 3]
|
||||
]
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x75908C
|
||||
instructions: [
|
||||
[mov, w2, 3]
|
||||
]
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x675198
|
||||
instructions: [
|
||||
[sub, sp, sp, 0x50],
|
||||
[stp, x22, x21, [sp, 0x20]],
|
||||
[stp, x20, x19, [sp, 0x30]],
|
||||
[stp, x29, x30, [sp, 0x40]],
|
||||
[add, x29, sp, 0x40]
|
||||
]
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x6751EC
|
||||
instructions: [
|
||||
[mov, w2, 3]
|
||||
]
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x675210
|
||||
instructions: [
|
||||
[ldp, x29, x30, [sp, 0x40]],
|
||||
[ldp, x20, x19, [sp, 0x30]],
|
||||
[ldp, x22, x21, [sp, 0x20]],
|
||||
[add, sp, sp, 0x50]
|
||||
]
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x74A510
|
||||
instructions: [
|
||||
[mov, w2, 3]
|
||||
]
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x7590F8
|
||||
instructions: [
|
||||
[mov, w2, 3]
|
||||
]
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x7BDCD4
|
||||
instructions: [
|
||||
[mov, w2, 3]
|
||||
]
|
||||
# Block transparency in some 2D elements to avoid issue with flickering at triple buffer
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x6A58C8
|
||||
instructions: [
|
||||
[mov, x9, 0x102],
|
||||
[ldr, w10, [x10, 0x840]],
|
||||
[add, x20, x8, 0x820],
|
||||
[lsl, x12, x10, 3],
|
||||
[str, x9, [x20]]
|
||||
]
|
||||
ALL_FPS:
|
||||
# Interval (Setting it to 0 unlocks framerate and sets dynamic game speed)
|
||||
-
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
# Disney Epic Mickey: Rebrushed 1.0.4
|
||||
# BID: D334BC060F1FA3AE
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x6E35A58, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x6E636F8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x6666668, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,13 @@
|
||||
# EA SPORTS FC 26 1.81.fdc
|
||||
# BID: EBFF3A6C8EA30490
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xC63C6F8, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -21,9 +21,8 @@ DECLARATIONS:
|
||||
type: code
|
||||
name: designalCutscene
|
||||
instructions: [
|
||||
[mov, w1, wzr],
|
||||
[adrp, x2, $cutscene_flag],
|
||||
[str, w1, [x2, $cutscene_flag]],
|
||||
[adrp, x1, $cutscene_flag],
|
||||
[str, wzr, [x1, $cutscene_flag]],
|
||||
[ret]
|
||||
]
|
||||
MASTER_WRITE:
|
||||
@ -54,3 +53,4 @@ ALL_FPS:
|
||||
compare_address: [VARIABLE, cutscene_flag]
|
||||
value_type: refresh_rate
|
||||
value: 30
|
||||
|
||||
|
||||
@ -0,0 +1,55 @@
|
||||
# トライン5:ぜんまい仕掛けの陰謀(Trine 5: A Clockwork Conspiracy) 1.0.5
|
||||
# BID: 8322528255D2CC63
|
||||
# To update dynamic resolution offsets look at fb::renderer::ResolutionScaler::update
|
||||
|
||||
DECLARATIONS:
|
||||
-
|
||||
type: variable
|
||||
name: dr_target_max
|
||||
value_type: double
|
||||
default_value: 34
|
||||
evaluate: "1.02 * FRAMETIME_TARGET"
|
||||
-
|
||||
type: variable
|
||||
name: dr_target_min
|
||||
value_type: double
|
||||
default_value: 32
|
||||
evaluate: "0.96 * FRAMETIME_TARGET"
|
||||
MASTER_WRITE:
|
||||
# Change double buffer to triple buffer
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x138A024
|
||||
instructions: [
|
||||
[mov, w8, 3]
|
||||
]
|
||||
# Allow changing dynamic resolution timings
|
||||
# Max
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x25992CC
|
||||
instructions: [
|
||||
[adrp, x8, $dr_target_max],
|
||||
[adrp, x22, 0x5ddf000],
|
||||
[ldr, d2, [x8, $dr_target_max]]
|
||||
]
|
||||
# Min - changed address to MAIN + 0x7D05208
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x2599344
|
||||
instructions: [
|
||||
[adrp, x10, $dr_target_min],
|
||||
[ldr, d5, [x10, $dr_target_min]]
|
||||
]
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x2599380
|
||||
instructions: [
|
||||
[adrp, x10, $dr_target_min]
|
||||
]
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x2599390
|
||||
instructions: [
|
||||
[ldr, d6, [x10, $dr_target_min]]
|
||||
]
|
||||
@ -0,0 +1,10 @@
|
||||
# Little Noah: Scion of Paradise 1.41
|
||||
# BID: 8CCC67A5A75CB8E5
|
||||
|
||||
ALL_FPS:
|
||||
# UnityEngine.Time::fixedDeltaTime
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x3D2E180, 0x48]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
||||
@ -0,0 +1,43 @@
|
||||
# ドラゴンクエストXI 過ぎ去りし時を求めて S 1.0.4
|
||||
# BID: 325E49E94A030B7E
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicResolution.MaxTimeBudget = 0.99 * (1000/FPS)
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x84EBDD8, 0]
|
||||
value_type: float
|
||||
value: ["0.99 * FRAMETIME_TARGET", "0.99 * FRAMETIME_TARGET"]
|
||||
# r.DynamicResolution.MinTimeBudget = 0.9 * (1000/FPS)
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x84EBDF0, 0]
|
||||
value_type: float
|
||||
value: ["0.9 * FRAMETIME_TARGET", "0.9 * FRAMETIME_TARGET"]
|
||||
# r.DynamicResolution.HeavyTimeBudget = 1.05 * (1000/FPS)
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x84EBE08, 0]
|
||||
value_type: float
|
||||
value: ["1.05 * FRAMETIME_TARGET", "1.05 * FRAMETIME_TARGET"]
|
||||
# r.DynamicResolution.LightTimeBudget = 0.9 * (1000/FPS)
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x84EBE20, 0]
|
||||
value_type: float
|
||||
value: ["0.9 * FRAMETIME_TARGET", "0.9 * FRAMETIME_TARGET"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8500C48, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x7878500, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,40 @@
|
||||
# Trine 4: The Nightmare Prince 1.0.3
|
||||
# BID: B70F06EAC87FA2AF
|
||||
# REF: 00 00 00 00 00 00 41 40, its xref
|
||||
|
||||
DECLARATIONS:
|
||||
-
|
||||
type: variable
|
||||
name: dr_target_max
|
||||
value_type: double
|
||||
default_value: 34
|
||||
evaluate: "1.02 * FRAMETIME_TARGET"
|
||||
-
|
||||
type: variable
|
||||
name: dr_target_min
|
||||
value_type: double
|
||||
default_value: 33
|
||||
evaluate: "0.99 * FRAMETIME_TARGET"
|
||||
MASTER_WRITE:
|
||||
# Allow changing dynamic resolution timings
|
||||
# Max
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x16DC3B8
|
||||
instructions: [
|
||||
[adrp, x8, $dr_target_max],
|
||||
[ldr, d2, [x8, $dr_target_max]]
|
||||
]
|
||||
# Min
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x16DC404
|
||||
instructions: [
|
||||
[adrp, x10, $dr_target_min]
|
||||
]
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x16DC418
|
||||
instructions: [
|
||||
[ldr, d4, [x10, $dr_target_min]]
|
||||
]
|
||||
@ -0,0 +1,75 @@
|
||||
# テイルズ オブ エクシリア リマスター 1.0.1
|
||||
# BID: 4779B3A56B655418
|
||||
|
||||
DECLARATIONS:
|
||||
-
|
||||
type: variable
|
||||
name: patch_running
|
||||
value_type: uint8
|
||||
default_value: 0
|
||||
-
|
||||
type: code
|
||||
name: applyCustomSpeed
|
||||
instructions: [
|
||||
[adrp, x4, $patch_running],
|
||||
[ldrb, w4, [x4, $patch_running]],
|
||||
[cbnz, w4, :goto1],
|
||||
[stp, s0, s1, [x8, 0x6C]],
|
||||
:goto1, [ret]
|
||||
]
|
||||
MASTER_WRITE:
|
||||
# Block updating game speed
|
||||
## REF: 00 85 0d 2d
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x244A5F4
|
||||
instructions: [
|
||||
[bl, _applyCustomSpeed()]
|
||||
]
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x28EB8FC
|
||||
instructions: [
|
||||
[bl, _applyCustomSpeed()]
|
||||
]
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x2B26AA4
|
||||
instructions: [
|
||||
[bl, _applyCustomSpeed()]
|
||||
]
|
||||
ALL_FPS:
|
||||
# Game Speed
|
||||
## REF: Global_TypeInfo
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x82C50C0, 0xB8, 0x6C]
|
||||
value_type: float
|
||||
value: [FPS_TARGET, "60 / FPS_TARGET"]
|
||||
# Just in case, dunno if they are used for anything, but all of them were set to target strictly 30 FPS
|
||||
# UnityEngine.Time::maximumDeltaTime
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x9FCFBF8, 0x100]
|
||||
value_type: float
|
||||
value: [0.066666666, 0.066666666]
|
||||
# UnityEngine.Time::fixedDeltaTime
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x9FCFBF8, 0x48]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
||||
# UnityEngine.Application::targetFrameRate
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x84E1EA8]
|
||||
value_type: uint32
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: compare
|
||||
compare_address: [VARIABLE, patch_running]
|
||||
compare_type: "=="
|
||||
compare_value: 0
|
||||
address: [VARIABLE, patch_running]
|
||||
value: 1
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
# Upin & Ipin Universe 1.0.2
|
||||
# BID: 301E4A1FB0BA1575
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x9302098, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x933D5C0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x831EEE8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,25 @@
|
||||
# Upin & Ipin Universe 1.0.1
|
||||
# BID: A15393F630A9767F
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x986C098, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x98A8790, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x8886110, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,25 @@
|
||||
# Funko Fusion 3.4.1
|
||||
# BID: 4CD22960CFB56AB4
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x7C58A68, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8C34078, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8C61F60, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,19 @@
|
||||
# Unbox: Newbie's Adventure 1.0.3
|
||||
# BID: 83A6B710A3F3F4F9
|
||||
|
||||
ALL_FPS:
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x585F3A8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x4FBBEA0, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,10 @@
|
||||
# World's End Club 1.0.6
|
||||
# BID: F00EFE6846627B4A
|
||||
|
||||
ALL_FPS:
|
||||
# UnityEngine.Time::fixedDeltaTime
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x6AC31C0, 0x48]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
||||
@ -0,0 +1,32 @@
|
||||
# Made in Abyss: Binary Star Falling into Darkness 1.0.3
|
||||
# BID: DFC7E8979528DE44
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x657D2C8, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x6D2E330, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# r.DynamicRes.TargetedGPUHeadRoomPercentage
|
||||
# Because game is using 5.0 while default is 10.0 and with their value reaching target FPS above 30 is hard
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x6D2E348, 0]
|
||||
value_type: float
|
||||
value: [10.0, 10.0]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x6D58E68, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -1,8 +1,6 @@
|
||||
# V-Rally 4 1.2.0
|
||||
# BID: EB8A679B5DDD0060
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# OptimalFrameDuration_ms = (1000/FPS) - (0.07 * (1000/30)
|
||||
-
|
||||
|
||||
@ -0,0 +1,10 @@
|
||||
# Tamagotchi Plaza 1.0.6
|
||||
# BID: E73AB32BD1B16098
|
||||
|
||||
ALL_FPS:
|
||||
# UnityEngine.Rendering.OnDemandRendering_TypeInfo
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x68B81F8, 0xB8, 0]
|
||||
value_type: int32
|
||||
value: -1
|
||||
@ -0,0 +1,10 @@
|
||||
# パックマンワールド2 リ・パック 1.0.3
|
||||
# BID: B70D6561B718C8E0
|
||||
|
||||
ALL_FPS:
|
||||
# UnityEngine.Time::fixedDeltaTime
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x87DE838, 0x58]
|
||||
value_type: uint32
|
||||
value: "2352000 * FPS_TARGET"
|
||||
@ -0,0 +1,19 @@
|
||||
# Little Nightmares III 1.0.4
|
||||
# BID: 911284C45A26DD34
|
||||
|
||||
ALL_FPS:
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7CB0E48, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x74BC210, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,19 @@
|
||||
# Little Nightmares III 1.0.3
|
||||
# BID: F3FFA17B5E56809F
|
||||
|
||||
ALL_FPS:
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7CADE48, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x74B9210, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,27 @@
|
||||
# ウムランギジェネレーション 1.6.6.0
|
||||
# BID: 372AB37327DB2C31
|
||||
|
||||
DECLARATIONS:
|
||||
-
|
||||
type: variable
|
||||
name: fps_lock
|
||||
value_type: float
|
||||
default_value: 0.03333333333
|
||||
evaluate: "1 / FPS_TARGET"
|
||||
|
||||
MASTER_WRITE:
|
||||
# Read FPS Lock from MAIN+0x49FCFF0
|
||||
## REF: 81 1a 40 bd 02 10 2e 1e
|
||||
## REF: FPSTarget.<>d__6::MoveNext()
|
||||
-
|
||||
type: asm_a64
|
||||
main_offset: 0x2DF1E60
|
||||
instructions: [
|
||||
[adrp, x8, $fps_lock],
|
||||
[ldr, s1, [x8, $fps_lock]],
|
||||
[nop]
|
||||
]
|
||||
ALL_FPS:
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,25 @@
|
||||
# Formula Legends 1.0.5
|
||||
# BID: 2735E564A9BD3DA3
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x73BDEE8, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x83A1F68, 0]
|
||||
value_type: float
|
||||
value: [FRAMETIME_TARGET, FRAMETIME_TARGET]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x83DD780, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,25 @@
|
||||
# Formula Legends 1.0.7
|
||||
# BID: 349E9751D50B3B88
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x839AF68, 0]
|
||||
value_type: float
|
||||
value: [FRAMETIME_TARGET, FRAMETIME_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x73B6EE8, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x83D6780, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,25 @@
|
||||
# Formula Legends 1.0.6
|
||||
# BID: 84C1B1AE29550FC8
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x73B5EE8, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8399F68, 0]
|
||||
value_type: float
|
||||
value: [FRAMETIME_TARGET, FRAMETIME_TARGET]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x83D5780, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
@ -0,0 +1,25 @@
|
||||
# Formula Legends 1.0.8
|
||||
# BID: C26EE97D7ECDE83B
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x83C8F68, 0]
|
||||
value_type: float
|
||||
value: [FRAMETIME_TARGET, FRAMETIME_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x73E4EE8, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8404780, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
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