diff --git a/README.md b/README.md index 981e983..7258286 100644 --- a/README.md +++ b/README.md @@ -71,8 +71,8 @@ * [Tinfoil](https://tinfoil.io) - Установщик и каталог игр. * [HB App Store](https://github.com/fortheusers/hb-appstore) - Бесплатный магазин для скачивания Homebrew приложений. * [PPSSPP](https://gbatemp.net/threads/ppsspp-switch-standalone-beta.544071/post-10492671) - Эмулятор PSP. + * [Moonlight Switch](https://github.com/XITRIX/Moonlight-Switch) - Клиент Moonlight, позволяет транслировать на консоль игры с PC. * [ThemezerNX](https://github.com/suchmememanyskill/themezer-nx) + [NXThemes Installer](https://github.com/exelix11/SwitchThemeInjector) + [Theme Patches](https://github.com/exelix11/theme-patches) - Поиск и установка тем на свитч. - * [ReverseNX Tool](https://github.com/masagrator/ReverseNX-Tool) - Программа для управления ReverseNX. * [Battery Desync Fix](https://github.com/CTCaer/battery_desync_fix_nx) - Программа для сброса контроллера батареи. Не используйте просто так! * [MemToolkitNX](https://discord.com/channels/854839758815363072/1173171845139288114/1276196700750479480) - Бенчмарк и Тестер памяти. Результат сильно зависит от разгона CPU. * Overlays: diff --git a/README_ENG.md b/README_ENG.md index ad0a81b..b9a12ce 100644 --- a/README_ENG.md +++ b/README_ENG.md @@ -68,7 +68,6 @@ * [HB App Store](https://github.com/fortheusers/hb-appstore) - A free store for downloading Homebrew apps. * [PPSSPP](https://gbatemp.net/threads/ppsspp-switch-standalone-beta.544071/post-10492671) - PSP emulator. * [ThemezerNX](https://github.com/suchmememanyskill/themezer-nx) + [NXThemes Installer](https://github.com/exelix11/SwitchThemeInjector) + [Theme Patches](https://github.com/exelix11/theme-patches) - Searching and installing themes on Switch. - * [ReverseNX Tool](https://github.com/masagrator/ReverseNX-Tool) - ReverseNX control program. * [Battery Desync Fix](https://github.com/CTCaer/battery_desync_fix_nx) - Program to reset the battery controller. Do not use unnecessarily! * **`MemToolkitNX`** - Benchmark and Memory Tester. The result is highly dependent on CPU overclocking. diff --git a/SaltySD/plugins/FPSLocker/patches/010008E01E32A000/BBA39C65C1CC6463.yaml b/SaltySD/plugins/FPSLocker/patches/010008E01E32A000/BBA39C65C1CC6463.yaml new file mode 100644 index 0000000..95da1b1 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010008E01E32A000/BBA39C65C1CC6463.yaml @@ -0,0 +1,30 @@ +# S.T.A.L.K.E.R.: Call of Prypiat 1.0.2 +# BID: BBA39C65C1CC6463 + +unsafeCheck: true + +ALL_FPS: + # psLoadedFrameLimitFps + - + type: evaluate_write + address: [MAIN, 0x17F9784] + value_type: float + value: FPS_LOCK_TARGET + # psCurrentFrameLimitFps + - + type: evaluate_write + address: [MAIN, 0x18168A0] + value_type: float + value: FPS_LOCK_TARGET + # psCurrentFrameLimitMs + - + type: evaluate_write + address: [MAIN, 0x1A8490C] + value_type: float + value: "1000 / FPS_LOCK_TARGET" + # ResolutionInfo::sDynresGPUBudgetMs + - + type: evaluate_write + address: [MAIN, 0x17F9760] + value_type: float + value: "0.99 * FRAMETIME_TARGET" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01000AB01F9C0000/2D2065AEBF94F9AE.yaml b/SaltySD/plugins/FPSLocker/patches/01000AB01F9C0000/2D2065AEBF94F9AE.yaml new file mode 100644 index 0000000..0fda16c --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01000AB01F9C0000/2D2065AEBF94F9AE.yaml @@ -0,0 +1,24 @@ +# Chernobylite 1.1 +# BID: 2D2065AEBF94F9AE + +unsafeCheck: true + +ALL_FPS: + # r.DynamicRes.FrameTimeBudget + - + type: evaluate_write + address: [MAIN, 0x641EAB8, 0] + value_type: float + value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x644C838, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + # r.VSync + - + type: write + address: [MAIN, 0x5C83700, 0] + value_type: int32 + value: [0, 0] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01001CC01B2D4000/C606C7DC1C0EC88F.yaml b/SaltySD/plugins/FPSLocker/patches/01001CC01B2D4000/C606C7DC1C0EC88F.yaml new file mode 100644 index 0000000..a5bf855 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01001CC01B2D4000/C606C7DC1C0EC88F.yaml @@ -0,0 +1,27 @@ +# Goat Simulator 3 1.0.7.5 +# BID: C606C7DC1C0EC88F + +unsafeCheck: false + +ALL_FPS: + # r.DynamicRes.FrameTimeBudget + - + type: evaluate_write + address: [MAIN, 0x954E2F8, 0] + value_type: float + value: ["0.81 * FRAMETIME_TARGET", "0.81 * FRAMETIME_TARGET"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x9573F60, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + # r.VSync + - + type: write + address: [MAIN, 0x8D7E218, 0] + value_type: uint32 + value: [0, 0] + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01001E3017A10000/17F37A56B17DD9CC.yaml b/SaltySD/plugins/FPSLocker/patches/01001E3017A10000/17F37A56B17DD9CC.yaml index ce1d165..96071aa 100644 --- a/SaltySD/plugins/FPSLocker/patches/01001E3017A10000/17F37A56B17DD9CC.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01001E3017A10000/17F37A56B17DD9CC.yaml @@ -1,4 +1,4 @@ -# Farming Simulator 23 Nintendo Switch Edition 1.6.0.0 +# Farming Simulator 23 Nintendo Switch Edition 1.6.0.0/1.7.0.0 # BID: 17F37A56B17DD9CC unsafeCheck: true diff --git a/SaltySD/plugins/FPSLocker/patches/010021801DD26000/B2D4462B71536EC6.yaml b/SaltySD/plugins/FPSLocker/patches/010021801DD26000/B2D4462B71536EC6.yaml new file mode 100644 index 0000000..91e03b7 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010021801DD26000/B2D4462B71536EC6.yaml @@ -0,0 +1,51 @@ +# Momotaro Dentetsu: Showa, Heisei, Reiwa mo Teiban! Asia Edition 1.0.1 +# BID: B2D4462B71536EC6 + +unsafeCheck: true + +MASTER_WRITE: + # Remove double buffer + - + type: bytes + main_offset: 0x1B630 + value_type: uint32 + value: 0x52800061 + - + type: bytes + main_offset: 0x5774C + value_type: uint32 + value: 0x52800061 +ALL_FPS: + # REF: 20 59 60 BC + # Internal FPS Lock + - + type: evaluate_write + address: [MAIN, 0xFF7090] + value_type: float + value: [FPS_TARGET, "60 / FPS_TARGET"] + # Blocking game to max 60 FPS because setting game speed ratio below 1 causes glitches + - + type: evaluate_compare + compare_address: [MAIN, 0xFF7090] + compare_type: ">" + compare_value_type: float + compare_value: 60 + address: [MAIN, 0xFF7090] + value_type: float + value: 60 + - + type: evaluate_compare + compare_address: [MAIN, 0xFF7090] + compare_type: "==" + compare_value_type: float + compare_value: 60 + address: [MAIN, 0xFF7094] + value_type: float + value: 1 + # Unknown value that is set based on FPS Lock function argument, 0 = 60 FPS, 1 = 30 FPS, 2 = 20 FPS, 3 = 15 FPS + # According to IDA is not used at all, but writing this anyway + - + type: evaluate_write + address: [MAIN, 0x10D8028] + value_type: uint32 + value: "VSYNC_TARGET - 1" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010025C0145D4000/0CC82881FF112C6D.yaml b/SaltySD/plugins/FPSLocker/patches/010025C0145D4000/0CC82881FF112C6D.yaml new file mode 100644 index 0000000..2e5bda2 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010025C0145D4000/0CC82881FF112C6D.yaml @@ -0,0 +1,27 @@ +# GUNDAM BREAKER 4 1.9.0 +# BID: 0CC82881FF112C6D + +unsafeCheck: false + +ALL_FPS: + # r.DynamicRes.FrameTimeBudget + - + type: evaluate_write + address: [MAIN, 0x9F98D48, 0] + value_type: float + value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x9FC67E8, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + # r.VSync + - + type: write + address: [MAIN, 0x97CADA8, 0] + value_type: uint32 + value: [0, 0] + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010025C0145D4000/6267E76E9540F2ED.yaml b/SaltySD/plugins/FPSLocker/patches/010025C0145D4000/6267E76E9540F2ED.yaml new file mode 100644 index 0000000..3a13598 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010025C0145D4000/6267E76E9540F2ED.yaml @@ -0,0 +1,27 @@ +# GUNDAM BREAKER 4 1.10.0 +# BID: 6267E76E9540F2ED + +unsafeCheck: true + +ALL_FPS: + # r.DynamicRes.FrameTimeBudget + - + type: evaluate_write + address: [MAIN, 0x9FA2D48, 0] + value_type: float + value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x9FD07E8, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + # r.VSync + - + type: write + address: [MAIN, 0x97D4E48, 0] + value_type: uint32 + value: [0, 0] + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/010027B01E32C000/227837B490A51033.yaml b/SaltySD/plugins/FPSLocker/patches/010027B01E32C000/227837B490A51033.yaml new file mode 100644 index 0000000..66a14e0 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010027B01E32C000/227837B490A51033.yaml @@ -0,0 +1,30 @@ +# S.T.A.L.K.E.R.: Clear Sky 1.0.2 +# BID: 227837B490A51033 + +unsafeCheck: true + +ALL_FPS: + # psLoadedFrameLimitFps + - + type: evaluate_write + address: [MAIN, 0x17D4774] + value_type: float + value: FPS_LOCK_TARGET + # psCurrentFrameLimitFps + - + type: evaluate_write + address: [MAIN, 0x17F18E8] + value_type: float + value: FPS_LOCK_TARGET + # psCurrentFrameLimitMs + - + type: evaluate_write + address: [MAIN, 0x1A5F36C] + value_type: float + value: "1000 / FPS_LOCK_TARGET" + # ResolutionInfo::sDynresGPUBudgetMs + - + type: evaluate_write + address: [MAIN, 0x17D4750] + value_type: float + value: "0.99 * FRAMETIME_TARGET" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01003B90136DA000/1F936E043FB8C349.yaml b/SaltySD/plugins/FPSLocker/patches/01003B90136DA000/1F936E043FB8C349.yaml new file mode 100644 index 0000000..9e53868 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01003B90136DA000/1F936E043FB8C349.yaml @@ -0,0 +1,12 @@ +# Shadowverse: Champion's Battle 1.3.0 +# BID: 1F936E043FB8C349 + +unsafeCheck: true + +ALL_FPS: + # UnityEngine.Time::fixedDeltaTime + - + type: evaluate_write + address: [MAIN, 0x64DB5C0, 0x48] + value_type: float + value: "1 / FPS_TARGET" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01003EB01C2F0000/1EC3E6373D7DA9A6.yaml b/SaltySD/plugins/FPSLocker/patches/01003EB01C2F0000/1EC3E6373D7DA9A6.yaml new file mode 100644 index 0000000..842d36d --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01003EB01C2F0000/1EC3E6373D7DA9A6.yaml @@ -0,0 +1,17 @@ +# MEGATON MUSASHI W: WIRED 3.2.2 +# BID: 1EC3E6373D7DA9A6 + +unsafeCheck: true + +ALL_FPS: + # fixedDeltaTime = 1/FPS + - + type: evaluate_write + address: [MAIN, 0xCAC9F20, 0x48] + value_type: float + value: "1 / FPS_TARGET" + - # maximumDeltaTime = 1/15 (with this setting game will slow down below 15 FPS instead of 30 FPS) + type: write + address: [MAIN, 0xCAC9F20, 0x100] + value_type: float + value: 0.0666666666 diff --git a/SaltySD/plugins/FPSLocker/patches/01003EB01C2F0000/8286C091117CAECF.yaml b/SaltySD/plugins/FPSLocker/patches/01003EB01C2F0000/8286C091117CAECF.yaml new file mode 100644 index 0000000..1a76c59 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01003EB01C2F0000/8286C091117CAECF.yaml @@ -0,0 +1,17 @@ +# MEGATON MUSASHI W: WIRED 3.2.0 +# BID: 8286C091117CAECF + +unsafeCheck: true + +ALL_FPS: + # fixedDeltaTime = 1/FPS + - + type: evaluate_write + address: [MAIN, 0xCAA1720, 0x48] + value_type: float + value: "1 / FPS_TARGET" + - # maximumDeltaTime = 1/15 (with this setting game will slow down below 15 FPS instead of 30 FPS) + type: write + address: [MAIN, 0xCAA1720, 0x100] + value_type: float + value: 0.0666666666 diff --git a/SaltySD/plugins/FPSLocker/patches/01003EB01C2F0000/D152798E91A87AE7.yaml b/SaltySD/plugins/FPSLocker/patches/01003EB01C2F0000/D152798E91A87AE7.yaml new file mode 100644 index 0000000..33f5086 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01003EB01C2F0000/D152798E91A87AE7.yaml @@ -0,0 +1,12 @@ +# MEGATON MUSASHI W: WIRED 3.2.3 +# BID: D152798E91A87AE7 + +unsafeCheck: true + +ALL_FPS: + # fixedDeltaTime = 1/FPS + - + type: evaluate_write + address: [MAIN, 0xCAC9F20, 0x48] + value_type: float + value: "1 / FPS_TARGET" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010045301B86C000/1933FBAFE977FA75.yaml b/SaltySD/plugins/FPSLocker/patches/010045301B86C000/1933FBAFE977FA75.yaml new file mode 100644 index 0000000..09e7a65 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010045301B86C000/1933FBAFE977FA75.yaml @@ -0,0 +1,27 @@ +# Romancing SaGa 2: Revenge of the Seven 1.0.2 +# BID: 1933FBAFE977FA75 + +unsafeCheck: true + +ALL_FPS: + # r.VSync + - + type: write + address: [MAIN, 0x6D1EA80, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals + - + type: evaluate_write + address: [MAIN, 0x7BFAC70, 0] + value_type: float + value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x7C534C0, 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/01004A001E32E000/8E8BFFE66292CFF1.yaml b/SaltySD/plugins/FPSLocker/patches/01004A001E32E000/8E8BFFE66292CFF1.yaml new file mode 100644 index 0000000..7f0e500 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01004A001E32E000/8E8BFFE66292CFF1.yaml @@ -0,0 +1,30 @@ +# S.T.A.L.K.E.R.: Shadow Of Chornobyl 1.0.2 +# BID: 8E8BFFE66292CFF1 + +unsafeCheck: true + +ALL_FPS: + # psLoadedFrameLimitFps + - + type: evaluate_write + address: [MAIN, 0x165F4EC] + value_type: float + value: FPS_LOCK_TARGET + # psCurrentFrameLimitFps + - + type: evaluate_write + address: [MAIN, 0x167B9F0] + value_type: float + value: FPS_LOCK_TARGET + # psCurrentFrameLimitMs + - + type: evaluate_write + address: [MAIN, 0x18E7ACC] + value_type: float + value: "1000 / FPS_LOCK_TARGET" + # ResolutionInfo::sDynresGPUBudgetMs + - + type: evaluate_write + address: [MAIN, 0x165F2F0] + value_type: float + value: "0.99 * FRAMETIME_TARGET" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010050F01DF9C000/25A4C89527E7A6E6.yaml b/SaltySD/plugins/FPSLocker/patches/010050F01DF9C000/25A4C89527E7A6E6.yaml new file mode 100644 index 0000000..c509b6e --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010050F01DF9C000/25A4C89527E7A6E6.yaml @@ -0,0 +1,38 @@ +# REYNATIS (US/EU) 1.0.6 +# BID: 25A4C89527E7A6E6 + +unsafeCheck: true + +MASTER_WRITE: + # Redirect reading DR timing in DynamicResolution::LowerResSW() to MAIN + 0x7C0DF00 + # REF: 01 f0 67 1e + - + type: bytes + main_offset: 0x391CEEC + value_type: uint32 + value: # 941702B0 818247FD 1020611E 6922482D CD020054 6A6240BD + - 0xB0021794 # adrp x20, #0x7c0d000 + - 0xFD478281 # ldr d1, [x20, #0xf00] + - 0x1E612010 # fcmpe d0, d1 + - 0x2D482269 # ldp s9, s8, [x19, #0x40] + - 0x540002CD # b.le #0x391cf54 + - 0xBD40626A # ldr s10, [x19, #0x60] + - + type: bytes + main_offset: 0x391CF54 + value_type: uint32 + value: + - 0xFD478681 # ldr d1, [x20, #0xf08] + # Default handheld value + - + type: bytes + main_offset: 0x7C0DF00 + value_type: double + value: [31, 29] +ALL_FPS: + # Dynamic Resolution Timing + - + type: evaluate_write + address: [MAIN, 0x7C0DF00] + value_type: double + value: ["0.93 * FRAMETIME_TARGET", "(0.93 * FRAMETIME_TARGET) - 2"] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010050F01DF9C000/7C8FE1FD610E1F1F.yaml b/SaltySD/plugins/FPSLocker/patches/010050F01DF9C000/7C8FE1FD610E1F1F.yaml new file mode 100644 index 0000000..7548b8c --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010050F01DF9C000/7C8FE1FD610E1F1F.yaml @@ -0,0 +1,38 @@ +# REYNATIS (US/EU) 1.0.7 +# BID: 7C8FE1FD610E1F1F + +unsafeCheck: true + +MASTER_WRITE: + # Redirect reading DR timing in DynamicResolution::LowerResSW() to MAIN + 0x7C0DF00 + # REF: 01 f0 67 1e + - + type: bytes + main_offset: 0x391CEEC + value_type: uint32 + value: # 941702B0 818247FD 1020611E 6922482D CD020054 6A6240BD + - 0xB0021794 # adrp x20, #0x7c0d000 + - 0xFD478281 # ldr d1, [x20, #0xf00] + - 0x1E612010 # fcmpe d0, d1 + - 0x2D482269 # ldp s9, s8, [x19, #0x40] + - 0x540002CD # b.le #0x391cf54 + - 0xBD40626A # ldr s10, [x19, #0x60] + - + type: bytes + main_offset: 0x391CF54 + value_type: uint32 + value: + - 0xFD478681 # ldr d1, [x20, #0xf08] + # Default handheld value + - + type: bytes + main_offset: 0x7C0DF00 + value_type: double + value: [31, 29] +ALL_FPS: + # Dynamic Resolution Timing + - + type: evaluate_write + address: [MAIN, 0x7C0DF00] + value_type: double + value: ["0.93 * FRAMETIME_TARGET", "(0.93 * FRAMETIME_TARGET) - 2"] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010054E01D878000/27BDC0166D5D5A1B.yaml b/SaltySD/plugins/FPSLocker/patches/010054E01D878000/27BDC0166D5D5A1B.yaml new file mode 100644 index 0000000..570cbde --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010054E01D878000/27BDC0166D5D5A1B.yaml @@ -0,0 +1,12 @@ +# EA SPORTS FC 25 1.75.9499 +# BID: 27BDC0166D5D5A1B + +unsafeCheck: true + +ALL_FPS: + # Internal FPS Lock + - + type: evaluate_write + address: [MAIN, 0xCE1DA68, 8] + value_type: double + value: FPS_TARGET \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010058F01DF8C000/E6B427227FED8411.yaml b/SaltySD/plugins/FPSLocker/patches/010058F01DF8C000/E6B427227FED8411.yaml new file mode 100644 index 0000000..0bda2e4 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010058F01DF8C000/E6B427227FED8411.yaml @@ -0,0 +1,27 @@ +# Funko Fusion 2.3.0 +# BID: E6B427227FED8411 + +unsafeCheck: true + +ALL_FPS: + # r.VSync + - + type: write + address: [MAIN, 0x74BEA68, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals + - + type: evaluate_write + address: [MAIN, 0x849A078, 0] + value_type: float + value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x84C7F60, 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/010058F01DF8C000/F0787926C4CFF8F1.yaml b/SaltySD/plugins/FPSLocker/patches/010058F01DF8C000/F0787926C4CFF8F1.yaml new file mode 100644 index 0000000..211bfa5 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010058F01DF8C000/F0787926C4CFF8F1.yaml @@ -0,0 +1,27 @@ +# Funko Fusion 2.4.0 +# BID: F0787926C4CFF8F1 + +unsafeCheck: true + +ALL_FPS: + # r.VSync + - + type: write + address: [MAIN, 0x74FBA68, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals + - + type: evaluate_write + address: [MAIN, 0x84D7078, 0] + value_type: float + value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x8504F60, 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/01005C7015D30000/9E7FB72540D748BA.yaml b/SaltySD/plugins/FPSLocker/patches/01005C7015D30000/9E7FB72540D748BA.yaml new file mode 100644 index 0000000..cac634f --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01005C7015D30000/9E7FB72540D748BA.yaml @@ -0,0 +1,21 @@ +# Tales of Kenzera: TAU 1.5.0 +# BID: 9E7FB72540D748BA + +unsafeCheck: true + +ALL_FPS: + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x6917E78, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + # r.VSync + - + type: write + address: [MAIN, 0x611ADC8, 0] + value_type: uint32 + value: [0, 0] + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01005EA01C0FC000/C8CDBFD621A6B29B.yaml b/SaltySD/plugins/FPSLocker/patches/01005EA01C0FC000/C8CDBFD621A6B29B.yaml new file mode 100644 index 0000000..f10fab4 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01005EA01C0FC000/C8CDBFD621A6B29B.yaml @@ -0,0 +1,28 @@ +# SONIC X SHADOW GENERATIONS Launcher / SHADOW GENERATIONS 1.1.0 +# BID: C8CDBFD621A6B29B + +# FPS Lock is used to determine dynamic resolution timing too, but it doesn't work properly when setting higher FPS. +# DR Timing Fix is applied for anything above 30 FPS as it seems to fix the most notorious issue - stucking at 360p. +# Turn off Window Sync for better performance + +unsafeCheck: true + +ALL_FPS: + # Internal FPS Lock + # REF: C8 AA 8A 52 A8 30 A8 72 first ADRP above it + - + type: evaluate_write + address: [MAIN, 0x3EAB7B8, 0x14] + value_type: float + value: FPS_TARGET + # DR Timing fix, applied only for handheld + # Ref: 00 01 3F D6 B4 02 00 F9 E0 03 13 AA 01 3E 80 52 first ADRP above it + - + type: evaluate_compare + compare_address: [MAIN, 0x3EAB7E0, 0x18, 0x260, 0x24] + compare_value_type: float + compare_type: "==" + compare_value: -2.8 + address: [MAIN, 0x3EAB7E0, 0x18, 0x260, 0x24] + value_type: float + value: ["-1.4 * VSYNC_TARGET", "-0.6 * VSYNC_TARGET", "0.025 * VSYNC_TARGET", "0.04 * VSYNC_TARGET", "0.05 * VSYNC_TARGET", "0.15 * VSYNC_TARGET"] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01005EA01C0FC001/D91C67509C6AED8D.yaml b/SaltySD/plugins/FPSLocker/patches/01005EA01C0FC001/D91C67509C6AED8D.yaml index 66affdc..3f46a67 100644 --- a/SaltySD/plugins/FPSLocker/patches/01005EA01C0FC001/D91C67509C6AED8D.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01005EA01C0FC001/D91C67509C6AED8D.yaml @@ -1,4 +1,4 @@ -# SONIC GENERATIONS 1.0.1 +# SONIC GENERATIONS 1.0.1/1.1.0 # BID: D91C67509C6AED8D unsafeCheck: true @@ -24,4 +24,4 @@ ALL_FPS: type: write address: [MAIN, 0x5226F00] value_type: uint8 - value: 0 \ No newline at end of file + value: 0 diff --git a/SaltySD/plugins/FPSLocker/patches/010066F01A0E0000/153D5A2ABB9C0BA6.yaml b/SaltySD/plugins/FPSLocker/patches/010066F01A0E0000/153D5A2ABB9C0BA6.yaml new file mode 100644 index 0000000..576e17f --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010066F01A0E0000/153D5A2ABB9C0BA6.yaml @@ -0,0 +1,21 @@ +# Cassette Beasts 1.7.2 +# BID: 153D5A2ABB9C0BA6 + +unsafeCheck: true + +ALL_FPS: + # physics/common/physics_fps + - + type: evaluate_write + address: [MAIN, 0x30AAAE0, 0x24] + value_type: int32 + value: FPS_TARGET + # debug/settings/fps/force_fps + - + type: evaluate_write + address: [MAIN, 0x30AAAE0, 0x30] + value_type: int32 + value: FPS_LOCK_TARGET + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/010066F01A0E0000/F09EAE79357E3032.yaml b/SaltySD/plugins/FPSLocker/patches/010066F01A0E0000/F09EAE79357E3032.yaml new file mode 100644 index 0000000..a2aa2a3 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010066F01A0E0000/F09EAE79357E3032.yaml @@ -0,0 +1,21 @@ +# Cassette Beasts 1.7.1 +# BID: F09EAE79357E3032 + +unsafeCheck: true + +ALL_FPS: + # physics/common/physics_fps + - + type: evaluate_write + address: [MAIN, 0x30AAAE0, 0x24] + value_type: int32 + value: FPS_LOCK_TARGET + # debug/settings/fps/force_fps + - + type: evaluate_write + address: [MAIN, 0x30AAAE0, 0x30] + value_type: int32 + value: FPS_LOCK_TARGET + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/01006F401D934000/E3FBEB5A9C7788CD.yaml b/SaltySD/plugins/FPSLocker/patches/01006F401D934000/E3FBEB5A9C7788CD.yaml new file mode 100644 index 0000000..de5e846 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/01006F401D934000/E3FBEB5A9C7788CD.yaml @@ -0,0 +1,21 @@ +# Twilight Survivors 1.0.10 +# BID: E3FBEB5A9C7788CD + +unsafeCheck: true + +ALL_FPS: + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x6583898, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + # r.VSync + - + type: write + address: [MAIN, 0x5D87128, 0] + value_type: uint32 + value: [0, 0] + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/010072E01CE0E000/8A9EBE9FC405A31C.yaml b/SaltySD/plugins/FPSLocker/patches/010072E01CE0E000/8A9EBE9FC405A31C.yaml new file mode 100644 index 0000000..731ac42 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010072E01CE0E000/8A9EBE9FC405A31C.yaml @@ -0,0 +1,27 @@ +# F1 Manager 2024 1.10 +# BID: 8A9EBE9FC405A31C + +unsafeCheck: true + +ALL_FPS: + # r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals + - + type: evaluate_write + address: [MAIN, 0x7FC8A28, 0] + value_type: float + value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x8002AA0, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + # r.VSync + - + type: write + address: [MAIN, 0x7805AA8, 0] + value_type: uint32 + value: [0, 0] + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/010073C01AF34000/675538722EE1FACB.yaml b/SaltySD/plugins/FPSLocker/patches/010073C01AF34000/675538722EE1FACB.yaml new file mode 100644 index 0000000..1a7b521 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010073C01AF34000/675538722EE1FACB.yaml @@ -0,0 +1,27 @@ +# LEGO Horizon Adventures 1.2.0 +# BID: 675538722EE1FACB + +unsafeCheck: true + +ALL_FPS: + # r.VSync + - + type: write + address: [MAIN, 0x9134990, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals + - + type: evaluate_write + address: [MAIN, 0xA103148, 0] + value_type: float + value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0xA13DAF0, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/010073C01AF34000/B3DFF885ABB66B5C.yaml b/SaltySD/plugins/FPSLocker/patches/010073C01AF34000/B3DFF885ABB66B5C.yaml new file mode 100644 index 0000000..3bbe5aa --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010073C01AF34000/B3DFF885ABB66B5C.yaml @@ -0,0 +1,27 @@ +# LEGO Horizon Adventures 1.3.0 +# BID: B3DFF885ABB66B5C + +unsafeCheck: true + +ALL_FPS: + # r.VSync + - + type: write + address: [MAIN, 0x913A990, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals + - + type: evaluate_write + address: [MAIN, 0xA109148, 0] + value_type: float + value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0xA143AF0, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/010074F013262000/82D187FE9EF9BE92.yaml b/SaltySD/plugins/FPSLocker/patches/010074F013262000/82D187FE9EF9BE92.yaml index 65d1886..7d5a64b 100644 --- a/SaltySD/plugins/FPSLocker/patches/010074F013262000/82D187FE9EF9BE92.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010074F013262000/82D187FE9EF9BE92.yaml @@ -1,7 +1,7 @@ # Xenoblade Chronicles 3 2.2.0 # BID: 82D187FE9EF9BE92 -unsafeCheck: true +unsafeCheck: false MASTER_WRITE: # Redirect DR frametime target reading to .bss code cave [MAIN, 0x236AB00] @@ -72,35 +72,7 @@ ALL_FPS: compare_value: 0 address: [MAIN, 0x236AB00] value_type: float - value: "(1 / 30) / 2" - - - type: evaluate_compare - compare_address: [MAIN, 0x1BA1A98] - compare_type: "!=" - compare_value_type: int8 - compare_value: 0 - address: [MAIN, 0x1BA1A90, 128] - value_type: float - value: "(1 / 30) / 2" -ALL_REFRESH_RATES: - - - type: compare - compare_address: [MAIN, 0x1BA1A98] - compare_type: "!=" - compare_value_type: int8 - compare_value: 0 - address: [MAIN, 0x1B42DB0] - value_type: int32 - value: [1, 1] - - - type: evaluate_compare - compare_address: [MAIN, 0x1BA1A98] - compare_type: "!=" - compare_value_type: int8 - compare_value: 0 - address: [MAIN, 0x236AB00] - value_type: float - value: "1 / 30" + value: "((1 / 30) / 2) * 0.78" - type: evaluate_compare compare_address: [MAIN, 0x1BA1A98] diff --git a/SaltySD/plugins/FPSLocker/patches/010075101EF84000/109D974E180A5AA1.yaml b/SaltySD/plugins/FPSLocker/patches/010075101EF84000/109D974E180A5AA1.yaml index d4b97a2..7fd7e03 100644 --- a/SaltySD/plugins/FPSLocker/patches/010075101EF84000/109D974E180A5AA1.yaml +++ b/SaltySD/plugins/FPSLocker/patches/010075101EF84000/109D974E180A5AA1.yaml @@ -1,7 +1,7 @@ # Stray 1.6.0 # BID: 109D974E180A5AA1 -unsafeCheck: true +unsafeCheck: false ALL_FPS: # Disable bUseFixedFrameRate @@ -30,4 +30,4 @@ ALL_FPS: value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] - type: block - what: timing \ No newline at end of file + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/01007EF00011E000/8E9978D50BDD20B4.yaml b/SaltySD/plugins/FPSLocker/patches/01007EF00011E000/8E9978D50BDD20B4.yaml index 1237cb4..99ffb72 100644 --- a/SaltySD/plugins/FPSLocker/patches/01007EF00011E000/8E9978D50BDD20B4.yaml +++ b/SaltySD/plugins/FPSLocker/patches/01007EF00011E000/8E9978D50BDD20B4.yaml @@ -95,8 +95,8 @@ MASTER_WRITE: - 0xF9464422 - 0xF9064420 - 0xCB020000 - - 0x528502A2 - - 0x72A00FE2 + - 0xD503201F + - 0xB94D0822 - 0x52881541 - 0x72A07F21 - 0xEB01001F @@ -193,6 +193,12 @@ MASTER_WRITE: main_offset: 0x2D65C94 value_type: int32 value: -2 + # Default min delta + - + type: bytes + main_offset: 0x2D65D08 + value_type: int32 + value: 33333333 ALL_FPS: # DR GPU Time Factor - @@ -200,13 +206,18 @@ ALL_FPS: address: [MAIN, 0x2D65C80] value_type: float value: "(FPS_TARGET / 30) * 0.001" + # Set Min delta + - + type: evaluate_write + address: [MAIN, 0x2D65D08] + value_type: uint32 + value: "FRAMETIME_TARGET * 1000000" # Default vsync - type: evaluate_write address: [MAIN, 0x2D65C94] value_type: int32 value: "VSYNC_TARGET * -1" -ALL_REFRESH_RATES: # Prerendered cutscenes must be played at 30 FPS - type: compare diff --git a/SaltySD/plugins/FPSLocker/patches/0100853015E86000/1FEBABDBBDE0228B.yaml b/SaltySD/plugins/FPSLocker/patches/0100853015E86000/1FEBABDBBDE0228B.yaml new file mode 100644 index 0000000..ae9eeb9 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100853015E86000/1FEBABDBBDE0228B.yaml @@ -0,0 +1,34 @@ +# No Man's Sky 5.2.9 +# BID: 1FEBABDBBDE0228B + +unsafeCheck: true + +MASTER_WRITE: + # REF: A8 AA 8A 52 A8 40 A8 72 + # NOP "CMP W8, #0" before ref + - + type: bytes + main_offset: 0x1F9CEC8 + value_type: uint32 + value: 0xD503201F + # Redirect DR frametime target to MAIN+0x4964F00 + - + type: bytes + main_offset: 0x1F9CED4 + value_type: uint32 + value: # 52 4E 01 90 08 00 40 B9 40 02 4F BD + - 0x90014E52 # adrp x18, #0x4964000 + - 0xB9400008 # ldr w8, [x0] + - 0xBD4F0240 # ldr s0, [x18, #0xf00] + # default value + - + type: bytes + main_offset: 0x4964F00 + value_type: float + value: 33.3333333333 +ALL_FPS: + - + type: evaluate_write + address: [MAIN, 0x4964F00] + value_type: float + value: FRAMETIME_TARGET \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100853015E86000/6488A67709988BD7.yaml b/SaltySD/plugins/FPSLocker/patches/0100853015E86000/6488A67709988BD7.yaml new file mode 100644 index 0000000..3f614ff --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100853015E86000/6488A67709988BD7.yaml @@ -0,0 +1,32 @@ +# No Man's Sky 5.2.8 +# BID: 6488A67709988BD7 + +unsafeCheck: true + +MASTER_WRITE: +# Redirect DR frametime target to MAIN+0x4963F00 + - + type: bytes + main_offset: 0x1F9D198 + value_type: uint32 + value: 0xD503201F + - + type: bytes + main_offset: 0x1F9D1A4 + value_type: uint32 + value: + - 0xD0014E32 + - 0xB9400408 + - 0xBD4F0240 + # default value + - + type: bytes + main_offset: 0x4963F00 + value_type: float + value: 33.3333333333 +ALL_FPS: + - + type: evaluate_write + address: [MAIN, 0x4963F00] + value_type: float + value: FRAMETIME_TARGET \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100853015E86000/9761E793CBE5895F.yaml b/SaltySD/plugins/FPSLocker/patches/0100853015E86000/9761E793CBE5895F.yaml new file mode 100644 index 0000000..7d5cc6b --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100853015E86000/9761E793CBE5895F.yaml @@ -0,0 +1,32 @@ +# No Man's Sky 5.2.6 +# BID: 9761E793CBE5895F + +unsafeCheck: true + +MASTER_WRITE: +# Redirect DR frametime target to MAIN+0x4962F00 + - + type: bytes + main_offset: 0x1F9C5C8 + value_type: uint32 + value: 0xD503201F + - + type: bytes + main_offset: 0x1F9C5D4 + value_type: uint32 + value: + - 0xD0014E32 + - 0xB9400408 + - 0xBD4F0240 + # default value + - + type: bytes + main_offset: 0x4962F00 + value_type: float + value: 33.3333333333 +ALL_FPS: + - + type: evaluate_write + address: [MAIN, 0x4962F00] + value_type: float + value: FRAMETIME_TARGET \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100926016012000/B2395B882C2BCB24.yaml b/SaltySD/plugins/FPSLocker/patches/0100926016012000/B2395B882C2BCB24.yaml new file mode 100644 index 0000000..ef88a53 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100926016012000/B2395B882C2BCB24.yaml @@ -0,0 +1,12 @@ +# PowerWash Simulator 1.9.2 +# BID: B2395B882C2BCB24 + +unsafeCheck: false + +ALL_FPS: + # FuturLab.SingletonMonoBehaviour_TypeInfo (don't block FPSlocker internal lock because game's lock is kinda shit) + - + type: evaluate_write + address: [MAIN, 0x5FA0BD8, 0xB8, 0, 0x28] + value_type: int32 + value: FPS_LOCK_TARGET \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100947013122000/9FC46F388F6C684C.yaml b/SaltySD/plugins/FPSLocker/patches/0100947013122000/9FC46F388F6C684C.yaml index a7e4dd0..7015762 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100947013122000/9FC46F388F6C684C.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100947013122000/9FC46F388F6C684C.yaml @@ -3,76 +3,10 @@ unsafeCheck: true -15FPS: - # Address that is used to determine if it should use dev's own classes to get vsync target - # If we change it to anything that is above or equal 0, it's using Unity class that always returns -1 - # Returning from function getting vsync target anything else than 2 results in Dynamic Resolution target set to 60 FPS, otherwise it's 30 FPS - # We cannot patch those FPS targets directly with FPSLocker as they are hardcoded +#TODO: Patch DR FPS targets directly, for now -1 = 30 FPS, 0 = 60 FPS +ALL_FPS: - - type: write + type: evaluate_write address: [MAIN, 0x5B18318, 0x944] value_type: int32 - value: -1 -20FPS: - #Vsync target (default value) - - - type: write - address: [MAIN, 0x5B18318, 0x944] - value_type: int32 - value: -1 -25FPS: - #Vsync target (default value) - - - type: write - address: [MAIN, 0x5B18318, 0x944] - value_type: int32 - value: -1 -30FPS: - #Vsync target (default value) - - - type: write - address: [MAIN, 0x5B18318, 0x944] - value_type: int32 - value: -1 -35FPS: - #Vsync target - - - type: write - address: [MAIN, 0x5B18318, 0x944] - value_type: int32 - value: 0 -40FPS: - #Vsync target - - - type: write - address: [MAIN, 0x5B18318, 0x944] - value_type: int32 - value: 0 -45FPS: - #Vsync target - - - type: write - address: [MAIN, 0x5B18318, 0x944] - value_type: int32 - value: 0 -50FPS: - #Vsync target - - - type: write - address: [MAIN, 0x5B18318, 0x944] - value_type: int32 - value: 0 -55FPS: - #Vsync target - - - type: write - address: [MAIN, 0x5B18318, 0x944] - value_type: int32 - value: 0 -60FPS: - #Vsync target - - - type: write - address: [MAIN, 0x5B18318, 0x944] - value_type: int32 - value: 0 + value: "(VSYNC_TARGET * -1) + 1" diff --git a/SaltySD/plugins/FPSLocker/patches/010097F018538000/448820AF8E20D65D.yaml b/SaltySD/plugins/FPSLocker/patches/010097F018538000/448820AF8E20D65D.yaml new file mode 100644 index 0000000..c8db5ef --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/010097F018538000/448820AF8E20D65D.yaml @@ -0,0 +1,12 @@ +# DAVE THE DIVER 1.0.3.972 +# BID: 448820AF8E20D65D + +unsafeCheck: true + +ALL_FPS: + # UnityEngine.Time::fixedDeltaTime + - + type: evaluate_write + address: [MAIN, 0x9735300, 0x48] + value_type: float + value: "1 / FPS_TARGET" diff --git a/SaltySD/plugins/FPSLocker/patches/0100A21017C42000/01CBDFDED43B80F5.yaml b/SaltySD/plugins/FPSLocker/patches/0100A21017C42000/01CBDFDED43B80F5.yaml new file mode 100644 index 0000000..c6c80fe --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100A21017C42000/01CBDFDED43B80F5.yaml @@ -0,0 +1,80 @@ +# Another Crab's Treasure 1.0.103.9 +# BID: 01CBDFDED43B80F5 + +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 + main_offset: 0x18EB7C8 + value_type: uint32 + value: # 08 EA 01 D0 08 39 4B B9 01 01 23 1E 00 10 2e 1e 00 18 21 1e + - 0xD001EA08 # adrp x8, 0x562d000 + - 0xB94B3908 # ldr w8, [x8, #0xb38] + - 0x1E230101 # ucvtf s1, w8 + - 0x1E2E1000 # fmov s0, #1.00000000 + - 0x1E211800 # fdiv s0, s0, s1 + - + type: bytes + main_offset: 0x18EF310 + value_type: uint32 + value: # E8 E9 01 D0 08 39 4B B9 01 01 23 1E 00 10 2e 1e 00 18 21 1e + - 0xD001E9E8 # adrp x8, 0x562d000 + - 0xB94B3908 # ldr w8, [x8, #0xb38] + - 0x1E230101 # ucvtf s1, w8 + - 0x1E2E1000 # fmov s0, #1.00000000 + - 0x1E211800 # fdiv s0, s0, s1 + # Redirect Dynamic Resolution GPU Timing target in DynamicResolutionScaler::Update to MAIN+0x5AA3F08 + - + type: bytes + main_offset: 0x3882694 + value_type: uint32 + value: # 08 11 01 B0 08 85 47 F9 1F 20 03 D5 1F 20 03 D5 + - 0xB0011108 # adrp x8, #0x5aa3000 + - 0xF9478508 # ldr x8, [x8, #0xf08] + - 0xD503201F # nop + - 0xD503201F # nop + - + type: bytes + main_offset: 0x3882714 + value_type: uint32 + value: # 08 11 01 B0 08 85 47 F9 60 2A 40 BD 1F 20 03 D5 1F 20 03 D5 + - 0xB0011108 # adrp x8, #0x5aa3000 + - 0xF9478508 # ldr x8, [x8, #0xf08] + - 0xBD402A60 # ldr s0, [x19, #0x28] + - 0xD503201F # nop + - 0xD503201F # nop + - + type: bytes + main_offset: 0x3882788 + value_type: uint32 + value: # 08 11 01 B0 08 85 47 F9 1F 20 03 D5 1F 20 03 D5 + - 0xB0011108 # adrp x8, #0x5aa3000 + - 0xF9478508 # ldr x8, [x8, #0xf08] + - 0xD503201F # nop + - 0xD503201F # nop + # Default values + - + type: bytes + main_offset: 0x562DB38 + value_type: uint32 + value: 30 + - + type: bytes + main_offset: 0x5AA3F08 + value_type: double + value: 28.57142857142857 +ALL_FPS: + # UnityEngine.Application::targetFrameRate + - + type: evaluate_write + address: [MAIN, 0x562DB38] + value_type: uint32 + value: FPS_TARGET + # GPU Timing Target + - + type: evaluate_write + address: [MAIN, 0x5AA3F08] + value_type: double + value: "1000 / (FPS_TARGET + 5)" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100A21017C42000/3980F76403AE4CF2.yaml b/SaltySD/plugins/FPSLocker/patches/0100A21017C42000/3980F76403AE4CF2.yaml index e433ed5..9552d46 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100A21017C42000/3980F76403AE4CF2.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100A21017C42000/3980F76403AE4CF2.yaml @@ -77,4 +77,4 @@ ALL_FPS: type: evaluate_write address: [MAIN, 0x5A8D908] value_type: double - value: "1 / (FPS_TARGET + 5)" + value: "1000 / (FPS_TARGET + 5)" diff --git a/SaltySD/plugins/FPSLocker/patches/0100B2301F4A8000/FF8EFD0E0E71BB03.yaml b/SaltySD/plugins/FPSLocker/patches/0100B2301F4A8000/FF8EFD0E0E71BB03.yaml new file mode 100644 index 0000000..ad01bcd --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100B2301F4A8000/FF8EFD0E0E71BB03.yaml @@ -0,0 +1,21 @@ +# Life is Strange: Double Exposure 1.0.2 +# BID: FF8EFD0E0E71BB03 + +unsafeCheck: true + +ALL_FPS: + # r.VSync + - + type: write + address: [MAIN, 0x6910E90, 0] + value_type: int32 + value: [0, 0] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x791E2D8, 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/0100C9801FEE6000/AE90FD64E7B2FE1E.yaml b/SaltySD/plugins/FPSLocker/patches/0100C9801FEE6000/AE90FD64E7B2FE1E.yaml new file mode 100644 index 0000000..8b27f58 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100C9801FEE6000/AE90FD64E7B2FE1E.yaml @@ -0,0 +1,17 @@ +# Yakuza Kiwami 1.01 +# BID: AE90FD64E7B2FE1E + +unsafeCheck: true + +ALL_FPS: + # Block cutscenes to 30 FPS to fix glitches + # REF 6B 01 40 F9 2A 29 42 B9 69 B9 40 F9, any result, second LDR above (LDR X9) + - + type: compare + compare_type: "!=" + compare_value_type: uint64 + compare_address: [MAIN, 0x2597E00] + compare_value: 0 + address: [MAIN] + value_type: refresh_rate + value: 30 diff --git a/SaltySD/plugins/FPSLocker/patches/0100CAF00B744000/FE77FFB8CBFB3A5C.yaml b/SaltySD/plugins/FPSLocker/patches/0100CAF00B744000/FE77FFB8CBFB3A5C.yaml index d38623c..7cc3eaf 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100CAF00B744000/FE77FFB8CBFB3A5C.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100CAF00B744000/FE77FFB8CBFB3A5C.yaml @@ -1,6 +1,7 @@ -# Valkyria Chronicles 1.0.0 +# Valkyria Chronicles 1.0.0/1.0.1 # BID: FE77FFB8CBFB3A5C # 2D Animations speed is still tied to framerate +# Buffers info is passed to fixed size class, making triple buffer patch requires effort unsafeCheck: true @@ -10,4 +11,4 @@ ALL_FPS: type: evaluate_write address: [MAIN, 0x95CA9C] value_type: float - value: "60 / FPS_TARGET" \ No newline at end of file + value: "60 / FPS_TARGET" diff --git a/SaltySD/plugins/FPSLocker/patches/0100CE101B698000/35FC3A7D13060376.yaml b/SaltySD/plugins/FPSLocker/patches/0100CE101B698000/35FC3A7D13060376.yaml new file mode 100644 index 0000000..4ec4a2d --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100CE101B698000/35FC3A7D13060376.yaml @@ -0,0 +1,27 @@ +# Monster Jam Showdown 1.0.6 +# BID: 35FC3A7D13060376 + +unsafeCheck: true + +ALL_FPS: + # r.DynamicRes.FrameTimeBudget + - + type: evaluate_write + address: [MAIN, 0xAC39688, 0] + value_type: float + value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0xAC74030, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + # r.VSync + - + type: write + address: [MAIN, 0x9C78970, 0] + value_type: uint32 + value: [0, 0] + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100CE101B698000/D07D96A610514C45.yaml b/SaltySD/plugins/FPSLocker/patches/0100CE101B698000/D07D96A610514C45.yaml new file mode 100644 index 0000000..13ce123 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100CE101B698000/D07D96A610514C45.yaml @@ -0,0 +1,27 @@ +# Monster Jam Showdown 1.0.5 +# BID: D07D96A610514C45 + +unsafeCheck: true + +ALL_FPS: + # r.DynamicRes.FrameTimeBudget + - + type: evaluate_write + address: [MAIN, 0xAC34688, 0] + value_type: float + value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0xAC6F030, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + # r.VSync + - + type: write + address: [MAIN, 0x9C73970, 0] + value_type: uint32 + value: [0, 0] + - + type: block + what: timing \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100D1501ABAE000/4B7F793B8355C016.yaml b/SaltySD/plugins/FPSLocker/patches/0100D1501ABAE000/4B7F793B8355C016.yaml new file mode 100644 index 0000000..381e47c --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100D1501ABAE000/4B7F793B8355C016.yaml @@ -0,0 +1,27 @@ +# SOUTH PARK: SNOW DAY! 1.0.11 +# BID: 4B7F793B8355C016 + +unsafeCheck: true + +ALL_FPS: + # r.VSync + - + type: write + address: [MAIN, 0x7E97DC8, 0] + value_type: int32 + value: [0, 0] + # r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 1 decimal + - + type: evaluate_write + address: [MAIN, 0x8663488, 0] + value_type: float + value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x8688EF8, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/0100D5801E904000/CE493FC8CDD3D7B2.yaml b/SaltySD/plugins/FPSLocker/patches/0100D5801E904000/CE493FC8CDD3D7B2.yaml new file mode 100644 index 0000000..bbb5367 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100D5801E904000/CE493FC8CDD3D7B2.yaml @@ -0,0 +1,18 @@ +# Caravan SandWitch 1.0.5 +# BID: CE493FC8CDD3D7B2 + +unsafeCheck: true + +ALL_FPS: + # r.DynamicRes.FrameTimeBudget + - + type: evaluate_write + address: [MAIN, 0x7A4A190, 0] + value_type: float + value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x7A838A0, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100DA201EBF8000/10844A7A20C5597E.yaml b/SaltySD/plugins/FPSLocker/patches/0100DA201EBF8000/10844A7A20C5597E.yaml new file mode 100644 index 0000000..bc58de2 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100DA201EBF8000/10844A7A20C5597E.yaml @@ -0,0 +1,27 @@ +# Disney Epic Mickey: Rebrushed 1.0.4 +# BID: 10844A7A20C5597E + +unsafeCheck: true + +ALL_FPS: + # r.DynamicRes.FrameTimeBudget + - + type: evaluate_write + address: [MAIN, 0x6E35A58, 0] + value_type: float + value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"] + # t.MaxFPS + - + type: evaluate_write + address: [MAIN, 0x6E636F8, 0] + value_type: float + value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + # r.VSync + - + type: write + address: [MAIN, 0x6666668, 0] + value_type: uint32 + value: [0, 0] + - + type: block + what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/0100E6B01BD3A000/27AB93A086868C70.yaml b/SaltySD/plugins/FPSLocker/patches/0100E6B01BD3A000/27AB93A086868C70.yaml new file mode 100644 index 0000000..c34410a --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100E6B01BD3A000/27AB93A086868C70.yaml @@ -0,0 +1,13 @@ +# Card-en-Ciel 1.1.0 +# BID: 27AB93A086868C70 + +unsafeCheck: true + +ALL_FPS: + # Internal FPS Lock + # REF: look at nn::os::SleepThread() called in nnMain() + - + type: evaluate_write + address: [MAIN, 0x207F248, 0x5C] + value_type: float + value: 1 / FPS_LOCK_TARGET \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100E6B01BD3A000/59C5C45EF17ACADA.yaml b/SaltySD/plugins/FPSLocker/patches/0100E6B01BD3A000/59C5C45EF17ACADA.yaml new file mode 100644 index 0000000..3c638c1 --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100E6B01BD3A000/59C5C45EF17ACADA.yaml @@ -0,0 +1,14 @@ +# Card-en-Ciel 1.2.0 +# BID: 59C5C45EF17ACADA +# Buffers are hardcoded line by line and put into fixed size heap allocation, so getting triple buffer requires effort + +unsafeCheck: true + +ALL_FPS: + # Internal FPS Lock + # REF: look at nn::os::SleepThread() called in nnMain() + - + type: evaluate_write + address: [MAIN, 0x20F2248, 0x5C] + value_type: float + value: 1 / FPS_LOCK_TARGET diff --git a/SaltySD/plugins/FPSLocker/patches/0100EE00205BA000/E7011BF08747297B.yaml b/SaltySD/plugins/FPSLocker/patches/0100EE00205BA000/E7011BF08747297B.yaml new file mode 100644 index 0000000..916c0ef --- /dev/null +++ b/SaltySD/plugins/FPSLocker/patches/0100EE00205BA000/E7011BF08747297B.yaml @@ -0,0 +1,12 @@ +# HEAVEN SEEKER ――The Savior of This Cruel World 1.0.4.126 +# BID: E7011BF08747297B + +unsafeCheck: true + +ALL_FPS: + # UnityEngine.Time::fixedDeltaTime (default is 0.03268) + - + type: evaluate_write + address: [MAIN, 0x95672B8, 0x48] + value_type: float + value: "(1 / FPS_TARGET) / 1.02" \ No newline at end of file diff --git a/SaltySD/plugins/FPSLocker/patches/0100F2C0115B6000/9B4E43650501A4D4.yaml b/SaltySD/plugins/FPSLocker/patches/0100F2C0115B6000/9B4E43650501A4D4.yaml index 111f8d0..23b1299 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100F2C0115B6000/9B4E43650501A4D4.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100F2C0115B6000/9B4E43650501A4D4.yaml @@ -165,7 +165,7 @@ ALL_FPS: address: [MAIN, 0x472AAC4] value_type: float value: "(FPS_TARGET / 30) * 0.001" -ALL_REFRESH_RATES: + # cutscenes must be played at 30 FPS - type: compare compare_address: [MAIN, 0x472AABC] diff --git a/SaltySD/plugins/FPSLocker/patches/0100FD101186C000/BF0088C59D7E97C0.yaml b/SaltySD/plugins/FPSLocker/patches/0100FD101186C000/BF0088C59D7E97C0.yaml index 5aa810e..5c62f42 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100FD101186C000/BF0088C59D7E97C0.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100FD101186C000/BF0088C59D7E97C0.yaml @@ -10,6 +10,12 @@ ALL_FPS: address: [MAIN, 0x8082C68, 0] value_type: float value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] + # r.VSync + - + type: write + address: [MAIN, 0x78412B0, 0] + value_type: uint32 + value: [0, 0] - type: block what: timing diff --git a/SaltySD/plugins/FPSLocker/patches/0100FF500E34A000/92C78BB3DCBBC3F7.yaml b/SaltySD/plugins/FPSLocker/patches/0100FF500E34A000/92C78BB3DCBBC3F7.yaml index 9f3b792..17cdb3c 100644 --- a/SaltySD/plugins/FPSLocker/patches/0100FF500E34A000/92C78BB3DCBBC3F7.yaml +++ b/SaltySD/plugins/FPSLocker/patches/0100FF500E34A000/92C78BB3DCBBC3F7.yaml @@ -1,7 +1,7 @@ # Xenoblade Chronicles 1.1.2 # BID: 92C78BB3DCBBC3F7 -unsafeCheck: true +unsafeCheck: false ALL_FPS: - diff --git a/SaltySD/saltysd_core.elf b/SaltySD/saltysd_core.elf index 2226075..6a2e841 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 83a8115..e37e541 100644 Binary files a/SaltySD/saltysd_core32.elf and b/SaltySD/saltysd_core32.elf differ diff --git a/atmosphere/config/system_settings.ini b/atmosphere/config/system_settings.ini index 82ae027..9ff793d 100644 --- a/atmosphere/config/system_settings.ini +++ b/atmosphere/config/system_settings.ini @@ -1,7 +1,7 @@ [atmosphere] dmnt_cheats_enabled_by_default=u8!0x0 dmnt_always_save_cheat_toggles=u8!0x1 -fatal_auto_reboot_interval=u64!0x0 +fatal_auto_reboot_interval=u64!0x3000 enable_external_bluetooth_db=u8!0x1 [contents_delivery] diff --git a/atmosphere/contents/0000000000534C56/exefs.nsp b/atmosphere/contents/0000000000534C56/exefs.nsp index 3ebf1be..b475dde 100644 Binary files a/atmosphere/contents/0000000000534C56/exefs.nsp and b/atmosphere/contents/0000000000534C56/exefs.nsp differ diff --git a/atmosphere/contents/420000000000000B/exefs.nsp b/atmosphere/contents/420000000000000B/exefs.nsp index cbbc56a..bb00bc6 100644 Binary files a/atmosphere/contents/420000000000000B/exefs.nsp and b/atmosphere/contents/420000000000000B/exefs.nsp differ diff --git a/atmosphere/hosts/emummc.txt b/atmosphere/hosts/emummc.txt index 158dd5c..bbf8272 100644 --- a/atmosphere/hosts/emummc.txt +++ b/atmosphere/hosts/emummc.txt @@ -1,8 +1,5 @@ 127.0.0.1 *nintendo* 127.0.0.1 ads.doubleclick.net -127.0.0.1 s.ytimg.com -127.0.0.1 ad.youtube.com -127.0.0.1 ads.youtube.com 127.0.0.1 clients1.google.com 127.0.0.1 dts.innovid.com 127.0.0.1 googleads4.g.doubleclick.net @@ -23,7 +20,6 @@ 127.0.0.1 files.adform.net 127.0.0.1 secure-ds.serving-sys.com 127.0.0.1 securepubads.g.doubleclick.net -127.0.0.1 s.youtube.com 127.0.0.1 2975c.v.fwmrm.net 127.0.0.1 static.doubleclick.net 127.0.0.1 googleadservices.com @@ -40,247 +36,5 @@ 127.0.0.1 fwmrm.net 127.0.0.1 innovid.com 127.0.0.1 2mdn.net -127.0.0.1 r8.sn-4g5ednzz.googlevideo.com -127.0.0.1 r8---sn-4g5ednzz.googlevideo.com -127.0.0.1 r6.sn-4g5ednll.googlevideo.com -127.0.0.1 r6.sn-4g5edney.googlevideo.com -127.0.0.1 r6.sn-4g5ednek.googlevideo.com -127.0.0.1 r6.sn-4g5ednee.googlevideo.com -127.0.0.1 r6.sn-4g5edn7e.googlevideo.com -127.0.0.1 r6.sn-4g5e6nez.googlevideo.com -127.0.0.1 r6---sn-4g5ednll.googlevideo.com -127.0.0.1 r6---sn-4g5edney.googlevideo.com -127.0.0.1 r6---sn-4g5ednek.googlevideo.com -127.0.0.1 r6---sn-4g5ednee.googlevideo.com -127.0.0.1 r6---sn-4g5edn7e.googlevideo.com -127.0.0.1 r6---sn-4g5e6nez.googlevideo.com -127.0.0.1 r5.sn-h0jeenek.googlevideo.com -127.0.0.1 r5.sn-4g5ednzz.googlevideo.com -127.0.0.1 r5.sn-4g5ednsz.googlevideo.com -127.0.0.1 r5.sn-4g5ednsy.googlevideo.com -127.0.0.1 r5.sn-4g5ednsr.googlevideo.com -127.0.0.1 r5.sn-4g5ednsl.googlevideo.com -127.0.0.1 r5.sn-4g5ednsd.googlevideo.com -127.0.0.1 r5.sn-4g5edns6.googlevideo.com -127.0.0.1 r5.sn-4g5ednly.googlevideo.com -127.0.0.1 r5.sn-4g5edn7s.googlevideo.com -127.0.0.1 r5.sn-4g5e6nzl.googlevideo.com -127.0.0.1 r5.sn-4g5e6nze.googlevideo.com -127.0.0.1 r5.sn-4g5e6nz7.googlevideo.com -127.0.0.1 r5.sn-4g5e6nsz.googlevideo.com -127.0.0.1 r5.sn-4g5e6nsy.googlevideo.com -127.0.0.1 r5.sn-4g5e6nss.googlevideo.com -127.0.0.1 r5.sn-4g5e6nsk.googlevideo.com -127.0.0.1 r5.sn-4g5e6ns7.googlevideo.com -127.0.0.1 r5.sn-4g5e6ns6.googlevideo.com -127.0.0.1 r5.sn-4g5e6nls.googlevideo.com -127.0.0.1 r5.sn-4g5e6ney.googlevideo.com -127.0.0.1 r5.sn-4g5e6n7r.googlevideo.com -127.0.0.1 r5.sn-4g5e6n7k.googlevideo.com -127.0.0.1 r5---sn-h0jeenek.googlevideo.com -127.0.0.1 r5---sn-4g5ednzz.googlevideo.com -127.0.0.1 r5---sn-4g5ednsz.googlevideo.com -127.0.0.1 r5---sn-4g5ednsy.googlevideo.com -127.0.0.1 r5---sn-4g5ednsr.googlevideo.com -127.0.0.1 r5---sn-4g5ednsl.googlevideo.com -127.0.0.1 r5---sn-4g5ednsd.googlevideo.com -127.0.0.1 r5---sn-4g5edns6.googlevideo.com -127.0.0.1 r5---sn-4g5ednly.googlevideo.com -127.0.0.1 r5---sn-4g5edn7s.googlevideo.com -127.0.0.1 r5---sn-4g5e6nzl.googlevideo.com -127.0.0.1 r5---sn-4g5e6nze.googlevideo.com -127.0.0.1 r5---sn-4g5e6nz7.googlevideo.com -127.0.0.1 r5---sn-4g5e6nsz.googlevideo.com -127.0.0.1 r5---sn-4g5e6nsy.googlevideo.com -127.0.0.1 r5---sn-4g5e6nss.googlevideo.com -127.0.0.1 r5---sn-4g5e6nsk.googlevideo.com -127.0.0.1 r5---sn-4g5e6ns7.googlevideo.com -127.0.0.1 r5---sn-4g5e6ns6.googlevideo.com -127.0.0.1 r5---sn-4g5e6nls.googlevideo.com -127.0.0.1 r5---sn-4g5e6ney.googlevideo.com -127.0.0.1 r5---sn-4g5e6n7r.googlevideo.com -127.0.0.1 r5---sn-4g5e6n7k.googlevideo.com -127.0.0.1 r4.sn-4g5ednz7.googlevideo.com -127.0.0.1 r4.sn-4g5ednsy.googlevideo.com -127.0.0.1 r4.sn-4g5ednsk.googlevideo.com -127.0.0.1 r4.sn-4g5ednsd.googlevideo.com -127.0.0.1 r4---sn-4g5ednz7.googlevideo.com -127.0.0.1 r4---sn-4g5ednsy.googlevideo.com -127.0.0.1 r4---sn-4g5ednsk.googlevideo.com -127.0.0.1 r4---sn-4g5ednsd.googlevideo.com -127.0.0.1 r3.sn-4g5ednz7.googlevideo.com -127.0.0.1 r3.sn-4g5ednss.googlevideo.com -127.0.0.1 r3.sn-4g5ednsd.googlevideo.com -127.0.0.1 r3.sn-4g5ednls.googlevideo.com -127.0.0.1 r3.sn-4g5ednll.googlevideo.com -127.0.0.1 r3.sn-4g5ednee.googlevideo.com -127.0.0.1 r3.sn-4g5edned.googlevideo.com -127.0.0.1 r3.sn-4g5edne7.googlevideo.com -127.0.0.1 r3.sn-4g5edne6.googlevideo.com -127.0.0.1 r3.sn-4g5e6nzz.googlevideo.com -127.0.0.1 r3.sn-4g5e6nzs.googlevideo.com -127.0.0.1 r3.sn-4g5e6nsz.googlevideo.com -127.0.0.1 r3.sn-4g5e6nsy.googlevideo.com -127.0.0.1 r3.sn-4g5e6nsk.googlevideo.com -127.0.0.1 r3.sn-4g5e6nle.googlevideo.com -127.0.0.1 r3.sn-4g5e6nld.googlevideo.com -127.0.0.1 r3---sn-4g5ednz7.googlevideo.com -127.0.0.1 r3---sn-4g5ednss.googlevideo.com -127.0.0.1 r3---sn-4g5ednsd.googlevideo.com -127.0.0.1 r3---sn-4g5ednls.googlevideo.com -127.0.0.1 r3---sn-4g5ednll.googlevideo.com -127.0.0.1 r3---sn-4g5ednee.googlevideo.com -127.0.0.1 r3---sn-4g5edned.googlevideo.com -127.0.0.1 r3---sn-4g5edne7.googlevideo.com -127.0.0.1 r3---sn-4g5edne6.googlevideo.com -127.0.0.1 r3---sn-4g5e6nzz.googlevideo.com -127.0.0.1 r3---sn-4g5e6nzs.googlevideo.com -127.0.0.1 r3---sn-4g5e6nsz.googlevideo.com -127.0.0.1 r3---sn-4g5e6nsy.googlevideo.com -127.0.0.1 r3---sn-4g5e6nsk.googlevideo.com -127.0.0.1 r3---sn-4g5e6nle.googlevideo.com -127.0.0.1 r3---sn-4g5e6nld.googlevideo.com -127.0.0.1 r2.sn-hp57kn6e.googlevideo.com -127.0.0.1 r2.sn-h0jeln7e.googlevideo.com -127.0.0.1 r2.sn-h0jeener.googlevideo.com -127.0.0.1 r2.sn-h0jeen76.googlevideo.com -127.0.0.1 r2.sn-4g5ednzz.googlevideo.com -127.0.0.1 r2.sn-4g5ednly.googlevideo.com -127.0.0.1 r2.sn-4g5ednls.googlevideo.com -127.0.0.1 r2.sn-4g5ednle.googlevideo.com -127.0.0.1 r2.sn-4g5ednee.googlevideo.com -127.0.0.1 r2.sn-4g5edned.googlevideo.com -127.0.0.1 r2.sn-4g5edn7y.googlevideo.com -127.0.0.1 r2.sn-4g5e6nsz.googlevideo.com -127.0.0.1 r2.sn-4g5e6nsy.googlevideo.com -127.0.0.1 r2.sn-4g5e6nsk.googlevideo.com -127.0.0.1 r2.sn-4g5e6ns6.googlevideo.com -127.0.0.1 r2.sn-4g5e6nl7.googlevideo.com -127.0.0.1 r2.sn-4g5e6ney.googlevideo.com -127.0.0.1 r2---sn-hp57kn6e.googlevideo.com -127.0.0.1 r2---sn-h0jeln7e.googlevideo.com -127.0.0.1 r2---sn-h0jeener.googlevideo.com -127.0.0.1 r2---sn-h0jeen76.googlevideo.com -127.0.0.1 r2---sn-4g5ednzz.googlevideo.com -127.0.0.1 r2---sn-4g5ednse.googlevideo.com -127.0.0.1 r2---sn-4g5ednly.googlevideo.com -127.0.0.1 r2---sn-4g5ednls.googlevideo.com -127.0.0.1 r2---sn-4g5ednle.googlevideo.com -127.0.0.1 r2---sn-4g5ednee.googlevideo.com -127.0.0.1 r2---sn-4g5edned.googlevideo.com -127.0.0.1 r2---sn-4g5edn7y.googlevideo.com -127.0.0.1 r2---sn-4g5e6nsz.googlevideo.com -127.0.0.1 r2---sn-4g5e6nsy.googlevideo.com -127.0.0.1 r2---sn-4g5e6nsk.googlevideo.com -127.0.0.1 r2---sn-4g5e6ns6.googlevideo.com -127.0.0.1 r2---sn-4g5e6nl7.googlevideo.com -127.0.0.1 r2---sn-4g5e6ney.googlevideo.com -127.0.0.1 r15.sn-4g5ednzz.googlevideo.com -127.0.0.1 r15---sn-4g5ednzz.googlevideo.com -127.0.0.1 r11.sn-4g5ednzz.googlevideo.com -127.0.0.1 r11---sn-4g5ednzz.googlevideo.com -127.0.0.1 r10.sn-4g5ednzz.googlevideo.com -127.0.0.1 r10---sn-4g5ednzz.googlevideo.com -127.0.0.1 r1.sn-h0jeln7e.googlevideo.com -127.0.0.1 r1.sn-h0jeened.googlevideo.com -127.0.0.1 r1.sn-h0jeen76.googlevideo.com -127.0.0.1 r1.sn-4g5ednsd.googlevideo.com -127.0.0.1 r1.sn-4g5ednly.googlevideo.com -127.0.0.1 r1.sn-4g5ednll.googlevideo.com -127.0.0.1 r1.sn-4g5edne6.googlevideo.com -127.0.0.1 r1.sn-4g5e6nzz.googlevideo.com -127.0.0.1 r1.sn-4g5e6nz7.googlevideo.com -127.0.0.1 r1.sn-4g5e6nsy.googlevideo.com -127.0.0.1 r1.sn-4g5e6nez.googlevideo.com -127.0.0.1 r1---sn-h0jeln7e.googlevideo.com -127.0.0.1 r1---sn-h0jeened.googlevideo.com -127.0.0.1 r1---sn-h0jeen76.googlevideo.com -127.0.0.1 r1---sn-4g5ednsd.googlevideo.com -127.0.0.1 r1---sn-4g5ednly.googlevideo.com -127.0.0.1 r1---sn-4g5ednll.googlevideo.com -127.0.0.1 r1---sn-4g5edne6.googlevideo.com -127.0.0.1 r1---sn-4g5e6nzz.googlevideo.com -127.0.0.1 r1---sn-4g5e6nz7.googlevideo.com -127.0.0.1 r1---sn-4g5e6nsy.googlevideo.com -127.0.0.1 r1---sn-4g5e6ns7.googlevideo.com -127.0.0.1 r1---sn-4g5e6nez.googlevideo.com -127.0.0.1 manifest.googlevideo.com -127.0.0.1 r8.sn-n02xgoxufvg3-2gbs.googlevideo.com -127.0.0.1 r8---sn-n02xgoxufvg3-2gbs.googlevideo.com -127.0.0.1 r6.sn-4g5edne7.googlevideo.com -127.0.0.1 r6---sn-4g5edne7.googlevideo.com -127.0.0.1 r5.sn-hp57yn7y.googlevideo.com -127.0.0.1 r5---sn-hp57yn7y.googlevideo.com -127.0.0.1 r4.sn-h0jeln7l.googlevideo.com -127.0.0.1 r4.sn-h0jeln7e.googlevideo.com -127.0.0.1 r4.sn-h0jeened.googlevideo.com -127.0.0.1 r4.sn-4g5ednzz.googlevideo.com -127.0.0.1 r4.sn-4g5edns7.googlevideo.com -127.0.0.1 r4.sn-4g5ednly.googlevideo.com -127.0.0.1 r4.sn-4g5ednld.googlevideo.com -127.0.0.1 r4.sn-4g5edney.googlevideo.com -127.0.0.1 r4.sn-4g5e6nzs.googlevideo.com -127.0.0.1 r4.sn-4g5e6ns6.googlevideo.com -127.0.0.1 r4.sn-4g5e6nez.googlevideo.com -127.0.0.1 r4---sn-h0jeln7l.googlevideo.com -127.0.0.1 r4---sn-h0jeln7e.googlevideo.com -127.0.0.1 r4---sn-h0jeened.googlevideo.com -127.0.0.1 r4---sn-4g5ednzz.googlevideo.com -127.0.0.1 r4---sn-4g5edns7.googlevideo.com -127.0.0.1 r4---sn-4g5ednly.googlevideo.com -127.0.0.1 r4---sn-4g5ednld.googlevideo.com -127.0.0.1 r4---sn-4g5edney.googlevideo.com -127.0.0.1 r4---sn-4g5e6nzs.googlevideo.com -127.0.0.1 r4---sn-4g5e6ns6.googlevideo.com -127.0.0.1 r4---sn-4g5e6nez.googlevideo.com -127.0.0.1 r3.sn-4g5ednzz.googlevideo.com -127.0.0.1 r3.sn-4g5ednsz.googlevideo.com -127.0.0.1 r3.sn-4g5edns6.googlevideo.com -127.0.0.1 r3.sn-4g5ednld.googlevideo.com -127.0.0.1 r3.sn-4g5e6nsr.googlevideo.com -127.0.0.1 r3.sn-4g5e6nl7.googlevideo.com -127.0.0.1 r3---sn-4g5ednzz.googlevideo.com -127.0.0.1 r3---sn-4g5ednsz.googlevideo.com -127.0.0.1 r3---sn-4g5edns6.googlevideo.com -127.0.0.1 r3---sn-4g5ednld.googlevideo.com -127.0.0.1 r3---sn-4g5e6nsr.googlevideo.com -127.0.0.1 r3---sn-4g5e6nl7.googlevideo.com -127.0.0.1 r2.sn-4g5ednse.googlevideo.com -127.0.0.1 r2.sn-4g5ednld.googlevideo.com -127.0.0.1 r2.sn-4g5e6nzl.googlevideo.com -127.0.0.1 r2.sn-4g5e6nez.googlevideo.com -127.0.0.1 r2---sn-4g5ednld.googlevideo.com -127.0.0.1 r2---sn-4g5e6nzl.googlevideo.com -127.0.0.1 r2---sn-4g5e6nez.googlevideo.com -127.0.0.1 r1.sn-4g5ednsr.googlevideo.com -127.0.0.1 r1.sn-4g5ednsl.googlevideo.com -127.0.0.1 r1.sn-4g5ednse.googlevideo.com -127.0.0.1 r1.sn-4g5edned.googlevideo.com -127.0.0.1 r1.sn-4g5e6ns7.googlevideo.com -127.0.0.1 r1.sn-4g5e6ns6.googlevideo.com -127.0.0.1 r1.sn-4g5e6nl6.googlevideo.com -127.0.0.1 r1.sn-4g5e6ne6.googlevideo.com -127.0.0.1 r1---sn-4g5ednsr.googlevideo.com -127.0.0.1 r1---sn-4g5ednsl.googlevideo.com -127.0.0.1 r1---sn-4g5ednse.googlevideo.com -127.0.0.1 r1---sn-4g5edned.googlevideo.com -127.0.0.1 r1---sn-4g5e6ns6.googlevideo.com -127.0.0.1 r1---sn-4g5e6nl6.googlevideo.com -127.0.0.1 r1---sn-4g5e6ne6.googlevideo.com -127.0.0.1 r2---sn-5hne6n7z.googlevideo.com -127.0.0.1 r2---sn-25ge7nsd.googlevideo.com -127.0.0.1 r4---sn-25ge7nsk.googlevideo.com -127.0.0.1 r6---sn-25ge7nsl.googlevideo.com -127.0.0.1 r1---sn-25glen7y.googlevideo.com -127.0.0.1 r1---sn-25glenez.googlevideo.com -127.0.0.1 r10---sn-4gxx-25gel.googlevideo.com -127.0.0.1 r11---sn-4gxx-25ge7.googlevideo.com -127.0.0.1 r4---sn-4gxx-25gee.googlevideo.com -127.0.0.1 r16---sn-4gxx-25ge7.googlevideo.com -127.0.0.1 r3---sn-4gxx-25gel.googlevideo.com -127.0.0.1 r1---sn-4gxx-25gel.googlevideo.com -127.0.0.1 r9---sn-4gxx-25gel.googlevideo.com -127.0.0.1 r9---sn-4gxx-25gy.googlevideo.com -127.0.0.1 r6---sn-4g5e6nes.googlevideo.com 95.216.149.205 *conntest.nintendowifi.net 95.216.149.205 *ctest.cdn.nintendo.net \ No newline at end of file diff --git a/atmosphere/package3 b/atmosphere/package3 index 9db1c07..4ab9cc7 100644 Binary files a/atmosphere/package3 and b/atmosphere/package3 differ diff --git a/atmosphere/stratosphere.romfs b/atmosphere/stratosphere.romfs index 77657c7..1ca29c1 100644 Binary files a/atmosphere/stratosphere.romfs and b/atmosphere/stratosphere.romfs differ diff --git a/bootloader/hekate_ipl.ini b/bootloader/hekate_ipl.ini index d46f774..ba740ea 100644 --- a/bootloader/hekate_ipl.ini +++ b/bootloader/hekate_ipl.ini @@ -1,14 +1,13 @@ [config] autoboot=1 autoboot_list=0 -bootwait=3 +bootwait=4 backlight=40 noticker=0 autohosoff=2 autonogc=0 updater2p=0 bootprotect=0 -{} [Atmosphere] fss0=atmosphere/package3 @@ -16,12 +15,9 @@ cal0blank=1 kip1=atmosphere/kips/* logopath=bootloader/res/bootscreen.bmp icon=bootloader/res/atmo_cfw.bmp -{} [Safe Mode] fss0=atmosphere/package3 cal0blank=1 logopath=bootloader/res/bootscreen.bmp icon=bootloader/res/atmo_sm.bmp -{} - diff --git a/bootloader/ini/more_configs.ini b/bootloader/ini/more_configs.ini index 0c8f07a..c86fcf8 100644 --- a/bootloader/ini/more_configs.ini +++ b/bootloader/ini/more_configs.ini @@ -1,4 +1,3 @@ - [Semi Stock] fss0=atmosphere/package3 emummc_force_disable=1 @@ -6,7 +5,6 @@ cal0blank=0 kip1=atmosphere/kips/* logopath=bootloader/res/bootscreen.bmp icon=bootloader/res/sys_cfw.bmp -{} [Semi Safe] fss0=atmosphere/package3 @@ -14,7 +12,6 @@ emummc_force_disable=1 cal0blank=0 logopath=bootloader/res/bootscreen.bmp icon=bootloader/res/sys_sm.bmp -{} [Full Stock] fss0=atmosphere/package3 @@ -22,4 +19,3 @@ emummc_force_disable=1 cal0blank=0 stock=1 icon=bootloader/res/stock.bmp -{} diff --git a/bootloader/res/bootscreen.bmp b/bootloader/res/bootscreen.bmp index 6ef913e..6b6b076 100644 Binary files a/bootloader/res/bootscreen.bmp and b/bootloader/res/bootscreen.bmp differ diff --git a/switch/.overlays/FPSLocker.ovl b/switch/.overlays/FPSLocker.ovl index ebcaf97..3566a1a 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 89a1388..285d8ef 100644 Binary files a/switch/.overlays/Status-Monitor-Overlay.ovl and b/switch/.overlays/Status-Monitor-Overlay.ovl differ diff --git a/switch/.packages/package.ini b/switch/.packages/package.ini index 3e85f3c..8239ab3 100644 --- a/switch/.packages/package.ini +++ b/switch/.packages/package.ini @@ -4,17 +4,21 @@ set-ini-val /bootloader/hekate_ipl.ini config autoboot 1 set-ini-val /bootloader/hekate_ipl.ini config autoboot_list 0 reboot -[Semi-Stock - Forced] +[Semi Stock - Forced] set-ini-val /bootloader/hekate_ipl.ini config autoboot 1 set-ini-val /bootloader/hekate_ipl.ini config autoboot_list 1 reboot +[Hekate - Bootloader] +reboot HEKATE + [$] ;mode=table ;background=false ;gap=17 [Other] ;mode=table +;background=false ;header_indent=true ;section_text_color=#FFFFFF ;gap=20