Compare commits

..

10 Commits

Author SHA1 Message Date
redraz
85ffded054 Ultra 2.5|R2 2025-08-07 12:14:35 +03:00
redraz
7d6a8eb2b1 modified: README.md 2025-08-02 20:53:08 +03:00
redraz
69db804029 Ultra 2.5|Pre2 2025-08-02 20:41:35 +03:00
redraz
d18b6d94c4 Ultra 2.5|R1 2025-07-18 10:24:32 +03:00
redraz
6c1c55d929 Ultra 2.4|R2.1 UPD 2025-06-22 02:37:27 +03:00
redraz
220ef77d17 Ultra 2.4|R2.1 2025-06-12 11:07:50 +03:00
redraz
ece8bc4858 Update README 2025-06-06 10:59:10 +03:00
redraz
081eaa7c7d Ultra 2.4|R2x 2025-06-05 07:07:30 +03:00
redraz
eda99e7881 Ultra 2.4|R2 2025-06-03 05:12:58 +03:00
redraz
d28855fd34 Upd 2025-05-20 09:18:51 +03:00
165 changed files with 4600 additions and 367 deletions

View File

@ -1,4 +1,4 @@
# Ultra-NX by **[redraz](https://github.com/redraz)**
# UltraNX by **[redraz](https://github.com/redraz)**
![](https://github.com/Ultra-NX/Ultra-Resources/raw/main/Ultra.png)
@ -8,7 +8,8 @@
### Ultra - это функциональная кастомная прошивка для Nintendo Switch, с упором в разгон и улучшенный пользовательский опыт.
### [Ultra 2.4](https://github.com/Ultra-NX/UltraNX/releases) Поддерживает HOS 20.0.1 и все ревизии консолей
### [Ultra 2.5|R1](https://github.com/Ultra-NX/UltraNX/releases) Поддерживает HOS 20.2.0
### [Ultra 2.5|Pre2](https://github.com/Ultra-NX/UltraNX/releases/tag/2.5-R2) Частично поддерживает HOS 20.3.0 (Только Safe Mode)
@ -25,9 +26,7 @@
* Подробная [Wiki](https://github.com/Ultra-NX/Ultra/wiki) в которой есть ответы почти на все вопросы.
* [Форки](https://github.com/Ultra-NX/Ultra-Resources/tree/main/patches) (свои модификации) программ и компонентов, нужные для удобства, безопасности и расширения возможностей:
* Форк Атмосферы с прописанной версией Ультры в информации о системе, и отключенными репортами, обычно засоряющими сд карту, тратящими ее ресурс и ломающими файловую систему. Так же исправлена работа старых форвардеров (важно для хоумбрю игр/эмуляторов).
* Форки SaltyNX и FPSLocker, с поддержкой изменения частоты обновления экрана и с поддержкой OLED.
* Форк Mission Control, с вырезанной "пасхалкой", делающей джойконы жовто-блакитными.
* Форк Status Monitor с отображением текущих вольтажей и уникальными модулями Микро Оверлея, пресеты которых можно менять через Ultra Tuner.
@ -48,28 +47,28 @@
* [Sphaira](https://github.com/ITotalJustice/sphaira) - Современное Хоумбрю Меню, аналог nx-hbmenu
* [AiO Switch Updater](https://github.com/HamletDuFromage/aio-switch-updater) - Программа для обновления Ultra до актуальной версии, а так же для скачивания читов.
* [Daybreak](https://github.com/Atmosphere-NX/Atmosphere) - Программа для обновления системного ПО.
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1120#entry86288632) - Лучший файловый менеджер, менеджер сохранений и установщик программ на консоль.
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1100#entry86288632) - Лучший файловый менеджер, менеджер сохранений и установщик программ на консоль.
1. **Установленные модули**
* [SaltyNX](https://github.com/masagrator/SaltyNX) - Фоновый модуль, позволяющий модифицировать файлы\процессы в консоли, поддерживает плагины. Не совместим с 32-х битными играми (список на гитхабе проекта).
* [sys-clk](https://github.com/halop/OC_Toolkit_SC_EOS) - Модуль отвечающий за разгон процессора, памяти и видеочипа - для лучшей производительности. Периодически меняю версии от разных авторов. Оригинальные авторы: Meha/hanai3Bi, lineon, p-sam.
* [sys-clk](https://github.com/ppkantorski/sys-clk) - Модуль отвечающий за разгон процессора, памяти и видеочипа - для лучшей производительности. Периодически меняю версии от разных авторов. Оригинальные авторы: Meha/hanai3Bi, lineon, p-sam.
* [nx-ovlloader](https://github.com/ppkantorski/nx-ovlloader) - С помощью этого модуля осуществляется переключение установленных модулей.
* [sys-patch](https://github.com/impeeza/sys-patch) - Патчит систему на работу неподписанного софта вместо сигпатчей.
* [Mission Control](https://github.com/ndeadly/MissionControl) - Модуль, позволяющий подключать практически любые геймпады к консоли по Bluetooth.
* [sys-con](https://github.com/o0Zz/sys-con) - Модуль, позволяющий подключать практически любые геймпады к консоли по USB.
* [Ultrahand Overlay](https://github.com/ppkantorski/Ultrahand-Overlay) - Специальное оверлей-меню для взаимодействия с системой: разгон, управление режимами через ReverseNX, включение читов, прочее. Так же позволяет использовать самописные пакеты, например - Ultra Tuner.
- **`Ultra OC (sys-clk)`**, мод [sys-clk](https://github.com/halop/OC_Toolkit_SC_EOS) - Оверлей для управления модулем sys-clk. Немного изменен мной, но без копания в исходниках (Так как они закрыты).
- [Status Monitor](https://github.com/Ultra-NX/Status-Monitor-Overlay), форк [Status Monitor](https://github.com/hanai3Bi/Status-Monitor-Overlay) - Оверлей позволяющий следить за параметрами консоли в реальном времени. Может выступать в качестве счетчика FPS. Сменить пресет Micro-оверлея можно в Updater.
- **`Ultra OC (sys-clk)`**, мод [sys-clk](https://github.com/ppkantorski/sys-clk) - Оверлей для управления модулем sys-clk. Немного изменен мной, но без копания в исходниках (Так как они закрыты).
- [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay), форк [Status Monitor](https://github.com/hanai3Bi/Status-Monitor-Overlay) - Оверлей позволяющий следить за параметрами консоли в реальном времени. Может выступать в качестве счетчика FPS. Сменить пресет Micro-оверлея можно в Updater.
- [FPSLocker](https://github.com/masagrator/FPSLocker) - Оверлей, позволяющий разблокировать 60 FPS в играх.
- [EdiZon](https://github.com/proferabg/EdiZon-Overlay) - Оверлей для использования читов.
- [ReverseNX-RT](https://github.com/masagrator/ReverseNX-RT) - Оверлей для управления ReverseNX.
- [ReverseNX-RT](https://github.com/ppkantorski/ReverseNX-RT) - Оверлей для управления ReverseNX.
- [Sysmodules](https://github.com/ppkantorski/ovl-sysmodules) - Оверлей для включения и отключения установленных системных модулей.
1. **Доступные для скачивания через [Ultra Tuner](https://github.com/Ultra-NX/UltraNX/wiki/Tuner-RU#ultra-tuner)**
* Homebrews:
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1120#entry86288632) - Здесь можно скачать DBI или обновить имеющийся.
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1100#entry86288632) - Здесь можно скачать DBI или обновить имеющийся.
* [Linkalho](https://gbatemp.net/download/linkalho.38822) - Программа для привязки аккаунта.
* [HB App Store](https://github.com/fortheusers/hb-appstore) - Бесплатный магазин для скачивания Homebrew приложений.
* [PPSSPP](https://gbatemp.net/threads/ppsspp-switch-standalone-beta.544071/post-10492671) - Эмулятор PSP.
@ -81,7 +80,7 @@
* [MicroMemBench](https://github.com/rashevskyv/4IFIR) - Бенчмарк. Результат сильно зависит от разгона CPU. Версия из Чифира которая в реальном времени тестирует CPU Copy, что позволяет быстро узнать результат после изменения таймингов.
* Overlays:
* [Status Monitor Ultra](https://github.com/Ultra-NX/Status-Monitor-Overlay) - Форк Status Monitor для UltraNX, поддерживает много пресетов Micro-оверлея, и обладает рядом уникальных фишек.
* [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay) - Форк Status Monitor от kantorski.
* [Tetris](https://github.com/ppkantorski/Tetris-Overlay) - Та самая игра в виде оверлея. Работает только на последних версиях Ultrahand.
* [MasterVolume](https://github.com/averne/MasterVolume) - Регулировка глобальной громкости, позволяет поднять громкость выше максимума. Использовать аккуратно!
* [NX-FanControl](https://github.com/Zathawo/NX-FanControl) - Модуль для ручной регулировки оборотов кулера. Изменения применяются сразу, модуль смотрит на температуру SOC а не Skin, как Атмосфера.
@ -92,6 +91,7 @@
* Other:
* [FPSLocker Patches](https://github.com/masagrator/FPSLocker-Warehouse) - Патчи для FPSLocker, что бы не качать отдельно патч для каждой игры через оверлей.
* [DVR Patches](https://github.com/exelix11/dvr-patches) - Патчи SysDVR, работают и без системного модуля, активируя фоновую запись в играх, где это изначально запрещено.
* [Mod Alchemist](https://github.com/ppkantorski/Mod-Alchemist) - Пакет для скачивания, установки и управления модами для игр.
* [sys-ftpd](https://github.com/tomvita/sys-ftpd-light) - FTP сервер, работающий на фоне.
@ -118,8 +118,6 @@
* Meha
* duckbill
* snupt
* Cooler3D
* 4PDA
#### А так же - отдельная благодарность администрации и участникам Ultra Group
@ -129,14 +127,15 @@
Если вам нравится проект, и у вас появилось желание поддержать меня копеечкой - я буду очень благодарен.
У меня в данный момент нет других заработков, так что любая денежная помощь очень ценна для меня.
```
TON: UQDioCnnPI5sk4KvxWzfPWsWbAyWCkzwhaYjy8Qpg2QwWMiL
BTC: 1HsC4z8X1YkZzcSKZz1t7MXRa7rPi8qChV
USDT: TQi3qLVrNGcr6avfVQBXRjpPTyvp5JZ7i2
СБП : +79168089980
Альфа : 2200152336577997
Tinkoff : 2200700170486970
Сбер : 2202200513345833
TON: UQA9My51bkGZHbYhbdRZfp6B60N7VJfsnKl0sakgw9YhAPct
BTC: 18K6NN8NEavvMJL5Do3VTyJbL8NeZPHo93
USDT TRC20: TUZ5szAmRsnvBuC4rFB8RaAoCbN6Ucy4sL
```
### Tinkoff QR

View File

@ -1,4 +1,4 @@
# Ultra-NX by **[redraz](https://github.com/redraz)**
# UltraNX by **[redraz](https://github.com/redraz)**
![](https://github.com/Ultra-NX/Ultra-Resources/raw/main/Ultra.png)
@ -6,7 +6,8 @@
#
### Ultra is a functional custom firmware for Nintendo Switch, with a focus on overclocking and an improved user experience.
### [Ultra 2.4](https://github.com/Ultra-NX/UltraNX/releases) Supports HOS 20.0.1 and all console revisions
### [Ultra 2.5|R1](https://github.com/Ultra-NX/UltraNX/releases) Supports HOS 20.2.0
### [Ultra 2.5|Pre2](https://github.com/Ultra-NX/UltraNX/releases/tag/2.5-R2) Partially supports HOS 20.3.0 (Safe Mode Only)
@ -21,9 +22,7 @@
* Regular updates, and an active community.
* [Forks](https://github.com/Ultra-NX/Ultra-Resources/tree/main/patches) (own modifications) of programs and components needed for convenience, security and empowerment:
* Atmosphere fork with Ultra version in system information, and disabled reports, which usually clogs up the SD card, wastes its resource and breaks the file system.
* SaltyNX and FPSLocker forks, with support for changing screen refresh rate and with OLED support.
* Mission Control fork, with the “easter egg” cut out, making the joycons yellow-blue.
* Status Monitor fork with display of current voltages and unique Micro Overlay modules, whose presets can be changed via Ultra Tuner.
@ -44,28 +43,28 @@
* [Sphaira](https://github.com/ITotalJustice/sphaira) - Modern Homebrew Menu, analogous to nx-hbmenu
* [AiO Switch Updater](https://github.com/HamletDuFromage/aio-switch-updater) - Program to update Ultra to the current version, as well as to download cheats.
* [Daybreak](https://github.com/Atmosphere-NX/Atmosphere) - A program for updating OS.
* [DBI](https://github.com/rashevskyv/dbi) - The best file manager, save manager and program installer on the console.
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1100#entry86288632) - The best file manager, save manager and program installer on the console.
1. **Installed Modules**
* [SaltyNX](https://github.com/masagrator/SaltyNX) - Background module allowing to modify files/processes in console, supports plugins. Not compatible with 32-bit games (list on the project's github).
* [sys-clk](https://github.com/halop/OC_Toolkit_SC_EOS) - Module responsible for overclocking CPU, memory and GPU - for better performance. I change versions from different authors from time to time. Original authors: Meha/hanai3Bi, lineon, p-sam.
* [sys-clk](https://github.com/ppkantorski/sys-clk) - Module responsible for overclocking CPU, memory and GPU - for better performance. I change versions from different authors from time to time. Original authors: Meha/hanai3Bi, lineon, p-sam.
* [nx-ovlloader](https://github.com/ppkantorski/nx-ovlloader) - This module is used to switch the installed modules.
* [sys-patch](https://github.com/impeeza/sys-patch) - Patches the system to run unsigned software instead of sigpatches.
* [Mission Control](https://github.com/ndeadly/MissionControl) - A module that allows you to connect almost any gamepads to the console via bluetooth.
* [sys-con](https://github.com/o0Zz/sys-con) - A module that allows you to connect almost any gamepads to the console via USB.
* [Ultrahand Overlay](https://github.com/ppkantorski/Ultrahand-Overlay) - Special overlay-menu for interacting with the system: overclocking, controlling modes via ReverseNX, enabling cheats, etc. Also allows to use your own packages, for example, Ultra Tuner.
- **`Ultra OC (sys-clk)`**, a mod of [sys-clk](https://github.com/halop/OC_Toolkit_SC_EOS) - Overlay for controlling sys-clk module. Slightly modified by me, but without digging into sources (Since they're closed).
- [Status Monitor](https://github.com/Ultra-NX/Status-Monitor-Overlay), a fork of [Status Monitor](https://github.com/masagrator/Status-Monitor-Overlay) - Overlay that allows you to monitor console parameters in real time. It can act as an FPS counter. You change preset of Micro-overlay appearance in Updater.
- **`Ultra OC (sys-clk)`**, a mod of [sys-clk](https://github.com/ppkantorski/sys-clk) - Overlay for controlling sys-clk module. Slightly modified by me, but without digging into sources (Since they're closed).
- [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay), a fork of [Status Monitor](https://github.com/masagrator/Status-Monitor-Overlay) - Overlay that allows you to monitor console parameters in real time. It can act as an FPS counter. You change preset of Micro-overlay appearance in Updater.
- [FPSLocker](https://github.com/masagrator/FPSLocker) - An overlay that allows you to unlock 60 FPS in games.
- [EdiZon](https://github.com/proferabg/EdiZon-Overlay) - An overlay for using cheats.
- [ReverseNX-RT](https://github.com/masagrator/ReverseNX-RT) - ReverseNX control overlay.
- [ReverseNX-RT](https://github.com/ppkantorski/ReverseNX-RT) - ReverseNX control overlay.
- [Sysmodules](https://github.com/ppkantorski/ovl-sysmodules) - Overlay for enabling and disabling installed system modules.
1. **Available for download via [Updater](https://github.com/Ultra-NX/Ultra/wiki/Tuner-RU#Updater)**
* Homebrews:
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1120#entry86288632) - Here you can download a DBI or update an existing one.
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1100#entry86288632) - Here you can download a DBI or update an existing one.
* [Linkalho](https://gbatemp.net/download/linkalho.38822/) - Account linking program.
* [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.
@ -77,7 +76,7 @@
* [MicroMemBench](https://github.com/rashevskyv/4IFIR) - Benchmark. The result is highly dependent on CPU overclocking. A version from 4ifir that tests CPU Copy in real time, which allows you to quickly find out the result after changing timings.
* Overlays:
* [Status Monitor Ultra](https://github.com/Ultra-NX/Status-Monitor-Overlay) - Status Monitor fork for UltraNX, supports many Micro-overlay presets, and has a number of unique features.
* [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay) - Status Monitor fork from kantorski.
* [Tetris](https://github.com/ppkantorski/Tetris-Overlay/) - "That" game in the form of an overlay. Works only on the latest versions of Ultrahand.
* [MasterVolume](https://github.com/averne/MasterVolume) - Global volume control, allows you to raise the volume above the maximum. Use with care!
* [NX-FanControl](https://github.com/Zathawo/NX-FanControl) - Module for manually adjusting the speed of the cooler. The changes are applied immediately, the module works from SOC temperature and not Skin temperature like Atmosphere.
@ -88,6 +87,7 @@
* Other:
* [FPSLocker Patches](https://github.com/masagrator/FPSLocker-Warehouse) - Patches for FPSLocker, so you don't have to download a separate patch for each game through the overlay.
* [DVR Patches](https://github.com/exelix11/dvr-patches) - SysDVR patches, work without the system module, activating background recording in games where it is initially prohibited.
* [Mod Alchemist](https://github.com/ppkantorski/Mod-Alchemist) - A package for downloading, installing, and managing mods for games.
* [sys-ftpd](https://github.com/cathery/sys-ftpd) - FTP server running in background.
@ -112,8 +112,6 @@ Listed below are the licenses of those programs that have been modified specific
* Meha
* duckbill
* snupt
* Cooler3D
* 4PDA
#### And also - a special thanks to the administration and members of Ultra Group
@ -123,7 +121,7 @@ Listed below are the licenses of those programs that have been modified specific
If you like the project and you have a desire to support me with a penny - I will be very grateful.
I have no other income at the moment, so any monetary help is very valuable to me.
```
TON: UQDioCnnPI5sk4KvxWzfPWsWbAyWCkzwhaYjy8Qpg2QwWMiL
BTC: 1HsC4z8X1YkZzcSKZz1t7MXRa7rPi8qChV
USDT: TQi3qLVrNGcr6avfVQBXRjpPTyvp5JZ7i2
TON: UQA9My51bkGZHbYhbdRZfp6B60N7VJfsnKl0sakgw9YhAPct
BTC: 18K6NN8NEavvMJL5Do3VTyJbL8NeZPHo93
USDT TRC20: TUZ5szAmRsnvBuC4rFB8RaAoCbN6Ucy4sL
```

View File

@ -24,7 +24,7 @@ X0100964012528000
;Olympic Games Tokyo 2020 The Official Video Game
;1.0.0 crash on boot
010034B00E14C000
X010034B00E14C000
;Mario Strikers: Battle League
;1.0.0 crash on boot
@ -54,3 +54,7 @@ X0100C1F0051B6000
;Death Road to Canada
;1.0.8 crash
X0100423009358000
;Splatoon 3
;10.0.0 upwards crashes after online match
X0100C2500FC20000

View File

@ -1,4 +1,4 @@
# Rad Rogers: Radical Edition 1.2.0
# Rad Rodgers: Radical Edition 1.2.0
# BID: 78885A1CA987C04C
unsafeCheck: true
@ -13,3 +13,4 @@ ALL_FPS:
-
type: block
what: timing

View File

@ -0,0 +1,36 @@
# Tiebreak+: Official Game of the ATP and WTA 1.2.0
# BID: 5BCA5C20C8F8A9B4
unsafeCheck: true
MASTER_WRITE:
# Triple buffer
# REF: 00 40 00 00 00 04 00 00 00 88 00 00 02 00 00 00
-
type: bytes
main_offset: 0x1A82EAC
value_type: uint32
value: 3
# Redirect Dynamic Resolution target reading to MAIN + 0x30C3F00
# REF: 28 11 91 52 08 A1 A7 72 03 01 27 1E
-
type: bytes
main_offset: 0x147B474
value_type: uint32
value:
- 0x9000E248 # ADRP X8, 0x30C3000
- 0xBD4F0103 # LDR S3, [X8, 0xF00]
- 0xD503201F # NOP
## Default values
-
type: bytes
main_offset: 0x30C3F00
value_type: float
value: 0.03333333333
ALL_FPS:
# Adjust Dynamic Resolution target, we are using this trick because function is overengineered and it's not easy to just use standard 1 / FPS_TARGET
-
type: evaluate_write
address: [MAIN, 0x30C3F00]
value_type: float
value: "0.8 / FPS_TARGET"

View File

@ -0,0 +1,36 @@
# Tiebreak+: Official Game of the ATP and WTA 1.3.0
# BID: 88CC45A195E0BDA8
unsafeCheck: true
MASTER_WRITE:
# Triple buffer
# REF: 00 40 00 00 00 04 00 00 00 88 00 00 02 00 00 00
-
type: bytes
main_offset: 0x1A82F0C
value_type: uint32
value: 3
# Redirect Dynamic Resolution target reading to MAIN + 0x30C3F00
# REF: 28 11 91 52 08 A1 A7 72 03 01 27 1E
-
type: bytes
main_offset: 0x147BE04
value_type: uint32
value:
- 0x9000E248 # ADRP X8, 0x30C3000
- 0xBD4F0103 # LDR S3, [X8, 0xF00]
- 0xD503201F # NOP
## Default values
-
type: bytes
main_offset: 0x30C3F00
value_type: float
value: 0.03333333333
ALL_FPS:
# Adjust Dynamic Resolution target, we are using this trick because function is overengineered and it's not easy to just use standard 1 / FPS_TARGET
-
type: evaluate_write
address: [MAIN, 0x30C3F00]
value_type: float
value: "0.8 / FPS_TARGET"

View File

@ -0,0 +1,27 @@
# Tony Hawk's Pro Skater 3 + 4 1.05
# BID: 65A9705A4BB35AA2
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x77DD4B8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x780B6A0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7006068, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# Tony Hawk's Pro Skater 3 + 4 1.0.3
# BID: A31FE9B8AF1156D4
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x77CF4B8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x77FD6A0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x6FF83C8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -12,7 +12,7 @@ ALL_FPS:
value: [FPS_TARGET, FPS_TARGET]
# t.MaxFPS
-
type: write
type: evaluate_write
address: [MAIN, 0x71B2BD0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]

View File

@ -0,0 +1,15 @@
# OCTOPATH TRAVELER 歧路旅人 1.0.5
# BID: 9E6B0D0023F9DB3B
unsafeCheck: true
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x50B5698, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -1,12 +1,83 @@
# WARRIORS OROCHI 4 1.0.13
# BID: 5C9CCD358BE85FC9
# Credits to Hazerou for figuring out the offset
# Main offset stores address to start of .bss of NRO
## REF: 02 00 00 00 3C 00 00 00
unsafeCheck: true
ALL_FPS:
# Without DLC Ultimate Edition installed
-
type: write
type: evaluate_compare
compare_value_type: uint64
compare_type: "=="
compare_value: 0xE2CFDAC9EAC20398
compare_address: [MAIN, 0x3AF80, -0x1A92FC0]
address: [MAIN, 0x3AF80, -0x934A8]
value_type: uint32
value: [VSYNC_TARGET, FPS_TARGET]
-
type: evaluate_compare
compare_value_type: uint64
compare_type: "=="
compare_value: 0xE2CFDAC9EAC20398
compare_address: [MAIN, 0x3AF80, -0x1A92FC0]
address: [MAIN, 0x3AF80, -0x934A0]
value_type: float
value: FPS_TARGET
-
type: evaluate_compare
compare_value_type: uint64
compare_type: "=="
compare_value: 0xE2CFDAC9EAC20398
compare_address: [MAIN, 0x3AF80, -0x1A92FC0]
address: [MAIN, 0x3AF80, -0x9349C]
value_type: uint32
value: [VSYNC_TARGET, FPS_TARGET]
-
type: evaluate_compare
compare_value_type: uint64
compare_type: "=="
compare_value: 0xE2CFDAC9EAC20398
compare_address: [MAIN, 0x3AF80, -0x1A92FC0]
address: [MAIN, 0x3AF80, -0x93494]
value_type: float
value: FPS_TARGET
# With DLC Ultimate Edition installed
-
type: evaluate_compare
compare_value_type: uint64
compare_type: "!="
compare_value: 0xE2CFDAC9EAC20398
compare_address: [MAIN, 0x3AF80, -0x1A92FC0]
address: [MAIN, 0x3AF80, -0x93200]
value_type: uint32
value: [VSYNC_TARGET, FPS_TARGET]
-
type: evaluate_compare
compare_value_type: uint64
compare_type: "!="
compare_value: 0xE2CFDAC9EAC20398
compare_address: [MAIN, 0x3AF80, -0x1A92FC0]
address: [MAIN, 0x3AF80, -0x931F8]
value_type: float
value: FPS_TARGET
-
type: evaluate_compare
compare_value_type: uint64
compare_type: "!="
compare_value: 0xE2CFDAC9EAC20398
compare_address: [MAIN, 0x3AF80, -0x1A92FC0]
address: [MAIN, 0x3AF80, -0x931F4]
value_type: int32
value: 1
value_type: uint32
value: [VSYNC_TARGET, FPS_TARGET]
-
type: evaluate_compare
compare_value_type: uint64
compare_type: "!="
compare_value: 0xE2CFDAC9EAC20398
compare_address: [MAIN, 0x3AF80, -0x1A92FC0]
address: [MAIN, 0x3AF80, -0x931EC]
value_type: float
value: FPS_TARGET

View File

@ -23,6 +23,3 @@ ALL_FPS:
address: [MAIN, 0x2AEF6D0, 2554]
value_type: uint8
value: FPS_TARGET
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# Goat Simulator 3 1.0.7.8
# BID: A45BCB8A63C50DC8
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x99DC468, 0]
value_type: float
value: ["0.81 * FRAMETIME_TARGET", "0.81 * FRAMETIME_TARGET"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x9A02290, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x920CBF8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,53 @@
# Kingdom Come: Deliverance - Royal Edition JP 1.9.6H
# BID: 7A450848CFDEC18E
# Some prerendered cutscenes are still pushed at 30 FPS
unsafeCheck: true
MASTER_WRITE:
# Block updating DR timings, REF: 00 01 27 1E 48 40 A8 52
-
type: bytes
main_offset: 0x1CA806C
value_type: uint32
value: 0xD503201F
-
type: bytes
main_offset: 0x1CA8074
value_type: uint32
value: 0xD503201F
-
type: bytes
main_offset: 0x1CA8094
value_type: uint32
value:
- 0xD503201F
- 0xD503201F
# Write default DR timings
-
type: bytes
main_offset: 0x56FF9C8
value_type: float
value: [32.5, 30.5, 31.5, 28.5, 33.5]
ALL_FPS:
# sys_MaxFPS
-
type: evaluate_write
address: [MAIN, 0x56FD1C8]
value_type: int32
value: FPS_LOCK_TARGET
# Renderer thread delay
-
type: write
address: [MAIN, 0x5704028]
value_type: float
value: 0.01
# DR timings
-
type: evaluate_write
address: [MAIN, 0x56FF9C8]
value_type: float
value: ["FRAMETIME_TARGET * 0.975", "FRAMETIME_TARGET * 0.915", "FRAMETIME_TARGET * 0.945", "FRAMETIME_TARGET * 0.855", "FRAMETIME_TARGET * 1.005"]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# Expeditions: A Mudrunner Game 1.17.0.0
# BID: 471546458FD9E43D
# REF: 01 04 0C 5E 00 10 2E 1E
unsafeCheck: true
MASTER_WRITE:
# Redirect DR frametime target to MAIN+0x36D4F00
-
type: bytes
main_offset: 0x17358B4
value_type: uint32
value:
- 0xF000FCED # adrp x13, #0x36D4000
- 0xBD4F01A2 # ldr s2, [x13, #0xf00]
# default value
-
type: bytes
main_offset: 0x36D4F00
value_type: float
value: 33.3333333333
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x36D4F00]
value_type: float
value: FRAMETIME_TARGET

View File

@ -9,4 +9,4 @@ ALL_FPS:
type: write
address: [MAIN, 0x481B2F8, 0xB8, 0]
value_type: int32
value: 1
value: -1

View File

@ -9,7 +9,8 @@ ALL_FPS:
type: evaluate_write
address: [MAIN, 0x24924D8, 0x504C]
value_type: float
value: FPS_LOCK_TARGET
value: FPS_TARGET
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# Rune Factory: Guardians of Azuma 1.0.4
# BID: 5F96AEDEA20AE78F
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8F48D40, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8F82470, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7F616E8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# Rune Factory: Guardians of Azuma 1.0.3
# BID: 7F731AAE7DDCAF66
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8F48D40, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8F82470, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7F616E8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# Rune Factory: Guardians of Azuma 1.0.5
# BID: E43BBBBFACE60867
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8F4AD40, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8F84470, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7F636E8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# DRAGON QUEST III HD-2D Remake 1.1.0
# BID: 4F41309B39EEBE5E
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x5AB93E8, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x62A5E28, 0]
value_type: float
value: [FRAMETIME_TARGET, FRAMETIME_TARGET]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x62D3B68, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,12 @@
# Tamagotchi Plaza 1.0.2
# BID: 9ACE779510EC93C9
unsafeCheck: true
ALL_FPS:
# UnityEngine.Rendering.OnDemandRendering_TypeInfo
-
type: write
address: [MAIN, 0x683BB20, 0xB8, 0]
value_type: int32
value: -1

View File

@ -0,0 +1,27 @@
# Romancing SaGa 2: Revenge of the Seven 1.1.0
# BID: D7A32C718E9D6363
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6D25AE0, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x7C01C70, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7C5A4C0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# Star Overdrive 1.0.10
# BID: 6D05923E7005E182
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x674C6E8, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x77322F0, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x776C850, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -1,4 +1,4 @@
# Star Overdrive 1.0.6
# Star Overdrive 1.0.6/1.0.7/1.0.8
# BID: 728D92CB9E54CE7A
unsafeCheck: true

View File

@ -0,0 +1,57 @@
# Resident Evil 1.0.0
# BID: 6BEC9B23B09DF46C
unsafeCheck: true
MASTER_WRITE:
# Detect prerendered cutscenes
-
type: bytes
main_offset: 0xB1A810
value_type: uint32
value: 0x14005CF6
-
type: bytes
main_offset: 0xB31BE8
value_type: uint32
value:
- 0xF81E0FF3
- 0x52800021
- 0xD000CDB3
- 0xB90FF261
- 0xAA0003F3
- 0x52994000
- 0x72A77340
- 0xD4000161
- 0xAA1303E0
- 0x17FFA302
-
type: bytes
main_offset: 0xB1A9BC
value_type: uint32
value: 0x14005C95
-
type: bytes
main_offset: 0xB31C10
value_type: uint32
value:
- 0x2A1F03E1
- 0xD000CDA2
- 0xB90FF041
- 0x17FFCCA9
ALL_FPS:
# Internal FPS Lock
-
type: evaluate_write
address: [MAIN, 0x1EC6CF0, 0x4C]
value_type: float
value: "FPS_LOCK_TARGET"
-
type: compare
compare_type: "=="
compare_value_type: uint32
compare_value: 1
compare_address: [MAIN, 0x24E7FF0]
address: [MAIN]
value_type: refresh_rate
value: 30

View File

@ -0,0 +1,35 @@
# DRAGON BALL Z: KARAKOT + A NEW POWER AWAKENS SET 1.60
# BID: BC99D4D0A9474360
unsafeCheck: true
ALL_FPS:
# Disable bUseFixedFrameRate in cutscenes to unlock framerate
-
type: write
address: [MAIN, 0x996A558, 0x810]
value_type: uint32
# Default is 0x47 in cutscenes, bUseFixedFrameRate |= 0x40
# By writing 7 we are making sure that other flags are maintained:
# bAllowMultiThreadedAnimationUpdate |= 4
# bOptimizeAnimBlueprintMemberVariableAccess |= 2
# bCanBlueprintsTickByDefault |= 1
value: 7
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x9935498, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x996AE08, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x8DD7418, 0]
value_type: int32
value: [0, 0]

View File

@ -0,0 +1,36 @@
# Atelier Yumia: The Alchemist of Memories & the Envisioned Land 1.3.0
# BID: 1CEA83A1E6684665
unsafeCheck: false
MASTER_WRITE:
# Redirect DR to MAIN + 0x2F5CFF0
# REF: A9 24 89 52 49 A2 A7 72, second REF
-
type: bytes
main_offset: 0x10AAEE4
value_type: uint32
value:
- 0xD000F589 # adrp x9, 0x2F5C000
- 0xBD4FF121 # ldr s1, [x9, 0xFF0]
- 0xD503201F # nop
## Default value
-
type: bytes
main_offset: 0x2F5CFF0
value_type: float
value: 0.035714
ALL_FPS:
# Disable FPS Lock
# REF: 88 46 40 F9 03 11 40 F9, first ADRP+LDR above it
-
type: write
address: [MAIN, 0x2F23C00, 0xE0, 0x294]
value_type: uint8
value: 0
# DR Target
-
type: evaluate_write
address: [MAIN, 0x2F5CFF0]
value_type: float
value: "1.01 / FPS_TARGET"

View File

@ -0,0 +1,36 @@
# Atelier Yumia: The Alchemist of Memories & the Envisioned Land 1.2.0
# BID: 29F67D61B0AD1500
unsafeCheck: false
MASTER_WRITE:
# Redirect DR to MAIN + 0x2F4CFF0
# REF: A9 24 89 52 49 A2 A7 72, second REF
-
type: bytes
main_offset: 0x10B2424
value_type: uint32
value:
- 0xD000F4C9 # adrp x9, 0x2F4C000
- 0xBD4FF121 # ldr s1, [x9, 0xFF0]
- 0xD503201F # nop
## Default value
-
type: bytes
main_offset: 0x2F4CFF0
value_type: float
value: 0.035714
ALL_FPS:
# Disable FPS Lock
# REF: 88 46 40 F9 03 11 40 F9, first ADRP+LDR above it
-
type: write
address: [MAIN, 0x2F13D80, 0xE0, 0x284]
value_type: uint8
value: 0
# DR Target
-
type: evaluate_write
address: [MAIN, 0x2F4CFF0]
value_type: float
value: "1.01 / FPS_TARGET"

View File

@ -0,0 +1,36 @@
# Atelier Yumia: The Alchemist of Memories & the Envisioned Land 1.2.1
# BID: 3B2CB1C8865E7B1E
unsafeCheck: false
MASTER_WRITE:
# Redirect DR to MAIN + 0x2F4CFF0
# REF: A9 24 89 52 49 A2 A7 72, second REF
-
type: bytes
main_offset: 0x10B2424
value_type: uint32
value:
- 0xD000F4C9 # adrp x9, 0x2F4C000
- 0xBD4FF121 # ldr s1, [x9, 0xFF0]
- 0xD503201F # nop
## Default value
-
type: bytes
main_offset: 0x2F4CFF0
value_type: float
value: 0.035714
ALL_FPS:
# Disable FPS Lock
# REF: 88 46 40 F9 03 11 40 F9, first ADRP+LDR above it
-
type: write
address: [MAIN, 0x2F13D80, 0xE0, 0x284]
value_type: uint8
value: 0
# DR Target
-
type: evaluate_write
address: [MAIN, 0x2F4CFF0]
value_type: float
value: "1.01 / FPS_TARGET"

View File

@ -0,0 +1,12 @@
# EA SPORTS FC 25 1.7c.d76a
# BID: 8AB0BBEBB5F628E6
unsafeCheck: true
ALL_FPS:
# Internal FPS Lock
-
type: evaluate_write
address: [MAIN, 0xCEEDA68, 8]
value_type: double
value: FPS_TARGET

View File

@ -0,0 +1,12 @@
# EA SPORTS FC 25 1.7c.7841
# BID: DF4B53A8F7EA6FB6
unsafeCheck: true
ALL_FPS:
# Internal FPS Lock
-
type: evaluate_write
address: [MAIN, 0xCEECA68, 8]
value_type: double
value: FPS_TARGET

View File

@ -0,0 +1,12 @@
# EA SPORTS FC 25 1.7d.c638
# BID: E60B4F857609BD49
unsafeCheck: true
ALL_FPS:
# Internal FPS Lock
-
type: evaluate_write
address: [MAIN, 0xCEEFA88, 8]
value_type: double
value: FPS_TARGET

View File

@ -0,0 +1,12 @@
# EA SPORTS FC 25 1.7b.3ca3
# BID: EE92CAF016873D08
unsafeCheck: true
ALL_FPS:
# Internal FPS Lock
-
type: evaluate_write
address: [MAIN, 0xCE91A68, 8]
value_type: double
value: FPS_TARGET

View File

@ -0,0 +1,12 @@
# EA SPORTS FC 25 1.7a.a54b
# BID: F57C74294E14BDCC
unsafeCheck: true
ALL_FPS:
# Internal FPS Lock
-
type: evaluate_write
address: [MAIN, 0xCE78A68, 8]
value_type: double
value: FPS_TARGET

View File

@ -9,7 +9,8 @@ ALL_FPS:
type: evaluate_write
address: [MAIN, 0x2495500, 0x304C]
value_type: float
value: FPS_LOCK_TARGET
value: FPS_TARGET
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# Funko Fusion 3.1.1
# BID: F5E599C889DF733A
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x7541A68, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x851D078, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x854AF60, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,75 @@
# WARRIORS: Abyss 1.4.0
# BID: 36B692C0FA9F6F46
unsafeCheck: true
MASTER_WRITE:
# REF: 09 49 A8 52 21 01 27 1E 00 20 21 1E
# Use FPS Target instead of vsync value for Dynamic Resolution max delta
-
type: bytes
main_offset: 0x6E3AF0
value_type: uint32
value:
- 0xD00049E1 # ADRP X1, 0x1021000
- 0xBD4E1021 # LDR S1, [X1, 0xE10]
# Redirect DR Targets to MAIN+0x1477F00
-
type: bytes
main_offset: 0x6E3B94
value_type: uint32
value:
- 0x90006EE9 # ADRP X9, 0x14BF000
- 0xBD4F0121 # LDR S1, [X9, 0xF00]
-
type: bytes
main_offset: 0x6E3BA4
value_type: uint32
value:
- 0x90006EE9 # ADRP X9, 0x14BF000
- 0xBD4F0521 # LDR S1, [X9, 0xF04]
# Default values
-
type: bytes
main_offset: 0x14BFF00
value_type: float
value: [50, 40]
ALL_FPS:
# REF: 00 00 F0 42 78 00 00 00 00 00 F0 42 04 00 00 00
# FPS Lock
-
type: evaluate_write
address: [MAIN, 0x1021E1C]
value_type: uint32
value: "120 / FPS_LOCK_TARGET"
# Prevent from setting it as 0, otherwise game crashes
-
type: evaluate_compare
compare_address: [MAIN, 0x1021E1C]
compare_type: "=="
compare_value_type: uint32
compare_value: 0
address: [MAIN, 0x1021E1C]
value_type: uint32
value: 1
# Others
-
type: evaluate_write
address: [MAIN, 0x1021E10]
value_type: float
value: "FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0x1021E14]
value_type: uint32
value: "FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0x1021E18]
value_type: float
value: "FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0x14BFF00]
value_type: float
value: ["1.5 * FRAMETIME_TARGET", "1.2 * FRAMETIME_TARGET"]

View File

@ -0,0 +1,24 @@
# 女神異聞錄5 亂戰:魅影攻手 1.0.1
# BID: 496A2F5A9CE4FBEB
unsafeCheck: true
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x1D11158]
value_type: int32
value: [FPS_LOCK_TARGET, VSYNC_TARGET]
-
type: evaluate_write
address: [MAIN, 0x1D24BE8]
value_type: float
value: FPS_TARGET
-
type: evaluate_write
address: [MAIN, 0x2A848D0]
value_type: int32
value: "VSYNC_TARGET - 1"
-
type: block
what: timing

View File

@ -0,0 +1,21 @@
# Cassette Beasts 1.8.2
# BID: 768428355C994280
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

View File

@ -0,0 +1,21 @@
# Pumpkin Jack 1.4.4
# BID: 0F73F1D52820F90B
unsafeCheck: true
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x60F3B68, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x592B218, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# MotoGP 25 1.0.3
# BID: 03DBE839CAA0632B
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0xA058518, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xA093DD0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x9074C00, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# MotoGP 25 1.0.2
# BID: BD9B46CAE607D7E8
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0xA043518, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xA07EDD0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x905FC00, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# Labirynth Of The Demon King 1.81
# BID: DE26B43C3D21B3A3
unsafeCheck: false
ALL_FPS:
# Disable FixedFrameRate
-
type: write
address: [MAIN, 0x59ED248, 0x7A4]
value_type: uint32
value: 7
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x59EDB68, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x57EEDA8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,57 @@
# Amber Isle 1.0.3
# BID: E8BF195297B63BA2
unsafeCheck: true
MASTER_WRITE:
# Redirect all hardcoded doubles in DynamicResolutionHandler::Update to MAIN+0x909EF00
## REF: c8 aa 8a f2 28 07 e8 f2
-
type: bytes
main_offset: 0x21FE1E4
value_type: uint32
value:
- 0x90037508 # adrp x8, #0x909E000
- 0xFD478100 # ldr d0, [x8, #0xf00]
-
type: bytes
main_offset: 0x21FE3E0
value_type: uint32
value:
- 0x90037508 # adrp x8, #0x909E000
- 0xFD478101 # ldr d1, [x8, #0xf00]
-
type: bytes
main_offset: 0x21FE43C
value_type: uint32
value:
- 0x90037508 # adrp x8, #0x909E000
- 0xFD478101 # ldr d1, [x8, #0xf00]
-
type: bytes
main_offset: 0x21FE7D4
value_type: uint32
value:
- 0x90037508 # adrp x8, #0x909E000
- 0xFD478100 # ldr d0, [x8, #0xf00]
## REF: c8 aa 8a f2 28 07 f8 f2
-
type: bytes
main_offset: 0x21fE550
value_type: uint32
value:
- 0x90037508 # adrp x8, #0x909E000
- 0xFD478100 # ldr d0, [x8, #0xf00]
- 0x1E614000 # fneg d0, d0
# default value
-
type: bytes
main_offset: 0x909EF00
value_type: double
value: 25.333333333333336
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x909EF00]
value_type: double
value: "FRAMETIME_TARGET * 0.76"

View File

@ -1,4 +1,4 @@
# Xenoblade Chronicles 3 2.2.0
# Xenoblade Chronicles 3 2.2.0/2.2.1
# BID: 82D187FE9EF9BE92
unsafeCheck: false

View File

@ -0,0 +1,21 @@
# FANTASY LIFE i: The Girl Who Steals Time 1.4.0
# BID: 061A7341077C0974
unsafeCheck: true
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xAD71938, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x9D51728, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,21 @@
# FANTASY LIFE i: The Girl Who Steals Time 1.3.3
# BID: 546820C12D88850D
unsafeCheck: true
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xAD09938, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x9CE9728, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# FANTASY LIFE i: The Girl Who Steals Time 1.2.1
# BID: 66BC954F5323014C
unsafeCheck: false
ALL_FPS:
# Disable FixedFrameRate
-
type: write
address: [MAIN, 0xACC63E0, 0xAA4]
value_type: uint32
value: 7
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xACC7938, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x9CA7728, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# FANTASY LIFE i: The Girl Who Steals Time 1.3.0
# BID: 9DBA6AA32721CAB9
unsafeCheck: false
ALL_FPS:
# Disable FixedFrameRate
-
type: write
address: [MAIN, 0xACF23E0, 0xAA4]
value_type: uint32
value: 7
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xACF3938, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x9CD3728, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# FANTASY LIFE i: The Girl Who Steals Time 1.1.0
# BID: A697413E1DA7851A
unsafeCheck: false
ALL_FPS:
# Disable FixedFrameRate
-
type: write
address: [MAIN, 0xAB873E0, 0xAA4]
value_type: uint32
value: 7
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xAB88938, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x9B68728, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,12 @@
# NINJA GAIDEN: Ragebound 1.0.3
# BID: C7BD9BFC5F202073
unsafeCheck: true
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x58410E0, 0x48]
value_type: float
value: "1 / FPS_TARGET"

View File

@ -0,0 +1,47 @@
# DRAGON BALL XENOVERSE 2 FOR NINTENDO SWITCH 1.24.00
# BID: 7640CE319C043D56
# Double buffer is hardcoded in class, getting triple buffer is hard.
# Some graphical effects like aura have wrong speed outside of 15, 20, 30 and 60 FPS
unsafeCheck: false
ALL_FPS:
# Search those in Edizon by searching for 1/60 in title menu, then 1/30 when FPS lock is applied.
# FPS Lock
-
type: write
address: [MAIN, 0x4AC8AD8, 0x698]
value_type: float
value: 0.0
# Unknown
-
type: write
address: [MAIN, 0x4AC8AD8, 0x6A4]
value_type: float
value: 0.0
# Game Battle Speed Factor
-
type: evaluate_write
address: [MAIN, 0x4AC8AD8, 0x6B0]
value_type: uint32
value: VSYNC_TARGET
# Cutscenes Speed Factor
-
type: evaluate_write
address: [MAIN, 0x4AC8AD8, 0x6B4]
value_type: uint32
value: VSYNC_TARGET
# Target Speed
# REF: E9 03 00 32 09 01 00 39 C0 03 5F D6, first result, LDR instruction
-
type: evaluate_write
address: [MAIN, 0x23F51C0]
value_type: float
value: "(1 / FPS_TARGET) * VSYNC_TARGET"
# Dynamic Resolution FPS Target
# REF: 16 4E A8 52 F7 03 60 B2, first ADRP + LDR above it
-
type: evaluate_write
address: [MAIN, 0x23D53C8, 0x1844]
value_type: float
value: "FPS_TARGET"

View File

@ -0,0 +1,47 @@
# DRAGON BALL XENOVERSE 2 FOR NINTENDO SWITCH 1.24.03
# BID: 82C912DDD4663022
# Double buffer is hardcoded in class, getting triple buffer is hard.
# Some graphical effects like aura have wrong speed outside of 15, 20, 30 and 60 FPS
unsafeCheck: false
ALL_FPS:
# Search those in Edizon by searching for 1/60 in title menu, then 1/30 when FPS lock is applied.
# FPS Lock
-
type: write
address: [MAIN, 0x4AC8AD8, 0x698]
value_type: float
value: 0.0
# Unknown
-
type: write
address: [MAIN, 0x4AC8AD8, 0x6A4]
value_type: float
value: 0.0
# Game Battle Speed Factor
-
type: evaluate_write
address: [MAIN, 0x4AC8AD8, 0x6B0]
value_type: uint32
value: VSYNC_TARGET
# Cutscenes Speed Factor
-
type: evaluate_write
address: [MAIN, 0x4AC8AD8, 0x6B4]
value_type: uint32
value: VSYNC_TARGET
# Target Speed
# REF: E9 03 00 32 09 01 00 39 C0 03 5F D6, first result, LDR instruction
-
type: evaluate_write
address: [MAIN, 0x23F51C0]
value_type: float
value: "(1 / FPS_TARGET) * VSYNC_TARGET"
# Dynamic Resolution FPS Target
# REF: 16 4E A8 52 F7 03 60 B2, first ADRP + LDR above it
-
type: evaluate_write
address: [MAIN, 0x23D53C8, 0x1844]
value_type: float
value: "FPS_TARGET"

View File

@ -1,4 +1,4 @@
# Achilles Legends Untold 1.0.1
# Achilles Legends Untold 1.0.1/1.0.2
# BID: BDDD7E8FA07C8C75
unsafeCheck: true
@ -21,4 +21,5 @@ ALL_FPS:
type: write
address: [MAIN, 0x6199738, 0]
value_type: int32
value: [0, 0]
value: [0, 0]

View File

@ -1,4 +1,4 @@
# Kirby Star Allies 4.0.0
# Kirby Star Allies 4.0.0/4.0.0a
# BID: D55608916FA56C18
# Thanks to Kirby567Fan for finding offsets of interval

View File

@ -0,0 +1,148 @@
# The Legend of Zelda: Breath of the Wild 1.8.1
# BID: A12F75F49B36F4B8
unsafeCheck: true
MASTER_WRITE:
# Remove double buffer
## REF: 61 F6 42 39
-
type: bytes
main_offset: 0xD80748
value_type: uint32
value: 0x52800021
# Change pointer of GPU time factor for DR calculations to MAIN + 0x1D36C80
## REF: XREF 0x46823555, replace loading for 0.001
-
type: bytes
main_offset: 0xE6F140
value_type: uint32
value:
- 0xF0007628
- 0xBD4FF501
# Dynamic speed
## Replace nvnQueuePresentTexture call to code cave at MAIN+0x148D964
-
type: bytes
main_offset: 0xD874FC
value_type: uint32
value: 0x141C191A
## Patch game speed function to use speed from MAIN+0x1D36FF0
-
type: bytes
main_offset: 0x14092A8
value_type: uint32
value: 0x14000003
-
type: bytes
main_offset: 0x14092CC
value_type: uint32
value:
- 0xB0004969
- 0xBD4FF121
## Patch UI speed function to use speeed from MAIN+0x1D36FF0
-
type: bytes
main_offset: 0x116D0D8
value_type: uint32
value: 0xB0005E47
-
type: bytes
main_offset: 0x116D0E4
value_type: uint32
value: 0xBD4FF0E0
## CODE CAVE
-
type: bytes
main_offset: 0x148D964
value_type: uint32
value:
- 0xD63F0100
- 0xD53BE022
- 0xB0004548
- 0xF947FD01
- 0xEB1F003F
- 0x54000061
- 0xF907FD02
- 0x17E3E6E0
- 0xCB010040
- 0x97FFFBB6 # BL nn::os::ConvertToTimeSpan(nn::os::Tick)
- 0x9E230000
- 0x52940AA0
- 0x72A03F80
- 0x1E230001
- 0x1E211800
- 0x1E201001
- 0x1E212000
- 0x5400004B
- 0x1E204020
- 0xB0004548
- 0xBD4FED01
- 0x1E212000
- 0x5400004C
- 0x1E204020
- 0xBD0FF100
- 0x17FFFFED
- 0xB0004540
- 0xB94FF000
- 0xD65F03C0
- 0xB0004547
- 0xB90FE8E1
- 0x17DDA966
# Signal Cutscenes playing
-
type: bytes
main_offset: 0xC00680
value_type: uint32
value: 0x942234D6
-
type: bytes
main_offset: 0xC00E40
value_type: uint32
value: 0x942232E6
# Default speed
-
type: bytes
main_offset: 0x1D36FF0
value_type: float
value: 1.0
-
type: bytes
main_offset: 0x1D36FEC
value_type: float
value: 1.0
# Default cutscene state
-
type: bytes
main_offset: 0x1D36FE8
value_type: uint8
value: 1
# Default DR factor
-
type: bytes
main_offset: 0x1D36FF4
value_type: float
value: 0.001
ALL_FPS:
# Min Delta
-
type: evaluate_write
address: [MAIN, 0x1D36FEC]
value_type: float
value: "30 / FPS_TARGET"
# DR factor
-
type: evaluate_write
address: [MAIN, 0x1D36FF4]
value_type: float
value: "(FPS_TARGET / 30) * 0.001"
# Prerendered cutscenes must be played at 30 FPS
-
type: compare
compare_address: [MAIN, 0x1D36FE8]
compare_type: "=="
compare_value_type: uint8
compare_value: 0
address: [MAIN]
value_type: refresh_rate
value: 30

View File

@ -0,0 +1,157 @@
# The Legend of Zelda: Breath of the Wild 1.8.2
# BID: DE0B6AC4EFC1DDA7
unsafeCheck: true
MASTER_WRITE:
# Remove double buffer
## REF: 61 F6 42 39
-
type: bytes
main_offset: 0xD80748
value_type: uint32
value: 0x52800021
# Change pointer of time factor for DR calculations to MAIN + 0x1D36FF4
## REF: 01 01 27 1E 08 59 A8 52 03 08 21 1E, replace hardcoded 100.0 float
-
type: bytes
main_offset: 0x1153314
value_type: uint32
value:
- 0xF0005F08
- 0x1E210803
- 0xBD4FF501
# Dynamic speed
## Replace nvnQueuePresentTexture call to code cave at MAIN+0x148D964
-
type: bytes
main_offset: 0xD874FC
value_type: uint32
value: 0x141C191A
## Patch game speed function to use speed from MAIN+0x1D36FF0
-
type: bytes
main_offset: 0x14092A8
value_type: uint32
value: 0x14000003
-
type: bytes
main_offset: 0x14092CC
value_type: uint32
value:
- 0xB0004969
- 0xBD4FF121
## Patch UI speed function to use speeed from MAIN+0x1D36FF0
-
type: bytes
main_offset: 0x116D0D8
value_type: uint32
value: 0xB0005E47
-
type: bytes
main_offset: 0x116D0E4
value_type: uint32
value: 0xBD4FF0E0
## CODE CAVE
-
type: bytes
main_offset: 0x148D964
value_type: uint32
value:
- 0xD63F0100
- 0xD53BE022
- 0xB0004548
- 0xF947FD01
- 0xEB1F003F
- 0x54000061
- 0xF907FD02
- 0x17E3E6E0
- 0xCB010040
- 0x97FFFBB6 # BL nn::os::ConvertToTimeSpan(nn::os::Tick)
- 0x9E230000
- 0x52940AA0
- 0x72A03F80
- 0x1E230001
- 0x1E211800
- 0x1E201001
- 0x1E212000
- 0x5400004B
- 0x1E204020
- 0xB0004548
- 0xBD4FED01
- 0x1E212000
- 0x5400004C
- 0x1E204020
- 0xBD0FF100
- 0x17FFFFED
- 0xB0004540
- 0xB94FF000
- 0xD65F03C0
- 0xB0004547
- 0xB90FE8E1
- 0x17DDA966
# Signal Cutscenes playing
-
type: bytes
main_offset: 0xC00680
value_type: uint32
value: 0x942234D6
-
type: bytes
main_offset: 0xC00E40
value_type: uint32
value: 0x942232E6
# Default speed
-
type: bytes
main_offset: 0x1D36FF0
value_type: float
value: 1.0
-
type: bytes
main_offset: 0x1D36FEC
value_type: float
value: 1.0
# Default cutscene state
-
type: bytes
main_offset: 0x1D36FE8
value_type: uint8
value: 1
# Default DR factor
-
type: bytes
main_offset: 0x1D36FF4
value_type: float
value: 100.0
ALL_FPS:
# Scrolling speed
## REF: 68 16 41 B9 D8 22 D5 1A
## ADRP + LDR above it
-
type: evaluate_write
address: [MAIN, 0x1C4BA40]
value_type: float
value: "30 / FPS_TARGET"
# Min Delta
-
type: evaluate_write
address: [MAIN, 0x1D36FEC]
value_type: float
value: "30 / FPS_TARGET"
# DR factor
-
type: evaluate_write
address: [MAIN, 0x1D36FF4]
value_type: float
value: "(FPS_TARGET / 30) * 100"
# Prerendered cutscenes must be played at 30 FPS
-
type: compare
compare_address: [MAIN, 0x1D36FE8]
compare_type: "=="
compare_value_type: uint8
compare_value: 0
address: [MAIN]
value_type: refresh_rate
value: 30

View File

@ -0,0 +1,53 @@
# 零 ~濡鴉ノ巫女~ 1.0.5
# BID: 8BFBF5B8A7098443
unsafeCheck: true
MASTER_WRITE:
# Redirect min delta to MAIN + 0x1BC4FF0
# REF: 00 D9 21 7E 28 19 20 1E
-
type: bytes
main_offset: 0x39ABF8
value_type: uint32
value:
- 0xD000C15B # ADRP X27, 0x1BC4000
- 0xBD4FF368 # LDR S8, [X27, 0xFF0]
# Redirect FPS Lock to MAIN + 0x1BC4FF4
# REF: 69 AA 40 B9 0A 40 99 52
-
type: bytes
main_offset: 0x39B2D8
value_type: uint32
value:
- 0xB000C149 # ADRP X9, 0x7101BC4000
- 0xB94FF529 # LDR W9, [X9, 0xFF4]
- 0xD503201F # NOP
- 0xD503201F # NOP
# Default values
-
type: bytes
main_offset: 0x1BC4FF0
value_type: float
value: 0.0333333333
-
type: bytes
main_offset: 0x1BC4FF4
value_type: uint32
value: 33333333
ALL_FPS:
# Min delta
-
type: evaluate_write
address: [MAIN, 0x1BC4FF0]
value_type: float
value: "1 / FPS_TARGET"
# FPS Lock
-
type: evaluate_write
address: [MAIN, 0x1BC4FF4]
value_type: uint32
value: "1000000000 / FPS_TARGET"
-
type: block
what: timing

View File

@ -0,0 +1,28 @@
# No Man's Sky 5.7.1
# BID: 22D0D857A4DAEBBC
unsafeCheck: true
MASTER_WRITE:
# Redirect DR frametime target to MAIN+0x47D7FF0
# REF: 08 4E A8 52 00 01 27 1E 48 8F A8 52, ADRP + ADD + LDR above that
-
type: bytes
main_offset: 0x1F95A70
value_type: uint32
value:
- 0xD0014209 # adrp x9, #0x47D7000
- 0xBD4FF120 # ldr s0, [x9, #0xff0]
- 0xD503201F # NOP
# default value
-
type: bytes
main_offset: 0x47D7FF0
value_type: float
value: 30
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x47D7FF0]
value_type: float
value: FPS_TARGET

View File

@ -0,0 +1,28 @@
# No Man's Sky 5.7.01
# BID: CF94B485A949F8D1
unsafeCheck: true
MASTER_WRITE:
# Redirect DR frametime target to MAIN+0x47DBFF0
# REF: 08 4E A8 52 00 01 27 1E 48 8F A8 52, ADRP + ADD + LDR above that
-
type: bytes
main_offset: 0x1F99B90
value_type: uint32
value:
- 0xD0014209 # adrp x9, #0x47DB000
- 0xBD4FF120 # ldr s0, [x9, #0xff0]
- 0xD503201F # NOP
# default value
-
type: bytes
main_offset: 0x47DBFF0
value_type: float
value: 30
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x47DBFF0]
value_type: float
value: FPS_TARGET

View File

@ -0,0 +1,28 @@
# No Man's Sky 5.7.5
# BID: D5C5F47DFABD0812
unsafeCheck: true
MASTER_WRITE:
# Redirect DR frametime target to MAIN+0x47E0FF0
# REF: 08 4E A8 52 00 01 27 1E 48 8F A8 52, ADRP + ADD + LDR above that
-
type: bytes
main_offset: 0x1F9BC40
value_type: uint32
value:
- 0xB0014229 # adrp x9, #0x47E0000
- 0xBD4FF120 # ldr s0, [x9, #0xff0]
- 0xD503201F # NOP
# default value
-
type: bytes
main_offset: 0x47E0FF0
value_type: float
value: 30
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x47E0FF0]
value_type: float
value: FPS_TARGET

View File

@ -1,4 +1,4 @@
# The Smurfs - Dreams 1.0.2
# The Smurfs - Dreams 1.0.2/1.0.3
# BID: E08769D5B56A5A25
unsafeCheck: true
@ -10,12 +10,6 @@ ALL_FPS:
address: [MAIN, 0x8321958, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x92DEDE8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
@ -24,4 +18,4 @@ ALL_FPS:
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing
what: timing

View File

@ -0,0 +1,53 @@
# 零 ~月蝕的假面~ 1.0.3
# BID: A735894277FF90F3
unsafeCheck: true
MASTER_WRITE:
# Redirect min delta to MAIN + 0x1FE0FF0
# REF: 00 D9 21 7E 28 19 20 1E
-
type: bytes
main_offset: 0x16D9B4
value_type: uint32
value:
- 0xF000F39B # ADRP X27, 0x1FE0000
- 0xBD4FF368 # LDR S8, [X27, 0xFF0]
# Redirect FPS Lock to MAIN + 0x1FE0FF4
# REF: 69 B2 40 B9 0A 40 99 52
-
type: bytes
main_offset: 0x16DDD0
value_type: uint32
value:
- 0xF000F389 # ADRP X9, 0x1FE0000
- 0xB94FF529 # LDR W9, [X9, 0xFF4]
- 0xD503201F # NOP
- 0xD503201F # NOP
# Default values
-
type: bytes
main_offset: 0x1FE0FF0
value_type: float
value: 0.0333333333
-
type: bytes
main_offset: 0x1FE0FF4
value_type: uint32
value: 33333333
ALL_FPS:
# Min delta
-
type: evaluate_write
address: [MAIN, 0x1FE0FF0]
value_type: float
value: "1 / FPS_TARGET"
# FPS Lock
-
type: evaluate_write
address: [MAIN, 0x1FE0FF4]
value_type: uint32
value: "1000000000 / FPS_TARGET"
-
type: block
what: timing

View File

@ -0,0 +1,12 @@
# PowerWash Simulator 1.11.0
# BID: 561B0F485E699E4E
unsafeCheck: false
ALL_FPS:
# FuturLab.SingletonMonoBehaviour<FrameRateLimiter>_TypeInfo (don't block FPSlocker internal lock because game's lock is kinda shit)
-
type: evaluate_write
address: [MAIN, 0x606A350, 0xB8, 0, 0x28]
value_type: int32
value: FPS_LOCK_TARGET

View File

@ -0,0 +1,21 @@
# The Hundred Line -Last Defense Academy- 1.0.6
# BID: 5AF690F4A8BFCC67
# Last found function with REF: FD 7B BE A9 F3 0B 00 F9 FD 03 00 91 E0 03 01 2A stores some code related to playing above 60 FPS. Look at it if someone will have an issue playing above 60 FPS.
unsafeCheck: true
ALL_FPS:
# FPS Lock
# REF: 1B 41 00 00
-
type: evaluate_write
address: [MAIN, 0xC8CC78]
value_type: uint32
value: FRAMETIME_TARGET * 1000
# Unknown value, but set in the same function as FPS lock, so it may be important
# REF: 3C 00 00 00 01 00 00 00 00 00 00 00
-
type: evaluate_write
address: [MAIN, 0xC8CC44]
value_type: uint32
value: FPS_TARGET

View File

@ -0,0 +1,21 @@
# The Hundred Line -Last Defense Academy- 1.1.1
# BID: EAADF33F510C5853
# Last found function with REF: FD 7B BE A9 F3 0B 00 F9 FD 03 00 91 E0 03 01 2A stores some code related to playing above 60 FPS. Look at it if someone will have an issue playing above 60 FPS.
unsafeCheck: true
ALL_FPS:
# FPS Lock
# REF: 1B 41 00 00
-
type: evaluate_write
address: [MAIN, 0xC95D10]
value_type: uint32
value: FRAMETIME_TARGET * 1000
# Unknown value, but set in the same function as FPS lock, so it may be important
# REF: 3C 00 00 00 01 00 00 00 00 00 00 00
-
type: evaluate_write
address: [MAIN, 0xC95CDC]
value_type: uint32
value: FPS_TARGET

View File

@ -0,0 +1,57 @@
# resident evil 0 1.0.0
# BID: FB4239AA962B429B
unsafeCheck: true
MASTER_WRITE:
# Detect prerendered cutscenes
-
type: bytes
main_offset: 0x9F2540
value_type: uint32
value: 0x14004E9A
-
type: bytes
main_offset: 0xA05FA8
value_type: uint32
value:
- 0xB0008DE8
- 0x52800021
- 0xB90FF101
- 0xF81E0FF3
- 0xAA0003F3
- 0x52994000
- 0x72A77340
- 0xD4000161
- 0xAA1303E0
- 0x17FFB15E
-
type: bytes
main_offset: 0x9F26EC
value_type: uint32
value: 0x14004E39
-
type: bytes
main_offset: 0xA05FD0
value_type: uint32
value:
- 0x2A1F03E3
- 0xB0008DE4
- 0xB90FF083
- 0x17FFDB0D
ALL_FPS:
# Internal FPS Lock
-
type: evaluate_write
address: [MAIN, 0x1BAAC60, 0x4C]
value_type: float
value: "FPS_LOCK_TARGET"
-
type: compare
compare_type: "=="
compare_value_type: uint32
compare_value: 1
compare_address: [MAIN, 0x1BC2FF0]
address: [MAIN]
value_type: refresh_rate
value: 30

View File

@ -0,0 +1,12 @@
# DAVE THE DIVER 1.0.4.1040
# BID: 8ACF8D236ADAB16F
unsafeCheck: true
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x98E8680, 0x48]
value_type: float
value: "1 / FPS_TARGET"

View File

@ -0,0 +1,28 @@
# City of Brass 1.2.0
# BID: 53116900DC7BBE11
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x6257960, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 4)", "TruncDec(FRAMETIME_TARGET, 4)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x627BE28, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x5A2B258, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# Misc. A Tiny Tale 1.0.4
# BID: 0E9D849EF47198D8
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x4C25100, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x4C4B980, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x43F6548, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# Misc. A Tiny Tale 1.0.5
# BID: D24A46A2618C9E38
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x4C25100, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x4C4B980, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x43F6548, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,4 +1,4 @@
# Kirby's Dream Buffet 1.0.0
# Kirby's Dream Buffet 1.0.0/1.0.0a
# BID: 82AF4E16BBC0BEC8
# Thanks to Hazerou for finding offsets
# Game was patched to use triple buffer, and to avoid flickering with some 2D transparent elements, I have disabled transparency in them.

View File

@ -1,4 +1,4 @@
# ABZU 1.0.0
# ABZU 1.0.0/1.0.01
# BID: 59719CFCD1671B98
unsafeCheck: true
@ -10,6 +10,12 @@ ALL_FPS:
address: [MAIN, 0x6228EE0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x5996FC0, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -9,7 +9,7 @@ ALL_FPS:
type: write
address: [MAIN, 0x3482FB0, 0xB8, 0]
value_type: int32
value: 1
value: -1
# maxFixedDeltaTime, ref: UnityEngine.Time::get_timeScale
-
type: write

View File

@ -0,0 +1,30 @@
# Umurangi Generation 1.6.6.0
# BID: 372AB37327DB2C31
unsafeCheck: true
MASTER_WRITE:
# Read FPS Lock from MAIN+0x49FCFF0
## REF: 81 1a 40 bd 02 10 2e 1e
## REF: FPSTarget.<>d__6::MoveNext()
-
type: bytes
main_offset: 0x2DF1E60
value_type: uint32
value:
- 0xF000E048 # adrp x8, #0x49fc000
- 0xBD4FF101 # ldr s1, [x8, #0xff0]
- 0xD503201F # NOP
## Default value
-
type: bytes
main_offset: 0x49FCFF0
value_type: float
value: 0.03333333333
ALL_FPS:
# FPS Lock
-
type: evaluate_write
address: [MAIN, 0x49FCFF0]
value_type: float
value: "1 / FPS_TARGET"

View File

@ -0,0 +1,37 @@
# Twilight Monk 1.2.0
# BID: 7926A67119144CFD
unsafeCheck: true
ALL_FPS:
# Disable bUseFixedFrameRate to untie game speed from framerate and unlock FPS
-
type: write
address: [MAIN, 0x5DC2688, 0x7A4]
value_type: uint32
# Default is 0x46, bUseFixedFrameRate |= 0x40
# By writing 7 we are making sure that other flags are maintained:
# bAllowMultiThreadedAnimationUpdate |= 4
# bOptimizeAnimBlueprintMemberVariableAccess |= 2
value: 6
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x5D952E8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x5DC2FA8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: evaluate_write
address: [MAIN, 0x55C62F8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,37 @@
# Twilight Monk 1.3.0
# BID: E9A189C0CA87A30C
unsafeCheck: true
ALL_FPS:
# Disable bUseFixedFrameRate to untie game speed from framerate and unlock FPS
-
type: write
address: [MAIN, 0x5E04268, 0x7A4]
value_type: uint32
# Default is 0x46, bUseFixedFrameRate |= 0x40
# By writing 7 we are making sure that other flags are maintained:
# bAllowMultiThreadedAnimationUpdate |= 4
# bOptimizeAnimBlueprintMemberVariableAccess |= 2
value: 6
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x5DD6EC8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x5E04B88, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: evaluate_write
address: [MAIN, 0x5608AB8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,53 @@
# PROJECT ZERO: Mask of the Lunar Eclipse West 1.0.3
# BID: 0248DC99035AD28A
unsafeCheck: true
MASTER_WRITE:
# Redirect min delta to MAIN + 0x1FE0FF0
# REF: 00 D9 21 7E 28 19 20 1E
-
type: bytes
main_offset: 0x16D9B4
value_type: uint32
value:
- 0xF000F39B # ADRP X27, 0x1FE0000
- 0xBD4FF368 # LDR S8, [X27, 0xFF0]
# Redirect FPS Lock to MAIN + 0x1FE0FF4
# REF: 69 B2 40 B9 0A 40 99 52
-
type: bytes
main_offset: 0x16DDD0
value_type: uint32
value:
- 0xF000F389 # ADRP X9, 0x1FE0000
- 0xB94FF529 # LDR W9, [X9, 0xFF4]
- 0xD503201F # NOP
- 0xD503201F # NOP
# Default values
-
type: bytes
main_offset: 0x1FE0FF0
value_type: float
value: 0.0333333333
-
type: bytes
main_offset: 0x1FE0FF4
value_type: uint32
value: 33333333
ALL_FPS:
# Min delta
-
type: evaluate_write
address: [MAIN, 0x1FE0FF0]
value_type: float
value: "1 / FPS_TARGET"
# FPS Lock
-
type: evaluate_write
address: [MAIN, 0x1FE0FF4]
value_type: uint32
value: "1000000000 / FPS_TARGET"
-
type: block
what: timing

View File

@ -6,11 +6,15 @@ unsafeCheck: true
ALL_FPS:
# Game speed value
-
type: evaluate_write
type: evaluate_compare
compare_type: "=="
compare_value_type: uint32
compare_value: 2
compare_address: [MAIN, 0x2218B44, 0x10]
address: [MAIN, 0x2218B44, 0x20]
value_type: float
value: "1 / FPS_TARGET"
# Play prerendered cutscenes only at 60 FPS
# Block prerendered cutscenes to 30 FPS
-
type: compare
compare_address: [MAIN, 0x1728B58]
@ -19,4 +23,4 @@ ALL_FPS:
compare_value: 0
address: [MAIN]
value_type: refresh_rate
value: 60
value: 60

View File

@ -0,0 +1,83 @@
# 無双OROCHI 1.0.13
# BID: 07650FD5E5E2B82C
# Credits to Hazerou for figuring out the offset
# Main offset stores address to start of .bss of NRO
## REF: 02 00 00 00 3C 00 00 00
unsafeCheck: true
ALL_FPS:
# Without DLC Ultimate Edition installed
-
type: evaluate_compare
compare_value_type: uint64
compare_type: "=="
compare_value: 0x379B4590A7C2BC1F
compare_address: [MAIN, 0x3AF80, -0x1B80FC0]
address: [MAIN, 0x3AF80, -0x92BB8]
value_type: uint32
value: [VSYNC_TARGET, FPS_TARGET]
-
type: evaluate_compare
compare_value_type: uint64
compare_type: "=="
compare_value: 0x379B4590A7C2BC1F
compare_address: [MAIN, 0x3AF80, -0x1B80FC0]
address: [MAIN, 0x3AF80, -0x92BB0]
value_type: float
value: FPS_TARGET
-
type: evaluate_compare
compare_value_type: uint64
compare_type: "=="
compare_value: 0x379B4590A7C2BC1F
compare_address: [MAIN, 0x3AF80, -0x1B80FC0]
address: [MAIN, 0x3AF80, -0x92BAC]
value_type: uint32
value: [VSYNC_TARGET, FPS_TARGET]
-
type: evaluate_compare
compare_value_type: uint64
compare_type: "=="
compare_value: 0x379B4590A7C2BC1F
compare_address: [MAIN, 0x3AF80, -0x1B80FC0]
address: [MAIN, 0x3AF80, -0x92BA4]
value_type: float
value: FPS_TARGET
# With DLC Ultimate Edition installed
-
type: evaluate_compare
compare_value_type: uint64
compare_type: "!="
compare_value: 0x379B4590A7C2BC1F
compare_address: [MAIN, 0x3AF80, -0x1B80FC0]
address: [MAIN, 0x3AF80, -0x93480]
value_type: uint32
value: [VSYNC_TARGET, FPS_TARGET]
-
type: evaluate_compare
compare_value_type: uint64
compare_type: "!="
compare_value: 0x379B4590A7C2BC1F
compare_address: [MAIN, 0x3AF80, -0x1B80FC0]
address: [MAIN, 0x3AF80, -0x93478]
value_type: float
value: FPS_TARGET
-
type: evaluate_compare
compare_value_type: uint64
compare_type: "!="
compare_value: 0x379B4590A7C2BC1F
compare_address: [MAIN, 0x3AF80, -0x1B80FC0]
address: [MAIN, 0x3AF80, -0x93474]
value_type: uint32
value: [VSYNC_TARGET, FPS_TARGET]
-
type: evaluate_compare
compare_value_type: uint64
compare_type: "!="
compare_value: 0x379B4590A7C2BC1F
compare_address: [MAIN, 0x3AF80, -0x1B80FC0]
address: [MAIN, 0x3AF80, -0x9346C]
value_type: float
value: FPS_TARGET

View File

@ -0,0 +1,12 @@
# HEAVEN SEEKER ――The Savior of This Cruel World 1.2.0.139
# BID: 135595BF76F46B1B
unsafeCheck: true
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime (default is 0.033)
-
type: evaluate_write
address: [MAIN, 0x9888E78, 0x48]
value_type: float
value: "(1 / FPS_TARGET) * 0.99"

View File

@ -0,0 +1,180 @@
# The Legend of Zelda: Tears of The Kingdom 1.4.2
# BID: 5CB42B1CF25469FB
Addons:
- atmosphere/contents/0100F2C0115B6000/exefs/main.npdm
unsafeCheck: true
MASTER_WRITE:
# Remove double buffer
## REF: A0 2A 40 F9 61 A2 40 39
-
type: bytes
main_offset: 0xBBF258
value_type: uint32
value: 0x52800021
# Code Injected, $x1 + 0xD8 - last frametime without compensation long ticks, $x0 + 0x50 - fps target used for calculation int,
# $x0 + 0x24 - our fps target used for calculation but as float, originally is stored there 30 FPS int that seems to do nothing outside of this function
## MAIN + 0x3ACCFFC = FPS target for reference
## REF: nvnWindowSetPresentInterval
-
type: bytes
main_offset: 0x2D4E68
value_type: uint32
value:
- 0x9001BFC2
- 0xBD4FFC49
- 0xAA0003F4
- 0xAA0103F5
- 0xF9406C20
- 0x94A33E6D # BL nn::os::ConvertToTimeSpan(nn::os::Tick)
- 0x52994002
- 0x72A77342
- 0x1E220042
- 0x9E220001
- 0x1E211841
- 0x1E292020
- 0x1E21CD21
- 0x1E25D009
- 0x1E292020
- 0x1E21BD21
- 0x1E390022
- 0xB9005282
- 0xBD002681
- 0x1400002B
## Use our fps target
## REF: 60 52 42 BD 08 4E A8 52
### Replace LDR S0, [X22,#0x250]
-
type: bytes
main_offset: 0x2D4730
value_type: uint32
value: 0xBD422660
### Replace SCVTF S0, S0
-
type: bytes
main_offset: 0x2D4748
value_type: uint32
value: 0xD503201F
## REF: 14 01 40 F9 08 4E A8 52
### Replace LDR S0, [X22,#0x250]
-
type: bytes
main_offset: 0x37EA5C
value_type: uint32
value: 0xBD4226C0
### Replace SCVTF S0, S0
-
type: bytes
main_offset: 0x37EA68
value_type: uint32
value: 0xD503201F
# When prerendered cutscene is active write flag to MAIN + 0x3ACCFFB
## REF: 68 52 40 79 08 01 19 32 68 52 00 79
## BL to Code Cave 1
-
type: bytes
main_offset: 0x2B238B4
value_type: uint32
value: 0x975EC581
## REF: 68 52 40 79 08 79 18 12 68 52 00 79, inside call
## B to Code Cave 2
-
type: bytes
main_offset: 0x2B210CC
value_type: uint32
value: 0x175ECF7F
## CODE CAVE 1, offset +0x50 relative to start of previous code cave
-
type: bytes
main_offset: 0x2D4EB8
value_type: uint32
value:
- 0x52800022
- 0x9001BFC3
- 0x393FEC62
- 0x17F62A71 # Jump to original BL as B
## CODE CAVE 2, offset +0x10 relative to start of previous code cave
-
type: bytes
main_offset: 0x2D4EC8
value_type: uint32
value:
- 0x9001BFC3
- 0x393FEC60
- 0x14A343EC # B nn::oe::SetUserInactivityDetectionTimeExtended(bool)
# Adjust DR timing to factor from MAIN + 0x3ACCFF4
# REF: 88 02 15 CB 00 01 23 9E
-
type: bytes
main_offset: 0xEED54
value_type: uint32
value:
- 0xD001CEE8
- 0xBD4FF501
# Fix black background for D-pad menu
## REF: 21 03 5E BC
-
type: bytes
main_offset: 0x387390
value_type: uint32
value:
- 0x17FD36D1 # Jump to Code Cave 3
- 0x1E202008
## CODE CAVE 3, offset +0xC relative to start of previous code cave
-
type: bytes
main_offset: 0x2D4ED4
value_type: uint32
value:
- 0x1E202028
- 0x54000101
- 0x785FA328
- 0x7100151F
- 0x540000A1
- 0x785F8328
- 0x7100151F
- 0x54000041
- 0x1E2E1008
- 0x1F080409
- 0x1402C926 # Go back
# Default values
## FPS Target
-
type: bytes
main_offset: 0x3ACCFFC
value_type: float
value: 30
## Cutscene flag
-
type: bytes
main_offset: 0x3ACCFFB
value_type: uint8
value: 0
## Dynamic Resolution timing factor
-
type: bytes
main_offset: 0x3ACCFF4
value_type: float
value: 0.001
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x3ACCFFC]
value_type: float
value: FPS_TARGET
-
type: evaluate_write
address: [MAIN, 0x3ACCFF4]
value_type: float
value: "0.001 * (FPS_TARGET / 30)"
-
type: compare
compare_address: [MAIN, 0x3ACCFFB]
compare_value_type: uint8
compare_value: 1
compare_type: "=="
address: [MAIN]
value_type: refresh_rate
value: 30

View File

@ -0,0 +1,170 @@
# The Legend of Zelda: Tears of The Kingdom 1.4.0
# BID: 6265F94D606242CE
Addons:
- atmosphere/contents/0100F2C0115B6000/exefs/main.npdm
unsafeCheck: true
MASTER_WRITE:
# Remove double buffer
## REF: A0 2A 40 F9 61 A2 40 39
-
type: bytes
main_offset: 0xBD1F08
value_type: uint32
value: 0x52800021
# Code Injected, $x1 + 0xD8 - last frametime without compensation long ticks, $x0 + 0x50 - fps target used for calculatuon int,
# $x0 + 0x24 - our fps target used for calculation but as float, originally is stored there 30 FPS int that seems to do nothing outside of this function
## MAIN + 0x3ACFFFC = FPS target for reference
## REF: nvnWindowSetPresentInterval
-
type: bytes
main_offset: 0x3E0F64
value_type: uint32
value:
- 0xF001B762
- 0xBD4FFC49
- 0xAA0003F4
- 0xAA0103F5
- 0xF9406C20
- 0x949F20BE
- 0xF0014902
- 0xB9480842
- 0x1E220042
- 0x9E220001
- 0x1E211841
- 0x1E292020
- 0x1E21CD21
- 0x1E25D009
- 0x1E292020
- 0x1E21BD21
- 0x1E390022
- 0xB9005282
- 0xBD002681
- 0x1400002B
## Use our fps target
-
type: bytes
main_offset: 0x3E082C
value_type: uint32
value: 0xBD422660
-
type: bytes
main_offset: 0x3E0844
value_type: uint32
value: 0xD503201F
-
type: bytes
main_offset: 0x4B4F8C
value_type: uint32
value: 0xBD4226C0
-
type: bytes
main_offset: 0x4B4F98
value_type: uint32
value: 0xD503201F
# When prerendered cutscene is active write flag to MAIN + 0x3ACFFFB
## REF: 68 52 40 79 08 01 19 32 68 52 00 79
-
type: bytes
main_offset: 0x2B2A608
value_type: uint32
value: 0x9762DA6E
## REF: 68 52 40 79 08 79 18 12 68 52 00 79
-
type: bytes
main_offset: 0x2B27E20
value_type: uint32
value: 0x1762E46C
## CODE CAVE
-
type: bytes
main_offset: 0x3E0FC0
value_type: uint32
value:
- 0x52800022
- 0xF001B763
- 0x393FEC62
- 0x14196AF3
-
type: bytes
main_offset: 0x3E0FD0
value_type: uint32
value:
- 0xF001B763
- 0x393FEC60
- 0x149F263A
# Adjust DR timing to factor from MAIN + 0x3ACFFF4
# REF: 0x46823555
-
type: bytes
main_offset: 0x18CB20
value_type: uint32
value:
- 0xF001CA08
- 0xBD4FF501
# Fix black background for D-pad menu
-
type: bytes
main_offset: 0x5ECA90
value_type: uint32
value:
- 0x17F7D153
- 0x1E202008
## CODE CAVE
-
type: bytes
main_offset: 0x3E0FDC
value_type: uint32
value:
- 0x1E202028
- 0x54000101
- 0x785FA328
- 0x7100151F
- 0x540000A1
- 0x785F8328
- 0x7100151F
- 0x54000041
- 0x1E2E1008
- 0x1F080409
- 0x14082EA4
# Default values
## FPS Target
-
type: bytes
main_offset: 0x3ACFFFC
value_type: float
value: 30
## Cutscene flag
-
type: bytes
main_offset: 0x3ACFFFB
value_type: uint8
value: 0
## Dynamic Resolution timing factor
-
type: bytes
main_offset: 0x3ACFFF4
value_type: float
value: 0.001
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x3ACFFFC]
value_type: float
value: FPS_TARGET
-
type: evaluate_write
address: [MAIN, 0x3ACFFF4]
value_type: float
value: "0.001 * (FPS_TARGET / 30)"
-
type: compare
compare_address: [MAIN, 0x3ACFFFB]
compare_value_type: uint8
compare_value: 1
compare_type: "=="
address: [MAIN]
value_type: refresh_rate
value: 30

View File

@ -0,0 +1,174 @@
# The Legend of Zelda: Tears of The Kingdom 1.4.1
# BID: 965EAB9CEB8EB867
Addons:
- atmosphere/contents/0100F2C0115B6000/exefs/main.npdm
unsafeCheck: true
MASTER_WRITE:
# Remove double buffer
## REF: A0 2A 40 F9 61 A2 40 39
-
type: bytes
main_offset: 0xBC9088
value_type: uint32
value: 0x52800021
# Code Injected, $x1 + 0xD8 - last frametime without compensation long ticks, $x0 + 0x50 - fps target used for calculatuon int,
# $x0 + 0x24 - our fps target used for calculation but as float, originally is stored there 30 FPS int that seems to do nothing outside of this function
## MAIN + 0x3ACAFFC = FPS target for reference
## REF: nvnWindowSetPresentInterval
-
type: bytes
main_offset: 0x38A3C4
value_type: uint32
value:
- 0x9001BA02
- 0xBD4FFC49
- 0xAA0003F4
- 0xAA0103F5
- 0xF9406C20
- 0x94A066EA # BL nn::os::ConvertToTimeSpan(nn::os::Tick)
- 0x52994002
- 0x72A77342
- 0x1E220042
- 0x9E220001
- 0x1E211841
- 0x1E292020
- 0x1E21CD21
- 0x1E25D009
- 0x1E292020
- 0x1E21BD21
- 0x1E390022
- 0xB9005282
- 0xBD002681
- 0x1400002B
## Use our fps target
## REF: 60 52 42 BD 08 4E A8 52
-
type: bytes
main_offset: 0x389C8C
value_type: uint32
value: 0xBD422660
-
type: bytes
main_offset: 0x389CA4
value_type: uint32
value: 0xD503201F
## REF: 14 01 40 F9 08 4E A8 52
-
type: bytes
main_offset: 0x4916DC
value_type: uint32
value: 0xBD4226C0
-
type: bytes
main_offset: 0x4916E8
value_type: uint32
value: 0xD503201F
# When prerendered cutscene is active write flag to MAIN + 0x3ACAFFB
## REF: 68 52 40 79 08 01 19 32 68 52 00 79
-
type: bytes
main_offset: 0x2B23988
value_type: uint32
value: 0x97619AA3
## REF: 68 52 40 79 08 79 18 12 68 52 00 79, inside call
-
type: bytes
main_offset: 0x2B211A0
value_type: uint32
value: 0x1761A4A1
## CODE CAVE, offset +0x50 relative to start of previous code cave
-
type: bytes
main_offset: 0x38A414
value_type: uint32
value:
- 0x52800022
- 0x9001BA03
- 0x393FEC62
- 0x141ADBE3
## CODE CAVE, offset +0x10 relative to start of previous code cave
-
type: bytes
main_offset: 0x38A424
value_type: uint32
value:
- 0x9001BA03
- 0x393FEC60
- 0x14A06C69 # B nn::oe::SetUserInactivityDetectionTimeExtended(bool)
# Adjust DR timing to factor from MAIN + 0x3ACAFF4
# REF: 88 02 15 CB 00 01 23 9E
-
type: bytes
main_offset: 0x17AC04
value_type: uint32
value:
- 0x9001CA88
- 0xBD4FF501
# Fix black background for D-pad menu
## REF: 21 03 5E BC
-
type: bytes
main_offset: 0x48DDD0
value_type: uint32
value:
- 0x17FBF198
- 0x1E202008
## CODE CAVE, offset +0xC relative to start of previous code cave
-
type: bytes
main_offset: 0x38A430
value_type: uint32
value:
- 0x1E202028
- 0x54000101
- 0x785FA328
- 0x7100151F
- 0x540000A1
- 0x785F8328
- 0x7100151F
- 0x54000041
- 0x1E2E1008
- 0x1F080409
- 0x14040E5F
# Default values
## FPS Target
-
type: bytes
main_offset: 0x3ACAFFC
value_type: float
value: 30
## Cutscene flag
-
type: bytes
main_offset: 0x3ACAFFB
value_type: uint8
value: 0
## Dynamic Resolution timing factor
-
type: bytes
main_offset: 0x3ACAFF4
value_type: float
value: 0.001
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x3ACAFFC]
value_type: float
value: FPS_TARGET
-
type: evaluate_write
address: [MAIN, 0x3ACAFF4]
value_type: float
value: "0.001 * (FPS_TARGET / 30)"
-
type: compare
compare_address: [MAIN, 0x3ACAFFB]
compare_value_type: uint8
compare_value: 1
compare_type: "=="
address: [MAIN]
value_type: refresh_rate
value: 30

View File

@ -0,0 +1,27 @@
# SnowRunner 1.0.40
# BID: 54551AEABF6E1F41
# Just search for 0x42055555
unsafeCheck: true
MASTER_WRITE:
# Redirect DR frametime target to MAIN+0x30A7F00
-
type: bytes
main_offset: 0x193CEA8
value_type: uint32
value:
- 0xF000BB4A # adrp x10, #0x30A7000
- 0xBD4F0142 # ldr s2, [x10, #0xf00]
# default value
-
type: bytes
main_offset: 0x30A7F00
value_type: float
value: 33.3333333333
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x30A7F00]
value_type: float
value: FRAMETIME_TARGET

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More