Compare commits

...

61 Commits
2.0-R3 ... main

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
redraz
d0b97525a8 Ultra 2.4|R1.1 2025-05-19 23:24:52 +03:00
redraz
bf48033941 Ultra 2.4|R1+ fix 2025-05-16 12:38:42 +03:00
redraz
9adc60b135 Ultra 2.4|R1 2025-05-13 04:27:17 +03:00
redraz
5153b2d17a modified: README.md 2025-05-10 13:01:13 +03:00
redraz
9d661b1d18 modified: README.md 2025-05-10 13:00:05 +03:00
redraz
1fc80bcbdb modified: README.md 2025-05-10 10:44:12 +03:00
redraz
985a53995a Ultra 2.4|RC1 2025-05-10 09:41:45 +03:00
redraz
4e42f73191 modified: README.md 2025-03-26 08:46:53 +03:00
redraz
b144b70918 Ultra 2.3|R4+ 2025-03-26 08:45:47 +03:00
redraz
b546edec8f Fix with old SaltyNX+FPSLocker & minvolt 550 2025-02-04 12:14:04 +03:00
redraz
aacfd99915 modified: README.md 2025-01-24 18:12:45 +03:00
redraz
da2cbbb2f6 Ultra 2.3|R3+ 2025-01-04 17:27:06 +03:00
redraz
9c3765e08c Ultra 2.3|R3 2025-01-04 11:42:49 +03:00
redraz
65461efd23 Ultra 2.3|R2+ 2024-11-22 04:38:50 +03:00
redraz
b9b4dd45c0 modified: README.md 2024-11-15 12:52:10 +03:00
redraz
e1812455bb Ultra 2.3|R2 2024-11-15 12:49:24 +03:00
redraz
73b0904544 Hotfix 2024-10-26 23:29:10 +03:00
redraz
d8daa54862 Upd sys-patch 2024-10-26 21:49:26 +03:00
redraz
c846ee9fb3 modified: README.md 2024-10-26 21:23:11 +03:00
redraz
65e6b17a73 Ultra 2.3|R1 2024-10-26 20:51:08 +03:00
redraz
09492db032 Ultra 2.3|RC2 2024-10-23 13:18:00 +03:00
redraz
10e4d13a27 modified: README.md 2024-10-17 07:45:50 +03:00
redraz
db5b3ab00e Ultra 2.3|RC1 2024-10-17 07:39:00 +03:00
redraz
5a927b499a Ultra 2.3|A1 2024-10-14 20:07:00 +03:00
redraz
a4f670dd3c modified: README.md 2024-09-17 04:43:02 +03:00
redraz
adf02bc085 Ultra 2.2|R4+ 2024-09-02 20:51:09 +03:00
redraz
cd4b0c933d Update Ultrahand -> 1.7.1 2024-08-29 08:38:00 +03:00
redraz
324f971d50 modified: README.md 2024-08-29 06:51:27 +03:00
redraz
cafa4e44c6 Ultra 2.2|R4 2024-08-27 15:45:17 +03:00
redraz
093c181ec1 Ultra 2.2|R3 2024-08-09 20:52:50 +03:00
redraz
fc203edb0f deleted: Ultra.zip 2024-08-08 19:52:28 +03:00
Pugemon
b3de870f9f
Add notes about force USB 3.0 2024-07-30 16:21:30 +03:00
redraz
04d19fe456 Ultra 2.2|R2 Plus 2024-07-23 19:24:59 +03:00
redraz
fd85e37b2c Ultra 2.2|R2 2024-07-09 22:39:59 +03:00
redraz
fd2f17b9b4 Fix + Hekate 6.2.1 2024-07-03 12:31:37 +03:00
redraz
ad232cfee7 Ultra 2.2 Release 1 2024-07-02 12:50:28 +03:00
redraz
309c2e7b4f modified: README.md 2024-06-14 19:00:14 +03:00
redraz
9c7679ce71 Ultra 2.1|R1 2024-05-11 18:26:14 +03:00
Pugemon
a6d8c99bf5
Fix dbi.config after DBI update with breaking changes 2024-05-08 23:41:07 +03:00
Pugemon
88563d9ce7
Update dbi.config
Updated configuration settings and sources to optimize functionality and streamline access. Adjustments include changes to browsing options, network configurations, and the addition of a new path for enhanced mod management
2024-05-08 23:21:57 +03:00
redraz
53ee94de8c modified: README_ENG.md 2024-04-24 03:31:54 +03:00
redraz
0d8c08c106 Change Ultra Paw to Ultrahand 2024-04-24 03:31:07 +03:00
redraz
a03e86fd9c Ultra 2.1|RC3 2024-04-22 16:28:30 +03:00
redraz
b468b0f774 modified: README_ENG.md 2024-04-17 01:07:05 +03:00
redraz
c98fa52431 modified: README.md 2024-04-17 00:45:48 +03:00
redraz
871d1e31d6 modified: README.md 2024-04-16 21:01:53 +03:00
redraz
ece9e2e9c1 Ultra 2.1|RC2 2024-04-16 20:43:18 +03:00
redraz
2130c40c4a Ultra 2.1|RC1 2024-03-31 05:33:35 +03:00
Pugemon
f50e64c6df [Bootloader] - Update Hekate to v6.1.1 2024-03-30 00:15:42 +03:00
redraz
eb5aacdaca modified: README.md 2024-03-22 07:35:49 +03:00
redraz
ebff409684 Ultra 2.0|R4 2024-03-22 03:23:55 +03:00
1181 changed files with 21276 additions and 48931 deletions

145
README.md
View File

@ -1,59 +1,100 @@
# 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)
### [English Readme](README_ENG.md) | [Группа в телеграме](https://t.me/UltraNX) | [Wiki](https://github.com/Ultra-NX/Ultra/wiki)
# [English Readme](README_ENG.md)
### [Группа в телеграме](https://t.me/UltraNX) | [Wiki](https://github.com/Ultra-NX/Ultra/wiki)
### Ultra - это функциональная кастомная прошивка для Nintendo Switch, с упором в разгон и улучшенный пользовательский опыт.
### [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)
## Особенности Ultra
* Предварительно настроенный OC-Suite с пресетами.
* Предварительно настроенный OC Switchcraft (Преемник OC-Suite) с пресетами.
* По умолчанию уже есть андервольт, который заметно снижает потребление консоли, и небольшой разгон памяти, который сделает игры плавнее.
* Лучший кастомизатор разгона для Свитч - [Ultra-Tuner](https://github.com/Ultra-NX/Ultra/wiki/Tuner-RU#Ultra-Tuner), позволяющий настраивать разгон прямо с консоли. Был первым, и остается неповторимым.
* Сборка максимально легкая и не нагруженная. В ней нет лишнего, минимум необходимый для разгона и комфортного использования.
* Модульная конструкция. В составе минимум приложений/плагинов/оверлеев, но вы всегда можете поставить еще через комплектный [Updater](https://github.com/Ultra-NX/Ultra/wiki/Tuner-RU#Updater).
* Выбор пресета работы системы охлаждения, либо шумно но холодно, либо тихо но горячо.
* Кастомный Ultra Monitor c FPS и системными метриками.
* Регулярные обновления, и активное коммьюнити.
* Модульная конструкция. В составе минимум приложений/плагинов/оверлеев, но вы всегда можете поставить еще через [Ultra Tuner](https://github.com/Ultra-NX/Ultra/wiki/Tuner-RU#Updater).
* Кастомная настройка работы системы охлаждения, и пресеты на выбор.
* Регулярные обновления, и активное комьюнити.
* DBI с встроенным notUltraNX репозиторием игр, больше не нужно каждый раз искать новый шоп Тинфоила.
* Подробная [Wiki](https://github.com/Ultra-NX/Ultra/wiki) в которой есть ответы почти на все вопросы.
* [Форки](https://github.com/Ultra-NX/Ultra-Resources/tree/main/patches) (свои модификации) программ и компонентов, нужные для удобства, безопасности и расширения возможностей:
* Форк Атмосферы с прописанной версией Ультры в информации о системе, и отключенными репортами, обычно засоряющими сд карту, тратящими ее ресурс и ломающими файловую систему. Так же исправлена работа старых форвардеров (важно для хоумбрю игр/эмуляторов).
* Форк Mission Control, с вырезанной "пасхалкой", делающей джойконы жовто-блакитными.
## Состав Ultra
1. **[Atmosphere](https://github.com/Atmosphere-NX/Atmosphere)** - Atmosphère, кастомная прошивка для Nintendo Switch.
1. **[Hekate](https://github.com/CTCaer/hekate)** - Пользовательский графический загрузчик Nintendo Switch, патчер прошивки, инструментарий и многое другое.
1. **[Ultra Tuner](https://github.com/Ultra-NX/Ultra-Tuner)** - Пакет для Ultra Paw (форка Ultrahand), позволяющий произвести тонкую настройку параметров под свою консоль. В случае нестабильной работы разгона, или при желании увеличить производительность консоли, Ultra Tuner - Ваш незаменимый помощник.
1. **[OC-Suite](https://github.com/hanai3Bi/Switch-OC-Suite/)** - Пакет разгона от Meha/hanai3Bi, открытые исходники гарантируют надежность и отсутствие скрытых гадостей. Вовремя обновляется для поддержки новых возможностей Атмосферы. Используется модифицированный loader.kip от B3711, в котором больше таблиц андервольта CPU (6 уровней против 4х).
- Временно используется оригинал от Meha.
1. **[Ultra Tuner](https://github.com/Ultra-NX/Ultra-Tuner)** - Пакет для Ultrahand, позволяющий произвести тонкую настройку параметров под свою консоль. В случае нестабильной работы разгона, или при желании увеличить производительность консоли, Ultra Tuner - Ваш незаменимый помощник.
1. **[OC-Switchcraft](https://github.com/halop/OC-Switchcraft-EOS/releases)**, форк **[OC-Suite](https://github.com/hanai3Bi/Switch-OC-Suite/)** - Лоадер атмосферы с разгоном от B3711, позволяет выжать из N.Switch мощность Xbox One. Вовремя обновляется для поддержки новых возможностей Атмосферы.
1. **Установленные пейлоады**:
* [Lockpick_RCM](https://codeberg.org/rashevskyv/kefir) - Программа для снятия ключей консоли.
* [Lockpick RCM](https://github.com/impeeza/Lockpick_RCMDecScots) - Программа для снятия ключей консоли.
* [TegraExplorer](https://github.com/suchmememanyskill/TegraExplorer) - Низкоуровневый файловый менеджер для работы с системой.
1. **Установленные Homebrew**
* [Sphaira](https://github.com/ITotalJustice/sphaira) - Современное Хоумбрю Меню, аналог nx-hbmenu
* [AiO Switch Updater](https://github.com/HamletDuFromage/aio-switch-updater) - Программа для обновления Ultra до актуальной версии, а так же для скачивания читов.
* [DBI](https://github.com/rashevskyv/dbi) - Лучший файловый менеджер, менеджер сохранений и установщик программ на консоль. Если вам нужна другая локализация - в [Updater](https://github.com/Ultra-NX/Ultra/wiki/Tuner-RU#Updater) есть выбор из EN-RU-PTBR-ZHCN.
* [Daybreak](https://github.com/Atmosphere-NX/Atmosphere) - Программа для обновления системного ПО.
* [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/hanai3Bi/Switch-OC-Suite) - Модуль отвечающий за разгон процессора, памяти и видеочипа - для лучшей производительности. Периодически меняю версии от разных авторов. Оригинальные авторы: Meha/hanai3Bi, lineon, p-sam.
* [nx-ovlloader](https://github.com/WerWolv/nx-ovlloader/) - С помощью этого модуля осуществляется переключение установленных модулей.
* [sys-patch](https://github.com/ITotalJustice/sys-patch/) - Создает/обновляет патчи при запуске системы. Не заменяет сигпатчи, но избавляет от регулярного ручного обновления патчей системы.
* [Ultra Paw Overlay](https://github.com/Ultra-NX/Ultra-Paw-Overlay), форк [Ultrahand Overlay](https://github.com/ppkantorski/Ultrahand-Overlay) - Специальное оверлей-меню для взаимодействия с системой: разгон, управление режимами через ReverseNX, включение читов, прочее. Так же позволяет использовать самописные пакеты, например - Ultra Tuner.
- **`Ultra-Overlay`**, мод [sys-clk](https://github.com/hanai3Bi/Switch-OC-Suite) - Оверлей для управления модулем sys-clk. Немного изменен мной, но без копания в исходниках.
- [Ultra Monitor](https://github.com/Ultra-NX/Ultra-Status-Monitor), форк [Status Monitor](https://github.com/hanai3Bi/Status-Monitor-Overlay) - Оверлей позволяющий следить за параметрами консоли в реальном времени. Может выступать в качестве счетчика FPS. Настроить внешность Micro-оверлея можно в Updater.
* [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/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.
- [Sysmodules](https://github.com/WerWolv/ovl-sysmodules/) - Оверлей для включения и отключения установленных системных модулей.
1. **Доступные для скачивания через [Updater](https://github.com/Ultra-NX/Ultra/wiki/Tuner-RU#Updater)**
* [Daybreak](https://github.com/Atmosphere-NX/Atmosphere/tree/master/troposphere/daybreak) - Программа для обновления системного ПО.
* [Linkalho](https://github.com/rdmrocha/linkalho) - Программа для привязки аккаунта.
* [ReverseNX Tool](https://github.com/masagrator/ReverseNX-Tool) - Программа для управления ReverseNX.
* [Battery Desync Fix](https://github.com/CTCaer/battery_desync_fix_nx) - Программа для сброса контроллера батареи. Не используйте просто так!
* [HB App Store](https://github.com/fortheusers/hb-appstore) - Бесплатный магазин для скачивания Homebrew приложений.
* [SysDVR-conf](https://github.com/exelix11/SysDVR) - Программа для установки/удаления dvr патчей для игр. Патчи включают возможность записи в тех играх, где она отключена, но ломают некоторые другие игры, например "Ведьмак 3".
* [sys-ftpd](https://github.com/cathery/sys-ftpd) - FTP сервер, работающий на фоне.
* [sys-con](https://github.com/cathery/sys-con) - Модуль, позволяющий подключать практически любые геймпады к консоли по USB.
* [Mission Control](https://github.com/ndeadly/MissionControl) - Модуль, позволяющий подключать практически любые геймпады к консоли по Bluetooth.
* [Observer-Tool](https://github.com/rkuchkarov/Observer-Tool) - Оверлей с максимально подробным отображением статистики системы, напоминает Afterburner на PC.
* **`MemToolkitNX`** - Бенчмарк и Тестер памяти. Результат сильно зависит от разгона CPU.
- [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=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.
* [Moonlight](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) - Поиск и установка тем на свитч.
* [Battery Desync Fix](https://github.com/CTCaer/battery_desync_fix_nx) - Программа для сброса контроллера батареи. Не используйте просто так!
* [MemToolkitNX](https://discord.com/channels/854839758815363072/1173171845139288114/1324099100202766408) - Бенчмарк и Тестер памяти. Результат сильно зависит от разгона CPU.
* [MemToolkitNX OLD](https://discord.com/channels/854839758815363072/1173171845139288114/1276196700750479480) - Бенчмарк и Тестер памяти. Результат сильно зависит от разгона CPU. Старая версия, которая многим нравится больше новой.
* [MicroMemBench](https://github.com/rashevskyv/4IFIR) - Бенчмарк. Результат сильно зависит от разгона CPU. Версия из Чифира которая в реальном времени тестирует CPU Copy, что позволяет быстро узнать результат после изменения таймингов.
* Overlays:
* [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, как Атмосфера.
* [BT Audio](https://github.com/masagrator/BT_Audio-ovl) - Оверлей, позволяющий быстро отключаться/подключаться к bluetooth-гарнитуре.
* [Fizeau](https://github.com/averne/Fizeau) - Модуль для изменения цветового профиля экрана.
* [sys-tune](https://github.com/HookedBehemoth/sys-tune) - Оверлей-музыкальный плеер, работает в фоне.
* 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 сервер, работающий на фоне.
## Лицензии
@ -64,24 +105,38 @@
* [Atmosphere](https://github.com/Atmosphere-NX/Atmosphere)
* [Status-Monitor-Overlay](https://github.com/masagrator/Status-Monitor-Overlay)
[CC-BY-NC-4.0 License](https://github.com/ppkantorski/Ultrahand-Overlay/blob/main/LICENSE)
* [Ultrahand-Overlay](https://github.com/ppkantorski/Ultrahand-Overlay)
[MIT License](https://github.com/masagrator/FPSLocker/blob/main/LICENSE)
* [FPSLocker](https://github.com/masagrator/FPSLocker)
## Благодарности
* Cooler3D
* Efosamark
* rashevskyv/хНЯ
* snupt/Catcher In The Grain Field
* ppkantorski/b0rd2dEAth
* hanai3Bi/Meha
* 4PDA
* B3711
* ppkantorski
* Meha
* duckbill
* snupt
#### А так же - отдельная благодарность администрации и участникам Ultra Group
## Поддержка
Если вам понравились результаты моих стараний, и у вас появилось желание закинуть мне на шаурму - я буду очень благодарен.
* Сделать это можно через @wallet telegram, на мой аккаунт @redraz
* Либо через Сбер: 2202200513345833
* Так же по QR через Tinkoff
Если вам нравится проект, и у вас появилось желание поддержать меня копеечкой - я буду очень благодарен.
У меня в данный момент нет других заработков, так что любая денежная помощь очень ценна для меня.
```
СБП : +79168089980
Альфа : 2200152336577997
Tinkoff : 2200700170486970
Сбер : 2202200513345833
TON: UQA9My51bkGZHbYhbdRZfp6B60N7VJfsnKl0sakgw9YhAPct
BTC: 18K6NN8NEavvMJL5Do3VTyJbL8NeZPHo93
USDT TRC20: TUZ5szAmRsnvBuC4rFB8RaAoCbN6Ucy4sL
```
### Tinkoff QR
![](https://github.com/Ultra-NX/Ultra-Resources/raw/main/Tinkoff%20small.png)

View File

@ -1,58 +1,95 @@
# 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)
### [English Readme](README_ENG.md) | [Telegram group](https://t.me/UltraNX)
### [Telegram group](https://t.me/UltraNX) - Don't be afraid to write in English, we will understand everything and answer you!
#
### Ultra is a functional custom firmware for Nintendo Switch, with a focus on overclocking and an improved user experience.
### [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)
## Features of Ultra
* Pre-configured OC-Suite with presets.
* Pre-configured OC Switchcraft (Successor to OC-Suite) with presets.
* By default, there's already an undervolt that noticeably reduces the console's consumption, and a slight memory overclock that will make games smoother.
* The best overclocking customizer for Switch - Ultra-Tuner, that allows you to customize overclocking right from the console. It was the first, and remains unique.
* The CFW is as light as possible. There are no unnecessary things in it, only minimum necessary for overclocking and comfortable use.
* Modular design. A minimum of applications/plugins/overlays are included, but you can always add more via the bundled Updater.
* Choice of cooling system preset, either noisy but cold or quiet but hot.
* Custom Ultra Monitor with FPS and system metrics.
* Modular design. A minimum of applications/plugins/overlays are included, but you can always add more via the Ultra Tuner.
* Manual adjustment of cooling system curves, and presets.
* 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.
* Mission Control fork, with the “easter egg” cut out, making the joycons yellow-blue.
## Composition of Ultra
## Content of Ultra
1. **[Atmosphere](https://github.com/Atmosphere-NX/Atmosphere)** - Atmosphère, custom firmware for the Nintendo Switch.
1. **[Hekate](https://github.com/CTCaer/hekate)** - Custom Nintendo Switch graphical bootloader, firmware patcher, toolkit and more.
1. **[Ultra Tuner](https://github.com/Ultra-NX/Ultra-Tuner)** - Package for Ultra Paw (fork of Ultrahand), which allows you to fine-tune the OC parameters for your console. In case of unstable overclocking, or if you want to increase the performance of your console, Ultra Tuner is your indispensable assistant.
1. **[OC-Suite](https://github.com/hanai3Bi/Switch-OC-Suite/)** - Overclocking package by Meha/hanai3Bi, open source guarantees reliability and no hidden nasties. Updated in time to support new Atmosphere features. Uses modified loader.kip from B3711, which has more CPU undervolt tables (6 levels vs. 4x).
- The original from Meha is temporarily used.
1. **[Ultra Tuner](https://github.com/Ultra-NX/Ultra-Tuner)** - Package for Ultrahand, which allows you to fine-tune the OC parameters for your console. In case of unstable overclocking, or if you want to increase the performance of your console, Ultra Tuner is your indispensable assistant.
1. **[OC-Switchcraft](https://github.com/halop/OC-Switchcraft-EOS/releases)**, a fork of **[OC-Suite](https://github.com/hanai3Bi/Switch-OC-Suite/)** - Atmosphere Loader with overclocking from B3711, allows you to reach from N.Switch power Xbox One. Updated in time to support new Atmosphere features.
1. **Installed Payloads**:
* [Lockpick_RCM](https://codeberg.org/rashevskyv/kefir) - Program for dumping console keys.
* [Lockpick RCM](https://github.com/impeeza/Lockpick_RCMDecScots) - Program for dumping console keys.
* [TegraExplorer](https://github.com/suchmememanyskill/TegraExplorer) - A low-level file manager for working with the system.
1. **Installed Homebrew**
* [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.
* [DBI](https://github.com/rashevskyv/dbi) - The best file manager, save manager and program installer on the console. If you need a different localization - Updater has a choice of EN-RU-PTBR-ZHCN.
* [Daybreak](https://github.com/Atmosphere-NX/Atmosphere) - A program for updating OS.
* [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/hanai3Bi/Switch-OC-Suite) - 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/WerWolv/nx-ovlloader/) - This module is used to switch the installed modules.
* [sys-patch](https://github.com/ITotalJustice/sys-patch/) - Creates/updates patches at system startup. Does not replace sigpatches, but saves from regular manual updating of system patches.
* [Ultra Paw Overlay](https://github.com/Ultra-NX/Ultra-Paw-Overlay), a fork of [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-Overlay`**, a mod of [sys-clk](https://github.com/hanai3Bi/Switch-OC-Suite) - Overlay for controlling sys-clk module. Slightly modified by me, but without digging into sources.
- [Ultra Monitor](https://github.com/Ultra-NX/Ultra-Status-Monitor), 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 can customize Micro-overlay appearance in Updater.
* [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/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.
- [Sysmodules](https://github.com/WerWolv/ovl-sysmodules/) - Overlay for enabling and disabling installed system modules.
- [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)**
* [Daybreak](https://github.com/Atmosphere-NX/Atmosphere/tree/master/troposphere/daybreak) - A program for updating OS.
* [Linkalho](https://github.com/rdmrocha/linkalho) - Account linking program.
* [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!
* [HB App Store](https://github.com/fortheusers/hb-appstore) - A free store for downloading Homebrew apps.
* [SysDVR-conf](https://github.com/exelix11/SysDVR) - A program to install/uninstall dvr patches for games. Patches enable recording in games where it is disabled, but break some other games like "The Witcher 3".
* [sys-ftpd](https://github.com/cathery/sys-ftpd) - FTP server running in background.
* [sys-con](https://github.com/cathery/sys-con) - A module that allows you to connect almost any gamepads to the console via USB.
* [Mission Control](https://github.com/ndeadly/MissionControl) - A module that allows you to connect almost any gamepads to the console via bluetooth.
* [Observer-Tool](https://github.com/rkuchkarov/Observer-Tool) - An overlay with the most detailed display of system statistics, similar to Afterburner on PC.
* **`MemToolkitNX`** - Benchmark and Memory Tester. The result is highly dependent on CPU overclocking.
* Homebrews:
* [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.
* [Moonlight](https://github.com/XITRIX/Moonlight-Switch) - Moonlight client, allows to stream games from PC.
* [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.
* [Battery Desync Fix](https://github.com/CTCaer/battery_desync_fix_nx) - Program to reset the battery controller. Do not use unnecessarily!
* [MemToolkitNX](https://discord.com/channels/854839758815363072/1173171845139288114/1324099100202766408) - Benchmark and Memory Tester. The result is highly dependent on CPU overclocking.
* [MemToolkitNX OLD](https://discord.com/channels/854839758815363072/1173171845139288114/1276196700750479480) - Benchmark and Memory Tester. The result is highly dependent on CPU overclocking. The old version, which many people like better than the new one.
* [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](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.
* [BT Audio](https://github.com/masagrator/BT_Audio-ovl) - An overlay that allows you to quickly disconnect/connect to a bluetooth headset.
* [Fizeau](https://github.com/averne/Fizeau) - Module for changing the screen color profile.
* [sys-tune](https://github.com/HookedBehemoth/sys-tune) - Overlay music player, works in background.
* 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.
## License
@ -63,22 +100,28 @@ Listed below are the licenses of those programs that have been modified specific
* [Atmosphere](https://github.com/Atmosphere-NX/Atmosphere)
* [Status-Monitor-Overlay](https://github.com/masagrator/Status-Monitor-Overlay)
[CC-BY-NC-4.0 License](https://github.com/ppkantorski/Ultrahand-Overlay/blob/main/LICENSE)
* [Ultrahand-Overlay](https://github.com/ppkantorski/Ultrahand-Overlay)
[MIT License](https://github.com/masagrator/FPSLocker/blob/main/LICENSE)
* [FPSLocker](https://github.com/masagrator/FPSLocker)
## Credits
* Cooler3D
* Efosamark
* rashevskyv/хНЯ
* snupt/Catcher In The Grain Field
* ppkantorski/b0rd2dEAth
* hanai3Bi/Meha
* 4PDA
* B3711
* ppkantorski
* Meha
* duckbill
* snupt
#### And also - a special thanks to the administration and members of Ultra Group
## Support
If you liked the results of my labors and you wanted to thank me - I would be very grateful.
You can do this via @wallet telegram, on my @redraz account
I am from Russia, so there are no other convenient ways to donate me =(
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: UQA9My51bkGZHbYhbdRZfp6B60N7VJfsnKl0sakgw9YhAPct
BTC: 18K6NN8NEavvMJL5Do3VTyJbL8NeZPHo93
USDT TRC20: TUZ5szAmRsnvBuC4rFB8RaAoCbN6Ucy4sL
```

View File

@ -14,10 +14,6 @@ X01003A400C3DA000
;1.1_46609 - 1.1.4_60709 crash on first loading
010075D00E8BA000
;Grandia Collection
;Only launcher is 64-bit, games are 32-bit
0100E0600BBC8000
;Immortals Fenyx Rising
;1.0.3, 1.3.4 crash
01004A600EC0A000
@ -28,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
@ -53,4 +49,12 @@ X0100964012528000
;Donkey Kong Country: Tropical Freeze
;Crash at second level
X0100C1F0051B6000
X0100C1F0051B6000
;Death Road to Canada
;1.0.8 crash
X0100423009358000
;Splatoon 3
;10.0.0 upwards crashes after online match
X0100C2500FC20000

View File

@ -1,153 +0,0 @@
# Horizon Chase 2 1.5.2
# BID: 3CE4DB955A23026E
unsafeCheck: true
15FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6F8C398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: write
address: [MAIN, 0x77878A8, 0]
value_type: float
value: [15, 15]
20FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6F8C398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: write
address: [MAIN, 0x77878A8, 0]
value_type: float
value: [20, 20]
25FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6F8C398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: write
address: [MAIN, 0x77878A8, 0]
value_type: float
value: [25, 25]
-
type: block
what: timing
30FPS:
# r.VSync (default value is 1)
-
type: write
address: [MAIN, 0x6F8C398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS (default value is 30)
-
type: write
address: [MAIN, 0x77878A8, 0]
value_type: float
value: [0, 0]
35FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6F8C398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: write
address: [MAIN, 0x77878A8, 0]
value_type: float
value: [35, 35]
-
type: block
what: timing
40FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6F8C398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: write
address: [MAIN, 0x77878A8, 0]
value_type: float
value: [40, 40]
-
type: block
what: timing
45FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6F8C398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: write
address: [MAIN, 0x77878A8, 0]
value_type: float
value: [45, 45]
-
type: block
what: timing
50FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6F8C398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: write
address: [MAIN, 0x77878A8, 0]
value_type: float
value: [50, 50]
-
type: block
what: timing
55FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6F8C398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: write
address: [MAIN, 0x77878A8, 0]
value_type: float
value: [55, 55]
-
type: block
what: timing
60FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6F8C398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: write
address: [MAIN, 0x77878A8, 0]
value_type: float
value: [0, 0]

View File

@ -1,153 +0,0 @@
# Horizon Chase 2 1.5.4
# BID: 95B2E97C5D16385A
unsafeCheck: true
15FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6F8D398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: write
address: [MAIN, 0x77888A8, 0]
value_type: float
value: [15, 15]
20FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6F8D398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: write
address: [MAIN, 0x77888A8, 0]
value_type: float
value: [20, 20]
25FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6F8D398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: write
address: [MAIN, 0x77888A8, 0]
value_type: float
value: [25, 25]
-
type: block
what: timing
30FPS:
# r.VSync (default value is 1)
-
type: write
address: [MAIN, 0x6F8D398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS (default value is 30)
-
type: write
address: [MAIN, 0x77888A8, 0]
value_type: float
value: [0, 0]
35FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6F8D398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: write
address: [MAIN, 0x77888A8, 0]
value_type: float
value: [35, 35]
-
type: block
what: timing
40FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6F8D398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: write
address: [MAIN, 0x77888A8, 0]
value_type: float
value: [40, 40]
-
type: block
what: timing
45FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6F8D398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: write
address: [MAIN, 0x77888A8, 0]
value_type: float
value: [45, 45]
-
type: block
what: timing
50FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6F8D398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: write
address: [MAIN, 0x77888A8, 0]
value_type: float
value: [50, 50]
-
type: block
what: timing
55FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6F8D398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: write
address: [MAIN, 0x77888A8, 0]
value_type: float
value: [55, 55]
-
type: block
what: timing
60FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6F8D398, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: write
address: [MAIN, 0x77888A8, 0]
value_type: float
value: [0, 0]

View File

@ -0,0 +1,27 @@
# Horizon Chase 2 1.6.6
# BID: D60A7F43A98034BE
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x833A760, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8B27A30, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8B02598, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# Horizon Chase 2 1.6.9
# BID: E13F632FC2A66EEB
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x8349850, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8B36A30, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8B11598, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# Horizon Chase 2 1.6.3
# BID: F80EEC237D0963EE
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x8325D00, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8B13A30, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.DynamicRes.FrameTimeBudget = 0.978 * (1000/FPS)
-
type: evaluate_write
address: [MAIN, 0x8AEE598, 0]
value_type: float
value: ["TruncDec(0.978 * FRAMETIME_TARGET, 1)", "TruncDec(0.978 * FRAMETIME_TARGET, 1)"]
-
type: block
what: timing

View File

@ -3,73 +3,10 @@
unsafeCheck: true
15FPS:
ALL_FPS:
# OptimalFrameDuration_ms = 0.96 * (1000/FPS)
-
type: write
type: evaluate_write
address: [MAIN, 0x2153CFC]
value_type: float
value: 64
20FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x2153CFC]
value_type: float
value: 48
25FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x2153CFC]
value_type: float
value: 38.4
30FPS:
# OptimalFrameDuration_ms (default value)
-
type: write
address: [MAIN, 0x2153CFC]
value_type: float
value: 32
35FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x2153CFC]
value_type: float
value: 27.42
40FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x2153CFC]
value_type: float
value: 24
45FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x2153CFC]
value_type: float
value: 21.333333
50FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x2153CFC]
value_type: float
value: 19.2
55FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x2153CFC]
value_type: float
value: 17.454545
60FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x2153CFC]
value_type: float
value: 16
value: "0.96 * FRAMETIME_TARGET"

View File

@ -1,99 +1,16 @@
# Rad Rogers: Radical Edition 1.2.0
# Rad Rodgers: Radical Edition 1.2.0
# BID: 78885A1CA987C04C
unsafeCheck: true
15FPS:
ALL_FPS:
# t.MaxFPS
-
type: write
type: evaluate_write
address: [MAIN, 0x579C208, 0]
value_type: float
value: [15, 15]
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing
20FPS:
# t.MaxFPS
-
type: write
address: [MAIN, 0x579C208, 0]
value_type: float
value: [20, 20]
-
type: block
what: timing
25FPS:
# t.MaxFPS
-
type: write
address: [MAIN, 0x579C208, 0]
value_type: float
value: [25, 25]
-
type: block
what: timing
30FPS:
# t.MaxFPS (default value)
-
type: write
address: [MAIN, 0x579C208, 0]
value_type: float
value: [0, 0]
35FPS:
# t.MaxFPS
-
type: write
address: [MAIN, 0x579C208, 0]
value_type: float
value: [35, 35]
-
type: block
what: timing
40FPS:
# t.MaxFPS
-
type: write
address: [MAIN, 0x579C208, 0]
value_type: float
value: [40, 40]
-
type: block
what: timing
45FPS:
# t.MaxFPS
-
type: write
address: [MAIN, 0x579C208, 0]
value_type: float
value: [45, 45]
-
type: block
what: timing
50FPS:
# t.MaxFPS
-
type: write
address: [MAIN, 0x579C208, 0]
value_type: float
value: [50, 50]
-
type: block
what: timing
55FPS:
# t.MaxFPS
-
type: write
address: [MAIN, 0x579C208, 0]
value_type: float
value: [55, 55]
-
type: block
what: timing
60FPS:
# t.MaxFPS (100 to ensure than NVN itself will handle 60 FPS while not enabling SmoothedFrameRateRange)
-
type: write
address: [MAIN, 0x579C208, 0]
value_type: float
value: [100, 100]

View File

@ -0,0 +1,27 @@
# Gori: Cuddly Carnage 1.0.6
# BID: 1146A5AA87A93969
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x6A02E68, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x6A3C938, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x6245AA8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# Gori: Cuddly Carnage 1.0.7
# BID: A21FFE97D09DCE4E
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x6A02E68, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x6A3C938, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x6245AA8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# Gori: Cuddly Carnage 1.0.5
# BID: EEE598377C0A5966
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x69FDE68, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x6A37938, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x6240AA8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,33 @@
# Jujutsu Kaisen Cursed Clash US 1.3.0
# BID: 2E7487767D0CA0EE
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) rounded to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x81A5A48, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x81E8F50, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x752A248, 0]
value_type: uint32
value: [0, 0]
# Disable bUseFixedFrameRate
-
type: write
address: [MAIN, 0x81E87A8, 0x9C4]
value_type: uint32
value: 7
-
type: block
what: timing

View File

@ -0,0 +1,33 @@
# Jujutsu Kaisen Cursed Clash US 1.2.0
# BID: 2F33996FD9C81253
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) rounded to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x8069A48, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x80ACF50, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x73EE7C8, 0]
value_type: uint32
value: [0, 0]
# Disable bUseFixedFrameRate
-
type: write
address: [MAIN, 0x80AC7A8, 0x9C4]
value_type: uint32
value: 7
-
type: block
what: timing

View File

@ -0,0 +1,33 @@
# Jujutsu Kaisen Cursed Clash US 1.4.0
# BID: 7C724F497564C027
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8458A48, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x849BF50, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x77DD548, 0]
value_type: uint32
value: [0, 0]
# Disable bUseFixedFrameRate
-
type: write
address: [MAIN, 0x849B7A8, 0x9C4]
value_type: uint32
value: 7
-
type: block
what: timing

View File

@ -0,0 +1,33 @@
# Jujutsu Kaisen Cursed Clash US 1.1.0
# BID: 95761555A341B190
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) rounded to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x8036A48, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8079F50, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x73BB0C8, 0]
value_type: uint32
value: [0, 0]
# Disable bUseFixedFrameRate
-
type: write
address: [MAIN, 0x80797A8, 0x9C4]
value_type: uint32
value: 7
-
type: block
what: timing

View File

@ -3,73 +3,10 @@
unsafeCheck: true
15FPS:
ALL_FPS:
# fixedDeltaTime
-
type: write
type: evaluate_write
address: [MAIN, 0x4B3E500, 0x48]
value_type: float
value: 0.0333333333
20FPS:
# fixedDeltaTime
-
type: write
address: [MAIN, 0x4B3E500, 0x48]
value_type: float
value: 0.0333333333
25FPS:
# fixedDeltaTime
-
type: write
address: [MAIN, 0x4B3E500, 0x48]
value_type: float
value: 0.0333333333
30FPS:
# fixedDeltaTime
-
type: write
address: [MAIN, 0x4B3E500, 0x48]
value_type: float
value: 0.0333333333
35FPS:
# fixedDeltaTime
-
type: write
address: [MAIN, 0x4B3E500, 0x48]
value_type: float
value: 0.0166666666
40FPS:
# fixedDeltaTime
-
type: write
address: [MAIN, 0x4B3E500, 0x48]
value_type: float
value: 0.0166666666
45FPS:
# fixedDeltaTime
-
type: write
address: [MAIN, 0x4B3E500, 0x48]
value_type: float
value: 0.0166666666
50FPS:
# fixedDeltaTime
-
type: write
address: [MAIN, 0x4B3E500, 0x48]
value_type: float
value: 0.0166666666
55FPS:
# fixedDeltaTime
-
type: write
address: [MAIN, 0x4B3E500, 0x48]
value_type: float
value: 0.0166666666
60FPS:
# fixedDeltaTime
-
type: write
address: [MAIN, 0x4B3E500, 0x48]
value_type: float
value: 0.0166666666
value: "FRAMETIME_TARGET / 1000"

View File

@ -79,70 +79,7 @@ MASTER_WRITE:
main_offset: 0x5F8C
value_type: uint32
value: 0xD2A032A2
15FPS:
# dummy
-
type: write
address: [MAIN, 0x188CF00]
value_type: uint8
value: 0
20FPS:
# dummy
-
type: write
address: [MAIN, 0x188CF00]
value_type: uint8
value: 0
25FPS:
# dummy
-
type: write
address: [MAIN, 0x188CF00]
value_type: uint8
value: 0
30FPS:
# dummy
-
type: write
address: [MAIN, 0x188CF00]
value_type: uint8
value: 0
35FPS:
# dummy
-
type: write
address: [MAIN, 0x188CF00]
value_type: uint8
value: 0
40FPS:
# dummy
-
type: write
address: [MAIN, 0x188CF00]
value_type: uint8
value: 0
45FPS:
# dummy
-
type: write
address: [MAIN, 0x188CF00]
value_type: uint8
value: 0
50FPS:
# dummy
-
type: write
address: [MAIN, 0x188CF00]
value_type: uint8
value: 0
55FPS:
# dummy
-
type: write
address: [MAIN, 0x188CF00]
value_type: uint8
value: 0
60FPS:
ALL_FPS:
# dummy
-
type: write

View File

@ -3,105 +3,20 @@
unsafeCheck: true
15FPS:
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: write
type: evaluate_write
address: [MAIN, 0x69B8C78, 0]
value_type: float
value: [66.66, 66.66]
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: write
type: evaluate_write
address: [MAIN, 0x69AEE10, 0]
value_type: float
value: [15, 15]
# t.VSync (default value) - game really struggles to get 60 FPS with this turned on
-
type: write
address: [MAIN, 0x6220790, 0]
value_type: int32
value: [1, 1]
-
type: block
what: timing
20FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x69B8C78, 0]
value_type: float
value: [50, 50]
# t.MaxFPS
-
type: write
address: [MAIN, 0x69AEE10, 0]
value_type: float
value: [20, 20]
# t.VSync (default value)
-
type: write
address: [MAIN, 0x6220790, 0]
value_type: int32
value: [1, 1]
-
type: block
what: timing
25FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x69B8C78, 0]
value_type: float
value: [40, 40]
# t.MaxFPS
-
type: write
address: [MAIN, 0x69AEE10, 0]
value_type: float
value: [25, 25]
# t.VSync (default value)
-
type: write
address: [MAIN, 0x6220790, 0]
value_type: int32
value: [1, 1]
-
type: block
what: timing
30FPS:
# r.DynamicRes.FrameTimeBudget (default value)
-
type: write
address: [MAIN, 0x69B8C78, 0]
value_type: float
value: [33.33, 33.33]
# t.MaxFPS (default value)
-
type: write
address: [MAIN, 0x69AEE10, 0]
value_type: float
value: [0, 0]
# t.VSync (default value)
-
type: write
address: [MAIN, 0x6220790, 0]
value_type: int32
value: [1, 1]
35FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x69B8C78, 0]
value_type: float
value: [28.51, 28.51]
# t.MaxFPS
-
type: write
address: [MAIN, 0x69AEE10, 0]
value_type: float
value: [35, 35]
# t.VSync
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x6220790, 0]
@ -110,110 +25,3 @@ unsafeCheck: true
-
type: block
what: timing
40FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x69B8C78, 0]
value_type: float
value: [25, 25]
# t.MaxFPS
-
type: write
address: [MAIN, 0x69AEE10, 0]
value_type: float
value: [40, 40]
# t.VSync
-
type: write
address: [MAIN, 0x6220790, 0]
value_type: int32
value: [0, 0]
-
type: block
what: timing
45FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x69B8C78, 0]
value_type: float
value: [22.22, 22.22]
# t.MaxFPS
-
type: write
address: [MAIN, 0x69AEE10, 0]
value_type: float
value: [45, 45]
# t.VSync
-
type: write
address: [MAIN, 0x6220790, 0]
value_type: int32
value: [0, 0]
-
type: block
what: timing
50FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x69B8C78, 0]
value_type: float
value: [20, 20]
# t.MaxFPS
-
type: write
address: [MAIN, 0x69AEE10, 0]
value_type: float
value: [50, 50]
# t.VSync
-
type: write
address: [MAIN, 0x6220790, 0]
value_type: int32
value: [0, 0]
-
type: block
what: timing
55FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x69B8C78, 0]
value_type: float
value: [18.18, 18.18]
# t.MaxFPS
-
type: write
address: [MAIN, 0x69AEE10, 0]
value_type: float
value: [55, 55]
# t.VSync
-
type: write
address: [MAIN, 0x6220790, 0]
value_type: int32
value: [0, 0]
-
type: block
what: timing
60FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x69B8C78, 0]
value_type: float
value: [16.66, 16.66]
# t.MaxFPS
-
type: write
address: [MAIN, 0x69AEE10, 0]
value_type: float
value: [60, 60]
# t.VSync
-
type: write
address: [MAIN, 0x6220790, 0]
value_type: int32
value: [0, 0]

View File

@ -3,73 +3,10 @@
unsafeCheck: true
15FPS:
ALL_FPS:
# OptimalFrameDuration_ms = (1000/FPS) - (0.07 * (1000/30)
-
type: write
type: evaluate_write
address: [MAIN, 0x2D5A83C]
value_type: float
value: 64.333333
20FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x2D5A83C]
value_type: float
value: 47.666666
25FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x2D5A83C]
value_type: float
value: 37.666666
30FPS:
# OptimalFrameDuration_ms (default value)
-
type: write
address: [MAIN, 0x2D5A83C]
value_type: float
value: 31
35FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x2D5A83C]
value_type: float
value: 26.238095
40FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x2D5A83C]
value_type: float
value: 22.666666
45FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x2D5A83C]
value_type: float
value: 19.888888
50FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x2D5A83C]
value_type: float
value: 17.666666
55FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x2D5A83C]
value_type: float
value: 15.848484
60FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x2D5A83C]
value_type: float
value: 14.333333
value: "FRAMETIME_TARGET - (0.07 * (1000/30))"

View File

@ -0,0 +1,22 @@
# Gal*Gun Returns 1.0.4
# BID: 7E65E5BC3564BE46
# Buffers are hardcoded into fixed size class, so it's hard to get triple buffer
unsafeCheck: true
ALL_FPS:
# FPS Target + FPS Lock
-
type: evaluate_write
address: [MAIN, 0x16CE8A8, 0x20]
value_type: float
value: "60 / FPS_TARGET"
# Lipsync fix
-
type: evaluate_write
address: [MAIN, 0x1BA0A1C]
value_type: uint32
value: FPS_TARGET
-
type: block
what: timing

View File

@ -1,22 +1,22 @@
# TRANSFORMERS: EARTHSPARK - Expedition 1.0.5
# BID: F87BEAF2C5CE13E3
# Game is using double buffer, everything is hardcoded
# Game is using double frontbuffer and single backbuffer, everything is hardcoded
unsafeCheck: true
15FPS:
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: write
type: evaluate_write
address: [MAIN, 0x6B9BDD8, 0]
value_type: float
value: [66.66, 66.66]
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: write
type: evaluate_write
address: [MAIN, 0x6BD58A8, 0]
value_type: float
value: [15, 15]
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
@ -26,195 +26,3 @@ unsafeCheck: true
-
type: block
what: timing
20FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B9BDD8, 0]
value_type: float
value: [50, 50]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6BD58A8, 0]
value_type: float
value: [20, 20]
# r.VSync
-
type: write
address: [MAIN, 0x63DCAE8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
25FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B9BDD8, 0]
value_type: float
value: [40, 40]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6BD58A8, 0]
value_type: float
value: [25, 25]
# r.VSync
-
type: write
address: [MAIN, 0x63DCAE8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
30FPS:
# r.DynamicRes.FrameTimeBudget (default value)
-
type: write
address: [MAIN, 0x6B9BDD8, 0]
value_type: float
value: [33.33, 33.33]
# t.MaxFPS (default value is 30)
-
type: write
address: [MAIN, 0x6BD58A8, 0]
value_type: float
value: [0, 0]
# r.VSync (default is 1)
-
type: write
address: [MAIN, 0x63DCAE8, 0]
value_type: uint32
value: [0, 0]
35FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B9BDD8, 0]
value_type: float
value: [28.51, 28.51]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6BD58A8, 0]
value_type: float
value: [35, 35]
# r.VSync
-
type: write
address: [MAIN, 0x63DCAE8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
40FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B9BDD8, 0]
value_type: float
value: [25, 25]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6BD58A8, 0]
value_type: float
value: [40, 40]
# r.VSync
-
type: write
address: [MAIN, 0x63DCAE8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
45FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B9BDD8, 0]
value_type: float
value: [22.22, 22.22]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6BD58A8, 0]
value_type: float
value: [45, 45]
# r.VSync
-
type: write
address: [MAIN, 0x63DCAE8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
50FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B9BDD8, 0]
value_type: float
value: [20, 20]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6BD58A8, 0]
value_type: float
value: [50, 50]
# r.VSync
-
type: write
address: [MAIN, 0x63DCAE8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
55FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B9BDD8, 0]
value_type: float
value: [18.18, 18.18]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6BD58A8, 0]
value_type: float
value: [55, 55]
# r.VSync
-
type: write
address: [MAIN, 0x63DCAE8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
60FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B9BDD8, 0]
value_type: float
value: [16.66, 16.66]
# t.MaxFPS (default value)
-
type: write
address: [MAIN, 0x6BD58A8, 0]
value_type: float
value: [0, 0]
# r.VSync
-
type: write
address: [MAIN, 0x63DCAE8, 0]
value_type: uint32
value: [0, 0]

View File

@ -3,73 +3,10 @@
unsafeCheck: true
15FPS:
# Dynamic Resolution frame time target = (32.3/(1000/30)) * (1000/FPS)
-
type: write
address: [MAIN, 0x2D7A974]
value_type: float
value: 64.6
20FPS:
ALL_FPS:
# Dynamic Resolution frame time target
-
type: write
type: evaluate_write
address: [MAIN, 0x2D7A974]
value_type: float
value: 48.45
25FPS:
# Dynamic Resolution frame time target
-
type: write
address: [MAIN, 0x2D7A974]
value_type: float
value: 38.76
30FPS:
# Dynamic Resolution frame time target (default value)
-
type: write
address: [MAIN, 0x2D7A974]
value_type: float
value: 32.3
35FPS:
# Dynamic Resolution frame time target
-
type: write
address: [MAIN, 0x2D7A974]
value_type: float
value: 27.68
40FPS:
# Dynamic Resolution frame time target
-
type: write
address: [MAIN, 0x2D7A974]
value_type: float
value: 24.225
45FPS:
# Dynamic Resolution frame time target
-
type: write
address: [MAIN, 0x2D7A974]
value_type: float
value: 21.53
50FPS:
# Dynamic Resolution frame time target
-
type: write
address: [MAIN, 0x2D7A974]
value_type: float
value: 19.38
55FPS:
# Dynamic Resolution frame time target
-
type: write
address: [MAIN, 0x2D7A974]
value_type: float
value: 17.61
60FPS:
# Dynamic Resolution frame time target
-
type: write
address: [MAIN, 0x2D7A974]
value_type: float
value: 16.15
value: "0.969 * FRAMETIME_TARGET"

View File

@ -0,0 +1,36 @@
# Tiebreak+: Official Game of the ATP and WTA 1.1.0
# BID: 2A5244CCB17B44AC
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: 0x1A81E6C
value_type: uint32
value: 3
# Redirect Dynamic Resolution target reading to MAIN + 0x30C2F00
# REF: 0C 9A 88 52 0C 6B A7 72
-
type: bytes
main_offset: 0x147AA94
value_type: uint32
value:
- 0x9000E248 # ADRP X8, 0x30C2000
- 0xBD4F0103 # LDR S3, [X8, 0xF00]
- 0xD503201F # NOP
## Default values
-
type: bytes
main_offset: 0x30C2F00
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, 0x30C2F00]
value_type: float
value: "0.8 / FPS_TARGET"

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,30 @@
# S.T.A.L.K.E.R.: Call of Prypiat 1.0.1
# BID: 823FE359B4A99A4D
unsafeCheck: true
ALL_FPS:
# psLoadedFrameLimitFps
-
type: evaluate_write
address: [MAIN, 0x17DD77C]
value_type: float
value: FPS_LOCK_TARGET
# psCurrentFrameLimitFps
-
type: evaluate_write
address: [MAIN, 0x17FA8A0]
value_type: float
value: FPS_LOCK_TARGET
# psCurrentFrameLimitMs
-
type: evaluate_write
address: [MAIN, 0x1A6490C]
value_type: float
value: "1000 / FPS_LOCK_TARGET"
# ResolutionInfo::sDynresGPUBudgetMs
-
type: evaluate_write
address: [MAIN, 0x17DD758]
value_type: float
value: "0.99 * FRAMETIME_TARGET"

View File

@ -0,0 +1,30 @@
# S.T.A.L.K.E.R.: Call of Prypiat 1.0.3
# BID: AD4CBC4878008E1E
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: "FRAMETIME_TARGET - (1/30)"

View File

@ -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"

View File

@ -0,0 +1,27 @@
# SWORD ART ONLINE Fractured Daydream JAP 1.2.2
# BID: 012A8C2C413E79B8
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8F57748, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8F92210, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x8791EC8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# SWORD ART ONLINE Fractured Daydream JAP 1.2.1
# BID: 26C1E658E9B5B612
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8F41748, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8F7C210, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x877BEC8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# SWORD ART ONLINE Fractured Daydream JAP 1.1.3
# BID: 3889588A60E1F399
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8EA4728, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8EDF1F0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x86DEEC8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# SWORD ART ONLINE Fractured Daydream 1.1.1
# BID: 3AAA28C9CB8367B9
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) rounded to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x8E90728, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8ECB1F0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x86CAEC8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# SWORD ART ONLINE Fractured Daydream JAP 1.2.0
# BID: 46094C03E2EC668B
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8F3C748, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8F77210, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x8776EC8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# SWORD ART ONLINE Fractured Daydream JAP 1.1.2
# BID: 520620FBA0B196A3
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8E95728, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8ED01F0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x86CFEC8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# SWORD ART ONLINE Fractured Daydream JAP 1.3.0
# BID: C2F2C4B700B30598
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8FD6748, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x9011290, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x8810F08, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,18 @@
# The Elder Scrolls V: Skyrim 1.1.392.3925134
# BID: 4F7995092FAA5DC0
unsafeCheck: true
ALL_FPS:
# Dynamic Resolution Frame Time Min = 0.9 * (1000/FPS)
-
type: evaluate_write
address: [MAIN, 0x3356FC8]
value_type: float
value: "0.9 * FRAMETIME_TARGET"
# Dynamic Resolution Frame Time Max = 0.99 * (1000/FPS)
-
type: evaluate_write
address: [MAIN, 0x3356FB0]
value_type: float
value: "0.99 * FRAMETIME_TARGET"

View File

@ -1,135 +0,0 @@
# The Elder Scrolls V: Skyrim 1.1.177.3285177
# BID: 771BDFB65F8D0AF7
unsafeCheck: true
15FPS:
# Dynamic Resolution Frame Time Min = 0.9 * (1000/FPS)
-
type: write
address: [MAIN, 0x33178C8]
value_type: float
value: 60
# Dynamic Resolution Frame Time Max = 0.99 * (1000/FPS)
-
type: write
address: [MAIN, 0x33178B0]
value_type: float
value: 66
20FPS:
# Dynamic Resolution Frame Time Min
-
type: write
address: [MAIN, 0x33178C8]
value_type: float
value: 45
# Dynamic Resolution Frame Time Max
-
type: write
address: [MAIN, 0x33178B0]
value_type: float
value: 49.5
25FPS:
# Dynamic Resolution Frame Time Min
-
type: write
address: [MAIN, 0x33178C8]
value_type: float
value: 36
# Dynamic Resolution Frame Time Max
-
type: write
address: [MAIN, 0x33178B0]
value_type: float
value: 39.6
30FPS:
# Dynamic Resolution Frame Time Min (default value)
-
type: write
address: [MAIN, 0x33178C8]
value_type: float
value: 30
# Dynamic Resolution Frame Time Max (default value)
-
type: write
address: [MAIN, 0x33178B0]
value_type: float
value: 33
35FPS:
# Dynamic Resolution Frame Time Min
-
type: write
address: [MAIN, 0x33178C8]
value_type: float
value: 25.71
# Dynamic Resolution Frame Time Max
-
type: write
address: [MAIN, 0x33178B0]
value_type: float
value: 28.28
40FPS:
# Dynamic Resolution Frame Time Min
-
type: write
address: [MAIN, 0x33178C8]
value_type: float
value: 22.5
# Dynamic Resolution Frame Time Max
-
type: write
address: [MAIN, 0x33178B0]
value_type: float
value: 24.75
45FPS:
# Dynamic Resolution Frame Time Min
-
type: write
address: [MAIN, 0x33178C8]
value_type: float
value: 20
# Dynamic Resolution Frame Time Max
-
type: write
address: [MAIN, 0x33178B0]
value_type: float
value: 22
50FPS:
# Dynamic Resolution Frame Time Min
-
type: write
address: [MAIN, 0x33178C8]
value_type: float
value: 18
# Dynamic Resolution Frame Time Max
-
type: write
address: [MAIN, 0x33178B0]
value_type: float
value: 19.8
55FPS:
# Dynamic Resolution Frame Time Min
-
type: write
address: [MAIN, 0x33178C8]
value_type: float
value: 16.36
# Dynamic Resolution Frame Time Max
-
type: write
address: [MAIN, 0x33178B0]
value_type: float
value: 18
60FPS:
# Dynamic Resolution Frame Time Min
-
type: write
address: [MAIN, 0x33178C8]
value_type: float
value: 15
# Dynamic Resolution Frame Time Max
-
type: write
address: [MAIN, 0x33178B0]
value_type: float
value: 16.5

View File

@ -0,0 +1,27 @@
# Breathedge 1.0.2
# BID: B26DE1669B729335
unsafeCheck: false
ALL_FPS:
# Disable bUseFixedFrameRate
-
type: write
address: [MAIN, 0x55CB668, 0x7F0]
value_type: uint32
value: 7
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x55CBDE0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x4E6A7B8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -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]

View File

@ -0,0 +1,24 @@
# Chernobylite 1.2
# BID: 657F40EEBD955F31
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]

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

@ -0,0 +1,12 @@
# DreadOut Remastered Collection 1.0.2
# BID: 725731C74E4CA6A9
unsafeCheck: false
ALL_FPS:
# REF: DynamicResolution::.cctor
-
type: evaluate_write
address: [MAIN, 0x3E01640, 0, 0xB8, 8]
value_type: double
value: [FPS_TARGET, FRAMETIME_TARGET]

View File

@ -0,0 +1,27 @@
# The Witcher 3: Wild Hund - Complete Edition 4.04b
# BID: 4BC4A8A814FD46A4
unsafeCheck: true
ALL_FPS:
# DRGameTargetFrameTimeInMs
-
type: evaluate_write
address: [MAIN, 0x41312B4]
value_type: float
value: "0.945 * FRAMETIME_TARGET"
# DRCinematicTargetFrameTimeInMs
-
type: evaluate_write
address: [MAIN, 0x41312E4]
value_type: float
value: "0.945 * FRAMETIME_TARGET"
# LimitFPS
-
type: evaluate_write
address: [MAIN, 0x411DCFC]
value_type: int32
value: FPS_LOCK_TARGET
-
type: block
what: timing

View File

@ -1,224 +0,0 @@
# The Witcher 3 3.7
# BID: 4FFB62F1CD9E17F8
unsafeCheck: false
15FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 63
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 63
# LimitFPS
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 15
-
type: block
what: timing
20FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 47.25
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 47.25
# LimitFPS
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 20
-
type: block
what: timing
25FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 37.8
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 37.8
# LimitFPS
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 25
-
type: block
what: timing
30FPS:
# DRGameTargetFrameTimeInMs (original value)
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 31.5
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 31.5
# LimitFPS (original value)
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 60
# For 35-60 FPS check if cutscene is played. If it is, set 30 FPS lock. If not, disable it.
35FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 27
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 27
# LimitFPS
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 35
-
type: block
what: timing
40FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 23.625
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 23.625
# LimitFPS
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 40
-
type: block
what: timing
45FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 21
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 21
# LimitFPS
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 45
-
type: block
what: timing
50FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 18.9
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 18.9
# LimitFPS
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 50
-
type: block
what: timing
55FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 17.1818181818
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 17.1818181818
# LimitFPS
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 55
-
type: block
what: timing
60FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 15.75
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 15.75
# LimitFPS
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 60
-
type: block
what: timing

View File

@ -1,224 +0,0 @@
# The Witcher 3: Wild Hund - Complete Edition 4.04b
# BID: D27FD8A515077F34
unsafeCheck: true
15FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 63
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 63
# LimitFPS
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 15
-
type: block
what: timing
20FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 47.25
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 47.25
# LimitFPS
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 20
-
type: block
what: timing
25FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 37.8
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 37.8
# LimitFPS
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 25
-
type: block
what: timing
30FPS:
# DRGameTargetFrameTimeInMs (original value)
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 31.5
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 31.5
# LimitFPS (original value)
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 60
# For 35-60 FPS check if cutscene is played. If it is, set 30 FPS lock. If not, disable it.
35FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 27
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 27
# LimitFPS
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 35
-
type: block
what: timing
40FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 23.625
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 23.625
# LimitFPS
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 40
-
type: block
what: timing
45FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 21
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 21
# LimitFPS
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 45
-
type: block
what: timing
50FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 18.9
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 18.9
# LimitFPS
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 50
-
type: block
what: timing
55FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 17.1818181818
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 17.1818181818
# LimitFPS
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 55
-
type: block
what: timing
60FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 15.75
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 15.75
# LimitFPS
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 60
-
type: block
what: timing

View File

@ -3,157 +3,19 @@
unsafeCheck: true
15FPS:
ALL_FPS:
# r.DynResTargetFPS
-
type: write
type: evaluate_write
address: [MAIN, 0x71A31F8, 0]
value_type: int32
value: [15, 15]
value: [FPS_TARGET, FPS_TARGET]
# t.MaxFPS
-
type: write
type: evaluate_write
address: [MAIN, 0x71B2BD0, 0]
value_type: float
value: [15, 15]
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing
20FPS:
# r.DynResTargetFPS
-
type: write
address: [MAIN, 0x71A31F8, 0]
value_type: int32
value: [20, 20]
# t.MaxFPS
-
type: write
address: [MAIN, 0x71B2BD0, 0]
value_type: float
value: [20, 20]
-
type: block
what: timing
25FPS:
# r.DynResTargetFPS
-
type: write
address: [MAIN, 0x71A31F8, 0]
value_type: int32
value: [25, 25]
# t.MaxFPS
-
type: write
address: [MAIN, 0x71B2BD0, 0]
value_type: float
value: [25, 25]
-
type: block
what: timing
30FPS:
# r.DynResTargetFPS (default value)
-
type: write
address: [MAIN, 0x71A31F8, 0]
value_type: int32
value: [30, 30]
# t.MaxFPS (default value)
-
type: write
address: [MAIN, 0x71B2BD0, 0]
value_type: float
value: [0, 0]
35FPS:
# r.DynResTargetFPS
-
type: write
address: [MAIN, 0x71A31F8, 0]
value_type: int32
value: [35, 35]
# t.MaxFPS
-
type: write
address: [MAIN, 0x71B2BD0, 0]
value_type: float
value: [35, 35]
-
type: block
what: timing
40FPS:
# r.DynResTargetFPS
-
type: write
address: [MAIN, 0x71A31F8, 0]
value_type: int32
value: [40, 40]
# t.MaxFPS
-
type: write
address: [MAIN, 0x71B2BD0, 0]
value_type: float
value: [40, 40]
-
type: block
what: timing
45FPS:
# r.DynResTargetFPS
-
type: write
address: [MAIN, 0x71A31F8, 0]
value_type: int32
value: [45, 45]
# t.MaxFPS
-
type: write
address: [MAIN, 0x71B2BD0, 0]
value_type: float
value: [45, 45]
-
type: block
what: timing
50FPS:
# r.DynResTargetFPS
-
type: write
address: [MAIN, 0x71A31F8, 0]
value_type: int32
value: [50, 50]
# t.MaxFPS
-
type: write
address: [MAIN, 0x71B2BD0, 0]
value_type: float
value: [50, 50]
-
type: block
what: timing
55FPS:
# r.DynResTargetFPS
-
type: write
address: [MAIN, 0x71A31F8, 0]
value_type: int32
value: [55, 55]
# t.MaxFPS
-
type: write
address: [MAIN, 0x71B2BD0, 0]
value_type: float
value: [55, 55]
-
type: block
what: timing
60FPS:
# r.DynResTargetFPS
-
type: write
address: [MAIN, 0x71A31F8, 0]
value_type: int32
value: [60, 60]
# t.MaxFPS
-
type: write
address: [MAIN, 0x71B2BD0, 0]
value_type: float
value: [0, 0]

View File

@ -3,73 +3,10 @@
unsafeCheck: true
15FPS:
ALL_FPS:
# Dynamic Resolution FPS Target
-
type: write
type: evaluate_write
address: [MAIN, 0x179EF64]
value_type: float
value: 15
20FPS:
# Dynamic Resolution FPS Target
-
type: write
address: [MAIN, 0x179EF64]
value_type: float
value: 20
25FPS:
# Dynamic Resolution FPS Target
-
type: write
address: [MAIN, 0x179EF64]
value_type: float
value: 25
30FPS:
# Dynamic Resolution FPS Target (default value)
-
type: write
address: [MAIN, 0x179EF64]
value_type: float
value: 30
35FPS:
# Dynamic Resolution FPS Target
-
type: write
address: [MAIN, 0x179EF64]
value_type: float
value: 35
40FPS:
# Dynamic Resolution FPS Target
-
type: write
address: [MAIN, 0x179EF64]
value_type: float
value: 40
45FPS:
# Dynamic Resolution FPS Target
-
type: write
address: [MAIN, 0x179EF64]
value_type: float
value: 45
50FPS:
# Dynamic Resolution FPS Target
-
type: write
address: [MAIN, 0x179EF64]
value_type: float
value: 50
55FPS:
# Dynamic Resolution FPS Target
-
type: write
address: [MAIN, 0x179EF64]
value_type: float
value: 55
60FPS:
# Dynamic Resolution FPS Target
-
type: write
address: [MAIN, 0x179EF64]
value_type: float
value: 60
value: FPS_TARGET

View File

@ -0,0 +1,17 @@
# The LEGO NINJAGO Movie Video Game 1.0.3
# BID: 346959B36CD9F14D
unsafeCheck: true
ALL_FPS:
# Block to 30 FPS when prerendered cutscene is played
# REF: LegoCutscenes::s_fmvCutsceneAudioInstance
-
type: compare
compare_address: [MAIN, 0x44C3468]
compare_type: "!="
compare_value_type: uint64
compare_value: 0
address: [MAIN]
value_type: refresh_rate
value: 30

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

@ -0,0 +1,12 @@
# The Forest Quartet 4.0.2
# BID: 47A022F858BA09B1
unsafeCheck: false
ALL_FPS:
# DynamicResolution_TypeInfo
-
type: evaluate_write
address: [MAIN, 0x4B320A0, 0xB8, 0]
value_type: double
value: ["0.96 * FRAMETIME_TARGET", "(0.96 * FRAMETIME_TARGET) - 0.75"]

View File

@ -1,75 +0,0 @@
# The Forest Quartet 4.0.1
# BID: C66F68F53A4A7053
unsafeCheck: false
15FPS:
# DynamicResolution_TypeInfo (MAX = 0.96 * (1000/FPS), MIN = 0.9375 * (1000/FPS)), min range 0.75
-
type: write
address: [MAIN, 0x4A87920, 0xB8, 0]
value_type: double
value: [64, 62.5]
20FPS:
# DynamicResolution_TypeInfo
-
type: write
address: [MAIN, 0x4A87920, 0xB8, 0]
value_type: double
value: [48, 46.875]
25FPS:
# DynamicResolution_TypeInfo
-
type: write
address: [MAIN, 0x4A87920, 0xB8, 0]
value_type: double
value: [38.4, 37.5]
30FPS:
# DynamicResolution_TypeInfo (default values)
-
type: write
address: [MAIN, 0x4A87920, 0xB8, 0]
value_type: double
value: [32, 31.25]
35FPS:
# DynamicResolution_TypeInfo
-
type: write
address: [MAIN, 0x4A87920, 0xB8, 0]
value_type: double
value: [27.43, 26.68]
40FPS:
# DynamicResolution_TypeInfo
-
type: write
address: [MAIN, 0x4A87920, 0xB8, 0]
value_type: double
value: [24, 23.25]
45FPS:
# DynamicResolution_TypeInfo
-
type: write
address: [MAIN, 0x4A87920, 0xB8, 0]
value_type: double
value: [21.33, 20.58]
50FPS:
# DynamicResolution_TypeInfo
-
type: write
address: [MAIN, 0x4A87920, 0xB8, 0]
value_type: double
value: [19.2, 18.45]
55FPS:
# DynamicResolution_TypeInfo
-
type: write
address: [MAIN, 0x4A87920, 0xB8, 0]
value_type: double
value: [17.45, 16.7]
60FPS:
# DynamicResolution_TypeInfo
-
type: write
address: [MAIN, 0x4A87920, 0xB8, 0]
value_type: double
value: [16, 15.25]

View File

@ -3,157 +3,19 @@
unsafeCheck: true
15FPS:
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: write
type: evaluate_write
address: [MAIN, 0x6B461B8, 0]
value_type: float
value: [66.66, 66.66]
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: write
type: evaluate_write
address: [MAIN, 0x6B3C330, 0]
value_type: float
value: [15, 15]
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing
20FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B461B8, 0]
value_type: float
value: [50, 50]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6B3C330, 0]
value_type: float
value: [20, 20]
-
type: block
what: timing
25FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B461B8, 0]
value_type: float
value: [40, 40]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6B3C330, 0]
value_type: float
value: [25, 25]
-
type: block
what: timing
30FPS:
# r.DynamicRes.FrameTimeBudget (default value)
-
type: write
address: [MAIN, 0x6B461B8, 0]
value_type: float
value: [33.33, 33.33]
# t.MaxFPS (default value)
-
type: write
address: [MAIN, 0x6B3C330, 0]
value_type: float
value: [0, 0]
35FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B461B8, 0]
value_type: float
value: [28.51, 28.51]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6B3C330, 0]
value_type: float
value: [35, 35]
-
type: block
what: timing
40FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B461B8, 0]
value_type: float
value: [25, 25]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6B3C330, 0]
value_type: float
value: [40, 40]
-
type: block
what: timing
45FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B461B8, 0]
value_type: float
value: [22.22, 22.22]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6B3C330, 0]
value_type: float
value: [45, 45]
-
type: block
what: timing
50FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B461B8, 0]
value_type: float
value: [20, 20]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6B3C330, 0]
value_type: float
value: [50, 50]
-
type: block
what: timing
55FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B461B8, 0]
value_type: float
value: [18.18, 18.18]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6B3C330, 0]
value_type: float
value: [55, 55]
-
type: block
what: timing
60FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B461B8, 0]
value_type: float
value: [16.66, 16.66]
# t.MaxFPS (default value)
-
type: write
address: [MAIN, 0x6B3C330, 0]
value_type: float
value: [0, 0]

View File

@ -3,337 +3,37 @@
unsafeCheck: false
15FPS:
ALL_FPS:
# r.DynamicRes.MaxGPUTime ((1000/FPS) * 0.93)
-
type: write
type: evaluate_write
address: [MAIN, 0x7E23AF0, 0]
value_type: float
value: [62, 62]
value: ["0.93 * FRAMETIME_TARGET", "0.93 * FRAMETIME_TARGET"]
# r.DynamicRes.MinGPUTime ((1000/FPS) * 0.87)
-
type: write
type: evaluate_write
address: [MAIN, 0x7E23B08, 0]
value_type: float
value: [58, 58]
value: ["0.87 * FRAMETIME_TARGET", "0.87 * FRAMETIME_TARGET"]
# r.DynamicRes.MaxGPUTimeStill ((1000/FPS) * 0.945)
-
type: write
type: evaluate_write
address: [MAIN, 0x7E23B20, 0]
value_type: float
value: [63, 63]
value: ["0.945 * FRAMETIME_TARGET", "0.945 * FRAMETIME_TARGET"]
# r.DynamicRes.MinGPUTimeStill ((1000/FPS) * 0.93)
-
type: write
type: evaluate_write
address: [MAIN, 0x7E23B38, 0]
value_type: float
value: [62, 62]
value: ["0.93 * FRAMETIME_TARGET", "0.93 * FRAMETIME_TARGET"]
# t.MaxFPS
-
type: write
type: evaluate_write
address: [MAIN, 0x7E46698, 0]
value_type: float
value: [15, 15]
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing
20FPS:
# r.DynamicRes.MaxGPUTime
-
type: write
address: [MAIN, 0x7E23AF0, 0]
value_type: float
value: [46.5, 46.5]
# r.DynamicRes.MinGPUTime
-
type: write
address: [MAIN, 0x7E23B08, 0]
value_type: float
value: [43.5, 43.5]
# r.DynamicRes.MaxGPUTimeStill
-
type: write
address: [MAIN, 0x7E23B20, 0]
value_type: float
value: [47.25, 47.25]
# r.DynamicRes.MinGPUTimeStill
-
type: write
address: [MAIN, 0x7E23B38, 0]
value_type: float
value: [46.25, 46.25]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7E46698, 0]
value_type: float
value: [20, 20]
-
type: block
what: timing
25FPS:
# r.DynamicRes.MaxGPUTime
-
type: write
address: [MAIN, 0x7E23AF0, 0]
value_type: float
value: [37.2, 37.2]
# r.DynamicRes.MinGPUTime
-
type: write
address: [MAIN, 0x7E23B08, 0]
value_type: float
value: [34.2, 34.2]
# r.DynamicRes.MaxGPUTimeStill
-
type: write
address: [MAIN, 0x7E23B20, 0]
value_type: float
value: [37.8, 37.8]
# r.DynamicRes.MinGPUTimeStill
-
type: write
address: [MAIN, 0x7E23B38, 0]
value_type: float
value: [37.2, 37.2]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7E46698, 0]
value_type: float
value: [25, 25]
-
type: block
what: timing
30FPS:
# r.DynamicRes.MaxGPUTime (default value)
-
type: write
address: [MAIN, 0x7E23AF0, 0]
value_type: float
value: [31, 31]
# r.DynamicRes.MinGPUTime (default value)
-
type: write
address: [MAIN, 0x7E23B08, 0]
value_type: float
value: [29, 29]
# r.DynamicRes.MaxGPUTimeStill (default value)
-
type: write
address: [MAIN, 0x7E23B20, 0]
value_type: float
value: [31.5, 31.5]
# r.DynamicRes.MinGPUTimeStill (default value)
-
type: write
address: [MAIN, 0x7E23B38, 0]
value_type: float
value: [31, 31]
# t.MaxFPS (default value)
-
type: write
address: [MAIN, 0x7E46698, 0]
value_type: float
value: [0, 0]
35FPS:
# r.DynamicRes.MaxGPUTime
-
type: write
address: [MAIN, 0x7E23AF0, 0]
value_type: float
value: [26.57, 26.57]
# r.DynamicRes.MinGPUTime
-
type: write
address: [MAIN, 0x7E23B08, 0]
value_type: float
value: [24.85, 24.85]
# r.DynamicRes.MaxGPUTimeStill
-
type: write
address: [MAIN, 0x7E23B20, 0]
value_type: float
value: [27, 27]
# r.DynamicRes.MinGPUTimeStill
-
type: write
address: [MAIN, 0x7E23B38, 0]
value_type: float
value: [26.57, 26.57]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7E46698, 0]
value_type: float
value: [35, 35]
-
type: block
what: timing
40FPS:
# r.DynamicRes.MaxGPUTime
-
type: write
address: [MAIN, 0x7E23AF0, 0]
value_type: float
value: [23.25, 23.25]
# r.DynamicRes.MinGPUTime
-
type: write
address: [MAIN, 0x7E23B08, 0]
value_type: float
value: [21.75, 21.75]
# r.DynamicRes.MaxGPUTimeStill
-
type: write
address: [MAIN, 0x7E23B20, 0]
value_type: float
value: [23.625, 23.625]
# r.DynamicRes.MinGPUTimeStill
-
type: write
address: [MAIN, 0x7E23B38, 0]
value_type: float
value: [23.25, 23.25]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7E46698, 0]
value_type: float
value: [40, 40]
-
type: block
what: timing
45FPS:
# r.DynamicRes.MaxGPUTime
-
type: write
address: [MAIN, 0x7E23AF0, 0]
value_type: float
value: [20.66, 20.66]
# r.DynamicRes.MinGPUTime
-
type: write
address: [MAIN, 0x7E23B08, 0]
value_type: float
value: [19.33, 19.33]
# r.DynamicRes.MaxGPUTimeStill
-
type: write
address: [MAIN, 0x7E23B20, 0]
value_type: float
value: [21, 21]
# r.DynamicRes.MinGPUTimeStill
-
type: write
address: [MAIN, 0x7E23B38, 0]
value_type: float
value: [20.66, 20.66]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7E46698, 0]
value_type: float
value: [45, 45]
-
type: block
what: timing
50FPS:
# r.DynamicRes.MaxGPUTime
-
type: write
address: [MAIN, 0x7E23AF0, 0]
value_type: float
value: [18.6, 18.6]
# r.DynamicRes.MinGPUTime
-
type: write
address: [MAIN, 0x7E23B08, 0]
value_type: float
value: [17.4, 17.4]
# r.DynamicRes.MaxGPUTimeStill
-
type: write
address: [MAIN, 0x7E23B20, 0]
value_type: float
value: [18.9, 18.9]
# r.DynamicRes.MinGPUTimeStill
-
type: write
address: [MAIN, 0x7E23B38, 0]
value_type: float
value: [18.6, 18.6]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7E46698, 0]
value_type: float
value: [50, 50]
-
type: block
what: timing
55FPS:
# r.DynamicRes.MaxGPUTime
-
type: write
address: [MAIN, 0x7E23AF0, 0]
value_type: float
value: [16.9, 16.9]
# r.DynamicRes.MinGPUTime
-
type: write
address: [MAIN, 0x7E23B08, 0]
value_type: float
value: [15.81, 15.81]
# r.DynamicRes.MaxGPUTimeStill
-
type: write
address: [MAIN, 0x7E23B20, 0]
value_type: float
value: [17.18, 17.18]
# r.DynamicRes.MinGPUTimeStill
-
type: write
address: [MAIN, 0x7E23B38, 0]
value_type: float
value: [16.9, 16.9]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7E46698, 0]
value_type: float
value: [55, 55]
-
type: block
what: timing
60FPS:
# r.DynamicRes.MaxGPUTime
-
type: write
address: [MAIN, 0x7E23AF0, 0]
value_type: float
value: [15.5, 15.5]
# r.DynamicRes.MinGPUTime
-
type: write
address: [MAIN, 0x7E23B08, 0]
value_type: float
value: [14.5, 14.5]
# r.DynamicRes.MaxGPUTimeStill
-
type: write
address: [MAIN, 0x7E23B20, 0]
value_type: float
value: [15.75, 15.75]
# r.DynamicRes.MinGPUTimeStill
-
type: write
address: [MAIN, 0x7E23B38, 0]
value_type: float
value: [15.5, 15.5]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7E46698, 0]
value_type: float
value: [0, 0]

View File

@ -1,7 +1,6 @@
# SONIC FORCES 1.1.0
# BID: 6D9EA94F8AAC00A8
# Game speed is tied to framerate
# Above 30 FPS level 8 is harder to beat and level 20 impossible to beat
unsafeCheck: true
@ -12,73 +11,27 @@ MASTER_WRITE:
main_offset: 0xAD40FC
value_type: uint32
value: 0x52800068
15FPS:
# FPS target (FPS * 2)
# Block switching back to 30 FPS mode on loading screens
-
type: bytes
main_offset: 0x6173B0
value_type: uint32
value: 0xD503201F
ALL_FPS:
# Switch to 60 FPS Mode
-
type: write
address: [MAIN, 0x1C38C28, 0x1C]
value_type: float
value: 30
20FPS:
address: [MAIN, 0x1CAC518, 0x28, 0x20, 0x14]
value_type: uint32
value: 1
# FPS target
-
type: write
type: evaluate_write
address: [MAIN, 0x1C38C28, 0x1C]
value_type: float
value: 40
25FPS:
# FPS target
value: FPS_TARGET
-
type: write
address: [MAIN, 0x1C38C28, 0x1C]
type: evaluate_write
address: [MAIN, 0x1C38C28, 0x14C]
value_type: float
value: 50
30FPS:
# FPS target (default value)
-
type: write
address: [MAIN, 0x1C38C28, 0x1C]
value_type: float
value: 60
35FPS:
# FPS target
-
type: write
address: [MAIN, 0x1C38C28, 0x1C]
value_type: float
value: 70
40FPS:
# FPS target
-
type: write
address: [MAIN, 0x1C38C28, 0x1C]
value_type: float
value: 80
45FPS:
# FPS target
-
type: write
address: [MAIN, 0x1C38C28, 0x1C]
value_type: float
value: 90
50FPS:
# FPS target
-
type: write
address: [MAIN, 0x1C38C28, 0x1C]
value_type: float
value: 100
55FPS:
# FPS target
-
type: write
address: [MAIN, 0x1C38C28, 0x1C]
value_type: float
value: 110
60FPS:
# FPS target
-
type: write
address: [MAIN, 0x1C38C28, 0x1C]
value_type: float
value: 120
value: FPS_TARGET

View File

@ -1,7 +1,6 @@
# SONIC FORCES 1.1.0
# BID: 6D9EA94F8AAC00A8
# Game speed is tied to framerate
# Above 30 FPS level 8 is harder to beat and level 20 impossible to beat
unsafeCheck: true
@ -12,73 +11,27 @@ MASTER_WRITE:
main_offset: 0xAD40FC
value_type: uint32
value: 0x52800068
15FPS:
# FPS target (FPS * 2)
# Block switching back to 30 FPS mode on loading screens
-
type: bytes
main_offset: 0x6173B0
value_type: uint32
value: 0xD503201F
ALL_FPS:
# Switch to 60 FPS Mode
-
type: write
address: [MAIN, 0x1C38C28, 0x1C]
value_type: float
value: 30
20FPS:
address: [MAIN, 0x1CAC518, 0x28, 0x20, 0x14]
value_type: uint32
value: 1
# FPS target
-
type: write
type: evaluate_write
address: [MAIN, 0x1C38C28, 0x1C]
value_type: float
value: 40
25FPS:
# FPS target
value: FPS_TARGET
-
type: write
address: [MAIN, 0x1C38C28, 0x1C]
type: evaluate_write
address: [MAIN, 0x1C38C28, 0x14C]
value_type: float
value: 50
30FPS:
# FPS target (default value)
-
type: write
address: [MAIN, 0x1C38C28, 0x1C]
value_type: float
value: 60
35FPS:
# FPS target
-
type: write
address: [MAIN, 0x1C38C28, 0x1C]
value_type: float
value: 70
40FPS:
# FPS target
-
type: write
address: [MAIN, 0x1C38C28, 0x1C]
value_type: float
value: 80
45FPS:
# FPS target
-
type: write
address: [MAIN, 0x1C38C28, 0x1C]
value_type: float
value: 90
50FPS:
# FPS target
-
type: write
address: [MAIN, 0x1C38C28, 0x1C]
value_type: float
value: 100
55FPS:
# FPS target
-
type: write
address: [MAIN, 0x1C38C28, 0x1C]
value_type: float
value: 110
60FPS:
# FPS target
-
type: write
address: [MAIN, 0x1C38C28, 0x1C]
value_type: float
value: 120
value: FPS_TARGET

View File

@ -3,13 +3,13 @@
unsafeCheck: true
15FPS:
ALL_FPS:
# t.MaxFPS
-
type: write
type: evaluate_write
address: [MAIN, 0x8001888, 0]
value_type: float
value: [15, 15]
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
@ -19,141 +19,3 @@ unsafeCheck: true
-
type: block
what: timing
20FPS:
# t.MaxFPS
-
type: write
address: [MAIN, 0x8001888, 0]
value_type: float
value: [20, 20]
# r.VSync
-
type: write
address: [MAIN, 0x7806CC8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
25FPS:
# t.MaxFPS
-
type: write
address: [MAIN, 0x8001888, 0]
value_type: float
value: [25, 25]
# r.VSync
-
type: write
address: [MAIN, 0x7806CC8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
30FPS:
# t.MaxFPS (default value at first game boot, with next boot it's 30)
-
type: write
address: [MAIN, 0x8001888, 0]
value_type: float
value: [0, 0]
# r.VSync (default value is 1)
-
type: write
address: [MAIN, 0x7806CC8, 0]
value_type: uint32
value: [0, 0]
35FPS:
# t.MaxFPS
-
type: write
address: [MAIN, 0x8001888, 0]
value_type: float
value: [35, 35]
# r.VSync
-
type: write
address: [MAIN, 0x7806CC8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
40FPS:
# t.MaxFPS
-
type: write
address: [MAIN, 0x8001888, 0]
value_type: float
value: [40, 40]
# r.VSync
-
type: write
address: [MAIN, 0x7806CC8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
45FPS:
# t.MaxFPS
-
type: write
address: [MAIN, 0x8001888, 0]
value_type: float
value: [45, 45]
# r.VSync
-
type: write
address: [MAIN, 0x7806CC8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
50FPS:
# t.MaxFPS
-
type: write
address: [MAIN, 0x8001888, 0]
value_type: float
value: [50, 50]
# r.VSync
-
type: write
address: [MAIN, 0x7806CC8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
55FPS:
# t.MaxFPS
-
type: write
address: [MAIN, 0x8001888, 0]
value_type: float
value: [55, 55]
# r.VSync
-
type: write
address: [MAIN, 0x7806CC8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
60FPS:
# t.MaxFPS
-
type: write
address: [MAIN, 0x8001888, 0]
value_type: float
value: [0, 0]
# r.VSync
-
type: write
address: [MAIN, 0x7806CC8, 0]
value_type: uint32
value: [0, 0]

View File

@ -3,157 +3,19 @@
unsafeCheck: true
15FPS:
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: write
type: evaluate_write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [66.66, 66.66]
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: write
type: evaluate_write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [15, 15]
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing
20FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [50, 50]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [20, 20]
-
type: block
what: timing
25FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [40, 40]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [25, 25]
-
type: block
what: timing
30FPS:
# r.DynamicRes.FrameTimeBudget (default value)
-
type: write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [33.33, 33.33]
# t.MaxFPS (default is 1000)
-
type: write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [0, 0]
35FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [28.51, 28.51]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [35, 35]
-
type: block
what: timing
40FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [25, 25]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [40, 40]
-
type: block
what: timing
45FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [22.22, 22.22]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [45, 45]
-
type: block
what: timing
50FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [20, 20]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [50, 50]
-
type: block
what: timing
55FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [18.18, 18.18]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [55, 55]
-
type: block
what: timing
60FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [16.66, 16.66]
# t.MaxFPS (default value)
-
type: write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [0, 0]

View File

@ -1,159 +0,0 @@
# Mortal Shell 1.0.1
# BID: BE2D1A84420113EC
unsafeCheck: true
15FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [66.66, 66.66]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [15, 15]
-
type: block
what: timing
20FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [50, 50]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [20, 20]
-
type: block
what: timing
25FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [40, 40]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [25, 25]
-
type: block
what: timing
30FPS:
# r.DynamicRes.FrameTimeBudget (default value)
-
type: write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [33.33, 33.33]
# t.MaxFPS (default value)
-
type: write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [0, 0]
35FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [28.51, 28.51]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [35, 35]
-
type: block
what: timing
40FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [25, 25]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [40, 40]
-
type: block
what: timing
45FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [22.22, 22.22]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [45, 45]
-
type: block
what: timing
50FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [20, 20]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [50, 50]
-
type: block
what: timing
55FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [18.18, 18.18]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [55, 55]
-
type: block
what: timing
60FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6ACCBD8, 0]
value_type: float
value: [16.66, 16.66]
# t.MaxFPS (default value)
-
type: write
address: [MAIN, 0x6AEF760, 0]
value_type: float
value: [0, 0]

View File

@ -1,135 +0,0 @@
# From Space 1.0.357
# BID: 593BD545295A65FB
unsafeCheck: true
15FPS:
# vSyncCount (we are resetting it to 0 so game will calculate Dynamic Resolution for specified FPS target)
-
type: write
address: [MAIN, 0x68A9828, 0x210, 0x68]
value_type: int32
value: 0
# targetFrameRate
-
type: write
address: [MAIN, 0x6483A70]
value_type: int32
value: 15
20FPS:
# vSyncCount
-
type: write
address: [MAIN, 0x68A9828, 0x210, 0x68]
value_type: int32
value: 0
# targetFrameRate
-
type: write
address: [MAIN, 0x6483A70]
value_type: int32
value: 20
25FPS:
# vSyncCount
-
type: write
address: [MAIN, 0x68A9828, 0x210, 0x68]
value_type: int32
value: 0
# targetFrameRate
-
type: write
address: [MAIN, 0x6483A70]
value_type: int32
value: 25
30FPS:
# vSyncCount (default value)
-
type: write
address: [MAIN, 0x68A9828, 0x210, 0x68]
value_type: int32
value: 2
# targetFrameRate (default value)
-
type: write
address: [MAIN, 0x6483A70]
value_type: int32
value: 0
35FPS:
# vSyncCount
-
type: write
address: [MAIN, 0x68A9828, 0x210, 0x68]
value_type: int32
value: 0
# targetFrameRate
-
type: write
address: [MAIN, 0x6483A70]
value_type: int32
value: 35
40FPS:
# vSyncCount
-
type: write
address: [MAIN, 0x68A9828, 0x210, 0x68]
value_type: int32
value: 0
# targetFrameRate
-
type: write
address: [MAIN, 0x6483A70]
value_type: int32
value: 40
45FPS:
# vSyncCount
-
type: write
address: [MAIN, 0x68A9828, 0x210, 0x68]
value_type: int32
value: 0
# targetFrameRate
-
type: write
address: [MAIN, 0x6483A70]
value_type: int32
value: 45
50FPS:
# vSyncCount
-
type: write
address: [MAIN, 0x68A9828, 0x210, 0x68]
value_type: int32
value: 0
# targetFrameRate
-
type: write
address: [MAIN, 0x6483A70]
value_type: int32
value: 50
55FPS:
# vSyncCount
-
type: write
address: [MAIN, 0x68A9828, 0x210, 0x68]
value_type: int32
value: 0
# targetFrameRate
-
type: write
address: [MAIN, 0x6483A70]
value_type: int32
value: 55
60FPS:
# vSyncCount
-
type: write
address: [MAIN, 0x68A9828, 0x210, 0x68]
value_type: int32
value: 1
# targetFrameRate (default value)
-
type: write
address: [MAIN, 0x6483A70]
value_type: int32
value: 0

View File

@ -0,0 +1,12 @@
# From Space 1.3.480
# BID: 9806FB67CE24E904
unsafeCheck: true
ALL_FPS:
# UnityEngine.Application::targetFrameRate (to adjust Dynamic Resolution)
-
type: evaluate_write
address: [MAIN, 0x6F3F760]
value_type: int32
value: FPS_TARGET

View File

@ -1,66 +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
15FPS:
ALL_FPS:
# Without DLC Ultimate Edition installed
-
type: write
address: [MAIN, 0x3AF80, -0x931F4]
value_type: int32
value: 2
20FPS:
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: write
address: [MAIN, 0x3AF80, -0x931F4]
value_type: int32
value: 2
25FPS:
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: write
address: [MAIN, 0x3AF80, -0x931F4]
value_type: int32
value: 2
30FPS:
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: write
address: [MAIN, 0x3AF80, -0x931F4]
value_type: int32
value: 2
35FPS:
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: write
address: [MAIN, 0x3AF80, -0x931F4]
value_type: int32
value: 1
40FPS:
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: write
address: [MAIN, 0x3AF80, -0x931F4]
value_type: int32
value: 1
45FPS:
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: write
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
50FPS:
value_type: uint32
value: [VSYNC_TARGET, FPS_TARGET]
-
type: write
address: [MAIN, 0x3AF80, -0x931F4]
value_type: int32
value: 1
55FPS:
-
type: write
address: [MAIN, 0x3AF80, -0x931F4]
value_type: int32
value: 1
60FPS:
-
type: write
address: [MAIN, 0x3AF80, -0x931F4]
value_type: int32
value: 1
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

@ -4,199 +4,22 @@
unsafeCheck: true
15FPS:
ALL_FPS:
# Internal FPS Lock, pointer ref: 00 01 40 F9 E5 03 04 2A
-
type: write
type: evaluate_write
address: [MAIN, 0x2AEDA08, 704]
value_type: uint32
value: 4
value: VSYNC_TARGET
# Game Speed, pointer ref: F3 03 00 AA 20 00 80 52 F4 03 01 AA
-
type: write
type: evaluate_write
address: [MAIN, 0x2AEF6D0, 1360]
value_type: uint32
value: 4
value: VSYNC_TARGET
# UI Speed
-
type: write
type: evaluate_write
address: [MAIN, 0x2AEF6D0, 2554]
value_type: uint8
value: 15
-
type: block
what: timing
20FPS:
# Internal FPS Lock
-
type: write
address: [MAIN, 0x2AEDA08, 704]
value_type: uint32
value: 3
# Game Speed
-
type: write
address: [MAIN, 0x2AEF6D0, 1360]
value_type: uint32
value: 3
# UI Speed
-
type: write
address: [MAIN, 0x2AEF6D0, 2554]
value_type: uint8
value: 20
-
type: block
what: timing
25FPS:
# Internal FPS Lock
-
type: write
address: [MAIN, 0x2AEDA08, 704]
value_type: uint32
value: 2
# Game Speed
-
type: write
address: [MAIN, 0x2AEF6D0, 1360]
value_type: uint32
value: 2
# UI Speed
-
type: write
address: [MAIN, 0x2AEF6D0, 2554]
value_type: uint8
value: 25
30FPS:
# Internal FPS Lock
-
type: write
address: [MAIN, 0x2AEDA08, 704]
value_type: uint32
value: 2
# Game Speed
-
type: write
address: [MAIN, 0x2AEF6D0, 1360]
value_type: uint32
value: 2
# UI Speed
-
type: write
address: [MAIN, 0x2AEF6D0, 2554]
value_type: uint8
value: 30
35FPS:
# Internal FPS Lock
-
type: write
address: [MAIN, 0x2AEDA08, 704]
value_type: uint32
value: 1
# Game Speed
-
type: write
address: [MAIN, 0x2AEF6D0, 1360]
value_type: uint32
value: 1
# UI Speed
-
type: write
address: [MAIN, 0x2AEF6D0, 2554]
value_type: uint8
value: 35
40FPS:
# Internal FPS Lock
-
type: write
address: [MAIN, 0x2AEDA08, 704]
value_type: uint32
value: 1
# Game Speed
-
type: write
address: [MAIN, 0x2AEF6D0, 1360]
value_type: uint32
value: 1
# UI Speed
-
type: write
address: [MAIN, 0x2AEF6D0, 2554]
value_type: uint8
value: 40
45FPS:
# Internal FPS Lock
-
type: write
address: [MAIN, 0x2AEDA08, 704]
value_type: uint32
value: 1
# Game Speed
-
type: write
address: [MAIN, 0x2AEF6D0, 1360]
value_type: uint32
value: 1
# UI Speed
-
type: write
address: [MAIN, 0x2AEF6D0, 2554]
value_type: uint8
value: 45
50FPS:
# Internal FPS Lock
-
type: write
address: [MAIN, 0x2AEDA08, 704]
value_type: uint32
value: 1
# Game Speed
-
type: write
address: [MAIN, 0x2AEF6D0, 1360]
value_type: uint32
value: 1
# UI Speed
-
type: write
address: [MAIN, 0x2AEF6D0, 2554]
value_type: uint8
value: 50
55FPS:
# Internal FPS Lock
-
type: write
address: [MAIN, 0x2AEDA08, 704]
value_type: uint32
value: 1
# Game Speed
-
type: write
address: [MAIN, 0x2AEF6D0, 1360]
value_type: uint32
value: 1
# UI Speed
-
type: write
address: [MAIN, 0x2AEF6D0, 2554]
value_type: uint8
value: 55
60FPS:
# Internal FPS Lock
-
type: write
address: [MAIN, 0x2AEDA08, 704]
value_type: uint32
value: 1
# Game Speed
-
type: write
address: [MAIN, 0x2AEF6D0, 1360]
value_type: uint32
value: 1
# UI Speed
-
type: write
address: [MAIN, 0x2AEF6D0, 2554]
value_type: uint8
value: 60
value: FPS_TARGET

View File

@ -1,199 +0,0 @@
# Jojo's Bizarre Adventure: All-Star Battle R 2.3.0
# BID: B2FA8FF1240615F1
# There are small issues with animations in cutscenes at higher framerates
# REF: 28 1C 00 12 89 07 80 52 2A 09 C8 1A
unsafeCheck: true
15FPS:
# Internal FPS Lock
-
type: write
address: [MAIN, 0x2AEEA08, 704]
value_type: uint32
value: 4
-
type: write
address: [MAIN, 0x2AF06D0, 1360]
value_type: uint32
value: 4
# UI Speed
-
type: write
address: [MAIN, 0x2AF06D0, 2554]
value_type: uint8
value: 15
-
type: block
what: timing
20FPS:
# Internal FPS Lock
-
type: write
address: [MAIN, 0x2AEEA08, 704]
value_type: uint32
value: 3
-
type: write
address: [MAIN, 0x2AF06D0, 1360]
value_type: uint32
value: 3
# UI Speed
-
type: write
address: [MAIN, 0x2AF06D0, 2554]
value_type: uint8
value: 20
-
type: block
what: timing
25FPS:
# Internal FPS Lock
-
type: write
address: [MAIN, 0x2AEEA08, 704]
value_type: uint32
value: 2
-
type: write
address: [MAIN, 0x2AF06D0, 1360]
value_type: uint32
value: 2
# UI Speed
-
type: write
address: [MAIN, 0x2AF06D0, 2554]
value_type: uint8
value: 25
30FPS:
# Internal FPS Lock
-
type: write
address: [MAIN, 0x2AEEA08, 704]
value_type: uint32
value: 2
-
type: write
address: [MAIN, 0x2AF06D0, 1360]
value_type: uint32
value: 2
# UI Speed
-
type: write
address: [MAIN, 0x2AF06D0, 2554]
value_type: uint8
value: 30
35FPS:
# Internal FPS Lock
-
type: write
address: [MAIN, 0x2AEEA08, 704]
value_type: uint32
value: 1
# Game Speed
-
type: write
address: [MAIN, 0x2AF06D0, 1360]
value_type: uint32
value: 1
# UI Speed
-
type: write
address: [MAIN, 0x2AF06D0, 2554]
value_type: uint8
value: 35
40FPS:
# Internal FPS Lock
-
type: write
address: [MAIN, 0x2AEEA08, 704]
value_type: uint32
value: 1
# Game Speed
-
type: write
address: [MAIN, 0x2AF06D0, 1360]
value_type: uint32
value: 1
# UI Speed
-
type: write
address: [MAIN, 0x2AF06D0, 2554]
value_type: uint8
value: 40
45FPS:
# Internal FPS Lock
-
type: write
address: [MAIN, 0x2AEEA08, 704]
value_type: uint32
value: 1
# Game Speed
-
type: write
address: [MAIN, 0x2AF06D0, 1360]
value_type: uint32
value: 1
# UI Speed
-
type: write
address: [MAIN, 0x2AF06D0, 2554]
value_type: uint8
value: 45
50FPS:
# Internal FPS Lock
-
type: write
address: [MAIN, 0x2AEEA08, 704]
value_type: uint32
value: 1
# Game Speed
-
type: write
address: [MAIN, 0x2AF06D0, 1360]
value_type: uint32
value: 1
# UI Speed
-
type: write
address: [MAIN, 0x2AF06D0, 2554]
value_type: uint8
value: 50
55FPS:
# Internal FPS Lock
-
type: write
address: [MAIN, 0x2AEEA08, 704]
value_type: uint32
value: 1
# Game Speed
-
type: write
address: [MAIN, 0x2AF06D0, 1360]
value_type: uint32
value: 1
# UI Speed
-
type: write
address: [MAIN, 0x2AF06D0, 2554]
value_type: uint8
value: 55
60FPS:
# Internal FPS Lock
-
type: write
address: [MAIN, 0x2AEEA08, 704]
value_type: uint32
value: 1
# Game Speed
-
type: write
address: [MAIN, 0x2AF06D0, 1360]
value_type: uint32
value: 1
# UI Speed
-
type: write
address: [MAIN, 0x2AF06D0, 2554]
value_type: uint8
value: 60

View File

@ -3,157 +3,19 @@
unsafeCheck: true
15FPS:
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 1 decimal
-
type: write
type: evaluate_write
address: [MAIN, 0x7565298, 0]
value_type: float
value: [66.6, 66.6]
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: write
type: evaluate_write
address: [MAIN, 0x7589FE0, 0]
value_type: float
value: [15, 15]
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing
20FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x7565298, 0]
value_type: float
value: [50, 50]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7589FE0, 0]
value_type: float
value: [20, 20]
-
type: block
what: timing
25FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x7565298, 0]
value_type: float
value: [40, 40]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7589FE0, 0]
value_type: float
value: [25, 25]
-
type: block
what: timing
30FPS:
# r.DynamicRes.FrameTimeBudget (default value is 36.5, obviously we don't want it)
-
type: write
address: [MAIN, 0x7565298, 0]
value_type: float
value: [33.3, 33.3]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7589FE0, 0]
value_type: float
value: [30, 30]
35FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x7565298, 0]
value_type: float
value: [28.5, 28.5]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7589FE0, 0]
value_type: float
value: [35, 35]
-
type: block
what: timing
40FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x7565298, 0]
value_type: float
value: [25, 25]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7589FE0, 0]
value_type: float
value: [40, 40]
-
type: block
what: timing
45FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x7565298, 0]
value_type: float
value: [22.2, 22.2]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7589FE0, 0]
value_type: float
value: [45, 45]
-
type: block
what: timing
50FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x7565298, 0]
value_type: float
value: [20, 20]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7589FE0, 0]
value_type: float
value: [50, 50]
-
type: block
what: timing
55FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x7565298, 0]
value_type: float
value: [18.1, 18.1]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7589FE0, 0]
value_type: float
value: [55, 55]
-
type: block
what: timing
60FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x7565298, 0]
value_type: float
value: [16.6, 16.6]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7589FE0, 0]
value_type: float
value: [0, 0]

View File

@ -0,0 +1,27 @@
# Grand Theft Auto: Vice City - Definitive Edition 1.0.8
# BID: 9151E53EE514B03A
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (Default is 36.5 ms)
-
type: evaluate_write
address: [MAIN, 0x7608988, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x762D640, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x6E7AA00, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,32 @@
# Bakery Simulator 1.1.0
# BID: 31A37D73E22F1059
unsafeCheck: false
ALL_FPS:
# Disable bUseFixedFrameRate to untie game speed from framerate and unlock FPS
-
type: write
address: [MAIN, 0x5F9B6A8, 0x7A4]
value_type: uint32
# Default is 0x47, bUseFixedFrameRate |= 0x40
# By writing 7 we are making sure that other flags are maintained:
# bAllowMultiThreadedAnimationUpdate |= 4
# bOptimizeAnimBlueprintMemberVariableAccess |= 2
# bCanBlueprintsTickByDefault |= 1
value: 7
# r.VSync
-
type: write
address: [MAIN, 0x57A0B58, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x5F9BFC8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# Gigantosaurus: Dino Kart 1.1.0
# BID: 512FB8C2D12C4F36
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x6D186C8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# r.VSync
-
type: write
address: [MAIN, 0x6581EB0, 0]
value_type: uint32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x6D45C58, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -3,157 +3,19 @@
unsafeCheck: true
15FPS:
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: write
type: evaluate_write
address: [MAIN, 0x6D196C8, 0]
value_type: float
value: [66.66, 66.66]
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: write
type: evaluate_write
address: [MAIN, 0x6D46C58, 0]
value_type: float
value: [15, 15]
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing
20FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6D196C8, 0]
value_type: float
value: [50, 50]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6D46C58, 0]
value_type: float
value: [20, 20]
-
type: block
what: timing
25FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6D196C8, 0]
value_type: float
value: [40, 40]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6D46C58, 0]
value_type: float
value: [25, 25]
-
type: block
what: timing
30FPS:
# r.DynamicRes.FrameTimeBudget (default value)
-
type: write
address: [MAIN, 0x6D196C8, 0]
value_type: float
value: [33.33, 33.33]
# t.MaxFPS (default is 30)
-
type: write
address: [MAIN, 0x6D46C58, 0]
value_type: float
value: [0, 0]
35FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6D196C8, 0]
value_type: float
value: [28.51, 28.51]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6D46C58, 0]
value_type: float
value: [35, 35]
-
type: block
what: timing
40FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6D196C8, 0]
value_type: float
value: [25, 25]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6D46C58, 0]
value_type: float
value: [40, 40]
-
type: block
what: timing
45FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6D196C8, 0]
value_type: float
value: [22.22, 22.22]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6D46C58, 0]
value_type: float
value: [45, 45]
-
type: block
what: timing
50FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6D196C8, 0]
value_type: float
value: [20, 20]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6D46C58, 0]
value_type: float
value: [50, 50]
-
type: block
what: timing
55FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6D196C8, 0]
value_type: float
value: [18.18, 18.18]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6D46C58, 0]
value_type: float
value: [55, 55]
-
type: block
what: timing
60FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6D196C8, 0]
value_type: float
value: [16.66, 16.66]
# t.MaxFPS (default value)
-
type: write
address: [MAIN, 0x6D46C58, 0]
value_type: float
value: [0, 0]

View File

@ -3,157 +3,19 @@
unsafeCheck: true
15FPS:
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: write
type: evaluate_write
address: [MAIN, 0x7D46658, 0]
value_type: float
value: [66.66, 66.66]
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: write
type: evaluate_write
address: [MAIN, 0x7D73FF8, 0]
value_type: float
value: [15, 15]
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing
20FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x7D46658, 0]
value_type: float
value: [50, 50]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7D73FF8, 0]
value_type: float
value: [20, 20]
-
type: block
what: timing
25FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x7D46658, 0]
value_type: float
value: [40, 40]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7D73FF8, 0]
value_type: float
value: [25, 25]
-
type: block
what: timing
30FPS:
# r.DynamicRes.FrameTimeBudget (default value)
-
type: write
address: [MAIN, 0x7D46658, 0]
value_type: float
value: [33.33, 33.33]
# t.MaxFPS (default value is 30)
-
type: write
address: [MAIN, 0x7D73FF8, 0]
value_type: float
value: [0, 0]
35FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x7D46658, 0]
value_type: float
value: [28.51, 28.51]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7D73FF8, 0]
value_type: float
value: [35, 35]
-
type: block
what: timing
40FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x7D46658, 0]
value_type: float
value: [25, 25]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7D73FF8, 0]
value_type: float
value: [40, 40]
-
type: block
what: timing
45FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x7D46658, 0]
value_type: float
value: [22.22, 22.22]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7D73FF8, 0]
value_type: float
value: [45, 45]
-
type: block
what: timing
50FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x7D46658, 0]
value_type: float
value: [20, 20]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7D73FF8, 0]
value_type: float
value: [50, 50]
-
type: block
what: timing
55FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x7D46658, 0]
value_type: float
value: [18.18, 18.18]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7D73FF8, 0]
value_type: float
value: [55, 55]
-
type: block
what: timing
60FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x7D46658, 0]
value_type: float
value: [16.66, 16.66]
# t.MaxFPS
-
type: write
address: [MAIN, 0x7D73FF8, 0]
value_type: float
value: [0, 0]

View File

@ -0,0 +1,13 @@
# Cel Damage HD 1.0.0
# BID: 03B058B1F6BE7195
# Credit to Hazerou for finding offset
# His note: 60 FPS may cause some Graphical Glitches like huge shadow and flashing light/colors appearing out of nowhere.
unsafeCheck: true
ALL_FPS:
-
type: evaluate_write
address: [MAIN, 0x32EE1C]
value_type: float
value: ["1/FPS_TARGET", "FPS_TARGET"]

View File

@ -0,0 +1,27 @@
# The Witcher 3: Wild Hund - Complete Edition 4.04b
# BID: 4BC4A8A814FD46A4
unsafeCheck: true
ALL_FPS:
# DRGameTargetFrameTimeInMs
-
type: evaluate_write
address: [MAIN, 0x41312B4]
value_type: float
value: "0.945 * FRAMETIME_TARGET"
# DRCinematicTargetFrameTimeInMs
-
type: evaluate_write
address: [MAIN, 0x41312E4]
value_type: float
value: "0.945 * FRAMETIME_TARGET"
# LimitFPS
-
type: evaluate_write
address: [MAIN, 0x411DCFC]
value_type: int32
value: FPS_LOCK_TARGET
-
type: block
what: timing

View File

@ -1,224 +0,0 @@
# The Witcher 3 3.7
# BID: 4FFB62F1CD9E17F8
unsafeCheck: false
15FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 63
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 63
# LimitFPS
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 15
-
type: block
what: timing
20FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 47.25
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 47.25
# LimitFPS
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 20
-
type: block
what: timing
25FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 37.8
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 37.8
# LimitFPS
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 25
-
type: block
what: timing
30FPS:
# DRGameTargetFrameTimeInMs (original value)
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 31.5
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 31.5
# LimitFPS (original value)
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 60
# For 35-60 FPS check if cutscene is played. If it is, set 30 FPS lock. If not, disable it.
35FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 27
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 27
# LimitFPS
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 35
-
type: block
what: timing
40FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 23.625
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 23.625
# LimitFPS
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 40
-
type: block
what: timing
45FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 21
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 21
# LimitFPS
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 45
-
type: block
what: timing
50FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 18.9
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 18.9
# LimitFPS
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 50
-
type: block
what: timing
55FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 17.1818181818
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 17.1818181818
# LimitFPS
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 55
-
type: block
what: timing
60FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA8F4]
value_type: float
value: 15.75
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x4FDA924]
value_type: float
value: 15.75
# LimitFPS
-
type: write
address: [MAIN, 0x4C983EC]
value_type: int32
value: 60
-
type: block
what: timing

View File

@ -1,224 +0,0 @@
# The Witcher 3: Wild Hund - Complete Edition 4.04b
# BID: D27FD8A515077F34
unsafeCheck: true
15FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 63
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 63
# LimitFPS
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 15
-
type: block
what: timing
20FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 47.25
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 47.25
# LimitFPS
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 20
-
type: block
what: timing
25FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 37.8
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 37.8
# LimitFPS
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 25
-
type: block
what: timing
30FPS:
# DRGameTargetFrameTimeInMs (original value)
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 31.5
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 31.5
# LimitFPS (original value)
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 60
# For 35-60 FPS check if cutscene is played. If it is, set 30 FPS lock. If not, disable it.
35FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 27
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 27
# LimitFPS
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 35
-
type: block
what: timing
40FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 23.625
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 23.625
# LimitFPS
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 40
-
type: block
what: timing
45FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 21
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 21
# LimitFPS
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 45
-
type: block
what: timing
50FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 18.9
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 18.9
# LimitFPS
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 50
-
type: block
what: timing
55FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 17.1818181818
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 17.1818181818
# LimitFPS
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 55
-
type: block
what: timing
60FPS:
# DRGameTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312B4]
value_type: float
value: 15.75
# DRCinematicTargetFrameTimeInMs
-
type: write
address: [MAIN, 0x41312E4]
value_type: float
value: 15.75
# LimitFPS
-
type: write
address: [MAIN, 0x411DCFC]
value_type: int32
value: 60
-
type: block
what: timing

View File

@ -3,73 +3,10 @@
unsafeCheck: true
15FPS:
ALL_FPS:
# OptimalFrameDuration_ms = (1000/FPS) - (0.07 * (1000/30)
-
type: write
type: evaluate_write
address: [MAIN, 0x27C4B0C]
value_type: float
value: 64.333333
20FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x27C4B0C]
value_type: float
value: 47.666666
25FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x27C4B0C]
value_type: float
value: 37.666666
30FPS:
# OptimalFrameDuration_ms (default value)
-
type: write
address: [MAIN, 0x27C4B0C]
value_type: float
value: 31
35FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x27C4B0C]
value_type: float
value: 26.238095
40FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x27C4B0C]
value_type: float
value: 22.666666
45FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x27C4B0C]
value_type: float
value: 19.888888
50FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x27C4B0C]
value_type: float
value: 17.666666
55FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x27C4B0C]
value_type: float
value: 15.848484
60FPS:
# OptimalFrameDuration_ms
-
type: write
address: [MAIN, 0x27C4B0C]
value_type: float
value: 14.333333
value: "FRAMETIME_TARGET - (0.07 * (1000/30))"

View File

@ -10,64 +10,10 @@ MASTER_WRITE:
main_offset: 0x6B41E4
value_type: uint32
value: 0xB20007E8
15FPS:
ALL_FPS:
# DUMMY
-
type: write
address: [MAIN, 0x4740500]
value_type: uint8
value: 0
20FPS:
-
type: write
address: [MAIN, 0x4740500]
value_type: uint8
value: 0
25FPS:
-
type: write
address: [MAIN, 0x4740500]
value_type: uint8
value: 0
30FPS:
-
type: write
address: [MAIN, 0x4740500]
value_type: uint8
value: 0
35FPS:
-
type: write
address: [MAIN, 0x4740500]
value_type: uint8
value: 0
40FPS:
-
type: write
address: [MAIN, 0x4740500]
value_type: uint8
value: 0
45FPS:
-
type: write
address: [MAIN, 0x4740500]
value_type: uint8
value: 0
50FPS:
-
type: write
address: [MAIN, 0x4740500]
value_type: uint8
value: 0
55FPS:
-
type: write
address: [MAIN, 0x4740500]
value_type: uint8
value: 0
60FPS:
-
type: write
address: [MAIN, 0x4740500]
value_type: uint8
value: 0

View File

@ -1,159 +0,0 @@
# Bright Memory: Infinite Gold Edition 1.2
# BID: 323631B628A32D84
unsafeCheck: true
15FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: write
address: [MAIN, 0x69CE1D8, 0]
value_type: float
value: [66.66, 66.66]
# t.MaxFPS
-
type: write
address: [MAIN, 0x69FBA78, 0]
value_type: float
value: [15, 15]
-
type: block
what: timing
20FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x69CE1D8, 0]
value_type: float
value: [50, 50]
# t.MaxFPS
-
type: write
address: [MAIN, 0x69FBA78, 0]
value_type: float
value: [20, 20]
-
type: block
what: timing
25FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x69CE1D8, 0]
value_type: float
value: [40, 40]
# t.MaxFPS
-
type: write
address: [MAIN, 0x69FBA78, 0]
value_type: float
value: [25, 25]
-
type: block
what: timing
30FPS:
# r.DynamicRes.FrameTimeBudget (default value)
-
type: write
address: [MAIN, 0x69CE1D8, 0]
value_type: float
value: [33.33, 33.33]
# t.MaxFPS (default value)
-
type: write
address: [MAIN, 0x69FBA78, 0]
value_type: float
value: [0, 0]
35FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x69CE1D8, 0]
value_type: float
value: [28.51, 28.51]
# t.MaxFPS
-
type: write
address: [MAIN, 0x69FBA78, 0]
value_type: float
value: [35, 35]
-
type: block
what: timing
40FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x69CE1D8, 0]
value_type: float
value: [25, 25]
# t.MaxFPS
-
type: write
address: [MAIN, 0x69FBA78, 0]
value_type: float
value: [40, 40]
-
type: block
what: timing
45FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x69CE1D8, 0]
value_type: float
value: [22.22, 22.22]
# t.MaxFPS
-
type: write
address: [MAIN, 0x69FBA78, 0]
value_type: float
value: [45, 45]
-
type: block
what: timing
50FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x69CE1D8, 0]
value_type: float
value: [20, 20]
# t.MaxFPS
-
type: write
address: [MAIN, 0x69FBA78, 0]
value_type: float
value: [50, 50]
-
type: block
what: timing
55FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x69CE1D8, 0]
value_type: float
value: [18.18, 18.18]
# t.MaxFPS
-
type: write
address: [MAIN, 0x69FBA78, 0]
value_type: float
value: [55, 55]
-
type: block
what: timing
60FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x69CE1D8, 0]
value_type: float
value: [16.66, 16.66]
# t.MaxFPS (default value)
-
type: write
address: [MAIN, 0x69FBA78, 0]
value_type: float
value: [0, 0]

View File

@ -3,19 +3,19 @@
unsafeCheck: true
15FPS:
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: write
type: evaluate_write
address: [MAIN, 0x6B031D8, 0]
value_type: float
value: [66.66, 66.66]
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: write
type: evaluate_write
address: [MAIN, 0x6B30A78, 0]
value_type: float
value: [15, 15]
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
@ -25,195 +25,3 @@ unsafeCheck: true
-
type: block
what: timing
20FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B031D8, 0]
value_type: float
value: [50, 50]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6B30A78, 0]
value_type: float
value: [20, 20]
# r.VSync
-
type: write
address: [MAIN, 0x63376C8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
25FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B031D8, 0]
value_type: float
value: [40, 40]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6B30A78, 0]
value_type: float
value: [25, 25]
# r.VSync
-
type: write
address: [MAIN, 0x63376C8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
30FPS:
# r.DynamicRes.FrameTimeBudget (default value)
-
type: write
address: [MAIN, 0x6B031D8, 0]
value_type: float
value: [33.33, 33.33]
# t.MaxFPS (default value is 30)
-
type: write
address: [MAIN, 0x6B30A78, 0]
value_type: float
value: [0, 0]
# r.VSync (default value is 1)
-
type: write
address: [MAIN, 0x63376C8, 0]
value_type: uint32
value: [0, 0]
35FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B031D8, 0]
value_type: float
value: [28.51, 28.51]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6B30A78, 0]
value_type: float
value: [35, 35]
# r.VSync
-
type: write
address: [MAIN, 0x63376C8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
40FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B031D8, 0]
value_type: float
value: [25, 25]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6B30A78, 0]
value_type: float
value: [40, 40]
# r.VSync
-
type: write
address: [MAIN, 0x63376C8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
45FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B031D8, 0]
value_type: float
value: [22.22, 22.22]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6B30A78, 0]
value_type: float
value: [45, 45]
# r.VSync
-
type: write
address: [MAIN, 0x63376C8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
50FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B031D8, 0]
value_type: float
value: [20, 20]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6B30A78, 0]
value_type: float
value: [50, 50]
# r.VSync
-
type: write
address: [MAIN, 0x63376C8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
55FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B031D8, 0]
value_type: float
value: [18.18, 18.18]
# t.MaxFPS
-
type: write
address: [MAIN, 0x6B30A78, 0]
value_type: float
value: [55, 55]
# r.VSync
-
type: write
address: [MAIN, 0x63376C8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
60FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x6B031D8, 0]
value_type: float
value: [16.66, 16.66]
# t.MaxFPS (default value)
-
type: write
address: [MAIN, 0x6B30A78, 0]
value_type: float
value: [0, 0]
# r.VSync
-
type: write
address: [MAIN, 0x63376C8, 0]
value_type: uint32
value: [0, 0]

View File

@ -1,164 +0,0 @@
# Hot Wheels Unleashed 2 1.0.1
# BID: 012294C1E2D28A79
# It is recommended to disable FSR. When FSR is enabled,
# Dynamic Resolution is also disabled and it has worse performance
# at higher FPS, and quality wise it compares to dynamic resolution
# set to lowest res
unsafeCheck: true
15FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: write
address: [MAIN, 0xAC83268, 0]
value_type: float
value: [66.66, 66.66]
# t.MaxFPS
-
type: write
address: [MAIN, 0xACB1730, 0]
value_type: float
value: [15, 15]
-
type: block
what: timing
20FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xAC83268, 0]
value_type: float
value: [50, 50]
# t.MaxFPS
-
type: write
address: [MAIN, 0xACB1730, 0]
value_type: float
value: [20, 20]
-
type: block
what: timing
25FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xAC83268, 0]
value_type: float
value: [40, 40]
# t.MaxFPS
-
type: write
address: [MAIN, 0xACB1730, 0]
value_type: float
value: [25, 25]
-
type: block
what: timing
30FPS:
# r.DynamicRes.FrameTimeBudget (default value)
-
type: write
address: [MAIN, 0xAC83268, 0]
value_type: float
value: [33.33, 33.33]
# t.MaxFPS (default value)
-
type: write
address: [MAIN, 0xACB1730, 0]
value_type: float
value: [0, 0]
35FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xAC83268, 0]
value_type: float
value: [28.51, 28.51]
# t.MaxFPS
-
type: write
address: [MAIN, 0xACB1730, 0]
value_type: float
value: [35, 35]
-
type: block
what: timing
40FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xAC83268, 0]
value_type: float
value: [25, 25]
# t.MaxFPS
-
type: write
address: [MAIN, 0xACB1730, 0]
value_type: float
value: [40, 40]
-
type: block
what: timing
45FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xAC83268, 0]
value_type: float
value: [22.22, 22.22]
# t.MaxFPS
-
type: write
address: [MAIN, 0xACB1730, 0]
value_type: float
value: [45, 45]
-
type: block
what: timing
50FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xAC83268, 0]
value_type: float
value: [20, 20]
# t.MaxFPS
-
type: write
address: [MAIN, 0xACB1730, 0]
value_type: float
value: [50, 50]
-
type: block
what: timing
55FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xAC83268, 0]
value_type: float
value: [18.18, 18.18]
# t.MaxFPS
-
type: write
address: [MAIN, 0xACB1730, 0]
value_type: float
value: [55, 55]
-
type: block
what: timing
60FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xAC83268, 0]
value_type: float
value: [16.66, 16.66]
# t.MaxFPS
-
type: write
address: [MAIN, 0xACB1730, 0]
value_type: float
value: [0, 0]

View File

@ -1,224 +0,0 @@
# Hot Wheels Unleashed 2 1.0.5
# BID: 3973FB8AC2750BE4
# It is recommended to disable FSR. When FSR is enabled,
# Dynamic Resolution is also disabled and it has worse performance
# at higher FPS, and quality wise it compares to dynamic resolution
# set to lowest res
unsafeCheck: true
15FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: write
address: [MAIN, 0xB4BC090, 0]
value_type: float
value: [66.66, 66.66]
# t.MaxFPS
-
type: write
address: [MAIN, 0xB560E08, 0]
value_type: float
value: [15, 15]
# r.VSync
-
type: write
address: [MAIN, 0xACA1CA8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
20FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xB4BC090, 0]
value_type: float
value: [50, 50]
# t.MaxFPS
-
type: write
address: [MAIN, 0xB560E08, 0]
value_type: float
value: [20, 20]
# r.VSync
-
type: write
address: [MAIN, 0xACA1CA8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
25FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xB4BC090, 0]
value_type: float
value: [40, 40]
# t.MaxFPS
-
type: write
address: [MAIN, 0xB560E08, 0]
value_type: float
value: [25, 25]
# r.VSync
-
type: write
address: [MAIN, 0xACA1CA8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
30FPS:
# r.DynamicRes.FrameTimeBudget (default value)
-
type: write
address: [MAIN, 0xB4BC090, 0]
value_type: float
value: [33.33, 33.33]
# t.MaxFPS (default value)
-
type: write
address: [MAIN, 0xB560E08, 0]
value_type: float
value: [0, 0]
# r.VSync (default is 1)
-
type: write
address: [MAIN, 0xACA1CA8, 0]
value_type: uint32
value: [0, 0]
35FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xB4BC090, 0]
value_type: float
value: [28.51, 28.51]
# t.MaxFPS
-
type: write
address: [MAIN, 0xB560E08, 0]
value_type: float
value: [35, 35]
# r.VSync
-
type: write
address: [MAIN, 0xACA1CA8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
40FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xB4BC090, 0]
value_type: float
value: [25, 25]
# t.MaxFPS
-
type: write
address: [MAIN, 0xB560E08, 0]
value_type: float
value: [40, 40]
# r.VSync
-
type: write
address: [MAIN, 0xACA1CA8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
45FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xB4BC090, 0]
value_type: float
value: [22.22, 22.22]
# t.MaxFPS
-
type: write
address: [MAIN, 0xB560E08, 0]
value_type: float
value: [45, 45]
# r.VSync
-
type: write
address: [MAIN, 0xACA1CA8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
50FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xB4BC090, 0]
value_type: float
value: [20, 20]
# t.MaxFPS
-
type: write
address: [MAIN, 0xB560E08, 0]
value_type: float
value: [50, 50]
# r.VSync
-
type: write
address: [MAIN, 0xACA1CA8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
55FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xB4BC090, 0]
value_type: float
value: [18.18, 18.18]
# t.MaxFPS
-
type: write
address: [MAIN, 0xB560E08, 0]
value_type: float
value: [55, 55]
# r.VSync
-
type: write
address: [MAIN, 0xACA1CA8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
60FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xB4BC090, 0]
value_type: float
value: [16.66, 16.66]
# t.MaxFPS
-
type: write
address: [MAIN, 0xB560E08, 0]
value_type: float
value: [0, 0]
# r.VSync
-
type: write
address: [MAIN, 0xACA1CA8, 0]
value_type: uint32
value: [0, 0]

View File

@ -0,0 +1,32 @@
# Hot Wheels Unleashed 2 1.0.9
# BID: C95F34910CE1CDC0
# It is recommended to disable FSR. When FSR is enabled,
# Dynamic Resolution is also disabled and it has worse performance
# at higher FPS, and quality wise it compares to dynamic resolution
# set to lowest res
unsafeCheck: true
ALL_FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0xB58F090, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xB633E08, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0xAD75A78, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# HOT WHEELS UNLEASHED 2 1.0.10
# BID: E1F81DC590FDE0B5
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0xAD74458, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0xB58E090, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xB632E08, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -1,224 +0,0 @@
# Hot Wheels Unleashed 2 1.0.4
# BID: EBD417A7EB6B5486
# It is recommended to disable FSR. When FSR is enabled,
# Dynamic Resolution is also disabled and it has worse performance
# at higher FPS, and quality wise it compares to dynamic resolution
# set to lowest res
unsafeCheck: true
15FPS:
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: write
address: [MAIN, 0xADC3278, 0]
value_type: float
value: [66.66, 66.66]
# t.MaxFPS
-
type: write
address: [MAIN, 0xADF1740, 0]
value_type: float
value: [15, 15]
# r.VSync
-
type: write
address: [MAIN, 0xA5F0238, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
20FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xADC3278, 0]
value_type: float
value: [50, 50]
# t.MaxFPS
-
type: write
address: [MAIN, 0xADF1740, 0]
value_type: float
value: [20, 20]
# r.VSync
-
type: write
address: [MAIN, 0xA5F0238, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
25FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xADC3278, 0]
value_type: float
value: [40, 40]
# t.MaxFPS
-
type: write
address: [MAIN, 0xADF1740, 0]
value_type: float
value: [25, 25]
# r.VSync
-
type: write
address: [MAIN, 0xA5F0238, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
30FPS:
# r.DynamicRes.FrameTimeBudget (default value)
-
type: write
address: [MAIN, 0xADC3278, 0]
value_type: float
value: [33.33, 33.33]
# t.MaxFPS (default value)
-
type: write
address: [MAIN, 0xADF1740, 0]
value_type: float
value: [0, 0]
# r.VSync (default is 1)
-
type: write
address: [MAIN, 0xA5F0238, 0]
value_type: uint32
value: [0, 0]
35FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xADC3278, 0]
value_type: float
value: [28.51, 28.51]
# t.MaxFPS
-
type: write
address: [MAIN, 0xADF1740, 0]
value_type: float
value: [35, 35]
# r.VSync
-
type: write
address: [MAIN, 0xA5F0238, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
40FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xADC3278, 0]
value_type: float
value: [25, 25]
# t.MaxFPS
-
type: write
address: [MAIN, 0xADF1740, 0]
value_type: float
value: [40, 40]
# r.VSync
-
type: write
address: [MAIN, 0xA5F0238, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
45FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xADC3278, 0]
value_type: float
value: [22.22, 22.22]
# t.MaxFPS
-
type: write
address: [MAIN, 0xADF1740, 0]
value_type: float
value: [45, 45]
# r.VSync
-
type: write
address: [MAIN, 0xA5F0238, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
50FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xADC3278, 0]
value_type: float
value: [20, 20]
# t.MaxFPS
-
type: write
address: [MAIN, 0xADF1740, 0]
value_type: float
value: [50, 50]
# r.VSync
-
type: write
address: [MAIN, 0xA5F0238, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
55FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xADC3278, 0]
value_type: float
value: [18.18, 18.18]
# t.MaxFPS
-
type: write
address: [MAIN, 0xADF1740, 0]
value_type: float
value: [55, 55]
# r.VSync
-
type: write
address: [MAIN, 0xA5F0238, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing
60FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0xADC3278, 0]
value_type: float
value: [16.66, 16.66]
# t.MaxFPS
-
type: write
address: [MAIN, 0xADF1740, 0]
value_type: float
value: [0, 0]
# r.VSync
-
type: write
address: [MAIN, 0xA5F0238, 0]
value_type: uint32
value: [0, 0]

View File

@ -0,0 +1,27 @@
# HOT WHEELS UNLEASHED 2 1.0.11
# BID: FE78C7B94C4E791A
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0xAD73888, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0xB58D090, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xB631E08, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -3,190 +3,22 @@
unsafeCheck: true
15FPS:
ALL_FPS:
-
type: write
type: evaluate_write
address: [MAIN, 0x1D15228]
value_type: int32
value: [15, 2]
value: [FPS_LOCK_TARGET, VSYNC_TARGET]
-
type: write
type: evaluate_write
address: [MAIN, 0x1D28CB8]
value_type: float
value: 15
value: FPS_TARGET
-
type: write
type: evaluate_write
address: [MAIN, 0x2A88DC0]
value_type: int32
value: 1
-
type: block
what: timing
20FPS:
-
type: write
address: [MAIN, 0x1D15228]
value_type: int32
value: [20, 2]
-
type: write
address: [MAIN, 0x1D28CB8]
value_type: float
value: 20
-
type: write
address: [MAIN, 0x2A88DC0]
value_type: int32
value: 1
-
type: block
what: timing
25FPS:
-
type: write
address: [MAIN, 0x1D15228]
value_type: int32
value: [25, 2]
-
type: write
address: [MAIN, 0x1D28CB8]
value_type: float
value: 25
-
type: write
address: [MAIN, 0x2A88DC0]
value_type: int32
value: 1
-
type: block
what: timing
30FPS:
-
type: write
address: [MAIN, 0x1D15228]
value_type: int32
value: [30, 2]
-
type: write
address: [MAIN, 0x1D28CB8]
value_type: float
value: 30
-
type: write
address: [MAIN, 0x2A88DC0]
value_type: int32
value: 1
35FPS:
-
type: write
address: [MAIN, 0x1D15228]
value_type: int32
value: [35, 1]
-
type: write
address: [MAIN, 0x1D28CB8]
value_type: float
value: 35
-
type: write
address: [MAIN, 0x2A88DC0]
value_type: int32
value: 0
-
type: block
what: timing
40FPS:
-
type: write
address: [MAIN, 0x1D15228]
value_type: int32
value: [40, 1]
-
type: write
address: [MAIN, 0x1D28CB8]
value_type: float
value: 40
-
type: write
address: [MAIN, 0x2A88DC0]
value_type: int32
value: 0
-
type: block
what: timing
45FPS:
-
type: write
address: [MAIN, 0x1D15228]
value_type: int32
value: [45, 1]
-
type: write
address: [MAIN, 0x1D28CB8]
value_type: float
value: 45
-
type: write
address: [MAIN, 0x2A88DC0]
value_type: int32
value: 0
-
type: block
what: timing
50FPS:
-
type: write
address: [MAIN, 0x1D15228]
value_type: int32
value: [50, 1]
-
type: write
address: [MAIN, 0x1D28CB8]
value_type: float
value: 50
-
type: write
address: [MAIN, 0x2A88DC0]
value_type: int32
value: 0
-
type: block
what: timing
55FPS:
-
type: write
address: [MAIN, 0x1D15228]
value_type: int32
value: [55, 1]
-
type: write
address: [MAIN, 0x1D28CB8]
value_type: float
value: 55
-
type: write
address: [MAIN, 0x2A88DC0]
value_type: int32
value: 0
-
type: block
what: timing
60FPS:
-
type: write
address: [MAIN, 0x1D15228]
value_type: int32
value: [60, 1]
-
type: write
address: [MAIN, 0x1D28CB8]
value_type: float
value: 60
-
type: write
address: [MAIN, 0x2A88DC0]
value_type: int32
value: 0
value: "VSYNC_TARGET - 1"
-
type: block
what: timing

View File

@ -10,64 +10,10 @@ MASTER_WRITE:
main_offset: 0xEA22EC
value_type: uint32
value: 0xB20007E8
15FPS:
ALL_FPS:
# DUMMY
-
type: write
address: [MAIN, 0xA7FA900]
value_type: uint8
value: 0
20FPS:
-
type: write
address: [MAIN, 0xA7FA900]
value_type: uint8
value: 0
25FPS:
-
type: write
address: [MAIN, 0xA7FA900]
value_type: uint8
value: 0
30FPS:
-
type: write
address: [MAIN, 0xA7FA900]
value_type: uint8
value: 0
35FPS:
-
type: write
address: [MAIN, 0xA7FA900]
value_type: uint8
value: 0
40FPS:
-
type: write
address: [MAIN, 0xA7FA900]
value_type: uint8
value: 0
45FPS:
-
type: write
address: [MAIN, 0xA7FA900]
value_type: uint8
value: 0
50FPS:
-
type: write
address: [MAIN, 0xA7FA900]
value_type: uint8
value: 0
55FPS:
-
type: write
address: [MAIN, 0xA7FA900]
value_type: uint8
value: 0
60FPS:
-
type: write
address: [MAIN, 0xA7FA900]
value_type: uint8
value: 0

View File

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

View File

@ -0,0 +1,27 @@
# Goat Simulator 3 1.0.7.3
# BID: 26AB1CB54DD4508D
unsafeCheck: false
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x934D2F8, 0]
value_type: float
value: ["0.81 * FRAMETIME_TARGET", "0.81 * FRAMETIME_TARGET"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x9372F70, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x8B7D1C8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# Goat Simulator 3 1.0.7.7
# BID: 504EBEAB62E802AD
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,27 @@
# Goat Simulator 3 1.0.7.6
# BID: 8D4FD57DB7D63120
unsafeCheck: false
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x99DD468, 0]
value_type: float
value: ["0.81 * FRAMETIME_TARGET", "0.81 * FRAMETIME_TARGET"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x9A03290, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x920DB48, 0]
value_type: uint32
value: [0, 0]
-
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,27 @@
# Goat Simulator 3 1.0.7.4
# BID: A5DA93E6537350D8
unsafeCheck: false
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x92FE2F8, 0]
value_type: float
value: ["0.81 * FRAMETIME_TARGET", "0.81 * FRAMETIME_TARGET"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x9323F60, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x8B2E1E8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -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

View File

@ -3,157 +3,19 @@
unsafeCheck: true
15FPS:
ALL_FPS:
# r.DynamicRes.FrameTimeBudget = (1000/FPS) cutted to 2 decimals
-
type: write
type: evaluate_write
address: [MAIN, 0x680CAB8, 0]
value_type: float
value: [66.66, 66.66]
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: write
type: evaluate_write
address: [MAIN, 0x683A358, 0]
value_type: float
value: [15, 15]
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing
20FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x680CAB8, 0]
value_type: float
value: [50, 50]
# t.MaxFPS
-
type: write
address: [MAIN, 0x683A358, 0]
value_type: float
value: [20, 20]
-
type: block
what: timing
25FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x680CAB8, 0]
value_type: float
value: [40, 40]
# t.MaxFPS
-
type: write
address: [MAIN, 0x683A358, 0]
value_type: float
value: [25, 25]
-
type: block
what: timing
30FPS:
# r.DynamicRes.FrameTimeBudget (default value)
-
type: write
address: [MAIN, 0x680CAB8, 0]
value_type: float
value: [33.33, 33.33]
# t.MaxFPS (default value)
-
type: write
address: [MAIN, 0x683A358, 0]
value_type: float
value: [0, 0]
35FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x680CAB8, 0]
value_type: float
value: [28.51, 28.51]
# t.MaxFPS
-
type: write
address: [MAIN, 0x683A358, 0]
value_type: float
value: [35, 35]
-
type: block
what: timing
40FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x680CAB8, 0]
value_type: float
value: [25, 25]
# t.MaxFPS
-
type: write
address: [MAIN, 0x683A358, 0]
value_type: float
value: [40, 40]
-
type: block
what: timing
45FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x680CAB8, 0]
value_type: float
value: [22.22, 22.22]
# t.MaxFPS
-
type: write
address: [MAIN, 0x683A358, 0]
value_type: float
value: [45, 45]
-
type: block
what: timing
50FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x680CAB8, 0]
value_type: float
value: [20, 20]
# t.MaxFPS
-
type: write
address: [MAIN, 0x683A358, 0]
value_type: float
value: [50, 50]
-
type: block
what: timing
55FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x680CAB8, 0]
value_type: float
value: [18.18, 18.18]
# t.MaxFPS
-
type: write
address: [MAIN, 0x683A358, 0]
value_type: float
value: [55, 55]
-
type: block
what: timing
60FPS:
# r.DynamicRes.FrameTimeBudget
-
type: write
address: [MAIN, 0x680CAB8, 0]
value_type: float
value: [16.66, 16.66]
# t.MaxFPS (default value)
-
type: write
address: [MAIN, 0x683A358, 0]
value_type: float
value: [0, 0]

View File

@ -0,0 +1,27 @@
# Astor: Blade of the Monolith 1.0.2
# BID: 6133D5CC14F51B7A
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x61F0828, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x69BEAD8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x69EC478, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# Astor: Blade of the Monolith 1.0.0 / 1.0.1
# BID: C26E93197DEB4004
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x61EE768, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x69BCAD8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x69EA478, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -0,0 +1,27 @@
# Astor: Blade of the Monolith 1.0.3
# BID: E2AFE5A73F5C0803
unsafeCheck: true
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x61F0828, 0]
value_type: int32
value: [0, 0]
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
-
type: evaluate_write
address: [MAIN, 0x69BEAD8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x69EC478, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -1,91 +0,0 @@
# Farming Simulator 23 Nintendo Switch Edition 1.4.0.1
# BID: 0204E8D91F22A2D1
unsafeCheck: true
15FPS:
# Internal FPS lock
-
type: write
address: [MAIN, 0xFAD5AC]
value_type: float
value: 15
-
type: block
what: timing
20FPS:
-
type: write
address: [MAIN, 0xFAD5AC]
value_type: float
value: 20
-
type: block
what: timing
25FPS:
-
type: write
address: [MAIN, 0xFAD5AC]
value_type: float
value: 25
-
type: block
what: timing
30FPS:
# default value
-
type: write
address: [MAIN, 0xFAD5AC]
value_type: float
value: 30
35FPS:
-
type: write
address: [MAIN, 0xFAD5AC]
value_type: float
value: 35
-
type: block
what: timing
40FPS:
-
type: write
address: [MAIN, 0xFAD5AC]
value_type: float
value: 40
-
type: block
what: timing
45FPS:
-
type: write
address: [MAIN, 0xFAD5AC]
value_type: float
value: 45
-
type: block
what: timing
50FPS:
-
type: write
address: [MAIN, 0xFAD5AC]
value_type: float
value: 50
-
type: block
what: timing
55FPS:
-
type: write
address: [MAIN, 0xFAD5AC]
value_type: float
value: 55
-
type: block
what: timing
60FPS:
-
type: write
address: [MAIN, 0xFAD5AC]
value_type: float
value: 60

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