diff --git a/SaltySD/plugins/FPSLocker/patches/010009D018A06000/012A8C2C413E79B8.yaml b/SaltySD/plugins/FPSLocker/patches/010009D018A06000/012A8C2C413E79B8.yaml new file mode 100644 index 0000000..739359b --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010009D018A06000/012A8C2C413E79B8.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010009D018A06000/26C1E658E9B5B612.yaml b/SaltySD/plugins/FPSLocker/patches/010009D018A06000/26C1E658E9B5B612.yaml new file mode 100644 index 0000000..5cb29b7 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010009D018A06000/26C1E658E9B5B612.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01000AB01F9C0000/657F40EEBD955F31.yaml b/SaltySD/plugins/FPSLocker/patches/01000AB01F9C0000/657F40EEBD955F31.yaml new file mode 100644 index 0000000..a7a91f0 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01000AB01F9C0000/657F40EEBD955F31.yaml @@ -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] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01000B202041A000/725731C74E4CA6A9.yaml b/SaltySD/plugins/FPSLocker/patches/01000B202041A000/725731C74E4CA6A9.yaml new file mode 100644 index 0000000..41df9a0 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01000B202041A000/725731C74E4CA6A9.yaml @@ -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] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010023001969A000/F327FFD8C2E85895.yaml b/SaltySD/plugins/FPSLocker/patches/010023001969A000/F327FFD8C2E85895.yaml new file mode 100644 index 0000000..a77faf3 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010023001969A000/F327FFD8C2E85895.yaml @@ -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 diff --git a/SaltySD/plugins/FPSLocker/patches/010025C0145D4000/0FF5CF27929E07F9.yaml b/SaltySD/plugins/FPSLocker/patches/010025C0145D4000/0FF5CF27929E07F9.yaml new file mode 100644 index 0000000..21db01e --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010025C0145D4000/0FF5CF27929E07F9.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010025C0145D4000/E82F8A34CCC706E7.yaml b/SaltySD/plugins/FPSLocker/patches/010025C0145D4000/E82F8A34CCC706E7.yaml new file mode 100644 index 0000000..71ca8fb --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010025C0145D4000/E82F8A34CCC706E7.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01002C101C1AA000/08C88691FFA5407C.yaml b/SaltySD/plugins/FPSLocker/patches/01002C101C1AA000/08C88691FFA5407C.yaml new file mode 100644 index 0000000..0efa424 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01002C101C1AA000/08C88691FFA5407C.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01002C101C1AA000/ED20E42E41B58D88.yaml b/SaltySD/plugins/FPSLocker/patches/01002C101C1AA000/ED20E42E41B58D88.yaml new file mode 100644 index 0000000..664d6a5 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01002C101C1AA000/ED20E42E41B58D88.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01003990220BE000/C17F9C48EEFAB9DF.yaml b/SaltySD/plugins/FPSLocker/patches/01003990220BE000/C17F9C48EEFAB9DF.yaml new file mode 100644 index 0000000..913c61d --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01003990220BE000/C17F9C48EEFAB9DF.yaml @@ -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" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01003990220BE000/FE67FB035271B5E4.yaml b/SaltySD/plugins/FPSLocker/patches/01003990220BE000/FE67FB035271B5E4.yaml new file mode 100644 index 0000000..3d3b90e --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01003990220BE000/FE67FB035271B5E4.yaml @@ -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" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01003CC00D0BE000/F6FB99E54347E740.yaml b/SaltySD/plugins/FPSLocker/patches/01003CC00D0BE000/F6FB99E54347E740.yaml new file mode 100644 index 0000000..efebd9a --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01003CC00D0BE000/F6FB99E54347E740.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010044B01E786000/2CF926BBD5D1AB4D.yaml b/SaltySD/plugins/FPSLocker/patches/010044B01E786000/2CF926BBD5D1AB4D.yaml new file mode 100644 index 0000000..62eb13d --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010044B01E786000/2CF926BBD5D1AB4D.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100453019AA8000/3F2425864CF22684.yaml b/SaltySD/plugins/FPSLocker/patches/0100453019AA8000/3F2425864CF22684.yaml new file mode 100644 index 0000000..e4367e8 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100453019AA8000/3F2425864CF22684.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01004A600EC0A000/70F3F6751D73C644.yaml b/SaltySD/plugins/FPSLocker/patches/01004A600EC0A000/70F3F6751D73C644.yaml deleted file mode 100644 index 82e2d90..0000000 --- a/SaltySD/plugins/FPSLocker/patches/01004A600EC0A000/70F3F6751D73C644.yaml +++ /dev/null @@ -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 diff --git a/SaltySD/plugins/FPSLocker/patches/010050F01DF9C000/11D6D6158B566A74.yaml b/SaltySD/plugins/FPSLocker/patches/010050F01DF9C000/11D6D6158B566A74.yaml new file mode 100644 index 0000000..049be29 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010050F01DF9C000/11D6D6158B566A74.yaml @@ -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"] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010050F01DF9C000/C59C89CCDF382602.yaml b/SaltySD/plugins/FPSLocker/patches/010050F01DF9C000/C59C89CCDF382602.yaml new file mode 100644 index 0000000..c8e2193 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010050F01DF9C000/C59C89CCDF382602.yaml @@ -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"] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010051C0134F8000/20503FA77FA416B7.yaml b/SaltySD/plugins/FPSLocker/patches/010051C0134F8000/20503FA77FA416B7.yaml index 9821cba..01d6d9c 100644 --- a/SaltySD/plugins/FPSLocker/patches/010051C0134F8000/20503FA77FA416B7.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010051C0134F8000/20503FA77FA416B7.yaml @@ -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 diff --git a/SaltySD/plugins/FPSLocker/patches/010051C0134F8000/389E38618E93A5E0.yaml b/SaltySD/plugins/FPSLocker/patches/010051C0134F8000/389E38618E93A5E0.yaml index 65f751e..234c808 100644 --- a/SaltySD/plugins/FPSLocker/patches/010051C0134F8000/389E38618E93A5E0.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010051C0134F8000/389E38618E93A5E0.yaml @@ -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] \ No newline at end of file + value: [0, 0] diff --git a/SaltySD/plugins/FPSLocker/patches/010051C0134F8000/72F6F8B54276185C.yaml b/SaltySD/plugins/FPSLocker/patches/010051C0134F8000/72F6F8B54276185C.yaml new file mode 100644 index 0000000..9b1319e --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010051C0134F8000/72F6F8B54276185C.yaml @@ -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] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100544020572000/A947DDE7826A3562.yaml b/SaltySD/plugins/FPSLocker/patches/0100544020572000/A947DDE7826A3562.yaml new file mode 100644 index 0000000..8db0285 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100544020572000/A947DDE7826A3562.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010054E01D878000/641E15F899C4A057.yaml b/SaltySD/plugins/FPSLocker/patches/010054E01D878000/641E15F899C4A057.yaml new file mode 100644 index 0000000..4eb8e94 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010054E01D878000/641E15F899C4A057.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010054E01D878000/7E587D3ADCFD66BC.yaml b/SaltySD/plugins/FPSLocker/patches/010054E01D878000/7E587D3ADCFD66BC.yaml new file mode 100644 index 0000000..31f63b7 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010054E01D878000/7E587D3ADCFD66BC.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010054E01D878000/B8264CDBC1CBFFCF.yaml b/SaltySD/plugins/FPSLocker/patches/010054E01D878000/B8264CDBC1CBFFCF.yaml new file mode 100644 index 0000000..835cc9f --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010054E01D878000/B8264CDBC1CBFFCF.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010054E01D878000/C953D6F477604662.yaml b/SaltySD/plugins/FPSLocker/patches/010054E01D878000/C953D6F477604662.yaml new file mode 100644 index 0000000..8b07f41 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010054E01D878000/C953D6F477604662.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010058F01DF8C000/BDB53001D5CAD0AE.yaml b/SaltySD/plugins/FPSLocker/patches/010058F01DF8C000/BDB53001D5CAD0AE.yaml new file mode 100644 index 0000000..c0ebcea --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010058F01DF8C000/BDB53001D5CAD0AE.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01005AE0209A8000/50C9028B61A0BB7F.yaml b/SaltySD/plugins/FPSLocker/patches/01005AE0209A8000/50C9028B61A0BB7F.yaml new file mode 100644 index 0000000..d7310cd --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01005AE0209A8000/50C9028B61A0BB7F.yaml @@ -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"] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01005D2016934000/49F6F257348A42A1.yaml b/SaltySD/plugins/FPSLocker/patches/01005D2016934000/49F6F257348A42A1.yaml new file mode 100644 index 0000000..b0d8ddc --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01005D2016934000/49F6F257348A42A1.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01006AC01F630000/7C37B073B19F3CCF.yaml b/SaltySD/plugins/FPSLocker/patches/01006AC01F630000/7C37B073B19F3CCF.yaml new file mode 100644 index 0000000..c41dcf0 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01006AC01F630000/7C37B073B19F3CCF.yaml @@ -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] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01006AC01F630000/B70551B5A2D0F15F.yaml b/SaltySD/plugins/FPSLocker/patches/01006AC01F630000/B70551B5A2D0F15F.yaml new file mode 100644 index 0000000..6a9de43 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01006AC01F630000/B70551B5A2D0F15F.yaml @@ -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] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01006BD018B54000/AFDEB128252898AC.yaml b/SaltySD/plugins/FPSLocker/patches/01006BD018B54000/AFDEB128252898AC.yaml new file mode 100644 index 0000000..ec20fe8 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01006BD018B54000/AFDEB128252898AC.yaml @@ -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 diff --git a/SaltySD/plugins/FPSLocker/patches/01006C300E9F0000/1719AABFA5EAE42B.yaml b/SaltySD/plugins/FPSLocker/patches/01006C300E9F0000/1719AABFA5EAE42B.yaml index 7a0f9a8..af7a949 100644 --- a/SaltySD/plugins/FPSLocker/patches/01006C300E9F0000/1719AABFA5EAE42B.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01006C300E9F0000/1719AABFA5EAE42B.yaml @@ -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 diff --git a/SaltySD/plugins/FPSLocker/patches/01006D0017F7A000/BF0607AC795B593A.yaml b/SaltySD/plugins/FPSLocker/patches/01006D0017F7A000/BF0607AC795B593A.yaml new file mode 100644 index 0000000..0662a4b --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01006D0017F7A000/BF0607AC795B593A.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010072E01CE0E000/85F60F87D19B5270.yaml b/SaltySD/plugins/FPSLocker/patches/010072E01CE0E000/85F60F87D19B5270.yaml new file mode 100644 index 0000000..d1662ee --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010072E01CE0E000/85F60F87D19B5270.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010073601DF1A000/D36459588F85315D.yaml b/SaltySD/plugins/FPSLocker/patches/010073601DF1A000/D36459588F85315D.yaml new file mode 100644 index 0000000..197aff6 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010073601DF1A000/D36459588F85315D.yaml @@ -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" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010073C01AF34000/C6F56735E3837278.yaml b/SaltySD/plugins/FPSLocker/patches/010073C01AF34000/C6F56735E3837278.yaml new file mode 100644 index 0000000..4f99229 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010073C01AF34000/C6F56735E3837278.yaml @@ -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 diff --git a/SaltySD/plugins/FPSLocker/patches/010078D000F88000/8263E738648A23E3.yaml b/SaltySD/plugins/FPSLocker/patches/010078D000F88000/8263E738648A23E3.yaml new file mode 100644 index 0000000..51b8758 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010078D000F88000/8263E738648A23E3.yaml @@ -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" diff --git a/SaltySD/plugins/FPSLocker/patches/01007BE01FCC2000/BDDD7E8FA07C8C75.yaml b/SaltySD/plugins/FPSLocker/patches/01007BE01FCC2000/BDDD7E8FA07C8C75.yaml new file mode 100644 index 0000000..769c244 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01007BE01FCC2000/BDDD7E8FA07C8C75.yaml @@ -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] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010084F017B32000/2BFF5F7711EE6C9F.yaml b/SaltySD/plugins/FPSLocker/patches/010084F017B32000/2BFF5F7711EE6C9F.yaml index 2646775..45e4bce 100644 --- a/SaltySD/plugins/FPSLocker/patches/010084F017B32000/2BFF5F7711EE6C9F.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010084F017B32000/2BFF5F7711EE6C9F.yaml @@ -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 diff --git a/SaltySD/plugins/FPSLocker/patches/0100853015E86000/63C5A645F3E5985A.yaml b/SaltySD/plugins/FPSLocker/patches/0100853015E86000/63C5A645F3E5985A.yaml new file mode 100644 index 0000000..b8d5701 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100853015E86000/63C5A645F3E5985A.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100853015E86000/909C5FD598A092B1.yaml b/SaltySD/plugins/FPSLocker/patches/0100853015E86000/909C5FD598A092B1.yaml new file mode 100644 index 0000000..6ffa5ff --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100853015E86000/909C5FD598A092B1.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100853015E86000/BC6CA2DEA3306522.yaml b/SaltySD/plugins/FPSLocker/patches/0100853015E86000/BC6CA2DEA3306522.yaml new file mode 100644 index 0000000..27fc6b8 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100853015E86000/BC6CA2DEA3306522.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100853015E86000/FB1995474546F7C0.yaml b/SaltySD/plugins/FPSLocker/patches/0100853015E86000/FB1995474546F7C0.yaml new file mode 100644 index 0000000..2c42c61 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100853015E86000/FB1995474546F7C0.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010087E01FCD6000/ACD959FBAECADE00.yaml b/SaltySD/plugins/FPSLocker/patches/010087E01FCD6000/ACD959FBAECADE00.yaml new file mode 100644 index 0000000..4b18cdf --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010087E01FCD6000/ACD959FBAECADE00.yaml @@ -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" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010097F018538000/500A59C7C5A7C1E8.yaml b/SaltySD/plugins/FPSLocker/patches/010097F018538000/500A59C7C5A7C1E8.yaml new file mode 100644 index 0000000..c6441a1 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010097F018538000/500A59C7C5A7C1E8.yaml @@ -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" diff --git a/SaltySD/plugins/FPSLocker/patches/01009970122E4000/AE2768797E3337EE.yaml b/SaltySD/plugins/FPSLocker/patches/01009970122E4000/AE2768797E3337EE.yaml new file mode 100644 index 0000000..1c54774 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01009970122E4000/AE2768797E3337EE.yaml @@ -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 diff --git a/SaltySD/plugins/FPSLocker/patches/01009FA01FF6C000/6CFA2609A2D00FA5.yaml b/SaltySD/plugins/FPSLocker/patches/01009FA01FF6C000/6CFA2609A2D00FA5.yaml new file mode 100644 index 0000000..58406e1 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01009FA01FF6C000/6CFA2609A2D00FA5.yaml @@ -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 diff --git a/SaltySD/plugins/FPSLocker/patches/0100B2301F4A8000/BBEA8745A7893750.yaml b/SaltySD/plugins/FPSLocker/patches/0100B2301F4A8000/BBEA8745A7893750.yaml new file mode 100644 index 0000000..2c6a892 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100B2301F4A8000/BBEA8745A7893750.yaml @@ -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 diff --git a/SaltySD/plugins/FPSLocker/patches/0100B6C01CDA0000/13824B290C931FE5.yaml b/SaltySD/plugins/FPSLocker/patches/0100B6C01CDA0000/13824B290C931FE5.yaml new file mode 100644 index 0000000..52b6fc9 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100B6C01CDA0000/13824B290C931FE5.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100B7C01D480000/0100B7C01D480000/E8EA74BE6221F2E4.yaml b/SaltySD/plugins/FPSLocker/patches/0100B7C01D480000/0100B7C01D480000/E8EA74BE6221F2E4.yaml new file mode 100644 index 0000000..b903460 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100B7C01D480000/0100B7C01D480000/E8EA74BE6221F2E4.yaml @@ -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 diff --git a/SaltySD/plugins/FPSLocker/patches/0100B7C01D480000/567A8410AE613885.yaml b/SaltySD/plugins/FPSLocker/patches/0100B7C01D480000/567A8410AE613885.yaml new file mode 100644 index 0000000..3e63d6d --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100B7C01D480000/567A8410AE613885.yaml @@ -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 diff --git a/SaltySD/plugins/FPSLocker/patches/0100B9801F872000/A588F7BB864AAD5F.yaml b/SaltySD/plugins/FPSLocker/patches/0100B9801F872000/A588F7BB864AAD5F.yaml new file mode 100644 index 0000000..069e075 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100B9801F872000/A588F7BB864AAD5F.yaml @@ -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)"] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100CE101B698000/0CE2AE41BCCADC72.yaml b/SaltySD/plugins/FPSLocker/patches/0100CE101B698000/0CE2AE41BCCADC72.yaml new file mode 100644 index 0000000..77f9263 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100CE101B698000/0CE2AE41BCCADC72.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100CE101B698000/1CE1386EAF0C5EF5.yaml b/SaltySD/plugins/FPSLocker/patches/0100CE101B698000/1CE1386EAF0C5EF5.yaml new file mode 100644 index 0000000..f77eee1 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100CE101B698000/1CE1386EAF0C5EF5.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100DC2020C50000/4A64A3713EEA60CA.yaml b/SaltySD/plugins/FPSLocker/patches/0100DC2020C50000/4A64A3713EEA60CA.yaml new file mode 100644 index 0000000..8b198ff --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100DC2020C50000/4A64A3713EEA60CA.yaml @@ -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" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100E5900F49A000/A8BA2A8F93AAE647.yaml b/SaltySD/plugins/FPSLocker/patches/0100E5900F49A000/A8BA2A8F93AAE647.yaml index e95ed35..7f62062 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100E5900F49A000/A8BA2A8F93AAE647.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100E5900F49A000/A8BA2A8F93AAE647.yaml @@ -1,4 +1,4 @@ -# Othercide 1.3.0.5 +# Othercide 1.3.0.5/1.3.1.0 # BID: A8BA2A8F93AAE647 unsafeCheck: true diff --git a/SaltySD/plugins/FPSLocker/patches/0100E66006406000/AA4277E6A92FEBE6.yaml b/SaltySD/plugins/FPSLocker/patches/0100E66006406000/AA4277E6A92FEBE6.yaml new file mode 100644 index 0000000..b550917 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100E66006406000/AA4277E6A92FEBE6.yaml @@ -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 diff --git a/SaltySD/plugins/FPSLocker/patches/0100E6B01BD3A000/6A2E388EB364D4ED.yaml b/SaltySD/plugins/FPSLocker/patches/0100E6B01BD3A000/6A2E388EB364D4ED.yaml new file mode 100644 index 0000000..af20dac --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100E6B01BD3A000/6A2E388EB364D4ED.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100E6B01BD3A000/CB3C7EF8E279A22D.yaml b/SaltySD/plugins/FPSLocker/patches/0100E6B01BD3A000/CB3C7EF8E279A22D.yaml new file mode 100644 index 0000000..b3013fe --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100E6B01BD3A000/CB3C7EF8E279A22D.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100EE00205BA000/21B3E4EA75F16551.yaml b/SaltySD/plugins/FPSLocker/patches/0100EE00205BA000/21B3E4EA75F16551.yaml new file mode 100644 index 0000000..eae93a4 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100EE00205BA000/21B3E4EA75F16551.yaml @@ -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" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100EE00205BA000/AA3EDDE660D630AD.yaml b/SaltySD/plugins/FPSLocker/patches/0100EE00205BA000/AA3EDDE660D630AD.yaml new file mode 100644 index 0000000..f7bcd0e --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100EE00205BA000/AA3EDDE660D630AD.yaml @@ -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" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100F6701FED4000/7CE83658C7B53BB6.yaml b/SaltySD/plugins/FPSLocker/patches/0100F6701FED4000/7CE83658C7B53BB6.yaml new file mode 100644 index 0000000..03c5fd7 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100F6701FED4000/7CE83658C7B53BB6.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100FBD013AB6000/038858A1EC679156.yaml b/SaltySD/plugins/FPSLocker/patches/0100FBD013AB6000/038858A1EC679156.yaml new file mode 100644 index 0000000..716c60e --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100FBD013AB6000/038858A1EC679156.yaml @@ -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 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100FBD013AB6000/CD9E844E29E8CA80.yaml b/SaltySD/plugins/FPSLocker/patches/0100FBD013AB6000/CD9E844E29E8CA80.yaml new file mode 100644 index 0000000..17a00d3 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100FBD013AB6000/CD9E844E29E8CA80.yaml @@ -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 \ No newline at end of file diff --git a/atmosphere/contents/010000000000bd00/flags/boot2.flag b/atmosphere/contents/010000000000bd00/flags/boot2.flag deleted file mode 100644 index e69de29..0000000 diff --git a/atmosphere/contents/690000000000000D/exefs.nsp b/atmosphere/contents/690000000000000D/exefs.nsp index 82b9b1b..17004f4 100644 Binary files a/atmosphere/contents/690000000000000D/exefs.nsp and b/atmosphere/contents/690000000000000D/exefs.nsp differ diff --git a/atmosphere/contents/690000000000000D/flags/boot2.flag b/atmosphere/contents/690000000000000D/flags/boot2.flag deleted file mode 100644 index e69de29..0000000 diff --git a/atmosphere/package3 b/atmosphere/package3 index 200213b..bdc15f1 100644 Binary files a/atmosphere/package3 and b/atmosphere/package3 differ diff --git a/config/sys-con/config.ini b/config/sys-con/config.ini index 624d9c9..c02d409 100644 --- a/config/sys-con/config.ini +++ b/config/sys-con/config.ini @@ -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 diff --git a/switch/DBI/DBI.nro b/switch/DBI/DBI.nro index 4e56dfe..ae1863f 100644 Binary files a/switch/DBI/DBI.nro and b/switch/DBI/DBI.nro differ diff --git a/switch/DBI/dbi.config b/switch/DBI/dbi.config index 3a9f924..cf5c283 100644 --- a/switch/DBI/dbi.config +++ b/switch/DBI/dbi.config @@ -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] ; =| -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/ diff --git a/switch/DBI/dbi.locations b/switch/DBI/dbi.locations new file mode 100644 index 0000000..48ff981 --- /dev/null +++ b/switch/DBI/dbi.locations @@ -0,0 +1,4 @@ +[Location_0] +Name=notUltraNX +Type=ApacheHTTP +URL=https://dbi.ultranx.ru/