Ultra 2.3|R4+

This commit is contained in:
redraz 2025-03-26 08:45:47 +03:00
parent b546edec8f
commit b144b70918
72 changed files with 1865 additions and 40 deletions
SaltySD/plugins/FPSLocker/patches
010009D018A06000
01000AB01F9C0000
01000B202041A000
010023001969A000
010025C0145D4000
01002C101C1AA000
01003990220BE000
01003CC00D0BE000
010044B01E786000
0100453019AA8000
01004A600EC0A000
010050F01DF9C000
010051C0134F8000
0100544020572000
010054E01D878000
010058F01DF8C000
01005AE0209A8000
01005D2016934000
01006AC01F630000
01006BD018B54000
01006C300E9F0000
01006D0017F7A000
010072E01CE0E000
010073601DF1A000
010073C01AF34000
010078D000F88000
01007BE01FCC2000
010084F017B32000
0100853015E86000
010087E01FCD6000
010097F018538000
01009970122E4000
01009FA01FF6C000
0100B2301F4A8000
0100B6C01CDA0000
0100B7C01D480000
0100B9801F872000
0100CE101B698000
0100DC2020C50000
0100E5900F49A000
0100E66006406000
0100E6B01BD3A000
0100EE00205BA000
0100F6701FED4000
0100FBD013AB6000
atmosphere
contents
010000000000bd00/flags
690000000000000D
package3
config/sys-con
switch/DBI

@ -0,0 +1,27 @@
# SWORD ART ONLINE Fractured Daydream JAP 1.2.2
# BID: 012A8C2C413E79B8
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8F57748, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8F92210, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x8791EC8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

@ -0,0 +1,27 @@
# SWORD ART ONLINE Fractured Daydream JAP 1.2.1
# BID: 26C1E658E9B5B612
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8F41748, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8F7C210, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x877BEC8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

@ -0,0 +1,24 @@
# Chernobylite 1.2
# BID: 657F40EEBD955F31
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x641EAB8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x644C838, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x5C83700, 0]
value_type: int32
value: [0, 0]

@ -0,0 +1,12 @@
# DreadOut Remastered Collection 1.0.2
# BID: 725731C74E4CA6A9
unsafeCheck: false
ALL_FPS:
# REF: DynamicResolution::.cctor
-
type: evaluate_write
address: [MAIN, 0x3E01640, 0, 0xB8, 8]
value_type: double
value: [FPS_TARGET, FRAMETIME_TARGET]

@ -0,0 +1,27 @@
# Session: Skate Sim 1.1.4
# BID: F327FFD8C2E85895
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x7247868, 0]
value_type: float
value: ["FRAMETIME_TARGET", "FRAMETIME_TARGET"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7275438, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x6A7A668, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

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

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

@ -0,0 +1,27 @@
# Expeditions: A Mudrunner Game 1.14.0.0
# BID: 08C88691FFA5407C
# REF: 01 04 0C 5E 00 10 2E 1E
unsafeCheck: true
MASTER_WRITE:
# Redirect DR frametime target to MAIN+0x36AEF00
-
type: bytes
main_offset: 0x1718A64
value_type: uint32
value:
- 0xD000FCAC # adrp x12, #0x36AE000
- 0xBD4F0182 # ldr s2, [x12, #0xf00]
# default value
-
type: bytes
main_offset: 0x36AEF00
value_type: float
value: 33.3333333333
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x36AEF00]
value_type: float
value: FRAMETIME_TARGET

@ -0,0 +1,27 @@
# Expeditions: A Mudrunner Game 1.13.0.0
# BID: ED20E42E41B58D88
# REF: 01 04 0C 5E 00 10 2E 1E
unsafeCheck: true
MASTER_WRITE:
# Redirect DR frametime target to MAIN+0x3628F00
-
type: bytes
main_offset: 0x16AFA80
value_type: uint32
value:
- 0xB000FBCC # adrp x12, #0x3628000
- 0xBD4F0182 # ldr s2, [x12, #0xf00]
# default value
-
type: bytes
main_offset: 0x3628F00
value_type: float
value: 33.3333333333
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x3628F00]
value_type: float
value: FRAMETIME_TARGET

@ -0,0 +1,12 @@
# ABYSS SEEKER――What Do You See Deep in Abyss 1.1.0.012
# BID: C17F9C48EEFAB9DF
unsafeCheck: true
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x7B48F40, 0x48]
value_type: float
value: "1 / FPS_TARGET"

@ -0,0 +1,12 @@
# ABYSS SEEKER――What Do You See Deep in Abyss 1.2.0.020
# BID: FE67FB035271B5E4
unsafeCheck: true
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x7B62100, 0x48]
value_type: float
value: "1 / FPS_TARGET"

@ -0,0 +1,60 @@
# Amnesia Collection 1.3.0
# BID: F6FB99E54347E740
# Double buffer is hardcoded line by line, it's hard to make it triple
unsafeCheck: true
MASTER_WRITE:
# Redirect FPS Lock and Dynamic Resolution target values to MAIN + 0x21036F00
-
type: bytes
main_offset: 0x13281C
value_type: uint32
value:
- 0x90107828 # ADRP X8, 0x21036000
- 0xF9478108 # LDR X8, [X8, 0xF00]
-
type: bytes
main_offset: 0x3E324C
value_type: uint32
value:
- 0xF0106288 # ADRP X8, 0x21036000
- 0xF9478108 # LDR X8, [X8, 0xF00]
# NOP updating Dynamic Resolution target value
-
type: bytes
main_offset: 0x2D94E8
value_type: uint32
value:
- 0xB0106AE9 # ADRP X9, 0x21036000
- 0xB94F0929 # LDR W9, [X9, 0xF08]
-
type: bytes
main_offset: 0x597C5C
value_type: uint32
value:
- 0xF01054E9 # ADRP X9, 0x21036000
- 0xB94F0929 # LDR W9, [X9, 0xF08]
# Default values
-
type: bytes
main_offset: 0x21036F00
value_type: double
value: 0.03333333333333333
-
type: bytes
main_offset: 0x21036F08
value_type: float
value: 33.333333333333
ALL_FPS:
# FPS Lock
-
type: evaluate_write
address: [MAIN, 0x21036F00]
value_type: double
value: "1 / FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0x21036F08]
value_type: float
value: FRAMETIME_TARGET

@ -0,0 +1,21 @@
# Big Helmet Heroes 1.0.3
# BID: 2CF926BBD5D1AB4D
unsafeCheck: true
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7012260, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x5BB0718, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

@ -0,0 +1,374 @@
# Xenoblade Chronicles X: Definitive Edition 1.0.1
# BID: 3F2425864CF22684
unsafeCheck: true
MASTER_WRITE:
# Dynamic speed mod for stuff like UI, lipsync, grass and rain
## Redirect nvnQueuePresentTexture call to code cave at MAIN+0x1744D90
-
type: bytes
main_offset: 0x96ECD8
value_type: uint32
value: 0x1437582E
## Code Cave (save floats for speed factor to MAIN+0x47CD268, frametime as FPS in MAIN+0x47CD26C, frametime in s in MAIN+0x47CD270)
-
type: bytes
main_offset: 0x1744D90
value_type: uint32
value:
- 0xD63F0100
- 0x97FFF52B
- 0xB0018448
- 0xF9413107
- 0xF9013100
- 0xB5000047
- 0x17C8A7CD
- 0xCB070000
- 0x97FFF528
- 0xB0018448
- 0xB9430101
- 0xEB00003F
- 0x5400004B
- 0xAA0103E0
- 0xD2881541
- 0xF2A07F21
- 0xEB00003F
- 0x5400004C
- 0xAA0103E0
- 0x9E630000
- 0xD00005A0
- 0xFD469C01
- 0x1E611800
- 0xD2807D00
- 0x9E630001
- 0x1E601821
- 0xB0018440
- 0x1E624021
- 0xBD026C01
- 0x1E27D002
- 0x1E211842
- 0xBD026802
- 0xD2807D01
- 0x9E630021
- 0x1E611801
- 0x1E624021
- 0xBD027001
- 0x17C8A7AE
## Default values for code cave
-
type: bytes
main_offset: 0x47CD268
value_type: float
value: [1.0, 30.0, 0.033333333333]
-
type: bytes
main_offset: 0x47CD300
value_type: uint32
value: 33333333
## Function 1 to speed factor // Usage unknown
-
type: bytes
main_offset: 0x2864C8
value_type: uint32
value:
- 0xF0022A35
- 0xF9470D00
- 0xBD426AAA
## Function 2 to speed factor // Weather effects (rain, fog)
-
type: bytes
main_offset: 0x2892AC
value_type: uint32
value:
- 0x90022A20
- 0xF000D828
- 0xBD426801
## Function 3 to speed factor // Usage unknown
-
type: bytes
main_offset: 0xA26D00
value_type: uint32
value:
- 0xF001ED20
- 0xBD426808
## Function 4 to FPS // UI Speed
-
type: bytes
main_offset: 0xA2EE60
value_type: uint32
value:
- 0xF001ECE0
- 0x1E270100
- 0xBD426C00
## Function 5 to FPS // Usage unknown
-
type: bytes
main_offset: 0x266E3C
value_type: uint32
value:
- 0xF0022B20
- 0x1E270100
- 0x7940D268
- 0xBD426C05
## Function 6 to FPS
-
type: bytes
main_offset: 0x26D6D0
value_type: uint32
value:
- 0x90022B00
- 0xBD426C00
- 0x1E390000
- 0x528000C9
- 0x1AC90808
## Function 7 to Frametime in s // Gameplay + cutscene speed
-
type: bytes
main_offset: 0x1E24E4
value_type: uint32
value: 0xF0022F49
-
type: bytes
main_offset: 0x1E24F8
value_type: uint32
value: 0xBD427120
# Adjust various elements related to fighting
-
type: bytes
main_offset: 0x1E8B08
value_type: uint32
value: 0x145570EB
## Code cave
-
type: bytes
main_offset: 0x1744EB4
value_type: uint32
value:
- 0xB0018449
- 0xBD426920
- 0x17AA8F14
## Fix gun speed
-
type: bytes
main_offset: 0x30F62C
value_type: uint32
value: 0xD503201F
# Redirect DR Target to MAIN+0x47CDF00
-
type: bytes
main_offset: 0x13B8DF4
value_type: uint32
value:
- 0xB001A0A8
- 0xBD4F0100
## Default value
-
type: bytes
main_offset: 0x47CDF00
value_type: float
value: 0.01666666666
# Adjust camera speed rotation dynamically
## Code cave
-
type: bytes
main_offset: 0x1744E48
value_type: uint32
value:
- 0xB0018448
- 0xBD426908
- 0x1E200900
- 0x1E202008
- 0x540000AA
- 0x1E214000
- 0x1E21C000
- 0x1E214000
- 0xD65F03C0
- 0x1E21C000
- 0xD65F03C0
## Connect function 1
-
type: bytes
main_offset: 0x1E1360
value_type: uint32
value: 0x94558EBA
## Connect function 2
-
type: bytes
main_offset: 0x1E1370
value_type: uint32
value: 0xAD7D03A1
-
type: bytes
main_offset: 0x1E137C
value_type: uint32
value: 0x94558EB3
# Force 1s sleep to synchronize audio if cutscene detected
## Use function responsible for writing type of cutscene to write its ID if it's 8 or 16 (or 0 for any other) to MAIN+0x47CDFFF
-
type: bytes
main_offset: 0x2CFEB4
value_type: uint32
value: 0x1451D3F7
### Code cave
-
type: bytes
main_offset: 0x1744E90
value_type: uint32
value:
- 0xB9002279
- 0x121D0720
- 0xB0018448
- 0x340000A0
- 0x393FFD00
- 0xD2994000
- 0xF2A77340
- 0x97FFF3D9
- 0x17AE2C02
## "startEvent" to write uint8 1 to MAIN+0x47CDFFF
-
type: bytes
main_offset: 0x3ECFD8
value_type: uint32
value: 0x144D5FBF
### Code cave
-
type: bytes
main_offset: 0x1744ED4
value_type: uint32
value:
- 0x910003FD
- 0xB0018448
- 0x52800020
- 0x393FFD00
- 0x17B2A03E
## "endEvent" to write uint8 0 to MAIN+0x47CDFFF
-
type: bytes
main_offset: 0x3ED178
value_type: uint32
value: 0x144D5F42
### Code cave
-
type: bytes
main_offset: 0x1744E80
value_type: uint32
value:
- 0x910003FD
- 0xB0018448
- 0x393FFD1F
- 0x17B2A0BC
# Adjust Field Action gauge bar speed
-
type: bytes
main_offset: 0xE5B00
value_type: uint32
value:
- 0x90023740
- 0xD000E3E9
- 0xBD426808
## Fix for FN Site
-
type: bytes
main_offset: 0xE5558
value_type: uint32
value: 0x14597E34
### Code cave
-
type: bytes
main_offset: 0x1744E28
value_type: uint32
value:
- 0xBD40D260
- 0xB0018440
- 0xBD426801
- 0x1E210800
- 0x17A681C9
# Fix long jump when not running
-
type: bytes
main_offset: 0x23EAD0
value_type: uint32
value: 0x145418DB
## Code cave
-
type: bytes
main_offset: 0x1744E3C
value_type: uint32
value:
- 0x1E27D00B
- 0x1E2B296B
- 0x17ABE724
# Adjust QTE Speed
## Code cave
-
type: bytes
main_offset: 0x1744E74
value_type: uint32
value:
- 0xB0018454
- 0xBD426A81
- 0x17BA027E
## Connect function
-
type: bytes
main_offset: 0x5C5870
value_type: uint32
value: 0x1445FD81
# Adjust Overdrive counter, Follow Ball speed
## Code cave
-
type: bytes
main_offset: 0x1744EC0
value_type: uint32
value:
- 0xB0018440
- 0xBD427000
- 0xD65F03C0
## Connect function
-
type: bytes
main_offset: 0x67354
value_type: uint32
value: 0x945B76DB
ALL_FPS:
# FPS Target
-
type: evaluate_write
address: [MAIN, 0x47CD300]
value_type: uint32
value: "FRAMETIME_TARGET * 1000000"
# FPS Lock
# ref: 00 01 00 b9 2a 01 00 b9 c0 03 5f d6
-
type: write
address: [MAIN, 0x1DA33A0]
value_type: int32
value: [1, 1]
# DR Target
-
type: evaluate_write
address: [MAIN, 0x47CDF00]
value_type: float
value: "1 / FPS_TARGET"
# Lock game to 30 FPS when complex/prerendered cutscene is played
## Adjusts DR target
-
type: compare
compare_address: [MAIN, 0x47CDFFF]
compare_value_type: uint8
compare_type: "!="
compare_value: 0
address: [MAIN, 0x47CDF00]
value_type: float
value: 0.03333333333
## Force OS to run at 60 Hz with interval 2
-
type: compare
compare_address: [MAIN, 0x47CDFFF]
compare_value_type: uint8
compare_type: "!="
compare_value: 0
address: [MAIN]
value_type: refresh_rate
value: 30

@ -1,27 +0,0 @@
# Immortals Fenyx Rising 1.3.4
# BID: 70F3F6751D73C644
unsafeCheck: true
MASTER_WRITE:
# Game switches resolution to 13/15 of normal resolution when moving camera with right stick and game cannot handle target FPS
# Redirect reading DR time target to MAIN + 0xA7E4F00
-
type: bytes
main_offset: 0x15A9F10
value_type: uint32
value:
- 0xF00491C8
- 0xBD4F0101
# Default value
-
type: bytes
main_offset: 0xA7E4F00
value_type: float
value: 33.3333333333
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0xA7E4F00]
value_type: float
value: FRAMETIME_TARGET

@ -0,0 +1,38 @@
# REYNATIS (US/EU) 1.0.8
# BID: 11D6D6158B566A74
unsafeCheck: true
MASTER_WRITE:
# Redirect reading DR timing in DynamicResolution::LowerResSW() to MAIN + 0x7C0DF00
# REF: 01 f0 67 1e
-
type: bytes
main_offset: 0x391CEEC
value_type: uint32
value: # 941702B0 818247FD 1020611E 6922482D CD020054 6A6240BD
- 0xB0021794 # adrp x20, #0x7c0d000
- 0xFD478281 # ldr d1, [x20, #0xf00]
- 0x1E612010 # fcmpe d0, d1
- 0x2D482269 # ldp s9, s8, [x19, #0x40]
- 0x540002CD # b.le #0x391cf54
- 0xBD40626A # ldr s10, [x19, #0x60]
-
type: bytes
main_offset: 0x391CF54
value_type: uint32
value:
- 0xFD478681 # ldr d1, [x20, #0xf08]
# Default handheld value
-
type: bytes
main_offset: 0x7C0DF00
value_type: double
value: [31, 29]
ALL_FPS:
# Dynamic Resolution Timing
-
type: evaluate_write
address: [MAIN, 0x7C0DF00]
value_type: double
value: ["0.93 * FRAMETIME_TARGET", "(0.93 * FRAMETIME_TARGET) - 2"]

@ -0,0 +1,38 @@
# REYNATIS (US/EU) 1.0.9
# BID: C59C89CCDF382602
unsafeCheck: true
MASTER_WRITE:
# Redirect reading DR timing in DynamicResolution::LowerResSW() to MAIN + 0x7C0DF00
# REF: 01 f0 67 1e
-
type: bytes
main_offset: 0x391CEEC
value_type: uint32
value: # 941702B0 818247FD 1020611E 6922482D CD020054 6A6240BD
- 0xB0021794 # adrp x20, #0x7c0d000
- 0xFD478281 # ldr d1, [x20, #0xf00]
- 0x1E612010 # fcmpe d0, d1
- 0x2D482269 # ldp s9, s8, [x19, #0x40]
- 0x540002CD # b.le #0x391cf54
- 0xBD40626A # ldr s10, [x19, #0x60]
-
type: bytes
main_offset: 0x391CF54
value_type: uint32
value:
- 0xFD478681 # ldr d1, [x20, #0xf08]
# Default handheld value
-
type: bytes
main_offset: 0x7C0DF00
value_type: double
value: [31, 29]
ALL_FPS:
# Dynamic Resolution Timing
-
type: evaluate_write
address: [MAIN, 0x7C0DF00]
value_type: double
value: ["0.93 * FRAMETIME_TARGET", "(0.93 * FRAMETIME_TARGET) - 2"]

@ -1,7 +1,7 @@
# DRAGON BALL Z: KARAKOT + A NEW POWER AWAKENS SET 1.50
# BID: 20503FA77FA416B7
unsafeCheck: true
unsafeCheck: false
ALL_FPS:
# Disable bUseFixedFrameRate in cutscenes to unlock framerate

@ -1,7 +1,7 @@
# DRAGON BALL Z: KARAKOT + A NEW POWER AWAKENS SET 1.51
# BID: 389E38618E93A5E0
unsafeCheck: true
unsafeCheck: false
ALL_FPS:
# Disable bUseFixedFrameRate in cutscenes to unlock framerate
@ -32,4 +32,4 @@ ALL_FPS:
type: write
address: [MAIN, 0x88C2C08, 0]
value_type: int32
value: [0, 0]
value: [0, 0]

@ -0,0 +1,35 @@
# DRAGON BALL Z: KARAKOT + A NEW POWER AWAKENS SET 1.52
# BID: 72F6F8B54276185C
unsafeCheck: true
ALL_FPS:
# Disable bUseFixedFrameRate in cutscenes to unlock framerate
-
type: write
address: [MAIN, 0x945A538, 0x810]
value_type: uint32
# Default is 0x47 in cutscenes, 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
-
type: evaluate_write
address: [MAIN, 0x9425478, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x945ADE8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x88C6FD8, 0]
value_type: int32
value: [0, 0]

@ -0,0 +1,13 @@
# Atelier Yumia: The Alchemist of Memories & the Envisioned Land 1.0.1
# BID: A947DDE7826A3562
unsafeCheck: false
ALL_FPS:
# Disable FPS Lock
# REF: 88 46 40 F9 03 11 40 F9, first ADRP+LDR above it
-
type: write
address: [MAIN, 0x2E8AB00, 0xE0, 0x284]
value_type: uint8
value: 0

@ -0,0 +1,12 @@
# EA SPORTS FC 25 1.78.24C5
# BID: 641E15F899C4A057
unsafeCheck: true
ALL_FPS:
# Internal FPS Lock
-
type: evaluate_write
address: [MAIN, 0xCE66A68, 8]
value_type: double
value: FPS_TARGET

@ -0,0 +1,12 @@
# EA SPORTS FC 25 1.78.9aa6
# BID: 7E587D3ADCFD66BC
unsafeCheck: true
ALL_FPS:
# Internal FPS Lock
-
type: evaluate_write
address: [MAIN, 0xCE6FA68, 8]
value_type: double
value: FPS_TARGET

@ -0,0 +1,12 @@
# EA SPORTS FC 25 1.77.4815
# BID: B8264CDBC1CBFFCF
unsafeCheck: true
ALL_FPS:
# Internal FPS Lock
-
type: evaluate_write
address: [MAIN, 0xCE3CA68, 8]
value_type: double
value: FPS_TARGET

@ -0,0 +1,12 @@
# EA SPORTS FC 25 1.76.fc6a
# BID: C953D6F477604662
unsafeCheck: true
ALL_FPS:
# Internal FPS Lock
-
type: evaluate_write
address: [MAIN, 0xCE3BA68, 8]
value_type: double
value: FPS_TARGET

@ -0,0 +1,27 @@
# Funko Fusion 2.6.2
# BID: BDB53001D5CAD0AE
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x752BA68, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x8507078, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8534F60, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

@ -0,0 +1,75 @@
# WARRIORS: Abyss 1.1.0
# BID: 50C9028B61A0BB7F
unsafeCheck: true
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: bytes
main_offset: 0x6400D0
value_type: uint32
value:
- 0x90004441 # ADRP X1, 0xEC8000
- 0xBD44C021 # LDR S1, [X1, 0x4C0]
# Redirect DR Targets to MAIN+0x1359F00
-
type: bytes
main_offset: 0x640174
value_type: uint32
value:
- 0xB00068C9 # ADRP X9, 0x1359000
- 0xBD4F0121 # LDR S1, [X9, 0xF00]
-
type: bytes
main_offset: 0x640184
value_type: uint32
value:
- 0xB00068C9 # ADRP X9, 0x1359000
- 0xBD4F0521 # LDR S1, [X9, 0xF04]
# Default values
-
type: bytes
main_offset: 0x1359F00
value_type: float
value: [50, 40]
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, 0xEC84CC]
value_type: uint32
value: "120 / FPS_LOCK_TARGET"
# Prevent from setting it as 0, otherwise game crashes
-
type: evaluate_compare
compare_address: [MAIN, 0xEC84CC]
compare_type: "=="
compare_value_type: uint32
compare_value: 0
address: [MAIN, 0xEC84CC]
value_type: uint32
value: 1
# Others
-
type: evaluate_write
address: [MAIN, 0xEC84C0]
value_type: float
value: "FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0xEC84C4]
value_type: uint32
value: "FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0xEC84C8]
value_type: float
value: "FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0x1359F00]
value_type: float
value: ["1.5 * FRAMETIME_TARGET", "1.2 * FRAMETIME_TARGET"]

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

@ -0,0 +1,24 @@
# Sword of the Necromancer: Resurrection 1.0.4
# BID: 7C37B073B19F3CCF
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x7577E00, 0]
value_type: float
value: ["0.9 * FRAMETIME_TARGET", "0.9 * FRAMETIME_TARGET"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x75AC298, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x6DD3CB8, 0]
value_type: int32
value: [0, 0]

@ -0,0 +1,24 @@
# Sword of the Necromancer: Resurrection 1.0.3
# BID: B70551B5A2D0F15F
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x7573E00, 0]
value_type: float
value: ["0.9 * FRAMETIME_TARGET", "0.9 * FRAMETIME_TARGET"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x75A8298, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x6DCFCB8, 0]
value_type: int32
value: [0, 0]

@ -0,0 +1,27 @@
# The Plucky Squire 1.0.7
# BID: AFDEB128252898AC
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x6C04668, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x6C32348, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x6434CE8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

@ -1,4 +1,4 @@
# DRAGON QUEST XI S: Echoes of an Elusive Age - Definitive Edition 1.0.3
# DRAGON QUEST XI S: Echoes of an Elusive Age - Definitive Edition 1.0.3/1.0.4
# BID: 1719AABFA5EAE42B
unsafeCheck: true
@ -34,6 +34,12 @@ ALL_FPS:
address: [MAIN, 0x8501C48, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7879500, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

@ -0,0 +1,21 @@
# Mario & Luigi: Brothership 1.0.1
# BID: BF0607AC795B593A
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x651F708, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x6D1A498, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

@ -0,0 +1,27 @@
# F1 Manager 2024 1.11
# BID: 85F60F87D19B5270
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x7FE9A28, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8023AA0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7826AA8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

@ -0,0 +1,48 @@
# Amber Isle 1.0.2
# BID: D36459588F85315D
unsafeCheck: true
MASTER_WRITE:
# Redirect all hardcoded doubles in DynamicResolutionHandler::Update to MAIN+0x9093F00
-
type: bytes
main_offset: 0x21FE24C
value_type: uint32
value:
- 0xB00374A8 # adrp x8, #0x9093000
- 0xFD478100 # ldr d0, [x8, #0xf00]
-
type: bytes
main_offset: 0x21FE1F0
value_type: uint32
value:
- 0xB00374A8 # adrp x8, #0x9093000
- 0xFD478101 # ldr d1, [x8, #0xf00]
-
type: bytes
main_offset: 0x21FE360
value_type: uint32
value:
- 0xB00374A8 # adrp x8, #0x9093000
- 0xFD478100 # ldr d0, [x8, #0xf00]
- 0x1E614000 # fneg d0, d0
-
type: bytes
main_offset: 0x21FE5E4
value_type: uint32
value:
- 0xB00374A8 # adrp x8, #0x9093000
- 0xFD478100 # ldr d0, [x8, #0xf00]
# default value
-
type: bytes
main_offset: 0x9093F00
value_type: double
value: 25.333333333333336
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x9093F00]
value_type: double
value: "FRAMETIME_TARGET * 0.76"

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

@ -0,0 +1,47 @@
# DRAGON BALL XENOVERSE 2 FOR NINTENDO SWITCH 1.23.03
# BID: 8263E738648A23E3
# 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
unsafeCheck: false
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, 0x4AE9D78, 0x698]
value_type: float
value: 0.0
# Unknown
-
type: write
address: [MAIN, 0x4AE9D78, 0x6A4]
value_type: float
value: 0.0
# Game Battle Speed Factor
-
type: evaluate_write
address: [MAIN, 0x4AE9D78, 0x6B0]
value_type: uint32
value: VSYNC_TARGET
# Cutscenes Speed Factor
-
type: evaluate_write
address: [MAIN, 0x4AE9D78, 0x6B4]
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, 0x24151D0]
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, 0x23F53C0, 0x1844]
value_type: float
value: "FPS_TARGET"

@ -0,0 +1,24 @@
# Achilles Legends Untold 1.0.1
# BID: BDDD7E8FA07C8C75
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x6967B08, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x6995508, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x6199738, 0]
value_type: int32
value: [0, 0]

@ -10,6 +10,12 @@ ALL_FPS:
address: [MAIN, 0xB4E7838, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0xAD15960, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

@ -0,0 +1,28 @@
# No Man's Sky 5.5.2
# BID: 63C5A645F3E5985A
unsafeCheck: true
MASTER_WRITE:
# Redirect DR frametime target to MAIN+0x4B90FF0
# REF: 08 4E A8 52 00 01 27 1E 48 8F A8 52, ADRP + ADD + LDR above that
-
type: bytes
main_offset: 0x2037260
value_type: uint32
value:
- 0xB0015AC9 # adrp x9, #0x4b90000
- 0xBD4FF120 # ldr s0, [x9, #0xff0]
- 0xD503201F # NOP
# default value
-
type: bytes
main_offset: 0x4B90FF0
value_type: float
value: 30
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x4B90FF0]
value_type: float
value: FPS_TARGET

@ -0,0 +1,28 @@
# No Man's Sky 5.5.0
# BID: 909C5FD598A092B1
unsafeCheck: true
MASTER_WRITE:
# Redirect DR frametime target to MAIN+0x4B8AFF0
# REF: 08 4E A8 52 00 01 27 1E 48 8F A8 52, ADRP + ADD + LDR above that
-
type: bytes
main_offset: 0x2032F20
value_type: uint32
value:
- 0x90015AC9 # adrp x9, #0x4b8a000
- 0xBD4FF120 # ldr s0, [x9, #0xff0]
- 0xD503201F # NOP
# default value
-
type: bytes
main_offset: 0x4B8AFF0
value_type: float
value: 30
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x4B8AFF0]
value_type: float
value: FPS_TARGET

@ -0,0 +1,28 @@
# No Man's Sky 5.5.5
# BID: BC6CA2DEA3306522
unsafeCheck: true
MASTER_WRITE:
# Redirect DR frametime target to MAIN+0x4B92FF0
# REF: 08 4E A8 52 00 01 27 1E 48 8F A8 52, ADRP + ADD + LDR above that
-
type: bytes
main_offset: 0x20391B0
value_type: uint32
value:
- 0xB0015AC9 # adrp x9, #0x4b92000
- 0xBD4FF120 # ldr s0, [x9, #0xff0]
- 0xD503201F # NOP
# default value
-
type: bytes
main_offset: 0x4B92FF0
value_type: float
value: 30
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x4B92FF0]
value_type: float
value: FPS_TARGET

@ -0,0 +1,28 @@
# No Man's Sky 5.5.8
# BID: FB1995474546F7C0
unsafeCheck: true
MASTER_WRITE:
# Redirect DR frametime target to MAIN+0x4B90FF0
# REF: 08 4E A8 52 00 01 27 1E 48 8F A8 52, ADRP + ADD + LDR above that
-
type: bytes
main_offset: 0x201C7F8
value_type: uint32
value:
- 0x90015BA9 # adrp x9, #0x4b90000
- 0xBD4FF120 # ldr s0, [x9, #0xff0]
- 0xD503201F # NOP
# default value
-
type: bytes
main_offset: 0x4B90FF0
value_type: float
value: 30
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x4B90FF0]
value_type: float
value: FPS_TARGET

@ -0,0 +1,12 @@
# Cuisineer 2.0.27
# BID: ACD959FBAECADE00
unsafeCheck: true
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x525D5A0, 0x48]
value_type: float
value: "1 / FPS_TARGET"

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

@ -0,0 +1,27 @@
# Borderlands 3 1.0.3
# BID: AFDEB128252898AC
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0xDD56640, 0]
value_type: float
value: ["0.969 * FRAMETIME_TARGET", "0.969 * FRAMETIME_TARGET"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xDD857C0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0xD0C52B8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

@ -0,0 +1,27 @@
# Nikoderiko: The Magical World 1.0.2
# BID: 6CFA2609A2D00FA5
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x64D9928, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x65075E8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x5D08BF8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

@ -0,0 +1,21 @@
# Life is Strange: Double Exposure 1.0.3
# BID: BBEA8745A7893750
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6948E90, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x79562D8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

@ -0,0 +1,21 @@
# Garden Witch Life 1.0.5
# BID: 13824B290C931FE5
unsafeCheck: true
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x863C140, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7644978, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

@ -0,0 +1,27 @@
# Boti: Byteland Overclocked 1.0.1
# BID: E8EA74BE6221F2E4
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x72C9718, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x8286DC8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x82BF6D0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

@ -0,0 +1,27 @@
# Boti: Byteland Overclocked 1.0.2
# BID: 567A8410AE613885
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x72D4718, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x8291E38, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x82CB9E0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

@ -0,0 +1,43 @@
# FAIRY TAIL 2 1.4.1
# BID: A588F7BB864AAD5F
unsafeCheck: false
MASTER_WRITE:
# Redirect Dynamic Resolution target to MAIN+0x2C53F00
# REF: 6AC88252
-
type: bytes
main_offset: 0x138238C
value_type: uint32
value:
- 0xB000C68A # ADRP X10, 0x2c53000
- 0xB94F014A # LDR W10, [X10, 0xF00]
-
type: bytes
main_offset: 0x13823A8
value_type: uint32
value:
- 0xB000C68A # ADRP X10, 0x2c53000
- 0xB94F054A # LDR W10, [X10, 0xF04]
# Default values
-
type: bytes
main_offset: 0x2C53F00
value_type: float
value: [0.043478, 0.037037]
ALL_FPS:
# FPS Lock
# REF: 1F 00 00 71 C8 03 80 52, first ADRP+ADD above it
-
type: evaluate_write
address: [MAIN, 0x2C0B558, 0x170, 0x18C]
value_type: int32
value: FPS_LOCK_TARGET
# Dynamic Resolution Target
# Game proritizes resolution over framerate, I changed it to prefer framerate
-
type: evaluate_write
address: [MAIN, 0x2C53F00]
value_type: float
value: ["1 / FPS_TARGET", "1 / (FPS_TARGET + 5)"]

@ -0,0 +1,27 @@
# Monster Jam Showdown 1.0.7
# BID: 0CE2AE41BCCADC72
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0xAC39688, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xAC74030, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x9C78970, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

@ -0,0 +1,27 @@
# Monster Jam Showdown 1.0.8
# BID: 1CE1386EAF0C5EF5
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0xAC3B688, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xAC76030, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x9C7A970, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

@ -0,0 +1,12 @@
# Call of Sentinels 1.0.1.7
# BID: 4A64A3713EEA60CA
unsafeCheck: true
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x6CA3940, 0x48]
value_type: float
value: "1 / FPS_TARGET"

@ -1,4 +1,4 @@
# Othercide 1.3.0.5
# Othercide 1.3.0.5/1.3.1.0
# BID: A8BA2A8F93AAE647
unsafeCheck: true

@ -0,0 +1,15 @@
# OCTOPATH TRAVELER 1.0.4 JPN
# BID: AA4277E6A92FEBE6
unsafeCheck: true
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x50B5698, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

@ -0,0 +1,14 @@
# Card-en-Ciel 1.3.1
# BID: 6A2E388EB364D4ED
# Buffers are hardcoded line by line and put into fixed size heap allocation, so getting triple buffer requires effort
unsafeCheck: true
ALL_FPS:
# Internal FPS Lock
# REF: look at nn::os::SleepThread() called in nnMain()
-
type: evaluate_write
address: [MAIN, 0x2165248, 0x5C]
value_type: float
value: 1 / FPS_LOCK_TARGET

@ -0,0 +1,14 @@
# Card-en-Ciel 1.4.1
# BID: CB3C7EF8E279A22D
# Buffers are hardcoded line by line and put into fixed size heap allocation, so getting triple buffer requires effort
unsafeCheck: true
ALL_FPS:
# Internal FPS Lock
# REF: look at nn::os::SleepThread() called in nnMain()
-
type: evaluate_write
address: [MAIN, 0x219C248, 0x5C]
value_type: float
value: 1 / FPS_LOCK_TARGET

@ -0,0 +1,12 @@
# HEAVEN SEEKER ――The Savior of This Cruel World 1.0.5.130
# BID: 21B3E4EA75F16551
unsafeCheck: true
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime (default is 0.03268)
-
type: evaluate_write
address: [MAIN, 0x97D4478, 0x48]
value_type: float
value: "(1 / FPS_TARGET) / 1.02"

@ -0,0 +1,12 @@
# HEAVEN SEEKER ――The Savior of This Cruel World 1.0.5.134
# BID: AA3EDDE660D630AD
unsafeCheck: true
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime (default is 0.03268)
-
type: evaluate_write
address: [MAIN, 0x9826738, 0x48]
value_type: float
value: "(1 / FPS_TARGET) / 1.02"

@ -0,0 +1,12 @@
# The Legend of Heroes: Trails through Daybreak II 1.0.1
# BID: 7CE83658C7B53BB6
unsafeCheck: true
ALL_FPS:
# 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, 0x6E2998, 0x34]
value_type: uint32
value: FPS_TARGET

@ -0,0 +1,27 @@
# SnowRunner 1.0.36
# BID: 038858A1EC679156
# Just search for 0x42055555
unsafeCheck: true
MASTER_WRITE:
# Redirect DR frametime target to MAIN+0x3040F00
-
type: bytes
main_offset: 0x18F8174
value_type: uint32
value:
- 0x9000BA4A # adrp x10, #0x3040000
- 0xBD4F0142 # ldr s2, [x10, #0xf00]
# default value
-
type: bytes
main_offset: 0x3040F00
value_type: float
value: 33.3333333333
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x3040F00]
value_type: float
value: FRAMETIME_TARGET

@ -0,0 +1,27 @@
# SnowRunner 1.0.37
# BID: CD9E844E29E8CA80
# Just search for 0x42055555
unsafeCheck: true
MASTER_WRITE:
# Redirect DR frametime target to MAIN+0x3090F00
-
type: bytes
main_offset: 0x192A254
value_type: uint32
value:
- 0xD000BB2A # adrp x10, #0x3090000
- 0xBD4F0142 # ldr s2, [x10, #0xf00]
# default value
-
type: bytes
main_offset: 0x3090F00
value_type: float
value: 33.3333333333
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x3090F00]
value_type: float
value: FRAMETIME_TARGET

Binary file not shown.

@ -41,7 +41,7 @@ auto_add_controller=1
; Default configuration is used as base of configuration for all controller (Do not change it)
; If you want to change the default configuration, it's better to change the configuration of the controller you want to use
;controller_type might be one of these ones: prowithbattery, tarragon, snes, pokeballplus, gamecube, pro, 3rdpartypro, n64, sega, nes, famicom
;controller_type might be one of these ones: prowithbattery, tarragon, snes, pokeballplus, gamecube (Not supported since 19.0.1), pro, 3rdpartypro, n64, sega, nes, famicom
[default]
driver=
@ -561,12 +561,39 @@ r=6
minus=7
plus=8
[0d22-0c31] ; MSI GC30 V2 USB cable
b=2
a=3
x=4
y=1
l=5
r=6
zl=7
zr=8
minus=9
plus=10
lstick_click=11
rstick_click=12
[2dc8-3105] ;8BitDo Wireless Bluetooth USB Adapter 2 (Dinput mode)
B=1
A=2
Y=4
X=5
L=7
R=8
ZL=9
ZR=10
minus=11
plus=12
home=13
; ***************************************
; N64 / GC adapter
; ***************************************
[0601-0101] ;GC controller adapter HS-WU025 (pc mode)
controller_type=gamecube
;controller_type=gamecube ;Not supported since 19.0.1
b=3
a=2
x=1
@ -579,7 +606,7 @@ dpad_up=13
dpad_right=14
[0079-1846] ;GC controller adapter BX-W201C (pc mode)
controller_type=gamecube
;controller_type=gamecube ;Not supported since 19.0.1
b=3
a=2
x=1
@ -954,6 +981,9 @@ profile=xbox360w
; XBOX360 controllers
; ***************************************
[0d22-0c33] ; MSI GC30 V2 2.4G
profile=xbox360
[0079-18d4] ;GPD Win 2 X-Box Controller
profile=xbox360

Binary file not shown.

@ -54,12 +54,14 @@ ValidateSSL=false
DBIUpdateURL=https://github.com/Ultra-NX/Ultra-Resources/releases/download/Homebrews/DBI.RU.zip
; Dump generated forwarders to configured dump location
DumpForwarders=false
; Do not show folder.jpg in file browser
HideFolderJpg=true
[Filtering]
; Apply filebrowser filter to directories
FilterFolders=true
; Inherit filter in subfolders
InheritFilter=true
InheritFilter=false
; Visibility of main menu items
[MainMenu]
@ -136,7 +138,7 @@ SingleURB=false
; MTP transmission buffer size in KB
BufferSize=512
; MTP transmission timeout in ms
NewBufferTimeout=2500
NewBufferTimeout=2000
; Send Object_Removed event for files copied to Install storages
AutoremoveInstalled=true
@ -156,13 +158,15 @@ MaxPassivePort=40100
CDIR=false
; Force UTF8 usage
ForceUtf8=true
; Use WaitAll option in recv. Can improve speed, incompatible with some clients.
UseWaitAll=true
;HTTP options
[HTTP]
; Use parallel downloading
UseParallelDownloading=true
; Access port
Port=1234
; Data read timeout (seconds)
Timeout=3
; Access point options
[Access point]
@ -198,7 +202,7 @@ Orientation=0
; Network install sources
[Network sources]
; <display name>=<type>|<URL>
notUltraNX=ApacheHTTP|https://tinfoil.ultranx.ru/dbi/
notUltraNX=ApacheHTTP|https://dbi.ultranx.ru/
;NSP Indexer=URLList|http://192.168.1.47/nspindexer/index.php?DBI
;Home server=ApacheHTTP|http://192.168.1.47/Nintendo/Switch/
;WebDAV test=WebDAV|http://user:password@192.168.1.47/webdav/

4
switch/DBI/dbi.locations Normal file

@ -0,0 +1,4 @@
[Location_0]
Name=notUltraNX
Type=ApacheHTTP
URL=https://dbi.ultranx.ru/