diff --git a/README.md b/README.md index 44bea11..c2eb482 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ ### Ultra - это функциональная кастомная прошивка для Nintendo Switch, с упором в разгон и улучшенный пользовательский опыт. -### [UltraNX 3.1|RC1](https://github.com/Ultra-NX/UltraNX/releases/tag/3.1-R1) Поддерживает все HOS до 23.0.0 включительно +### [UltraNX 3.1|R1](https://github.com/Ultra-NX/UltraNX/releases/tag/3.1-R1) Поддерживает все HOS до 23.0.1 включительно @@ -54,10 +54,11 @@ * [sys-patch](https://github.com/borntohonk/sys-patch) - Патчит систему на работу неподписанного софта вместо сигпатчей. * [Mission Control](https://github.com/ndeadly/MissionControl) - Модуль, позволяющий подключать практически любые геймпады к консоли по Bluetooth. * [sys-con](https://github.com/o0Zz/sys-con) - Модуль, позволяющий подключать практически любые геймпады к консоли по USB. + * [disable remap dialog](https://github.com/ndeadly/disable_remap_dialog) - Модуль, убирающий предупреждение о переназначенных кнопках при каждом заходе в игры. * [Ultrahand Overlay](https://github.com/ppkantorski/Ultrahand-Overlay) - Специальное оверлей-меню для взаимодействия с системой: разгон, управление режимами через ReverseNX, включение читов, прочее. Также позволяет использовать самописные пакеты, например - Ultra Tuner. - [Horizon OC](https://github.com/Horizon-OC/Horizon-OC) - Оверлей для управления модулем sys-clk. - [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay) - Оверлей позволяющий следить за параметрами консоли в реальном времени. Может выступать в качестве счетчика FPS. Сменить пресет Micro-оверлея можно в Tuner. - - [FPSLocker](https://github.com/ppkantorski/FPSLocker) - Оверлей, позволяющий разблокировать 60 FPS в играх. + - [FPSLocker](https://github.com/masagrator/FPSLocker) - Оверлей, позволяющий разблокировать 60 FPS в играх. - [EdiZon](https://github.com/proferabg/EdiZon-Overlay) - Оверлей для использования читов, включая графические. - [ReverseNX-RT](https://github.com/ppkantorski/ReverseNX-RT) - Оверлей для переключения запущенной игры в портатив\док, меняет настройки графики\разрешения в играх. - [Sysmodules](https://github.com/ppkantorski/ovl-sysmodules) - Оверлей для включения\отключения установленных системных модулей. diff --git a/README_ENG.md b/README_ENG.md index a24e933..887c5c2 100644 --- a/README_ENG.md +++ b/README_ENG.md @@ -6,7 +6,7 @@ # ### Ultra is a functional custom firmware for Nintendo Switch, with a focus on overclocking and an improved user experience. -### [UltraNX 3.1|RC1](https://github.com/Ultra-NX/UltraNX/releases/tag/3.1-R1) Supports all HOS up to and including 23.0.0 +### [UltraNX 3.1|R1](https://github.com/Ultra-NX/UltraNX/releases/tag/3.1-R1) Supports all HOS up to and including 23.0.1 @@ -50,10 +50,11 @@ * [sys-patch](https://github.com/borntohonk/sys-patch) - Patches the system to run unsigned software instead of sigpatches. * [Mission Control](https://github.com/ndeadly/MissionControl) - A module that allows you to connect almost any gamepads to the console via bluetooth. * [sys-con](https://github.com/o0Zz/sys-con) - A module that allows you to connect almost any gamepads to the console via USB. + * [disable remap dialog](https://github.com/ndeadly/disable_remap_dialog) - A module that removes the warning about reconfigured buttons every time you enter the game. * [Ultrahand Overlay](https://github.com/ppkantorski/Ultrahand-Overlay) - Special overlay-menu for interacting with the system: overclocking, controlling modes via ReverseNX, enabling cheats, etc. Also allows to use your own packages, for example, Ultra Tuner. - [Horizon OC](https://github.com/Horizon-OC/Horizon-OC) - Overlay for controlling sys-clk module. - [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay) - Overlay that allows you to monitor console parameters in real time. It can act as an FPS counter. You change preset of Micro-overlay appearance in Tuner. - - [FPSLocker](https://github.com/ppkantorski/FPSLocker) - An overlay that allows you to unlock 60 FPS in games. + - [FPSLocker](https://github.com/masagrator/FPSLocker) - An overlay that allows you to unlock 60 FPS in games. - [EdiZon](https://github.com/proferabg/EdiZon-Overlay) - An overlay for using cheats. - [ReverseNX-RT](https://github.com/ppkantorski/ReverseNX-RT) - An overlay for switching a running game to a handheld\dock mode, which changes the graphics and resolution settings in games. - [Sysmodules](https://github.com/ppkantorski/ovl-sysmodules) - Overlay for enabling\disabling installed system modules. diff --git a/SaltySD/plugins/FPSLocker/patches/0100005027A18000/D8AEEEB4E7F1AB63.yaml b/SaltySD/plugins/FPSLocker/patches/0100005027A18000/D8AEEEB4E7F1AB63.yaml new file mode 100644 index 0000000..7c0e07e --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100005027A18000/D8AEEEB4E7F1AB63.yaml @@ -0,0 +1,18 @@ +# Graveyard Keeper 2 1.0.2 +# BID: D8AEEEB4E7F1AB63 + +ALL_FPS: + # Vsync + # Ref: 01 00 00 00 01 00 00 00 00 00 00 08 + - + type: evaluate_write + address: [MAIN, 0x7A9FA98] + value_type: int32 + value: VSYNC_TARGET + # FPS lock + # Ref: 89 88 88 3C 03 00 00 00 + - + type: evaluate_write + address: [MAIN, 0x7A9FAA4] + value_type: float + value: "1 / FPS_LOCK_TARGET" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010008301AA96000/FEDCF99FA055B68A.yaml b/SaltySD/plugins/FPSLocker/patches/010008301AA96000/FEDCF99FA055B68A.yaml new file mode 100644 index 0000000..14861ac --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010008301AA96000/FEDCF99FA055B68A.yaml @@ -0,0 +1,28 @@ +# Tiebreak+: Official Game of the ATP and WTA 1.5.0 +# BID: FEDCF99FA055B68A + +DECLARATIONS: + - + type: variable + name: dr_target + value_type: float + default_value: 0.03333333333 + evaluate: "0.8 / FPS_TARGET" # we are using this trick because function is overengineered and it's not easy to just use standard 1 / FPS_TARGET +MASTER_WRITE: + # Triple buffer + # REF: 00 40 00 00 00 04 00 00 00 88 00 00 02 00 00 00 + - + type: bytes + main_offset: 0x1A4CB8C + value_type: uint32 + value: 3 + # Redirect Dynamic Resolution target + # REF: 28 11 91 52 08 A1 A7 72 03 01 27 1E + - + type: asm_a64 + main_offset: 0x1444614 + instructions: [ + [adrp, x8, $dr_target], + [ldr, s3, [x8, $dr_target]], + [nop] + ] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01000BB00E9D2000/C0AD3CC6D7866578.yaml b/SaltySD/plugins/FPSLocker/patches/01000BB00E9D2000/C0AD3CC6D7866578.yaml new file mode 100644 index 0000000..91e7227 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01000BB00E9D2000/C0AD3CC6D7866578.yaml @@ -0,0 +1,25 @@ +# ウィッチャー3 ワイルドハント コンプリートエディション 4.04d +# BID: C0AD3CC6D7866578 + +ALL_FPS: + # DRGameTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312B4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # DRCinematicTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312E4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # LimitFPS + - + type: evaluate_write + address: [MAIN, 0x411DCFC] + value_type: int32 + value: FPS_LOCK_TARGET + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01000CA0260FE000/E902A297D1544CCF.yaml b/SaltySD/plugins/FPSLocker/patches/01000CA0260FE000/E902A297D1544CCF.yaml new file mode 100644 index 0000000..d00f831 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01000CA0260FE000/E902A297D1544CCF.yaml @@ -0,0 +1,52 @@ +# 《心之城堡:重述》 1.0.5 +# BID: E902A297D1544CCF + +DECLARATIONS: + - + type: variable + name: limiter_sleep_threshold + value_type: int64 + default_value: 319999 + evaluate: "(10000000 / FPS_TARGET) - 13001" + - + type: variable + name: limiter_sleep_target + value_type: int64 + default_value: 330000 + evaluate: "(10000000 / FPS_TARGET) - 3000" +MASTER_WRITE: + # FPS lock + ## REF: e8 3f 9c 52 88 00 a0 72 + - + type: asm_a64 + main_offset: 0x2490648 + instructions: [ + [adrp, x8, $limiter_sleep_threshold], + [ldr, x8, [x8, $limiter_sleep_threshold]] + ] + ## REF: 14 22 81 52 b4 00 a0 72 + - + type: asm_a64 + main_offset: 0x2490654 + instructions: [ + [adrp, x20, $limiter_sleep_target], + [ldr, x20, [x20, $limiter_sleep_target]] + ] +ALL_FPS: + # Dynamic Resolution + ## REF: e9 11 e8 f2 20 01 67 9e 00 18 68 1e 08 01 00 6d, look at adrp + ldr x0 above + - + type: evaluate_write + address: [MAIN, 0x8360C68, 0xB8, 0x0] + address_unsafe: true + value_type: double + value: FPS_TARGET + - + type: evaluate_write + address: [MAIN, 0x8360C68, 0xB8, 0x8] + address_unsafe: true + value_type: double + value: FRAMETIME_TARGET + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/010016C00F474000/C0AD3CC6D7866578.yaml b/SaltySD/plugins/FPSLocker/patches/010016C00F474000/C0AD3CC6D7866578.yaml new file mode 100644 index 0000000..1f43003 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010016C00F474000/C0AD3CC6D7866578.yaml @@ -0,0 +1,25 @@ +# The Witcher 3: Wild Hunt - The Complete Edition `Cartridge only 2` 4.04d +# BID: C0AD3CC6D7866578 + +ALL_FPS: + # DRGameTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312B4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # DRCinematicTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312E4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # LimitFPS + - + type: evaluate_write + address: [MAIN, 0x411DCFC] + value_type: int32 + value: FPS_LOCK_TARGET + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010019C00E9CC000/C0AD3CC6D7866578.yaml b/SaltySD/plugins/FPSLocker/patches/010019C00E9CC000/C0AD3CC6D7866578.yaml new file mode 100644 index 0000000..a05edc4 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010019C00E9CC000/C0AD3CC6D7866578.yaml @@ -0,0 +1,25 @@ +# 《巫師 3:狂獵》-完全版 4.04d +# BID: C0AD3CC6D7866578 + +ALL_FPS: + # DRGameTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312B4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # DRCinematicTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312E4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # LimitFPS + - + type: evaluate_write + address: [MAIN, 0x411DCFC] + value_type: int32 + value: FPS_LOCK_TARGET + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100215015448000/60568AFC961E0F51.yaml b/SaltySD/plugins/FPSLocker/patches/0100215015448000/60568AFC961E0F51.yaml new file mode 100644 index 0000000..cdfaa84 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100215015448000/60568AFC961E0F51.yaml @@ -0,0 +1,11 @@ +# 영웅전설 시작의 궤적 1.0.5 +# BID: 60568AFC961E0F51 + +ALL_FPS: + # Set game to 60 FPS mode + # REF: find xref of "PhyreFrameworkApplication" string, look at first LDR above it + - + type: write + address: [MAIN, 0x4FBDA80, 0x20A4] + value_type: uint32 + value: 0 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01002270268E0000/6994C555B7D6B642.yaml b/SaltySD/plugins/FPSLocker/patches/01002270268E0000/6994C555B7D6B642.yaml new file mode 100644 index 0000000..ca8f143 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01002270268E0000/6994C555B7D6B642.yaml @@ -0,0 +1,20 @@ +# 空の軌跡 the 2nd 1.0.3 +# BID: 6994C555B7D6B642 + +ALL_FPS: + # Min Delta + ## REF: C1 03 80 52 28 4D 28 9B, first ADRP + ADD below it + # By default 60 + - + type: evaluate_write + address: [MAIN, 0x877890, 0x2C] + value_type: uint32 + value: FPS_TARGET + # Dynamic Resolution + ## REF: First function in .init_array section, ADRP + ADD + 0x228 (default float: 2.3) + ## Adding there 0.95 by myself because game seems to have issues with reaching 60 FPS without it + - + type: write + address: [MAIN, 0x8773D8] + value_type: float + value: 0.95 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01002B00111A2000/E5F275B5D0889899.yaml b/SaltySD/plugins/FPSLocker/patches/01002B00111A2000/E5F275B5D0889899.yaml new file mode 100644 index 0000000..90ea8db --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01002B00111A2000/E5F275B5D0889899.yaml @@ -0,0 +1,19 @@ +# Hyrule Warriors: Age of Calamity 1.4.1 +# BID: E5F275B5D0889899 +# Non-prerenderd cutscenes are tied to framerate + +ALL_FPS: + # REF: 1e 00 00 00 02 00 00 00 1e 00 00 00 + - + type: evaluate_write + address: [MAIN, 0x26A2280] + value_type: int32 + value: [FPS_TARGET, VSYNC_TARGET, FPS_TARGET] + - + type: evaluate_write + address: [MAIN, 0x26A228C] + value_type: float + value: FPS_LOCK_TARGET + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/010039400E8D6000/C0AD3CC6D7866578.yaml b/SaltySD/plugins/FPSLocker/patches/010039400E8D6000/C0AD3CC6D7866578.yaml new file mode 100644 index 0000000..ae49479 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010039400E8D6000/C0AD3CC6D7866578.yaml @@ -0,0 +1,25 @@ +# The Witcher 3: Wild Hunt - Complete Edition `PL/CZ/HU/SK/SL` 4.04d +# BID: C0AD3CC6D7866578 + +ALL_FPS: + # DRGameTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312B4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # DRCinematicTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312E4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # LimitFPS + - + type: evaluate_write + address: [MAIN, 0x411DCFC] + value_type: int32 + value: FPS_LOCK_TARGET + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01003C100445C000/38E31B826DE0764C.yaml b/SaltySD/plugins/FPSLocker/patches/01003C100445C000/38E31B826DE0764C.yaml new file mode 100644 index 0000000..9dff63b --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01003C100445C000/38E31B826DE0764C.yaml @@ -0,0 +1,24 @@ +# Castle of Heart 1.3.0 +# BID: 38E31B826DE0764C + +DECLARATIONS: + - + type: variable + name: limiter_frametime + value_type: double + default_value: 0.033 + evaluate: "TruncDec(1 / FPS_TARGET, 3)" +MASTER_WRITE: + # FPS lock + ## REF: 00 20 68 1e 4b fd ff 54 74 d6 01 a9, look at adrp x8 + ldr d8, [x8, #0x98] above + - + type: asm_a64 + main_offset: 0x72165C + instructions: [ + [adrp, x8, $limiter_frametime], + [ldr, d8, [x8, $limiter_frametime]] + ] +ALL_FPS: + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/01003D100E9C6000/C0AD3CC6D7866578.yaml b/SaltySD/plugins/FPSLocker/patches/01003D100E9C6000/C0AD3CC6D7866578.yaml new file mode 100644 index 0000000..1748f93 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01003D100E9C6000/C0AD3CC6D7866578.yaml @@ -0,0 +1,25 @@ +# The Witcher 3: Wild Hunt - Complete Edition `West EUR/CY` 4.04d +# BID: C0AD3CC6D7866578 + +ALL_FPS: + # DRGameTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312B4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # DRCinematicTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312E4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # LimitFPS + - + type: evaluate_write + address: [MAIN, 0x411DCFC] + value_type: int32 + value: FPS_LOCK_TARGET + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01003FB012926000/C0AD3CC6D7866578.yaml b/SaltySD/plugins/FPSLocker/patches/01003FB012926000/C0AD3CC6D7866578.yaml new file mode 100644 index 0000000..1eafcf0 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01003FB012926000/C0AD3CC6D7866578.yaml @@ -0,0 +1,25 @@ +# ウィッチャー3 ワイルドハント 4.04d +# BID: C0AD3CC6D7866578 + +ALL_FPS: + # DRGameTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312B4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # DRCinematicTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312E4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # LimitFPS + - + type: evaluate_write + address: [MAIN, 0x411DCFC] + value_type: int32 + value: FPS_LOCK_TARGET + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010040B0270A2000/724C36A143F3F225.yaml b/SaltySD/plugins/FPSLocker/patches/010040B0270A2000/724C36A143F3F225.yaml new file mode 100644 index 0000000..c9ea43b --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010040B0270A2000/724C36A143F3F225.yaml @@ -0,0 +1,19 @@ +# Dragon Quest Heroes: Torneko's Mystery Dungeon -Classic HD- 1.0.1 +# BID: 724C36A143F3F225 + +ALL_FPS: + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x5E703C8, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + # r.VSync + - + type: write + address: [MAIN, 0x4E63150, 0] + value_type: uint32 + value: [0, 0] + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010040B0270A2000/F3A70AEAAF0810B9.yaml b/SaltySD/plugins/FPSLocker/patches/010040B0270A2000/F3A70AEAAF0810B9.yaml new file mode 100644 index 0000000..7562460 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010040B0270A2000/F3A70AEAAF0810B9.yaml @@ -0,0 +1,19 @@ +# Dragon Quest Heroes: Torneko's Mystery Dungeon -Classic HD- 1.0.2 +# BID: F3A70AEAAF0810B9 + +ALL_FPS: + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x5E703C8, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + # r.VSync + - + type: write + address: [MAIN, 0x4E63150, 0] + value_type: uint32 + value: [0, 0] + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01004D501F078000/D70341137DAA544C.yaml b/SaltySD/plugins/FPSLocker/patches/01004D501F078000/D70341137DAA544C.yaml new file mode 100644 index 0000000..52c8d01 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01004D501F078000/D70341137DAA544C.yaml @@ -0,0 +1,83 @@ +# The Lord of the Rings: War in the North - Legacy Edition 1.0.2 +# BID: D70341137DAA544C +# INFO: RenderThreadWaitOnGPU blocks game to 59 FPS and causes CPU cores to rampage if not adjusted, but if adjusted to allow perfect 60 FPS image starts tearing, so i decided to not change it + +DECLARATIONS: + - + type: variable + name: frametime + value_type: uint32 + default_value: 33333 + evaluate: 1000000 / FPS_LOCK_TARGET + - + type: variable + name: refresh_rate + value_type: float + default_value: 0.01665 + evaluate: 0.999 * (1 / REFRESH_RATE) + - + type: code + name: sleep + instructions: [ + [adrp, x26, $frametime], + [ldr, w26, [x26, $frametime]], + [sub, w24, w26, 1], + [cmp, x0, x24], + [b, 0x1B7190] + ] + - + type: code + name: sleep2 + instructions: [ + [adrp, x26, $frametime], + [ldr, w26, [x26, $frametime]], + [sub, w24, w26, 1], + [cmp, x0, x24], + [b, 0x1B7238] + ] + - + type: code + name: gpuSleep + instructions: [ + [mov, x0, -2], + [svc, 0xB], + [mov, x0, 10000], + [svc, 0xB], + [ret] + ] +MASTER_WRITE: + # RenderThreadWaitOnMainThread, main FPS lock + # REF: 98 46 90 52 BA 46 90 52, search for CMP X0, X24 + - + type: asm_a64 + main_offset: 0x1B718C + instructions: [ + [b, _sleep()] + ] + - + type: asm_a64 + main_offset: 0x1B7234 + instructions: [ + [b, _sleep2()] + ] + # RenderThreadWaitOnGPU + # REF: A8 B2 8C 52 08 91 A7 72 + - + type: asm_a64 + main_offset: 0x25CDD8 + instructions: [ + [adrp, x8, $refresh_rate], + [ldr, w8, [x8, $refresh_rate]] + ] + # Stabilize CPU usage + # patch YieldThread below + - + type: asm_a64 + main_offset: 0x25CDF0 + instructions: [ + [bl, _gpuSleep()] + ] +ALL_FPS: + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/0100598012906000/E76B23E5AB278083.yaml b/SaltySD/plugins/FPSLocker/patches/0100598012906000/E76B23E5AB278083.yaml new file mode 100644 index 0000000..ed5c1b2 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100598012906000/E76B23E5AB278083.yaml @@ -0,0 +1,60 @@ +# 三國志14 1.1.1 +# BID: E76B23E5AB278083 +# Cursor speed is tied to framerate, main menu animations speed is not adjusted properly in range from 35 to 55 FPS + +DECLARATIONS: + # DON'T PUT ANYTHING BETWEEN - START + - + type: variable + name: fps_lock + value_type: uint32 + default_value: 30 + evaluate: FPS_LOCK_TARGET + - + type: variable + name: fps_lock2 + value_type: uint32 + default_value: 60 + evaluate: FPS_LOCK_TARGET + # DON'T PUT ANYTHING BETWEEN - END + - + type: variable + name: game_speed + value_type: float + default_value: 0.0333333333 + evaluate: "1/FPS_TARGET" +MASTER_WRITE: + # Redirect adjusting game speed to FPS Lock, REF: 20 79 68 BC 01 10 2E 1E 00 D8 21 7E, patch ADRP + ADD above it + - + type: asm_a64 + main_offset: 0xBA86B4 + instructions: [ + [adrp, x9, $fps_lock], + [add, x9, x9, $fps_lock] + ] + # Redirect FPS Lock, REF: C8 32 40 B9 E8 C2 00 B9, patch CBNZ + LDR + - + type: asm_a64 + main_offset: 0x896B90 + instructions: [ + [adrp, x8, $fps_lock], + [ldr, w8, [x8, $fps_lock]] + ] + # Redirect game speed, REF: 00 28 21 1E 00 A8 00 BD C0 03 5F D6 + - + type: asm_a64 + main_offset: 0x119A6FC + instructions: [ + [adrp, x8, $game_speed], + [ldr, s0, [x0, 0xa8]], + [ldr, s1, [x8, $game_speed]] + ] +ALL_FPS: + - # Adjust min delta for menus, 0 - 30 FPS, 1 - 60 FPS, REF: 20 79 68 BC 01 10 2E 1E 00 D8 21 7E, ADRP + LDR above + type: evaluate_write + address: [MAIN, 0x27BFED0] + value_type: uint32 + value: "FPS_TARGET / 60" + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/0100598012906001/0C5CBA5E5DED6FDD.yaml b/SaltySD/plugins/FPSLocker/patches/0100598012906001/0C5CBA5E5DED6FDD.yaml new file mode 100644 index 0000000..848cd22 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100598012906001/0C5CBA5E5DED6FDD.yaml @@ -0,0 +1,60 @@ +# 三國志14 with パワーアップキット 1.1.1 +# BID: 0C5CBA5E5DED6FDD +# Cursor speed is tied to framerate, main menu animations speed is not adjusted properly in range from 35 to 55 FPS + +DECLARATIONS: + # DON'T PUT ANYTHING BETWEEN - START + - + type: variable + name: fps_lock + value_type: uint32 + default_value: 30 + evaluate: FPS_LOCK_TARGET + - + type: variable + name: fps_lock2 + value_type: uint32 + default_value: 60 + evaluate: FPS_LOCK_TARGET + # DON'T PUT ANYTHING BETWEEN - END + - + type: variable + name: game_speed + value_type: float + default_value: 0.0333333333 + evaluate: "1/FPS_TARGET" +MASTER_WRITE: + # Redirect adjusting game speed to FPS Lock, REF: 20 79 68 BC 01 10 2E 1E 00 D8 21 7E, patch ADRP + ADD above it + - + type: asm_a64 + main_offset: 0xB8F878 + instructions: [ + [adrp, x9, $fps_lock], + [add, x9, x9, $fps_lock] + ] + # Redirect FPS Lock, REF: C8 32 40 B9 E8 C2 00 B9, patch CBNZ + LDR + - + type: asm_a64 + main_offset: 0x896D70 + instructions: [ + [adrp, x8, $fps_lock], + [ldr, w8, [x8, $fps_lock]] + ] + # Redirect game speed, REF: 00 28 21 1E 00 A0 00 BD C0 03 5F D6 + - + type: asm_a64 + main_offset: 0x111198C + instructions: [ + [adrp, x8, $game_speed], + [ldr, s0, [x0, 0xa0]], + [ldr, s1, [x8, $game_speed]] + ] +ALL_FPS: + - # Adjust min delta for menus, 0 - 30 FPS, 1 - 60 FPS, REF: 20 79 68 BC 01 10 2E 1E 00 D8 21 7E, ADRP + LDR above + type: evaluate_write + address: [MAIN, 0x25512A0] + value_type: uint32 + value: "FPS_TARGET / 60" + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/01006DD02868A000/DB412FE4CA2393DA.yaml b/SaltySD/plugins/FPSLocker/patches/01006DD02868A000/DB412FE4CA2393DA.yaml new file mode 100644 index 0000000..e4ffed0 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01006DD02868A000/DB412FE4CA2393DA.yaml @@ -0,0 +1,18 @@ +# Artis Impact 1.0.1 +# BID: DB412FE4CA2393DA + +ALL_FPS: + # Vsync + # Ref: 01 00 00 00 01 00 00 00 00 00 00 08 + - + type: evaluate_write + address: [MAIN, 0x6F32BD8] + value_type: int32 + value: VSYNC_TARGET + # FPS lock + # Ref: 89 88 88 3C 03 00 00 00 + - + type: evaluate_write + address: [MAIN, 0x6F32BE4] + value_type: float + value: "1 / FPS_LOCK_TARGET" diff --git a/SaltySD/plugins/FPSLocker/patches/010070A00E9CE000/C0AD3CC6D7866578.yaml b/SaltySD/plugins/FPSLocker/patches/010070A00E9CE000/C0AD3CC6D7866578.yaml new file mode 100644 index 0000000..22b4535 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010070A00E9CE000/C0AD3CC6D7866578.yaml @@ -0,0 +1,25 @@ +# The Witcher 3: Wild Hunt - Complete Edition `RO/BG/AU/ZA/NZ` 4.04d +# BID: C0AD3CC6D7866578 + +ALL_FPS: + # DRGameTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312B4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # DRCinematicTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312E4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # LimitFPS + - + type: evaluate_write + address: [MAIN, 0x411DCFC] + value_type: int32 + value: FPS_LOCK_TARGET + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100760020BBA000/FF38BCAE307364E0.yaml b/SaltySD/plugins/FPSLocker/patches/0100760020BBA000/FF38BCAE307364E0.yaml new file mode 100644 index 0000000..3998a2e --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100760020BBA000/FF38BCAE307364E0.yaml @@ -0,0 +1,37 @@ +# みんなのGOLF WORLD 1.1.12 +# BID: FF38BCAE307364E0 +# Changed frametime target value math formula because default one sucks at 60 FPS target + +DECLARATIONS: + - + type: variable + name: dr_frametime_max + value_type: double + default_value: 40 + evaluate: "0.9 * FRAMETIME_TARGET" + - + type: variable + name: dr_frametime_min + value_type: double + default_value: 33.3333333333 + evaluate: "(0.9 * FRAMETIME_TARGET) - 6" +MASTER_WRITE: + # REF: 0a 00 a4 d2 8a 08 e8 f2 41 01 67 9e + - + type: asm_a64 + main_offset: 0x39A98B8 + instructions: [ + [adrp, x10, $dr_frametime_max], + [ldr, d1, [x10, $dr_frametime_max]], + [nop] + ] + - + # REF: 00 0d 40 fd 0a 00 b8 d2, result offset + 4 + type: asm_a64 + main_offset: 0x39A998C + instructions: [ + [adrp, x10, $dr_frametime_min], + [ldr, d1, [x10, $dr_frametime_min]], + [nop], + [nop] + ] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010076F00E9C8000/C0AD3CC6D7866578.yaml b/SaltySD/plugins/FPSLocker/patches/010076F00E9C8000/C0AD3CC6D7866578.yaml new file mode 100644 index 0000000..bd07bb5 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010076F00E9C8000/C0AD3CC6D7866578.yaml @@ -0,0 +1,25 @@ +# The Witcher 3: Wild Hunt - Complete Edition `DE/AT` 4.04d +# BID: C0AD3CC6D7866578 + +ALL_FPS: + # DRGameTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312B4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # DRCinematicTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312E4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # LimitFPS + - + type: evaluate_write + address: [MAIN, 0x411DCFC] + value_type: int32 + value: FPS_LOCK_TARGET + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01007A2027548000/5EA394E096752EE3.yaml b/SaltySD/plugins/FPSLocker/patches/01007A2027548000/5EA394E096752EE3.yaml new file mode 100644 index 0000000..2bdf928 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01007A2027548000/5EA394E096752EE3.yaml @@ -0,0 +1,20 @@ +# Trails in the Sky 2nd Chapter 1.0.3 +# BID: 5EA394E096752EE3 + +ALL_FPS: + # Min Delta + ## REF: C1 03 80 52 28 4D 28 9B, first ADRP + ADD below it + # By default 60 + - + type: evaluate_write + address: [MAIN, 0x879890, 0x2C] + value_type: uint32 + value: FPS_TARGET + # Dynamic Resolution + ## REF: First function in .init_array section, ADRP + ADD + 0x228 (default float: 2.3) + ## Adding there 0.95 by myself because game seems to have issues with reaching 60 FPS without it + - + type: write + address: [MAIN, 0x8793D8] + value_type: float + value: 0.95 diff --git a/SaltySD/plugins/FPSLocker/patches/0100853015E86000/97C71E2471E850BD.yaml b/SaltySD/plugins/FPSLocker/patches/0100853015E86000/97C71E2471E850BD.yaml new file mode 100644 index 0000000..15f9980 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100853015E86000/97C71E2471E850BD.yaml @@ -0,0 +1,21 @@ +# No Man's Sky 7.3.0 +# BID: 97C71E2471E850BD + +DECLARATIONS: + - + type: variable + name: dr_target + value_type: float + default_value: 30 + evaluate: FPS_TARGET +MASTER_WRITE: + # Redirect DR frametime target + # REF: 08 4E A8 52 00 01 27 1E 48 8F A8 52, ADRP + ADD + LDR above that + - + type: asm_a64 + main_offset: 0x24319A4 + instructions: [ + [adrp, x9, $dr_target], + [ldr, s0, [x9, $dr_target]], + [nop] + ] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010085500E9D0000/C0AD3CC6D7866578.yaml b/SaltySD/plugins/FPSLocker/patches/010085500E9D0000/C0AD3CC6D7866578.yaml new file mode 100644 index 0000000..ee11cbb --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010085500E9D0000/C0AD3CC6D7866578.yaml @@ -0,0 +1,25 @@ +# The Witcher 3: Wild Hunt - Complete Edition `KOR` 4.04d +# BID: C0AD3CC6D7866578 + +ALL_FPS: + # DRGameTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312B4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # DRCinematicTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312E4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # LimitFPS + - + type: evaluate_write + address: [MAIN, 0x411DCFC] + value_type: int32 + value: FPS_LOCK_TARGET + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010092A0172E4000/104DB32FD10E7538.yaml b/SaltySD/plugins/FPSLocker/patches/010092A0172E4000/104DB32FD10E7538.yaml new file mode 100644 index 0000000..a7cccc9 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010092A0172E4000/104DB32FD10E7538.yaml @@ -0,0 +1,32 @@ +# It Takes Two 1.0.3 +# BID: 104DB32FD10E7538 + +MASTER_WRITE: + # Set Triple Buffer + - + type: bytes + main_offset: 0x8AA8780 + value_type: int8 + value: 0x53 +ALL_FPS: + # r.DynamicRes.FrameTimeBudget = 0.87 * (1000/FPS) cutted to 2 decimals + - + type: evaluate_write + address: [MAIN, 0xACCA3D8, 0] + value_type: float + value: ["TruncDec(0.87 * FRAMETIME_TARGET, 2)", "TruncDec(0.87 * FRAMETIME_TARGET, 2)"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0xACF8130, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + # r.VSync + - + type: write + address: [MAIN, 0xA515EC0, 0] + value_type: uint32 + value: [0, 0] + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/010097F018538000/187FF14300662592.yaml b/SaltySD/plugins/FPSLocker/patches/010097F018538000/187FF14300662592.yaml new file mode 100644 index 0000000..5320d4a --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010097F018538000/187FF14300662592.yaml @@ -0,0 +1,10 @@ +# DAVE THE DIVER 1.0.6.1259 +# BID: 187FF14300662592 + +ALL_FPS: + # UnityEngine.Time::fixedDeltaTime + - + type: evaluate_write + address: [MAIN, 0xA5352E8, 0x50] + value_type: uint32 + value: "141120000 / FPS_TARGET" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010097F018538000/F74B633E480E4E16.yaml b/SaltySD/plugins/FPSLocker/patches/010097F018538000/F74B633E480E4E16.yaml new file mode 100644 index 0000000..55261a8 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010097F018538000/F74B633E480E4E16.yaml @@ -0,0 +1,10 @@ +# DAVE THE DIVER 1.0.6.1267 +# BID: F74B633E480E4E16 + +ALL_FPS: + # UnityEngine.Time::fixedDeltaTime + - + type: evaluate_write + address: [MAIN, 0xA5477E8, 0x50] + value_type: uint32 + value: "141120000 / FPS_TARGET" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01009EB00EBAA000/C0AD3CC6D7866578.yaml b/SaltySD/plugins/FPSLocker/patches/01009EB00EBAA000/C0AD3CC6D7866578.yaml new file mode 100644 index 0000000..6f1f361 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01009EB00EBAA000/C0AD3CC6D7866578.yaml @@ -0,0 +1,25 @@ +# ウィッチャー3 ワイルドハント コンプリートエディション `Cartridge only` 4.04d +# BID: C0AD3CC6D7866578 + +ALL_FPS: + # DRGameTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312B4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # DRCinematicTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312E4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # LimitFPS + - + type: evaluate_write + address: [MAIN, 0x411DCFC] + value_type: int32 + value: FPS_LOCK_TARGET + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100A0800E9C4000/C0AD3CC6D7866578.yaml b/SaltySD/plugins/FPSLocker/patches/0100A0800E9C4000/C0AD3CC6D7866578.yaml new file mode 100644 index 0000000..37cff21 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100A0800E9C4000/C0AD3CC6D7866578.yaml @@ -0,0 +1,25 @@ +# The Witcher 3: Wild Hunt - Complete Edition `LV/LT/EST/RU` 4.04d +# BID: C0AD3CC6D7866578 + +ALL_FPS: + # DRGameTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312B4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # DRCinematicTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312E4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # LimitFPS + - + type: evaluate_write + address: [MAIN, 0x411DCFC] + value_type: int32 + value: FPS_LOCK_TARGET + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100A0E023952000/E902A297D1544CCF.yaml b/SaltySD/plugins/FPSLocker/patches/0100A0E023952000/E902A297D1544CCF.yaml new file mode 100644 index 0000000..12ecd0e --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100A0E023952000/E902A297D1544CCF.yaml @@ -0,0 +1,52 @@ +# Castle of Heart: Retold 1.0.5 +# BID: E902A297D1544CCF + +DECLARATIONS: + - + type: variable + name: limiter_sleep_threshold + value_type: int64 + default_value: 319999 + evaluate: "(10000000 / FPS_TARGET) - 13001" + - + type: variable + name: limiter_sleep_target + value_type: int64 + default_value: 330000 + evaluate: "(10000000 / FPS_TARGET) - 3000" +MASTER_WRITE: + # FPS lock + ## REF: e8 3f 9c 52 88 00 a0 72 + - + type: asm_a64 + main_offset: 0x2490648 + instructions: [ + [adrp, x8, $limiter_sleep_threshold], + [ldr, x8, [x8, $limiter_sleep_threshold]] + ] + ## REF: 14 22 81 52 b4 00 a0 72 + - + type: asm_a64 + main_offset: 0x2490654 + instructions: [ + [adrp, x20, $limiter_sleep_target], + [ldr, x20, [x20, $limiter_sleep_target]] + ] +ALL_FPS: + # Dynamic Resolution + ## REF: e9 11 e8 f2 20 01 67 9e 00 18 68 1e 08 01 00 6d, look at adrp + ldr x0 above + - + type: evaluate_write + address: [MAIN, 0x8360C68, 0xB8, 0x0] + address_unsafe: true + value_type: double + value: FPS_TARGET + - + type: evaluate_write + address: [MAIN, 0x8360C68, 0xB8, 0x8] + address_unsafe: true + value_type: double + value: FRAMETIME_TARGET + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/0100A18021FCC000/59DE1E422C2B1463.yaml b/SaltySD/plugins/FPSLocker/patches/0100A18021FCC000/59DE1E422C2B1463.yaml new file mode 100644 index 0000000..2524c22 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100A18021FCC000/59DE1E422C2B1463.yaml @@ -0,0 +1,18 @@ +# Deer & Boy 1.4.2 +# BID: 59DE1E422C2B1463 + +ALL_FPS: + # Vsync + # Ref: 01 00 00 00 03 00 00 00 00 00 00 08 + - + type: evaluate_write + address: [MAIN, 0x9ADEAE8] + value_type: int32 + value: VSYNC_TARGET + # fixedDeltaTime + # Fixes an issue with game animation targeting always 25 FPS + - + type: evaluate_write + address: [MAIN, 0x9E03AA8, 0x50] + value_type: uint32 + value: "141120000 / FPS_TARGET" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100A7C01B792000/9E9D887D59F7F7DB.yaml b/SaltySD/plugins/FPSLocker/patches/0100A7C01B792000/9E9D887D59F7F7DB.yaml new file mode 100644 index 0000000..51c5317 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100A7C01B792000/9E9D887D59F7F7DB.yaml @@ -0,0 +1,25 @@ +# Minecraft Dungeons II 1.1.1.0 +# BID: 9E9D887D59F7F7DB + +ALL_FPS: + # r.DynamicRes.FrameTimeBudget + - + type: evaluate_write + address: [MAIN, 0xADD15C8, 0] + value_type: float + value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0xAE22510, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + # r.VSync + - + type: write + address: [MAIN, 0x9DC6310, 0] + value_type: uint32 + value: [0, 0] + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100A9400C9C2000/33463E11899166BB.yaml b/SaltySD/plugins/FPSLocker/patches/0100A9400C9C2000/33463E11899166BB.yaml index e3d39f8..ac3669c 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100A9400C9C2000/33463E11899166BB.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100A9400C9C2000/33463E11899166BB.yaml @@ -2,75 +2,70 @@ # BID: 33463E11899166BB # What is still not adjusted: movement speed in cutscenes, 2D animations speed (it includes UI and 2D effects on 3D objects), none of them uses 1/30 nor 1/60 float +DECLARATIONS: + - + type: variable + name: gameSpeed + value_type: float + default_value: 0.033333333 + evaluate: "1 / FPS_TARGET" + - + type: code + name: animationSpeed + instructions: [ + [movw, r0, $gameSpeed], + [movt, r0, $gameSpeed], + [vldr, s18, [r0]], + [bx, lr] + ] + - + type: code + name: movementSpeed + instructions: [ + [movw, r0, $gameSpeed], + [movt, r0, $gameSpeed], + [vldr, s2, [r0]], + [bx, lr] + ] MASTER_WRITE: # Triple buffer - - type: bytes + type: asm_a32 main_offset: 0x2F3CD8 - value_type: uint32 - value: 0xE3A01003 + instructions: [ + [mov, r1, 3] + ] - - type: bytes + type: asm_a32 main_offset: 0x35C218 - value_type: uint32 - value: 0xE3A00003 + instructions: [ + [mov, r0, 3] + ] - - type: bytes + type: asm_a32 main_offset: 0x35C2C0 - value_type: uint32 - value: 0xE3A02003 + instructions: [ + [mov, r2, 3] + ] - - type: bytes + type: asm_a32 main_offset: 0x35C2D0 - value_type: uint32 - value: 0xE3A02003 - # Code Cave, read speed from MAIN + 0x1B1CF00 + instructions: [ + [mov, r2, 3] + ] # Animation speed # Jump to MAIN + 0x4EFBE0 - - type: bytes + type: asm_a32 main_offset: 0x1CE4B4 - value_type: uint32 - value: 0xEA0C85C9 - - - type: bytes - main_offset: 0x4EFBE0 - value_type: uint32 - value: - - 0xE28F0616 - - 0xE30D1318 - - 0xE0800001 - - 0xE3A01802 - - 0xE0800001 - - 0xED909A00 - - 0xEAF37A2E + instructions: [ + [bl, _animationSpeed()] + ] # Movement speed # Jump to MAIN + 0x4EFBFC - - type: bytes + type: asm_a32 main_offset: 0x20B750 - value_type: uint32 - value: 0xEA0B9129 - - - type: bytes - main_offset: 0x4EFBFC - value_type: uint32 - value: - - 0xE28F0616 - - 0xE30D62FC - - 0xE0800006 - - 0xE3A06802 - - 0xE0800006 - - 0xED901A00 - - 0xEAF46ECE - - - type: bytes - main_offset: 0x1B1CF00 - value_type: float - value: 0.0333333333 -ALL_FPS: - - - type: evaluate_write - address: [MAIN, 0x1B1CF00] - value_type: float - value: 1 / FPS_TARGET + instructions: [ + [bl, _movementSpeed()] + ] diff --git a/SaltySD/plugins/FPSLocker/patches/0100B1C01B104000/AB9EFB08DB5FE4F1.yaml b/SaltySD/plugins/FPSLocker/patches/0100B1C01B104000/AB9EFB08DB5FE4F1.yaml new file mode 100644 index 0000000..9acaa29 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100B1C01B104000/AB9EFB08DB5FE4F1.yaml @@ -0,0 +1,11 @@ +# Animal Shelter Simulator 1.1.0 +# BID: AB9EFB08DB5FE4F1 + +ALL_FPS: + # UnityEngine.Time::fixedDeltaTime + # Required for different refresh rates to not jitter + - + type: evaluate_write + address: [MAIN, 0x48A9F40, 0x48] + value_type: float + value: "1 / FPS_TARGET" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100BFE00E9CA000/C0AD3CC6D7866578.yaml b/SaltySD/plugins/FPSLocker/patches/0100BFE00E9CA000/C0AD3CC6D7866578.yaml new file mode 100644 index 0000000..ceefa4f --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100BFE00E9CA000/C0AD3CC6D7866578.yaml @@ -0,0 +1,25 @@ +# The Witcher 3: Wild Hunt - Complete Edition `US` 4.04d +# BID: C0AD3CC6D7866578 + +ALL_FPS: + # DRGameTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312B4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # DRCinematicTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312E4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # LimitFPS + - + type: evaluate_write + address: [MAIN, 0x411DCFC] + value_type: int32 + value: FPS_LOCK_TARGET + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100C49025D3E000/9636BCD68E2EF2C8.yaml b/SaltySD/plugins/FPSLocker/patches/0100C49025D3E000/9636BCD68E2EF2C8.yaml new file mode 100644 index 0000000..ce46e61 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100C49025D3E000/9636BCD68E2EF2C8.yaml @@ -0,0 +1,58 @@ +# EA SPORTS FC 27 1.8c.fd45 +# BID: 9636BCD68E2EF2C8 + +DECLARATIONS: + - + type: variable + value_type: uint32 + name: hasStarted + default_value: 0 + - + type: variable + value_type: float + name: dr_target + default_value: 33.333333 + evaluate: FRAMETIME_TARGET +MASTER_WRITE: + # Dynamic Resolution regulator + - + type: asm_a64 + main_offset: 0x97F21D8 + instructions: [ + [ldr, s8, [x0, 248]], + [ldr, s9, [x0, 324]], + [ldr, s10, [x0, 388]], + [ldr, s12, [x0, 472]], + [ldrb, w20, [x0, 576]], + [ldr, s0, [x0, 164]], + [adrp, x9, $hasStarted], + [ldr, w9, [x9, $hasStarted]], + [cbz, w9, +16], + [adrp, x9, $dr_target], + [ldr, s8, [x9, $dr_target]], + [fmov, s9, s8], + [nop], + [nop], + [nop], + [nop] + ] +ALL_FPS: + - + type: write + address: [VARIABLE, hasStarted] + value: 1 + # FPS lock + - + type: evaluate_write + address: [MAIN, 0xDA1EE38, 8] + value_type: double + value: FPS_TARGET + # Dynamic resolution + - + type: evaluate_write + address: [MAIN, 0xDE81DA0, 0x14C8, 0xC] + value_type: float + value: [FRAMETIME_TARGET, FRAMETIME_TARGET] + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/0100C49025D3E000/FB81983AA1CC3A2E.yaml b/SaltySD/plugins/FPSLocker/patches/0100C49025D3E000/FB81983AA1CC3A2E.yaml new file mode 100644 index 0000000..6269410 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100C49025D3E000/FB81983AA1CC3A2E.yaml @@ -0,0 +1,13 @@ +# EA SPORTS FC 27 1.8c.cab1 +# BID: FB81983AA1CC3A2E + +ALL_FPS: + # Internal FPS Lock + - + type: evaluate_write + address: [MAIN, 0xDA19E38, 8] + value_type: double + value: FPS_TARGET + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100CB9018F5A000/DED0F920799151BE.yaml b/SaltySD/plugins/FPSLocker/patches/0100CB9018F5A000/DED0F920799151BE.yaml new file mode 100644 index 0000000..4d700b5 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100CB9018F5A000/DED0F920799151BE.yaml @@ -0,0 +1,11 @@ +# Another Code: Recollection 1.0.0 +# BID: DED0F920799151BE + +ALL_FPS: + # UnityEngine.Time::fixedDeltaTime + # Fixes issues with popups animations + - + type: evaluate_write + address: [MAIN, 0x624b160, 0x48] + value_type: float + value: "1 / FPS_TARGET" diff --git a/SaltySD/plugins/FPSLocker/patches/0100CD4012DCA000/33E595CFF4FCB981.yaml b/SaltySD/plugins/FPSLocker/patches/0100CD4012DCA000/33E595CFF4FCB981.yaml new file mode 100644 index 0000000..5a023b4 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100CD4012DCA000/33E595CFF4FCB981.yaml @@ -0,0 +1,60 @@ +# 三國志14 1.1.1 +# BID: 33E595CFF4FCB981 +# Cursor speed is tied to framerate, main menu animations speed is not adjusted properly in range from 35 to 55 FPS + +DECLARATIONS: + # DON'T PUT ANYTHING BETWEEN - START + - + type: variable + name: fps_lock + value_type: uint32 + default_value: 30 + evaluate: FPS_LOCK_TARGET + - + type: variable + name: fps_lock2 + value_type: uint32 + default_value: 60 + evaluate: FPS_LOCK_TARGET + # DON'T PUT ANYTHING BETWEEN - END + - + type: variable + name: game_speed + value_type: float + default_value: 0.0333333333 + evaluate: "1/FPS_TARGET" +MASTER_WRITE: + # Redirect adjusting game speed to FPS Lock, REF: 20 79 68 BC 01 10 2E 1E 00 D8 21 7E, patch ADRP + ADD above it + - + type: asm_a64 + main_offset: 0xBA82E4 + instructions: [ + [adrp, x9, $fps_lock], + [add, x9, x9, $fps_lock] + ] + # Redirect FPS Lock, REF: C8 32 40 B9 E8 C2 00 B9, patch CBNZ + LDR + - + type: asm_a64 + main_offset: 0x896C70 + instructions: [ + [adrp, x8, $fps_lock], + [ldr, w8, [x8, $fps_lock]] + ] + # Redirect game speed, REF: 00 28 21 1E 00 A8 00 BD C0 03 5F D6 + - + type: asm_a64 + main_offset: 0x11A002C + instructions: [ + [adrp, x8, $game_speed], + [ldr, s0, [x0, 0xa8]], + [ldr, s1, [x8, $game_speed]] + ] +ALL_FPS: + - # Adjust min delta for menus, 0 - 30 FPS, 1 - 60 FPS, REF: 20 79 68 BC 01 10 2E 1E 00 D8 21 7E, ADRP + LDR above + type: evaluate_write + address: [MAIN, 0x27C16E0] + value_type: uint32 + value: "FPS_TARGET / 60" + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/0100CD4012DCA001/DA1527A7E3B3DD17.yaml b/SaltySD/plugins/FPSLocker/patches/0100CD4012DCA001/DA1527A7E3B3DD17.yaml new file mode 100644 index 0000000..8fc22fb --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100CD4012DCA001/DA1527A7E3B3DD17.yaml @@ -0,0 +1,60 @@ +# 三國志14 with 威力加強版 1.1.1 +# BID: DA1527A7E3B3DD17 +# Cursor speed is tied to framerate, main menu animations speed is not adjusted properly in range from 35 to 55 FPS + +DECLARATIONS: + # DON'T PUT ANYTHING BETWEEN - START + - + type: variable + name: fps_lock + value_type: uint32 + default_value: 30 + evaluate: FPS_LOCK_TARGET + - + type: variable + name: fps_lock2 + value_type: uint32 + default_value: 60 + evaluate: FPS_LOCK_TARGET + # DON'T PUT ANYTHING BETWEEN - END + - + type: variable + name: game_speed + value_type: float + default_value: 0.0333333333 + evaluate: "1/FPS_TARGET" +MASTER_WRITE: + # Redirect adjusting game speed to FPS Lock, REF: 20 79 68 BC 01 10 2E 1E 00 D8 21 7E, patch ADRP + ADD above it + - + type: asm_a64 + main_offset: 0xB8F568 + instructions: [ + [adrp, x9, $fps_lock], + [add, x9, x9, $fps_lock] + ] + # Redirect FPS Lock, REF: C8 32 40 B9 E8 C2 00 B9, patch CBNZ + LDR + - + type: asm_a64 + main_offset: 0x896DE0 + instructions: [ + [adrp, x8, $fps_lock], + [ldr, w8, [x8, $fps_lock]] + ] + # Redirect game speed, REF: 00 28 21 1E 00 A0 00 BD C0 03 5F D6 + - + type: asm_a64 + main_offset: 0x1116D8C + instructions: [ + [adrp, x8, $game_speed], + [ldr, s0, [x0, 0xa0]], + [ldr, s1, [x8, $game_speed]] + ] +ALL_FPS: + - # Adjust min delta for menus, 0 - 30 FPS, 1 - 60 FPS, REF: 20 79 68 BC 01 10 2E 1E 00 D8 21 7E, ADRP + LDR above + type: evaluate_write + address: [MAIN, 0x2552AD0] + value_type: uint32 + value: "FPS_TARGET / 60" + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/0100CFA00CC74000/679B5FC4F46F5DB7.yaml b/SaltySD/plugins/FPSLocker/patches/0100CFA00CC74000/679B5FC4F46F5DB7.yaml new file mode 100644 index 0000000..b8a33b0 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100CFA00CC74000/679B5FC4F46F5DB7.yaml @@ -0,0 +1,75 @@ +# Blades of Time 1.2.200127 +# BID: 679B5FC4F46F5DB7 + +DECLARATIONS: + - + type: variable + name: act_step + value_type: float + default_value: 0.0333333333 + evaluate: "1 / FPS_TARGET" + - + type: variable + name: act_threshold + value_type: float + default_value: 0.0333333333 + evaluate: "0.95 / FPS_TARGET" + - + type: variable + name: act_catchup + value_type: float + default_value: 0.0666666667 + evaluate: "2 / FPS_TARGET" + - + type: code + name: getFixedActTime + instructions: [ + [ldr, w8, [x20, 0x20]], + [mov, w9, 0x8889], + [movk, w9, 0x3d08, 16], + [cmp, w8, w9], + [b.ne, :keep], + [adrp, x8, $act_step], + [ldr, w8, [x8, $act_step]], + :keep, [ret] + ] +MASTER_WRITE: + # REF: TpsGameScene::actScene() - skip-frame threshold (was 1/30 from 0x13A1E20) + - + type: asm_a64 + main_offset: 0xA5FA0 + instructions: [ + [adrp, x8, $act_threshold], + [ldr, s9, [x8, $act_threshold]] + ] + # REF: catch-up threshold (was 1/15 from 0x13A1E24) + - + type: asm_a64 + main_offset: 0xA5FD0 + instructions: [ + [adrp, x8, $act_catchup] + ] + - + type: asm_a64 + main_offset: 0xA5FD8 + instructions: [ + [ldr, s2, [x8, $act_catchup]] + ] + # REF: accumulator -= step, dt = step (was -1/30 and 0x3D088889) + - + type: asm_a64 + main_offset: 0xA6038 + instructions: [ + [adrp, x8, $act_step], + [ldr, s1, [x8, $act_step]], + [fsub, s0, s0, s1], + [ldr, w21, [x8, $act_step]], + [nop] + ] + # REF: fixed physics act time passed to PhysicsThread::act (scene+0x20, 1/30 when vsync30fps) + - + type: asm_a64 + main_offset: 0xA627C + instructions: [ + [bl, _getFixedActTime()] + ] diff --git a/SaltySD/plugins/FPSLocker/patches/0100D1800D902000/7F8AF4380449F13D.yaml b/SaltySD/plugins/FPSLocker/patches/0100D1800D902000/7F8AF4380449F13D.yaml new file mode 100644 index 0000000..82cfeec --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100D1800D902000/7F8AF4380449F13D.yaml @@ -0,0 +1,10 @@ +# SENRAN KAGURA Peach Ball `US` 1.0.2 +# BID: 7F8AF4380449F13D + +ALL_FPS: + # CRendSpanMgr:[SpanType_30FPS] = 1, CRendSpanMgr:[SpanType_60FPS] = 0 + - + type: write + address: [MAIN, 0x62D8CC] + value_type: int32 + value: 0 diff --git a/SaltySD/plugins/FPSLocker/patches/0100DDD01ACAA000/7AF502E140C13759.yaml b/SaltySD/plugins/FPSLocker/patches/0100DDD01ACAA000/7AF502E140C13759.yaml new file mode 100644 index 0000000..52a6d25 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100DDD01ACAA000/7AF502E140C13759.yaml @@ -0,0 +1,25 @@ +# The Entropy Centre 1.0.1 +# BID: 7AF502E140C13759 + +ALL_FPS: + # r.DynamicRes.FrameTimeBudget + - + type: evaluate_write + address: [MAIN, 0x7052288, 0] + value_type: float + value: ["0.9 * FRAMETIME_TARGET", "0.9 * FRAMETIME_TARGET"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x707FF48, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + # r.VSync + - + type: write + address: [MAIN, 0x6E838E8, 0] + value_type: uint32 + value: [0, 0] + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100DE901D06A000/5A225D8AE0943744.yaml b/SaltySD/plugins/FPSLocker/patches/0100DE901D06A000/5A225D8AE0943744.yaml new file mode 100644 index 0000000..f02fe2d --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100DE901D06A000/5A225D8AE0943744.yaml @@ -0,0 +1,10 @@ +# 영웅전설 여의 궤적 1.0.1 +# BID: 5A225D8AE0943744 + +ALL_FPS: + # REF: 68 EA 50 B9 E0 03 1F 2A 7F B2 00 F9 + - + type: evaluate_write + address: [MAIN, 0x5510B0, 0x34] + value_type: uint32 + value: FPS_LOCK_TARGET diff --git a/SaltySD/plugins/FPSLocker/patches/0100E63013E60000/35DD08251AEDF2D2.yaml b/SaltySD/plugins/FPSLocker/patches/0100E63013E60000/35DD08251AEDF2D2.yaml new file mode 100644 index 0000000..1c01165 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100E63013E60000/35DD08251AEDF2D2.yaml @@ -0,0 +1,25 @@ +# ASTRONEER 1.44.3.0 +# BID: 35DD08251AEDF2D2 + +ALL_FPS: + # r.DynamicRes.FrameTimeBudget + - + type: evaluate_write + address: [MAIN, 0xAE85748, 0] + value_type: float + value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0xAEB35D0, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + # r.VSync + - + type: write + address: [MAIN, 0xA6B6430, 0] + value_type: uint32 + value: [0, 0] + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100E67012924000/C0AD3CC6D7866578.yaml b/SaltySD/plugins/FPSLocker/patches/0100E67012924000/C0AD3CC6D7866578.yaml new file mode 100644 index 0000000..152e97e --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100E67012924000/C0AD3CC6D7866578.yaml @@ -0,0 +1,25 @@ +# The Witcher 3: Wild Hunt 4.04d +# BID: C0AD3CC6D7866578 + +ALL_FPS: + # DRGameTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312B4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # DRCinematicTargetFrameTimeInMs + - + type: evaluate_write + address: [MAIN, 0x41312E4] + value_type: float + value: "0.945 * FRAMETIME_TARGET" + # LimitFPS + - + type: evaluate_write + address: [MAIN, 0x411DCFC] + value_type: int32 + value: FPS_LOCK_TARGET + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100E8B028B54000/7E1DE35BFA52F4A8.yaml b/SaltySD/plugins/FPSLocker/patches/0100E8B028B54000/7E1DE35BFA52F4A8.yaml new file mode 100644 index 0000000..ef80033 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100E8B028B54000/7E1DE35BFA52F4A8.yaml @@ -0,0 +1,20 @@ +# 하늘의 궤적 the 2nd / 空之軌跡 the 2nd 1.0.3a +# BID: 7E1DE35BFA52F4A8 + +ALL_FPS: + # Min Delta + ## REF: C1 03 80 52 28 4D 28 9B, first ADRP + ADD below it + # By default 60 + - + type: evaluate_write + address: [MAIN, 0x878890, 0x2C] + value_type: uint32 + value: FPS_TARGET + # Dynamic Resolution + ## REF: First function in .init_array section, ADRP + ADD + 0x228 (default float: 2.3) + ## Adding there 0.95 by myself because game seems to have issues with reaching 60 FPS without it + - + type: write + address: [MAIN, 0x8783D8] + value_type: float + value: 0.95 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100E95004038000/4F5C96E2D97F45AC.yaml b/SaltySD/plugins/FPSLocker/patches/0100E95004038000/4F5C96E2D97F45AC.yaml index c127df6..fe58dff 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100E95004038000/4F5C96E2D97F45AC.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100E95004038000/4F5C96E2D97F45AC.yaml @@ -81,7 +81,77 @@ DECLARATIONS: :goto3, [mov, w8, 0x21a0], [ret], ] + - + type: code + name: effectSpeed + instructions: [ + [ldr, s0, [x20, 4]], + [fmov, s1, 30.0], + [fmul, s0, s0, s1], + [str, s0, [x27, 856]], + [ret] + ] + - + type: code + name: menuWaitFrames + instructions: [ + [adrp, x0, $game_speed], + [ldr, s0, [x0, $game_speed]], + [fmov, s2, 30.0], + [fmul, s0, s0, s2], + [ucvtf, s1, w8], + [fdiv, s1, s1, s0], + [fmov, s2, 0.5], + [fadd, s1, s1, s2], + [fcvtzu, w8, s1], + [mov, w0, wzr], + [ret] + ] MASTER_WRITE: + # Quest log (quest title, "Received", quest completed): menu sequence "wait" step counts frames, scale wait length by 1 / (frame time * 30) + # GfMenuObjQuestLog sequence wait, start of wait branch (ldr w8,[x19,#392]; str w8,[x19,#948]; orr w8,wzr,#1; mov w0,wzr; strb w8,[x19,#944]) + # Title sequence pushes wait 20 -> fade in -> wait 119 -> fade out + # REF: 68 DA 43 F9 08 05 00 91 68 DA 03 F9 F3 03 00 32, patch at REF+0x248 + - + type: asm_a64 + main_offset: 0x46E1D4 + instructions: [ + [ldr, w8, [x19, 392]], + [bl, _menuWaitFrames()], + [str, w8, [x19, 948]], + [mov, w8, 1], + [strb, w8, [x19, 944]] + ] + # Quest "Received" / quest completed / task sequences (second sequence of GfMenuObjQuestLog, pushes wait 55, 75, 45, 54...) + # Same wait code, other template instance (ldr w8,[x19,#264]; str w8,[x19,#644]; orr w8,wzr,#1; mov w0,wzr; strb w8,[x19,#640]) + # REF: 68 DA 43 F9 08 05 00 91 68 DA 03 F9 F3 03 00 32, patch at REF+0x174 + - + type: asm_a64 + main_offset: 0x46E100 + instructions: [ + [ldr, w8, [x19, 264]], + [bl, _menuWaitFrames()], + [str, w8, [x19, 644]], + [mov, w8, 1], + [strb, w8, [x19, 640]] + ] + # Effects speed (aura, fire etc.): game feeds effect system with layer speed (1.0) per frame, scale it by frame time * 30 + # REF: 88 0A 40 B9 68 5B 03 B9 (ldr w8,[x20,#8]; str w8,[x27,#856]), patch at REF + - + type: asm_a64 + main_offset: 0x17794C + instructions: [ + [bl, _effectSpeed()], + [nop] + ] + # QTE rings: speed factor already includes frame time * 30 and menu multiplies it again by frame time, force factor to 1.0 + # REF: A0 06 40 BD 01 D0 27 1E 08 08 21 1E, patch at REF+8 (fmul s8,s0,s1 -> fmov s8,#1.0) + - + type: asm_a64 + main_offset: 0x1D0C4 + instructions: [ + [fmov, s8, 1.0] + ] # Dynamic speed # Jump before pushing frame - diff --git a/SaltySD/plugins/FPSLocker/patches/0100EBE020BC0000/1EF3CBAA97A8DA7B.yaml b/SaltySD/plugins/FPSLocker/patches/0100EBE020BC0000/1EF3CBAA97A8DA7B.yaml new file mode 100644 index 0000000..5d73eb6 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100EBE020BC0000/1EF3CBAA97A8DA7B.yaml @@ -0,0 +1,37 @@ +# EVERYBODY'S GOLF: Hot Shots EUR 1.1.12 +# BID: 1EF3CBAA97A8DA7B +# Changed frametime target value math formula because default one sucks at 60 FPS target + +DECLARATIONS: + - + type: variable + name: dr_frametime_max + value_type: double + default_value: 40 + evaluate: "0.9 * FRAMETIME_TARGET" + - + type: variable + name: dr_frametime_min + value_type: double + default_value: 33.3333333333 + evaluate: "(0.9 * FRAMETIME_TARGET) - 6" +MASTER_WRITE: + # REF: 0a 00 a4 d2 8a 08 e8 f2 41 01 67 9e + - + type: asm_a64 + main_offset: 0x39A98C8 + instructions: [ + [adrp, x10, $dr_frametime_max], + [ldr, d1, [x10, $dr_frametime_max]], + [nop] + ] + # REF: 00 0d 40 fd 0a 00 b8 d2, result offset + 4 + - + type: asm_a64 + main_offset: 0x39A999C + instructions: [ + [adrp, x10, $dr_frametime_min], + [ldr, d1, [x10, $dr_frametime_min]], + [nop], + [nop] + ] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100F3E024DFC000/F09FD343105D328B.yaml b/SaltySD/plugins/FPSLocker/patches/0100F3E024DFC000/F09FD343105D328B.yaml new file mode 100644 index 0000000..6a9506e --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100F3E024DFC000/F09FD343105D328B.yaml @@ -0,0 +1,17 @@ +# Another Eden Begins 1.1.0 +# BID: F09FD343105D328B + +ALL_FPS: + # Vsync + # Ref: 01 00 00 00 89 88 88 3C + - + type: evaluate_write + address: [MAIN, 0xEA787E0] + value_type: int32 + value: VSYNC_TARGET + # FPS Lock + - + type: evaluate_write + address: [MAIN, 0xEA787E4] + value_type: float + value: "1 / FPS_LOCK_TARGET" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100F8701C182000/D5C2734C0F14D43D.yaml b/SaltySD/plugins/FPSLocker/patches/0100F8701C182000/D5C2734C0F14D43D.yaml new file mode 100644 index 0000000..eeb18d4 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100F8701C182000/D5C2734C0F14D43D.yaml @@ -0,0 +1,12 @@ +# 이스 X -노딕스- 무삭제판 1.0.5 +# BID: D5C2734C0F14D43D +# Credits to StevensND for finding assembly instruction from which I have derived pointer address + +ALL_FPS: + # Used to set min delta timing for various parts of game + DR target + # REF: 00 10 2C 1E 01 E4 00 2F 09 85 9A 52 29 00 A0 72 E1 03 1F 2A first ADRP above it + - + type: evaluate_write + address: [MAIN, 0xBDA228, 0x34] + value_type: uint32 + value: FPS_TARGET \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100FD401AB0E000/C60BBEE6786A16DB.yaml b/SaltySD/plugins/FPSLocker/patches/0100FD401AB0E000/C60BBEE6786A16DB.yaml new file mode 100644 index 0000000..df478ac --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100FD401AB0E000/C60BBEE6786A16DB.yaml @@ -0,0 +1,33 @@ +# 진・여신전생5 Vengeance 1.0.3 +# BID: C60BBEE6786A16DB + +MASTER_WRITE: + # Block from reapplying t.MaxFPS by game, REF: 01 E4 00 2F 00 AC 21 1E 08 00 40 F9 08 75 41 F9, nop BLR X8 after LDR X8, [X8,#0x2E8] + - + type: asm_a64 + main_offset: 0x3780C40 + instructions: [ + [nop] + ] +ALL_FPS: + # r.DynamicRes.FrameTimeBudget + - + type: evaluate_write + address: [MAIN, 0x7AAFBB8, 0] + value_type: float + value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"] + # r.VSync + - + type: write + address: [MAIN, 0x7273AD0, 0] + value_type: uint32 + value: [0, 0] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x7AD5858, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/saltynx_bootstrap.elf b/SaltySD/saltynx_bootstrap.elf index 288a02c..5c76663 100644 Binary files a/SaltySD/saltynx_bootstrap.elf and b/SaltySD/saltynx_bootstrap.elf differ diff --git a/SaltySD/saltynx_bootstrap32.elf b/SaltySD/saltynx_bootstrap32.elf new file mode 100644 index 0000000..30dc3b1 Binary files /dev/null and b/SaltySD/saltynx_bootstrap32.elf differ diff --git a/SaltySD/saltynx_bootstrap32_3k.elf b/SaltySD/saltynx_bootstrap32_3k.elf deleted file mode 100644 index b6673d1..0000000 Binary files a/SaltySD/saltynx_bootstrap32_3k.elf and /dev/null differ diff --git a/SaltySD/saltynx_bootstrap32_5k.elf b/SaltySD/saltynx_bootstrap32_5k.elf deleted file mode 100644 index 69f8d9c..0000000 Binary files a/SaltySD/saltynx_bootstrap32_5k.elf and /dev/null differ diff --git a/SaltySD/saltynx_core.elf b/SaltySD/saltynx_core.elf index 0cfb7ed..6d16777 100644 Binary files a/SaltySD/saltynx_core.elf and b/SaltySD/saltynx_core.elf differ diff --git a/SaltySD/saltynx_core32.elf b/SaltySD/saltynx_core32.elf index 34b8b46..423fb02 100644 Binary files a/SaltySD/saltynx_core32.elf and b/SaltySD/saltynx_core32.elf differ diff --git a/atmosphere/contents/0000000000534C56/exefs.nsp b/atmosphere/contents/0000000000534C56/exefs.nsp index e424120..6992059 100644 Binary files a/atmosphere/contents/0000000000534C56/exefs.nsp and b/atmosphere/contents/0000000000534C56/exefs.nsp differ diff --git a/atmosphere/contents/0000000000534C56/toolbox.json b/atmosphere/contents/0000000000534C56/toolbox.json index a3ec2fd..c5e0329 100644 --- a/atmosphere/contents/0000000000534C56/toolbox.json +++ b/atmosphere/contents/0000000000534C56/toolbox.json @@ -2,5 +2,5 @@ "name": "SaltyNX", "tid": "0000000000534C56", "requires_reboot": true, - "version": "2.0.0" + "version": "2.1.2" } diff --git a/atmosphere/contents/00FF0000636C6BFF/exefs.nsp b/atmosphere/contents/00FF0000636C6BFF/exefs.nsp index a9380fe..ddd1b79 100644 Binary files a/atmosphere/contents/00FF0000636C6BFF/exefs.nsp and b/atmosphere/contents/00FF0000636C6BFF/exefs.nsp differ diff --git a/atmosphere/contents/010000000000bd00/exefs.nsp b/atmosphere/contents/010000000000bd00/exefs.nsp index 9574b7f..9d5380e 100644 Binary files a/atmosphere/contents/010000000000bd00/exefs.nsp and b/atmosphere/contents/010000000000bd00/exefs.nsp differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/064521C83399E09105D9A190688BF8B8C2C7F17C.ips b/atmosphere/exefs_patches/bluetooth_patches/064521C83399E09105D9A190688BF8B8C2C7F17C.ips new file mode 100644 index 0000000..ccf93e9 Binary files /dev/null and b/atmosphere/exefs_patches/bluetooth_patches/064521C83399E09105D9A190688BF8B8C2C7F17C.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/08601CC4C629F981F92CE3A53C2633FB46DDEA00.ips b/atmosphere/exefs_patches/bluetooth_patches/08601CC4C629F981F92CE3A53C2633FB46DDEA00.ips index c5ed1e2..a24a0f5 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/08601CC4C629F981F92CE3A53C2633FB46DDEA00.ips and b/atmosphere/exefs_patches/bluetooth_patches/08601CC4C629F981F92CE3A53C2633FB46DDEA00.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/144B678306269E3D5245497373C09866D2BB8997.ips b/atmosphere/exefs_patches/bluetooth_patches/144B678306269E3D5245497373C09866D2BB8997.ips index 0297612..fcc630d 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/144B678306269E3D5245497373C09866D2BB8997.ips and b/atmosphere/exefs_patches/bluetooth_patches/144B678306269E3D5245497373C09866D2BB8997.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/2C0A323887EF342C448A72DDCC4CD737A298CD46.ips b/atmosphere/exefs_patches/bluetooth_patches/2C0A323887EF342C448A72DDCC4CD737A298CD46.ips index 5bde848..d5e9070 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/2C0A323887EF342C448A72DDCC4CD737A298CD46.ips and b/atmosphere/exefs_patches/bluetooth_patches/2C0A323887EF342C448A72DDCC4CD737A298CD46.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/2CAAD3898B7B2F01DF66480EDD919C6A26735EC9.ips b/atmosphere/exefs_patches/bluetooth_patches/2CAAD3898B7B2F01DF66480EDD919C6A26735EC9.ips index 08a348e..3ac8a84 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/2CAAD3898B7B2F01DF66480EDD919C6A26735EC9.ips and b/atmosphere/exefs_patches/bluetooth_patches/2CAAD3898B7B2F01DF66480EDD919C6A26735EC9.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/3714A43B8F9608D08E15067AB1D9CE8E68FE56BC.ips b/atmosphere/exefs_patches/bluetooth_patches/3714A43B8F9608D08E15067AB1D9CE8E68FE56BC.ips index 7667e27..a748f7c 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/3714A43B8F9608D08E15067AB1D9CE8E68FE56BC.ips and b/atmosphere/exefs_patches/bluetooth_patches/3714A43B8F9608D08E15067AB1D9CE8E68FE56BC.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/532B667232B3992A0A3D007AA85E4944C4138D15.ips b/atmosphere/exefs_patches/bluetooth_patches/532B667232B3992A0A3D007AA85E4944C4138D15.ips index 101989f..9f1fcf9 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/532B667232B3992A0A3D007AA85E4944C4138D15.ips and b/atmosphere/exefs_patches/bluetooth_patches/532B667232B3992A0A3D007AA85E4944C4138D15.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/63C4312A5D74B29DFC3DA25B6E3E4825575D23C9.ips b/atmosphere/exefs_patches/bluetooth_patches/63C4312A5D74B29DFC3DA25B6E3E4825575D23C9.ips index a8746fc..0678a28 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/63C4312A5D74B29DFC3DA25B6E3E4825575D23C9.ips and b/atmosphere/exefs_patches/bluetooth_patches/63C4312A5D74B29DFC3DA25B6E3E4825575D23C9.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/68C915388537833D1AC9F3920708A1A0FF73E35A.ips b/atmosphere/exefs_patches/bluetooth_patches/68C915388537833D1AC9F3920708A1A0FF73E35A.ips index 253fd3a..b0c9a19 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/68C915388537833D1AC9F3920708A1A0FF73E35A.ips and b/atmosphere/exefs_patches/bluetooth_patches/68C915388537833D1AC9F3920708A1A0FF73E35A.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/6B33C2B7C850A47325F775218C40FCEA2F935A65.ips b/atmosphere/exefs_patches/bluetooth_patches/6B33C2B7C850A47325F775218C40FCEA2F935A65.ips index b4fa1bd..2404aa7 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/6B33C2B7C850A47325F775218C40FCEA2F935A65.ips and b/atmosphere/exefs_patches/bluetooth_patches/6B33C2B7C850A47325F775218C40FCEA2F935A65.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/6FCF8BF53C10AA346555D74EC602FE53BF3BD88E.ips b/atmosphere/exefs_patches/bluetooth_patches/6FCF8BF53C10AA346555D74EC602FE53BF3BD88E.ips index 652bbd5..6b97ceb 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/6FCF8BF53C10AA346555D74EC602FE53BF3BD88E.ips and b/atmosphere/exefs_patches/bluetooth_patches/6FCF8BF53C10AA346555D74EC602FE53BF3BD88E.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/8C2A437B9890F6DA0FC3B17442B10E7C6FCDA6AA.ips b/atmosphere/exefs_patches/bluetooth_patches/8C2A437B9890F6DA0FC3B17442B10E7C6FCDA6AA.ips index 72a3a17..b87eb06 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/8C2A437B9890F6DA0FC3B17442B10E7C6FCDA6AA.ips and b/atmosphere/exefs_patches/bluetooth_patches/8C2A437B9890F6DA0FC3B17442B10E7C6FCDA6AA.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/935E9D4099CE74FC162915E7CA4952E64FAD6671.ips b/atmosphere/exefs_patches/bluetooth_patches/935E9D4099CE74FC162915E7CA4952E64FAD6671.ips index 6e5ffe1..9f1fcf9 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/935E9D4099CE74FC162915E7CA4952E64FAD6671.ips and b/atmosphere/exefs_patches/bluetooth_patches/935E9D4099CE74FC162915E7CA4952E64FAD6671.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/9480B34033289645E7924E99F467CCB9B4632A5D.ips b/atmosphere/exefs_patches/bluetooth_patches/9480B34033289645E7924E99F467CCB9B4632A5D.ips index 5cb4f47..9bcfc2b 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/9480B34033289645E7924E99F467CCB9B4632A5D.ips and b/atmosphere/exefs_patches/bluetooth_patches/9480B34033289645E7924E99F467CCB9B4632A5D.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/9E95C91568327AD850AC0C2246F1078DE72B28F9.ips b/atmosphere/exefs_patches/bluetooth_patches/9E95C91568327AD850AC0C2246F1078DE72B28F9.ips index 26a7203..9111ffd 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/9E95C91568327AD850AC0C2246F1078DE72B28F9.ips and b/atmosphere/exefs_patches/bluetooth_patches/9E95C91568327AD850AC0C2246F1078DE72B28F9.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/A5E6C2D20334CC787617A15BFB9F53F2DABA3E41.ips b/atmosphere/exefs_patches/bluetooth_patches/A5E6C2D20334CC787617A15BFB9F53F2DABA3E41.ips index b1d144a..40bd254 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/A5E6C2D20334CC787617A15BFB9F53F2DABA3E41.ips and b/atmosphere/exefs_patches/bluetooth_patches/A5E6C2D20334CC787617A15BFB9F53F2DABA3E41.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/B58A6445D7C724D6285EB3922FE6BBAACDA33EB3.ips b/atmosphere/exefs_patches/bluetooth_patches/B58A6445D7C724D6285EB3922FE6BBAACDA33EB3.ips index c75a483..0c3ebd7 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/B58A6445D7C724D6285EB3922FE6BBAACDA33EB3.ips and b/atmosphere/exefs_patches/bluetooth_patches/B58A6445D7C724D6285EB3922FE6BBAACDA33EB3.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/BF43446888D1182FF37420B6762EB1136DE45947.ips b/atmosphere/exefs_patches/bluetooth_patches/BF43446888D1182FF37420B6762EB1136DE45947.ips index b48c828..049e640 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/BF43446888D1182FF37420B6762EB1136DE45947.ips and b/atmosphere/exefs_patches/bluetooth_patches/BF43446888D1182FF37420B6762EB1136DE45947.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/C91C6FC8AA4C39222D6CCFE0FFF468543105E59B.ips b/atmosphere/exefs_patches/bluetooth_patches/C91C6FC8AA4C39222D6CCFE0FFF468543105E59B.ips index 3cf04ee..4c2d175 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/C91C6FC8AA4C39222D6CCFE0FFF468543105E59B.ips and b/atmosphere/exefs_patches/bluetooth_patches/C91C6FC8AA4C39222D6CCFE0FFF468543105E59B.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/CCE16D29FE9BCB44AC40BB1703D586FE467496CE.ips b/atmosphere/exefs_patches/bluetooth_patches/CCE16D29FE9BCB44AC40BB1703D586FE467496CE.ips index b54ae24..c4a003f 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/CCE16D29FE9BCB44AC40BB1703D586FE467496CE.ips and b/atmosphere/exefs_patches/bluetooth_patches/CCE16D29FE9BCB44AC40BB1703D586FE467496CE.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/CF0C34FC10F75EB2DAFB302FAA3E0C188621B2AD.ips b/atmosphere/exefs_patches/bluetooth_patches/CF0C34FC10F75EB2DAFB302FAA3E0C188621B2AD.ips index 653a224..18075b1 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/CF0C34FC10F75EB2DAFB302FAA3E0C188621B2AD.ips and b/atmosphere/exefs_patches/bluetooth_patches/CF0C34FC10F75EB2DAFB302FAA3E0C188621B2AD.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/DBCA0074043CA7E74E9C58A84ACD7A3058968528.ips b/atmosphere/exefs_patches/bluetooth_patches/DBCA0074043CA7E74E9C58A84ACD7A3058968528.ips index b076580..7bac062 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/DBCA0074043CA7E74E9C58A84ACD7A3058968528.ips and b/atmosphere/exefs_patches/bluetooth_patches/DBCA0074043CA7E74E9C58A84ACD7A3058968528.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/E9A6DBF13FE4A6833606A834C7BA1B44F4DDD60F.ips b/atmosphere/exefs_patches/bluetooth_patches/E9A6DBF13FE4A6833606A834C7BA1B44F4DDD60F.ips index 75e6f97..41c152c 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/E9A6DBF13FE4A6833606A834C7BA1B44F4DDD60F.ips and b/atmosphere/exefs_patches/bluetooth_patches/E9A6DBF13FE4A6833606A834C7BA1B44F4DDD60F.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/F013FF4FC88A8376A6F3C401485C0718E1B5E148.ips b/atmosphere/exefs_patches/bluetooth_patches/F013FF4FC88A8376A6F3C401485C0718E1B5E148.ips index 98d7049..61aae58 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/F013FF4FC88A8376A6F3C401485C0718E1B5E148.ips and b/atmosphere/exefs_patches/bluetooth_patches/F013FF4FC88A8376A6F3C401485C0718E1B5E148.ips differ diff --git a/atmosphere/exefs_patches/bluetooth_patches/FEE47E024FC9C62838FF1A476DE243DCE673DA7E.ips b/atmosphere/exefs_patches/bluetooth_patches/FEE47E024FC9C62838FF1A476DE243DCE673DA7E.ips index 308ec99..7c04f59 100644 Binary files a/atmosphere/exefs_patches/bluetooth_patches/FEE47E024FC9C62838FF1A476DE243DCE673DA7E.ips and b/atmosphere/exefs_patches/bluetooth_patches/FEE47E024FC9C62838FF1A476DE243DCE673DA7E.ips differ diff --git a/atmosphere/exefs_patches/btm_patches/72FC67F6B4096661FDF4773527E84967B7D8A460.ips b/atmosphere/exefs_patches/btm_patches/72FC67F6B4096661FDF4773527E84967B7D8A460.ips new file mode 100644 index 0000000..170754e Binary files /dev/null and b/atmosphere/exefs_patches/btm_patches/72FC67F6B4096661FDF4773527E84967B7D8A460.ips differ diff --git a/atmosphere/exefs_patches/disable_remap_dialog/26CC3BC5AC534AE990B410769736EE81B919C999.ips b/atmosphere/exefs_patches/disable_remap_dialog/26CC3BC5AC534AE990B410769736EE81B919C999.ips new file mode 100644 index 0000000..22e1b1f Binary files /dev/null and b/atmosphere/exefs_patches/disable_remap_dialog/26CC3BC5AC534AE990B410769736EE81B919C999.ips differ diff --git a/atmosphere/exefs_patches/disable_remap_dialog/4FB7D6F3B4BD12BD3B1AD37C75C3C2F89173171F.ips b/atmosphere/exefs_patches/disable_remap_dialog/4FB7D6F3B4BD12BD3B1AD37C75C3C2F89173171F.ips new file mode 100644 index 0000000..9af7df1 Binary files /dev/null and b/atmosphere/exefs_patches/disable_remap_dialog/4FB7D6F3B4BD12BD3B1AD37C75C3C2F89173171F.ips differ diff --git a/atmosphere/exefs_patches/hid_patches/12DB6C7DF6BF40BC02695C611EC46F458504A5AD.ips b/atmosphere/exefs_patches/hid_patches/12DB6C7DF6BF40BC02695C611EC46F458504A5AD.ips new file mode 100644 index 0000000..e70e8aa Binary files /dev/null and b/atmosphere/exefs_patches/hid_patches/12DB6C7DF6BF40BC02695C611EC46F458504A5AD.ips differ diff --git a/atmosphere/exefs_patches/hid_patches/403978CD2BC64E4ACB3BF1A5E556F582BFC3498B.ips b/atmosphere/exefs_patches/hid_patches/403978CD2BC64E4ACB3BF1A5E556F582BFC3498B.ips new file mode 100644 index 0000000..e70e8aa Binary files /dev/null and b/atmosphere/exefs_patches/hid_patches/403978CD2BC64E4ACB3BF1A5E556F582BFC3498B.ips differ diff --git a/atmosphere/exefs_patches/hid_patches/8BDBD223E61D122E98CDBFC77C231BBB5CBE56E3.ips b/atmosphere/exefs_patches/hid_patches/8BDBD223E61D122E98CDBFC77C231BBB5CBE56E3.ips new file mode 100644 index 0000000..e70e8aa Binary files /dev/null and b/atmosphere/exefs_patches/hid_patches/8BDBD223E61D122E98CDBFC77C231BBB5CBE56E3.ips differ diff --git a/atmosphere/exefs_patches/hid_patches/C9636704F7726BF77CEBBC53FFB14A80D8F789A1.ips b/atmosphere/exefs_patches/hid_patches/C9636704F7726BF77CEBBC53FFB14A80D8F789A1.ips new file mode 100644 index 0000000..ea8a391 Binary files /dev/null and b/atmosphere/exefs_patches/hid_patches/C9636704F7726BF77CEBBC53FFB14A80D8F789A1.ips differ diff --git a/atmosphere/exosphere.bin b/atmosphere/exosphere.bin index 380629a..5de2354 100644 Binary files a/atmosphere/exosphere.bin and b/atmosphere/exosphere.bin differ diff --git a/atmosphere/kips/hoc.kip b/atmosphere/kips/hoc.kip index d0d796a..d0bf40a 100644 Binary files a/atmosphere/kips/hoc.kip and b/atmosphere/kips/hoc.kip differ diff --git a/atmosphere/package3 b/atmosphere/package3 index df42f8d..d8cb61a 100644 Binary files a/atmosphere/package3 and b/atmosphere/package3 differ diff --git a/atmosphere/stratosphere.romfs b/atmosphere/stratosphere.romfs index 3e3b983..afa611c 100644 Binary files a/atmosphere/stratosphere.romfs and b/atmosphere/stratosphere.romfs differ diff --git a/bootloader/sys/l4t/sc7exit_b01.bin b/bootloader/sys/l4t/sc7exit_b01.bin index 17cd3c5..d9253a6 100644 Binary files a/bootloader/sys/l4t/sc7exit_b01.bin and b/bootloader/sys/l4t/sc7exit_b01.bin differ diff --git a/config/MissionControl/missioncontrol.ini.template b/config/MissionControl/missioncontrol.ini.template index 2ae9a05..f3dace7 100644 --- a/config/MissionControl/missioncontrol.ini.template +++ b/config/MissionControl/missioncontrol.ini.template @@ -28,3 +28,5 @@ ;dualsense_enable_player_leds=false ; Set Dualsense vibration intensity, 12.5% per increment. Valid range [1-8] where 1=12.5%, 8=100% [default 4(50%)] ;dualsense_vibration_intensity=4 +; Use adaptive trigger feature to limit the travel distance of the analog triggers as a percentage of the maximum travel. Valid range [0-100] percent, where 0=disabled. [default 0] +; dualsense_adaptive_trigger_travel=0 diff --git a/switch/.overlays/FPSLocker.ovl b/switch/.overlays/FPSLocker.ovl index 81b6c84..1b31b92 100644 Binary files a/switch/.overlays/FPSLocker.ovl and b/switch/.overlays/FPSLocker.ovl differ diff --git a/switch/.overlays/horizon-oc-overlay.ovl b/switch/.overlays/horizon-oc-overlay.ovl index a077008..480ee0e 100644 Binary files a/switch/.overlays/horizon-oc-overlay.ovl and b/switch/.overlays/horizon-oc-overlay.ovl differ