diff --git a/SaltySD/exceptions.txt b/SaltySD/exceptions.txt index 27261f5..5f5ecba 100644 --- a/SaltySD/exceptions.txt +++ b/SaltySD/exceptions.txt @@ -44,9 +44,13 @@ X0100964012528000 0100C56010FD8000 ;EA SPORTS FC 24 -;1.0.0 - v1.53.dd6d crash +;1.0.0 - v1.55.bc14 crash 0100BDB01A0E6000 ;Company of Heroes Collection ;1.5_66915 crashes 0100ABD0156F8000 + +;Donkey Kong Country: Tropical Freeze +;Crash at second level +X0100C1F0051B6000 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010017A0128C4000/3D4E3A9252AA6C63.yaml b/SaltySD/plugins/FPSLocker/patches/010017A0128C4000/3D4E3A9252AA6C63.yaml new file mode 100644 index 0000000..af315bb --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010017A0128C4000/3D4E3A9252AA6C63.yaml @@ -0,0 +1,202 @@ +# Jojo's Bizarre Adventure: All-Star Battle R 2.3.3 +# BID: 3D4E3A9252AA6C63 +# There are small issues with animations in cutscenes at higher framerates + +unsafeCheck: true + +15FPS: + # Internal FPS Lock, pointer ref: 00 01 40 F9 E5 03 04 2A + - + type: write + address: [MAIN, 0x2AEDA08, 704] + value_type: uint32 + value: 4 + # Game Speed, pointer ref: F3 03 00 AA 20 00 80 52 F4 03 01 AA + - + type: write + address: [MAIN, 0x2AEF6D0, 1360] + value_type: uint32 + value: 4 + # UI Speed + - + type: write + address: [MAIN, 0x2AEF6D0, 2554] + value_type: uint8 + value: 15 + - + type: block + what: timing +20FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x2AEDA08, 704] + value_type: uint32 + value: 3 + # Game Speed + - + type: write + address: [MAIN, 0x2AEF6D0, 1360] + value_type: uint32 + value: 3 + # UI Speed + - + type: write + address: [MAIN, 0x2AEF6D0, 2554] + value_type: uint8 + value: 20 + - + type: block + what: timing +25FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x2AEDA08, 704] + value_type: uint32 + value: 2 + # Game Speed + - + type: write + address: [MAIN, 0x2AEF6D0, 1360] + value_type: uint32 + value: 2 + # UI Speed + - + type: write + address: [MAIN, 0x2AEF6D0, 2554] + value_type: uint8 + value: 25 +30FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x2AEDA08, 704] + value_type: uint32 + value: 2 + # Game Speed + - + type: write + address: [MAIN, 0x2AEF6D0, 1360] + value_type: uint32 + value: 2 + # UI Speed + - + type: write + address: [MAIN, 0x2AEF6D0, 2554] + value_type: uint8 + value: 30 +35FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x2AEDA08, 704] + value_type: uint32 + value: 1 + # Game Speed + - + type: write + address: [MAIN, 0x2AEF6D0, 1360] + value_type: uint32 + value: 1 + # UI Speed + - + type: write + address: [MAIN, 0x2AEF6D0, 2554] + value_type: uint8 + value: 35 +40FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x2AEDA08, 704] + value_type: uint32 + value: 1 + # Game Speed + - + type: write + address: [MAIN, 0x2AEF6D0, 1360] + value_type: uint32 + value: 1 + # UI Speed + - + type: write + address: [MAIN, 0x2AEF6D0, 2554] + value_type: uint8 + value: 40 +45FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x2AEDA08, 704] + value_type: uint32 + value: 1 + # Game Speed + - + type: write + address: [MAIN, 0x2AEF6D0, 1360] + value_type: uint32 + value: 1 + # UI Speed + - + type: write + address: [MAIN, 0x2AEF6D0, 2554] + value_type: uint8 + value: 45 +50FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x2AEDA08, 704] + value_type: uint32 + value: 1 + # Game Speed + - + type: write + address: [MAIN, 0x2AEF6D0, 1360] + value_type: uint32 + value: 1 + # UI Speed + - + type: write + address: [MAIN, 0x2AEF6D0, 2554] + value_type: uint8 + value: 50 +55FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x2AEDA08, 704] + value_type: uint32 + value: 1 + # Game Speed + - + type: write + address: [MAIN, 0x2AEF6D0, 1360] + value_type: uint32 + value: 1 + # UI Speed + - + type: write + address: [MAIN, 0x2AEF6D0, 2554] + value_type: uint8 + value: 55 +60FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x2AEDA08, 704] + value_type: uint32 + value: 1 + # Game Speed + - + type: write + address: [MAIN, 0x2AEF6D0, 1360] + value_type: uint32 + value: 1 + # UI Speed + - + type: write + address: [MAIN, 0x2AEF6D0, 2554] + value_type: uint8 + value: 60 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010017A0128C4000/B2FA8FF1240615F1.yaml b/SaltySD/plugins/FPSLocker/patches/010017A0128C4000/B2FA8FF1240615F1.yaml new file mode 100644 index 0000000..be1ad00 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010017A0128C4000/B2FA8FF1240615F1.yaml @@ -0,0 +1,199 @@ +# Jojo's Bizarre Adventure: All-Star Battle R 2.3.0 +# BID: B2FA8FF1240615F1 +# There are small issues with animations in cutscenes at higher framerates +# REF: 28 1C 00 12 89 07 80 52 2A 09 C8 1A + +unsafeCheck: true + +15FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x2AEEA08, 704] + value_type: uint32 + value: 4 + - + type: write + address: [MAIN, 0x2AF06D0, 1360] + value_type: uint32 + value: 4 + # UI Speed + - + type: write + address: [MAIN, 0x2AF06D0, 2554] + value_type: uint8 + value: 15 + - + type: block + what: timing +20FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x2AEEA08, 704] + value_type: uint32 + value: 3 + - + type: write + address: [MAIN, 0x2AF06D0, 1360] + value_type: uint32 + value: 3 + # UI Speed + - + type: write + address: [MAIN, 0x2AF06D0, 2554] + value_type: uint8 + value: 20 + - + type: block + what: timing +25FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x2AEEA08, 704] + value_type: uint32 + value: 2 + - + type: write + address: [MAIN, 0x2AF06D0, 1360] + value_type: uint32 + value: 2 + # UI Speed + - + type: write + address: [MAIN, 0x2AF06D0, 2554] + value_type: uint8 + value: 25 +30FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x2AEEA08, 704] + value_type: uint32 + value: 2 + - + type: write + address: [MAIN, 0x2AF06D0, 1360] + value_type: uint32 + value: 2 + # UI Speed + - + type: write + address: [MAIN, 0x2AF06D0, 2554] + value_type: uint8 + value: 30 +35FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x2AEEA08, 704] + value_type: uint32 + value: 1 + # Game Speed + - + type: write + address: [MAIN, 0x2AF06D0, 1360] + value_type: uint32 + value: 1 + # UI Speed + - + type: write + address: [MAIN, 0x2AF06D0, 2554] + value_type: uint8 + value: 35 +40FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x2AEEA08, 704] + value_type: uint32 + value: 1 + # Game Speed + - + type: write + address: [MAIN, 0x2AF06D0, 1360] + value_type: uint32 + value: 1 + # UI Speed + - + type: write + address: [MAIN, 0x2AF06D0, 2554] + value_type: uint8 + value: 40 +45FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x2AEEA08, 704] + value_type: uint32 + value: 1 + # Game Speed + - + type: write + address: [MAIN, 0x2AF06D0, 1360] + value_type: uint32 + value: 1 + # UI Speed + - + type: write + address: [MAIN, 0x2AF06D0, 2554] + value_type: uint8 + value: 45 +50FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x2AEEA08, 704] + value_type: uint32 + value: 1 + # Game Speed + - + type: write + address: [MAIN, 0x2AF06D0, 1360] + value_type: uint32 + value: 1 + # UI Speed + - + type: write + address: [MAIN, 0x2AF06D0, 2554] + value_type: uint8 + value: 50 +55FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x2AEEA08, 704] + value_type: uint32 + value: 1 + # Game Speed + - + type: write + address: [MAIN, 0x2AF06D0, 1360] + value_type: uint32 + value: 1 + # UI Speed + - + type: write + address: [MAIN, 0x2AF06D0, 2554] + value_type: uint8 + value: 55 +60FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x2AEEA08, 704] + value_type: uint32 + value: 1 + # Game Speed + - + type: write + address: [MAIN, 0x2AF06D0, 1360] + value_type: uint32 + value: 1 + # UI Speed + - + type: write + address: [MAIN, 0x2AF06D0, 2554] + value_type: uint8 + value: 60 diff --git a/SaltySD/plugins/FPSLocker/patches/01001E3017A10000/17F37A56B17DD9CC.yaml b/SaltySD/plugins/FPSLocker/patches/01001E3017A10000/17F37A56B17DD9CC.yaml new file mode 100644 index 0000000..b173f7f --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01001E3017A10000/17F37A56B17DD9CC.yaml @@ -0,0 +1,91 @@ +# Farming Simulator 23 Nintendo Switch Edition 1.5.0.0 +# BID: 17F37A56B17DD9CC + +unsafeCheck: true + +15FPS: + # Internal FPS lock + - + type: write + address: [MAIN, 0xFAD7AC] + value_type: float + value: 15 + - + type: block + what: timing +20FPS: + - + type: write + address: [MAIN, 0xFAD7AC] + value_type: float + value: 20 + - + type: block + what: timing +25FPS: + - + type: write + address: [MAIN, 0xFAD7AC] + value_type: float + value: 25 + - + type: block + what: timing +30FPS: + # default value + - + type: write + address: [MAIN, 0xFAD7AC] + value_type: float + value: 30 +35FPS: + - + type: write + address: [MAIN, 0xFAD7AC] + value_type: float + value: 35 + - + type: block + what: timing +40FPS: + - + type: write + address: [MAIN, 0xFAD7AC] + value_type: float + value: 40 + - + type: block + what: timing +45FPS: + - + type: write + address: [MAIN, 0xFAD7AC] + value_type: float + value: 45 + - + type: block + what: timing +50FPS: + - + type: write + address: [MAIN, 0xFAD7AC] + value_type: float + value: 50 + - + type: block + what: timing +55FPS: + - + type: write + address: [MAIN, 0xFAD7AC] + value_type: float + value: 55 + - + type: block + what: timing +60FPS: + - + type: write + address: [MAIN, 0xFAD7AC] + value_type: float + value: 60 diff --git a/SaltySD/plugins/FPSLocker/patches/01002FC012548000/372BF1E32FC51836.yaml b/SaltySD/plugins/FPSLocker/patches/01002FC012548000/372BF1E32FC51836.yaml new file mode 100644 index 0000000..091de5d --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01002FC012548000/372BF1E32FC51836.yaml @@ -0,0 +1,279 @@ +# Jujutsu Kaisen Cursed Clash JP 1.0.1 +# BID: 372BF1E32FC51836 + +unsafeCheck: true + +15FPS: + # r.DynamicRes.FrameTimeBudget (1000/FPS) rounded to 2 decimals + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [66.66, 66.66] + # t.MaxFPS + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [15, 15] + # r.VSync + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 + - + type: block + what: timing +20FPS: + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [50, 50] + # t.MaxFPS + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [20, 20] + # r.VSync + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 + - + type: block + what: timing +25FPS: + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [40, 40] + # t.MaxFPS + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [25, 25] + # r.VSync + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 + - + type: block + what: timing +30FPS: + # r.DynamicRes.FrameTimeBudget (default value) + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [33.33, 33.33] + # t.MaxFPS (default value is 60) + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [0, 0] + # r.VSync (default value is 1) + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 +35FPS: + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [28.51, 28.51] + # t.MaxFPS + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [35, 35] + # r.VSync + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 + - + type: block + what: timing +40FPS: + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [25, 25] + # t.MaxFPS + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [40, 40] + # r.VSync + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 + - + type: block + what: timing +45FPS: + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [22.22, 22.22] + # t.MaxFPS + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [45, 45] + # r.VSync + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 + - + type: block + what: timing +50FPS: + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [20, 20] + # t.MaxFPS + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [50, 50] + # r.VSync + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 + - + type: block + what: timing +55FPS: + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [18.18, 18.18] + # t.MaxFPS + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [55, 55] + # r.VSync + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 + - + type: block + what: timing +60FPS: + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [16.66, 16.66] + # t.MaxFPS + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [0, 0] + # r.VSync + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 diff --git a/SaltySD/plugins/FPSLocker/patches/01003AE01AA76000/0F09DF1B3AA9E3FD.yaml b/SaltySD/plugins/FPSLocker/patches/01003AE01AA76000/0F09DF1B3AA9E3FD.yaml new file mode 100644 index 0000000..ef1d830 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01003AE01AA76000/0F09DF1B3AA9E3FD.yaml @@ -0,0 +1,82 @@ +# Fate/Samurai Remnant 1.1.3 +# BID: 0F09DF1B3AA9E3FD + +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 + main_offset: 0x5DB12C + value_type: uint32 + value: 0x52800079 +15FPS: + # interval, REF: 29 00 80 52 16 00 08 8B 08 A0 8C 52 28 00 A0 72 + - + type: write + address: [MAIN, 0x33B26C0] + value_type: int32 + value: 4 +20FPS: + # interval + - + type: write + address: [MAIN, 0x33B26C0] + value_type: int32 + value: 3 +25FPS: + # interval + - + type: write + address: [MAIN, 0x33B26C0] + value_type: int32 + value: 2 +30FPS: + # interval (default value) + - + type: write + address: [MAIN, 0x33B26C0] + value_type: int32 + value: 2 +35FPS: + # interval + - + type: write + address: [MAIN, 0x33B26C0] + value_type: int32 + value: 1 +40FPS: + # interval + - + type: write + address: [MAIN, 0x33B26C0] + value_type: int32 + value: 1 +45FPS: + # interval + - + type: write + address: [MAIN, 0x33B26C0] + value_type: int32 + value: 1 +50FPS: + # interval + - + type: write + address: [MAIN, 0x33B26C0] + value_type: int32 + value: 1 +55FPS: + # interval + - + type: write + address: [MAIN, 0x33B26C0] + value_type: int32 + value: 1 +60FPS: + # interval + - + type: write + address: [MAIN, 0x33B26C0] + value_type: int32 + value: 1 diff --git a/SaltySD/plugins/FPSLocker/patches/01003D100E9C6000/D27FD8A515077F34.yaml b/SaltySD/plugins/FPSLocker/patches/01003D100E9C6000/4BC4A8A814FD46A4.yaml similarity index 99% rename from SaltySD/plugins/FPSLocker/patches/01003D100E9C6000/D27FD8A515077F34.yaml rename to SaltySD/plugins/FPSLocker/patches/01003D100E9C6000/4BC4A8A814FD46A4.yaml index 3c88651..31971cc 100644 --- a/SaltySD/plugins/FPSLocker/patches/01003D100E9C6000/D27FD8A515077F34.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01003D100E9C6000/4BC4A8A814FD46A4.yaml @@ -1,5 +1,5 @@ # The Witcher 3: Wild Hund - Complete Edition 4.04b -# BID: D27FD8A515077F34 +# BID: 4BC4A8A814FD46A4 unsafeCheck: true diff --git a/SaltySD/plugins/FPSLocker/patches/01004AB00A260000/DF3766A2BB651A3E.yaml b/SaltySD/plugins/FPSLocker/patches/01004AB00A260000/DF3766A2BB651A3E.yaml index c1b410e..2948ede 100644 --- a/SaltySD/plugins/FPSLocker/patches/01004AB00A260000/DF3766A2BB651A3E.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01004AB00A260000/DF3766A2BB651A3E.yaml @@ -1,7 +1,7 @@ # Dark Souls Remastered 1.0.3 # BID: DF3766A2BB651A3E -unsafeCheck: true +unsafeCheck: false MASTER_WRITE: # Redirect FPS target to MAIN+0x55E9A00 @@ -325,4 +325,4 @@ MASTER_WRITE: compare_value: 1 address: [MAIN, 0x55E9A08] value_type: float - value: 0.0166666666 \ No newline at end of file + value: 0.0166666666 diff --git a/SaltySD/plugins/FPSLocker/patches/0100559011740000/D2FD97779381FB9A.yaml b/SaltySD/plugins/FPSLocker/patches/0100559011740000/D2FD97779381FB9A.yaml new file mode 100644 index 0000000..c4f6e25 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100559011740000/D2FD97779381FB9A.yaml @@ -0,0 +1,96 @@ +# Monster Hunter Rise JP 16.02 +# BID: D2FD97779381FB9A + +unsafeCheck: false + +# Disable NX-FPS delay function to prioritize game's own FPS lock. +15FPS: + - + type: write + address: [MAIN, 0x12B2E5C8, 0x434] + value_type: float + value: 15 + - + type: block + what: timing +20FPS: + - + type: write + address: [MAIN, 0x12B2E5C8, 0x434] + value_type: float + value: 20 + - + type: block + what: timing +25FPS: + - + type: write + address: [MAIN, 0x12B2E5C8, 0x434] + value_type: float + value: 25 + - + type: block + what: timing +30FPS: + - + type: write + address: [MAIN, 0x12B2E5C8, 0x434] + value_type: float + value: 30 + - + type: block + what: timing +35FPS: + - + type: write + address: [MAIN, 0x12B2E5C8, 0x434] + value_type: float + value: 35 + - + type: block + what: timing +40FPS: + - + type: write + address: [MAIN, 0x12B2E5C8, 0x434] + value_type: float + value: 40 + - + type: block + what: timing +45FPS: + - + type: write + address: [MAIN, 0x12B2E5C8, 0x434] + value_type: float + value: 45 + - + type: block + what: timing +50FPS: + - + type: write + address: [MAIN, 0x12B2E5C8, 0x434] + value_type: float + value: 50 + - + type: block + what: timing +55FPS: + - + type: write + address: [MAIN, 0x12B2E5C8, 0x434] + value_type: float + value: 55 + - + type: block + what: timing +60FPS: + - + type: write + address: [MAIN, 0x12B2E5C8, 0x434] + value_type: float + value: 60 + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/01006F901C7F2000/406F004D76F961F3.yaml b/SaltySD/plugins/FPSLocker/patches/01006F901C7F2000/406F004D76F961F3.yaml new file mode 100644 index 0000000..5663bf8 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01006F901C7F2000/406F004D76F961F3.yaml @@ -0,0 +1,219 @@ +# Choo-Choo Charles 1.0.1 +# BID: 406F004D76F961F3 + +unsafeCheck: true + +15FPS: + # r.VSync + - + type: write + address: [MAIN, 0x6DC65E8, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals + - + type: write + address: [MAIN, 0x7594F48, 0] + value_type: float + value: [66.66, 66.66] + # t.MaxFPS + - + type: write + address: [MAIN, 0x75C2C08, 0] + value_type: float + value: [15, 15] + - + type: block + what: timing +20FPS: + # r.VSync + - + type: write + address: [MAIN, 0x6DC65E8, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x7594F48, 0] + value_type: float + value: [50, 50] + # t.MaxFPS + - + type: write + address: [MAIN, 0x75C2C08, 0] + value_type: float + value: [20, 20] + - + type: block + what: timing +25FPS: + # r.VSync + - + type: write + address: [MAIN, 0x6DC65E8, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x7594F48, 0] + value_type: float + value: [40, 40] + # t.MaxFPS + - + type: write + address: [MAIN, 0x75C2C08, 0] + value_type: float + value: [25, 25] + - + type: block + what: timing +30FPS: + # r.VSync + - + type: write + address: [MAIN, 0x6DC65E8, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget (default value) + - + type: write + address: [MAIN, 0x7594F48, 0] + value_type: float + value: [33.33, 33.33] + # t.MaxFPS (default is 10000) + - + type: write + address: [MAIN, 0x75C2C08, 0] + value_type: float + value: [0, 0] +35FPS: + # r.VSync + - + type: write + address: [MAIN, 0x6DC65E8, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x7594F48, 0] + value_type: float + value: [28.51, 28.51] + # t.MaxFPS + - + type: write + address: [MAIN, 0x75C2C08, 0] + value_type: float + value: [35, 35] + - + type: block + what: timing +40FPS: + # r.VSync + - + type: write + address: [MAIN, 0x6DC65E8, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x7594F48, 0] + value_type: float + value: [25, 25] + # t.MaxFPS + - + type: write + address: [MAIN, 0x75C2C08, 0] + value_type: float + value: [40, 40] + - + type: block + what: timing +45FPS: + # r.VSync + - + type: write + address: [MAIN, 0x6DC65E8, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x7594F48, 0] + value_type: float + value: [22.22, 22.22] + # t.MaxFPS + - + type: write + address: [MAIN, 0x75C2C08, 0] + value_type: float + value: [45, 45] + - + type: block + what: timing +50FPS: + # r.VSync + - + type: write + address: [MAIN, 0x6DC65E8, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x7594F48, 0] + value_type: float + value: [20, 20] + # t.MaxFPS + - + type: write + address: [MAIN, 0x75C2C08, 0] + value_type: float + value: [50, 50] + - + type: block + what: timing +55FPS: + # r.VSync + - + type: write + address: [MAIN, 0x6DC65E8, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x7594F48, 0] + value_type: float + value: [18.18, 18.18] + # t.MaxFPS + - + type: write + address: [MAIN, 0x75C2C08, 0] + value_type: float + value: [55, 55] + - + type: block + what: timing +60FPS: + # r.VSync + - + type: write + address: [MAIN, 0x6DC65E8, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x7594F48, 0] + value_type: float + value: [16.66, 16.66] + # t.MaxFPS + - + type: write + address: [MAIN, 0x75C2C08, 0] + value_type: float + value: [0, 0] diff --git a/SaltySD/plugins/FPSLocker/patches/0100739018020000/AA906741384B10CC.yaml b/SaltySD/plugins/FPSLocker/patches/0100739018020000/AA906741384B10CC.yaml new file mode 100644 index 0000000..3e19fff --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100739018020000/AA906741384B10CC.yaml @@ -0,0 +1,219 @@ +# LEGO 2K Drive 1.14 +# BID: AA906741384B10CC + +unsafeCheck: true + +15FPS: + # r.VSync + - + type: write + address: [MAIN, 0x9516D00, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals + - + type: write + address: [MAIN, 0x9D22CE8, 0] + value_type: float + value: [66.66, 66.66] + # t.MaxFPS + - + type: write + address: [MAIN, 0x9D48E60, 0] + value_type: float + value: [15, 15] + - + type: block + what: timing +20FPS: + # r.VSync + - + type: write + address: [MAIN, 0x9516D00, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x9D22CE8, 0] + value_type: float + value: [50, 50] + # t.MaxFPS + - + type: write + address: [MAIN, 0x9D48E60, 0] + value_type: float + value: [20, 20] + - + type: block + what: timing +25FPS: + # r.VSync + - + type: write + address: [MAIN, 0x9516D00, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x9D22CE8, 0] + value_type: float + value: [40, 40] + # t.MaxFPS + - + type: write + address: [MAIN, 0x9D48E60, 0] + value_type: float + value: [25, 25] + - + type: block + what: timing +30FPS: + # r.VSync + - + type: write + address: [MAIN, 0x9516D00, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget (default value) + - + type: write + address: [MAIN, 0x9D22CE8, 0] + value_type: float + value: [33.33, 33.33] + # t.MaxFPS (default is 30) + - + type: write + address: [MAIN, 0x9D48E60, 0] + value_type: float + value: [0, 0] +35FPS: + # r.VSync + - + type: write + address: [MAIN, 0x9516D00, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x9D22CE8, 0] + value_type: float + value: [28.51, 28.51] + # t.MaxFPS + - + type: write + address: [MAIN, 0x9D48E60, 0] + value_type: float + value: [35, 35] + - + type: block + what: timing +40FPS: + # r.VSync + - + type: write + address: [MAIN, 0x9516D00, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x9D22CE8, 0] + value_type: float + value: [25, 25] + # t.MaxFPS + - + type: write + address: [MAIN, 0x9D48E60, 0] + value_type: float + value: [40, 40] + - + type: block + what: timing +45FPS: + # r.VSync + - + type: write + address: [MAIN, 0x9516D00, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x9D22CE8, 0] + value_type: float + value: [22.22, 22.22] + # t.MaxFPS + - + type: write + address: [MAIN, 0x9D48E60, 0] + value_type: float + value: [45, 45] + - + type: block + what: timing +50FPS: + # r.VSync + - + type: write + address: [MAIN, 0x9516D00, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x9D22CE8, 0] + value_type: float + value: [20, 20] + # t.MaxFPS + - + type: write + address: [MAIN, 0x9D48E60, 0] + value_type: float + value: [50, 50] + - + type: block + what: timing +55FPS: + # r.VSync + - + type: write + address: [MAIN, 0x9516D00, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x9D22CE8, 0] + value_type: float + value: [18.18, 18.18] + # t.MaxFPS + - + type: write + address: [MAIN, 0x9D48E60, 0] + value_type: float + value: [55, 55] + - + type: block + what: timing +60FPS: + # r.VSync + - + type: write + address: [MAIN, 0x9516D00, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x9D22CE8, 0] + value_type: float + value: [16.66, 16.66] + # t.MaxFPS + - + type: write + address: [MAIN, 0x9D48E60, 0] + value_type: float + value: [0, 0] diff --git a/SaltySD/plugins/FPSLocker/patches/010074F013262000/82D187FE9EF9BE92.yaml b/SaltySD/plugins/FPSLocker/patches/010074F013262000/82D187FE9EF9BE92.yaml new file mode 100644 index 0000000..f928b65 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010074F013262000/82D187FE9EF9BE92.yaml @@ -0,0 +1,443 @@ +# Xenoblade Chronicles 3 2.2.0 +# BID: 82D187FE9EF9BE92 + +unsafeCheck: true + +MASTER_WRITE: + # Redirect DR frametime target reading to .bss code cave [MAIN, 0x236AB00] + - + type: bytes + main_offset: 0x124F518 + value_type: uint32 + value: + - 0xF00088C8 + - 0xBD4B0100 + # Original DR frametime target + - + type: bytes + main_offset: 0x236AB00 + value_type: float + value: + - 0.0166666666 + # Fix crash when gathering big amount of ether for > 30 FPS + - # Code cave at 0x1295DA0 + type: bytes + main_offset: 0x67360 + value_type: uint32 + value: 0x9448BA90 + - # Push fixed 1/30 float to game speed pointer late enough to not affect it + type: bytes + main_offset: 0x1295DA0 + value_type: uint32 + value: + - 0xF9400015 + - 0x1E2E1001 + - 0x1E27D002 + - 0x1E221821 + - 0xBD0216A1 + - 0xD65F03C0 +# For 15-20 FPS use internal FPS lock, for 25-30 set default value +15FPS: + # vsync + - + type: write + address: [MAIN, 0x1B42DB0] + value_type: int32 + value: [4, 4] + - + type: write + address: [MAIN, 0x236AB00] + value_type: float + value: 0.0166666666 + # UI speed + - + type: write + address: [MAIN, 0x1BA1A90, 128] + value_type: float + value: 0.0666666666 + - + type: block + what: timing +20FPS: + - + type: write + address: [MAIN, 0x1B42DB0] + value_type: int32 + value: [3, 3] + - + type: write + address: [MAIN, 0x236AB00] + value_type: float + value: 0.0166666666 + - + type: write + address: [MAIN, 0x1BA1A90, 128] + value_type: float + value: 0.05 + - + type: block + what: timing +25FPS: + - + type: write + address: [MAIN, 0x1B42DB0] + value_type: int32 + value: [2, 2] + - + type: write + address: [MAIN, 0x236AB00] + value_type: float + value: 0.02 + - + type: write + address: [MAIN, 0x1BA1A90, 128] + value_type: float + value: 0.04 +30FPS: + - + type: write + address: [MAIN, 0x1B42DB0] + value_type: int32 + value: [2, 2] + - + type: write + address: [MAIN, 0x236AB00] + value_type: float + value: 0.0166666666 + - + type: write + address: [MAIN, 0x1BA1A90, 128] + value_type: float + value: 0.0333333333 + +# For 35-60 FPS check if cutscene is played. If it is, set 30 FPS lock. If not, disable it. +35FPS: + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 1 + address: [MAIN, 0x1B42DB0] + value_type: int32 + value: [1, 1] + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 1 + address: [MAIN, 0x236AB00] + value_type: float + value: 0.024 + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 0 + address: [MAIN, 0x1B42DB0] + value_type: int32 + value: [2, 2] + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 0 + address: [MAIN, 0x236AB00] + value_type: float + value: 0.0166666666 + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 1 + address: [MAIN, 0x1BA1A90, 128] + value_type: float + value: 0.028571 + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 0 + address: [MAIN, 0x1BA1A90, 128] + value_type: float + value: 0.0333333333 +40FPS: + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 1 + address: [MAIN, 0x1B42DB0] + value_type: int32 + value: [1, 1] + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 1 + address: [MAIN, 0x236AB00] + value_type: float + value: 0.021 + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 0 + address: [MAIN, 0x1B42DB0] + value_type: int32 + value: [2, 2] + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 0 + address: [MAIN, 0x236AB00] + value_type: float + value: 0.0166666666 + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 1 + address: [MAIN, 0x1BA1A90, 128] + value_type: float + value: 0.025 + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 0 + address: [MAIN, 0x1BA1A90, 128] + value_type: float + value: 0.0333333333 +45FPS: + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 1 + address: [MAIN, 0x1B42DB0] + value_type: int32 + value: [1, 1] + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 1 + address: [MAIN, 0x236AB00] + value_type: float + value: 0.018 + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 0 + address: [MAIN, 0x1B42DB0] + value_type: int32 + value: [2, 2] + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 0 + address: [MAIN, 0x236AB00] + value_type: float + value: 0.0166666666 + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 1 + address: [MAIN, 0x1BA1A90, 128] + value_type: float + value: 0.0222222222 + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 0 + address: [MAIN, 0x1BA1A90, 128] + value_type: float + value: 0.0333333333 +50FPS: + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 1 + address: [MAIN, 0x1B42DB0] + value_type: int32 + value: [1, 1] + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 1 + address: [MAIN, 0x236AB00] + value_type: float + value: 0.016 + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 0 + address: [MAIN, 0x1B42DB0] + value_type: int32 + value: [2, 2] + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 0 + address: [MAIN, 0x236AB00] + value_type: float + value: 0.0166666666 + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 1 + address: [MAIN, 0x1BA1A90, 128] + value_type: float + value: 0.02 + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 0 + address: [MAIN, 0x1BA1A90, 128] + value_type: float + value: 0.0333333333 +55FPS: + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 1 + address: [MAIN, 0x1B42DB0] + value_type: int32 + value: [1, 1] + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 1 + address: [MAIN, 0x236AB00] + value_type: float + value: 0.014 + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 0 + address: [MAIN, 0x1B42DB0] + value_type: int32 + value: [2, 2] + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 0 + address: [MAIN, 0x236AB00] + value_type: float + value: 0.0166666666 + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 1 + address: [MAIN, 0x1BA1A90, 128] + value_type: float + value: 0.01818181818 + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 0 + address: [MAIN, 0x1BA1A90, 128] + value_type: float + value: 0.0333333333 +60FPS: + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 1 + address: [MAIN, 0x1B42DB0] + value_type: int32 + value: [1, 1] + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 0 + address: [MAIN, 0x1B42DB0] + value_type: int32 + value: [2, 2] + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 1 + address: [MAIN, 0x236AB00] + value_type: float + value: 0.013 + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 0 + address: [MAIN, 0x236AB00] + value_type: float + value: 0.0166666666 + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 1 + address: [MAIN, 0x1BA1A90, 128] + value_type: float + value: 0.0166666666 + - + type: compare + compare_address: [MAIN, 0x1BA1A98] + compare_type: "!=" + compare_value_type: int8 + compare_value: 0 + address: [MAIN, 0x1BA1A90, 128] + value_type: float + value: 0.0333333333 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010077B00E046000/D2775FAFCF4835CB.yaml b/SaltySD/plugins/FPSLocker/patches/010077B00E046000/D2775FAFCF4835CB.yaml index a0c848b..5d62a68 100644 --- a/SaltySD/plugins/FPSLocker/patches/010077B00E046000/D2775FAFCF4835CB.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010077B00E046000/D2775FAFCF4835CB.yaml @@ -1,7 +1,7 @@ # Spyro Reignited Trilogy 1.01 # BID: D2775FAFCF4835CB -unsafeCheck: true +unsafeCheck: false 15FPS: # Disable bSmoothFrameRate and bUseFixedFrameRate to untie game speed from framerate @@ -221,4 +221,4 @@ unsafeCheck: true type: write address: [MAIN, 0x69DAC78, 0] value_type: float - value: [0, 0] \ No newline at end of file + value: [0, 0] diff --git a/SaltySD/plugins/FPSLocker/patches/010081E01A45C000/25D3C2E9040D1A9A.yaml b/SaltySD/plugins/FPSLocker/patches/010081E01A45C000/25D3C2E9040D1A9A.yaml new file mode 100644 index 0000000..9605f1c --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010081E01A45C000/25D3C2E9040D1A9A.yaml @@ -0,0 +1,219 @@ +# Bang-On Balls: Chronicles 1.0.4 +# BID: 25D3C2E9040D1A9A + +unsafeCheck: true + +15FPS: + # r.VSync + - + type: write + address: [MAIN, 0x685AE88, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals + - + type: write + address: [MAIN, 0x702A818, 0] + value_type: float + value: [66.66, 66.66] + # t.MaxFPS + - + type: write + address: [MAIN, 0x7058338, 0] + value_type: float + value: [15, 15] + - + type: block + what: timing +20FPS: + # r.VSync + - + type: write + address: [MAIN, 0x685AE88, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x702A818, 0] + value_type: float + value: [50, 50] + # t.MaxFPS + - + type: write + address: [MAIN, 0x7058338, 0] + value_type: float + value: [20, 20] + - + type: block + what: timing +25FPS: + # r.VSync + - + type: write + address: [MAIN, 0x685AE88, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x702A818, 0] + value_type: float + value: [40, 40] + # t.MaxFPS + - + type: write + address: [MAIN, 0x7058338, 0] + value_type: float + value: [25, 25] + - + type: block + what: timing +30FPS: + # r.VSync + - + type: write + address: [MAIN, 0x685AE88, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget (default value) + - + type: write + address: [MAIN, 0x702A818, 0] + value_type: float + value: [33.33, 33.33] + # t.MaxFPS (default is 0) + - + type: write + address: [MAIN, 0x7058338, 0] + value_type: float + value: [0, 0] +35FPS: + # r.VSync + - + type: write + address: [MAIN, 0x685AE88, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x702A818, 0] + value_type: float + value: [28.51, 28.51] + # t.MaxFPS + - + type: write + address: [MAIN, 0x7058338, 0] + value_type: float + value: [35, 35] + - + type: block + what: timing +40FPS: + # r.VSync + - + type: write + address: [MAIN, 0x685AE88, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x702A818, 0] + value_type: float + value: [25, 25] + # t.MaxFPS + - + type: write + address: [MAIN, 0x7058338, 0] + value_type: float + value: [40, 40] + - + type: block + what: timing +45FPS: + # r.VSync + - + type: write + address: [MAIN, 0x685AE88, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x702A818, 0] + value_type: float + value: [22.22, 22.22] + # t.MaxFPS + - + type: write + address: [MAIN, 0x7058338, 0] + value_type: float + value: [45, 45] + - + type: block + what: timing +50FPS: + # r.VSync + - + type: write + address: [MAIN, 0x685AE88, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x702A818, 0] + value_type: float + value: [20, 20] + # t.MaxFPS + - + type: write + address: [MAIN, 0x7058338, 0] + value_type: float + value: [50, 50] + - + type: block + what: timing +55FPS: + # r.VSync + - + type: write + address: [MAIN, 0x685AE88, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x702A818, 0] + value_type: float + value: [18.18, 18.18] + # t.MaxFPS + - + type: write + address: [MAIN, 0x7058338, 0] + value_type: float + value: [55, 55] + - + type: block + what: timing +60FPS: + # r.VSync + - + type: write + address: [MAIN, 0x685AE88, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x702A818, 0] + value_type: float + value: [16.66, 16.66] + # t.MaxFPS + - + type: write + address: [MAIN, 0x7058338, 0] + value_type: float + value: [0, 0] diff --git a/SaltySD/plugins/FPSLocker/patches/010083A018262000/688C23D524730AB8.yaml b/SaltySD/plugins/FPSLocker/patches/010083A018262000/688C23D524730AB8.yaml new file mode 100644 index 0000000..3cedb6d --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010083A018262000/688C23D524730AB8.yaml @@ -0,0 +1,201 @@ +# Hitman: Blood Money - Reprisal 1.0_68328 +# BID: 688C23D524730AB8 +# Fix aiming speed by tweaking it in game settings +# Videos / prerendered cutscenes are played at 30 FPS + +unsafeCheck: true + +15FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x20AA038, 0x10] + value_type: uint32 + value: [15, 15] + - + type: write + address: [MAIN, 0x20AA038, 0x40] + value_type: uint32 + value: [15, 15] + - + type: write + address: [MAIN, 0x20AA038, 0x70] + value_type: uint32 + value: [15, 15] + - + type: block + what: timing +20FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x20AA038, 0x10] + value_type: uint32 + value: [20, 20] + - + type: write + address: [MAIN, 0x20AA038, 0x40] + value_type: uint32 + value: [20, 20] + - + type: write + address: [MAIN, 0x20AA038, 0x70] + value_type: uint32 + value: [20, 20] + - + type: block + what: timing +25FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x20AA038, 0x10] + value_type: uint32 + value: [25, 25] + - + type: write + address: [MAIN, 0x20AA038, 0x40] + value_type: uint32 + value: [25, 25] + - + type: write + address: [MAIN, 0x20AA038, 0x70] + value_type: uint32 + value: [25, 25] + - + type: block + what: timing +30FPS: + # Internal FPS Lock (default value) + - + type: write + address: [MAIN, 0x20AA038, 0x10] + value_type: uint32 + value: [30, 30] + - + type: write + address: [MAIN, 0x20AA038, 0x40] + value_type: uint32 + value: [30, 30] + - + type: write + address: [MAIN, 0x20AA038, 0x70] + value_type: uint32 + value: [30, 30] +35FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x20AA038, 0x10] + value_type: uint32 + value: [35, 35] + - + type: write + address: [MAIN, 0x20AA038, 0x40] + value_type: uint32 + value: [35, 35] + - + type: write + address: [MAIN, 0x20AA038, 0x70] + value_type: uint32 + value: [35, 35] + - + type: block + what: timing +40FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x20AA038, 0x10] + value_type: uint32 + value: [40, 40] + - + type: write + address: [MAIN, 0x20AA038, 0x40] + value_type: uint32 + value: [40, 40] + - + type: write + address: [MAIN, 0x20AA038, 0x70] + value_type: uint32 + value: [40, 40] + - + type: block + what: timing +45FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x20AA038, 0x10] + value_type: uint32 + value: [45, 45] + - + type: write + address: [MAIN, 0x20AA038, 0x40] + value_type: uint32 + value: [45, 45] + - + type: write + address: [MAIN, 0x20AA038, 0x70] + value_type: uint32 + value: [45, 45] + - + type: block + what: timing +50FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x20AA038, 0x10] + value_type: uint32 + value: [50, 50] + - + type: write + address: [MAIN, 0x20AA038, 0x40] + value_type: uint32 + value: [50, 50] + - + type: write + address: [MAIN, 0x20AA038, 0x70] + value_type: uint32 + value: [50, 50] + - + type: block + what: timing +55FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x20AA038, 0x10] + value_type: uint32 + value: [55, 55] + - + type: write + address: [MAIN, 0x20AA038, 0x40] + value_type: uint32 + value: [55, 55] + - + type: write + address: [MAIN, 0x20AA038, 0x70] + value_type: uint32 + value: [55, 55] + - + type: block + what: timing +60FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0x20AA038, 0x10] + value_type: uint32 + value: [60, 60] + - + type: write + address: [MAIN, 0x20AA038, 0x40] + value_type: uint32 + value: [60, 60] + - + type: write + address: [MAIN, 0x20AA038, 0x70] + value_type: uint32 + value: [60, 60] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010085401A454000/372BF1E32FC51836.yaml b/SaltySD/plugins/FPSLocker/patches/010085401A454000/372BF1E32FC51836.yaml new file mode 100644 index 0000000..b67298f --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010085401A454000/372BF1E32FC51836.yaml @@ -0,0 +1,279 @@ +# Jujutsu Kaisen Cursed Clash EUR 1.0.1 +# BID: 372BF1E32FC51836 + +unsafeCheck: true + +15FPS: + # r.DynamicRes.FrameTimeBudget (1000/FPS) rounded to 2 decimals + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [66.66, 66.66] + # t.MaxFPS + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [15, 15] + # r.VSync + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 + - + type: block + what: timing +20FPS: + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [50, 50] + # t.MaxFPS + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [20, 20] + # r.VSync + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 + - + type: block + what: timing +25FPS: + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [40, 40] + # t.MaxFPS + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [25, 25] + # r.VSync + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 + - + type: block + what: timing +30FPS: + # r.DynamicRes.FrameTimeBudget (default value) + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [33.33, 33.33] + # t.MaxFPS (default value is 60) + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [0, 0] + # r.VSync (default value is 1) + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 +35FPS: + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [28.51, 28.51] + # t.MaxFPS + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [35, 35] + # r.VSync + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 + - + type: block + what: timing +40FPS: + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [25, 25] + # t.MaxFPS + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [40, 40] + # r.VSync + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 + - + type: block + what: timing +45FPS: + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [22.22, 22.22] + # t.MaxFPS + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [45, 45] + # r.VSync + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 + - + type: block + what: timing +50FPS: + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [20, 20] + # t.MaxFPS + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [50, 50] + # r.VSync + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 + - + type: block + what: timing +55FPS: + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [18.18, 18.18] + # t.MaxFPS + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [55, 55] + # r.VSync + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 + - + type: block + what: timing +60FPS: + # r.DynamicRes.FrameTimeBudget + - + type: write + address: [MAIN, 0x8013A48, 0] + value_type: float + value: [16.66, 16.66] + # t.MaxFPS + - + type: write + address: [MAIN, 0x8056F50, 0] + value_type: float + value: [0, 0] + # r.VSync + - + type: write + address: [MAIN, 0x73980C8, 0] + value_type: uint32 + value: [0, 0] + # Disable bUseFixedFrameRate + - + type: write + address: [MAIN, 0x80567A8, 0x9C4] + value_type: uint32 + value: 7 diff --git a/SaltySD/plugins/FPSLocker/patches/0100A3501946E000/BB891294DA55675E.yaml b/SaltySD/plugins/FPSLocker/patches/0100A3501946E000/BB891294DA55675E.yaml index e378f69..5af8e17 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100A3501946E000/BB891294DA55675E.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100A3501946E000/BB891294DA55675E.yaml @@ -10,6 +10,12 @@ unsafeCheck: true address: [MAIN, 0x76C9F68, 0] value_type: float value: [15, 15] + # r.VSync + - + type: write + address: [MAIN, 0x6ECD018, 0] + value_type: uint32 + value: [0, 0] - type: block what: timing @@ -20,6 +26,12 @@ unsafeCheck: true address: [MAIN, 0x76C9F68, 0] value_type: float value: [20, 20] + # r.VSync + - + type: write + address: [MAIN, 0x6ECD018, 0] + value_type: uint32 + value: [0, 0] - type: block what: timing @@ -30,6 +42,12 @@ unsafeCheck: true address: [MAIN, 0x76C9F68, 0] value_type: float value: [25, 25] + # r.VSync + - + type: write + address: [MAIN, 0x6ECD018, 0] + value_type: uint32 + value: [0, 0] - type: block what: timing @@ -40,6 +58,12 @@ unsafeCheck: true address: [MAIN, 0x76C9F68, 0] value_type: float value: [0, 0] + # r.VSync (default is 1) + - + type: write + address: [MAIN, 0x6ECD018, 0] + value_type: uint32 + value: [0, 0] 35FPS: # t.MaxFPS - @@ -47,6 +71,12 @@ unsafeCheck: true address: [MAIN, 0x76C9F68, 0] value_type: float value: [35, 35] + # r.VSync + - + type: write + address: [MAIN, 0x6ECD018, 0] + value_type: uint32 + value: [0, 0] - type: block what: timing @@ -57,6 +87,12 @@ unsafeCheck: true address: [MAIN, 0x76C9F68, 0] value_type: float value: [40, 40] + # r.VSync + - + type: write + address: [MAIN, 0x6ECD018, 0] + value_type: uint32 + value: [0, 0] - type: block what: timing @@ -67,6 +103,12 @@ unsafeCheck: true address: [MAIN, 0x76C9F68, 0] value_type: float value: [45, 45] + # r.VSync + - + type: write + address: [MAIN, 0x6ECD018, 0] + value_type: uint32 + value: [0, 0] - type: block what: timing @@ -77,6 +119,12 @@ unsafeCheck: true address: [MAIN, 0x76C9F68, 0] value_type: float value: [50, 50] + # r.VSync + - + type: write + address: [MAIN, 0x6ECD018, 0] + value_type: uint32 + value: [0, 0] - type: block what: timing @@ -87,6 +135,12 @@ unsafeCheck: true address: [MAIN, 0x76C9F68, 0] value_type: float value: [55, 55] + # r.VSync + - + type: write + address: [MAIN, 0x6ECD018, 0] + value_type: uint32 + value: [0, 0] - type: block what: timing @@ -97,3 +151,9 @@ unsafeCheck: true address: [MAIN, 0x76C9F68, 0] value_type: float value: [0, 0] + # r.VSync + - + type: write + address: [MAIN, 0x6ECD018, 0] + value_type: uint32 + value: [0, 0] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100B04011742000/C9A3DD7702075ECD.yaml b/SaltySD/plugins/FPSLocker/patches/0100B04011742000/C9A3DD7702075ECD.yaml new file mode 100644 index 0000000..d874447 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100B04011742000/C9A3DD7702075ECD.yaml @@ -0,0 +1,96 @@ +# Monster Hunter Rise 16.0.2 +# BID: C9A3DD7702075ECD + +unsafeCheck: false + +# Disable NX-FPS delay function to prioritize game's own FPS lock. +15FPS: + - + type: write + address: [MAIN, 0x1295B3F0, 0x434] + value_type: float + value: 15 + - + type: block + what: timing +20FPS: + - + type: write + address: [MAIN, 0x1295B3F0, 0x434] + value_type: float + value: 20 + - + type: block + what: timing +25FPS: + - + type: write + address: [MAIN, 0x1295B3F0, 0x434] + value_type: float + value: 25 + - + type: block + what: timing +30FPS: + - + type: write + address: [MAIN, 0x1295B3F0, 0x434] + value_type: float + value: 30 + - + type: block + what: timing +35FPS: + - + type: write + address: [MAIN, 0x1295B3F0, 0x434] + value_type: float + value: 35 + - + type: block + what: timing +40FPS: + - + type: write + address: [MAIN, 0x1295B3F0, 0x434] + value_type: float + value: 40 + - + type: block + what: timing +45FPS: + - + type: write + address: [MAIN, 0x1295B3F0, 0x434] + value_type: float + value: 45 + - + type: block + what: timing +50FPS: + - + type: write + address: [MAIN, 0x1295B3F0, 0x434] + value_type: float + value: 50 + - + type: block + what: timing +55FPS: + - + type: write + address: [MAIN, 0x1295B3F0, 0x434] + value_type: float + value: 55 + - + type: block + what: timing +60FPS: + - + type: write + address: [MAIN, 0x1295B3F0, 0x434] + value_type: float + value: 60 + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100BDB01A0E6000/355CD175B2498C22.yaml b/SaltySD/plugins/FPSLocker/patches/0100BDB01A0E6000/355CD175B2498C22.yaml new file mode 100644 index 0000000..7a594be --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100BDB01A0E6000/355CD175B2498C22.yaml @@ -0,0 +1,93 @@ +# EA SPORTS FC 24 1.55.6363 +# BID: 355CD175B2498C22 + +unsafeCheck: true + +15FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD65E20, 8] + value_type: double + value: 15 +20FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD65E20, 8] + value_type: double + value: 20 +25FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD65E20, 8] + value_type: double + value: 25 + - + type: block + what: timing +30FPS: + # Internal FPS Lock (default value is 30) + - + type: write + address: [MAIN, 0xCD65E20, 8] + value_type: double + value: 30 +35FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD65E20, 8] + value_type: double + value: 35 + - + type: block + what: timing +40FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD65E20, 8] + value_type: double + value: 40 + - + type: block + what: timing +45FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD65E20, 8] + value_type: double + value: 45 + - + type: block + what: timing +50FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD65E20, 8] + value_type: double + value: 50 + - + type: block + what: timing +55FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD65E20, 8] + value_type: double + value: 55 + - + type: block + what: timing +60FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD65E20, 8] + value_type: double + value: 60 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100BDB01A0E6000/51D25A22EBBBAB37.yaml b/SaltySD/plugins/FPSLocker/patches/0100BDB01A0E6000/51D25A22EBBBAB37.yaml new file mode 100644 index 0000000..e3ca400 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100BDB01A0E6000/51D25A22EBBBAB37.yaml @@ -0,0 +1,93 @@ +# EA SPORTS FC 24 1.55.bc14 +# BID: 51D25A22EBBBAB37 + +unsafeCheck: true + +15FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD69E20, 8] + value_type: double + value: 15 +20FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD69E20, 8] + value_type: double + value: 20 +25FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD69E20, 8] + value_type: double + value: 25 + - + type: block + what: timing +30FPS: + # Internal FPS Lock (default value is 30) + - + type: write + address: [MAIN, 0xCD69E20, 8] + value_type: double + value: 30 +35FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD69E20, 8] + value_type: double + value: 35 + - + type: block + what: timing +40FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD69E20, 8] + value_type: double + value: 40 + - + type: block + what: timing +45FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD69E20, 8] + value_type: double + value: 45 + - + type: block + what: timing +50FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD69E20, 8] + value_type: double + value: 50 + - + type: block + what: timing +55FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD69E20, 8] + value_type: double + value: 55 + - + type: block + what: timing +60FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD69E20, 8] + value_type: double + value: 60 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100BDB01A0E6000/538BB4DE29BF89F3.yaml b/SaltySD/plugins/FPSLocker/patches/0100BDB01A0E6000/538BB4DE29BF89F3.yaml new file mode 100644 index 0000000..b1b45e7 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100BDB01A0E6000/538BB4DE29BF89F3.yaml @@ -0,0 +1,93 @@ +# EA SPORTS FC 24 1.55.7eb0 +# BID: 538BB4DE29BF89F3 + +unsafeCheck: true + +15FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD68E20, 8] + value_type: double + value: 15 +20FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD68E20, 8] + value_type: double + value: 20 +25FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD68E20, 8] + value_type: double + value: 25 + - + type: block + what: timing +30FPS: + # Internal FPS Lock (default value is 30) + - + type: write + address: [MAIN, 0xCD68E20, 8] + value_type: double + value: 30 +35FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD68E20, 8] + value_type: double + value: 35 + - + type: block + what: timing +40FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD68E20, 8] + value_type: double + value: 40 + - + type: block + what: timing +45FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD68E20, 8] + value_type: double + value: 45 + - + type: block + what: timing +50FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD68E20, 8] + value_type: double + value: 50 + - + type: block + what: timing +55FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD68E20, 8] + value_type: double + value: 55 + - + type: block + what: timing +60FPS: + # Internal FPS Lock + - + type: write + address: [MAIN, 0xCD68E20, 8] + value_type: double + value: 60 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100D3C010DE8000/59159483CF88330F.yaml b/SaltySD/plugins/FPSLocker/patches/0100D3C010DE8000/59159483CF88330F.yaml index 0300f39..0de7d8a 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100D3C010DE8000/59159483CF88330F.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100D3C010DE8000/59159483CF88330F.yaml @@ -1,5 +1,5 @@ # The Legend of Heroes: Trails of Cold Steel IV 1.0.3 -# BID: 8C93B930348C9787 +# BID: 59159483CF88330F # Button polling is 2x more sensitive to holding any button unsafeCheck: true diff --git a/SaltySD/plugins/FPSLocker/patches/0100F2300D4BA000/DB17131624D04A9C.yaml b/SaltySD/plugins/FPSLocker/patches/0100F2300D4BA000/DB17131624D04A9C.yaml index 659cb1a..df25fe8 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100F2300D4BA000/DB17131624D04A9C.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100F2300D4BA000/DB17131624D04A9C.yaml @@ -204,10 +204,10 @@ unsafeCheck: true type: write address: [MAIN, 0x59FDD30, 0] value_type: float - value: [0, 0] + value: [60, 60] # r.VSync - type: write address: [MAIN, 0x51A7A78, 0] value_type: int32 - value: [0, 0] \ No newline at end of file + value: [0, 0] diff --git a/SaltySD/plugins/FPSLocker/patches/0100F2600D710000/4CCD2F6D331DD104.yaml b/SaltySD/plugins/FPSLocker/patches/0100F2600D710000/4CCD2F6D331DD104.yaml new file mode 100644 index 0000000..e23717d --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100F2600D710000/4CCD2F6D331DD104.yaml @@ -0,0 +1,145 @@ +# Contra: Rogue Corps 1.3.0 +# BID: 4CCD2F6D331DD104 + +unsafeCheck: true + +MASTER_WRITE: + # Read FPS target from code cave at MAIN + 0xA13170 + - + type: bytes + main_offset: 0x2004 + value_type: uint32 + value: 0x1428445B + # CODE CAVE - read FPS target from MAIN + 0xD94628 + - + type: bytes + main_offset: 0xA13170 + value_type: uint32 + value: + - 0xB0001C08 + - 0xB9462908 + - 0x17D7BBA4 + # Redirect DR time factor to MAIN + 0x2ECAB38 + - + type: bytes + main_offset: 0x2140 + value_type: uint32 + value: + - 0x90017648 + - 0xBD4B3909 + # Default value + - + type: bytes + main_offset: 0x2ECAB38 + value_type: float + value: 1000000 +15FPS: + - + type: write + address: [MAIN, 0xD94628] + value_type: uint32 + value: 15 + - + type: write + address: [MAIN, 0x2ECAB38] + value_type: float + value: 2000000 +20FPS: + - + type: write + address: [MAIN, 0xD94628] + value_type: uint32 + value: 20 + - + type: write + address: [MAIN, 0x2ECAB38] + value_type: float + value: 1500000 +25FPS: + - + type: write + address: [MAIN, 0xD94628] + value_type: uint32 + value: 25 + - + type: write + address: [MAIN, 0x2ECAB38] + value_type: float + value: 1200000 +30FPS: + - + type: write + address: [MAIN, 0xD94628] + value_type: uint32 + value: 30 + - + type: write + address: [MAIN, 0x2ECAB38] + value_type: float + value: 1000000 +35FPS: + - + type: write + address: [MAIN, 0xD94628] + value_type: uint32 + value: 35 + - + type: write + address: [MAIN, 0x2ECAB38] + value_type: float + value: 857142 +40FPS: + - + type: write + address: [MAIN, 0xD94628] + value_type: uint32 + value: 40 + - + type: write + address: [MAIN, 0x2ECAB38] + value_type: float + value: 750000 +45FPS: + - + type: write + address: [MAIN, 0xD94628] + value_type: uint32 + value: 45 + - + type: write + address: [MAIN, 0x2ECAB38] + value_type: float + value: 666666 +50FPS: + - + type: write + address: [MAIN, 0xD94628] + value_type: uint32 + value: 50 + - + type: write + address: [MAIN, 0x2ECAB38] + value_type: float + value: 600000 +55FPS: + - + type: write + address: [MAIN, 0xD94628] + value_type: uint32 + value: 55 + - + type: write + address: [MAIN, 0x2ECAB38] + value_type: float + value: 545454 +60FPS: + - + type: write + address: [MAIN, 0xD94628] + value_type: uint32 + value: 60 + - + type: write + address: [MAIN, 0x2ECAB38] + value_type: float + value: 500000 \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100F2C0115B6000/9B4E43650501A4D4.yaml b/SaltySD/plugins/FPSLocker/patches/0100F2C0115B6000/9B4E43650501A4D4.yaml new file mode 100644 index 0000000..cf0eaa8 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100F2C0115B6000/9B4E43650501A4D4.yaml @@ -0,0 +1,275 @@ +# The Legend of Zelda: Tears of The Kingdom 1.2.1 +# BID: 9B4E43650501A4D4 + +Addons: + - atmosphere/contents/0100F2C0115B6000/exefs/main.npdm + +unsafeCheck: true + +MASTER_WRITE: + # Remove double buffer + - + type: bytes + main_offset: 0x21BE6D0 + value_type: uint32 + value: + - 0x52800021 + - 0x52800068 + - 0x39029661 + # CODE CAVE + - + type: bytes + main_offset: 0x2B19A50 + value_type: uint32 + value: + - 0xD63F0100 + - 0x97FFF72F + - 0xB000E081 + - 0xF9455828 + - 0xF9055820 + - 0xB5000048 + - 0x17E5BF5A + - 0xCB080000 + - 0x97FFF820 + - 0x528502A2 + - 0x72A00FE2 + - 0x52881541 + - 0x72A07F21 + - 0xEB01001F + - 0x9A80C020 + - 0xEB02001F + - 0x9A80B040 + - 0x1E630000 + - 0x52800042 + - 0x1AC20821 + - 0x1E630021 + - 0x1E611800 + - 0xB000E081 + - 0x1E624000 + - 0xBD0AB820 + - 0x14000008 + - 0xB000E081 + - 0xB90ABC22 + - 0x178E31AD + - 0x52800042 + - 0xB000E081 + - 0xB90ABC22 + - 0x17FFFF0C + - 0xB94ABC22 + - 0x34000102 + - 0xF85F0260 + - 0x7100045F + - 0x540000CC + - 0x12800021 + - 0xF000DAA8 + - 0xF9451508 + - 0xD63F0100 + - 0x17E5BF36 + - 0xB000E082 + - 0xB94AC041 + - 0xB90AC05F + - 0xF000DAA8 + - 0xF9451508 + - 0xD63F0100 + - 0x17E5BF2F + - 0x52800022 + - 0x17FFFFE7 + - 0x1E202048 + - 0x54000041 + - 0x1E2E1000 + - 0x1E222808 + - 0x1E202028 + - 0x1770F360 + - 0xB000E081 + - 0xBD4AB821 + - 0xBD4C5400 + - 0x1E210800 + - 0xD65F03C0 + # Connect game speed to code cave's calculation + - + type: bytes + main_offset: 0x24897CC + value_type: uint32 + value: 0x141A40A1 + # Lock prerendered cutscenes to 30 FPS and unlock after while reading expected interval from MAIN + 0x472AAC0 + - + type: bytes + main_offset: 0x2484F30 + value_type: uint32 + value: 0x941A52FA + - + type: bytes + main_offset: 0xEA42E8 + value_type: uint32 + value: 0x1471D5F7 + # Adjust DR timing to FPS target by reading factor from MAIN + 0x472AAC4 + - + type: bytes + main_offset: 0x972C14 + value_type: uint32 + value: + - 0x9001EDC8 + - 0xBD4AC501 + # Read game's speed from bss caved game speed at MAIN + 0x472AAB8 + - + type: bytes + main_offset: 0x7EDE7C + value_type: uint32 + value: + - 0xB001F9E1 + - 0x1E27D001 + - 0xBD4AB820 + - 0xD503201F + - 0xF001F228 + - 0xAA0003F3 + - 0x1E211801 + - 0xD503201F + # Fix black background for D-pad menu + - + type: bytes + main_offset: 0x7568B0 + value_type: uint32 + value: 0x148F0C9C + # Fix vertical aiming speed for Ultrahand (thanks to Last Breath for pointer) + - + type: bytes + main_offset: 0x1D48D40 + value_type: uint32 + value: 0x9437437E + # Default values + - + type: bytes + main_offset: 0x472AAB8 + value_type: float + value: 1.0 + - + type: bytes + main_offset: 0x472AAC0 + value_type: int32 + value: -2 + - + type: bytes + main_offset: 0x472AAC4 + value_type: float + value: 0.001 +15FPS: + # Set default interval to use by patch when exiting prerender cutscene + - + type: write + address: [MAIN, 0x472AAC0] + value_type: int32 + value: -4 + # DR GPU Time Factor + - + type: write + address: [MAIN, 0x472AAC4] + value_type: float + value: 0.0005 +20FPS: + - + type: write + address: [MAIN, 0x472AAC0] + value_type: int32 + value: -3 + # DR GPU Time Factor + - + type: write + address: [MAIN, 0x472AAC4] + value_type: float + value: 0.000667 +25FPS: + - + type: write + address: [MAIN, 0x472AAC0] + value_type: int32 + value: -2 + # DR GPU Time Factor + - + type: write + address: [MAIN, 0x472AAC4] + value_type: float + value: 0.000834 +30FPS: + - + type: write + address: [MAIN, 0x472AAC0] + value_type: int32 + value: -2 + # DR GPU Time Factor + - + type: write + address: [MAIN, 0x472AAC4] + value_type: float + value: 0.001 +35FPS: + - + type: write + address: [MAIN, 0x472AAC0] + value_type: int32 + value: -1 + # DR GPU Time Factor + - + type: write + address: [MAIN, 0x472AAC4] + value_type: float + value: 0.00117 +40FPS: + - + type: write + address: [MAIN, 0x472AAC0] + value_type: int32 + value: -1 + # DR GPU Time Factor + - + type: write + address: [MAIN, 0x472AAC4] + value_type: float + value: 0.00134 +45FPS: + - + type: write + address: [MAIN, 0x472AAC0] + value_type: int32 + value: -1 + # DR GPU Time Factor + - + type: write + address: [MAIN, 0x472AAC4] + value_type: float + value: 0.0015 +50FPS: + - + type: write + address: [MAIN, 0x472AAC0] + value_type: int32 + value: -1 + # DR GPU Time Factor + - + type: write + address: [MAIN, 0x472AAC4] + value_type: float + value: 0.00167 +55FPS: + - + type: write + address: [MAIN, 0x472AAC0] + value_type: int32 + value: -1 + # DR GPU Time Factor + - + type: write + address: [MAIN, 0x472AAC4] + value_type: float + value: 0.00184 +60FPS: + - + type: write + address: [MAIN, 0x472AAC0] + value_type: int32 + value: -1 + # DR GPU Time Factor + - + type: write + address: [MAIN, 0x472AAC4] + value_type: float + value: 0.002 diff --git a/SaltySD/plugins/FPSLocker/patches/0100FBD013AB6000/2CD8707981B46DAF.yaml b/SaltySD/plugins/FPSLocker/patches/0100FBD013AB6000/2CD8707981B46DAF.yaml new file mode 100644 index 0000000..5291d8b --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100FBD013AB6000/2CD8707981B46DAF.yaml @@ -0,0 +1,82 @@ +# SnowRunner 1.0.28 +# BID: 2CD8707981B46DAF +# Just search for 0x42055555 + +unsafeCheck: true + +MASTER_WRITE: +# Redirect DR frametime target to MAIN+0x3538158 + - + type: bytes + main_offset: 0x187DEA4 + value_type: uint32 + value: + - 0xF000E5CA + - 0xBD415942 + # default value + - + type: bytes + main_offset: 0x3538158 + value_type: float + value: 33.3333333333 +15FPS: + - + type: write + address: [MAIN, 0x3538158] + value_type: float + value: 66.6666666666 +20FPS: + - + type: write + address: [MAIN, 0x3538158] + value_type: float + value: 50 +25FPS: + - + type: write + address: [MAIN, 0x3538158] + value_type: float + value: 40 +30FPS: + # default value + - + type: write + address: [MAIN, 0x3538158] + value_type: float + value: 33.3333333333 +35FPS: + - + type: write + address: [MAIN, 0x3538158] + value_type: float + value: 28.5714 +40FPS: + - + type: write + address: [MAIN, 0x3538158] + value_type: float + value: 25 +45FPS: + - + type: write + address: [MAIN, 0x3538158] + value_type: float + value: 22.2222222222 +50FPS: + - + type: write + address: [MAIN, 0x3538158] + value_type: float + value: 20 +55FPS: + - + type: write + address: [MAIN, 0x3538158] + value_type: float + value: 18.1818181818 +60FPS: + - + type: write + address: [MAIN, 0x3538158] + value_type: float + value: 16.6666666666 \ No newline at end of file diff --git a/SaltySD/saltysd_core.elf b/SaltySD/saltysd_core.elf index 68def55..4fb1d57 100644 Binary files a/SaltySD/saltysd_core.elf and b/SaltySD/saltysd_core.elf differ diff --git a/atmosphere/contents/0000000000534C56/exefs.nsp b/atmosphere/contents/0000000000534C56/exefs.nsp index c3b12d5..1e48f21 100644 Binary files a/atmosphere/contents/0000000000534C56/exefs.nsp and b/atmosphere/contents/0000000000534C56/exefs.nsp differ diff --git a/atmosphere/contents/420000000000000B/toolbox.json b/atmosphere/contents/420000000000000B/toolbox.json index b25f3e2..69a3ed1 100644 --- a/atmosphere/contents/420000000000000B/toolbox.json +++ b/atmosphere/contents/420000000000000B/toolbox.json @@ -1,5 +1,5 @@ { "name" : "sys-patch", "tid" : "420000000000000B", - "requires_reboot": true + "requires_reboot": false } diff --git a/atmosphere/package3 b/atmosphere/package3 index 1d5131d..788e86d 100644 Binary files a/atmosphere/package3 and b/atmosphere/package3 differ diff --git a/switch/.overlays/FPSLocker.ovl b/switch/.overlays/FPSLocker.ovl index 99f0279..534abc5 100644 Binary files a/switch/.overlays/FPSLocker.ovl and b/switch/.overlays/FPSLocker.ovl differ diff --git a/switch/.packages/boot_package.ini b/switch/.packages/boot_package.ini index 1aa9268..17d1d0a 100644 --- a/switch/.packages/boot_package.ini +++ b/switch/.packages/boot_package.ini @@ -1,6 +1,14 @@ [boot] clear hex_sum_cache +del '/atmosphere/config_templates/' +del '/atmosphere/contents/00FF0000636C6BFF/toolbox.json' +del '/atmosphere/exefs_patches/logo_sloth/' +del '/atmosphere/hosts/domains.txt' +del '/atmosphere/kip_patches/default_nogc/' +del '/atmosphere/kips/.bak/*.kip' + + del '/bootloader/ini/!kefir_updater.ini' del '/bootloader/ini/kefir_updater.ini' del '/bootloader/ini/fullstock.ini' @@ -17,14 +25,24 @@ del '/bootloader/bootlogo_kefir.bmp' del '/bootloader/updating.bmp' del '/bootloader/4IFIR.ini' -del '/atmosphere/contents/00FF0000636C6BFF/toolbox.json' -del '/SaltySD/plugins/NX-FPS.elf' -del '/SaltySD/plugins/ReverseNX-RT.elf' +del '/config/kefir-helper/' +del '/config/kefir-updater/' del '/config/nx-hbmenu/' del '/config/Ultrahand/' del '/config/Uberhand/' + +del '/games/hbmenu_[0104444444440000].nsp' +del '/games/Homebrew.Menu.v3.5.1.nsp' +del '/games/Homebrew.Menu.v3.6.0.nsp' + + +del '/SaltySD/plugins/NX-FPS.elf' +del '/SaltySD/plugins/ReverseNX-RT.elf' + + +del '/switch/DBI/.DBI.nro.star' del '/switch/kefir-updater/' del '/switch/mhz.nro' del '/switch/MicroMemBench.nro' @@ -35,16 +53,16 @@ del '/switch/.overlays/InfoNX-ovl.ovl' del '/switch/.overlays/Ultra-Status-Monitor.ovl' del '/switch/.overlays/sys-clk-overlay.ovl' -del '/games/hbmenu_[0104444444440000].nsp' -del '/games/Homebrew.Menu.v3.5.1.nsp' -del '/games/Homebrew.Menu.v3.6.0.nsp' -del '/atmosphere/kips/.bak/*.kip' +del '/switch/.packages/Ultra Cleaner/' +del '/switch/.packages/4IFIR Wizard/' +del '/switch/.packages/DBI/' +del '/switch/.packages/Translate Interface/' + del '/atmosphere/crash_reports/' del '/atmosphere/erpt_reports/' del '/atmosphere/fatal_reports/' -del '/switch/.packages/Ultra Cleaner/' -del '/switch/.packages/4IFIR Wizard/' + refresh \ No newline at end of file