diff --git a/README.md b/README.md index baf7266..282f34f 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ ### Ultra - это функциональная кастомная прошивка для Nintendo Switch, с упором в разгон и улучшенный пользовательский опыт. -### [Ultra 2.5|R2](https://github.com/Ultra-NX/UltraNX/releases) Поддерживает все HOS, включая 20.3.0 +### [Ultra 2.6|R1](https://github.com/Ultra-NX/UltraNX/releases) Поддерживает все HOS, включая 20.4.0 @@ -60,8 +60,8 @@ - **`Ultra OC (sys-clk)`**, мод [sys-clk](https://github.com/ppkantorski/sys-clk) - Оверлей для управления модулем sys-clk. Немного изменен мной, но без копания в исходниках (Так как они закрыты). - [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay), форк [Status Monitor](https://github.com/hanai3Bi/Status-Monitor-Overlay) - Оверлей позволяющий следить за параметрами консоли в реальном времени. Может выступать в качестве счетчика FPS. Сменить пресет Micro-оверлея можно в Tuner. - [FPSLocker](https://github.com/masagrator/FPSLocker) - Оверлей, позволяющий разблокировать 60 FPS в играх. - - [EdiZon](https://github.com/proferabg/EdiZon-Overlay) - Оверлей для использования читов, включая графические. - - [ReverseNX-RT](https://github.com/ppkantorski/ReverseNX-RT) - Оверлей для переключения запущенной игры в портатив\док, меняет настройки графики\разрешения в играх. + - [EdiZon](https://github.com/ppkantorski/EdiZon-Overlay) - Оверлей для использования читов, включая графические. + - [ReverseNX-RT](https://github.com/masagrator/ReverseNX-RT) - Оверлей для переключения запущенной игры в портатив\док, меняет настройки графики\разрешения в играх. - [Sysmodules](https://github.com/ppkantorski/ovl-sysmodules) - Оверлей для включения\отключения установленных системных модулей. diff --git a/README_ENG.md b/README_ENG.md index a7e273b..0bc8fd1 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. -### [Ultra 2.5|R2](https://github.com/Ultra-NX/UltraNX/releases) Supports all HOS, including 20.3.0 +### [Ultra 2.6|R1](https://github.com/Ultra-NX/UltraNX/releases) Supports all HOS, including 20.4.0 @@ -56,8 +56,8 @@ - **`Ultra OC (sys-clk)`**, a mod of [sys-clk](https://github.com/ppkantorski/sys-clk) - Overlay for controlling sys-clk module. Slightly modified by me, but without digging into sources (Since they're closed). - [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay), a fork of [Status Monitor](https://github.com/masagrator/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/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. + - [EdiZon](https://github.com/ppkantorski/EdiZon-Overlay) - An overlay for using cheats. + - [ReverseNX-RT](https://github.com/masagrator/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/exceptions.txt b/SaltySD/exceptions.txt index 8ea870c..a415f7b 100644 --- a/SaltySD/exceptions.txt +++ b/SaltySD/exceptions.txt @@ -58,3 +58,7 @@ X0100423009358000 ;Splatoon 3 ;10.0.0 upwards crashes after online match X0100C2500FC20000 + +;Hollow Knight: Silksong +;1.0.28324 crash on boot +X010013C00E930000 diff --git a/SaltySD/plugins/FPSLocker/patches/0100011005D92000/A3A998AF3252D110.yaml b/SaltySD/plugins/FPSLocker/patches/0100011005D92000/A3A998AF3252D110.yaml index fbe6916..fbe3e82 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100011005D92000/A3A998AF3252D110.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100011005D92000/A3A998AF3252D110.yaml @@ -6,12 +6,12 @@ unsafeCheck: true MASTER_WRITE: # Remove double buffer - - type: bytes + type: asm_a64 main_offset: 0x6440 - value_type: uint32 - value: - - 0x52800062 - - 0x9B022501 + instructions: [ + [mov, w2, 3], + [madd, x1, x8, x2, x9] + ] - type: bytes main_offset: 0xC5A6D8 @@ -23,62 +23,65 @@ MASTER_WRITE: value_type: uint32 value: 0x188CC50 - - type: bytes + type: asm_a64 main_offset: 0xC56550 - value_type: uint32 - value: - - 0xF9400B40 - - 0xB40000C0 - - 0xD0005808 - - 0xF9404908 - - 0xF9400108 - - 0xD63F0100 - - 0x14000004 - - 0x321A07E0 - - 0x97EB7BC4 - - 0xF9000B40 - - 0xF9400376 - - 0xB000581B - - 0xF9400335 - - 0xF9479F7B - - 0xD0005817 - - 0xF9400368 - - 0xF9453AF7 - - 0xAA1703E0 - - 0xD63F0100 - - 0xAA0003E2 - - 0xAA1503E0 - - 0xAA1603E1 - - 0x97CEAD3A - - 0xAA0003F5 - - 0xF9400320 - - 0x97CEAD47 - - 0xF9400388 - - 0xAA0003E1 - - 0xAA1703E0 - - 0xAA1503E2 - - 0xD63F0100 - - 0xF9400B40 - - 0xF9400308 - - 0xAA1703E1 - - 0xD63F0100 - - 0xD0005816 - - 0x17CEBE43 + instructions: [ + [ldr, x0, [x26, 0x10]], + [cbz, x0, +24], + [adrp, x8, 0x1758000], + [ldr, x8, [x8, 0x90]], + [ldr, x8, [x8]], + [blr, x8], + [b, +16], + [mov, w0, 0xc0], + [bl, 0x735480], + [str, x0, [x26, 0x10]], + [ldr, x22, [x27]], + [adrp, x27, 0x1757000], + [ldr, x21, [x25]], + [ldr, x27, [x27, 0xf38]], + [adrp, x23, 0x1758000], + [ldr, x8, [x27]], + [ldr, x23, [x23, 0xa70]], + [mov, x0, x23], + [blr, x8], + [mov, x2, x0], + [mov, x0, x21], + [mov, x1, x22], + [bl, 0x1a90], + [mov, x21, x0], + [ldr, x0, [x25]], + [bl, 0x1ad0], + [ldr, x8, [x28]], + [mov, x1, x0], + [mov, x0, x23], + [mov, x2, x21], + [blr, x8], + [ldr, x0, [x26, 0x10]], + [ldr, x8, [x24]], + [mov, x1, x23], + [blr, x8], + [adrp, x22, 0x1758000], + [b, 0x5eec] + ] - - type: bytes + type: asm_a64 main_offset: 0x5EE8 - value_type: uint32 - value: 0x1431419A + instructions: [ + [b, 0xc56550] + ] - - type: bytes + type: asm_a64 main_offset: 0x5FC0 - value_type: uint32 - value: 0x52800061 + instructions: [ + [mov, w1, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0x5F8C - value_type: uint32 - value: 0xD2A032A2 + instructions: [ + [mov, x2, 0x1950000] + ] ALL_FPS: # dummy - diff --git a/SaltySD/plugins/FPSLocker/patches/010008301AA96000/88CC45A195E0BDA8.yaml b/SaltySD/plugins/FPSLocker/patches/010008301AA96000/88CC45A195E0BDA8.yaml index ddf81ef..ffdae14 100644 --- a/SaltySD/plugins/FPSLocker/patches/010008301AA96000/88CC45A195E0BDA8.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010008301AA96000/88CC45A195E0BDA8.yaml @@ -14,13 +14,13 @@ MASTER_WRITE: # Redirect Dynamic Resolution target reading to MAIN + 0x30C3F00 # REF: 28 11 91 52 08 A1 A7 72 03 01 27 1E - - type: bytes + type: asm_a64 main_offset: 0x147BE04 - value_type: uint32 - value: - - 0x9000E248 # ADRP X8, 0x30C3000 - - 0xBD4F0103 # LDR S3, [X8, 0xF00] - - 0xD503201F # NOP + instructions: [ + [adrp, x8, 0x30c3000], + [ldr, s3, [x8, 0xf00]], + [nop] + ] ## Default values - type: bytes @@ -33,4 +33,4 @@ ALL_FPS: type: evaluate_write address: [MAIN, 0x30C3F00] value_type: float - value: "0.8 / FPS_TARGET" \ No newline at end of file + value: "0.8 / FPS_TARGET" diff --git a/SaltySD/plugins/FPSLocker/patches/0100111004460000/6D9EA94F8AAC00A8.yaml b/SaltySD/plugins/FPSLocker/patches/0100111004460000/6D9EA94F8AAC00A8.yaml index c44c840..4ee2837 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100111004460000/6D9EA94F8AAC00A8.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100111004460000/6D9EA94F8AAC00A8.yaml @@ -7,16 +7,18 @@ unsafeCheck: true MASTER_WRITE: # Remove double buffer - - type: bytes + type: asm_a64 main_offset: 0xAD40FC - value_type: uint32 - value: 0x52800068 + instructions: [ + [mov, w8, 3] + ] # Block switching back to 30 FPS mode on loading screens - - type: bytes + type: asm_a64 main_offset: 0x6173B0 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] ALL_FPS: # Switch to 60 FPS Mode - @@ -34,4 +36,4 @@ ALL_FPS: type: evaluate_write address: [MAIN, 0x1C38C28, 0x14C] value_type: float - value: FPS_TARGET \ No newline at end of file + value: FPS_TARGET diff --git a/SaltySD/plugins/FPSLocker/patches/01001270012B6000/6D9EA94F8AAC00A8.yaml b/SaltySD/plugins/FPSLocker/patches/01001270012B6000/6D9EA94F8AAC00A8.yaml index c44c840..4ee2837 100644 --- a/SaltySD/plugins/FPSLocker/patches/01001270012B6000/6D9EA94F8AAC00A8.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01001270012B6000/6D9EA94F8AAC00A8.yaml @@ -7,16 +7,18 @@ unsafeCheck: true MASTER_WRITE: # Remove double buffer - - type: bytes + type: asm_a64 main_offset: 0xAD40FC - value_type: uint32 - value: 0x52800068 + instructions: [ + [mov, w8, 3] + ] # Block switching back to 30 FPS mode on loading screens - - type: bytes + type: asm_a64 main_offset: 0x6173B0 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] ALL_FPS: # Switch to 60 FPS Mode - @@ -34,4 +36,4 @@ ALL_FPS: type: evaluate_write address: [MAIN, 0x1C38C28, 0x14C] value_type: float - value: FPS_TARGET \ No newline at end of file + value: FPS_TARGET diff --git a/SaltySD/plugins/FPSLocker/patches/01001A700C832000/97FC79E063E26C9B.yaml b/SaltySD/plugins/FPSLocker/patches/01001A700C832000/97FC79E063E26C9B.yaml index c8181f7..bfc8bf5 100644 --- a/SaltySD/plugins/FPSLocker/patches/01001A700C832000/97FC79E063E26C9B.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01001A700C832000/97FC79E063E26C9B.yaml @@ -6,10 +6,11 @@ unsafeCheck: true MASTER_WRITE: # Remove double buffer - - type: bytes + type: asm_a64 main_offset: 0x6B41E4 - value_type: uint32 - value: 0xB20007E8 + instructions: [ + [mov, x8, 0x300000003] + ] ALL_FPS: # DUMMY - @@ -17,3 +18,4 @@ ALL_FPS: address: [MAIN, 0x4740500] value_type: uint8 value: 0 + diff --git a/SaltySD/plugins/FPSLocker/patches/01001C700873E000/C0F144F5139F542E.yaml b/SaltySD/plugins/FPSLocker/patches/01001C700873E000/C0F144F5139F542E.yaml index c93f596..1d98122 100644 --- a/SaltySD/plugins/FPSLocker/patches/01001C700873E000/C0F144F5139F542E.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01001C700873E000/C0F144F5139F542E.yaml @@ -6,10 +6,11 @@ unsafeCheck: true MASTER_WRITE: # Remove double buffer - - type: bytes + type: asm_a64 main_offset: 0xEA22EC - value_type: uint32 - value: 0xB20007E8 + instructions: [ + [mov, x8, 0x300000003] + ] ALL_FPS: # DUMMY - diff --git a/SaltySD/plugins/FPSLocker/patches/010020F014DBE000/2B37ED2A971948F3.yaml b/SaltySD/plugins/FPSLocker/patches/010020F014DBE000/2B37ED2A971948F3.yaml index 23e0c5d..d7ae55d 100644 --- a/SaltySD/plugins/FPSLocker/patches/010020F014DBE000/2B37ED2A971948F3.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010020F014DBE000/2B37ED2A971948F3.yaml @@ -7,44 +7,44 @@ MASTER_WRITE: # Redirect Dynamic Resolution timings to MAIN + 0x3189F00 # 38.0 - - type: bytes + type: asm_a64 main_offset: 0xFFEAFC - value_type: uint32 - value: - - 0xF0010C4A - - 0xBD4F0141 + instructions: [ + [adrp, x10, 0x3189000], + [ldr, s1, [x10, 0xf00]] + ] # 22.0 - - type: bytes + type: asm_a64 main_offset: 0xFFEB0C - value_type: uint32 - value: - - 0xBD4F0541 + instructions: [ + [ldr, s1, [x10, 0xf04]] + ] # 43.5 - - type: bytes + type: asm_a64 main_offset: 0xFFEAD4 - value_type: uint32 - value: - - 0xF0010C4A - - 0xBD4F0941 + instructions: [ + [adrp, x10, 0x3189000], + [ldr, s1, [x10, 0xf08]] + ] # 58.0 - - type: bytes + type: asm_a64 main_offset: 0xFFEAE4 - value_type: uint32 - value: - - 0xF0010C4A - - 0xBD4F0D41 + instructions: [ + [adrp, x10, 0x3189000], + [ldr, s1, [x10, 0xf0c]] + ] # 47.0 | 34.0 - - type: bytes + type: asm_a64 main_offset: 0xFFEB20 - value_type: uint32 - value: - - 0xF0010C4B - - 0xBD4F1161 - - 0xB94F156C + instructions: [ + [adrp, x11, 0x3189000], + [ldr, s1, [x11, 0xf10]], + [ldr, w12, [x11, 0xf14]] + ] # Default values: - type: bytes @@ -65,3 +65,4 @@ ALL_FPS: address: [MAIN, 0x3189F00] value_type: float value: ["(38.0 / (1000/30)) * FRAMETIME_TARGET", "(22.0 / (1000/30)) * FRAMETIME_TARGET", "(43.5 / (1000/30)) * FRAMETIME_TARGET", "(58.0 / (1000/30)) * FRAMETIME_TARGET", "(47.0 / (1000/30)) * FRAMETIME_TARGET", "(34.0 / (1000/30)) * FRAMETIME_TARGET"] + diff --git a/SaltySD/plugins/FPSLocker/patches/010021601C496000/7A450848CFDEC18E.yaml b/SaltySD/plugins/FPSLocker/patches/010021601C496000/7A450848CFDEC18E.yaml index 319d9da..51a151c 100644 --- a/SaltySD/plugins/FPSLocker/patches/010021601C496000/7A450848CFDEC18E.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010021601C496000/7A450848CFDEC18E.yaml @@ -1,4 +1,4 @@ -# Kingdom Come: Deliverance - Royal Edition JP 1.9.6H +# Kingdom Come: Deliverance - Royal Edition 1.9.6H # BID: 7A450848CFDEC18E # Some prerendered cutscenes are still pushed at 30 FPS @@ -7,22 +7,24 @@ unsafeCheck: true MASTER_WRITE: # Block updating DR timings, REF: 00 01 27 1E 48 40 A8 52 - - type: bytes + type: asm_a64 main_offset: 0x1CA806C - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x1CA8074 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x1CA8094 - value_type: uint32 - value: - - 0xD503201F - - 0xD503201F + instructions: [ + [nop], + [nop] + ] # Write default DR timings - type: bytes @@ -51,3 +53,4 @@ ALL_FPS: - type: block what: timing + diff --git a/SaltySD/plugins/FPSLocker/patches/010021801DD26000/B2D4462B71536EC6.yaml b/SaltySD/plugins/FPSLocker/patches/010021801DD26000/B2D4462B71536EC6.yaml index 91e03b7..34b4bf3 100644 --- a/SaltySD/plugins/FPSLocker/patches/010021801DD26000/B2D4462B71536EC6.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010021801DD26000/B2D4462B71536EC6.yaml @@ -1,4 +1,4 @@ -# Momotaro Dentetsu: Showa, Heisei, Reiwa mo Teiban! Asia Edition 1.0.1 +# Momotaro Dentetsu: Showa, Heisei, Reiwa mo Teiban! Asia Edition 1.0.1 # BID: B2D4462B71536EC6 unsafeCheck: true @@ -6,15 +6,17 @@ unsafeCheck: true MASTER_WRITE: # Remove double buffer - - type: bytes + type: asm_a64 main_offset: 0x1B630 - value_type: uint32 - value: 0x52800061 + instructions: [ + [mov, w1, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0x5774C - value_type: uint32 - value: 0x52800061 + instructions: [ + [mov, w1, 3] + ] ALL_FPS: # REF: 20 59 60 BC # Internal FPS Lock @@ -48,4 +50,5 @@ ALL_FPS: type: evaluate_write address: [MAIN, 0x10D8028] value_type: uint32 - value: "VSYNC_TARGET - 1" \ No newline at end of file + + value: "VSYNC_TARGET - 1" diff --git a/SaltySD/plugins/FPSLocker/patches/010027400CDC6000/4979B200D53BB282.yaml b/SaltySD/plugins/FPSLocker/patches/010027400CDC6000/4979B200D53BB282.yaml index efd6cd8..3ed3361 100644 --- a/SaltySD/plugins/FPSLocker/patches/010027400CDC6000/4979B200D53BB282.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010027400CDC6000/4979B200D53BB282.yaml @@ -8,12 +8,12 @@ unsafeCheck: true MASTER_WRITE: # Change location of GPU frametime double divider to MAIN+0x32C6D00 - - type: bytes + type: asm_a64 main_offset: 0x921768 - value_type: uint32 - value: - - 0xB0014D28 - - 0xFD468101 + instructions: [ + [adrp, x8, 0x32c6000], + [ldr, d1, [x8, 0xd00]] + ] # Default value - type: bytes @@ -27,3 +27,4 @@ ALL_FPS: address: [MAIN, 0x32C6D00] value_type: double value: "(30 / FPS_TARGET) * 1000000" + diff --git a/SaltySD/plugins/FPSLocker/patches/0100276019E96000/EC983B9153629AC8.yaml b/SaltySD/plugins/FPSLocker/patches/0100276019E96000/EC983B9153629AC8.yaml new file mode 100644 index 0000000..dadf464 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100276019E96000/EC983B9153629AC8.yaml @@ -0,0 +1,27 @@ +# 창세기전 ~회색의 잔영~ / The War of Genesis: Remnants of Gray 1.1.0 +# BID: EC983B9153629AC8 + +unsafeCheck: true + +ALL_FPS: + # r.DynamicRes.FrameTimeBudget + - + type: evaluate_write + address: [MAIN, 0x771FD78, 0] + value_type: float + value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x774DA38, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + # r.VSync + - + type: write + address: [MAIN, 0x6F518D8, 0] + value_type: uint32 + value: [0, 0] + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/010029B0118E8000/799D1061182C1302.yaml b/SaltySD/plugins/FPSLocker/patches/010029B0118E8000/799D1061182C1302.yaml index c9e1ac7..76b77ca 100644 --- a/SaltySD/plugins/FPSLocker/patches/010029B0118E8000/799D1061182C1302.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010029B0118E8000/799D1061182C1302.yaml @@ -7,10 +7,11 @@ unsafeCheck: true MASTER_WRITE: # Remove FPS Lock - - type: bytes + type: asm_a64 main_offset: 0x4835A4 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] ALL_FPS: # Switch game to 60 FPS mode - @@ -41,3 +42,4 @@ ALL_FPS: address: [MAIN, 0xEFFC60, 0x50] value_type: float value: "1 / FPS_TARGET" + diff --git a/SaltySD/plugins/FPSLocker/patches/01002C101C1AA000/471546458FD9E43D.yaml b/SaltySD/plugins/FPSLocker/patches/01002C101C1AA000/471546458FD9E43D.yaml index 87c64b9..946cd7f 100644 --- a/SaltySD/plugins/FPSLocker/patches/01002C101C1AA000/471546458FD9E43D.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01002C101C1AA000/471546458FD9E43D.yaml @@ -7,12 +7,12 @@ unsafeCheck: true MASTER_WRITE: # Redirect DR frametime target to MAIN+0x36D4F00 - - type: bytes + type: asm_a64 main_offset: 0x17358B4 - value_type: uint32 - value: - - 0xF000FCED # adrp x13, #0x36D4000 - - 0xBD4F01A2 # ldr s2, [x13, #0xf00] + instructions: [ + [adrp, x13, 0x36d4000], + [ldr, s2, [x13, 0xf00]] + ] # default value - type: bytes @@ -24,4 +24,5 @@ ALL_FPS: type: evaluate_write address: [MAIN, 0x36D4F00] value_type: float - value: FRAMETIME_TARGET \ No newline at end of file + + value: FRAMETIME_TARGET diff --git a/SaltySD/plugins/FPSLocker/patches/0100309016E7A000/14C878ECCA9D7CB5.yaml b/SaltySD/plugins/FPSLocker/patches/0100309016E7A000/14C878ECCA9D7CB5.yaml index 5c6877c..38c0ad1 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100309016E7A000/14C878ECCA9D7CB5.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100309016E7A000/14C878ECCA9D7CB5.yaml @@ -1,7 +1,7 @@ # Demon Slayer -Kimetsu no Yaiba- The Hinokami Chronicles 1.53 # BID: 14C878ECCA9D7CB5 -unsafeCheck: true +unsafeCheck: false ALL_FPS: # Disable bUseFixedFrameRate to unlock framerate @@ -36,3 +36,4 @@ ALL_FPS: - type: block what: timing + diff --git a/SaltySD/plugins/FPSLocker/patches/0100321017CC0000/D147CAEF2BC74574.yaml b/SaltySD/plugins/FPSLocker/patches/0100321017CC0000/D147CAEF2BC74574.yaml index 7ff96ce..34d0a5d 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100321017CC0000/D147CAEF2BC74574.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100321017CC0000/D147CAEF2BC74574.yaml @@ -12,15 +12,17 @@ MASTER_WRITE: value: 0x3236 # Change egl Interval to lock game by default to 30 FPS - - type: bytes + type: asm_a64 main_offset: 0x141580 - value_type: uint32 - value: 0x52800041 + instructions: [ + [mov, w1, 2] + ] - - type: bytes + type: asm_a64 main_offset: 0x1415A8 - value_type: uint32 - value: 0x52800041 + instructions: [ + [mov, w1, 2] + ] ALL_FPS: # DUMMY - @@ -28,3 +30,4 @@ ALL_FPS: address: [MAIN, 0x15ABF3C0] value_type: uint8 value: 0 + diff --git a/SaltySD/plugins/FPSLocker/patches/0100367016DF0000/38896FEC1B4ADB1C.yaml b/SaltySD/plugins/FPSLocker/patches/0100367016DF0000/38896FEC1B4ADB1C.yaml index 11642cd..9169907 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100367016DF0000/38896FEC1B4ADB1C.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100367016DF0000/38896FEC1B4ADB1C.yaml @@ -12,15 +12,17 @@ MASTER_WRITE: value: 0x3236 # Change egl Interval to lock game by default to 30 FPS - - type: bytes + type: asm_a64 main_offset: 0x135D10 - value_type: uint32 - value: 0x52800041 + instructions: [ + [mov, w1, 2] + ] - - type: bytes + type: asm_a64 main_offset: 0x135D38 - value_type: uint32 - value: 0x52800041 + instructions: [ + [mov, w1, 2] + ] ALL_FPS: # DUMMY - @@ -28,3 +30,4 @@ ALL_FPS: address: [MAIN, 0x161BCF8] value_type: uint8 value: 0 + diff --git a/SaltySD/plugins/FPSLocker/patches/010039B015CB6000/39DC785D9073C22B.yaml b/SaltySD/plugins/FPSLocker/patches/010039B015CB6000/39DC785D9073C22B.yaml index 79e2b90..423ec07 100644 --- a/SaltySD/plugins/FPSLocker/patches/010039B015CB6000/39DC785D9073C22B.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010039B015CB6000/39DC785D9073C22B.yaml @@ -6,34 +6,35 @@ unsafeCheck: true MASTER_WRITE: # Redirect DynamicResolution$$LowerResSW Max Target in MS to MAIN+0x3BE1200 - - type: bytes + type: asm_a64 main_offset: 0x2426988 - value_type: uint32 - value: - - 0x14000043 + instructions: [ + [b, 0x2426a94] + ] + - - type: bytes + type: asm_a64 main_offset: 0x2426A94 - value_type: uint32 - value: - - 0xF000BDD3 - - 0xFD410261 - - 0x17FFFFBC + instructions: [ + [adrp, x19, 0x3be1000], + [ldr, d1, [x19, 0x200]], + [b, 0x242698c] + ] # Redirect DynamicResolution$$LowerResSW Min Target in MS to MAIN+0x3BE1208 - - type: bytes + type: asm_a64 main_offset: 0x24269F4 - value_type: uint32 - value: - - 0x1400012C + instructions: [ + [b, 0x2426ea4] + ] - - type: bytes + type: asm_a64 main_offset: 0x2426EA4 - value_type: uint32 - value: - - 0xF000BDC8 - - 0xFD410501 - - 0x17FFFED3 + instructions: [ + [adrp, x8, 0x3be1000], + [ldr, d1, [x8, 0x208]], + [b, 0x24269f8] + ] # Write default values - type: bytes @@ -46,3 +47,4 @@ ALL_FPS: address: [MAIN, 0x3BE1200] value_type: double value: ["0.93 * FRAMETIME_TARGET", "0.87 * FRAMETIME_TARGET"] + diff --git a/SaltySD/plugins/FPSLocker/patches/01003AE01AA76000/6C46135714ABB870.yaml b/SaltySD/plugins/FPSLocker/patches/01003AE01AA76000/6C46135714ABB870.yaml index 0598303..44e319e 100644 --- a/SaltySD/plugins/FPSLocker/patches/01003AE01AA76000/6C46135714ABB870.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01003AE01AA76000/6C46135714ABB870.yaml @@ -6,14 +6,15 @@ unsafeCheck: true # Disable setting double buffer, REF: 28 63 A8 9B B8 5F 6E 29 2B F7 01 51 B9 83 57 B8 MASTER_WRITE: - - type: bytes + type: asm_a64 main_offset: 0x5DB12C - value_type: uint32 - value: 0x52800079 + instructions: [ + [mov, w25, 3] + ] ALL_FPS: # interval, REF: 29 00 80 52 16 00 08 8B 08 A0 8C 52 28 00 A0 72 - type: evaluate_write address: [MAIN, 0x3412388] value_type: int32 - value: VSYNC_TARGET \ No newline at end of file + value: VSYNC_TARGET diff --git a/SaltySD/plugins/FPSLocker/patches/01003CC00D0BE000/F6FB99E54347E740.yaml b/SaltySD/plugins/FPSLocker/patches/01003CC00D0BE000/F6FB99E54347E740.yaml index efebd9a..5f077c6 100644 --- a/SaltySD/plugins/FPSLocker/patches/01003CC00D0BE000/F6FB99E54347E740.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01003CC00D0BE000/F6FB99E54347E740.yaml @@ -7,34 +7,34 @@ unsafeCheck: true MASTER_WRITE: # Redirect FPS Lock and Dynamic Resolution target values to MAIN + 0x21036F00 - - type: bytes + type: asm_a64 main_offset: 0x13281C - value_type: uint32 - value: - - 0x90107828 # ADRP X8, 0x21036000 - - 0xF9478108 # LDR X8, [X8, 0xF00] + instructions: [ + [adrp, x8, 0x21036000], + [ldr, x8, [x8, 0xf00]] + ] - - type: bytes + type: asm_a64 main_offset: 0x3E324C - value_type: uint32 - value: - - 0xF0106288 # ADRP X8, 0x21036000 - - 0xF9478108 # LDR X8, [X8, 0xF00] + instructions: [ + [adrp, x8, 0x21036000], + [ldr, x8, [x8, 0xf00]] + ] # NOP updating Dynamic Resolution target value - - type: bytes + type: asm_a64 main_offset: 0x2D94E8 - value_type: uint32 - value: - - 0xB0106AE9 # ADRP X9, 0x21036000 - - 0xB94F0929 # LDR W9, [X9, 0xF08] + instructions: [ + [adrp, x9, 0x21036000], + [ldr, w9, [x9, 0xf08]] + ] - - type: bytes + type: asm_a64 main_offset: 0x597C5C - value_type: uint32 - value: - - 0xF01054E9 # ADRP X9, 0x21036000 - - 0xB94F0929 # LDR W9, [X9, 0xF08] + instructions: [ + [adrp, x9, 0x21036000], + [ldr, w9, [x9, 0xf08]] + ] # Default values - type: bytes @@ -57,4 +57,5 @@ ALL_FPS: type: evaluate_write address: [MAIN, 0x21036F08] value_type: float - value: FRAMETIME_TARGET \ No newline at end of file + + value: FRAMETIME_TARGET diff --git a/SaltySD/plugins/FPSLocker/patches/01003E800A102000/283095029A5AB467.yaml b/SaltySD/plugins/FPSLocker/patches/01003E800A102000/283095029A5AB467.yaml index 05ce9d4..063a0ff 100644 --- a/SaltySD/plugins/FPSLocker/patches/01003E800A102000/283095029A5AB467.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01003E800A102000/283095029A5AB467.yaml @@ -7,18 +7,19 @@ unsafeCheck: true MASTER_WRITE: # Force game to use dynamic speed instead of fixed speed - - type: bytes + type: asm_a64 main_offset: 0xE7BC90 - value_type: uint32 - value: 0x52800048 + instructions: [ + [mov, w8, 2] + ] # Redirect DR timing to MAIN + 0x9DBAEB8 - - type: bytes + type: asm_a64 main_offset: 0xE88250 - value_type: uint32 - value: - - 0xD0047988 - - 0xBD4EB900 + instructions: [ + [adrp, x8, 0x9dba000], + [ldr, s0, [x8, 0xeb8]] + ] # Default value - type: bytes @@ -32,3 +33,4 @@ ALL_FPS: address: [MAIN, 0x9DBAEB8] value_type: float value: FRAMETIME_TARGET + diff --git a/SaltySD/plugins/FPSLocker/patches/01003FB00C5A8000/DCDFA5A4AD9A175D.yaml b/SaltySD/plugins/FPSLocker/patches/01003FB00C5A8000/DCDFA5A4AD9A175D.yaml index 8613b40..1f78165 100644 --- a/SaltySD/plugins/FPSLocker/patches/01003FB00C5A8000/DCDFA5A4AD9A175D.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01003FB00C5A8000/DCDFA5A4AD9A175D.yaml @@ -7,90 +7,92 @@ unsafeCheck: true MASTER_WRITE: # Block game from updating interval - - type: bytes + type: asm_a64 main_offset: 0x7264 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x721C - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] # Remove double buffer - - type: bytes + type: asm_a64 main_offset: 0xC5B08 - value_type: uint32 - value: - - 0x52800068 + instructions: [ + [mov, w8, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0xC5BB0 - value_type: uint32 - value: - - 0x52800062 + instructions: [ + [mov, w2, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0xC5720 - value_type: uint32 - value: - - 0xD10143FF - - 0xA90257F6 - - 0xA9034FF4 - - 0xA9047BFD - - 0x910103FD + instructions: [ + [sub, sp, sp, 0x50], + [stp, x22, x21, [sp, 0x20]], + [stp, x20, x19, [sp, 0x30]], + [stp, x29, x30, [sp, 0x40]], + [add, x29, sp, 0x40] + ] - - type: bytes + type: asm_a64 main_offset: 0xC5744 - value_type: uint32 - value: - - 0xA9017FFF + instructions: [ + [stp, xzr, xzr, [sp, 0x10]] + ] - - type: bytes + type: asm_a64 main_offset: 0xC5758 - value_type: uint32 - value: - - 0x52800062 + instructions: [ + [mov, w2, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0xC5780 - value_type: uint32 - value: - - 0xA9447BFD - - 0xA9434FF4 - - 0xA94257F6 - - 0x910143FF + instructions: [ + [ldp, x29, x30, [sp, 0x40]], + [ldp, x20, x19, [sp, 0x30]], + [ldp, x22, x21, [sp, 0x20]], + [add, sp, sp, 0x50] + ] - - type: bytes + type: asm_a64 main_offset: 0xC57A0 - value_type: uint32 - value: - - 0xD10143FF - - 0xA901D7FF - - 0xA9034FF4 - - 0xA9047BFD - - 0x910103FD + instructions: [ + [sub, sp, sp, 0x50], + [stp, xzr, x21, [sp, 0x18]], + [stp, x20, x19, [sp, 0x30]], + [stp, x29, x30, [sp, 0x40]], + [add, x29, sp, 0x40] + ] - - type: bytes + type: asm_a64 main_offset: 0xC57CC - value_type: uint32 - value: - - 0x52800062 + instructions: [ + [mov, w2, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0xC57E4 - value_type: uint32 - value: - - 0xF90003E8 + instructions: [ + [str, x8, [sp]] + ] - - type: bytes + type: asm_a64 main_offset: 0xC580C - value_type: uint32 - value: - - 0xA9447BFD - - 0xF94013F5 - - 0xA9434FF4 - - 0x910143FF + instructions: [ + [ldp, x29, x30, [sp, 0x40]], + [ldr, x21, [sp, 0x20]], + [ldp, x20, x19, [sp, 0x30]], + [add, sp, sp, 0x50] + ] ALL_FPS: # Interval - diff --git a/SaltySD/plugins/FPSLocker/patches/010042D00D900000/EC593A5F9552100A.yaml b/SaltySD/plugins/FPSLocker/patches/010042D00D900000/EC593A5F9552100A.yaml index 5bcad00..02d7f5e 100644 --- a/SaltySD/plugins/FPSLocker/patches/010042D00D900000/EC593A5F9552100A.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010042D00D900000/EC593A5F9552100A.yaml @@ -6,22 +6,22 @@ unsafeCheck: true MASTER_WRITE: # redirect reading Dynamic Resolution timing min & max to MAIN + 0xC3C0A50 - - type: bytes + type: asm_a64 main_offset: 0x6171A0 - value_type: uint32 - value: - - 0xD503201F - - 0xBD4E0563 - - 0x1E232821 - - 0xB005ED4C - - 0xBD4A5182 + instructions: [ + [nop], + [ldr, s3, [x11, 0xe04]], + [fadd, s1, s1, s3], + [adrp, x12, 0xc3c0000], + [ldr, s2, [x12, 0xa50]] + ] - - type: bytes + type: asm_a64 main_offset: 0x6171F0 - value_type: uint32 - value: - - 0xB005ED4B - - 0xBD4A5562 + instructions: [ + [adrp, x11, 0xc3c0000], + [ldr, s2, [x11, 0xa54]] + ] # Default DR timings - type: bytes @@ -41,3 +41,4 @@ ALL_FPS: address: [MAIN, 0xC3C0A50] value_type: float value: ["0.72 * FRAMETIME_TARGET", "0.93 * FRAMETIME_TARGET"] + diff --git a/SaltySD/plugins/FPSLocker/patches/010044700DEB0001/3DEF0E36AA8C6592.yaml b/SaltySD/plugins/FPSLocker/patches/010044700DEB0001/3DEF0E36AA8C6592.yaml index 2467c5d..9082aa0 100644 --- a/SaltySD/plugins/FPSLocker/patches/010044700DEB0001/3DEF0E36AA8C6592.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010044700DEB0001/3DEF0E36AA8C6592.yaml @@ -7,12 +7,12 @@ MASTER_WRITE: # Patch code to divide last frametime by float scale factor stored in MAIN+0x61EE400 # To match it to Dynamic Resolution calculations - - type: bytes + type: asm_a64 main_offset: 0x9F1DDC - value_type: uint32 - value: - - 0xB002BFE8 - - 0xBD440101 + instructions: [ + [adrp, x8, 0x61ee000], + [ldr, s1, [x8, 0x400]] + ] # Write default dynamic resolution timing factor - type: bytes @@ -25,3 +25,4 @@ ALL_FPS: address: [MAIN, 0x61EE400] value_type: float value: "(FPS_TARGET / 30) * 1000" + diff --git a/SaltySD/plugins/FPSLocker/patches/0100453019AA8000/2A720C7CE5C84905.yaml b/SaltySD/plugins/FPSLocker/patches/0100453019AA8000/2A720C7CE5C84905.yaml index 91f9426..1fe8177 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100453019AA8000/2A720C7CE5C84905.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100453019AA8000/2A720C7CE5C84905.yaml @@ -7,54 +7,55 @@ MASTER_WRITE: # Dynamic speed mod for stuff like UI, lipsync, grass and rain ## Redirect nvnQueuePresentTexture call to code cave at MAIN+0x1735050 - - type: bytes + type: asm_a64 main_offset: 0x95EED8 - value_type: uint32 - value: 0x1437585E + instructions: [ + [b, 0x1735050] + ] ## Code Cave (save floats for speed factor to MAIN+0x47BE268, frametime as FPS in MAIN+0x47BE26C, frametime in s in MAIN+0x47BE270) - - type: bytes + type: asm_a64 main_offset: 0x1735050 - value_type: uint32 - value: - - 0xD63F0100 - - 0x97FFF52B - - 0xB0018448 - - 0xF9413107 - - 0xF9013100 - - 0xB5000047 - - 0x17C8A79D - - 0xCB070000 - - 0x97FFF528 - - 0xB0018448 - - 0xB9430101 - - 0xEB00003F - - 0x5400004B - - 0xAA0103E0 - - 0xD2881541 - - 0xF2A07F21 - - 0xEB00003F - - 0x5400004C - - 0xAA0103E0 - - 0x9E630000 - - 0xD00005A0 - - 0xFD46AC01 - - 0x1E611800 - - 0xD2807D00 - - 0x9E630001 - - 0x1E601821 - - 0xB0018440 - - 0x1E624021 - - 0xBD026C01 - - 0x1E27D002 - - 0x1E211842 - - 0xBD026802 - - 0xD2807D01 - - 0x9E630021 - - 0x1E611801 - - 0x1E624021 - - 0xBD027001 - - 0x17C8A77E + instructions: [ + [blr, x8], + [bl, 0x1732500], + [adrp, x8, 0x47be000], + [ldr, x7, [x8, 0x260]], + [str, x0, [x8, 0x260]], + [cbnz, x7, +8], + [b, 0x95eedc], + [sub, x0, x0, x7], + [bl, 0x1732510], + [adrp, x8, 0x47be000], + [ldr, w1, [x8, 0x300]], + [cmp, x1, x0], + [b.lt, +8], + [mov, x0, x1], + [mov, x1, 0x40aa], + [movk, x1, 0x3f9, 16], + [cmp, x1, x0], + [b.gt, +8], + [mov, x0, x1], + [ucvtf, d0, x0], + [adrp, x0, 0x17eb000], + [ldr, d1, [x0, 0xd58]], + [fdiv, d0, d0, d1], + [mov, x0, 1000], + [ucvtf, d1, x0], + [fdiv, d1, d1, d0], + [adrp, x0, 0x47be000], + [fcvt, s1, d1], + [str, s1, [x0, 0x26c]], + [fmov, s2, 30.0], + [fdiv, s2, s2, s1], + [str, s2, [x0, 0x268]], + [mov, x1, 1000], + [ucvtf, d1, x1], + [fdiv, d1, d0, d1], + [fcvt, s1, d1], + [str, s1, [x0, 0x270]], + [b, 0x95eedc] + ] ## Default values for code cave - type: bytes @@ -68,91 +69,95 @@ MASTER_WRITE: value: 33333333 ## Function 1 to speed factor // Usage unknown - - type: bytes + type: asm_a64 main_offset: 0x286968 - value_type: uint32 - value: - - 0x900229D5 - - 0xF9470D00 - - 0xBD426AAA + instructions: [ + [adrp, x21, 0x47be000], + [ldr, x0, [x8, 0xe18]], + [ldr, s10, [x21, 0x268]] + ] ## Function 3 to speed factor // Usage unknown - - type: bytes + type: asm_a64 main_offset: 0xA16F00 - value_type: uint32 - value: - - 0x9001ED40 - - 0xBD426808 + instructions: [ + [adrp, x0, 0x47be000], + [ldr, s8, [x0, 0x268]] + ] ## Function 4 to FPS // UI Speed - - type: bytes + type: asm_a64 main_offset: 0xA1F060 - value_type: uint32 - value: - - 0xF001ECE0 - - 0x1E270100 - - 0xBD426C00 + instructions: [ + [adrp, x0, 0x47be000], + [fmov, s0, w8], + [ldr, s0, [x0, 0x26c]] + ] ## Function 5 to FPS // Usage unknown - - type: bytes + type: asm_a64 main_offset: 0x2672DC - value_type: uint32 - value: - - 0xF0022A20 - - 0x1E270100 - - 0x7940D268 - - 0xBD426C05 + instructions: [ + [adrp, x0, 0x47ae000], + [fmov, s0, w8], + [ldrh, w8, [x19, 0x68]], + [ldr, s5, [x0, 0x26c]] + ] ## Function 6 to FPS - - type: bytes + type: asm_a64 main_offset: 0x26DB70 - value_type: uint32 - value: - - 0xB0022A80 - - 0xBD426C00 - - 0x1E390000 - - 0x528000C9 - - 0x1AC90808 + instructions: [ + [adrp, x0, 0x47be000], + [ldr, s0, [x0, 0x26c]], + [fcvtzu, w0, s0], + [mov, w9, 6], + [udiv, w8, w0, w9] + ] ## Function 7 to Frametime in s // Gameplay + cutscene speed - - type: bytes + type: asm_a64 main_offset: 0x1E2924 - value_type: uint32 - value: 0x90022EE9 + instructions: [ + [adrp, x9, 0x47be000] + ] - - type: bytes + type: asm_a64 main_offset: 0x1E2938 - value_type: uint32 - value: 0xBD427120 + instructions: [ + [ldr, s0, [x9, 0x270]] + ] # Adjust various elements related to fighting - - type: bytes + type: asm_a64 main_offset: 0x1E8F48 - value_type: uint32 - value: 0x1455308B + instructions: [ + [b, 0x1735174] + ] ## Code cave - - type: bytes + type: asm_a64 main_offset: 0x1735174 - value_type: uint32 - value: - - 0xB0018449 - - 0xBD426920 - - 0x17AACF74 + instructions: [ + [adrp, x9, 0x47be000], + [ldr, s0, [x9, 0x268]], + [b, 0x1e8f4c] + ] ## Fix gun speed - - type: bytes + type: asm_a64 main_offset: 0x30FACC - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] # Redirect DR Target to MAIN+0x47BEF00 - - type: bytes + type: asm_a64 main_offset: 0x13A90B4 - value_type: uint32 - value: - - 0xB001A0A8 - - 0xBD4F0100 + instructions: [ + [adrp, x8, 0x47be000], + [ldr, s0, [x8, 0xf00]] + ] ## Default value - type: bytes @@ -162,157 +167,165 @@ MASTER_WRITE: # Adjust camera speed rotation dynamically ## Code cave - - type: bytes + type: asm_a64 main_offset: 0x1735108 - value_type: uint32 - value: - - 0xB0018448 - - 0xBD426908 - - 0x1E200900 - - 0x1E202008 - - 0x540000AA - - 0x1E214000 - - 0x1E21C000 - - 0x1E214000 - - 0xD65F03C0 - - 0x1E21C000 - - 0xD65F03C0 + instructions: [ + [adrp, x8, 0x47be000], + [ldr, s8, [x8, 0x268]], + [fmul, s0, s8, s0], + [fcmp, s0, 0.0], + [b.ge, +20], + [fneg, s0, s0], + [fsqrt, s0, s0], + [fneg, s0, s0], + [ret], + [fsqrt, s0, s0], + [ret] + ] ## Connect function 1 - - type: bytes + type: asm_a64 main_offset: 0x1E17A0 - value_type: uint32 - value: 0x94554E5A + instructions: [ + [bl, 0x1735108] + ] ## Connect function 2 - - type: bytes + type: asm_a64 main_offset: 0x1E17B0 - value_type: uint32 - value: 0xAD7D03A1 + instructions: [ + [ldp, q1, q0, [x29, -0x60]] + ] - - type: bytes + type: asm_a64 main_offset: 0x1E17BC - value_type: uint32 - value: 0x94554E53 + instructions: [ + [bl, 0x1735108] + ] # Force 1s sleep to synchronize audio if cutscene detected ## Use function responsible for writing type 4 of cutscene - - type: bytes + type: asm_a64 main_offset: 0x2FB0D8 - value_type: uint32 - value: 0x1450E820 + instructions: [ + [b, 0x1735158] + ] ### Code cave - - type: bytes + type: asm_a64 main_offset: 0x1735158 - value_type: uint32 - value: - - 0x52800094 - - 0xD00045C0 - - 0xB90AF414 - - 0xD2994000 - - 0xF2A77340 - - 0x97FFF3D9 - - 0x17AF17DB + instructions: [ + [mov, w20, 4], + [adrp, x0, 0x1fef000], + [str, w20, [x0, 0xaf4]], + [mov, x0, 0xca00], + [movk, x0, 0x3b9a, 16], + [bl, 0x17320d0], + [b, 0x2fb0dc] + ] # Adjust Field Action gauge bar speed - - type: bytes + type: asm_a64 main_offset: 0xE5E00 - value_type: uint32 - value: - - 0xB00236C0 - - 0xF000E369 - - 0xBD426808 + instructions: [ + [adrp, x0, 0x47be000], + [adrp, x9, 0x1d54000], + [ldr, s8, [x0, 0x268]] + ] ## Fix for FN Site - - type: bytes + type: asm_a64 main_offset: 0xE5858 - value_type: uint32 - value: 0x14593E24 + instructions: [ + [b, 0x17350e8] + ] ### Code cave - - type: bytes + type: asm_a64 main_offset: 0x17350E8 - value_type: uint32 - value: - - 0xBD40D260 - - 0xB0018440 - - 0xBD426801 - - 0x1E210800 - - 0x17A6C1D9 + instructions: [ + [ldr, s0, [x19, 0xd0]], + [adrp, x0, 0x47be000], + [ldr, s1, [x0, 0x268]], + [fmul, s0, s0, s1], + [b, 0xe585c] + ] # Fix long jump when not running - - type: bytes + type: asm_a64 main_offset: 0x23EF70 - value_type: uint32 - value: 0x1453D863 + instructions: [ + [b, 0x17350fc] + ] ## Code cave - - type: bytes + type: asm_a64 main_offset: 0x17350FC - value_type: uint32 - value: - - 0x1E27D00B - - 0x1E2B296B - - 0x17AC279C + instructions: [ + [fmov, s11, 30.0], + [fadd, s11, s11, s11], + [b, 0x23ef74] + ] # Adjust QTE Speed ## Code cave - - type: bytes + type: asm_a64 main_offset: 0x1735134 - value_type: uint32 - value: - - 0xB0018454 - - 0xBD426A81 - - 0x1400001B + instructions: [ + [adrp, x20, 0x47be000], + [ldr, s1, [x20, 0x268]], + [b, 0x17351a8] + ] - - type: bytes + type: asm_a64 main_offset: 0x17351A8 - value_type: uint32 - value: - - 0xBD412262 - - 0x1E210841 - - 0x17BA4435 + instructions: [ + [ldr, s2, [x19, 0x120]], + [fmul, s1, s2, s1], + [b, 0x5c6284] + ] ## Connect function - - type: bytes + type: asm_a64 main_offset: 0x5C6280 - value_type: uint32 - value: 0x1445BBAD + instructions: [ + [b, 0x1735134] + ] # Adjust Overdrive counter, Follow Ball speed ## Code cave - - type: bytes + type: asm_a64 main_offset: 0x1735180 - value_type: uint32 - value: - - 0xB0018440 - - 0xBD427000 - - 0xD65F03C0 + instructions: [ + [adrp, x0, 0x47be000], + [ldr, s0, [x0, 0x270]], + [ret] + ] ## Connect function - - type: bytes + type: asm_a64 main_offset: 0x67354 - value_type: uint32 - value: 0x945B36AB + instructions: [ + [bl, 0x1734e00] + ] # Fix fog speed - - type: bytes + type: asm_a64 main_offset: 0x296AE0 - value_type: uint32 - value: - - 0x90022948 - - 0xBD426902 - - 0x945279B3 + instructions: [ + [adrp, x8, 0x47be000], + [ldr, s2, [x8, 0x268]], + [bl, 0x17351b4] + ] ## Code cave - - type: bytes + type: asm_a64 main_offset: 0x17351B4 - value_type: uint32 - value: - - 0x1E21C042 - - 0x1F020020 - - 0xD65F03C0 + instructions: [ + [fsqrt, s2, s2], + [fmadd, s0, s1, s2, s0], + [ret] + ] ALL_FPS: # FPS Target - diff --git a/SaltySD/plugins/FPSLocker/patches/01004AB00A260000/DF3766A2BB651A3E.yaml b/SaltySD/plugins/FPSLocker/patches/01004AB00A260000/DF3766A2BB651A3E.yaml index a8b0e1c..49fe823 100644 --- a/SaltySD/plugins/FPSLocker/patches/01004AB00A260000/DF3766A2BB651A3E.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01004AB00A260000/DF3766A2BB651A3E.yaml @@ -6,25 +6,25 @@ unsafeCheck: false MASTER_WRITE: # Redirect FPS target to MAIN+0x55E9A00 - - type: bytes + type: asm_a64 main_offset: 0x706FA4 - value_type: uint32 - value: - - 0xF0027701 + instructions: [ + [adrp, x1, 0x55e9000] + ] - - type: bytes + type: asm_a64 main_offset: 0x7070B0 - value_type: uint32 - value: - - 0xFD450020 + instructions: [ + [ldr, d0, [x1, 0xa00]] + ] # Redirect game speed to MAIN+0x55E9A08 - - type: bytes + type: asm_a64 main_offset: 0x667900 - value_type: uint32 - value: - - 0xD0027C08 - - 0xBD4A0908 + instructions: [ + [adrp, x8, 0x55e9000], + [ldr, s8, [x8, 0xa08]] + ] # Write default value - type: bytes @@ -68,3 +68,4 @@ ALL_FPS: - type: block what: timing + diff --git a/SaltySD/plugins/FPSLocker/patches/01004D300C5AE000/D9BA7DB72FFAFECD.yaml b/SaltySD/plugins/FPSLocker/patches/01004D300C5AE000/D9BA7DB72FFAFECD.yaml index e0af86c..46ad46c 100644 --- a/SaltySD/plugins/FPSLocker/patches/01004D300C5AE000/D9BA7DB72FFAFECD.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01004D300C5AE000/D9BA7DB72FFAFECD.yaml @@ -7,71 +7,78 @@ unsafeCheck: false MASTER_WRITE: # Remove double buffer - - type: bytes + type: asm_a64 main_offset: 0x745E94 - value_type: uint32 - value: 0x52800069 + instructions: [ + [mov, w9, 3] + ] # Fix helper functions to not corrupt stack - - type: bytes + type: asm_a64 main_offset: 0x745F70 - value_type: uint32 - value: 0x52800062 + instructions: [ + [mov, w2, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0x75908C - value_type: uint32 - value: 0x52800062 + instructions: [ + [mov, w2, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0x675198 - value_type: uint32 - value: - - 0xD10143FF - - 0xA90257F6 - - 0xA9034FF4 - - 0xA9047BFD - - 0x910103FD + instructions: [ + [sub, sp, sp, 0x50], + [stp, x22, x21, [sp, 0x20]], + [stp, x20, x19, [sp, 0x30]], + [stp, x29, x30, [sp, 0x40]], + [add, x29, sp, 0x40] + ] - - type: bytes + type: asm_a64 main_offset: 0x6751EC - value_type: uint32 - value: 0x52800062 + instructions: [ + [mov, w2, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0x675210 - value_type: uint32 - value: - - 0xA9447BFD - - 0xA9434FF4 - - 0xA94257F6 - - 0x910143FF + instructions: [ + [ldp, x29, x30, [sp, 0x40]], + [ldp, x20, x19, [sp, 0x30]], + [ldp, x22, x21, [sp, 0x20]], + [add, sp, sp, 0x50] + ] - - type: bytes + type: asm_a64 main_offset: 0x74A510 - value_type: uint32 - value: 0x52800062 + instructions: [ + [mov, w2, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0x7590F8 - value_type: uint32 - value: 0x52800062 + instructions: [ + [mov, w2, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0x7BDCD4 - value_type: uint32 - value: 0x52800062 + instructions: [ + [mov, w2, 3] + ] # Block transparency in some 2D elements to avoid issue with flickering at triple buffer - - type: bytes + type: asm_a64 main_offset: 0x6A58C8 - value_type: uint32 - value: - - 0xD2802049 - - 0xB948414A - - 0x91208114 - - 0xD37DF14C - - 0xF9000289 + instructions: [ + [mov, x9, 0x102], + [ldr, w10, [x10, 0x840]], + [add, x20, x8, 0x820], + [lsl, x12, x10, 3], + [str, x9, [x20]] + ] ALL_FPS: # Interval (Setting it to 0 unlocks framerate and sets dynamic game speed) - @@ -85,3 +92,4 @@ ALL_FPS: address: [MAIN, 0xA726B0, 0x140, 0x1B0, 0x20, 0x34] value_type: float value: ["(30 / FPS_TARGET) * 1.95", "(30 / FPS_TARGET) * 1.7"] + diff --git a/SaltySD/plugins/FPSLocker/patches/010050F00BC1A000/6BEC9B23B09DF46C.yaml b/SaltySD/plugins/FPSLocker/patches/010050F00BC1A000/6BEC9B23B09DF46C.yaml index b701946..8ef09f2 100644 --- a/SaltySD/plugins/FPSLocker/patches/010050F00BC1A000/6BEC9B23B09DF46C.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010050F00BC1A000/6BEC9B23B09DF46C.yaml @@ -6,39 +6,41 @@ unsafeCheck: true MASTER_WRITE: # Detect prerendered cutscenes - - type: bytes + type: asm_a64 main_offset: 0xB1A810 - value_type: uint32 - value: 0x14005CF6 + instructions: [ + [b, 0xb31be8] + ] - - type: bytes + type: asm_a64 main_offset: 0xB31BE8 - value_type: uint32 - value: - - 0xF81E0FF3 - - 0x52800021 - - 0xD000CDB3 - - 0xB90FF261 - - 0xAA0003F3 - - 0x52994000 - - 0x72A77340 - - 0xD4000161 - - 0xAA1303E0 - - 0x17FFA302 + instructions: [ + [str, x19, [sp, -0x20], "!"], + [mov, w1, 1], + [adrp, x19, 0x24e7000], + [str, w1, [x19, 0xff0]], + [mov, x19, x0], + [mov, w0, 0xca00], + [movk, w0, 0x3b9a, 16], + [svc, 0xb], + [mov, x0, x19], + [b, 0xb1a814] + ] - - type: bytes + type: asm_a64 main_offset: 0xB1A9BC - value_type: uint32 - value: 0x14005C95 + instructions: [ + [b, 0xb31c10] + ] - - type: bytes + type: asm_a64 main_offset: 0xB31C10 - value_type: uint32 - value: - - 0x2A1F03E1 - - 0xD000CDA2 - - 0xB90FF041 - - 0x17FFCCA9 + instructions: [ + [mov, w1, wzr], + [adrp, x2, 0x24e7000], + [str, w1, [x2, 0xff0]], + [b, 0xb24ec0] + ] ALL_FPS: # Internal FPS Lock - @@ -54,4 +56,4 @@ ALL_FPS: compare_address: [MAIN, 0x24E7FF0] address: [MAIN] value_type: refresh_rate - value: 30 \ No newline at end of file + value: 30 diff --git a/SaltySD/plugins/FPSLocker/patches/010050F01DF9C000/5F765D2CC4CDEF1C.yaml b/SaltySD/plugins/FPSLocker/patches/010050F01DF9C000/5F765D2CC4CDEF1C.yaml index 422f47e..23f7cce 100644 --- a/SaltySD/plugins/FPSLocker/patches/010050F01DF9C000/5F765D2CC4CDEF1C.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010050F01DF9C000/5F765D2CC4CDEF1C.yaml @@ -7,22 +7,22 @@ MASTER_WRITE: # Redirect reading DR timing in DynamicResolution::LowerResSW() to MAIN + 0x7C22F00 # REF: 01 f0 67 1e - - type: bytes + type: asm_a64 main_offset: 0x38E7ECC - value_type: uint32 - value: - - 0xF00219D4 # adrp x20, #0x7c22000 - - 0xFD478281 # ldr d1, [x20, #0xf00] - - 0x1E612010 # fcmpe d0, d1 - - 0x2D482269 # ldp s9, s8, [x19, #0x40] - - 0x540002CD # b.le #0x38e7f34 - - 0xBD40626A # ldr s10, [x19, #0x60] + instructions: [ + [adrp, x20, 0x7c22000], + [ldr, d1, [x20, 0xf00]], + [fcmpe, d0, d1], + [ldp, s9, s8, [x19, 0x40]], + [b.le, 0x38e7f34], + [ldr, s10, [x19, 0x60]] + ] - - type: bytes + type: asm_a64 main_offset: 0x38E7F34 - value_type: uint32 - value: - - 0xFD478681 # ldr d1, [x20, #0xf08] + instructions: [ + [ldr, d1, [x20, 0xf08]] + ] # Default handheld value - type: bytes @@ -36,3 +36,4 @@ ALL_FPS: address: [MAIN, 0x7C22F00] value_type: double value: ["0.93 * FRAMETIME_TARGET", "(0.93 * FRAMETIME_TARGET) - 2"] + diff --git a/SaltySD/plugins/FPSLocker/patches/010053E002EA2000/76EC789B99A25BA5.yaml b/SaltySD/plugins/FPSLocker/patches/010053E002EA2000/76EC789B99A25BA5.yaml index 26fa0f4..8c497f0 100644 --- a/SaltySD/plugins/FPSLocker/patches/010053E002EA2000/76EC789B99A25BA5.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010053E002EA2000/76EC789B99A25BA5.yaml @@ -7,10 +7,11 @@ unsafeCheck: true MASTER_WRITE: # Remove double buffer - - type: bytes + type: asm_a64 main_offset: 0x55DFDC - value_type: uint32 - value: 0xD2800068 + instructions: [ + [mov, x8, 3] + ] ALL_FPS: # DUMMY - diff --git a/SaltySD/plugins/FPSLocker/patches/01005420101DA000/134EC3D8BE75126F.yaml b/SaltySD/plugins/FPSLocker/patches/01005420101DA000/134EC3D8BE75126F.yaml index 4728326..1e5b580 100644 --- a/SaltySD/plugins/FPSLocker/patches/01005420101DA000/134EC3D8BE75126F.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01005420101DA000/134EC3D8BE75126F.yaml @@ -9,12 +9,12 @@ unsafeCheck: true MASTER_WRITE: # Move loading FPS lock time to MAIN+0x2B31200 - - type: bytes + type: asm_a64 main_offset: 0x511818 - value_type: uint32 - value: - - 0x90013109 - - 0xB9420129 + instructions: [ + [adrp, x9, 0x2b31000], + [ldr, w9, [x9, 0x200]] + ] # Default value - type: bytes @@ -23,35 +23,35 @@ MASTER_WRITE: value: 33333333 # Write game's loop time as float to MAIN+0x2B31204 - - type: bytes + type: asm_a64 main_offset: 0x511884 - value_type: uint32 - value: - - 0x17FFFFDC + instructions: [ + [b, 0x5117f4] + ] - - type: bytes + type: asm_a64 main_offset: 0x5117F4 - value_type: uint32 - value: - - 0xFD001100 - - 0x1E624004 - - 0x140000A2 + instructions: [ + [str, d0, [x8, 0x20]], + [fcvt, s4, d0], + [b, 0x511a84] + ] - - type: bytes + type: asm_a64 main_offset: 0x511A84 - value_type: uint32 - value: - - 0x90013108 - - 0xBD020504 - - 0x17FFFF7F + instructions: [ + [adrp, x8, 0x2b31000], + [str, s4, [x8, 0x204]], + [b, 0x511888] + ] - # Read lowest timing float factor from MAIN+0x2B31204 - type: bytes + type: asm_a64 main_offset: 0x5E5EC - value_type: uint32 - value: - - 0xF0015688 - - 0x1E227821 - - 0xBD420502 + instructions: [ + [adrp, x8, 0x2b31000], + [fminnm, s1, s1, s2], + [ldr, s2, [x8, 0x204]] + ] - # Default value type: bytes main_offset: 0x2B31204 @@ -63,3 +63,4 @@ ALL_FPS: address: [MAIN, 0x2B31200] value_type: uint32 value: 11111111 + diff --git a/SaltySD/plugins/FPSLocker/patches/0100544020572000/1CEA83A1E6684665.yaml b/SaltySD/plugins/FPSLocker/patches/0100544020572000/1CEA83A1E6684665.yaml index e1b7521..827c75b 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100544020572000/1CEA83A1E6684665.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100544020572000/1CEA83A1E6684665.yaml @@ -7,13 +7,13 @@ MASTER_WRITE: # Redirect DR to MAIN + 0x2F5CFF0 # REF: A9 24 89 52 49 A2 A7 72, second REF - - type: bytes + type: asm_a64 main_offset: 0x10AAEE4 - value_type: uint32 - value: - - 0xD000F589 # adrp x9, 0x2F5C000 - - 0xBD4FF121 # ldr s1, [x9, 0xFF0] - - 0xD503201F # nop + instructions: [ + [adrp, x9, 0x2f5c000], + [ldr, s1, [x9, 0xff0]], + [nop] + ] ## Default value - type: bytes @@ -34,3 +34,4 @@ ALL_FPS: address: [MAIN, 0x2F5CFF0] value_type: float value: "1.01 / FPS_TARGET" + diff --git a/SaltySD/plugins/FPSLocker/patches/010054A020574000/6CB3E54C5F648410.yaml b/SaltySD/plugins/FPSLocker/patches/010054A020574000/6CB3E54C5F648410.yaml new file mode 100644 index 0000000..e64833a --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010054A020574000/6CB3E54C5F648410.yaml @@ -0,0 +1,38 @@ +# 유미아의 아틀리에 ~추억의 연금술사와 창환의 땅~ 1.3.0 +# BID: 6CB3E54C5F648410 + +unsafeCheck: false + +MASTER_WRITE: + # Redirect DR to MAIN + 0x2F5CFF0 + # REF: A9 24 89 52 49 A2 A7 72, second REF + - + type: asm_a64 + main_offset: 0x10AAEE4 + instructions: [ + [adrp, x9, 0x2f5c000], + [ldr, s1, [x9, 0xff0]], + [nop] + ] + ## Default value + - + type: bytes + main_offset: 0x2F5CFF0 + value_type: float + value: 0.035714 +ALL_FPS: + # Disable FPS Lock + # REF: 88 46 40 F9 03 11 40 F9, first ADRP+LDR above it + - + type: write + address: [MAIN, 0x2F23C00, 0xE0, 0x294] + value_type: uint8 + value: 0 + # DR Target + - + type: evaluate_write + address: [MAIN, 0x2F5CFF0] + value_type: float + value: "1.01 / FPS_TARGET" + + diff --git a/SaltySD/plugins/FPSLocker/patches/010054E01D878000/39296BB1FD4A3F20.yaml b/SaltySD/plugins/FPSLocker/patches/010054E01D878000/39296BB1FD4A3F20.yaml new file mode 100644 index 0000000..ee9c811 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010054E01D878000/39296BB1FD4A3F20.yaml @@ -0,0 +1,12 @@ +# EA SPORTS FC 25 1.7e.e73a +# BID: 39296BB1FD4A3F20 + +unsafeCheck: true + +ALL_FPS: + # Internal FPS Lock + - + type: evaluate_write + address: [MAIN, 0xCEEFA88, 8] + value_type: double + value: FPS_TARGET diff --git a/SaltySD/plugins/FPSLocker/patches/010055D009F78000/89048449BA238C8C.yaml b/SaltySD/plugins/FPSLocker/patches/010055D009F78000/89048449BA238C8C.yaml index 484fee9..9ef3513 100644 --- a/SaltySD/plugins/FPSLocker/patches/010055D009F78000/89048449BA238C8C.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010055D009F78000/89048449BA238C8C.yaml @@ -6,19 +6,19 @@ unsafeCheck: true MASTER_WRITE: # Redirect DR timing targets to MAIN + 0x21E4F30 - - type: bytes + type: asm_a64 main_offset: 0x4C82D0 - value_type: uint32 - value: - - 0x9000E8EA - - 0xBD4F3142 + instructions: [ + [adrp, x10, 0x21e4000], + [ldr, s2, [x10, 0xf30]] + ] - - type: bytes + type: asm_a64 main_offset: 0x4C8300 - value_type: uint32 - value: - - 0x9000E8E8 - - 0xBD4F3502 + instructions: [ + [adrp, x8, 0x21e4000], + [ldr, s2, [x8, 0xf34]] + ] # Default values - type: bytes @@ -31,3 +31,4 @@ ALL_FPS: address: [MAIN, 0x21E4F30] value_type: float value: ["0.99 * FRAMETIME_TARGET", "0.84 * FRAMETIME_TARGET"] + diff --git a/SaltySD/plugins/FPSLocker/patches/010056B015FE8000/E43525F22282A477.yaml b/SaltySD/plugins/FPSLocker/patches/010056B015FE8000/E43525F22282A477.yaml index 734488e..6b0c129 100644 --- a/SaltySD/plugins/FPSLocker/patches/010056B015FE8000/E43525F22282A477.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010056B015FE8000/E43525F22282A477.yaml @@ -6,33 +6,34 @@ unsafeCheck: true MASTER_WRITE: # Redirect DR timings to MAIN + 0x2BE6F00, [Bad, Optimal, Good] - - type: bytes + type: asm_a64 main_offset: 0x9BF3E4 - value_type: uint32 - value: - - 0xF001112C - - 0xBD4F0183 + instructions: [ + [adrp, x12, 0x2be6000], + [ldr, s3, [x12, 0xf00]] + ] - - type: bytes + type: asm_a64 main_offset: 0x9BF434 - value_type: uint32 - value: - - 0xF001112C - - 0xB94F058C + instructions: [ + [adrp, x12, 0x2be6000], + [ldr, w12, [x12, 0xf04]] + ] - - type: bytes + type: asm_a64 main_offset: 0x9BF484 - value_type: uint32 - value: - - 0x1E20CC83 - - 0xF001112C - - 0xBD4F0580 - - 0xD503201F + instructions: [ + [fcsel, s3, s4, s0, gt], + [adrp, x12, 0x2be6000], + [ldr, s0, [x12, 0xf04]], + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x9BF4A8 - value_type: uint32 - value: 0xBD4F0980 + instructions: [ + [ldr, s0, [x12, 0xf08]] + ] # Default values - type: bytes @@ -45,3 +46,4 @@ ALL_FPS: address: [MAIN, 0x2BE6F00] value_type: float value: ["1.35 * FRAMETIME_TARGET", "0.9603 * FRAMETIME_TARGET", "0.9 * FRAMETIME_TARGET"] + diff --git a/SaltySD/plugins/FPSLocker/patches/0100582010AE0000/B3967105033ACC08.yaml b/SaltySD/plugins/FPSLocker/patches/0100582010AE0000/B3967105033ACC08.yaml index cc3c580..5e261a4 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100582010AE0000/B3967105033ACC08.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100582010AE0000/B3967105033ACC08.yaml @@ -6,45 +6,48 @@ unsafeCheck: true MASTER_WRITE: # Redirect Dynamic Resolution Timings to read always not from .text - - type: bytes + type: asm_a64 main_offset: 0x2EE9A90 - value_type: uint32 - value: 0x1E204020 + instructions: [ + [fmov, s0, s1] + ] - - type: bytes + type: asm_a64 main_offset: 0x2EE9AA8 - value_type: uint32 - value: 0x1E221C42 + instructions: [ + [fcsel, s2, s2, s2, ne] + ] # Redirect Dynamic Resolution Timings readings to MAIN+0x453B300 - - type: bytes + type: asm_a64 main_offset: 0x2EE9A38 - value_type: uint32 - value: 0xD000B28B + instructions: [ + [adrp, x11, 0x453b000] + ] - - type: bytes + type: asm_a64 main_offset: 0x2EE9A40 - value_type: uint32 - value: - - 0xD000B28C - - 0xBD430161 - - 0xBD430582 + instructions: [ + [adrp, x12, 0x453b000], + [ldr, s1, [x11, 0x300]], + [ldr, s2, [x12, 0x304]] + ] - - type: bytes + type: asm_a64 main_offset: 0x2EE9A50 - value_type: uint32 - value: - - 0xD000B28D - - 0x910C21AD + instructions: [ + [adrp, x13, 0x453b000], + [add, x13, x13, 0x308] + ] - - type: bytes + type: asm_a64 main_offset: 0x2EE9A7C - value_type: uint32 - value: - - 0xD000B289 - - 0x910C4129 - - 0xD000B28B - - 0x910C616B + instructions: [ + [adrp, x9, 0x453b000], + [add, x9, x9, 0x310], + [adrp, x11, 0x453b000], + [add, x11, x11, 0x318] + ] # Write default values # MAIN + 0x333FAFC - @@ -122,3 +125,4 @@ ALL_FPS: - type: block what: timing + diff --git a/SaltySD/plugins/FPSLocker/patches/01005AE0209A8000/36B692C0FA9F6F46.yaml b/SaltySD/plugins/FPSLocker/patches/01005AE0209A8000/36B692C0FA9F6F46.yaml index 45b618b..bb95d83 100644 --- a/SaltySD/plugins/FPSLocker/patches/01005AE0209A8000/36B692C0FA9F6F46.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01005AE0209A8000/36B692C0FA9F6F46.yaml @@ -7,27 +7,27 @@ 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 + type: asm_a64 main_offset: 0x6E3AF0 - value_type: uint32 - value: - - 0xD00049E1 # ADRP X1, 0x1021000 - - 0xBD4E1021 # LDR S1, [X1, 0xE10] + instructions: [ + [adrp, x1, 0x1021000], + [ldr, s1, [x1, 0xe10]] + ] # Redirect DR Targets to MAIN+0x1477F00 - - type: bytes + type: asm_a64 main_offset: 0x6E3B94 - value_type: uint32 - value: - - 0x90006EE9 # ADRP X9, 0x14BF000 - - 0xBD4F0121 # LDR S1, [X9, 0xF00] + instructions: [ + [adrp, x9, 0x14bf000], + [ldr, s1, [x9, 0xf00]] + ] - - type: bytes + type: asm_a64 main_offset: 0x6E3BA4 - value_type: uint32 - value: - - 0x90006EE9 # ADRP X9, 0x14BF000 - - 0xBD4F0521 # LDR S1, [X9, 0xF04] + instructions: [ + [adrp, x9, 0x14bf000], + [ldr, s1, [x9, 0xf04]] + ] # Default values - type: bytes @@ -72,4 +72,5 @@ ALL_FPS: type: evaluate_write address: [MAIN, 0x14BFF00] value_type: float - value: ["1.5 * FRAMETIME_TARGET", "1.2 * FRAMETIME_TARGET"] \ No newline at end of file + + value: ["1.5 * FRAMETIME_TARGET", "1.2 * FRAMETIME_TARGET"] diff --git a/SaltySD/plugins/FPSLocker/patches/01005EA01C0FC001/D91C67509C6AED8D.yaml b/SaltySD/plugins/FPSLocker/patches/01005EA01C0FC001/D91C67509C6AED8D.yaml index 3f46a67..c3645be 100644 --- a/SaltySD/plugins/FPSLocker/patches/01005EA01C0FC001/D91C67509C6AED8D.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01005EA01C0FC001/D91C67509C6AED8D.yaml @@ -7,17 +7,19 @@ MASTER_WRITE: # NOP internal FPS Lock # REF: 00 00 23 1E E1 02 27 1E 00 08 21 1E - - type: bytes + type: asm_a64 main_offset: 0x7E4AA4 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] # Set window present interval to 2 to get default 30 FPS lock # REF: 34 14 9F 1A - - type: bytes + type: asm_a64 main_offset: 0x22FCB88 - value_type: uint32 - value: 0x52800054 + instructions: [ + [mov, w20, 2] + ] ALL_FPS: # DUMMY - @@ -25,3 +27,4 @@ ALL_FPS: address: [MAIN, 0x5226F00] value_type: uint8 value: 0 + diff --git a/SaltySD/plugins/FPSLocker/patches/010060700AC50000/E853C44FDF18B88F.yaml b/SaltySD/plugins/FPSLocker/patches/010060700AC50000/E853C44FDF18B88F.yaml index d74696a..bb73ddd 100644 --- a/SaltySD/plugins/FPSLocker/patches/010060700AC50000/E853C44FDF18B88F.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010060700AC50000/E853C44FDF18B88F.yaml @@ -7,12 +7,12 @@ unsafeCheck: true MASTER_WRITE: # Redirect reading DR GPU time factor to MAIN + 0x4FC0E00 - - type: bytes + type: asm_a64 main_offset: 0x470E80 - value_type: uint32 - value: - - 0x90025A89 - - 0xBD4E0122 + instructions: [ + [adrp, x9, 0x4fc0000], + [ldr, s2, [x9, 0xe00]] + ] # Default value (= 0.5 / FPS) - type: bytes @@ -38,3 +38,4 @@ ALL_FPS: address: [MAIN, 0x4FC0E00] value_type: float value: "0.5 / FPS_TARGET" + diff --git a/SaltySD/plugins/FPSLocker/patches/0100628004BCE000/81DA4F9E1E961CA6.yaml b/SaltySD/plugins/FPSLocker/patches/0100628004BCE000/81DA4F9E1E961CA6.yaml index 07f829d..6530471 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100628004BCE000/81DA4F9E1E961CA6.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100628004BCE000/81DA4F9E1E961CA6.yaml @@ -6,18 +6,19 @@ unsafeCheck: true MASTER_WRITE: # Remove double buffer - - type: bytes + type: asm_a64 main_offset: 0x7E4ED8 - value_type: uint32 - value: 0x9409328A + instructions: [ + [bl, 0xa31900] + ] - - type: bytes + type: asm_a64 main_offset: 0xA31900 - value_type: uint32 - value: - - 0x52800076 - - 0xB9000836 - - 0x17FFFB2E + instructions: [ + [mov, w22, 3], + [str, w22, [x1, 8]], + [b, 0xa305c0] + ] ALL_FPS: # DUMMY - @@ -25,3 +26,4 @@ ALL_FPS: address: [MAIN, 0x13E5400] value_type: uint8 value: 0 + diff --git a/SaltySD/plugins/FPSLocker/patches/0100650018FE0000/7A450848CFDEC18E.yaml b/SaltySD/plugins/FPSLocker/patches/0100650018FE0000/7A450848CFDEC18E.yaml index d6903ae..51a151c 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100650018FE0000/7A450848CFDEC18E.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100650018FE0000/7A450848CFDEC18E.yaml @@ -7,22 +7,24 @@ unsafeCheck: true MASTER_WRITE: # Block updating DR timings, REF: 00 01 27 1E 48 40 A8 52 - - type: bytes + type: asm_a64 main_offset: 0x1CA806C - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x1CA8074 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x1CA8094 - value_type: uint32 - value: - - 0xD503201F - - 0xD503201F + instructions: [ + [nop], + [nop] + ] # Write default DR timings - type: bytes @@ -51,3 +53,4 @@ ALL_FPS: - type: block what: timing + diff --git a/SaltySD/plugins/FPSLocker/patches/0100651014DBA000/789C2939A757C0CD.yaml b/SaltySD/plugins/FPSLocker/patches/0100651014DBA000/789C2939A757C0CD.yaml index c13c474..65ce71c 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100651014DBA000/789C2939A757C0CD.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100651014DBA000/789C2939A757C0CD.yaml @@ -7,21 +7,21 @@ MASTER_WRITE: # Redirect Dynamic Resolution timings to MAIN + 0x23774F00 # 38.0 - - type: bytes + type: asm_a64 main_offset: 0xF57294 - value_type: uint32 - value: - - 0xB01140E9 - - 0x1E210800 - - 0xBD4F0121 + instructions: [ + [adrp, x9, 0x23774000], + [fmul, s0, s0, s1], + [ldr, s1, [x9, 0xf00]] + ] # 32.0 - - type: bytes + type: asm_a64 main_offset: 0xF572B8 - value_type: uint32 - value: - - 0xBD4F0521 - - 0xD503201F + instructions: [ + [ldr, s1, [x9, 0xf04]], + [nop] + ] # Default values: - type: bytes @@ -41,4 +41,4 @@ ALL_FPS: type: evaluate_write address: [MAIN, 0x23774F00] value_type: float - value: ["(38.0 / (1000/30)) * FRAMETIME_TARGET", "(32.0 / (1000/30)) * FRAMETIME_TARGET"] \ No newline at end of file + value: ["(38.0 / (1000/30)) * FRAMETIME_TARGET", "(32.0 / (1000/30)) * FRAMETIME_TARGET"] diff --git a/SaltySD/plugins/FPSLocker/patches/0100670014482000/824B38A25986B2AB.yaml b/SaltySD/plugins/FPSLocker/patches/0100670014482000/824B38A25986B2AB.yaml index b9fec0e..15f4ddb 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100670014482000/824B38A25986B2AB.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100670014482000/824B38A25986B2AB.yaml @@ -8,14 +8,14 @@ MASTER_WRITE: # Patch code to multiply last frametime by float scale factor stored in MAIN+0x3B4D800 # To match it to Dynamic Resolution calculations - - type: bytes + type: asm_a64 main_offset: 0xB40638 - value_type: uint32 - value: - - 0xB0018069 - - 0xBD480120 - - 0x1E200909 - - 0xD503201F + instructions: [ + [adrp, x9, 0x3b4d000], + [ldr, s0, [x9, 0x800]], + [fmul, s9, s8, s0], + [nop] + ] # Write default dynamic resolution timing factor - type: bytes @@ -28,3 +28,4 @@ ALL_FPS: address: [MAIN, 0x3B4D800] value_type: float value: "FPS_TARGET / 30" + diff --git a/SaltySD/plugins/FPSLocker/patches/0100670014482001/2B59D6C677258A2A.yaml b/SaltySD/plugins/FPSLocker/patches/0100670014482001/2B59D6C677258A2A.yaml index d238e05..24be0c4 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100670014482001/2B59D6C677258A2A.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100670014482001/2B59D6C677258A2A.yaml @@ -8,19 +8,19 @@ MASTER_WRITE: # Patch code to multiply last frametime by float scale factor stored in MAIN+0x4276B00 # To match it to Dynamic Resolution calculations - - type: bytes + type: asm_a64 main_offset: 0xBDBE44 - value_type: uint32 - value: - - 0xF001B4C8 - - 0xBD4B0100 + instructions: [ + [adrp, x8, 0x4276000], + [ldr, s0, [x8, 0xb00]] + ] - - type: bytes + type: asm_a64 main_offset: 0xBDBE58 - value_type: uint32 - value: - - 0x1E200900 - - 0xD503201F + instructions: [ + [fmul, s0, s8, s0], + [nop] + ] # Write default dynamic resolution timing factor - type: bytes @@ -33,3 +33,4 @@ ALL_FPS: address: [MAIN, 0x4276B00] value_type: float value: "FPS_TARGET / 30" + diff --git a/SaltySD/plugins/FPSLocker/patches/0100670014482002/0AE4D1770B196094.yaml b/SaltySD/plugins/FPSLocker/patches/0100670014482002/0AE4D1770B196094.yaml index ca298a8..c049e8e 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100670014482002/0AE4D1770B196094.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100670014482002/0AE4D1770B196094.yaml @@ -8,12 +8,12 @@ MASTER_WRITE: # Patch code to divide last frametime by float scale factor stored in MAIN+0x4422800 # To match it to Dynamic Resolution calculations - - type: bytes + type: asm_a64 main_offset: 0xAD51A0 - value_type: uint32 - value: - - 0xB001CA68 - - 0xBD480101 + instructions: [ + [adrp, x8, 0x4422000], + [ldr, s1, [x8, 0x800]] + ] # Write default dynamic resolution timing factor - type: bytes @@ -26,3 +26,4 @@ ALL_FPS: address: [MAIN, 0x4422800] value_type: float value: "(FPS_TARGET / 30) * 1000" + diff --git a/SaltySD/plugins/FPSLocker/patches/010067B017588000/E5EFB5ABA3601B97.yaml b/SaltySD/plugins/FPSLocker/patches/010067B017588000/E5EFB5ABA3601B97.yaml index 3ac76ec..6f1de13 100644 --- a/SaltySD/plugins/FPSLocker/patches/010067B017588000/E5EFB5ABA3601B97.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010067B017588000/E5EFB5ABA3601B97.yaml @@ -19,43 +19,46 @@ MASTER_WRITE: value: 0x36 # Allow variable game speed instead of fixed - - type: bytes + type: asm_a64 main_offset: 0x36D880 - value_type: uint32 - value: - - 0xF0009308 - - 0x91203108 + instructions: [ + [adrp, x8, 0x15d0000], + [add, x8, x8, 0x80c] + ] - - type: bytes + type: asm_a64 main_offset: 0x36D88C - value_type: uint32 - value: 0x528002C9 + instructions: [ + [mov, w9, 0x16] + ] - - type: bytes + type: asm_a64 main_offset: 0x36D894 - value_type: uint32 - value: - - 0x90009308 - - 0x91042508 + instructions: [ + [adrp, x8, 0x15cd000], + [add, x8, x8, 0x109] + ] - - type: bytes + type: asm_a64 main_offset: 0x36D89C - value_type: uint32 - value: 0x52800269 + instructions: [ + [mov, w9, 0x13] + ] # Force interval to 2 to maintain original 30 FPS lock by default - - type: bytes + type: asm_a64 main_offset: 0x92BB84 - value_type: uint32 - value: 0x52800055 + instructions: [ + [mov, w21, 2] + ] # Redirect DR timing target to MAIN + 0x1C5DF00 - - type: bytes + type: asm_a64 main_offset: 0xA38B18 - value_type: uint32 - value: - - 0xB0009121 - - 0xBD4F0020 + instructions: [ + [adrp, x1, 0x1c5d000], + [ldr, s0, [x1, 0xf00]] + ] ALL_FPS: # DR timing = 1/FPS - @@ -69,3 +72,4 @@ ALL_FPS: address: [MAIN, 0x1C49DD0, 0x39E0] value_type: uint32 value: "VSYNC_TARGET - 1" + diff --git a/SaltySD/plugins/FPSLocker/patches/010069C01AB82000/0A4F14A5C12F470A.yaml b/SaltySD/plugins/FPSLocker/patches/010069C01AB82000/0A4F14A5C12F470A.yaml index f0c57c4..2f62cbd 100644 --- a/SaltySD/plugins/FPSLocker/patches/010069C01AB82000/0A4F14A5C12F470A.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010069C01AB82000/0A4F14A5C12F470A.yaml @@ -6,10 +6,11 @@ unsafeCheck: true 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: bytes + type: asm_a64 main_offset: 0x3780DD0 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] ALL_FPS: # r.DynamicRes.FrameTimeBudget - @@ -28,4 +29,4 @@ ALL_FPS: type: evaluate_write address: [MAIN, 0x7AD5858, 0] value_type: float - value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] \ No newline at end of file + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] diff --git a/SaltySD/plugins/FPSLocker/patches/010072900AFF0000/FE757B10B45C3444.yaml b/SaltySD/plugins/FPSLocker/patches/010072900AFF0000/FE757B10B45C3444.yaml index b948740..143fa54 100644 --- a/SaltySD/plugins/FPSLocker/patches/010072900AFF0000/FE757B10B45C3444.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010072900AFF0000/FE757B10B45C3444.yaml @@ -1,4 +1,4 @@ -# Gear.Club Unlimited 2 +# Gear.Club Unlimited 2 1.7.2 # BID: FE757B10B45C3444 unsafeCheck: true @@ -7,58 +7,60 @@ MASTER_WRITE: # Edit Eden.Graphics.IGraphicsQualityProfile::set_VSyncCount to get interval from MAIN + 0x5FBAF20 # If not edited, light is flickering at > 30 FPS - - type: bytes + type: asm_a64 main_offset: 0x14B4990 - value_type: uint32 - value: - - 0xD0025821 - - 0xB94F2021 - - 0xB9005401 - - 0xD65F03C0 + instructions: [ + [adrp, x1, 0x5fba000], + [ldr, w1, [x1, 0xf20]], + [str, w1, [x0, 0x54]], + [ret] + ] # Edit UnityEngine.QualitySettings::set_vSyncCount to get interval from MAIN + 0x5FBAF20 # If not edited, light is flickering at > 30 FPS - - type: bytes + type: asm_a64 main_offset: 0x1B46EE4 - value_type: uint32 - value: - - 0x900223A0 - - 0xB94F2000 - - 0xA9427BFD - - 0xA9414FF4 - - 0x9100C3FF - - 0xD61F0020 + instructions: [ + [adrp, x0, 0x5fba000], + [ldr, w0, [x0, 0xf20]], + [ldp, x29, x30, [sp, 0x20]], + [ldp, x20, x19, [sp, 0x10]], + [add, sp, sp, 0x30], + [br, x1] + ] # Edit Eden.Graphics.GraphicsQualityManager::SetTargetFrameRate to get interval from MAIN + 0x5FBAF20 # If not edited, it locks to 30 FPS - - type: bytes + type: asm_a64 main_offset: 0x14AB578 - value_type: uint32 - value: 0x947E69DC + instructions: [ + [bl, 0x3445ce8] + ] - - type: bytes + type: asm_a64 main_offset: 0x3445CE8 - value_type: uint32 - value: - - 0xB0015BA1 - - 0xB94F2021 - - 0x2A0103F3 - - 0xD65F03C0 + instructions: [ + [adrp, x1, 0x5fba000], + [ldr, w1, [x1, 0xf20]], + [mov, w19, w1], + [ret] + ] # Edit Eden.Graphics.DynamicResolutionScaler::UpdateScaling to get DR target timing from MAIN + 0x5FBAF28 # If not edited, performance is much worse at > 30 FPS - - type: bytes + type: asm_a64 main_offset: 0x14988BC - value_type: uint32 - value: 0x947EB50F + instructions: [ + [bl, 0x3445cf8] + ] - - type: bytes + type: asm_a64 main_offset: 0x3445CF8 - value_type: uint32 - value: - - 0xB0015BA0 - - 0xBD4F2800 - - 0xD65F03C0 + instructions: [ + [adrp, x0, 0x5fba000], + [ldr, s0, [x0, 0xf28]], + [ret] + ] # Default values - type: bytes @@ -81,3 +83,5 @@ ALL_FPS: address: [MAIN, 0x5FBAF28] value_type: float value: "1.1 * FPS_TARGET" + + diff --git a/SaltySD/plugins/FPSLocker/patches/01007300020FA000/4B159F0F7A360669.yaml b/SaltySD/plugins/FPSLocker/patches/01007300020FA000/4B159F0F7A360669.yaml index ca647d3..abced47 100644 --- a/SaltySD/plugins/FPSLocker/patches/01007300020FA000/4B159F0F7A360669.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01007300020FA000/4B159F0F7A360669.yaml @@ -7,30 +7,34 @@ unsafeCheck: true MASTER_WRITE: # Change minimal game speed to half of default value - - type: bytes + type: asm_a64 main_offset: 0x91DC94 - value_type: uint32 - value: 0x1E2C1001 + instructions: [ + [fmov, s1, 0.5] + ] - - type: bytes + type: asm_a64 main_offset: 0x91DCA0 - value_type: uint32 - value: 0x1E2C1001 + instructions: [ + [fmov, s1, 0.5] + ] - - type: bytes + type: asm_a64 main_offset: 0x91DCAC - value_type: uint32 - value: 0x52A7E008 + instructions: [ + [mov, w8, 0x3f000000] + ] # Block cutscenes from having speed fixed to 30 FPS - - type: bytes + type: asm_a64 main_offset: 0x91DC10 - value_type: uint32 - value: - - 0xD503201F + instructions: [ + [nop] + ] ALL_FPS: - type: evaluate_write address: [MAIN, 0xCCB7AF0, 0x420] value_type: uint32 value: "VSYNC_TARGET - 1" + diff --git a/SaltySD/plugins/FPSLocker/patches/010073601DF1A000/E8BF195297B63BA2.yaml b/SaltySD/plugins/FPSLocker/patches/010073601DF1A000/E8BF195297B63BA2.yaml index 85b628d..d5b047d 100644 --- a/SaltySD/plugins/FPSLocker/patches/010073601DF1A000/E8BF195297B63BA2.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010073601DF1A000/E8BF195297B63BA2.yaml @@ -7,42 +7,42 @@ MASTER_WRITE: # Redirect all hardcoded doubles in DynamicResolutionHandler::Update to MAIN+0x909EF00 ## REF: c8 aa 8a f2 28 07 e8 f2 - - type: bytes + type: asm_a64 main_offset: 0x21FE1E4 - value_type: uint32 - value: - - 0x90037508 # adrp x8, #0x909E000 - - 0xFD478100 # ldr d0, [x8, #0xf00] + instructions: [ + [adrp, x8, 0x909e000], + [ldr, d0, [x8, 0xf00]] + ] - - type: bytes + type: asm_a64 main_offset: 0x21FE3E0 - value_type: uint32 - value: - - 0x90037508 # adrp x8, #0x909E000 - - 0xFD478101 # ldr d1, [x8, #0xf00] + instructions: [ + [adrp, x8, 0x909e000], + [ldr, d1, [x8, 0xf00]] + ] - - type: bytes + type: asm_a64 main_offset: 0x21FE43C - value_type: uint32 - value: - - 0x90037508 # adrp x8, #0x909E000 - - 0xFD478101 # ldr d1, [x8, #0xf00] + instructions: [ + [adrp, x8, 0x909e000], + [ldr, d1, [x8, 0xf00]] + ] - - type: bytes + type: asm_a64 main_offset: 0x21FE7D4 - value_type: uint32 - value: - - 0x90037508 # adrp x8, #0x909E000 - - 0xFD478100 # ldr d0, [x8, #0xf00] + instructions: [ + [adrp, x8, 0x909e000], + [ldr, d0, [x8, 0xf00]] + ] ## REF: c8 aa 8a f2 28 07 f8 f2 - - type: bytes + type: asm_a64 main_offset: 0x21fE550 - value_type: uint32 - value: - - 0x90037508 # adrp x8, #0x909E000 - - 0xFD478100 # ldr d0, [x8, #0xf00] - - 0x1E614000 # fneg d0, d0 + instructions: [ + [adrp, x8, 0x909e000], + [ldr, d0, [x8, 0xf00]], + [fneg, d0, d0] + ] # default value - type: bytes @@ -54,4 +54,4 @@ ALL_FPS: type: evaluate_write address: [MAIN, 0x909EF00] value_type: double - value: "FRAMETIME_TARGET * 0.76" \ No newline at end of file + value: "FRAMETIME_TARGET * 0.76" diff --git a/SaltySD/plugins/FPSLocker/patches/010074F013262000/82D187FE9EF9BE92.yaml b/SaltySD/plugins/FPSLocker/patches/010074F013262000/82D187FE9EF9BE92.yaml index eb41055..4541462 100644 --- a/SaltySD/plugins/FPSLocker/patches/010074F013262000/82D187FE9EF9BE92.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010074F013262000/82D187FE9EF9BE92.yaml @@ -6,12 +6,12 @@ unsafeCheck: false MASTER_WRITE: # Redirect DR frametime target reading to .bss code cave [MAIN, 0x236AB00] - - type: bytes + type: asm_a64 main_offset: 0x124F518 - value_type: uint32 - value: - - 0xF00088C8 - - 0xBD4B0100 + instructions: [ + [adrp, x8, 0x236a000], + [ldr, s0, [x8, 0xb00]] + ] # Original DR frametime target - type: bytes @@ -21,21 +21,22 @@ MASTER_WRITE: - 0.0166666666 # Fix crash when gathering big amount of ether for > 30 FPS - # Code cave at 0x1295DA0 - type: bytes + type: asm_a64 main_offset: 0x67360 - value_type: uint32 - value: 0x9448BA90 + instructions: [ + [bl, 0x1295da0] + ] - # Push fixed 1/30 float to game speed pointer late enough to not affect it - type: bytes + type: asm_a64 main_offset: 0x1295DA0 - value_type: uint32 - value: - - 0xF9400015 - - 0x1E2E1001 - - 0x1E27D002 - - 0x1E221821 - - 0xBD0216A1 - - 0xD65F03C0 + instructions: [ + [ldr, x21, [x0]], + [fmov, s1, 1.0], + [fmov, s2, 30.0], + [fdiv, s1, s1, s2], + [str, s1, [x21, 0x214]], + [ret] + ] ALL_FPS: # vsync - @@ -91,3 +92,4 @@ ALL_FPS: address: [MAIN] value_type: refresh_rate value: 30 + diff --git a/SaltySD/plugins/FPSLocker/patches/01007E3006DDA000/D55608916FA56C18.yaml b/SaltySD/plugins/FPSLocker/patches/01007E3006DDA000/D55608916FA56C18.yaml index 8b83764..57106cd 100644 --- a/SaltySD/plugins/FPSLocker/patches/01007E3006DDA000/D55608916FA56C18.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01007E3006DDA000/D55608916FA56C18.yaml @@ -7,92 +7,98 @@ unsafeCheck: true MASTER_WRITE: # Remove double buffer - - type: bytes + type: asm_a64 main_offset: 0x6DBE0 - value_type: uint32 - value: 0x52800068 + instructions: [ + [mov, w8, 3] + ] # Fix helper functions to not corrupt stack - - type: bytes + type: asm_a64 main_offset: 0x6DC88 - value_type: uint32 - value: 0x52800062 + instructions: [ + [mov, w2, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0x6D85C - value_type: uint32 - value: - - 0xD10103FF - - 0xA9024FF4 - - 0xA9037BFD - - 0x9100C3FD + instructions: [ + [sub, sp, sp, 0x40], + [stp, x20, x19, [sp, 0x20]], + [stp, x29, x30, [sp, 0x30]], + [add, x29, sp, 0x30] + ] - - type: bytes + type: asm_a64 main_offset: 0x6D880 - value_type: uint32 - value: 0x52800062 + instructions: [ + [mov, w2, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0x6D894 - value_type: uint32 - value: - - 0xA9437BFD - - 0xA9424FF4 - - 0x910103FF + instructions: [ + [ldp, x29, x30, [sp, 0x30]], + [ldp, x20, x19, [sp, 0x20]], + [add, sp, sp, 0x40] + ] - - type: bytes + type: asm_a64 main_offset: 0x6D8A4 - value_type: uint32 - value: - - 0xD10143FF - - 0xA90257F6 - - 0xA9034FF4 - - 0xA9047BFD - - 0x910103FD + instructions: [ + [sub, sp, sp, 0x50], + [stp, x22, x21, [sp, 0x20]], + [stp, x20, x19, [sp, 0x30]], + [stp, x29, x30, [sp, 0x40]], + [add, x29, sp, 0x40] + ] - - type: bytes + type: asm_a64 main_offset: 0x6D8DC - value_type: uint32 - value: 0x52800062 + instructions: [ + [mov, w2, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0x6D904 - value_type: uint32 - value: - - 0xA9447BFD - - 0xA9434FF4 - - 0xA94257F6 - - 0x910143FF + instructions: [ + [ldp, x29, x30, [sp, 0x40]], + [ldp, x20, x19, [sp, 0x30]], + [ldp, x22, x21, [sp, 0x20]], + [add, sp, sp, 0x50] + ] - - type: bytes + type: asm_a64 main_offset: 0x6D918 - value_type: uint32 - value: - - 0xD10143FF - - 0xA901D7FF - - 0xA9034FF4 - - 0xA9047BFD - - 0x910103FD + instructions: [ + [sub, sp, sp, 0x50], + [stp, xzr, x21, [sp, 0x18]], + [stp, x20, x19, [sp, 0x30]], + [stp, x29, x30, [sp, 0x40]], + [add, x29, sp, 0x40] + ] - - type: bytes + type: asm_a64 main_offset: 0x6D940 - value_type: uint32 - value: 0x52800062 + instructions: [ + [mov, w2, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0x6D984 - value_type: uint32 - value: - - 0xA9447BFD - - 0xF94013F5 - - 0xA9434FF4 - - 0x910143FF + instructions: [ + [ldp, x29, x30, [sp, 0x40]], + [ldr, x21, [sp, 0x20]], + [ldp, x20, x19, [sp, 0x30]], + [add, sp, sp, 0x50] + ] # Block updating interval - - type: bytes + type: asm_a64 main_offset: 0x5A4C - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] ALL_FPS: # Interval - @@ -100,3 +106,4 @@ ALL_FPS: address: [MAIN, 0x54C5B0, 0] value_type: int32 value: "VSYNC_TARGET - 1" + diff --git a/SaltySD/plugins/FPSLocker/patches/01007EF00011E000/DE0B6AC4EFC1DDA7.yaml b/SaltySD/plugins/FPSLocker/patches/01007EF00011E000/DE0B6AC4EFC1DDA7.yaml index 720da50..c21cadd 100644 --- a/SaltySD/plugins/FPSLocker/patches/01007EF00011E000/DE0B6AC4EFC1DDA7.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01007EF00011E000/DE0B6AC4EFC1DDA7.yaml @@ -7,100 +7,107 @@ MASTER_WRITE: # Remove double buffer ## REF: 61 F6 42 39 - - type: bytes + type: asm_a64 main_offset: 0xD80748 - value_type: uint32 - value: 0x52800021 + instructions: [ + [mov, w1, 1] + ] # Change pointer of time factor for DR calculations to MAIN + 0x1D36FF4 ## REF: 01 01 27 1E 08 59 A8 52 03 08 21 1E, replace hardcoded 100.0 float - - type: bytes + type: asm_a64 main_offset: 0x1153314 - value_type: uint32 - value: - - 0xF0005F08 - - 0x1E210803 - - 0xBD4FF501 + instructions: [ + [adrp, x8, 0x1d36000], + [fmul, s3, s0, s1], + [ldr, s1, [x8, 0xff4]] + ] # Dynamic speed ## Replace nvnQueuePresentTexture call to code cave at MAIN+0x148D964 - - type: bytes + type: asm_a64 main_offset: 0xD874FC - value_type: uint32 - value: 0x141C191A + instructions: [ + [b, 0x148d964] + ] ## Patch game speed function to use speed from MAIN+0x1D36FF0 - - type: bytes + type: asm_a64 main_offset: 0x14092A8 - value_type: uint32 - value: 0x14000003 + instructions: [ + [b, 0x14092b4] + ] - - type: bytes + type: asm_a64 main_offset: 0x14092CC - value_type: uint32 - value: - - 0xB0004969 - - 0xBD4FF121 + instructions: [ + [adrp, x9, 0x1d36000], + [ldr, s1, [x9, 0xff0]] + ] ## Patch UI speed function to use speeed from MAIN+0x1D36FF0 - - type: bytes + type: asm_a64 main_offset: 0x116D0D8 - value_type: uint32 - value: 0xB0005E47 + instructions: [ + [adrp, x7, 0x1d36000] + ] - - type: bytes + type: asm_a64 main_offset: 0x116D0E4 - value_type: uint32 - value: 0xBD4FF0E0 + instructions: [ + [ldr, s0, [x7, 0xff0]] + ] ## CODE CAVE - - type: bytes + type: asm_a64 main_offset: 0x148D964 - value_type: uint32 - value: - - 0xD63F0100 - - 0xD53BE022 - - 0xB0004548 - - 0xF947FD01 - - 0xEB1F003F - - 0x54000061 - - 0xF907FD02 - - 0x17E3E6E0 - - 0xCB010040 - - 0x97FFFBB6 # BL nn::os::ConvertToTimeSpan(nn::os::Tick) - - 0x9E230000 - - 0x52940AA0 - - 0x72A03F80 - - 0x1E230001 - - 0x1E211800 - - 0x1E201001 - - 0x1E212000 - - 0x5400004B - - 0x1E204020 - - 0xB0004548 - - 0xBD4FED01 - - 0x1E212000 - - 0x5400004C - - 0x1E204020 - - 0xBD0FF100 - - 0x17FFFFED - - 0xB0004540 - - 0xB94FF000 - - 0xD65F03C0 - - 0xB0004547 - - 0xB90FE8E1 - - 0x17DDA966 + instructions: [ + [blr, x8], + [mrs, x2, cntpct_el0], + [adrp, x8, 0x1d36000], + [ldr, x1, [x8, 0xff8]], + [cmp, x1, xzr], + [b.ne, 0x148d984], + [str, x2, [x8, 0xff8]], + [b, 0xd87500], + [sub, x0, x2, x1], + [bl, 0x148c860], # BL nn::os::ConvertToTimeSpan(nn::os::Tick) + [ucvtf, s0, x0], + [mov, w0, 0xa055], + [movk, w0, 0x1fc, 16], + [ucvtf, s1, w0], + [fdiv, s0, s0, s1], + [fmov, s1, 2.0], + [fcmp, s0, s1], + [b.lt, 0x148d9b0], + [fmov, s0, s1], + [adrp, x8, 0x1d36000], + [ldr, s1, [x8, 0xfec]], + [fcmp, s0, s1], + [b.gt, 0x148d9c4], + [fmov, s0, s1], + [str, s0, [x8, 0xff0]], + [b, 0x148d97c], + [adrp, x0, 0x1d36000], + [ldr, w0, [x0, 0xff0]], + [ret], + [adrp, x7, 0x1d36000], + [str, w1, [x7, 0xfe8]], + [b, 0xbf7f78] + ] # Signal Cutscenes playing - - type: bytes + type: asm_a64 main_offset: 0xC00680 - value_type: uint32 - value: 0x942234D6 + instructions: [ + [bl, 0x148d9d8] + ] - - type: bytes + type: asm_a64 main_offset: 0xC00E40 - value_type: uint32 - value: 0x942232E6 + instructions: [ + [bl, 0x148d9d8] + ] # Default speed - type: bytes @@ -154,4 +161,4 @@ ALL_FPS: compare_value: 0 address: [MAIN] value_type: refresh_rate - value: 30 \ No newline at end of file + value: 30 diff --git a/SaltySD/plugins/FPSLocker/patches/0100801011C3E000/C4DF04F647BDC727.yaml b/SaltySD/plugins/FPSLocker/patches/0100801011C3E000/C4DF04F647BDC727.yaml index ee6b5ce..17ca716 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100801011C3E000/C4DF04F647BDC727.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100801011C3E000/C4DF04F647BDC727.yaml @@ -6,45 +6,53 @@ unsafeCheck: true MASTER_WRITE: # Block updating values - - type: bytes + type: asm_a64 main_offset: 0x4F3D68 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x4F3D7C - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x4F3D8C - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x4F3D94 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x4D8748 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x4D8754 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x4D8760 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x4D876C - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] # Default 30 FPS values - type: bytes @@ -80,3 +88,4 @@ ALL_FPS: - type: block what: timing + diff --git a/SaltySD/plugins/FPSLocker/patches/010082901D6F2000/FCA830BAE649B898.yaml b/SaltySD/plugins/FPSLocker/patches/010082901D6F2000/FCA830BAE649B898.yaml index 5471597..e26edd2 100644 --- a/SaltySD/plugins/FPSLocker/patches/010082901D6F2000/FCA830BAE649B898.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010082901D6F2000/FCA830BAE649B898.yaml @@ -6,19 +6,19 @@ unsafeCheck: true MASTER_WRITE: # Redirect DR timing range to MAIN + 0x878B800 - - type: bytes + type: asm_a64 main_offset: 0x4451E88 - value_type: uint32 - value: - - 0xD00219C8 - - 0xB9480108 + instructions: [ + [adrp, x8, 0x878b000], + [ldr, w8, [x8, 0x800]] + ] - - type: bytes + type: asm_a64 main_offset: 0x4451ED4 - value_type: uint32 - value: - - 0xD00219C8 - - 0xB9480508 + instructions: [ + [adrp, x8, 0x878b000], + [ldr, w8, [x8, 0x804]] + ] # Default values - type: bytes @@ -32,3 +32,4 @@ ALL_FPS: address: [MAIN, 0x878B800] value_type: float value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(1000 / (FPS_TARGET + 5), 2)"] + diff --git a/SaltySD/plugins/FPSLocker/patches/010082F015576000/8BFBF5B8A7098443.yaml b/SaltySD/plugins/FPSLocker/patches/010082F015576000/8BFBF5B8A7098443.yaml index 3727773..eb227a6 100644 --- a/SaltySD/plugins/FPSLocker/patches/010082F015576000/8BFBF5B8A7098443.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010082F015576000/8BFBF5B8A7098443.yaml @@ -7,23 +7,23 @@ MASTER_WRITE: # Redirect min delta to MAIN + 0x1BC4FF0 # REF: 00 D9 21 7E 28 19 20 1E - - type: bytes + type: asm_a64 main_offset: 0x39ABF8 - value_type: uint32 - value: - - 0xD000C15B # ADRP X27, 0x1BC4000 - - 0xBD4FF368 # LDR S8, [X27, 0xFF0] + instructions: [ + [adrp, x27, 0x1bc4000], + [ldr, s8, [x27, 0xff0]] + ] # Redirect FPS Lock to MAIN + 0x1BC4FF4 # REF: 69 AA 40 B9 0A 40 99 52 - - type: bytes + type: asm_a64 main_offset: 0x39B2D8 - value_type: uint32 - value: - - 0xB000C149 # ADRP X9, 0x7101BC4000 - - 0xB94FF529 # LDR W9, [X9, 0xFF4] - - 0xD503201F # NOP - - 0xD503201F # NOP + instructions: [ + [adrp, x9, 0x1BC4000], + [ldr, w9, [x9, 0xff4]], + [nop], + [nop] + ] # Default values - type: bytes @@ -51,3 +51,4 @@ ALL_FPS: - type: block what: timing + diff --git a/SaltySD/plugins/FPSLocker/patches/010083A018262000/59AF76C13F680B7C.yaml b/SaltySD/plugins/FPSLocker/patches/010083A018262000/59AF76C13F680B7C.yaml index 1bda5b2..8214dd3 100644 --- a/SaltySD/plugins/FPSLocker/patches/010083A018262000/59AF76C13F680B7C.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010083A018262000/59AF76C13F680B7C.yaml @@ -8,10 +8,11 @@ unsafeCheck: true MASTER_WRITE: # Block FPS lock being constantly updated - - type: bytes + type: asm_a64 main_offset: 0x27CE38 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] ALL_FPS: # Internal FPS Lock - @@ -32,3 +33,4 @@ ALL_FPS: - type: block what: timing + diff --git a/SaltySD/plugins/FPSLocker/patches/0100853015E86000/D5C5F47DFABD0812.yaml b/SaltySD/plugins/FPSLocker/patches/0100853015E86000/D5C5F47DFABD0812.yaml index 7db78fb..291cd17 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100853015E86000/D5C5F47DFABD0812.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100853015E86000/D5C5F47DFABD0812.yaml @@ -7,13 +7,13 @@ MASTER_WRITE: # Redirect DR frametime target to MAIN+0x47E0FF0 # REF: 08 4E A8 52 00 01 27 1E 48 8F A8 52, ADRP + ADD + LDR above that - - type: bytes + type: asm_a64 main_offset: 0x1F9BC40 - value_type: uint32 - value: - - 0xB0014229 # adrp x9, #0x47E0000 - - 0xBD4FF120 # ldr s0, [x9, #0xff0] - - 0xD503201F # NOP + instructions: [ + [adrp, x9, 0x47e0000], + [ldr, s0, [x9, 0xff0]], + [nop] + ] # default value - type: bytes @@ -25,4 +25,4 @@ ALL_FPS: type: evaluate_write address: [MAIN, 0x47E0FF0] value_type: float - value: FPS_TARGET \ No newline at end of file + value: FPS_TARGET diff --git a/SaltySD/plugins/FPSLocker/patches/010086C00AF7C000/C7DAB27F22ACD2ED.yaml b/SaltySD/plugins/FPSLocker/patches/010086C00AF7C000/C7DAB27F22ACD2ED.yaml index b262b00..942bd40 100644 --- a/SaltySD/plugins/FPSLocker/patches/010086C00AF7C000/C7DAB27F22ACD2ED.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010086C00AF7C000/C7DAB27F22ACD2ED.yaml @@ -1,29 +1,31 @@ # 妖怪ウォッチ4 ぼくらは同じ空を見上げている 2.2.0 # BID: C7DAB27F22ACD2ED # Game is using double buffer, nvnWindowBuilderSetTextures has hardcoded values. -# So it's not possible to get stable FPS lock between 30 and 60. +# So it's not possible to get stable FPS lock between 30 and 60 without changing refresh rate. unsafeCheck: true MASTER_WRITE: # Change main loop delay from 31.6 ms to 4.2 ms - - type: bytes + type: asm_a64 main_offset: 0x950C6C - value_type: uint32 - value: 0xD2A00800 + instructions: [ + [mov, x0, 0x400000] + ] - - type: bytes + type: asm_a64 main_offset: 0x950C74 - value_type: uint32 - value: 0xD2A00800 + instructions: [ + [mov, x0, 0x400000] + ] - - type: bytes + type: asm_a64 main_offset: 0x950C94 - value_type: uint32 - value: - - 0xD503201F - - 0xD503201F + instructions: [ + [nop], + [nop] + ] ALL_FPS: # DUMMY - diff --git a/SaltySD/plugins/FPSLocker/patches/010089A0117D4000/9B7A3AC5AF1A3B0D.yaml b/SaltySD/plugins/FPSLocker/patches/010089A0117D4000/9B7A3AC5AF1A3B0D.yaml index e0952a5..78e6ad4 100644 --- a/SaltySD/plugins/FPSLocker/patches/010089A0117D4000/9B7A3AC5AF1A3B0D.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010089A0117D4000/9B7A3AC5AF1A3B0D.yaml @@ -6,30 +6,35 @@ unsafeCheck: true # Block updating FPS Lock MASTER_WRITE: - - type: bytes + type: asm_a64 main_offset: 0x1240DFC - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x1240E10 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x1240E1C - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x1240E24 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x1240E2C - value_type: uint32 - value: 0xBD41F100 + instructions: [ + [ldr, s0, [x8, 0x1f0]] + ] ALL_FPS: - type: evaluate_write @@ -54,3 +59,4 @@ ALL_FPS: - type: block what: timing + diff --git a/SaltySD/plugins/FPSLocker/patches/01008C8012920000/8C93B930348C9787.yaml b/SaltySD/plugins/FPSLocker/patches/01008C8012920000/8C93B930348C9787.yaml index e71b1cf..e3ab117 100644 --- a/SaltySD/plugins/FPSLocker/patches/01008C8012920000/8C93B930348C9787.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01008C8012920000/8C93B930348C9787.yaml @@ -6,42 +6,42 @@ unsafeCheck: true MASTER_WRITE: # Disable Dynamic GPU Clocks - - type: bytes + type: asm_a64 main_offset: 0x1DE89CC - value_type: uint32 - value: - - 0xD503201F + instructions: [ + [nop] + ] # Redirect Dynamic Resolution Timings to MAIN+0x4113D00 - - type: bytes + type: asm_a64 main_offset: 0x1DE89A8 - value_type: uint32 - value: - - 0xF001194A - - 0xB94D014A + instructions: [ + [adrp, x10, 0x4113000], + [ldr, w10, [x10, 0xd00]] + ] - - type: bytes + type: asm_a64 main_offset: 0x1DE8A08 - value_type: uint32 - value: - - 0xF001194A - - 0xB94D054A + instructions: [ + [adrp, x10, 0x4113000], + [ldr, w10, [x10, 0xd04]] + ] - - type: bytes + type: asm_a64 main_offset: 0x1DE80C8 - value_type: uint32 - value: - - 0xF001194B - - 0xB94D096C - - 0xB94D0D6B - - 0xD503201F + instructions: [ + [adrp, x11, 0x4113000], + [ldr, w12, [x11, 0xd08]], + [ldr, w11, [x11, 0xd0c]], + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x1DE80F8 - value_type: uint32 - value: - - 0xF001194B - - 0xB94D116B + instructions: [ + [adrp, x11, 0x4113000], + [ldr, w11, [x11, 0xd10]] + ] # Write default values # MAIN + 0x1DE89AC - diff --git a/SaltySD/plugins/FPSLocker/patches/01008CB0156BC000/7735C8DD89D145F2.yaml b/SaltySD/plugins/FPSLocker/patches/01008CB0156BC000/7735C8DD89D145F2.yaml index 208f40c..8f915b3 100644 --- a/SaltySD/plugins/FPSLocker/patches/01008CB0156BC000/7735C8DD89D145F2.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01008CB0156BC000/7735C8DD89D145F2.yaml @@ -7,70 +7,74 @@ unsafeCheck: true MASTER_WRITE: # Force FPS lock to 60 - - type: bytes + type: asm_a64 main_offset: 0x81AB0 - value_type: uint32 - value: 0x72A79108 + instructions: [ + [movk, w8, 0x3c88, 16] + ] # Force refreshing camera to 60 Hz - - type: bytes + type: asm_a64 main_offset: 0x81AE4 - value_type: uint32 - value: 0x72A79109 + instructions: [ + [movk, w9, 0x3c88, 16] + ] # Properly scale frametime for FPS drops - - type: bytes + type: asm_a64 main_offset: 0x81AEC - value_type: uint32 - value: 0x72B7910A + instructions: [ + [movk, w10, 0xbc88, 16] + ] # Read actual frametime instead of hardcoded 1/30 # Store actual frametime as float in seconds to MAIN+0x7A52478 # It sets minimum delta to 1/60 and maximum delta to 1/15 - - type: bytes + type: asm_a64 main_offset: 0x8192C - value_type: uint32 - value: 0x14339A82 + instructions: [ + [b, 0xd68334] + ] - - type: bytes + type: asm_a64 main_offset: 0xD682D0 - value_type: uint32 - value: - - 0xD0000CE9 - - 0xBD4F0121 - - 0xBD4E0922 - - 0x97FFF941 - - 0xD0036749 - - 0xF942392A - - 0xF9023920 - - 0xCB0A000A - - 0x9E230143 - - 0x528F8009 - - 0x72A97249 - - 0x1E270124 - - 0x1E241864 - - 0xD0036749 - - 0x1E212080 - - 0x54000068 - - 0x1E204024 - - 0x14000004 - - 0x1E222080 - - 0x5400004B - - 0x1E204044 - - 0xBD047924 - - 0x52835E08 - - 0xAA1403E0 - - 0x17CC6580 - - 0xAA0003F4 - - 0x17FFFFE6 + instructions: [ + [adrp, x9, 0xf06000], + [ldr, s1, [x9, 0xf00]], + [ldr, s2, [x9, 0xe08]], + [bl, 0xd667e0], + [adrp, x9, 0x7a52000], + [ldr, x10, [x9, 0x470]], + [str, x0, [x9, 0x470]], + [sub, x10, x0, x10], + [ucvtf, s3, x10], + [mov, w9, 0x7c00], + [movk, w9, 0x4b92, 16], + [fmov, s4, w9], + [fdiv, s4, s3, s4], + [adrp, x9, 0x7a52000], + [fcmp, s4, s1], + [b.hi, +12], + [fmov, s4, s1], + [b, +16], + [fcmp, s4, s2], + [b.lt, +8], + [fmov, s4, s2], + [str, s4, [x9, 0x478]], + [mov, w8, 0x1af0], + [mov, x0, x20], + [b, 0x81930], + [mov, x20, x0], + [b, -104] + ] # Read actual frametime as float in seconds from MAIN+0x7A52478 - - type: bytes + type: asm_a64 main_offset: 0x81B50 - value_type: uint32 - value: - - 0xB003CE8B - - 0xB944796B + instructions: [ + [adrp, x11, 0x7a52000], + [ldr, w11, [x11, 0x478]] + ] # Default value - type: bytes @@ -84,3 +88,4 @@ ALL_FPS: address: [MAIN, 0x7A52500] value_type: uint8 value: 0 + diff --git a/SaltySD/plugins/FPSLocker/patches/01008D4007A1E000/C3D46BB3C7059DB1.yaml b/SaltySD/plugins/FPSLocker/patches/01008D4007A1E000/C3D46BB3C7059DB1.yaml index e3ab78a..19b737c 100644 --- a/SaltySD/plugins/FPSLocker/patches/01008D4007A1E000/C3D46BB3C7059DB1.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01008D4007A1E000/C3D46BB3C7059DB1.yaml @@ -6,25 +6,29 @@ unsafeCheck: true MASTER_WRITE: # Remove double buffer - - type: bytes + type: asm_a64 main_offset: 0xB52C64 - value_type: uint32 - value: 0xF100639F + instructions: [ + [cmp, x28, 0x18] + ] - - type: bytes + type: asm_a64 main_offset: 0xB52CD0 - value_type: uint32 - value: 0x52800061 + instructions: [ + [mov, w1, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0xB529A8 - value_type: uint32 - value: 0xF100639F + instructions: [ + [cmp, x28, 0x18] + ] - - type: bytes + type: asm_a64 main_offset: 0xB52A14 - value_type: uint32 - value: 0x52800061 + instructions: [ + [mov, w1, 3] + ] ALL_FPS: # DUMMY - diff --git a/SaltySD/plugins/FPSLocker/patches/010091B01A438000/A735894277FF90F3.yaml b/SaltySD/plugins/FPSLocker/patches/010091B01A438000/A735894277FF90F3.yaml index 8f9edea..3fa0c35 100644 --- a/SaltySD/plugins/FPSLocker/patches/010091B01A438000/A735894277FF90F3.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010091B01A438000/A735894277FF90F3.yaml @@ -7,23 +7,23 @@ MASTER_WRITE: # Redirect min delta to MAIN + 0x1FE0FF0 # REF: 00 D9 21 7E 28 19 20 1E - - type: bytes + type: asm_a64 main_offset: 0x16D9B4 - value_type: uint32 - value: - - 0xF000F39B # ADRP X27, 0x1FE0000 - - 0xBD4FF368 # LDR S8, [X27, 0xFF0] + instructions: [ + [adrp, x27, 0x1fe0000], + [ldr, s8, [x27, 0xff0]] + ] # Redirect FPS Lock to MAIN + 0x1FE0FF4 # REF: 69 B2 40 B9 0A 40 99 52 - - type: bytes + type: asm_a64 main_offset: 0x16DDD0 - value_type: uint32 - value: - - 0xF000F389 # ADRP X9, 0x1FE0000 - - 0xB94FF529 # LDR W9, [X9, 0xFF4] - - 0xD503201F # NOP - - 0xD503201F # NOP + instructions: [ + [adrp, x9, 0x1fe0000], + [ldr, w9, [x9, 0xff4]], + [nop], + [nop] + ] # Default values - type: bytes diff --git a/SaltySD/plugins/FPSLocker/patches/010093C0215B4000/D1D3FFB94AB458B4.yaml b/SaltySD/plugins/FPSLocker/patches/010093C0215B4000/D1D3FFB94AB458B4.yaml new file mode 100644 index 0000000..23b5a26 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010093C0215B4000/D1D3FFB94AB458B4.yaml @@ -0,0 +1,21 @@ +# The Hundred Line -Last Defense Academy- 1.1.2 +# BID: D1D3FFB94AB458B4 +# Last found function with REF: FD 7B BE A9 F3 0B 00 F9 FD 03 00 91 E0 03 01 2A stores some code related to playing above 60 FPS. Look at it if someone will have an issue playing above 60 FPS. + +unsafeCheck: true + +ALL_FPS: + # FPS Lock + # REF: 1B 41 00 00 + - + type: evaluate_write + address: [MAIN, 0xC95D10] + value_type: uint32 + value: FRAMETIME_TARGET * 1000 + # Unknown value, but set in the same function as FPS lock, so it may be important + # REF: 3C 00 00 00 01 00 00 00 00 00 00 00 + - + type: evaluate_write + address: [MAIN, 0xC95CDC] + value_type: uint32 + value: FPS_TARGET \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010097000BC10000/FB4239AA962B429B.yaml b/SaltySD/plugins/FPSLocker/patches/010097000BC10000/FB4239AA962B429B.yaml index ed86f76..59681c3 100644 --- a/SaltySD/plugins/FPSLocker/patches/010097000BC10000/FB4239AA962B429B.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010097000BC10000/FB4239AA962B429B.yaml @@ -6,39 +6,41 @@ unsafeCheck: true MASTER_WRITE: # Detect prerendered cutscenes - - type: bytes + type: asm_a64 main_offset: 0x9F2540 - value_type: uint32 - value: 0x14004E9A + instructions: [ + [b, 0xa05fa8] + ] - - type: bytes + type: asm_a64 main_offset: 0xA05FA8 - value_type: uint32 - value: - - 0xB0008DE8 - - 0x52800021 - - 0xB90FF101 - - 0xF81E0FF3 - - 0xAA0003F3 - - 0x52994000 - - 0x72A77340 - - 0xD4000161 - - 0xAA1303E0 - - 0x17FFB15E + instructions: [ + [adrp, x8, 0x1bc2000], + [mov, w1, 1], + [str, w1, [x8, 0xff0]], + [str, x19, [sp, -0x20], "!"], + [mov, x19, x0], + [mov, w0, 0xca00], + [movk, w0, 0x3b9a, 16], + [svc, 0xb], + [mov, x0, x19], + [b, 0x9f2544] + ] - - type: bytes + type: asm_a64 main_offset: 0x9F26EC - value_type: uint32 - value: 0x14004E39 + instructions: [ + [b, 0xa05fd0] + ] - - type: bytes + type: asm_a64 main_offset: 0xA05FD0 - value_type: uint32 - value: - - 0x2A1F03E3 - - 0xB0008DE4 - - 0xB90FF083 - - 0x17FFDB0D + instructions: [ + [mov, w3, wzr], + [adrp, x4, 0x1bc2000], + [str, w3, [x4, 0xff0]], + [b, 0x9fcc10] + ] ALL_FPS: # Internal FPS Lock - @@ -54,4 +56,5 @@ ALL_FPS: compare_address: [MAIN, 0x1BC2FF0] address: [MAIN] value_type: refresh_rate - value: 30 \ No newline at end of file + + value: 30 diff --git a/SaltySD/plugins/FPSLocker/patches/01009A5009A9E000/069E3EFC16365FFD.yaml b/SaltySD/plugins/FPSLocker/patches/01009A5009A9E000/069E3EFC16365FFD.yaml index 3fc0515..aff9f3f 100644 --- a/SaltySD/plugins/FPSLocker/patches/01009A5009A9E000/069E3EFC16365FFD.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01009A5009A9E000/069E3EFC16365FFD.yaml @@ -8,10 +8,11 @@ MASTER_WRITE: # Triple buffer # REF: 28 60 81 52 E8 37 00 B9 E8 03 1F 32 - - type: bytes + type: asm_a64 main_offset: 0x3AE35C - value_type: uint32 - value: 0x52800068 + instructions: [ + [mov, w8, 3] + ] ALL_FPS: # Disable FPS Lock # REF: C8 46 90 52 first ADRP + LDR + LDR above it @@ -25,4 +26,4 @@ ALL_FPS: type: evaluate_write address: [MAIN, 0xFC0DDC] value_type: float - value: "30.0 / FPS_TARGET" \ No newline at end of file + value: "30.0 / FPS_TARGET" diff --git a/SaltySD/plugins/FPSLocker/patches/0100A21017C42000/693314C08EA157F3.yaml b/SaltySD/plugins/FPSLocker/patches/0100A21017C42000/693314C08EA157F3.yaml index d9d2912..ed1cec3 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100A21017C42000/693314C08EA157F3.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100A21017C42000/693314C08EA157F3.yaml @@ -6,54 +6,54 @@ unsafeCheck: true MASTER_WRITE: # Redirect updating various deltas to read frametime target from UnityEngine.Application::targetFrameRate, REF: 08 10 91 52 08 A1 A7 72 - - type: bytes + type: asm_a64 main_offset: 0x18AE7B8 - value_type: uint32 - value: - - 0xF001ED48 # adrp x8, 0x5659000 - - 0xB9406908 # ldr w8, [x8, #0x68] - - 0x1E230101 # ucvtf s1, w8 - - 0x1E2E1000 # fmov s0, #1.00000000 - - 0x1E211800 # fdiv s0, s0, s1 + instructions: [ + [adrp, x8, 0x5659000], + [ldr, w8, [x8, 0x68]], + [ucvtf, s1, w8], + [fmov, s0, 1.0], + [fdiv, s0, s0, s1] + ] - - type: bytes + type: asm_a64 main_offset: 0x18B2570 - value_type: uint32 - value: - - 0xF001ED28 # adrp x8, 0x5659000 - - 0xB9406908 # ldr w8, [x8, #0x68] - - 0x1E230101 # ucvtf s1, w8 - - 0x1E2E1000 # fmov s0, #1.00000000 - - 0x1E211800 # fdiv s0, s0, s1 + instructions: [ + [adrp, x8, 0x5659000], + [ldr, w8, [x8, 0x68]], + [ucvtf, s1, w8], + [fmov, s0, 1.0], + [fdiv, s0, s0, s1] + ] # Redirect Dynamic Resolution GPU Timing target in DynamicResolutionScaler::Update to MAIN+0x5ACEF08 - - type: bytes + type: asm_a64 main_offset: 0x389C824 - value_type: uint32 - value: - - 0xD0011188 # adrp x8, #0x5ACE000 - - 0xF9478508 # ldr x8, [x8, #0xf08] - - 0xD503201F # nop - - 0xD503201F # nop + instructions: [ + [adrp, x8, 0x5ace000], + [ldr, x8, [x8, 0xf08]], + [nop], + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x389C8A4 - value_type: uint32 - value: - - 0xD0011188 # adrp x8, #0x5ACE000 - - 0xF9478508 # ldr x8, [x8, #0xf08] - - 0xBD402A60 # ldr s0, [x19, #0x28] - - 0xD503201F # nop - - 0xD503201F # nop + instructions: [ + [adrp, x8, 0x5ace000], + [ldr, x8, [x8, 0xf08]], + [ldr, s0, [x19, 0x28]], + [nop], + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x389C918 - value_type: uint32 - value: - - 0xD0011188 # adrp x8, #0x5ACE000 - - 0xF9478508 # ldr x8, [x8, #0xf08] - - 0xD503201F # nop - - 0xD503201F # nop + instructions: [ + [adrp, x8, 0x5ace000], + [ldr, x8, [x8, 0xf08]], + [nop], + [nop] + ] # Default values - type: bytes @@ -77,4 +77,5 @@ ALL_FPS: type: evaluate_write address: [MAIN, 0x5ACEF08] value_type: double - value: "1000 / (FPS_TARGET + 5)" \ No newline at end of file + + value: "1000 / (FPS_TARGET + 5)" diff --git a/SaltySD/plugins/FPSLocker/patches/0100A2902051A000/05ADD0D5FD677639.yaml b/SaltySD/plugins/FPSLocker/patches/0100A2902051A000/05ADD0D5FD677639.yaml new file mode 100644 index 0000000..864965f --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100A2902051A000/05ADD0D5FD677639.yaml @@ -0,0 +1,27 @@ +# Poppy Playtime: Chapter 4 1.1 +# BID: 05ADD0D5FD677639 + +unsafeCheck: true + +ALL_FPS: + # r.VSync + - + type: write + address: [MAIN, 0x7F05990, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: evaluate_write + address: [MAIN, 0x8EC1E30, 0] + value_type: float + value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x8EFD150, 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/0100A8E016236000/82AF4E16BBC0BEC8.yaml b/SaltySD/plugins/FPSLocker/patches/0100A8E016236000/82AF4E16BBC0BEC8.yaml index 8899a7a..c4d2003 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100A8E016236000/82AF4E16BBC0BEC8.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100A8E016236000/82AF4E16BBC0BEC8.yaml @@ -9,126 +9,135 @@ unsafeCheck: true MASTER_WRITE: # Remove double buffer - - type: bytes + type: asm_a64 main_offset: 0x861208 - value_type: uint32 - value: 0x52800069 + instructions: [ + [mov, w9, 3] + ] # Fix helper functions to properly copy third buffer address to stack - - type: bytes + type: asm_a64 main_offset: 0x8612DC - value_type: uint32 - value: 0x52800062 + instructions: [ + [mov, w2, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0x8654D8 - value_type: uint32 - value: - - 0xD10183FF - - 0xA9027BFD - - 0x910083FD - - 0xF9001BF7 - - 0xA90457F6 - - 0xA9054FF4 - - 0xA9017FFF + instructions: [ + [sub, sp, sp, 0x60], + [stp, x29, x30, [sp, 0x20]], + [add, x29, sp, 0x20], + [str, x23, [sp, 0x30]], + [stp, x22, x21, [sp, 0x40]], + [stp, x20, x19, [sp, 0x50]], + [stp, xzr, xzr, [sp, 0x10]] + ] - - type: bytes + type: asm_a64 main_offset: 0x86550C - value_type: uint32 - value: 0x52800062 + instructions: [ + [mov, w2, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0x8655B8 - value_type: uint32 - value: - - 0xA9002BE8 - - 0x97FFE69B - - 0xA9454FF4 - - 0xF9401BF7 - - 0xA94457F6 - - 0xA9427BFD - - 0x910183FF + instructions: [ + [stp, x8, x10, [sp]], + [bl, 0x85f028], + [ldp, x20, x19, [sp, 0x50]], + [ldr, x23, [sp, 0x30]], + [ldp, x22, x21, [sp, 0x40]], + [ldp, x29, x30, [sp, 0x20]], + [add, sp, sp, 0x60] + ] - - type: bytes + type: asm_a64 main_offset: 0x793298 - value_type: uint32 - value: - - 0xD10143FF - - 0xA9027BFD - - 0x910083FD - - 0xA90357F6 - - 0xA9044FF4 + instructions: [ + [sub, sp, sp, 0x50], + [stp, x29, x30, [sp, 0x20]], + [add, x29, sp, 0x20], + [stp, x22, x21, [sp, 0x30]], + [stp, x20, x19, [sp, 0x40]], + ] - - type: bytes + type: asm_a64 main_offset: 0x7932E0 - value_type: uint32 - value: 0xA9017FFF + instructions: [ + [stp, xzr, xzr, [sp, 0x10]] + ] - - type: bytes + type: asm_a64 main_offset: 0x7932EC - value_type: uint32 - value: 0x52800062 + instructions: [ + [mov, w2, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0x793310 - value_type: uint32 - value: - - 0xA9444FF4 - - 0xA94357F6 - - 0xA9427BFD - - 0x910143FF + instructions: [ + [ldp, x20, x19, [sp, 0x40]], + [ldp, x22, x21, [sp, 0x30]], + [ldp, x29, x30, [sp, 0x20]], + [add, sp, sp, 0x50] + ] - - type: bytes + type: asm_a64 main_offset: 0x876B00 - value_type: uint32 - value: - - 0x910043E1 - - 0x910043F7 + instructions: [ + [add, x1, sp, 0x10], + [add, x23, sp, 0x10] + ] - - type: bytes + type: asm_a64 main_offset: 0x876B14 - value_type: uint32 - value: - - 0x52800062 - - 0xA9017FFF + instructions: [ + [mov, w2, 3], + [stp, xzr, xzr, [sp, 0x10]] + ] - - type: bytes + type: asm_a64 main_offset: 0x8CFC44 - value_type: uint32 - value: - - 0x910003E1 - - 0x52800062 + instructions: [ + [mov, x1, sp], + [mov, w2, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0x8CFC5C - value_type: uint32 - value: 0x910003FA + instructions: [ + [mov, x26, sp] + ] - - type: bytes + type: asm_a64 main_offset: 0x876B14 - value_type: uint32 - value: 0x52800062 + instructions: [ + [mov, w2, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0x8612DC - value_type: uint32 - value: 0x52800062 + instructions: [ + [mov, w2, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0x876A64 - value_type: uint32 - value: 0x52800062 + instructions: [ + [mov, w2, 3] + ] # Disable transparency for some 2D elements to avoid issues with flickering at triple buffer - - type: bytes + type: asm_a64 main_offset: 0x7BFB00 - value_type: uint32 - value: - - 0xD2802049 - - 0xB948494A - - 0xD37DF14C - - 0x9120A114 - - 0xF9000289 + instructions: [ + [mov, x9, 0x102], + [ldr, w10, [x10, 0x848]], + [lsl, x12, x10, 3], + [add, x20, x8, 0x828], + [str, x9, [x20]] + ] ALL_FPS: # Interval - @@ -136,3 +145,4 @@ ALL_FPS: address: [MAIN, 0xBEBFD8, 0] value_type: int32 value: VSYNC_TARGET + diff --git a/SaltySD/plugins/FPSLocker/patches/0100A9001C042000/3565E26E8827C846.yaml b/SaltySD/plugins/FPSLocker/patches/0100A9001C042000/3565E26E8827C846.yaml index 683c8b3..04bd755 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100A9001C042000/3565E26E8827C846.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100A9001C042000/3565E26E8827C846.yaml @@ -6,19 +6,19 @@ unsafeCheck: true MASTER_WRITE: # Redirect DR timing range to MAIN + 0x86B9F00 - - type: bytes + type: asm_a64 main_offset: 0x3DC5E90 - value_type: uint32 - value: - - 0x900247A8 - - 0xB94F0108 + instructions: [ + [adrp, x8, 0x86b9000], + [ldr, w8, [x8, 0xf00]] + ] - - type: bytes + type: asm_a64 main_offset: 0x3DC5EFC - value_type: uint32 - value: - - 0x900247A8 - - 0xB94F0508 + instructions: [ + [adrp, x8, 0x86b9000], + [ldr, w8, [x8, 0xf04]] + ] # Default values - type: bytes @@ -32,3 +32,4 @@ ALL_FPS: address: [MAIN, 0x86B9F00] value_type: float value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(1000 / (FPS_TARGET + 5), 2)"] + diff --git a/SaltySD/plugins/FPSLocker/patches/0100B28014132000/810CBA3D7DB83EC0.yaml b/SaltySD/plugins/FPSLocker/patches/0100B28014132000/810CBA3D7DB83EC0.yaml index fc4636c..f6a5e9f 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100B28014132000/810CBA3D7DB83EC0.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100B28014132000/810CBA3D7DB83EC0.yaml @@ -6,30 +6,35 @@ unsafeCheck: true # Block updating FPS Lock MASTER_WRITE: - - type: bytes + type: asm_a64 main_offset: 0x1240DFC - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x1240E10 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x1240E1C - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x1240E24 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x1240E2C - value_type: uint32 - value: 0xBD41F100 + instructions: [ + [ldr, s0, [x8, 0x1f0]] + ] ALL_FPS: - type: evaluate_write @@ -54,3 +59,4 @@ ALL_FPS: - type: block what: timing + diff --git a/SaltySD/plugins/FPSLocker/patches/0100B8E016F76000/992787E2B5425994.yaml b/SaltySD/plugins/FPSLocker/patches/0100B8E016F76000/992787E2B5425994.yaml index 75e7227..4a9b72c 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100B8E016F76000/992787E2B5425994.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100B8E016F76000/992787E2B5425994.yaml @@ -6,33 +6,34 @@ unsafeCheck: true MASTER_WRITE: # Redirect DR timings to MAIN + 0x2BE8F00, [Bad, Optimal, Good] - - type: bytes + type: asm_a64 main_offset: 0x9C07A4 - value_type: uint32 - value: - - 0x9001114C - - 0xBD4F0183 + instructions: [ + [adrp, x12, 0x2be8000], + [ldr, s3, [x12, 0xf00]] + ] - - type: bytes + type: asm_a64 main_offset: 0x9C07F4 - value_type: uint32 - value: - - 0x9001114C - - 0xB94F058C + instructions: [ + [adrp, x12, 0x2be8000], + [ldr, w12, [x12, 0xf04]] + ] - - type: bytes + type: asm_a64 main_offset: 0x9C0844 - value_type: uint32 - value: - - 0x1E20CC83 - - 0x9001114C - - 0xBD4F0580 - - 0xD503201F + instructions: [ + [fcsel, s3, s4, s0, gt], + [adrp, x12, 0x2be8000], + [ldr, s0, [x12, 0xf04]], + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x9C0868 - value_type: uint32 - value: 0xBD4F0980 + instructions: [ + [ldr, s0, [x12, 0xf08]] + ] # Default values - type: bytes @@ -45,3 +46,4 @@ ALL_FPS: address: [MAIN, 0x2BE8F00] value_type: float value: ["1.35 * FRAMETIME_TARGET", "0.9603 * FRAMETIME_TARGET", "0.9 * FRAMETIME_TARGET"] + diff --git a/SaltySD/plugins/FPSLocker/patches/0100B9801F872000/007EA5E2E2541C6F.yaml b/SaltySD/plugins/FPSLocker/patches/0100B9801F872000/007EA5E2E2541C6F.yaml index 10f42e1..bdaded5 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100B9801F872000/007EA5E2E2541C6F.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100B9801F872000/007EA5E2E2541C6F.yaml @@ -7,19 +7,19 @@ MASTER_WRITE: # Redirect Dynamic Resolution target to MAIN+0x2C53F00 # REF: 6A C8 82 52 - - type: bytes + type: asm_a64 main_offset: 0x138238C - value_type: uint32 - value: - - 0xB000C68A # ADRP X10, 0x2c53000 - - 0xB94F014A # LDR W10, [X10, 0xF00] + instructions: [ + [adrp, x10, 0x2c53000], + [ldr, w10, [x10, 0xf00]] + ] - - type: bytes + type: asm_a64 main_offset: 0x13823A8 - value_type: uint32 - value: - - 0xB000C68A # ADRP X10, 0x2c53000 - - 0xB94F054A # LDR W10, [X10, 0xF04] + instructions: [ + [adrp, x10, 0x2c53000], + [ldr, w10, [x10, 0xf04]] + ] # Default values - type: bytes @@ -40,4 +40,5 @@ ALL_FPS: type: evaluate_write address: [MAIN, 0x2C53F00] value_type: float - value: ["1 / FPS_TARGET", "1 / (FPS_TARGET + 5)"] \ No newline at end of file + + value: ["1 / FPS_TARGET", "1 / (FPS_TARGET + 5)"] diff --git a/SaltySD/plugins/FPSLocker/patches/0100BEB015604000/B38D51E0391187EC.yaml b/SaltySD/plugins/FPSLocker/patches/0100BEB015604000/B38D51E0391187EC.yaml index 284da2e..065dd68 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100BEB015604000/B38D51E0391187EC.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100BEB015604000/B38D51E0391187EC.yaml @@ -8,23 +8,23 @@ MASTER_WRITE: # Redirect min delta to MAIN + 0x1BC4FF0 # REF: 00 D9 21 7E 28 19 20 1E - - type: bytes + type: asm_a64 main_offset: 0x39ABF8 - value_type: uint32 - value: - - 0xD000C15B # ADRP X27, 0x1BC4000 - - 0xBD4FF368 # LDR S8, [X27, 0xFF0] + instructions: [ + [adrp, x27, 0x1bc4000], + [ldr, s8, [x27, 0xff0]] + ] # Redirect FPS Lock to MAIN + 0x1BC4FF4 # REF: 69 AA 40 B9 0A 40 99 52 - - type: bytes + type: asm_a64 main_offset: 0x39B2D8 - value_type: uint32 - value: - - 0xB000C149 # ADRP X9, 0x1BC4000 - - 0xB94FF529 # LDR W9, [X9, 0xFF4] - - 0xD503201F # NOP - - 0xD503201F # NOP + instructions: [ + [adrp, x9, 0x1bc4000], + [ldr, w9, [x9, 0xff4]], + [nop], + [nop] + ] # Default values - type: bytes @@ -52,3 +52,4 @@ ALL_FPS: - type: block what: timing + diff --git a/SaltySD/plugins/FPSLocker/patches/0100C09014530000/D92F465FE9920BB6.yaml b/SaltySD/plugins/FPSLocker/patches/0100C09014530000/D92F465FE9920BB6.yaml index ad5f3f1..5587979 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100C09014530000/D92F465FE9920BB6.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100C09014530000/D92F465FE9920BB6.yaml @@ -6,13 +6,13 @@ unsafeCheck: true MASTER_WRITE: # Patch `DynamicResolution.Settings$$get_TargetFPS` to redirect reading targetFPS to unused .bss region [MAIN, 0x5E9AFF0] - - type: bytes + type: asm_a64 main_offset: 0x3821020 - value_type: int32 - value: - - 0xB00133C0 - - 0xBD4FF000 - - 0xD65F03C0 + instructions: [ + [adrp, x0, 0x5e9a000], + [ldr, s0, [x0, 0xff0]], + [ret] + ] # Write default value of `DynamicResolution.Settings$$get_TargetFPS` to redirected address - type: bytes @@ -26,3 +26,4 @@ ALL_FPS: address: [MAIN, 0x5E9AFF0] value_type: float value: FPS_TARGET + diff --git a/SaltySD/plugins/FPSLocker/patches/0100CA3014ADE000/372AB37327DB2C31.yaml b/SaltySD/plugins/FPSLocker/patches/0100CA3014ADE000/372AB37327DB2C31.yaml index 243731f..75ab540 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100CA3014ADE000/372AB37327DB2C31.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100CA3014ADE000/372AB37327DB2C31.yaml @@ -8,13 +8,13 @@ MASTER_WRITE: ## REF: 81 1a 40 bd 02 10 2e 1e ## REF: FPSTarget.<>d__6::MoveNext() - - type: bytes + type: asm_a64 main_offset: 0x2DF1E60 - value_type: uint32 - value: - - 0xF000E048 # adrp x8, #0x49fc000 - - 0xBD4FF101 # ldr s1, [x8, #0xff0] - - 0xD503201F # NOP + instructions: [ + [adrp, x8, 0x49fc000], + [ldr, s1, [x8, 0xff0]], + [nop] + ] ## Default value - type: bytes @@ -27,4 +27,4 @@ ALL_FPS: type: evaluate_write address: [MAIN, 0x49FCFF0] value_type: float - value: "1 / FPS_TARGET" \ No newline at end of file + value: "1 / FPS_TARGET" diff --git a/SaltySD/plugins/FPSLocker/patches/0100CD3010AE2000/53EA0196A4AEB260.yaml b/SaltySD/plugins/FPSLocker/patches/0100CD3010AE2000/53EA0196A4AEB260.yaml index 42d1840..f45ffb3 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100CD3010AE2000/53EA0196A4AEB260.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100CD3010AE2000/53EA0196A4AEB260.yaml @@ -6,36 +6,37 @@ unsafeCheck: true MASTER_WRITE: # Redirect Dynamic Resolution Timings to read always not from .text - - type: bytes + type: asm_a64 main_offset: 0x136A51C - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x136A548 - value_type: uint32 - value: - - 0xD503201F - - 0xD503201F + instructions: [ + [nop], + [nop] + ] # Redirect Dynamic Resolution Timings readings to MAIN+0x3608E00 - - type: bytes + type: asm_a64 main_offset: 0x136A520 - value_type: uint32 - value: - - 0xD00114E8 - - 0xBD4E0100 - - 0xBD4E0501 - - 0xBD4E0902 - - 0xD503201F - - 0xD503201F + instructions: [ + [adrp, x8, 0x3608000], + [ldr, s0, [x8, 0xe00]], + [ldr, s1, [x8, 0xe04]], + [ldr, s2, [x8, 0xe08]], + [nop], + [nop] + ] - - type: bytes + type: asm_a64 main_offset: 0x136A554 - value_type: uint32 - value: - - 0xD00114E9 - - 0x91383129 + instructions: [ + [adrp, x9, 0x3608000], + [add, x9, x9, 0xe0c] + ] # Write default values - type: bytes @@ -111,3 +112,4 @@ ALL_FPS: - type: block what: timing + diff --git a/SaltySD/plugins/FPSLocker/patches/0100CD4012DCA000/B067B077906C6208.yaml b/SaltySD/plugins/FPSLocker/patches/0100CD4012DCA000/B067B077906C6208.yaml index b830081..b48a0f1 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100CD4012DCA000/B067B077906C6208.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100CD4012DCA000/B067B077906C6208.yaml @@ -7,29 +7,29 @@ unsafeCheck: true MASTER_WRITE: # Redirect adjusting game speed to FPS Lock stored in MAIN + 0x2B92800, REF: 20 79 68 BC 01 10 2E 1E 00 D8 21 7E - - type: bytes + type: asm_a64 main_offset: 0xB8ED98 - value_type: uint32 - value: - - 0x90010029 - - 0x91200129 + instructions: [ + [adrp, x9, 0x2b92000], + [add, x9, x9, 0x800] + ] # Redirect FPS Lock to MAIN + 0x2B92800, REF: C8 32 40 B9 E8 C2 00 B9 - - type: bytes + type: asm_a64 main_offset: 0x89668C - value_type: uint32 - value: - - 0x900117E8 - - 0xB9480108 + instructions: [ + [adrp, x8, 0x2b92000], + [ldr, w8, [x8, 0x800]] + ] # Redirect game speed to MAIN + 0x2B92808, REF: 00 28 21 1E 00 A0 00 BD C0 03 5F D6 - - type: bytes + type: asm_a64 main_offset: 0x11139A0 - value_type: uint32 - value: - - 0xF000D3E8 - - 0xBD40A000 - - 0xBD480901 + instructions: [ + [adrp, x8, 0x2b92000], + [ldr, s0, [x0, 0xa0]], + [ldr, s1, [x8, 0x808]] + ] # Default FPS Targets - type: bytes @@ -60,3 +60,4 @@ ALL_FPS: - type: block what: timing + diff --git a/SaltySD/plugins/FPSLocker/patches/0100CF401A98E000/5ECFB8F85105FE3C.yaml b/SaltySD/plugins/FPSLocker/patches/0100CF401A98E000/5ECFB8F85105FE3C.yaml index a53d98f..517f339 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100CF401A98E000/5ECFB8F85105FE3C.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100CF401A98E000/5ECFB8F85105FE3C.yaml @@ -6,19 +6,20 @@ unsafeCheck: true MASTER_WRITE: # Redirect DR Timing target to MAIN + 0x6D91A00, REF: 61 36 40 BD 60 3E 40 BD - - type: bytes + type: asm_a64 main_offset: 0x3534598 - value_type: uint32 - value: 0x944D1AEB + instructions: [ + [bl, 0x487b144] + ] - - type: bytes + type: asm_a64 main_offset: 0x487B144 - value_type: uint32 - value: - - 0xD00128A8 - - 0xBD4A0100 - - 0xBD003E60 - - 0xD65F03C0 + instructions: [ + [adrp, x8, 0x6d91000], + [ldr, s0, [x8, 0xa00]], + [str, s0, [x19, 0x3c]], + [ret] + ] # Default value - type: bytes diff --git a/SaltySD/plugins/FPSLocker/patches/0100D3C010DE8000/59159483CF88330F.yaml b/SaltySD/plugins/FPSLocker/patches/0100D3C010DE8000/59159483CF88330F.yaml index f68e1f6..466a99f 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100D3C010DE8000/59159483CF88330F.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100D3C010DE8000/59159483CF88330F.yaml @@ -7,12 +7,12 @@ unsafeCheck: true MASTER_WRITE: # Move loading FPS lock time to MAIN+0x3AF0800 - - type: bytes + type: asm_a64 main_offset: 0x5F02F8 - value_type: uint32 - value: - - 0x9001A809 - - 0xB9480129 + instructions: [ + [adrp, x9, 0x3af0000], + [ldr, w9, [x9, 0x800]] + ] # Default value - type: bytes @@ -21,34 +21,35 @@ MASTER_WRITE: value: 33333333 # Write game's loop time as float to MAIN+0x3AF0804 - - type: bytes + type: asm_a64 main_offset: 0x5F0348 - value_type: uint32 - value: 0x17FFFF5B + instructions: [ + [b, 0x5f00b4] + ] - - type: bytes + type: asm_a64 main_offset: 0x5F00B4 - value_type: uint32 - value: - - 0xF9000660 - - 0x1E624004 - - 0x14000086 + instructions: [ + [str, x0, [x19, 8]], + [fcvt, s4, d0], + [b, 0x5f02d4] + ] - - type: bytes + type: asm_a64 main_offset: 0x5F02D4 - value_type: uint32 - value: - - 0x9001A808 - - 0xBD080504 - - 0x1400001C + instructions: [ + [adrp, x8, 0x3af0000], + [str, s4, [x8, 0x804]], + [b, 0x5f034c] + ] - # Read lowest timing float factor from MAIN+0x3AF0804 - type: bytes + type: asm_a64 main_offset: 0x65548 - value_type: uint32 - value: - - 0xF001D448 - - 0x1E227800 - - 0xBD480502 + instructions: [ + [adrp, x8, 0x3af0000], + [fminnm, s0, s0, s2], + [ldr, s2, [x8, 0x804]] + ] - # Default value type: bytes main_offset: 0x3AF0804 @@ -60,3 +61,4 @@ ALL_FPS: address: [MAIN, 0x3AF0800] value_type: uint32 value: 11111111 + diff --git a/SaltySD/plugins/FPSLocker/patches/0100DAE019110000/0248DC99035AD28A.yaml b/SaltySD/plugins/FPSLocker/patches/0100DAE019110000/0248DC99035AD28A.yaml index 889f7bb..ab548fe 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100DAE019110000/0248DC99035AD28A.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100DAE019110000/0248DC99035AD28A.yaml @@ -7,23 +7,23 @@ MASTER_WRITE: # Redirect min delta to MAIN + 0x1FE0FF0 # REF: 00 D9 21 7E 28 19 20 1E - - type: bytes + type: asm_a64 main_offset: 0x16D9B4 - value_type: uint32 - value: - - 0xF000F39B # ADRP X27, 0x1FE0000 - - 0xBD4FF368 # LDR S8, [X27, 0xFF0] + instructions: [ + [adrp, x27, 0x1fe0000], + [ldr, s8, [x27, 0xff0]] + ] # Redirect FPS Lock to MAIN + 0x1FE0FF4 # REF: 69 B2 40 B9 0A 40 99 52 - - type: bytes + type: asm_a64 main_offset: 0x16DDD0 - value_type: uint32 - value: - - 0xF000F389 # ADRP X9, 0x1FE0000 - - 0xB94FF529 # LDR W9, [X9, 0xFF4] - - 0xD503201F # NOP - - 0xD503201F # NOP + instructions: [ + [adrp, x9, 0x1fe0000], + [ldr, w9, [x9, 0xff4]], + [nop], + [nop] + ] # Default values - type: bytes @@ -51,3 +51,4 @@ ALL_FPS: - type: block what: timing + diff --git a/SaltySD/plugins/FPSLocker/patches/0100DCA0064A6000/79E5950FFA85ACF6.yaml b/SaltySD/plugins/FPSLocker/patches/0100DCA0064A6000/79E5950FFA85ACF6.yaml index f32399c..33ea598 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100DCA0064A6000/79E5950FFA85ACF6.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100DCA0064A6000/79E5950FFA85ACF6.yaml @@ -7,10 +7,11 @@ unsafeCheck: true MASTER_WRITE: # Redirect reading FPS Lock to MAIN+0x1D164DC - - type: bytes + type: asm_a64 main_offset: 0x7A3E9C - value_type: uint32 - value: 0xF000AB8C + instructions: [ + [adrp, x12, 0x1d16000] + ] # Default value - type: bytes @@ -27,3 +28,4 @@ ALL_FPS: - type: block what: timing + diff --git a/SaltySD/plugins/FPSLocker/patches/0100DE70085E8000/F18ACDA7A11CB287.yaml b/SaltySD/plugins/FPSLocker/patches/0100DE70085E8000/F18ACDA7A11CB287.yaml index 5c93507..75b51e4 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100DE70085E8000/F18ACDA7A11CB287.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100DE70085E8000/F18ACDA7A11CB287.yaml @@ -6,25 +6,30 @@ unsafeCheck: true MASTER_WRITE: # Remove double buffer - - type: bytes + type: asm_a64 main_offset: 0xF45DFC - value_type: uint32 + instructions: [ + [cmp, x26, 3] + ] value: 0xF1000F5F - - type: bytes + type: asm_a64 main_offset: 0xF45E64 - value_type: uint32 - value: 0x52800061 + instructions: [ + [mov, w1, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0xF461D4 - value_type: uint32 - value: 0xF1000F5F + instructions: [ + [cmp, x26, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0xF4623C - value_type: uint32 - value: 0x52800061 + instructions: [ + [mov, w1, 3] + ] ALL_FPS: # DUMMY - diff --git a/SaltySD/plugins/FPSLocker/patches/0100E2701A888000/8322528255D2CC63.yaml b/SaltySD/plugins/FPSLocker/patches/0100E2701A888000/8322528255D2CC63.yaml index 06396a6..cc70830 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100E2701A888000/8322528255D2CC63.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100E2701A888000/8322528255D2CC63.yaml @@ -7,38 +7,41 @@ unsafeCheck: true MASTER_WRITE: # Change double buffer to triple buffer - - type: bytes + type: asm_a64 main_offset: 0x138A024 - value_type: uint32 - value: 0x52800068 + instructions: [ + [mov, w8, 3] + ] # Allow changing dynamic resolution timings # Max - changed address to MAIN + 0x7D05200 - - type: bytes + type: asm_a64 main_offset: 0x25992CC - value_type: uint32 - value: - - 0x9002BB68 - - 0xD001C236 - - 0xFD410102 + instructions: [ + [adrp, x8, 0x7d05000], + [adrp, x22, 0x5ddf000], + [ldr, d2, [x8, 0x200]] + ] # Min - changed address to MAIN + 0x7D05208 - - type: bytes + type: asm_a64 main_offset: 0x2599344 - value_type: uint32 - value: - - 0x9002BB6A - - 0xFD410545 + instructions: [ + [adrp, x10, 0x7d05000], + [ldr, d5, [x10, 0x208]] + ] - - type: bytes + type: asm_a64 main_offset: 0x2599380 - value_type: uint32 - value: 0x9002BB6A + instructions: [ + [adrp, x10, 0x7d05000] + ] - - type: bytes + type: asm_a64 main_offset: 0x2599390 - value_type: uint32 - value: 0xFD410546 + instructions: [ + [ldr, d6, [x10, 0x208]] + ] # Default values - type: bytes @@ -63,3 +66,4 @@ ALL_FPS: address: [MAIN, 0x7D05208] value_type: double value: "0.96 * FRAMETIME_TARGET" + diff --git a/SaltySD/plugins/FPSLocker/patches/0100E5900F49A000/A8BA2A8F93AAE647.yaml b/SaltySD/plugins/FPSLocker/patches/0100E5900F49A000/A8BA2A8F93AAE647.yaml index 7f62062..c573c3c 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100E5900F49A000/A8BA2A8F93AAE647.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100E5900F49A000/A8BA2A8F93AAE647.yaml @@ -6,12 +6,12 @@ unsafeCheck: true MASTER_WRITE: # Redirect DynamicResolutionManager$$Update Timing to be read from MAIN+0x72C6500 - - type: bytes + type: asm_a64 main_offset: 0x2B0188C - value_type: uint32 - value: - - 0xB0023E28 - - 0xBD450101 + instructions: [ + [adrp, x8, 0x72c6000], + [ldr, s1, [x8, 0x500]] + ] # Write default value - type: bytes @@ -25,3 +25,4 @@ ALL_FPS: address: [MAIN, 0x72C6500] value_type: float value: "0.97 * FRAMETIME_TARGET" + diff --git a/SaltySD/plugins/FPSLocker/patches/0100E6300AA3A000/AAC6FB02E03062EF.yaml b/SaltySD/plugins/FPSLocker/patches/0100E6300AA3A000/AAC6FB02E03062EF.yaml index 6b48b9d..50ba91b 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100E6300AA3A000/AAC6FB02E03062EF.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100E6300AA3A000/AAC6FB02E03062EF.yaml @@ -6,12 +6,12 @@ unsafeCheck: true MASTER_WRITE: # Remove double buffer - - type: bytes + type: asm_a64 main_offset: 0x64A8 - value_type: uint32 - value: - - 0x52800062 - - 0x9B022501 + instructions: [ + [mov, w2, 3], + [madd, x1, x8, x2, x9] + ] - type: bytes main_offset: 0xC526D0 @@ -23,62 +23,65 @@ MASTER_WRITE: value_type: uint32 value: 0x1887D70 - - type: bytes + type: asm_a64 main_offset: 0xC4EDE0 - value_type: uint32 - value: - - 0xF9400B40 - - 0xB40000C0 - - 0xF0005808 - - 0xF940A908 - - 0xF9400108 - - 0xD63F0100 - - 0x14000004 - - 0x321A07E0 - - 0x97EB7350 - - 0xF9000B40 - - 0xF9400376 - - 0xD000581B - - 0xF9400335 - - 0xF947FF7B - - 0xF0005817 - - 0xF9400368 - - 0xF9459AF7 - - 0xAA1703E0 - - 0xD63F0100 - - 0xAA0003E2 - - 0xAA1503E0 - - 0xAA1603E1 - - 0x97CECB12 - - 0xAA0003F5 - - 0xF9400320 - - 0x97CECB1F - - 0xF9400388 - - 0xAA0003E1 - - 0xAA1703E0 - - 0xAA1503E2 - - 0xD63F0100 - - 0xF9400B40 - - 0xF9400308 - - 0xAA1703E1 - - 0xD63F0100 - - 0xF0005816 - - 0x17CEDC1B + instructions: [ + [ldr, x0, [x26, 0x10]], + [cbz, x0, +24], + [adrp, x8, 0x1751000], + [ldr, x8, [x8, 0x150]], + [ldr, x8, [x8]], + [blr, x8], + [b, +16], + [mov, w0, 0xc0], + [bl, 0x72bb40], + [str, x0, [x26, 0x10]], + [ldr, x22, [x27]], + [adrp, x27, 0x1750000], + [ldr, x21, [x25]], + [ldr, x27, [x27, 0xff8]], + [adrp, x23, 0x1751000], + [ldr, x8, [x27]], + [ldr, x23, [x23, 0xb30]], + [mov, x0, x23], + [blr, x8], + [mov, x2, x0], + [mov, x0, x21], + [mov, x1, x22], + [bl, 0x1a80], + [mov, x21, x0], + [ldr, x0, [x25]], + [bl, 0x1ac0], + [ldr, x8, [x28]], + [mov, x1, x0], + [mov, x0, x23], + [mov, x2, x21], + [blr, x8], + [ldr, x0, [x26, 0x10]], + [ldr, x8, [x24]], + [mov, x1, x23], + [blr, x8], + [adrp, x22, 0x1751000], + [b, 0x5edc] + ] - - type: bytes + type: asm_a64 main_offset: 0x5ED8 - value_type: uint32 - value: 0x143123C2 + instructions: [ + [b, 0xc4ede0] + ] - - type: bytes + type: asm_a64 main_offset: 0x5FB0 - value_type: uint32 - value: 0x52800061 + instructions: [ + [mov, w1, 3] + ] - - type: bytes + type: asm_a64 main_offset: 0x5F7C - value_type: uint32 - value: 0xD2A032A2 + instructions: [ + [mov, x2, 0x1950000] + ] ALL_FPS: # dummy - diff --git a/SaltySD/plugins/FPSLocker/patches/0100E66010ADE000/45CE2B6625A35771.yaml b/SaltySD/plugins/FPSLocker/patches/0100E66010ADE000/45CE2B6625A35771.yaml index 25cd732..80551dc 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100E66010ADE000/45CE2B6625A35771.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100E66010ADE000/45CE2B6625A35771.yaml @@ -6,39 +6,40 @@ unsafeCheck: true MASTER_WRITE: # Redirect Dynamic Resolution Timings to read always not from .text - - type: bytes + type: asm_a64 main_offset: 0x27CE4B4 - value_type: uint32 - value: 0x1E204020 + instructions: [ + [fmov, s0, s1] + ] # Redirect Dynamic Resolution Timings readings to MAIN+0x3DFAE00 - - type: bytes + type: asm_a64 main_offset: 0x27CE450 - value_type: uint32 - value: - - 0x9000B16D - - 0xBD4E01A1 + instructions: [ + [adrp, x13, 0x3dfa000], + [ldr, s1, [x13, 0xe00]] + ] - - type: bytes + type: asm_a64 main_offset: 0x27CE484 - value_type: uint32 - value: - - 0x9000B169 - - 0x91381129 + instructions: [ + [adrp, x9, 0x3dfa000], + [add, x9, x9, 0xe04] + ] - - type: bytes + type: asm_a64 main_offset: 0x27CE490 - value_type: uint32 - value: - - 0x9000B16A - - 0x9138314A + instructions: [ + [adrp, x10, 0x3dfa000], + [add, x10, x10, 0xe0c] + ] - - type: bytes + type: asm_a64 main_offset: 0x27CE468 - value_type: uint32 - value: - - 0x9000B168 - - 0x91385108 + instructions: [ + [adrp, x8, 0x3dfa000], + [add, x8, x8, 0xe14] + ] # Write default values # MAIN + 0x2C11728 - @@ -104,3 +105,4 @@ ALL_FPS: - type: block what: timing + diff --git a/SaltySD/plugins/FPSLocker/patches/0100E95004038000/F77F1559371C0EC6.yaml b/SaltySD/plugins/FPSLocker/patches/0100E95004038000/F77F1559371C0EC6.yaml index dee5813..1663d45 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100E95004038000/F77F1559371C0EC6.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100E95004038000/F77F1559371C0EC6.yaml @@ -7,74 +7,75 @@ MASTER_WRITE: # Dynamic speed # Jump before pushing frame to the end of .plt, which is 0x8B3900 (backup: MOV W8, #0x21A0) - - type: bytes + type: asm_a64 main_offset: 0x700164 - value_type: uint32 - value: 0x1406CDE7 + instructions: [ + [b, 0x8b3900] + ] # Game speed math, write data to unused .bss, tick at 0x15ECF00, game speed at tick at 0x15ECF08, take min delta from 0x15ECF10 - - type: bytes + type: asm_a64 main_offset: 0x8B3900 - value_type: uint32 - value: - - 0x97FFFB80 - - 0xB00069C2 - - 0xF9478041 - - 0xF9078040 - - 0xB5000061 - - 0x52843408 - - 0x17F93214 - - 0xCB010000 - - 0x97FFFB7C - - 0x1E25D002 - - 0x52807D01 - - 0x9AC10800 - - 0x9E220000 - - 0x52848001 - - 0x72A92E81 - - 0x1E270021 - - 0x14000018 - - 0x900016E0 - - 0xF9406800 - - 0xB4FFFE40 - - 0xBD007800 - - 0xBD007C00 - - 0xF0001B60 - - 0xF9416400 - - 0xBD008000 - - 0xB00069C0 - - 0xBD0F0800 - - 0x17FFFFEA - - 0x1E2E1001 - - 0x1E221822 - - 0x1E222000 - - 0x5400006B - - 0x1E204040 - - 0x17FFFFF0 - - 0xB00069C0 - - 0xBD4F1002 - - 0x1E222000 - - 0x54FFFD88 - - 0x1E204040 - - 0x17FFFFEA - - 0x1E211800 - - 0x17FFFFF3 + instructions: [ + [bl, 0x8b2700], + [adrp, x2, 0x15ec000], + [ldr, x1, [x2, 0xf00]], + [str, x0, [x2, 0xf00]], + [cbnz, x1, +12], + [mov, w8, 0x21a0], + [b, 0x700168], + [sub, x0, x0, x1], + [bl, 0x8b2710], + [fmov, s2, 15.0], + [mov, w1, 1000], + [udiv, x0, x0, x1], + [scvtf, s0, x0], + [mov, w1, 0x2400], + [movk, w1, 0x4974, 16], + [fmov, s1, w1], + [b, +96], + [adrp, x0, 0xb8f000], + [ldr, x0, [x0, 0xd0]], + [cbz, x0, -56], + [str, s0, [x0, 0x78]], + [str, s0, [x0, 0x7c]], + [adrp, x0, 0xc22000], + [ldr, x0, [x0, 0x2c8]], + [str, s0, [x0, 0x80]], + [adrp, x0, 0x15ec000], + [str, s0, [x0, 0xf08]], + [b, -88], + [fmov, s1, 1.0], # + [fdiv, s2, s1, s2], + [fcmp, s0, s2], + [b.lt, +12], + [fmov, s0, s2], + [b, -64], + [adrp, x0, 0x15ec000], + [ldr, s2, [x0, 0xf10]], + [fcmp, s0, s2], + [b.hi, -80], + [fmov, s0, s2], + [b, -88], + [fdiv, s0, s0, s1], + [b, -52] + ] # Patch wind speed to take game speed from MAIN + 0x15ECF08 - - type: bytes + type: asm_a64 main_offset: 0x747DD8 - value_type: uint32 - value: - - 0xB0007528 - - 0xBD4F0906 + instructions: [ + [adrp, x8, 0x15ec000], + [ldr, s6, [x8, 0xf08]] + ] # Redirect DR timing to MAIN + 0x15ECF18 - - type: bytes + type: asm_a64 main_offset: 0x6AA14C - value_type: uint32 - value: - - 0xD0007A08 - - 0xBD4F1900 + instructions: [ + [adrp, x8, 0x15ec000], + [ldr, s0, [x8, 0xf18]] + ] # Default values - type: bytes @@ -125,3 +126,4 @@ ALL_FPS: address: [MAIN, 0x15ECF18] value_type: float value: 0.0333333333 + diff --git a/SaltySD/plugins/FPSLocker/patches/0100ED7012DB2000/1A971CC40B6D5B3F.yaml b/SaltySD/plugins/FPSLocker/patches/0100ED7012DB2000/1A971CC40B6D5B3F.yaml index 8d5dfea..5742e09 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100ED7012DB2000/1A971CC40B6D5B3F.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100ED7012DB2000/1A971CC40B6D5B3F.yaml @@ -7,29 +7,29 @@ unsafeCheck: true MASTER_WRITE: # Redirect adjusting game speed to FPS Lock stored in MAIN + 0x2BFB700, REF: 20 79 68 BC 01 10 2E 1E 00 D8 21 7E - - type: bytes + type: asm_a64 main_offset: 0xB8F528 - value_type: uint32 - value: - - 0x90010369 - - 0x911C0129 + instructions: [ + [adrp, x9, 0x2bfb000], + [add, x9, x9, 0x700] + ] # Redirect FPS Lock to MAIN + 0x2BFB700, REF: C8 32 40 B9 E8 C2 00 B9 - - type: bytes + type: asm_a64 main_offset: 0x8966BC - value_type: uint32 - value: - - 0xB0011B28 - - 0xB9470108 + instructions: [ + [adrp, x8, 0x2bfb000], + [ldr, w8, [x8, 0x700]] + ] # Redirect game speed to MAIN + 0x2BFB708, REF: 00 28 21 1E 00 A0 00 BD C0 03 5F D6 - - type: bytes + type: asm_a64 main_offset: 0x1109040 - value_type: uint32 - value: - - 0xD000D788 - - 0xBD40A000 - - 0xBD470901 + instructions: [ + [adrp, x8, 0x2bfb000], + [ldr, s0, [x0, 0xa0]], + [ldr, s1, [x8, 0x708]] + ] # Default FPS Targets - type: bytes @@ -61,3 +61,4 @@ ALL_FPS: - type: block what: timing + diff --git a/SaltySD/plugins/FPSLocker/patches/0100F2600D710000/4CCD2F6D331DD104.yaml b/SaltySD/plugins/FPSLocker/patches/0100F2600D710000/4CCD2F6D331DD104.yaml index 579d3af..fbd657c 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100F2600D710000/4CCD2F6D331DD104.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100F2600D710000/4CCD2F6D331DD104.yaml @@ -6,27 +6,28 @@ unsafeCheck: true MASTER_WRITE: # Read FPS target from code cave at MAIN + 0xA13170 - - type: bytes + type: asm_a64 main_offset: 0x2004 - value_type: uint32 - value: 0x1428445B + instructions: [ + [b, 0xa13170] + ] # CODE CAVE - read FPS target from MAIN + 0xD94628 - - type: bytes + type: asm_a64 main_offset: 0xA13170 - value_type: uint32 - value: - - 0xB0001C08 - - 0xB9462908 - - 0x17D7BBA4 + instructions: [ + [adrp, x8, 0xd94000], + [ldr, w8, [x8, 0x628]], + [b, 0x2008] + ] # Redirect DR time factor to MAIN + 0x2ECAB38 - - type: bytes + type: asm_a64 main_offset: 0x2140 - value_type: uint32 - value: - - 0x90017648 - - 0xBD4B3909 + instructions: [ + [adrp, x8, 0x2eca000], + [ldr, s9, [x8, 0xb38]] + ] # Default value - type: bytes @@ -44,3 +45,4 @@ ALL_FPS: address: [MAIN, 0x2ECAB38] value_type: float value: "(30 / FPS_TARGET) * 1000000" + diff --git a/SaltySD/plugins/FPSLocker/patches/0100F2C0115B6000/5CB42B1CF25469FB.yaml b/SaltySD/plugins/FPSLocker/patches/0100F2C0115B6000/5CB42B1CF25469FB.yaml index aa507ed..d54a121 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100F2C0115B6000/5CB42B1CF25469FB.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100F2C0115B6000/5CB42B1CF25469FB.yaml @@ -10,135 +10,142 @@ MASTER_WRITE: # Remove double buffer ## REF: A0 2A 40 F9 61 A2 40 39 - - type: bytes + type: asm_a64 main_offset: 0xBBF258 - value_type: uint32 - value: 0x52800021 + instructions: [ + [mov, w1, 1] + ] # Code Injected, $x1 + 0xD8 - last frametime without compensation long ticks, $x0 + 0x50 - fps target used for calculation int, # $x0 + 0x24 - our fps target used for calculation but as float, originally is stored there 30 FPS int that seems to do nothing outside of this function ## MAIN + 0x3ACCFFC = FPS target for reference ## REF: nvnWindowSetPresentInterval - - type: bytes + type: asm_a64 main_offset: 0x2D4E68 - value_type: uint32 - value: - - 0x9001BFC2 - - 0xBD4FFC49 - - 0xAA0003F4 - - 0xAA0103F5 - - 0xF9406C20 - - 0x94A33E6D # BL nn::os::ConvertToTimeSpan(nn::os::Tick) - - 0x52994002 - - 0x72A77342 - - 0x1E220042 - - 0x9E220001 - - 0x1E211841 - - 0x1E292020 - - 0x1E21CD21 - - 0x1E25D009 - - 0x1E292020 - - 0x1E21BD21 - - 0x1E390022 - - 0xB9005282 - - 0xBD002681 - - 0x1400002B + instructions: [ + [adrp, x2, 0x3acc000], + [ldr, s9, [x2, 0xffc]], + [mov, x20, x0], + [mov, x21, x1], + [ldr, x0, [x1, 0xd8]], + [bl, 0x2ba4830], # BL nn::os::ConvertToTimeSpan(nn::os::Tick) + [mov, w2, 0xca00], + [movk, w2, 0x3b9a, 16], + [scvtf, s2, w2], + [scvtf, s1, x0], + [fdiv, s1, s2, s1], + [fcmp, s1, s9], + [fcsel, s1, s9, s1, gt], + [fmov, s9, 15.0], + [fcmp, s1, s9], + [fcsel, s1, s9, s1, lt], + [fcvtzu, w2, s1], + [str, w2, [x20, 0x50]], + [str, s1, [x20, 0x24]], + [b, 0x2d4f60] + ] ## Use our fps target ## REF: 60 52 42 BD 08 4E A8 52 ### Replace LDR S0, [X22,#0x250] - - type: bytes + type: asm_a64 main_offset: 0x2D4730 - value_type: uint32 - value: 0xBD422660 + instructions: [ + [ldr, s0, [x19, 0x224]] + ] ### Replace SCVTF S0, S0 - - type: bytes + type: asm_a64 main_offset: 0x2D4748 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] ## REF: 14 01 40 F9 08 4E A8 52 ### Replace LDR S0, [X22,#0x250] - - type: bytes + type: asm_a64 main_offset: 0x37EA5C - value_type: uint32 - value: 0xBD4226C0 + instructions: [ + [ldr, s0, [x22, 0x224]] + ] ### Replace SCVTF S0, S0 - - type: bytes + type: asm_a64 main_offset: 0x37EA68 - value_type: uint32 - value: 0xD503201F + instructions: [ + [nop] + ] # When prerendered cutscene is active write flag to MAIN + 0x3ACCFFB ## REF: 68 52 40 79 08 01 19 32 68 52 00 79 ## BL to Code Cave 1 - - type: bytes + type: asm_a64 main_offset: 0x2B238B4 - value_type: uint32 - value: 0x975EC581 + instructions: [ + [bl, 0x2d4eb8] + ] ## REF: 68 52 40 79 08 79 18 12 68 52 00 79, inside call ## B to Code Cave 2 - - type: bytes + type: asm_a64 main_offset: 0x2B210CC - value_type: uint32 - value: 0x175ECF7F + instructions: [ + [b, 0x2d4ec8] + ] ## CODE CAVE 1, offset +0x50 relative to start of previous code cave - - type: bytes + type: asm_a64 main_offset: 0x2D4EB8 - value_type: uint32 - value: - - 0x52800022 - - 0x9001BFC3 - - 0x393FEC62 - - 0x17F62A71 # Jump to original BL as B + instructions: [ + [mov, w2, 1], + [adrp, x3, 0x3acc000], + [strb, w2, [x3, 0xffb]], + [b, 0x5f888] # Jump to original BL as B + ] ## CODE CAVE 2, offset +0x10 relative to start of previous code cave - - type: bytes + type: asm_a64 main_offset: 0x2D4EC8 - value_type: uint32 - value: - - 0x9001BFC3 - - 0x393FEC60 - - 0x14A343EC # B nn::oe::SetUserInactivityDetectionTimeExtended(bool) + instructions: [ + [adrp, x3, 0x3acc000], + [strb, w0, [x3, 0xffb]], + [b, 0x2ba5e80] # B nn::oe::SetUserInactivityDetectionTimeExtended(bool) + ] # Adjust DR timing to factor from MAIN + 0x3ACCFF4 # REF: 88 02 15 CB 00 01 23 9E - - type: bytes + type: asm_a64 main_offset: 0xEED54 - value_type: uint32 - value: - - 0xD001CEE8 - - 0xBD4FF501 + instructions: [ + [adrp, x8, 0x3acc000], + [ldr, s1, [x8, 0xff4]] + ] # Fix black background for D-pad menu ## REF: 21 03 5E BC - - type: bytes + type: asm_a64 main_offset: 0x387390 - value_type: uint32 - value: - - 0x17FD36D1 # Jump to Code Cave 3 - - 0x1E202008 + instructions: [ + [b, 0x2d4ed4], # Jump to Code Cave 3 + [fcmp, s0, 0.0] + ] ## CODE CAVE 3, offset +0xC relative to start of previous code cave - - type: bytes + type: asm_a64 main_offset: 0x2D4ED4 - value_type: uint32 - value: - - 0x1E202028 - - 0x54000101 - - 0x785FA328 - - 0x7100151F - - 0x540000A1 - - 0x785F8328 - - 0x7100151F - - 0x54000041 - - 0x1E2E1008 - - 0x1F080409 - - 0x1402C926 # Go back + instructions: [ + [fcmp, s1, 0.0], + [b.ne, +32], + [ldurh, w8, [x25, -6]], + [cmp, w8, 5], + [b.ne, +20], + [ldurh, w8, [x25, -8]], + [cmp, w8, 5], + [b.ne, +8], + [fmov, s8, 1.0], + [fmadd, s9, s0, s8, s1], + [b, 0x387394] # Go back + ] # Default values ## FPS Target - diff --git a/SaltySD/plugins/FPSLocker/patches/0100F3200E7CA000/EAA0B789264F2A75.yaml b/SaltySD/plugins/FPSLocker/patches/0100F3200E7CA000/EAA0B789264F2A75.yaml index bf30457..4a46200 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100F3200E7CA000/EAA0B789264F2A75.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100F3200E7CA000/EAA0B789264F2A75.yaml @@ -7,21 +7,21 @@ MASTER_WRITE: # Redirect FPS Lock to float MAIN+B75F200, frametime and DR target to float MAIN+B75F204 # REF: 08 14 40 BD 00 10 2E 1E 00 18 28 1E - - type: bytes + type: asm_a64 main_offset: 0x36A3F8 - value_type: uint32 - value: - - 0xB0059FA8 - - 0xBD420100 - - 0xBD420508 + instructions: [ + [adrp, x8, 0xb75f000], + [ldr, s0, [x8, 0x200]], + [ldr, s8, [x8, 0x204]] + ] # REF: 00 14 40 BD 09 10 2E 1E (1 instruction before that) - - type: bytes + type: asm_a64 main_offset: 0x34A0EB4 - value_type: uint32 - value: - - 0xF00415E0 - - 0xBD420400 + instructions: [ + [adrp, x0, 0xb75f000], + [ldr, s0, [x0, 0x204]] + ] # Default values - type: bytes diff --git a/SaltySD/plugins/FPSLocker/patches/0100F3400332C000/E3938FA78579C1CA.yaml b/SaltySD/plugins/FPSLocker/patches/0100F3400332C000/E3938FA78579C1CA.yaml index 9fb6e4f..f899a34 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100F3400332C000/E3938FA78579C1CA.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100F3400332C000/E3938FA78579C1CA.yaml @@ -7,74 +7,75 @@ MASTER_WRITE: # Dynamic speed # Jump before pushing frame to the end of .plt, which is 0x8B3448 (backup: MOV W8, #0x21A0) - - type: bytes + type: asm_a64 main_offset: 0x700050 - value_type: uint32 - value: 0x1406CCFE + instructions: [ + [b, 0x8b3448] + ] # Game speed math, write data to unused .bss, tick at 0x15ECF00, game speed at 0x15ECF08, take min delta from 0x15ECF10 - - type: bytes + type: asm_a64 main_offset: 0x8B3448 - value_type: uint32 - value: - - 0x97FFFB84 - - 0xB00069C2 - - 0xF9478041 - - 0xF9078040 - - 0xB5000061 - - 0x52843408 - - 0x17F932FD - - 0xCB010000 - - 0x97FFFB80 - - 0x1E25D002 - - 0x52807D01 - - 0x9AC10800 - - 0x9E220000 - - 0x52848001 - - 0x72A92E81 - - 0x1E270021 - - 0x14000018 - - 0x900016E0 - - 0xF9406800 - - 0xB4FFFE40 - - 0xBD007800 - - 0xBD007C00 - - 0xF0001B60 - - 0xF9416400 - - 0xBD008000 - - 0xB00069C0 - - 0xBD0F0800 - - 0x17FFFFEA - - 0x1E2E1001 - - 0x1E221822 - - 0x1E222000 - - 0x5400006B - - 0x1E204040 - - 0x17FFFFF0 - - 0xB00069C0 - - 0xBD4F1002 - - 0x1E222000 - - 0x54FFFD88 - - 0x1E204040 - - 0x17FFFFEA - - 0x1E211800 - - 0x17FFFFF3 + instructions: [ + [bl, 0x8b2258], + [adrp, x2, 0x15ec000], + [ldr, x1, [x2, 0xf00]], + [str, x0, [x2, 0xf00]], + [cbnz, x1, +12], + [mov, w8, 0x21a0], + [b, 0x700054], + [sub, x0, x0, x1], + [bl, 0x8b2268], + [fmov, s2, 15.0], + [mov, w1, 1000], + [udiv, x0, x0, x1], + [scvtf, s0, x0], + [mov, w1, 0x2400], + [movk, w1, 0x4974, 16], + [fmov, s1, w1], + [b, +96], + [adrp, x0, 0xb8f000], + [ldr, x0, [x0, 0xd0]], + [cbz, x0, -56], + [str, s0, [x0, 0x78]], + [str, s0, [x0, 0x7c]], + [adrp, x0, 0xc22000], + [ldr, x0, [x0, 0x2c8]], + [str, s0, [x0, 0x80]], + [adrp, x0, 0x15ec000], + [str, s0, [x0, 0xf08]], + [b, -88], + [fmov, s1, 1.0], + [fdiv, s2, s1, s2], + [fcmp, s0, s2], + [b.lt, +12], + [fmov, s0, s2], + [b, -64], + [adrp, x0, 0x15ec000], + [ldr, s2, [x0, 0xf10]], + [fcmp, s0, s2], + [b.hi, -80], + [fmov, s0, s2], + [b, -88], + [fdiv, s0, s0, s1], + [b, -52] + ] # Patch wind speed to take game speed from MAIN + 0x15ECF08 - - type: bytes + type: asm_a64 main_offset: 0x747CC4 - value_type: uint32 - value: - - 0xB0007528 - - 0xBD4F0906 + instructions: [ + [adrp, x8, 0x15ec000], + [ldr, s6, [x8, 0xf08]] + ] # Redirect DR timing to MAIN + 0x15ECF18 - - type: bytes + type: asm_a64 main_offset: 0x6AA038 - value_type: uint32 - value: - - 0xD0007A08 - - 0xBD4F1900 + instructions: [ + [adrp, x8, 0x15ec000], + [ldr, s0, [x8, 0xf18]] + ] # Default values - type: bytes @@ -125,3 +126,4 @@ ALL_FPS: address: [MAIN, 0x15ECF18] value_type: float value: 0.0333333333 + diff --git a/SaltySD/plugins/FPSLocker/patches/0100FBD013AB6000/54551AEABF6E1F41.yaml b/SaltySD/plugins/FPSLocker/patches/0100FBD013AB6000/54551AEABF6E1F41.yaml index 63f5c80..b0c78e2 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100FBD013AB6000/54551AEABF6E1F41.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100FBD013AB6000/54551AEABF6E1F41.yaml @@ -7,12 +7,12 @@ unsafeCheck: true MASTER_WRITE: # Redirect DR frametime target to MAIN+0x30A7F00 - - type: bytes + type: asm_a64 main_offset: 0x193CEA8 - value_type: uint32 - value: - - 0xF000BB4A # adrp x10, #0x30A7000 - - 0xBD4F0142 # ldr s2, [x10, #0xf00] + instructions: [ + [adrp, x10, 0x30a7000], + [ldr, s2, [x10, 0xf00]] + ] # default value - type: bytes @@ -24,4 +24,4 @@ ALL_FPS: type: evaluate_write address: [MAIN, 0x30A7F00] value_type: float - value: FRAMETIME_TARGET \ No newline at end of file + value: FRAMETIME_TARGET diff --git a/SaltySD/saltysd_core.elf b/SaltySD/saltysd_core.elf index 52cf0e3..c086731 100644 Binary files a/SaltySD/saltysd_core.elf and b/SaltySD/saltysd_core.elf differ diff --git a/SaltySD/saltysd_core32.elf b/SaltySD/saltysd_core32.elf index d18222e..3ce5f77 100644 Binary files a/SaltySD/saltysd_core32.elf and b/SaltySD/saltysd_core32.elf differ diff --git a/atmosphere/contents/0000000000534C56/exefs.nsp b/atmosphere/contents/0000000000534C56/exefs.nsp index 5464da0..ac81c53 100644 Binary files a/atmosphere/contents/0000000000534C56/exefs.nsp and b/atmosphere/contents/0000000000534C56/exefs.nsp differ diff --git a/atmosphere/contents/00FF0000636C6BFF/exefs.nsp b/atmosphere/contents/00FF0000636C6BFF/exefs.nsp index ec297f5..48f3741 100644 Binary files a/atmosphere/contents/00FF0000636C6BFF/exefs.nsp and b/atmosphere/contents/00FF0000636C6BFF/exefs.nsp differ diff --git a/atmosphere/exefs_patches/hid_patches/FA528960A4ED9B4C408D2667BFE7C8BCD80E1FE2.ips b/atmosphere/exefs_patches/hid_patches/FA528960A4ED9B4C408D2667BFE7C8BCD80E1FE2.ips new file mode 100644 index 0000000..a27b78d Binary files /dev/null and b/atmosphere/exefs_patches/hid_patches/FA528960A4ED9B4C408D2667BFE7C8BCD80E1FE2.ips differ diff --git a/atmosphere/kips/loader.kip b/atmosphere/kips/loader.kip index 445764e..ef95c06 100644 Binary files a/atmosphere/kips/loader.kip and b/atmosphere/kips/loader.kip differ diff --git a/atmosphere/package3 b/atmosphere/package3 index 7485ae9..cd197a4 100644 Binary files a/atmosphere/package3 and b/atmosphere/package3 differ diff --git a/atmosphere/stratosphere.romfs b/atmosphere/stratosphere.romfs index 21f1922..c60eb97 100644 Binary files a/atmosphere/stratosphere.romfs and b/atmosphere/stratosphere.romfs differ diff --git a/config/MissionControl/missioncontrol.ini.template b/config/MissionControl/missioncontrol.ini.template index ad0c02f..2ae9a05 100644 --- a/config/MissionControl/missioncontrol.ini.template +++ b/config/MissionControl/missioncontrol.ini.template @@ -13,6 +13,8 @@ [misc] ; Set the threshold for which ZL/ZR are considered pressed for controllers with analog triggers. Valid range [0-100] percent [default 50] ;analog_trigger_activation_threshold=50 +; Enable pairing of Dualshock 3 controllers via USB. Disable to avoid conflicts with using the controller wired with sys-con [default true] +;dualshock3_enable_usb_pairing=true ; Set Dualshock 3 player LED behaviour. Valid modes [0-2] where 0=Switch pattern, 1=PS3 pattern, 2=Hybrid (Switch pattern reversed to line up with numeric labels on the controller) [default 0] ;dualshock3_led_mode=0 ; Set polling rate for Sony Dualshock 4 controllers. Valid range [0-16] where 0=max, 16=min [default 8 (125Hz)] diff --git a/config/status-monitor/config.ini b/config/status-monitor/config.ini index 9aef763..2de8a3f 100644 --- a/config/status-monitor/config.ini +++ b/config/status-monitor/config.ini @@ -1,8 +1,10 @@ [status-monitor] -preset=Ultra +key_combo=LSTICK+RSTICK battery_avg_iir_filter=false battery_time_left_refreshrate=60 average_gpu_load=false +font_cache=true +preset=Ultra [full] refresh_rate=1 @@ -17,37 +19,38 @@ show_res=true refresh_rate=1 layer_width_align=left layer_height_align=top -handheld_font_size=14 -docked_font_size=14 -spacing=4 +handheld_font_size=13 +docked_font_size=13 real_freqs=true real_volts=true -show=CPU+GPU+RAM+TMP+BAT+RES+FPS -show_full_cpu=true -show_full_res=true -show_show_vdd2=true -#replace_MB_with_RAM_load=true -background_color=#1117 -separator_color=2DFF -cat_color=#CDEF +show=DTC+CPU+GPU+RAM+TMP+BAT+RES+FPS +replace_MB_with_RAM_load=true +background_color=1117 +cat_color=CDEF text_color=#FFFF +spacing=4 +show_full_cpu=true +show_vddq=true +show_vdd2=true +dtc_format=%d/%m/%Y%H:%M [micro] refresh_rate=1 layer_height_align=top handheld_font_size=12 docked_font_size=12 -text_align=left +text_align=LEFT real_freqs=true real_volts=true -show=CPU+GPU+RAM+TMP+RES+FPS+BAT +show=CPU+GPU+RAM+TMP+RES+DTC+FPS+BAT +replace_GB_with_RAM_load=true show_full_cpu=true -show_full_res=false -#replace_GB_with_RAM_load=true background_color=#1113 -separator_color=#2DFF cat_color=#BDFF text_color=#FFFF +dtc_format=%H:%M +show_full_res=false +separator_color=#2DFF [fps-counter] layer_width_align=left diff --git a/config/sys-clk/config.ini b/config/sys-clk/config.ini index bba842d..6d21803 100644 --- a/config/sys-clk/config.ini +++ b/config/sys-clk/config.ini @@ -1,4 +1,4 @@ [values] gpu_dvfs=2 -sync_reversenx=1 +reversenx_sync=1 uncapped_clocks=1 diff --git a/config/ultrahand/lang/de.json b/config/ultrahand/lang/de.json index 0c34081..c360cf0 100644 --- a/config/ultrahand/lang/de.json +++ b/config/ultrahand/lang/de.json @@ -56,6 +56,7 @@ "CLEAN_VERSIONS": "Versionskürzel (v) ausblenden", "KEY_COMBO": "Tasten-Kombi ändern", "MODE": "Modus", + "MODES": "Modi", "LANGUAGE": "Sprache", "OVERLAY_INFO": "Infos zu Ultrahand", "SOFTWARE_UPDATE": "Ultrahand Updates", diff --git a/config/ultrahand/lang/en.json b/config/ultrahand/lang/en.json index 914da3f..fc7446f 100644 --- a/config/ultrahand/lang/en.json +++ b/config/ultrahand/lang/en.json @@ -56,6 +56,7 @@ "CLEAN_VERSIONS": "Clean Versions", "KEY_COMBO": "Key Combo", "MODE": "Mode", + "MODES": "Modes", "LANGUAGE": "Language", "OVERLAY_INFO": "Overlay Info", "SOFTWARE_UPDATE": "Software Update", diff --git a/config/ultrahand/lang/es.json b/config/ultrahand/lang/es.json index 5684cf2..74dfd48 100644 --- a/config/ultrahand/lang/es.json +++ b/config/ultrahand/lang/es.json @@ -56,6 +56,7 @@ "CLEAN_VERSIONS": "Etiquetas Limpias", "KEY_COMBO": "Combinación de Teclas", "MODE": "Modo", + "MODES": "Modos", "LANGUAGE": "Idioma", "OVERLAY_INFO": "Inf. de la superposición", "SOFTWARE_UPDATE": "Act. de Software", diff --git a/config/ultrahand/lang/fr.json b/config/ultrahand/lang/fr.json index a37e50d..18839fc 100644 --- a/config/ultrahand/lang/fr.json +++ b/config/ultrahand/lang/fr.json @@ -56,6 +56,7 @@ "CLEAN_VERSIONS": "Étiquettes propres", "KEY_COMBO": "Combinaison de touches", "MODE": "Mode", + "MODES": "Modes", "LANGUAGE": "Langue", "OVERLAY_INFO": "Informations sur la superposition", "SOFTWARE_UPDATE": "Mise à jour logicielle", diff --git a/config/ultrahand/lang/it.json b/config/ultrahand/lang/it.json index c7d55e9..4ea02a8 100644 --- a/config/ultrahand/lang/it.json +++ b/config/ultrahand/lang/it.json @@ -56,6 +56,7 @@ "CLEAN_VERSIONS": "Etichette Pulite", "KEY_COMBO": "Combinazione di Tasti", "MODE": "Modalità", + "MODES": "Modalità", "LANGUAGE": "Lingua", "OVERLAY_INFO": "Informazioni Overlay", "SOFTWARE_UPDATE": "Aggiornamento Software", diff --git a/config/ultrahand/lang/ja.json b/config/ultrahand/lang/ja.json index dbe4d60..8c7f528 100644 --- a/config/ultrahand/lang/ja.json +++ b/config/ultrahand/lang/ja.json @@ -56,6 +56,7 @@ "CLEAN_VERSIONS": "クリーンバージョン", "KEY_COMBO": "キーコンボ", "MODE": "モード", + "MODES": "モード", "LANGUAGE": "言語", "OVERLAY_INFO": "オーバーレイ情報", "SOFTWARE_UPDATE": "ソフトウェアアップデート", diff --git a/config/ultrahand/lang/ko.json b/config/ultrahand/lang/ko.json index 6836249..110c43a 100644 --- a/config/ultrahand/lang/ko.json +++ b/config/ultrahand/lang/ko.json @@ -56,6 +56,7 @@ "CLEAN_VERSIONS": "정리된 라벨", "KEY_COMBO": "키 조합", "MODE": "모드", + "MODES": "모드들", "LANGUAGE": "언어", "OVERLAY_INFO": "오버레이 정보", "SOFTWARE_UPDATE": "소프트웨어 업데이트", diff --git a/config/ultrahand/lang/nl.json b/config/ultrahand/lang/nl.json index 4b78ae8..0573a5e 100644 --- a/config/ultrahand/lang/nl.json +++ b/config/ultrahand/lang/nl.json @@ -56,6 +56,7 @@ "CLEAN_VERSIONS": "Schone Versies", "KEY_COMBO": "Toetscombinatie", "MODE": "Modus", + "MODES": "Modi", "LANGUAGE": "Taal", "OVERLAY_INFO": "Overlay-informatie", "SOFTWARE_UPDATE": "Software Bijwerken", diff --git a/config/ultrahand/lang/pl.json b/config/ultrahand/lang/pl.json index e6c8c17..f11cb9a 100644 --- a/config/ultrahand/lang/pl.json +++ b/config/ultrahand/lang/pl.json @@ -56,6 +56,7 @@ "CLEAN_VERSIONS": "Usuń Prefiks Wersji", "KEY_COMBO": "Kombinacja klawiszy", "MODE": "Tryb", + "MODES": "Tryby", "LANGUAGE": "Język", "OVERLAY_INFO": "Informacje o nakładce", "SOFTWARE_UPDATE": "Aktualizacja oprogramowania", diff --git a/config/ultrahand/lang/pt.json b/config/ultrahand/lang/pt.json index 4514f6e..1546611 100644 --- a/config/ultrahand/lang/pt.json +++ b/config/ultrahand/lang/pt.json @@ -56,6 +56,7 @@ "CLEAN_VERSIONS": "Rótulos Limpos", "KEY_COMBO": "Combinação de Teclas", "MODE": "Modo", + "MODES": "Modos", "LANGUAGE": "Idioma", "OVERLAY_INFO": "Informações da Sobreposição", "SOFTWARE_UPDATE": "Atualização de Software", diff --git a/config/ultrahand/lang/ru.json b/config/ultrahand/lang/ru.json index 4577326..8532942 100644 --- a/config/ultrahand/lang/ru.json +++ b/config/ultrahand/lang/ru.json @@ -56,6 +56,7 @@ "CLEAN_VERSIONS": "Аккуратные версии", "KEY_COMBO": "Комбинация", "MODE": "Режим", + "MODES": "Режимы", "LANGUAGE": "Язык", "OVERLAY_INFO": "Информация", "SOFTWARE_UPDATE": "Обновление", diff --git a/config/ultrahand/lang/uk.json b/config/ultrahand/lang/uk.json index 953d70f..181cfa3 100644 --- a/config/ultrahand/lang/uk.json +++ b/config/ultrahand/lang/uk.json @@ -56,6 +56,7 @@ "CLEAN_VERSIONS": "Чисті версії", "KEY_COMBO": "Комбінація клавіш", "MODE": "Режим", + "MODES": "Режими", "LANGUAGE": "Мова", "OVERLAY_INFO": "Інформація", "SOFTWARE_UPDATE": "Оновлення", diff --git a/config/ultrahand/lang/zh-cn.json b/config/ultrahand/lang/zh-cn.json index 8d3314b..15ed7be 100644 --- a/config/ultrahand/lang/zh-cn.json +++ b/config/ultrahand/lang/zh-cn.json @@ -56,6 +56,7 @@ "CLEAN_VERSIONS": "删除插件标签", "KEY_COMBO": "设置按键组合", "MODE": "模式", + "MODES": "模式", "LANGUAGE": "选择系统语言", "OVERLAY_INFO": "插件信息", "SOFTWARE_UPDATE": "项目更新菜单", diff --git a/config/ultrahand/lang/zh-tw.json b/config/ultrahand/lang/zh-tw.json index a259cf4..b725d18 100644 --- a/config/ultrahand/lang/zh-tw.json +++ b/config/ultrahand/lang/zh-tw.json @@ -56,6 +56,7 @@ "CLEAN_VERSIONS": "刪除插件標簽", "KEY_COMBO": "設置按鍵組合", "MODE": "模式", + "MODES": "模式", "LANGUAGE": "選擇系統語言", "OVERLAY_INFO": "插件信息", "SOFTWARE_UPDATE": "項目更新菜單", diff --git a/switch/.overlays/FPSLocker.ovl b/switch/.overlays/FPSLocker.ovl index 9630bf9..9ce3f76 100644 Binary files a/switch/.overlays/FPSLocker.ovl and b/switch/.overlays/FPSLocker.ovl differ diff --git a/switch/.overlays/Status-Monitor-Overlay.ovl b/switch/.overlays/Status-Monitor-Overlay.ovl index 0b999e5..6f0ccc0 100644 Binary files a/switch/.overlays/Status-Monitor-Overlay.ovl and b/switch/.overlays/Status-Monitor-Overlay.ovl differ diff --git a/switch/.overlays/ovlEdiZon.ovl b/switch/.overlays/ovlEdiZon.ovl index 5807b88..c9e3738 100644 Binary files a/switch/.overlays/ovlEdiZon.ovl and b/switch/.overlays/ovlEdiZon.ovl differ diff --git a/switch/.overlays/ovlSysmodules.ovl b/switch/.overlays/ovlSysmodules.ovl index 23cb838..462286a 100644 Binary files a/switch/.overlays/ovlSysmodules.ovl and b/switch/.overlays/ovlSysmodules.ovl differ diff --git a/switch/.overlays/ovlmenu.ovl b/switch/.overlays/ovlmenu.ovl index 54ede4b..b18baac 100644 Binary files a/switch/.overlays/ovlmenu.ovl and b/switch/.overlays/ovlmenu.ovl differ diff --git a/switch/.overlays/sys-clk-overlay.ovl b/switch/.overlays/sys-clk-overlay.ovl index 32ca550..8d3074f 100644 Binary files a/switch/.overlays/sys-clk-overlay.ovl and b/switch/.overlays/sys-clk-overlay.ovl differ diff --git a/switch/.packages/boot_package.ini b/switch/.packages/boot_package.ini index 91a0da0..d32be73 100644 --- a/switch/.packages/boot_package.ini +++ b/switch/.packages/boot_package.ini @@ -19,7 +19,6 @@ del '/atmosphere/flags/' del '/atmosphere/hbl_html/' del '/atmosphere/hosts/domains.txt' del '/atmosphere/hosts/default.txt' -del '/atmosphere/hosts/emummc.txt' del '/atmosphere/kips/.bak/*.kip' del '/atmosphere/splash.png @@ -31,9 +30,7 @@ del '/atmosphere/kip_patches/fs_patches/' del '/atmosphere/kip_patches/kip_patches/' del '/atmosphere/kip_patches/loader_patches/' -del '/atmosphere/crash_reports/' del '/atmosphere/erpt_reports/' -del '/atmosphere/fatal_reports/' del '/bootloader/ini/fullstock.ini' diff --git a/switch/DBI/DBI.nro b/switch/DBI/DBI.nro index 8126fca..c1472ee 100644 Binary files a/switch/DBI/DBI.nro and b/switch/DBI/DBI.nro differ