Compare commits

..

No commits in common. "main" and "2.7-R3" have entirely different histories.
main ... 2.7-R3

328 changed files with 1274 additions and 8597 deletions

View File

@ -8,13 +8,13 @@
### Ultra - это функциональная кастомная прошивка для Nintendo Switch, с упором в разгон и улучшенный пользовательский опыт. ### Ultra - это функциональная кастомная прошивка для Nintendo Switch, с упором в разгон и улучшенный пользовательский опыт.
### [UltraNX 3.0|R1](https://github.com/Ultra-NX/UltraNX/releases/tag/3.0-R1) Поддерживает все HOS до 22.1.0 включительно ### [UltraNX 2.7|R3](https://github.com/Ultra-NX/UltraNX/releases/tag/2.7-R3) Поддерживает все HOS до 21.2.0 включительно (21.2.0 в Safe Mode)
## Особенности Ultra ## Особенности Ultra
* Предварительно настроенный Horizon OC (Преемник EOS) с пресетами. * Предварительно настроенный OC Switchcraft (Преемник OC-Suite, аналог 4IFIR) с пресетами.
* Небольшой андервольт (сниженные вольтажи) в стоке, что заметно снижает потребление консоли, и заметный разгон памяти, который сделает игры плавнее. * Небольшой андервольт (сниженные вольтажи) в стоке, что заметно снижает потребление консоли, и заметный разгон памяти, который сделает игры плавнее.
* Лучший кастомизатор разгона для Свитч - [Ultra-Tuner](https://github.com/Ultra-NX/Ultra/wiki/Tuner-RU#Ultra-Tuner), позволяющий настраивать разгон прямо с консоли. Был первым, и остается неповторимым. * Лучший кастомизатор разгона для Свитч - [Ultra-Tuner](https://github.com/Ultra-NX/Ultra/wiki/Tuner-RU#Ultra-Tuner), позволяющий настраивать разгон прямо с консоли. Был первым, и остается неповторимым.
* Сборка максимально легкая и не нагруженная. В ней нет лишнего, минимум необходимый для разгона и комфортного использования. * Сборка максимально легкая и не нагруженная. В ней нет лишнего, минимум необходимый для разгона и комфортного использования.
@ -34,7 +34,7 @@
1. **[Atmosphere](https://github.com/Atmosphere-NX/Atmosphere)** - Atmosphère, кастомная прошивка для Nintendo Switch. 1. **[Atmosphere](https://github.com/Atmosphere-NX/Atmosphere)** - Atmosphère, кастомная прошивка для Nintendo Switch.
1. **[Hekate](https://github.com/CTCaer/hekate)** - Пользовательский графический загрузчик Nintendo Switch, патчер прошивки, инструментарий и многое другое. 1. **[Hekate](https://github.com/CTCaer/hekate)** - Пользовательский графический загрузчик Nintendo Switch, патчер прошивки, инструментарий и многое другое.
1. **[Ultra Tuner](https://github.com/Ultra-NX/Ultra-Tuner)** - Пакет для Ultrahand, позволяющий произвести тонкую настройку параметров под свою консоль. В случае нестабильной работы разгона, или при желании увеличить производительность консоли, Ultra Tuner - Ваш незаменимый помощник. 1. **[Ultra Tuner](https://github.com/Ultra-NX/Ultra-Tuner)** - Пакет для Ultrahand, позволяющий произвести тонкую настройку параметров под свою консоль. В случае нестабильной работы разгона, или при желании увеличить производительность консоли, Ultra Tuner - Ваш незаменимый помощник.
1. **[Horizon OC](https://github.com/Horizon-OC/Horizon-OC)** - Загрузчик Атмосферы с разгоном от Soul и Lightos, позволяет выжать из N.Switch мощность Xbox One. Вовремя обновляется для поддержки новых возможностей Атмосферы. 1. **[OC-Switchcraft](https://github.com/halop/OC-Switchcraft-EOS/releases)**, форк **[OC-Suite](https://github.com/hanai3Bi/Switch-OC-Suite/)** - Загрузчик Атмосферы с разгоном от B3711 и Meha, позволяет выжать из N.Switch мощность Xbox One. Вовремя обновляется для поддержки новых возможностей Атмосферы.
1. **Установленные пейлоады**: 1. **Установленные пейлоады**:
@ -43,6 +43,7 @@
1. **Установленные Homebrew** 1. **Установленные Homebrew**
* [Sphaira](https://github.com/ITotalJustice/sphaira) - Современное Хоумбрю Меню, аналог nx-hbmenu
* [AiO Switch Updater](https://github.com/HamletDuFromage/aio-switch-updater) - Программа для обновления UltraNX до актуальной версии, а так же для скачивания читов и HOS. * [AiO Switch Updater](https://github.com/HamletDuFromage/aio-switch-updater) - Программа для обновления UltraNX до актуальной версии, а так же для скачивания читов и HOS.
* [Daybreak](https://github.com/Atmosphere-NX/Atmosphere) - Программа для обновления HOS (системного ПО). * [Daybreak](https://github.com/Atmosphere-NX/Atmosphere) - Программа для обновления HOS (системного ПО).
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1100#entry86288632) - Лучший файловый менеджер, менеджер сохранений и установщик программ на консоль. * [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1100#entry86288632) - Лучший файловый менеджер, менеджер сохранений и установщик программ на консоль.
@ -50,26 +51,26 @@
1. **Установленные модули** 1. **Установленные модули**
* [SaltyNX](https://github.com/masagrator/SaltyNX) - Фоновый модуль, позволяющий модифицировать файлы\процессы в консоли, поддерживает плагины. * [SaltyNX](https://github.com/masagrator/SaltyNX) - Фоновый модуль, позволяющий модифицировать файлы\процессы в консоли, поддерживает плагины.
* [sys-clk](https://github.com/ppkantorski/sys-clk) - Модуль отвечающий за разгон процессора, памяти и видеочипа - для лучшей производительности.
* [nx-ovlloader](https://github.com/ppkantorski/nx-ovlloader) - С помощью этого модуля осуществляется переключение установленных модулей. * [nx-ovlloader](https://github.com/ppkantorski/nx-ovlloader) - С помощью этого модуля осуществляется переключение установленных модулей.
* [sys-patch](https://github.com/borntohonk/sys-patch) - Патчит систему на работу неподписанного софта вместо сигпатчей. * [sys-patch](https://github.com/impeeza/sys-patch) - Патчит систему на работу неподписанного софта вместо сигпатчей.
* [Mission Control](https://github.com/ndeadly/MissionControl) - Модуль, позволяющий подключать практически любые геймпады к консоли по Bluetooth. * [Mission Control](https://github.com/ndeadly/MissionControl) - Модуль, позволяющий подключать практически любые геймпады к консоли по Bluetooth.
* [sys-con](https://github.com/o0Zz/sys-con) - Модуль, позволяющий подключать практически любые геймпады к консоли по USB. * [sys-con](https://github.com/o0Zz/sys-con) - Модуль, позволяющий подключать практически любые геймпады к консоли по USB.
* [Ultrahand Overlay](https://github.com/ppkantorski/Ultrahand-Overlay) - Специальное оверлей-меню для взаимодействия с системой: разгон, управление режимами через ReverseNX, включение читов, прочее. Также позволяет использовать самописные пакеты, например - Ultra Tuner. * [Ultrahand Overlay](https://github.com/ppkantorski/Ultrahand-Overlay) - Специальное оверлей-меню для взаимодействия с системой: разгон, управление режимами через ReverseNX, включение читов, прочее. Также позволяет использовать самописные пакеты, например - Ultra Tuner.
- [Horizon OC](https://github.com/Horizon-OC/Horizon-OC) - Оверлей для управления модулем sys-clk. - **`Ultra OC (sys-clk)`**, мод [sys-clk](https://github.com/ppkantorski/sys-clk) - Оверлей для управления модулем sys-clk. Немного изменен мной, но без копания в исходниках (Так как они закрыты).
- [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay) - Оверлей позволяющий следить за параметрами консоли в реальном времени. Может выступать в качестве счетчика FPS. Сменить пресет Micro-оверлея можно в Tuner. - [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay), форк [Status Monitor](https://github.com/hanai3Bi/Status-Monitor-Overlay) - Оверлей позволяющий следить за параметрами консоли в реальном времени. Может выступать в качестве счетчика FPS. Сменить пресет Micro-оверлея можно в Tuner.
- [FPSLocker](https://github.com/ppkantorski/FPSLocker) - Оверлей, позволяющий разблокировать 60 FPS в играх. - [FPSLocker](https://github.com/masagrator/FPSLocker) - Оверлей, позволяющий разблокировать 60 FPS в играх.
- [EdiZon](https://github.com/proferabg/EdiZon-Overlay) - Оверлей для использования читов, включая графические. - [EdiZon](https://github.com/ppkantorski/EdiZon-Overlay) - Оверлей для использования читов, включая графические.
- [ReverseNX-RT](https://github.com/ppkantorski/ReverseNX-RT) - Оверлей для переключения запущенной игры в портатив\док, меняет настройки графики\разрешения в играх. - [ReverseNX-RT](https://github.com/masagrator/ReverseNX-RT) - Оверлей для переключения запущенной игры в портатив\док, меняет настройки графики\разрешения в играх.
- [Sysmodules](https://github.com/ppkantorski/ovl-sysmodules) - Оверлей для включения\отключения установленных системных модулей. - [Sysmodules](https://github.com/ppkantorski/ovl-sysmodules) - Оверлей для включения\отключения установленных системных модулей.
1. **Доступные для скачивания через [Ultra Tuner](https://github.com/Ultra-NX/UltraNX/wiki/Tuner-RU#ultra-tuner)** 1. **Доступные для скачивания через [Ultra Tuner](https://github.com/Ultra-NX/UltraNX/wiki/Tuner-RU#ultra-tuner)**
* Homebrews: * Homebrews:
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1100#entry86288632) - Здесь можно скачать DBI или обновить имеющийся. * [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1100#entry86288632) - Здесь можно скачать DBI или обновить имеющийся.
* [AIO](https://github.com/HamletDuFromage/aio-switch-updater) - Скачивает настроенный AIO для UltraNX.
* [Linkalho](https://gbatemp.net/download/linkalho.38822) - Программа для привязки аккаунта. Без привязки не будут работать некоторые игры. * [Linkalho](https://gbatemp.net/download/linkalho.38822) - Программа для привязки аккаунта. Без привязки не будут работать некоторые игры.
* [PPSSPP](https://gbatemp.net/threads/ppsspp-switch-standalone-beta.544071/post-10805015) - Эмулятор PSP. * [Sphaira](https://github.com/ITotalJustice/sphaira) - Здесь можно обновить Sphaira\обновить ее конфиг.
* [DuckStation](https://gbatemp.net/threads/duckstation-for-switch.654484/page-7#post-10768042) - Эмулятор PS1. * [PPSSPP](https://gbatemp.net/threads/ppsspp-switch-standalone-beta.544071/post-10492671) - Эмулятор PSP.
* [Moonlight](https://github.com/XITRIX/Moonlight-Switch) - Клиент Moonlight, позволяет транслировать на консоль игры с PC. * [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) - Поиск и установка тем на свитч. * [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) - Программа для сброса контроллера батареи. Не используйте просто так! * [Battery Desync Fix](https://github.com/CTCaer/battery_desync_fix_nx) - Программа для сброса контроллера батареи. Не используйте просто так!
@ -79,18 +80,17 @@
* Overlays: * Overlays:
* [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay) - Форк Status Monitor от kantorski. * [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay) - Форк Status Monitor от kantorski.
* [sys-dock](https://github.com/masagrator/sys-dock) - Модуль позволяющий изменять частоту подключенного экрана через Док.
* [Tetris](https://github.com/ppkantorski/Tetris-Overlay) - Та самая игра в виде оверлея. Работает только на последних версиях Ultrahand. * [Tetris](https://github.com/ppkantorski/Tetris-Overlay) - Та самая игра в виде оверлея. Работает только на последних версиях Ultrahand.
* [MasterVolume](https://github.com/averne/MasterVolume) - Регулировка глобальной громкости, позволяет поднять громкость выше максимума. Использовать аккуратно! * [MasterVolume](https://github.com/averne/MasterVolume) - Регулировка глобальной громкости, позволяет поднять громкость выше максимума. Использовать аккуратно!
* [NX-FanControl](https://github.com/Insektaure/NX-FanControl) + [NX-FanControl Overlay Fork](https://github.com/ppkantorski/NX-FanControl) - Модуль для ручной регулировки оборотов кулера. Изменения применяются сразу, модуль смотрит на температуру SOC а не Skin, как Атмосфера. * [NX-FanControl](https://github.com/Insektaure/NX-FanControl) - Модуль для ручной регулировки оборотов кулера. Изменения применяются сразу, модуль смотрит на температуру SOC а не Skin, как Атмосфера.
* [BT Audio](https://github.com/masagrator/BT_Audio-ovl) - Оверлей, позволяющий быстро отключаться\подключаться к bluetooth-гарнитуре. * [BT Audio](https://github.com/masagrator/BT_Audio-ovl) - Оверлей, позволяющий быстро отключаться\подключаться к bluetooth-гарнитуре.
* [Fizeau](https://github.com/averne/Fizeau) + [Fizeau Overlay Fork](https://github.com/ppkantorski/Fizeau) - Модуль для изменения цветового профиля экрана. * [Fizeau](https://github.com/averne/Fizeau) - Модуль для изменения цветового профиля экрана.
* [sys-tune](https://github.com/ppkantorski/sys-tune) - Оверлей-музыкальный плеер, работает в фоне. * [sys-tune](https://github.com/HookedBehemoth/sys-tune) - Оверлей-музыкальный плеер, работает в фоне.
* Other: * Other:
* [FPSLocker Patches](https://github.com/masagrator/FPSLocker-Warehouse) - Пакет патчей для FPSLocker, позволяет обновить все патчи сразу, вместо скачивания по одному через оверлей FPSLocker'а. В Ультре по умолчанию всегда последние патчи, так что достаточно своевременно обновлять сборку. * [FPSLocker Patches](https://github.com/masagrator/FPSLocker-Warehouse) - Пакет патчей для FPSLocker, позволяет обновить все патчи сразу, вместо скачивания по одному через оверлей FPSLocker'а. В Ультре по умолчанию всегда последние патчи, так что достаточно своевременно обновлять сборку.
* [DVR Patches](https://github.com/exelix11/dvr-patches) - Патчи SysDVR, работают и без системного модуля, активируя фоновую запись в играх, где это изначально запрещено. * [DVR Patches](https://github.com/exelix11/dvr-patches) - Патчи SysDVR, работают и без системного модуля, активируя фоновую запись в играх, где это изначально запрещено.
* [Mod Alchemist](https://github.com/ppkantorski/Alchemist) - Пакет для скачивания, установки и управления модами для игр. * [Mod Alchemist](https://github.com/ppkantorski/Mod-Alchemist) - Пакет для скачивания, установки и управления модами для игр.
* [sys-ftpd](https://github.com/ELY3M/sys-ftpd) - FTP сервер, работающий на фоне. * [sys-ftpd](https://github.com/ELY3M/sys-ftpd) - FTP сервер, работающий на фоне.
@ -124,12 +124,12 @@
``` ```
СБП (Т-Банк): +79168089980 СБП (Т-Банк): +79168089980
Альфа: 2200152336577997 Альфа : 2200152336577997
Т-Банк: 2200700170486970 Т-Банк : 2200700170486970
Сбер: 2202200513345833 Сбер : 2202200513345833
TON: UQC9p9jHJHLVnm4uXJDoH4GQ76golzgKnG-bEExO2QsotCV5 TON: UQA9My51bkGZHbYhbdRZfp6B60N7VJfsnKl0sakgw9YhAPct
BTC: bc1q407f2fv3nsdy86y6njfx8updhxfmuwx49erhal BTC: 18K6NN8NEavvMJL5Do3VTyJbL8NeZPHo93
USDT TRC20: TUZ5szAmRsnvBuC4rFB8RaAoCbN6Ucy4sL USDT TRC20: TUZ5szAmRsnvBuC4rFB8RaAoCbN6Ucy4sL
``` ```

View File

@ -6,13 +6,13 @@
# #
### Ultra is a functional custom firmware for Nintendo Switch, with a focus on overclocking and an improved user experience. ### Ultra is a functional custom firmware for Nintendo Switch, with a focus on overclocking and an improved user experience.
### [UltraNX 3.0|R1](https://github.com/Ultra-NX/UltraNX/releases/tag/3.0-R1) Supports all HOS up to and including 22.1.0 ### [UltraNX 2.7|R3](https://github.com/Ultra-NX/UltraNX/releases/tag/2.7-R3) Supports all HOS up to and including 21.2.0 (21.2.0 in Safe Mode)
## Features of Ultra ## Features of Ultra
* Pre-configured Horizon OC (Successor to EOS) 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. * 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 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. * The CFW is as light as possible. There are no unnecessary things in it, only minimum necessary for overclocking and comfortable use.
@ -30,7 +30,7 @@
1. **[Atmosphere](https://github.com/Atmosphere-NX/Atmosphere)** - Atmosphère, custom firmware for the Nintendo Switch. 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. **[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 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. **[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. **[Horizon OC](https://github.com/Horizon-OC/Horizon-OC)** - Atmosphere Loader with overclocking from Soul & Lightos, allows you to reach from N.Switch power Xbox One. Updated in time to support new Atmosphere features. 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 & Meha, allows you to reach from N.Switch power Xbox One. Updated in time to support new Atmosphere features.
1. **Installed Payloads**: 1. **Installed Payloads**:
@ -39,6 +39,7 @@
1. **Installed Homebrew** 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 & HOS. * [AiO Switch Updater](https://github.com/HamletDuFromage/aio-switch-updater) - Program to update Ultra to the current version, as well as to download cheats & HOS.
* [Daybreak](https://github.com/Atmosphere-NX/Atmosphere) - A program for updating HOS. * [Daybreak](https://github.com/Atmosphere-NX/Atmosphere) - A program for updating HOS.
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1100#entry86288632) - The best file manager, save manager and program installer on the console. * [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1100#entry86288632) - The best file manager, save manager and program installer on the console.
@ -46,26 +47,26 @@
1. **Installed Modules** 1. **Installed Modules**
* [SaltyNX](https://github.com/masagrator/SaltyNX) - Background module allowing to modify files/processes in console, supports plugins. * [SaltyNX](https://github.com/masagrator/SaltyNX) - Background module allowing to modify files/processes in console, supports plugins.
* [sys-clk](https://github.com/ppkantorski/sys-clk) - Module responsible for overclocking CPU, memory and GPU - for better performance.
* [nx-ovlloader](https://github.com/ppkantorski/nx-ovlloader) - This module is used to switch the installed modules. * [nx-ovlloader](https://github.com/ppkantorski/nx-ovlloader) - This module is used to switch the installed modules.
* [sys-patch](https://github.com/borntohonk/sys-patch) - Patches the system to run unsigned software instead of sigpatches. * [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. * [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. * [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. * [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.
- [Horizon OC](https://github.com/Horizon-OC/Horizon-OC) - Overlay for controlling sys-clk module. - **`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) - Overlay that allows you to monitor console parameters in real time. It can act as an FPS counter. You change preset of Micro-overlay appearance in Tuner. - [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay), a fork of [Status Monitor](https://github.com/masagrator/Status-Monitor-Overlay) - Overlay that allows you to monitor console parameters in real time. It can act as an FPS counter. You change preset of Micro-overlay appearance in Tuner.
- [FPSLocker](https://github.com/ppkantorski/FPSLocker) - An overlay that allows you to unlock 60 FPS in games. - [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. - [EdiZon](https://github.com/ppkantorski/EdiZon-Overlay) - An overlay for using cheats.
- [ReverseNX-RT](https://github.com/ppkantorski/ReverseNX-RT) - An overlay for switching a running game to a handheld\dock mode, which changes the graphics and resolution settings in games. - [ReverseNX-RT](https://github.com/masagrator/ReverseNX-RT) - An overlay for switching a running game to a handheld\dock mode, which changes the graphics and resolution settings in games.
- [Sysmodules](https://github.com/ppkantorski/ovl-sysmodules) - Overlay for enabling\disabling installed system modules. - [Sysmodules](https://github.com/ppkantorski/ovl-sysmodules) - Overlay for enabling\disabling installed system modules.
1. **Available for download via [Updater](https://github.com/Ultra-NX/Ultra/wiki/Tuner-RU#Updater)** 1. **Available for download via [Updater](https://github.com/Ultra-NX/Ultra/wiki/Tuner-RU#Updater)**
* Homebrews: * Homebrews:
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1100#entry86288632) - Here you can download a DBI or update an existing one. * [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1100#entry86288632) - Here you can download a DBI or update an existing one.
* [AIO](https://github.com/HamletDuFromage/aio-switch-updater) - Downloads the configured AIO for UltraNX. * [Linkalho](https://gbatemp.net/download/linkalho.38822/) - Account linking program. Some games won't work without the link.
* [Linkalho](https://gbatemp.net/download/linkalho.38822/) - Account linking program. Some games won't work without the link.= * [Sphaira](https://github.com/ITotalJustice/sphaira) - Here you can update Sphaira\update its config.
* [PPSSPP](https://gbatemp.net/threads/ppsspp-switch-standalone-beta.544071/post-10805015) - PSP emulator. * [PPSSPP](https://gbatemp.net/threads/ppsspp-switch-standalone-beta.544071/post-10492671) - PSP emulator.
* [DuckStation](https://gbatemp.net/threads/duckstation-for-switch.654484/page-7#post-10768042) - PS1 emulator.
* [Moonlight](https://github.com/XITRIX/Moonlight-Switch) - Moonlight client, allows to stream games from PC. * [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. * [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! * [Battery Desync Fix](https://github.com/CTCaer/battery_desync_fix_nx) - Program to reset the battery controller. Do not use unnecessarily!
@ -75,18 +76,17 @@
* Overlays: * Overlays:
* [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay) - Status Monitor fork from kantorski. * [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay) - Status Monitor fork from kantorski.
* [sys-dock](https://github.com/masagrator/sys-dock) - A module that allows you to change the frequency of your connected screen via the Dock.
* [Tetris](https://github.com/ppkantorski/Tetris-Overlay/) - "That" game in the form of an overlay. Works only on the latest versions of Ultrahand. * [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! * [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/Insektaure/NX-FanControl) + [NX-FanControl Overlay Fork](https://github.com/ppkantorski/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. * [NX-FanControl](https://github.com/Insektaure/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. * [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) + [Fizeau Overlay Fork](https://github.com/ppkantorski/Fizeau) - Module for changing the screen color profile. * [Fizeau](https://github.com/averne/Fizeau) - Module for changing the screen color profile.
* [sys-tune](https://github.com/ppkantorski/sys-tune) - Overlay music player, works in background. * [sys-tune](https://github.com/HookedBehemoth/sys-tune) - Overlay music player, works in background.
* Other: * Other:
* [FPSLocker Patches](https://github.com/masagrator/FPSLocker-Warehouse) - The patch package for FPSLocker allows you to update all patches at once, instead of downloading one at a time through the FPSLocker overlay. UltraNX always has the latest patches by default, so it's enough to update the CFW in a timely manner. * [FPSLocker Patches](https://github.com/masagrator/FPSLocker-Warehouse) - The patch package for FPSLocker allows you to update all patches at once, instead of downloading one at a time through the FPSLocker overlay. UltraNX always has the latest patches by default, so it's enough to update the CFW in a timely manner.
* [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. * [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/Alchemist) - A package for downloading, installing, and managing mods for games. * [Mod Alchemist](https://github.com/ppkantorski/Mod-Alchemist) - A package for downloading, installing, and managing mods for games.
* [sys-ftpd](https://github.com/ELY3M/sys-ftpd) - FTP server running in background. * [sys-ftpd](https://github.com/ELY3M/sys-ftpd) - FTP server running in background.
@ -116,7 +116,7 @@ Listed below are the licenses of those programs that have been modified specific
If you like the project and you have a desire to support me with a penny - I will be very grateful. 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. I have no other income at the moment, so any monetary help is very valuable to me.
``` ```
TON: UQC9p9jHJHLVnm4uXJDoH4GQ76golzgKnG-bEExO2QsotCV5 TON: UQA9My51bkGZHbYhbdRZfp6B60N7VJfsnKl0sakgw9YhAPct
BTC: bc1q407f2fv3nsdy86y6njfx8updhxfmuwx49erhal BTC: 18K6NN8NEavvMJL5Do3VTyJbL8NeZPHo93
USDT TRC20: TUZ5szAmRsnvBuC4rFB8RaAoCbN6Ucy4sL USDT TRC20: TUZ5szAmRsnvBuC4rFB8RaAoCbN6Ucy4sL
``` ```

View File

@ -1,36 +0,0 @@
# レッド・デッド・リデンプション 1.0.6-1.0.7
# BID: 005CB235608DCEDD
DECLARATIONS:
-
type: variable
name: dr_frametime_target
value_type: float
default_value: 31.415926
evaluate: "0.94247778 * FRAMETIME_TARGET"
-
type: code
name: getDrTarget
instructions: [
[adrp, x20, $dr_frametime_target],
[ldr, s2, [x20, $dr_frametime_target]],
[ret]
]
MASTER_WRITE:
# REF: 22 BC 22 1E 21 93 45 BD
# sagRenderer::UpdateDynamicResolutionScaling()
-
type: asm_a64
main_offset: 0x139521C
instructions: [
[bl, _getDrTarget()]
]
ALL_FPS:
# rage::grcDevice::sm_FrameLock
# I guess just in case?
## REF: 6A 19 01 B9 EA 17 9F 1A, ADRP X21 + STR below it
-
type: evaluate_write
address: [MAIN, 0x20DAA20]
value_type: uint32
value: VSYNC_TARGET

View File

@ -1,26 +0,0 @@
# Fuga: Melodies of Steel 1.1.8
# BID: 55C51FEEAA71E42D
ALL_FPS:
# Disable bUseFixedFrameRate
-
type: write
address: [MAIN, 0x67285B8, 0x7B8]
address_unsafe: true
value_type: uint32
value: 7
# r.VSync
-
type: write
address: [MAIN, 0x5F60428, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x6728E88, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -1,75 +0,0 @@
# 無双アビス 1.8.0
# BID: 7FB0CED6B8B51B80
DECLARATIONS:
-
type: variable
name: dr_target1
value_type: float
default_value: 50
evaluate: "1.5 * FRAMETIME_TARGET"
-
type: variable
name: dr_target2
value_type: float
default_value: 40
evaluate: "1.2 * FRAMETIME_TARGET"
MASTER_WRITE:
# REF: 09 49 A8 52 21 01 27 1E 00 20 21 1E
# Use FPS Target instead of vsync value for Dynamic Resolution max delta
-
type: asm_a64
main_offset: 0x8EEAC0
instructions: [
[adrp, x1, 0x1272000],
[ldr, s1, [x1, 0xE30]]
]
# Redirect DR Targets
-
type: asm_a64
main_offset: 0x8EEB64
instructions: [
[adrp, x9, $dr_target1],
[ldr, s1, [x9, $dr_target1]]
]
-
type: asm_a64
main_offset: 0x8EEB74
instructions: [
[adrp, x9, $dr_target2],
[ldr, s1, [x9, $dr_target2]]
]
ALL_FPS:
# REF: 00 00 F0 42 78 00 00 00 00 00 F0 42 04 00 00 00
# FPS Lock
-
type: evaluate_write
address: [MAIN, 0x1272E3C]
value_type: uint32
value: "120 / FPS_LOCK_TARGET"
# Prevent from setting it as 0, otherwise game crashes
-
type: evaluate_compare
compare_address: [MAIN, 0x1272E3C]
compare_type: "=="
compare_value_type: uint32
compare_value: 0
address: [MAIN, 0x1272E3C]
value_type: uint32
value: 1
# Others
-
type: evaluate_write
address: [MAIN, 0x1272E30]
value_type: float
value: "FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0x1272E34]
value_type: uint32
value: "FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0x1272E38]
value_type: float
value: "FPS_TARGET"

View File

@ -1,75 +0,0 @@
# 無双アビス 1.7.0
# BID: E09BC148192342B1
DECLARATIONS:
-
type: variable
name: dr_target1
value_type: float
default_value: 50
evaluate: "1.5 * FRAMETIME_TARGET"
-
type: variable
name: dr_target2
value_type: float
default_value: 40
evaluate: "1.2 * FRAMETIME_TARGET"
MASTER_WRITE:
# REF: 09 49 A8 52 21 01 27 1E 00 20 21 1E
# Use FPS Target instead of vsync value for Dynamic Resolution max delta
-
type: asm_a64
main_offset: 0x8EBDC0
instructions: [
[adrp, x1, 0x126D000],
[ldr, s1, [x1, 0xE30]]
]
# Redirect DR Targets
-
type: asm_a64
main_offset: 0x8EBE64
instructions: [
[adrp, x9, $dr_target1],
[ldr, s1, [x9, $dr_target1]]
]
-
type: asm_a64
main_offset: 0x8EBE74
instructions: [
[adrp, x9, $dr_target2],
[ldr, s1, [x9, $dr_target2]]
]
ALL_FPS:
# REF: 00 00 F0 42 78 00 00 00 00 00 F0 42 04 00 00 00
# FPS Lock
-
type: evaluate_write
address: [MAIN, 0x126DE3C]
value_type: uint32
value: "120 / FPS_LOCK_TARGET"
# Prevent from setting it as 0, otherwise game crashes
-
type: evaluate_compare
compare_address: [MAIN, 0x126DE3C]
compare_type: "=="
compare_value_type: uint32
compare_value: 0
address: [MAIN, 0x126DE3C]
value_type: uint32
value: 1
# Others
-
type: evaluate_write
address: [MAIN, 0x126DE30]
value_type: float
value: "FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0x126DE34]
value_type: uint32
value: "FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0x126DE38]
value_type: float
value: "FPS_TARGET"

View File

@ -1,25 +0,0 @@
# Remorse: The List 1.2
# BID: 8019D7D61A81AF2B
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x6D09F48, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x6D378D8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x653B7D8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,23 +0,0 @@
# Tales of Berseria Remastered `US` 1.0.4
# BID: 290D5939C6671566
# Known issue: Using barrier devices may not be triggering animation for any other FPS targets than 30, 50, 60, 100, 120.
# Known issue: Opening gate may not happen if you use any other FPS than 30, 60 or 120.
# Solution: when animation doesn't want to progress, change FPS Target to 30, 60 or 120.
ALL_FPS:
# Disable FPS Lock
## REF: 08 69 69 b8 69 ea 41 b9 28 01 08 0b, second result
## Look to which address points ldr w8,[x8, x9, LSL #0x0], this is the interval speed. Substract 4 from offset to get vsync interval and our offset we need to put.
-
type: write
address: [MAIN, 0x44D07A6C]
value_type: uint32
value: [0, 1]
# Speed Factor
## REF: 00 01 3f d6 00 00 22 1e 28 11 91 52 08 91 a7 72
## Find first BLR X8 above search result (ignore BLR X8 in result), then find LDR X8, [X23, #offset]. X23 + offset is our address
-
type: evaluate_write
address: [MAIN, 0x44A926C0, -4]
value_type: float
value: "60 / FPS_TARGET"

View File

@ -1,20 +0,0 @@
# Tales of Berseria Remastered `US` 1.0.2
# BID: F4DB705AA11D45F3
ALL_FPS:
# Disable FPS Lock
## REF: 08 01 40 f9 08 01 09 8b
## X8 from ADD X8, X8, X9, this is the address of vsync interval. 0x4 is interval speed
-
type: write
address: [MAIN, 0x44D039BC]
value_type: uint32
value: [0, 1]
# Speed Factor
## REF: 00 01 3f d6 00 00 22 1e 28 11 91 52 08 91 a7 72
## Find first BLR X8 above search result (ignore BLR X8 in result), then find LDR X8, [X23, #offset]. X23 + offset is our address
-
type: evaluate_write
address: [MAIN, 0x44a8e680, -4]
value_type: float
value: "60 / FPS_TARGET"

View File

@ -1,11 +0,0 @@
# Tomb Raider: Definitive Edition 1.0.2
# BID: AD288DAF31DEEDFD
ALL_FPS:
# Dynamic Resolution Frametime Target
# REF: Search for function that has 4A 1C 80 D2 2A 1C C0 F2, then search instruction with 0x42055555 in that function, it should be written to 2 addresses inside main. Ignore closer address.
-
type: evaluate_write
address: [MAIN, 0x1C32A58]
value_type: float
value: FRAMETIME_TARGET

View File

@ -1,11 +0,0 @@
# Tomb Raider: Definitive Edition 1.0.3
# BID: F5C3661E4631499D
ALL_FPS:
# Dynamic Resolution Frametime Target
# REF: Search for function that has 4A 1C 80 D2 2A 1C C0 F2, then search instruction with 0x42055555 in that function, it should be written to 2 addresses inside main. Ignore closer address.
-
type: evaluate_write
address: [MAIN, 0x1C314D8]
value_type: float
value: FRAMETIME_TARGET

View File

@ -1,25 +0,0 @@
# ソードアート・オンライン フラクチュアード デイドリーム 1.6.0.0
# BID: 1A6C27F8DCFE45CB
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x86BE728, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x86F92D0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7EF8F88, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,25 +0,0 @@
# ソードアート・オンライン フラクチュアード デイドリーム 1.6.1.0
# BID: 99252F8F7EE61A81
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x86AD728, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x86E82D0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7EE7F88, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,16 +0,0 @@
# Phantom Brave: The Lost Hero 1.24
# BID: 5CBE310E8D25E740
ALL_FPS:
# Adjust DR FPS target
## REF: Nmpl::Core::CSingleton<Nmpl::Gra::CGraMgr>::s_singleton + 0x0, this gives us an address to first function of Nmpl::Gra::CGraMgr vtable in NmplDLL.nro that we need to edit
## Then we search in that NRO Nmpl::Core::System::CPerformCnt::frameRate_ and substract them to get final offset
-
type: evaluate_compare
compare_address: [MAIN, 0xE67160, 0, -0x75A5C0]
compare_type: "=="
compare_value_type: uint64
compare_value: 0x3442AB8D51FBBA4D # BID of NRO
address: [MAIN, 0xE67160, 0, 0xE4FCC]
value_type: int32
value: FPS_TARGET

View File

@ -1,10 +0,0 @@
# DreadOut Remastered Collection 1.0.3
# BID: 1C0DA03A066F5B51
ALL_FPS:
# REF: DynamicResolution::.cctor
-
type: evaluate_write
address: [MAIN, 0x3EAE640, 0, 0xB8, 8]
value_type: double
value: [FPS_TARGET, FRAMETIME_TARGET]

View File

@ -1,12 +0,0 @@
# Atelier Resleriana: The Red Alchemist & the White Guardian 1.4b
# BID: 5E6F9D0C5161586B
ALL_FPS:
# MagicaCloth2.MagicaManager_TypeInfo
## REF: 00 10 2e 1e 01 e4 00 2f 00 21 20 1e, first result, second ADRP+ADD in function
-
type: evaluate_write
address: [MAIN, 0x7791FE8, 0xB8, 0, 0x10, 0x20, 0x10]
address_unsafe: true
value_type: uint32
value: "FPS_TARGET + 5"

View File

@ -1,11 +0,0 @@
# Atelier Resleriana: The Red Alchemist & the White Guardian 1.4a
# BID: B87B6963DF4DA555
ALL_FPS:
# MagicaCloth2.MagicaManager_TypeInfo
-
type: evaluate_write
address: [MAIN, 0x778FFD0, 0xB8, 0, 0x10, 0x20, 0x10]
address_unsafe: true
value_type: uint32
value: "FPS_TARGET + 5"

View File

@ -1,19 +0,0 @@
# 옥토패스 트래블러 0 1.0.4
# BID: C7C4E3FE091EB9A0
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6C516E8, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7C738E0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -1,25 +0,0 @@
# Conarium 1.0.47
# BID: 61BE54905F0EC450
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x5F412A0, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x5F6BDC8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x57A37E8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,58 +0,0 @@
# 삼국지8 REMAKE 1.1.2
# BID: B69833AF0E07CE82
# Cursor speed is tied to framerate
DECLARATIONS:
# DON'T PUT ANYTHING BETWEEN - START
-
type: variable
name: fps_lock
value_type: uint32
default_value: 30
evaluate: FPS_LOCK_TARGET
-
type: variable
name: fps_lock2
value_type: uint32
default_value: 60
evaluate: FPS_LOCK_TARGET
-
type: variable
name: game_speed
value_type: float
default_value: 0.0333333333
evaluate: "1/FPS_TARGET"
-
type: variable
name: game_speed2
value_type: float
default_value: 0.0166666666
# DON'T PUT ANYTHING BETWEEN - END
-
type: code
name: fpsLock
instructions: [
[adrp, x8, $fps_lock],
[ldr, w8, [x8, $fps_lock]],
[ret]
]
MASTER_WRITE:
# Redirect FPS Lock, REF: A8 EA 00 B9 08 00 40 B9, LDR W8, [X0]
-
type: asm_a64
main_offset: 0x1F906DC
instructions: [
[bl, _fpsLock()]
]
# Redirect game speed, REF: 08 31 9F 9A 20 79 68 BC 68 6E 41 B9
-
type: asm_a64
main_offset: 0x88B380
instructions: [
[adrp, x8, $game_speed],
[ldr, s0, [x8, $game_speed]]
]
ALL_FPS:
-
type: block
what: timing

View File

@ -1,58 +0,0 @@
# 삼국지8 REMAKE 1.1.0
# BID: C7C39A0A301587DB
# Cursor speed is tied to framerate
DECLARATIONS:
# DON'T PUT ANYTHING BETWEEN - START
-
type: variable
name: fps_lock
value_type: uint32
default_value: 30
evaluate: FPS_LOCK_TARGET
-
type: variable
name: fps_lock2
value_type: uint32
default_value: 60
evaluate: FPS_LOCK_TARGET
-
type: variable
name: game_speed
value_type: float
default_value: 0.0333333333
evaluate: "1/FPS_TARGET"
-
type: variable
name: game_speed2
value_type: float
default_value: 0.0166666666
# DON'T PUT ANYTHING BETWEEN - END
-
type: code
name: fpsLock
instructions: [
[adrp, x8, $fps_lock],
[ldr, w8, [x8, $fps_lock]],
[ret]
]
MASTER_WRITE:
# Redirect FPS Lock, REF: A8 EA 00 B9 08 00 40 B9, LDR W8, [X0]
-
type: asm_a64
main_offset: 0x1F906DC
instructions: [
[bl, _fpsLock()]
]
# Redirect game speed, REF: 08 31 9F 9A 20 79 68 BC 68 6E 41 B9
-
type: asm_a64
main_offset: 0x88B380
instructions: [
[adrp, x8, $game_speed],
[ldr, s0, [x8, $game_speed]]
]
ALL_FPS:
-
type: block
what: timing

View File

@ -1,58 +0,0 @@
# 삼국지8 REMAKE 1.1.1
# BID: FC3A9F0C03C5A198
# Cursor speed is tied to framerate
DECLARATIONS:
# DON'T PUT ANYTHING BETWEEN - START
-
type: variable
name: fps_lock
value_type: uint32
default_value: 30
evaluate: FPS_LOCK_TARGET
-
type: variable
name: fps_lock2
value_type: uint32
default_value: 60
evaluate: FPS_LOCK_TARGET
-
type: variable
name: game_speed
value_type: float
default_value: 0.0333333333
evaluate: "1/FPS_TARGET"
-
type: variable
name: game_speed2
value_type: float
default_value: 0.0166666666
# DON'T PUT ANYTHING BETWEEN - END
-
type: code
name: fpsLock
instructions: [
[adrp, x8, $fps_lock],
[ldr, w8, [x8, $fps_lock]],
[ret]
]
MASTER_WRITE:
# Redirect FPS Lock, REF: A8 EA 00 B9 08 00 40 B9, LDR W8, [X0]
-
type: asm_a64
main_offset: 0x1F906DC
instructions: [
[bl, _fpsLock()]
]
# Redirect game speed, REF: 08 31 9F 9A 20 79 68 BC 68 6E 41 B9
-
type: asm_a64
main_offset: 0x88B380
instructions: [
[adrp, x8, $game_speed],
[ldr, s0, [x8, $game_speed]]
]
ALL_FPS:
-
type: block
what: timing

View File

@ -1,58 +0,0 @@
# 삼국지 8 리메이크 with 파워업키트 1.1.1
# BID: 7A45096D29701241
# Cursor speed is tied to framerate
DECLARATIONS:
# DON'T PUT ANYTHING BETWEEN - START
-
type: variable
name: fps_lock
value_type: uint32
default_value: 30
evaluate: FPS_LOCK_TARGET
-
type: variable
name: fps_lock2
value_type: uint32
default_value: 60
evaluate: FPS_LOCK_TARGET
-
type: variable
name: game_speed
value_type: float
default_value: 0.0333333333
evaluate: "1/FPS_TARGET"
-
type: variable
name: game_speed2
value_type: float
default_value: 0.0166666666
# DON'T PUT ANYTHING BETWEEN - END
-
type: code
name: fpsLock
instructions: [
[adrp, x8, $fps_lock],
[ldr, w8, [x8, $fps_lock]],
[ret]
]
MASTER_WRITE:
# Redirect FPS Lock, REF: A8 EA 00 B9 08 00 40 B9, LDR W8, [X0]
-
type: asm_a64
main_offset: 0x234A3EC
instructions: [
[bl, _fpsLock()]
]
# Redirect game speed, REF: 08 31 9F 9A 20 79 68 BC 68 6E 41 B9
-
type: asm_a64
main_offset: 0xACE970
instructions: [
[adrp, x8, $game_speed],
[ldr, s0, [x8, $game_speed]]
]
ALL_FPS:
-
type: block
what: timing

View File

@ -1,58 +0,0 @@
# 삼국지 8 리메이크 with 파워업키트 1.1.0
# BID: A5B280E0651240A8
# Cursor speed is tied to framerate
DECLARATIONS:
# DON'T PUT ANYTHING BETWEEN - START
-
type: variable
name: fps_lock
value_type: uint32
default_value: 30
evaluate: FPS_LOCK_TARGET
-
type: variable
name: fps_lock2
value_type: uint32
default_value: 60
evaluate: FPS_LOCK_TARGET
-
type: variable
name: game_speed
value_type: float
default_value: 0.0333333333
evaluate: "1/FPS_TARGET"
-
type: variable
name: game_speed2
value_type: float
default_value: 0.0166666666
# DON'T PUT ANYTHING BETWEEN - END
-
type: code
name: fpsLock
instructions: [
[adrp, x8, $fps_lock],
[ldr, w8, [x8, $fps_lock]],
[ret]
]
MASTER_WRITE:
# Redirect FPS Lock, REF: A8 EA 00 B9 08 00 40 B9, LDR W8, [X0]
-
type: asm_a64
main_offset: 0x234AE0C
instructions: [
[bl, _fpsLock()]
]
# Redirect game speed, REF: 08 31 9F 9A 20 79 68 BC 68 6E 41 B9
-
type: asm_a64
main_offset: 0xACEFC0
instructions: [
[adrp, x8, $game_speed],
[ldr, s0, [x8, $game_speed]]
]
ALL_FPS:
-
type: block
what: timing

View File

@ -1,58 +0,0 @@
# 삼국지 8 리메이크 with 파워업키트 1.1.2
# BID: B8722FBDFD482D37
# Cursor speed is tied to framerate
DECLARATIONS:
# DON'T PUT ANYTHING BETWEEN - START
-
type: variable
name: fps_lock
value_type: uint32
default_value: 30
evaluate: FPS_LOCK_TARGET
-
type: variable
name: fps_lock2
value_type: uint32
default_value: 60
evaluate: FPS_LOCK_TARGET
-
type: variable
name: game_speed
value_type: float
default_value: 0.0333333333
evaluate: "1/FPS_TARGET"
-
type: variable
name: game_speed2
value_type: float
default_value: 0.0166666666
# DON'T PUT ANYTHING BETWEEN - END
-
type: code
name: fpsLock
instructions: [
[adrp, x8, $fps_lock],
[ldr, w8, [x8, $fps_lock]],
[ret]
]
MASTER_WRITE:
# Redirect FPS Lock, REF: A8 EA 00 B9 08 00 40 B9, LDR W8, [X0]
-
type: asm_a64
main_offset: 0x234C19C
instructions: [
[bl, _fpsLock()]
]
# Redirect game speed, REF: 08 31 9F 9A 20 79 68 BC 68 6E 41 B9
-
type: asm_a64
main_offset: 0xACFD80
instructions: [
[adrp, x8, $game_speed],
[ldr, s0, [x8, $game_speed]]
]
ALL_FPS:
-
type: block
what: timing

View File

@ -1,17 +0,0 @@
# Bendy and the Dark Revival 1.6.4s
# BID: E917F319E4233FCD
ALL_FPS:
# PSH.DynamicResolution.DynamicResolutionController_TypeInfo
-
type: evaluate_write
address: [MAIN, 0x3970680, 0xB8, 0]
address_unsafe: true
value_type: double
value: [FPS_TARGET, FRAMETIME_TARGET]
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x3D43700, 0x48]
value_type: float
value: "1 / FPS_TARGET"

View File

@ -1,34 +0,0 @@
# 超次元游汐 戰機少女 Sisters vs Sisters 1.0.0
# BID: 3514446FD50DCF95
DECLARATIONS:
-
type: variable
name: dr_target1
value_type: float
default_value: 33.33
evaluate: "TruncDec(FRAMETIME_TARGET, 2)"
-
type: variable
name: dr_target2
value_type: float
default_value: 28.57
evaluate: "TruncDec(1000 / (FPS_TARGET + 5), 2)"
MASTER_WRITE:
# Redirect DR timing range
-
type: asm_a64
main_offset: 0x3DC5770
instructions: [
[adrp, x8, $dr_target1],
[ldr, s1, [x8, $dr_target1]],
[nop]
]
-
type: asm_a64
main_offset: 0x3DC57DC
instructions: [
[adrp, x8, $dr_target2],
[ldr, s1, [x8, $dr_target2]],
[nop]
]

View File

@ -1,25 +0,0 @@
# Rune Factory: Guardians of Azuma US 1.1.3
# BID: 02F0B93D14038350
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8F63D40, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8F9D470, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7F7C6E8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,25 +0,0 @@
# Rune Factory: Guardians of Azuma `US` 1.1.4
# BID: A91A871F86DE1A93
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8F64D40, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8F9E470, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7F7D6E8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,10 +0,0 @@
# Little Orpheus 1.0.2
# BID: 1D5A1DA51CA68238
ALL_FPS:
# REF: Search with Edizon double 33, at offset -8 it should be float 0.6
-
type: evaluate_write
address: [MAIN, 0x3A8BD30, 0x2F0, 0x500]
value_type: double
value: "FRAMETIME_TARGET - (1/3)"

View File

@ -1,4 +1,4 @@
# Divinity Original Sin 2 1.0.10-1.0.12 # Divinity Original Sin 2 1.0.10-1.0.11
# BID: 4979B200D53BB282 # BID: 4979B200D53BB282
# Game is using double buffer, buffers are not allocated in loop. # Game is using double buffer, buffers are not allocated in loop.
# So it's not possible to get stable FPS lock between 30 and 60 without changing refresh rate. # So it's not possible to get stable FPS lock between 30 and 60 without changing refresh rate.

View File

@ -1,20 +0,0 @@
# Expeditions: A Mudrunner Game 1.20.0.0-1.21.0.0
# BID: 4012D8204AD172B4
# REF: 01 04 0C 5E 00 10 2E 1E
DECLARATIONS:
-
type: variable
name: dr_target
value_type: float
default_value: 33.333333
evaluate: FRAMETIME_TARGET
MASTER_WRITE:
# Redirect DR frametime target
-
type: asm_a64
main_offset: 0x1784FA0
instructions: [
[adrp, x13, $dr_target],
[ldr, s2, [x13, $dr_target]]
]

View File

@ -1,20 +0,0 @@
# Expeditions: A Mudrunner Game 1.22.0.0
# BID: 53FE298D76C0E507
# REF: 01 04 0C 5E 00 10 2E 1E
DECLARATIONS:
-
type: variable
name: dr_target
value_type: float
default_value: 33.333333
evaluate: FRAMETIME_TARGET
MASTER_WRITE:
# Redirect DR frametime target
-
type: asm_a64
main_offset: 0x1789100
instructions: [
[adrp, x13, $dr_target],
[ldr, s2, [x13, $dr_target]]
]

View File

@ -1,21 +0,0 @@
# Expeditions: A Mudrunner Game 1.23.0.0
# BID: 9B1B0DA68BEAA765
# REF: 01 04 0C 5E 00 10 2E 1E
DECLARATIONS:
-
type: variable
name: dr_target
value_type: float
default_value: 33.333333
evaluate: FRAMETIME_TARGET
MASTER_WRITE:
# Redirect DR frametime target
-
type: asm_a64
main_offset: 0x1789470
instructions: [
[adrp, x13, $dr_target],
[ldr, s2, [x13, $dr_target]],
[nop]
]

View File

@ -1,74 +0,0 @@
# ダイイングライト ディフィニティブエディション 1.0.4
# BID: CD8585507B3B8765
DECLARATIONS:
-
type: variable
name: dr_timing1
value_type: float
default_value: 0.034
evaluate: "1.02 / FPS_TARGET"
-
type: variable
name: dr_timing2
value_type: float
default_value: 0.028
evaluate: "0.84 / FPS_TARGET"
-
type: variable
name: dr_timing3
value_type: float
default_value: 0.028985508
evaluate: "0.87 / FPS_TARGET"
-
type: variable
name: dr_timing4
value_type: float
default_value: 0.02631579
evaluate: "0.79 / FPS_TARGET"
-
type: variable
name: dr_timing5
value_type: float
default_value: 0.032467533
evaluate: "0.974 / FPS_TARGET"
MASTER_WRITE:
# Disable Dynamic GPU Clocks
-
type: asm_a64
main_offset: 0x1DE8AC4
instructions: [
[nop]
]
# Redirect Dynamic Resolution Timings
-
type: asm_a64
main_offset: 0x1DE8AA0
instructions: [
[adrp, x10, $dr_timing1],
[ldr, w10, [x10, $dr_timing1]]
]
-
type: asm_a64
main_offset: 0x1DE8B00
instructions: [
[adrp, x10, $dr_timing2],
[ldr, w10, [x10, $dr_timing2]]
]
-
type: asm_a64
main_offset: 0x1DE81C0
instructions: [
[adrp, x11, $dr_timing3],
[ldr, w12, [x11, $dr_timing3]],
[adrp, x11, $dr_timing4],
[ldr, w11, [x11, $dr_timing4]]
]
-
type: asm_a64
main_offset: 0x1DE81F0
instructions: [
[adrp, x11, $dr_timing5],
[ldr, w11, [x11, $dr_timing5]]
]

View File

@ -1,25 +0,0 @@
# Ragtag Adventurers 1.1.5.6
# BID: D560C3C55CD23811
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x5B7C530, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1) - 0.1", "TruncDec(FRAMETIME_TARGET, 1) - 0.1"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x5BA1098, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x533B880, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,31 +0,0 @@
# DRAGON BALL: Sparking! ZERO 2.0.75
# BID: DBE58459690BA338
ALL_FPS:
# Disable bUseFixedFrameRate to unlock framerate
-
type: write
address: [MAIN, 0x9A6DA20, 0x9C4]
address_unsafe: true
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
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x9A6EFF0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x9277B68, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,25 +0,0 @@
# Rune Factory: Guardians of Azuma 1.1.3
# BID: 02F0B93D14038350
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8F63D40, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8F9D470, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7F7C6E8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,25 +0,0 @@
# Rune Factory: Guardians of Azuma 1.1.4
# BID: A91A871F86DE1A93
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8F64D40, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8F9E470, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7F7D6E8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,74 +0,0 @@
# 테일즈 오브 엑실리아 리마스터 1.0.3
# BID: 7220F3213BED164A
DECLARATIONS:
-
type: variable
name: patch_running
value_type: uint8
default_value: 0
-
type: code
name: applyCustomSpeed
instructions: [
[adrp, x4, $patch_running],
[ldrb, w4, [x4, $patch_running]],
[cbnz, w4, :goto1],
[stp, s0, s1, [x8, 0x6C]],
:goto1, [ret]
]
MASTER_WRITE:
# Block updating game speed
## REF: 00 85 0d 2d
-
type: asm_a64
main_offset: 0x2450394
instructions: [
[bl, _applyCustomSpeed()]
]
-
type: asm_a64
main_offset: 0x28F5CAC
instructions: [
[bl, _applyCustomSpeed()]
]
-
type: asm_a64
main_offset: 0x2B30B44
instructions: [
[bl, _applyCustomSpeed()]
]
ALL_FPS:
# Game Speed
## REF: Global_TypeInfo
-
type: evaluate_write
address: [MAIN, 0x82DF380, 0xB8, 0x6C]
value_type: float
value: [FPS_TARGET, "60 / FPS_TARGET"]
# Just in case, dunno if they are used for anything, but all of them were set to target strictly 30 FPS
# UnityEngine.Time::maximumDeltaTime
-
type: write
address: [MAIN, 0x9FE9DB8, 0x100]
value_type: float
value: [0.066666666, 0.066666666]
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x9FE9DB8, 0x48]
value_type: float
value: "1 / FPS_TARGET"
# UnityEngine.Application::targetFrameRate
-
type: evaluate_write
address: [MAIN, 0x84FC2F0]
value_type: uint32
value: FPS_TARGET
-
type: compare
compare_address: [VARIABLE, patch_running]
compare_type: "=="
compare_value: 0
address: [VARIABLE, patch_running]
value: 1

View File

@ -1,19 +0,0 @@
# VARLET `Asia` 1.0.1
# BID: 23E535E2967725BD
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x9019488, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7FFAEE8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,19 +0,0 @@
# VARLET `Asia` 1.1.0
# BID: 56CB246F5724B3CC
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x901B488, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7FFCEE8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,26 +0,0 @@
# Fuga: Melodies of Steel 2 1.5.2
# BID: 2C45FAC26500CBAD
ALL_FPS:
# Disable bUseFixedFrameRate
-
type: write
address: [MAIN, 0x7315498, 0x7A4]
address_unsafe: true
value_type: uint32
value: 7
# r.VSync
-
type: write
address: [MAIN, 0x6B1AF58, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7315DB8, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -1,23 +0,0 @@
# 테일즈 오브 베르세리아 리마스터 / 緋夜傳奇 Remastered 1.0.4
# BID: 290D5939C6671566
# Known issue: Using barrier devices may not be triggering animation for any other FPS targets than 30, 50, 60, 100, 120.
# Known issue: Opening gate may not happen if you use any other FPS than 30, 60 or 120.
# Solution: when animation doesn't want to progress, change FPS Target to 30, 60 or 120.
ALL_FPS:
# Disable FPS Lock
## REF: 08 69 69 b8 69 ea 41 b9 28 01 08 0b, second result
## Look to which address points ldr w8,[x8, x9, LSL #0x0], this is the interval speed. Substract 4 from offset to get vsync interval and our offset we need to put.
-
type: write
address: [MAIN, 0x44D07A6C]
value_type: uint32
value: [0, 1]
# Speed Factor
## REF: 00 01 3f d6 00 00 22 1e 28 11 91 52 08 91 a7 72
## Find first BLR X8 above search result (ignore BLR X8 in result), then find LDR X8, [X23, #offset]. X23 + offset is our address
-
type: evaluate_write
address: [MAIN, 0x44A926C0, -4]
value_type: float
value: "60 / FPS_TARGET"

View File

@ -1,20 +0,0 @@
# 테일즈 오브 베르세리아 리마스터 / 緋夜傳奇 Remastered 1.0.2
# BID: F4DB705AA11D45F3
ALL_FPS:
# Disable FPS Lock
## REF: 08 01 40 f9 08 01 09 8b
## X8 from ADD X8, X8, X9, this is the address of vsync interval. 0x4 is interval speed
-
type: write
address: [MAIN, 0x44D039BC]
value_type: uint32
value: [0, 1]
# Speed Factor
## REF: 00 01 3f d6 00 00 22 1e 28 11 91 52 08 91 a7 72
## Find first BLR X8 above search result (ignore BLR X8 in result), then find LDR X8, [X23, #offset]. X23 + offset is our address
-
type: evaluate_write
address: [MAIN, 0x44a8e680, -4]
value_type: float
value: "60 / FPS_TARGET"

View File

@ -1,71 +0,0 @@
# DOOM `West` 1.4.1
# BID: C638A0730217792B
ALL_FPS:
# rs_460Threshold (default is 0.285)
-
type: write
address: [MAIN, 0x593E52C]
value_type: float
value: 1
# rs_raiseMilliseconds
-
type: evaluate_write
address: [MAIN, 0x593E9EC]
value_type: float
value: "0.966 * FRAMETIME_TARGET"
# rs_dropMilliseconds
-
type: evaluate_write
address: [MAIN, 0x593E954]
value_type: float
value: "0.99 * FRAMETIME_TARGET"
# com_adaptiveTickMaxHz (default is 30)
-
type: evaluate_write
address: [MAIN, 0x66B3F50]
value_type: int32
value: FPS_TARGET
-
type: evaluate_write
address: [MAIN, 0x66B3F54]
value_type: float
value: FPS_TARGET
# com_adaptiveTickMinHz (default is 30)
-
type: write
address: [MAIN, 0x66B3EB8]
value_type: uint32
value: 15
-
type: write
address: [MAIN, 0x66B3EBC]
value_type: float
value: 15
# With some update devs broke some cutscenes, they apply fixed speed for them. Removing this fixed speed causes myriads of weird issues, that's why I'm locking those cutscenes to 30 FPS.
-
type: compare
compare_address: [MAIN, 0x7377D64]
compare_type: "=="
compare_value_type: uint8
compare_value: 0
value_type: refresh_rate
value: 30
-
type: compare
compare_address: [MAIN, 0x7377D64]
compare_type: "=="
compare_value_type: uint8
compare_value: 0
address: [MAIN, 0x593E9EC]
value_type: float
value: 32.2
-
type: compare
compare_address: [MAIN, 0x7377D64]
compare_type: "=="
compare_value_type: uint8
compare_value: 0
address: [MAIN, 0x593E954]
value_type: float
value: 33

View File

@ -1,37 +0,0 @@
# 모두의 골프 월드 / 全民高爾夫 環球之旅 1.1.7
# BID: 7B51DC4B113F4F52
# Changed frametime target value math formula because default one sucks at 60 FPS target
DECLARATIONS:
-
type: variable
name: dr_frametime_max
value_type: double
default_value: 40
evaluate: "0.9 * FRAMETIME_TARGET"
-
type: variable
name: dr_frametime_min
value_type: double
default_value: 33.3333333333
evaluate: "(0.9 * FRAMETIME_TARGET) - 6"
MASTER_WRITE:
# REF: 0a 00 a4 d2 8a 08 e8 f2 41 01 67 9e
-
type: asm_a64
main_offset: 0x39E4938
instructions: [
[adrp, x10, $dr_frametime_max],
[ldr, d1, [x10, $dr_frametime_max]],
[nop]
]
# REF: 00 0d 40 fd 0a 00 b8 d2
-
type: asm_a64
main_offset: 0x39E4A0C
instructions: [
[adrp, x10, $dr_frametime_min],
[ldr, d1, [x10, $dr_frametime_min]],
[nop],
[nop]
]

View File

@ -1,25 +0,0 @@
# Beyond Hanwell 1.0
# BID: D3C96553221659B0
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x7885300, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x78BF860, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x689F6E8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,350 +0,0 @@
# Xenoblade Chronicles X: Definitive Edition 2.0.0
# BID: EC4ED46BBC4A9EBB
DECLARATIONS:
-
type: variable
name: last_tick
value_type: uint64
default_value: 0
-
type: variable
name: frame_target
value_type: uint32
default_value: 33333333
evaluate: "FRAMETIME_TARGET * 1000000"
-
type: variable
name: speed_factor
value_type: float
default_value: 1.0
-
type: variable
name: current_fps
value_type: float
default_value: 30.0
-
type: variable
name: current_frametime
value_type: float
default_value: 0.0333333333
-
type: variable
name: dr_target
value_type: float
default_value: 0.0333333333
evaluate: "1 / FPS_TARGET"
-
type: const
name: nanoseconds_in_sec
value: 1000000000
-
type: const
name: max_delta
value: 66666666
-
type: variable
name: microseconds_in_sec
value_type: double
default_value: 1000000.0
-
type: code
name: dynamicSpeed
instructions: [
[stp, x29, x30, [sp, -16], "!"],
[mov, x29, sp],
[blr, x8],
[mrs, x0, cntpct_el0],
[adrp, x8, $last_tick],
[ldr, x7, [x8, $last_tick]],
[str, x0, [x8, $last_tick]],
[cbz, x7, :goto1],
[sub, x0, x0, x7],
[bl, _convertTickToTimeSpan()],
[adrp, x8, $frame_target],
[ldr, w1, [x8, $frame_target]],
[cmp, x1, x0],
[b.lt, :goto2],
[mov, x0, x1],
:goto2, [mov, x1, $max_delta],
[movk, x1, $max_delta, 16],
[cmp, x1, x0],
[b.gt, :goto3],
[mov, x0, x1],
:goto3, [ucvtf, d0, x0],
[adrp, x0, $microseconds_in_sec],
[ldr, d1, [x0, $microseconds_in_sec]],
[fdiv, d0, d0, d1],
[mov, x0, 1000],
[ucvtf, d1, x0],
[fdiv, d1, d1, d0],
[adrp, x0, $current_fps],
[fcvt, s1, d1],
[str, s1, [x0, $current_fps]],
[fmov, s2, 30.0],
[fdiv, s2, s2, s1],
[adrp, x0, $speed_factor],
[str, s2, [x0, $speed_factor]],
[mov, x1, 1000],
[ucvtf, d1, x1],
[fdiv, d1, d0, d1],
[fcvt, s1, d1],
[adrp, x0, $current_frametime],
[str, s1, [x0, $current_frametime]],
:goto1, [ldp, x29, x30, [sp], 16],
[ret]
]
-
type: code
name: battleFix
instructions: [
[adrp, x9, $speed_factor],
[ldr, s0, [x9, $speed_factor]],
[ret]
]
-
type: code
name: cameraRotationFix
instructions: [
[adrp, x8, $speed_factor],
[ldr, s8, [x8, $speed_factor]],
[fmul, s0, s8, s0],
[fcmp, s0, 0.0],
[b.ge, :goto1],
[fneg, s0, s0],
[fsqrt, s0, s0],
[fneg, s0, s0],
[ret],
:goto1, [fsqrt, s0, s0],
[ret]
]
-
type: code
name: fnSiteFix
instructions: [
[ldr, s0, [x19, 0xd0]],
[adrp, x0, $speed_factor],
[ldr, s1, [x0, $speed_factor]],
[fmul, s0, s0, s1],
[ret]
]
-
type: code
name: longJumpFix
instructions: [
[fmov, s11, 30.0],
[fadd, s11, s11, s11],
[ret]
]
-
type: code
name: qteFix
instructions: [
[adrp, x20, $speed_factor],
[ldr, s1, [x20, $speed_factor]],
[ldr, s2, [x19, 0x120]],
[fmul, s1, s2, s1],
[ret]
]
-
type: code
name: fogSpeedFix
instructions: [
[fsqrt, s2, s2],
[fmadd, s0, s1, s2, s0],
[ret]
]
-
type: code
name: overdriveFix
instructions: [
[adrp, x0, $current_frametime],
[ldr, s0, [x0, $current_frametime]],
[ret]
]
MASTER_WRITE:
# Dynamic speed mod for stuff like UI, lipsync, grass and rain
## Redirect nvnQueuePresentTexture call to code cave at MAIN+0x1735050
-
type: asm_a64
main_offset: 0x95EED8
instructions: [
[bl, _dynamicSpeed()]
]
## Function 1 to speed factor // Usage unknown
-
type: asm_a64
main_offset: 0x286968
instructions: [
[adrp, x21, $speed_factor],
[ldr, x0, [x8, 0xe18]],
[ldr, s10, [x21, $speed_factor]]
]
## Function 3 to speed factor // Usage unknown
-
type: asm_a64
main_offset: 0xA16F00
instructions: [
[adrp, x0, $speed_factor],
[ldr, s8, [x0, $speed_factor]]
]
## Function 4 to FPS // UI Speed
-
type: asm_a64
main_offset: 0xA1F060
instructions: [
[adrp, x0, $current_fps],
[fmov, s0, w8],
[ldr, s0, [x0, $current_fps]]
]
## Function 5 to FPS // Usage unknown
-
type: asm_a64
main_offset: 0x2672DC
instructions: [
[adrp, x0, $current_fps],
[fmov, s0, w8],
[ldrh, w8, [x19, 0x68]],
[ldr, s5, [x0, $current_fps]]
]
## Function 6 to FPS
-
type: asm_a64
main_offset: 0x26DB70
instructions: [
[adrp, x0, $current_fps],
[ldr, s0, [x0, $current_fps]],
[fcvtzu, w0, s0],
[mov, w9, 6],
[udiv, w8, w0, w9]
]
## Function 7 to Frametime in s // Gameplay + cutscene speed
-
type: asm_a64
main_offset: 0x1E2924
instructions: [
[adrp, x9, $current_frametime]
]
-
type: asm_a64
main_offset: 0x1E2938
instructions: [
[ldr, s0, [x9, $current_frametime]]
]
# Adjust various elements related to fighting
-
type: asm_a64
main_offset: 0x1E8F48
instructions: [
[bl, _battleFix()]
]
## Fix gun speed
-
type: asm_a64
main_offset: 0x30FACC
instructions: [
[nop]
]
# Redirect DR Target to MAIN+0x47BEF00
-
type: asm_a64
main_offset: 0x13A90B4
instructions: [
[adrp, x8, $dr_target],
[ldr, s0, [x8, $dr_target]]
]
## Connect function 1
-
type: asm_a64
main_offset: 0x1E17A0
instructions: [
[bl, _cameraRotationFix()]
]
## Connect function 2
-
type: asm_a64
main_offset: 0x1E17B0
instructions: [
[ldp, q1, q0, [x29, -0x60]]
]
-
type: asm_a64
main_offset: 0x1E17BC
instructions: [
[bl, _cameraRotationFix()]
]
# Adjust Field Action gauge bar speed
-
type: asm_a64
main_offset: 0xE5E00
instructions: [
[adrp, x0, $speed_factor],
[adrp, x9, 0x1d54000],
[ldr, s8, [x0, $speed_factor]]
]
## Fix for FN Site
-
type: asm_a64
main_offset: 0xE5858
instructions: [
[bl, _fnSiteFix()]
]
# Fix long jump when not running
-
type: asm_a64
main_offset: 0x23EF70
instructions: [
[bl, _longJumpFix()]
]
# Adjust QTE Speed
## Connect function
-
type: asm_a64
main_offset: 0x5C6280
instructions: [
[bl, _qteFix()]
]
# Fix fog speed
-
type: asm_a64
main_offset: 0x296AE0
instructions: [
[adrp, x8, $speed_factor],
[ldr, s2, [x8, $speed_factor]],
[bl, _fogSpeedFix()]
]
-
type: asm_a64
main_offset: 0x676D4
instructions: [
[bl, _overdriveFix()]
]
ALL_FPS:
# FPS Lock
# ref: 00 01 00 b9 2a 01 00 b9 c0 03 5f d6
-
type: write
address: [MAIN, 0x1D943A0]
value_type: int32
value: [1, 1]
# Lock game to 30 FPS when complex/prerendered cutscene is played
## Adjusts DR target
-
type: compare
compare_address: [MAIN, 0x1FEFAF4]
compare_value_type: uint32
compare_type: ">"
compare_value: 2
address: [VARIABLE, dr_target]
value_type: float
value: 0.03333333333
## Force OS to run at 60 Hz with interval 2
-
type: compare
compare_address: [MAIN, 0x1FEFAF4]
compare_value_type: uint32
compare_type: ">"
compare_value: 2
value_type: refresh_rate
value: 30

View File

@ -1,25 +0,0 @@
# SWORD ART ONLINE Fractured Daydream EUR 1.6.0.0
# BID: 1A6C27F8DCFE45CB
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x86BE728, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x86F92D0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7EF8F88, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,25 +0,0 @@
# SWORD ART ONLINE Fractured Daydream EUR 1.6.1.0
# BID: 99252F8F7EE61A81
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x86AD728, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x86E82D0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7EE7F88, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,10 +0,0 @@
# 마법사서 아리아나 칠영걸의 서 / 魔法司書阿莉艾娜 七英傑之書 1.0.0
# BID: EE53B0DDC797E251
ALL_FPS:
# UnityEngine.Rendering.OnDemandRendering_TypeInfo
-
type: write
address: [MAIN, 0x4C69F48, 0xB8, 0]
value_type: int32
value: -1

View File

@ -1,13 +0,0 @@
# EA SPORTS FC 26 1.83.c362
# BID: 26E63D318FF5B831
ALL_FPS:
# Internal FPS Lock
-
type: evaluate_write
address: [MAIN, 0xC67B718, 8]
value_type: double
value: FPS_TARGET
-
type: block
what: timing

View File

@ -1,13 +0,0 @@
# EA SPORTS FC 26 1.85.f41d
# BID: 8A744E3F9FAE12D0
ALL_FPS:
# Internal FPS Lock
-
type: evaluate_write
address: [MAIN, 0xC692698, 8]
value_type: double
value: FPS_TARGET
-
type: block
what: timing

View File

@ -1,13 +0,0 @@
# EA SPORTS FC 26 1.86.1233
# BID: A6EE52983A834934
ALL_FPS:
# Internal FPS Lock
-
type: evaluate_write
address: [MAIN, 0xC6986B8, 8]
value_type: double
value: FPS_TARGET
-
type: block
what: timing

View File

@ -1,13 +0,0 @@
# EA SPORTS FC 26 1.82.4264
# BID: EDE4F70074EC37C7
ALL_FPS:
# Internal FPS Lock
-
type: evaluate_write
address: [MAIN, 0xC667718, 8]
value_type: double
value: FPS_TARGET
-
type: block
what: timing

View File

@ -1,13 +0,0 @@
# EA SPORTS FC 26 1.85.374e
# BID: F8D172BD397ED5DD
ALL_FPS:
# Internal FPS Lock
-
type: evaluate_write
address: [MAIN, 0xC692698, 8]
value_type: double
value: FPS_TARGET
-
type: block
what: timing

View File

@ -1,25 +0,0 @@
# 드래곤 퀘스트 VII Reimagined / 勇者鬥惡龍 VII Reimagined 1.1.0
# BID: AB06020960EDD828
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x7F1BE78, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7F41918, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x77430D8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,25 +0,0 @@
# 드래곤 퀘스트 VII Reimagined / 勇者鬥惡龍 VII Reimagined 1.2.0
# BID: F7EC03E4CB9DE3BD
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x7F1BE78, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7F41918, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x77430E8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,12 +0,0 @@
# 紅の錬金術士と白の守護者 ~レスレリアーナのアトリエ~ 1.4b
# BID: 2B08D49BD9504E41
ALL_FPS:
# MagicaCloth2.MagicaManager_TypeInfo
## REF: 00 10 2e 1e 01 e4 00 2f 00 21 20 1e, first result, second ADRP+ADD in function
-
type: evaluate_write
address: [MAIN, 0x7791FE8, 0xB8, 0, 0x10, 0x20, 0x10]
address_unsafe: true
value_type: uint32
value: "FPS_TARGET + 5"

View File

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

View File

@ -1,19 +0,0 @@
# Octopath Traveler 0 1.0.4
# BID: 57C918F08B505771
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6C4F6E8, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7C718E0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -1,19 +0,0 @@
# Octopath Traveler 0 1.0.5
# BID: 9FE60A212CFF9B9A
ALL_FPS:
# r.VSync
-
type: write
address: [MAIN, 0x6C516E8, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7C738E0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -1,57 +0,0 @@
# NieR:Automata The End of YoRHa Edition US/EU 1.0.3
# BID: 3C10EC35C5EF4C36
DECLARATIONS:
-
type: variable
name: dr_target_bad
value_type: float
default_value: 45
evaluate: "1.35 * FRAMETIME_TARGET"
-
type: variable
name: dr_target_optimal
value_type: float
default_value: 32.01
evaluate: "0.9603 * FRAMETIME_TARGET"
-
type: variable
name: dr_target_good
value_type: float
default_value: 30
evaluate: "0.9 * FRAMETIME_TARGET"
MASTER_WRITE:
# Redirect DR timings
## REF: 8C 46 A8 52 83 01 27 1E
-
type: asm_a64
main_offset: 0x9BF434
instructions: [
[adrp, x12, $dr_target_bad],
[ldr, s3, [x12, $dr_target_bad]]
]
## REF: AC 47 81 52 0C 40 A8 72, first result
-
type: asm_a64
main_offset: 0x9BF484
instructions: [
[adrp, x12, $dr_target_optimal],
[ldr, w12, [x12, $dr_target_optimal]]
]
## REF: AC 47 81 52 0C 40 A8 72, second result
-
type: asm_a64
main_offset: 0x9BF4D4
instructions: [
[fcsel, s3, s4, s0, gt],
[adrp, x12, $dr_target_optimal],
[ldr, s0, [x12, $dr_target_optimal]],
[adrp, x12, $dr_target_good]
]
## REF: 00 D0 27 1E 60 20 20 1E
-
type: asm_a64
main_offset: 0x9BF4F8
instructions: [
[ldr, s0, [x12, $dr_target_good]]
]

View File

@ -22,7 +22,6 @@ DECLARATIONS:
evaluate: "0.9 * FRAMETIME_TARGET" evaluate: "0.9 * FRAMETIME_TARGET"
MASTER_WRITE: MASTER_WRITE:
# Redirect DR timings # Redirect DR timings
## REF: 8C 46 A8 52 83 01 27 1E
- -
type: asm_a64 type: asm_a64
main_offset: 0x9BF3E4 main_offset: 0x9BF3E4
@ -30,7 +29,6 @@ MASTER_WRITE:
[adrp, x12, $dr_target_bad], [adrp, x12, $dr_target_bad],
[ldr, s3, [x12, $dr_target_bad]] [ldr, s3, [x12, $dr_target_bad]]
] ]
## REF: AC 47 81 52 0C 40 A8 72, first result
- -
type: asm_a64 type: asm_a64
main_offset: 0x9BF434 main_offset: 0x9BF434
@ -38,7 +36,6 @@ MASTER_WRITE:
[adrp, x12, $dr_target_optimal], [adrp, x12, $dr_target_optimal],
[ldr, w12, [x12, $dr_target_optimal]] [ldr, w12, [x12, $dr_target_optimal]]
] ]
## REF: AC 47 81 52 0C 40 A8 72, second result
- -
type: asm_a64 type: asm_a64
main_offset: 0x9BF484 main_offset: 0x9BF484
@ -48,10 +45,10 @@ MASTER_WRITE:
[ldr, s0, [x12, $dr_target_optimal]], [ldr, s0, [x12, $dr_target_optimal]],
[adrp, x12, $dr_target_good] [adrp, x12, $dr_target_good]
] ]
## REF: 00 D0 27 1E 60 20 20 1E
- -
type: asm_a64 type: asm_a64
main_offset: 0x9BF4A8 main_offset: 0x9BF4A8
instructions: [ instructions: [
[ldr, s0, [x12, $dr_target_good]] [ldr, s0, [x12, $dr_target_good]]
] ]

View File

@ -1,74 +0,0 @@
# テイルズ オブ エクシリア リマスター 1.0.3
# BID: 89D7333B5443950F
DECLARATIONS:
-
type: variable
name: patch_running
value_type: uint8
default_value: 0
-
type: code
name: applyCustomSpeed
instructions: [
[adrp, x4, $patch_running],
[ldrb, w4, [x4, $patch_running]],
[cbnz, w4, :goto1],
[stp, s0, s1, [x8, 0x6C]],
:goto1, [ret]
]
MASTER_WRITE:
# Block updating game speed
## REF: 00 85 0d 2d
-
type: asm_a64
main_offset: 0x2450394
instructions: [
[bl, _applyCustomSpeed()]
]
-
type: asm_a64
main_offset: 0x28F5A8C
instructions: [
[bl, _applyCustomSpeed()]
]
-
type: asm_a64
main_offset: 0x2B30924
instructions: [
[bl, _applyCustomSpeed()]
]
ALL_FPS:
# Game Speed
## REF: Global_TypeInfo
-
type: evaluate_write
address: [MAIN, 0x82DF380, 0xB8, 0x6C]
value_type: float
value: [FPS_TARGET, "60 / FPS_TARGET"]
# Just in case, dunno if they are used for anything, but all of them were set to target strictly 30 FPS
# UnityEngine.Time::maximumDeltaTime
-
type: write
address: [MAIN, 0x9FE9DB8, 0x100]
value_type: float
value: [0.066666666, 0.066666666]
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x9FE9DB8, 0x48]
value_type: float
value: "1 / FPS_TARGET"
# UnityEngine.Application::targetFrameRate
-
type: evaluate_write
address: [MAIN, 0x84FC2E8]
value_type: uint32
value: FPS_TARGET
-
type: compare
compare_address: [VARIABLE, patch_running]
compare_type: "=="
compare_value: 0
address: [VARIABLE, patch_running]
value: 1

View File

@ -1,25 +0,0 @@
# Upin & Ipin Universe 1.0.3
# BID: 97EBD09FA8327AFB
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x9304098, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x933F5C0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x8320EE8, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,75 +0,0 @@
# WARRIORS: Abyss 1.8.0
# BID: 7FB0CED6B8B51B80
DECLARATIONS:
-
type: variable
name: dr_target1
value_type: float
default_value: 50
evaluate: "1.5 * FRAMETIME_TARGET"
-
type: variable
name: dr_target2
value_type: float
default_value: 40
evaluate: "1.2 * FRAMETIME_TARGET"
MASTER_WRITE:
# REF: 09 49 A8 52 21 01 27 1E 00 20 21 1E
# Use FPS Target instead of vsync value for Dynamic Resolution max delta
-
type: asm_a64
main_offset: 0x8EEAC0
instructions: [
[adrp, x1, 0x1272000],
[ldr, s1, [x1, 0xE30]]
]
# Redirect DR Targets
-
type: asm_a64
main_offset: 0x8EEB64
instructions: [
[adrp, x9, $dr_target1],
[ldr, s1, [x9, $dr_target1]]
]
-
type: asm_a64
main_offset: 0x8EEB74
instructions: [
[adrp, x9, $dr_target2],
[ldr, s1, [x9, $dr_target2]]
]
ALL_FPS:
# REF: 00 00 F0 42 78 00 00 00 00 00 F0 42 04 00 00 00
# FPS Lock
-
type: evaluate_write
address: [MAIN, 0x1272E3C]
value_type: uint32
value: "120 / FPS_LOCK_TARGET"
# Prevent from setting it as 0, otherwise game crashes
-
type: evaluate_compare
compare_address: [MAIN, 0x1272E3C]
compare_type: "=="
compare_value_type: uint32
compare_value: 0
address: [MAIN, 0x1272E3C]
value_type: uint32
value: 1
# Others
-
type: evaluate_write
address: [MAIN, 0x1272E30]
value_type: float
value: "FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0x1272E34]
value_type: uint32
value: "FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0x1272E38]
value_type: float
value: "FPS_TARGET"

View File

@ -1,75 +0,0 @@
# WARRIORS: Abyss 1.7.0
# BID: E09BC148192342B1
DECLARATIONS:
-
type: variable
name: dr_target1
value_type: float
default_value: 50
evaluate: "1.5 * FRAMETIME_TARGET"
-
type: variable
name: dr_target2
value_type: float
default_value: 40
evaluate: "1.2 * FRAMETIME_TARGET"
MASTER_WRITE:
# REF: 09 49 A8 52 21 01 27 1E 00 20 21 1E
# Use FPS Target instead of vsync value for Dynamic Resolution max delta
-
type: asm_a64
main_offset: 0x8EBDC0
instructions: [
[adrp, x1, 0x126D000],
[ldr, s1, [x1, 0xE30]]
]
# Redirect DR Targets
-
type: asm_a64
main_offset: 0x8EBE64
instructions: [
[adrp, x9, $dr_target1],
[ldr, s1, [x9, $dr_target1]]
]
-
type: asm_a64
main_offset: 0x8EBE74
instructions: [
[adrp, x9, $dr_target2],
[ldr, s1, [x9, $dr_target2]]
]
ALL_FPS:
# REF: 00 00 F0 42 78 00 00 00 00 00 F0 42 04 00 00 00
# FPS Lock
-
type: evaluate_write
address: [MAIN, 0x126DE3C]
value_type: uint32
value: "120 / FPS_LOCK_TARGET"
# Prevent from setting it as 0, otherwise game crashes
-
type: evaluate_compare
compare_address: [MAIN, 0x126DE3C]
compare_type: "=="
compare_value_type: uint32
compare_value: 0
address: [MAIN, 0x126DE3C]
value_type: uint32
value: 1
# Others
-
type: evaluate_write
address: [MAIN, 0x126DE30]
value_type: float
value: "FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0x126DE34]
value_type: uint32
value: "FPS_TARGET"
-
type: evaluate_write
address: [MAIN, 0x126DE38]
value_type: float
value: "FPS_TARGET"

View File

@ -1,10 +0,0 @@
# Tamagotchi Plaza 1.0.7
# BID: C3B9D57C911B17C1
ALL_FPS:
# UnityEngine.Rendering.OnDemandRendering_TypeInfo
-
type: write
address: [MAIN, 0x6C7C7F0, 0xB8, 0]
value_type: int32
value: -1

View File

@ -1,19 +0,0 @@
# Little Nightmares III 1.0.5
# BID: 59B2891BAB23B8AE
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x7CB4E48, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x74C0210, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,10 +0,0 @@
# Becastled 1.5
# BID: A91CF6368FE718E6
ALL_FPS:
# DynamicResolution_TypeInfo
-
type: evaluate_write
address: [MAIN, 0xA099BF0, 0xB8, 0, 0x58]
value_type: float
value: "0.96 * FRAMETIME_TARGET"

View File

@ -1,10 +0,0 @@
# Becastled 1.6
# BID: FCFAE709261C279C
ALL_FPS:
# DynamicResolution_TypeInfo
-
type: evaluate_write
address: [MAIN, 0xA09CE00, 0xB8, 0, 0x58]
value_type: float
value: "0.96 * FRAMETIME_TARGET"

View File

@ -1,25 +0,0 @@
# Formula Legends 1.0.11
# BID: 863E4EEF043F6720
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x83BCF68, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# r.VSync
-
type: write
address: [MAIN, 0x73D8EE8, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x83F8780, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -1,25 +0,0 @@
# Formula Legends 1.0.15
# BID: B01340A1FC0D290F
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8414F68, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# r.VSync
-
type: write
address: [MAIN, 0x7430EE8, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8450780, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -1,25 +0,0 @@
# Formula Legends 1.0.13
# BID: B1140CA4CFDD5B4D
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8403F68, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# r.VSync
-
type: write
address: [MAIN, 0x741FEE8, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x843F780, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -1,25 +0,0 @@
# Formula Legends 1.0.14
# BID: B164D111A971694E
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8414F68, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# r.VSync
-
type: write
address: [MAIN, 0x7430EE8, 0]
value_type: int32
value: [0, 0]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8450780, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
-
type: block
what: timing

View File

@ -1,25 +0,0 @@
# Forgive me Father 2 1.1.2
# BID: 2E7E48804429CB75
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x8058DE8, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x8093260, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7099970, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,60 +0,0 @@
# 삼국지14 with 파워업키트 1.0.10
# BID: C00AA2EBF01D3A48
# Cursor speed is tied to framerate, main menu animations speed is not adjusted properly in range from 35 to 55 FPS
DECLARATIONS:
# DON'T PUT ANYTHING BETWEEN - START
-
type: variable
name: fps_lock
value_type: uint32
default_value: 30
evaluate: FPS_LOCK_TARGET
-
type: variable
name: fps_lock2
value_type: uint32
default_value: 60
evaluate: FPS_LOCK_TARGET
# DON'T PUT ANYTHING BETWEEN - END
-
type: variable
name: game_speed
value_type: float
default_value: 0.0333333333
evaluate: "1/FPS_TARGET"
MASTER_WRITE:
# Redirect adjusting game speed to FPS Lock, REF: 20 79 68 BC 01 10 2E 1E 00 D8 21 7E, replace ADRP+ADD above
-
type: asm_a64
main_offset: 0xB8EB08
instructions: [
[adrp, x9, $fps_lock],
[add, x9, x9, $fps_lock]
]
# Redirect FPS Lock, REF: C8 32 40 B9 E8 C2 00 B9, below replace LDR W8, [X0] + B
-
type: asm_a64
main_offset: 0x89668C
instructions: [
[adrp, x8, $fps_lock],
[ldr, w8, [x8, $fps_lock]]
]
# Redirect game speed to MAIN + 0x2B92808, REF: 00 28 21 1E 00 A0 00 BD C0 03 5F D6, replace beginning of function
-
type: asm_a64
main_offset: 0x1112670
instructions: [
[adrp, x8, $game_speed],
[ldr, s0, [x0, 0xa0]],
[ldr, s1, [x8, $game_speed]]
]
ALL_FPS:
- # Adjust max delta for menus, 0 - 30 FPS, 1 - 60 FPS, REF: 20 79 68 BC 01 10 2E 1E 00 D8 21 7E, ADRP X8 + LDR W8 above
type: evaluate_write
address: [MAIN, 0x254DDF0]
value_type: uint32
value: "FPS_TARGET / 60"
-
type: block
what: timing

View File

@ -1,25 +0,0 @@
# SWORD ART ONLINE Fractured Daydream US 1.6.0.0
# BID: 1A6C27F8DCFE45CB
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x86BE728, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x86F92D0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7EF8F88, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,23 +1,23 @@
# Wildkeepers Rising 1.01 # SWORD ART ONLINE Fractured Daydream EUR 1.5.2.0
# BID: D91CFC777B9A6E94 # BID: 2EEE840599DC7021
ALL_FPS: ALL_FPS:
# r.DynamicRes.FrameTimeBudget # r.DynamicRes.FrameTimeBudget
- -
type: evaluate_write type: evaluate_write
address: [MAIN, 0x8098330, 0] address: [MAIN, 0x8676768, 0]
value_type: float value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"] value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS # t.MaxFPS
- -
type: evaluate_write type: evaluate_write
address: [MAIN, 0x80D9808, 0] address: [MAIN, 0x86B12E0, 0]
value_type: float value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET] value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync # r.VSync
- -
type: write type: write
address: [MAIN, 0x70C3290, 0] address: [MAIN, 0x7EB0F88, 0]
value_type: uint32 value_type: uint32
value: [0, 0] value: [0, 0]
- -

View File

@ -1,25 +0,0 @@
# SWORD ART ONLINE Fractured Daydream US 1.6.1.0
# BID: 99252F8F7EE61A81
ALL_FPS:
# r.DynamicRes.FrameTimeBudget
-
type: evaluate_write
address: [MAIN, 0x86AD728, 0]
value_type: float
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0x86E82D0, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x7EE7F88, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

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

View File

@ -1,19 +0,0 @@
# FANTASY LIFE i: The Girl Who Steals Time 2.1.0
# BID: 16DF2D999C7ADAD7
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xAF9C938, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x9F7C728, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,19 +0,0 @@
# FANTASY LIFE i: The Girl Who Steals Time 2.1.2
# BID: 26CE9F3CC0393826
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xAFA0938, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0x9F80728, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,19 +0,0 @@
# FANTASY LIFE i: The Girl Who Steals Time 2.0.4
# BID: 56AA31E3C9DFB585
ALL_FPS:
# t.MaxFPS
-
type: evaluate_write
address: [MAIN, 0xB590938, 0]
value_type: float
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
# r.VSync
-
type: write
address: [MAIN, 0xA570728, 0]
value_type: uint32
value: [0, 0]
-
type: block
what: timing

View File

@ -1,37 +0,0 @@
# みんなのGOLF WORLD 1.1.7
# BID: 913B4D56415E96FF
# Changed frametime target value math formula because default one sucks at 60 FPS target
DECLARATIONS:
-
type: variable
name: dr_frametime_max
value_type: double
default_value: 40
evaluate: "0.9 * FRAMETIME_TARGET"
-
type: variable
name: dr_frametime_min
value_type: double
default_value: 33.3333333333
evaluate: "(0.9 * FRAMETIME_TARGET) - 6"
MASTER_WRITE:
# REF: 0a 00 a4 d2 8a 08 e8 f2 41 01 67 9e
-
type: asm_a64
main_offset: 0x39E48A8
instructions: [
[adrp, x10, $dr_frametime_max],
[ldr, d1, [x10, $dr_frametime_max]],
[nop]
]
-
# REF: 00 0d 40 fd 0a 00 b8 d2
type: asm_a64
main_offset: 0x39E497C
instructions: [
[adrp, x10, $dr_frametime_min],
[ldr, d1, [x10, $dr_frametime_min]],
[nop],
[nop]
]

View File

@ -1,10 +0,0 @@
# NINJA GAIDEN: Ragebound 1.0.7
# BID: 5CBAF9E303664284
ALL_FPS:
# UnityEngine.Time::fixedDeltaTime
-
type: evaluate_write
address: [MAIN, 0x613A2C0, 0x48]
value_type: float
value: "1 / FPS_TARGET"

View File

@ -1,4 +1,4 @@
# Red Dead Redemption 1.0.4-1.0.7 # Red Dead Redemption 1.0.4-1.0.6
# BID: 37531419DA7654EC # BID: 37531419DA7654EC
DECLARATIONS: DECLARATIONS:
@ -32,5 +32,4 @@ ALL_FPS:
type: evaluate_write type: evaluate_write
address: [MAIN, 0x20DBA20] address: [MAIN, 0x20DBA20]
value_type: uint32 value_type: uint32
value: VSYNC_TARGET value: VSYNC_TARGET

View File

@ -1,41 +0,0 @@
# ソニックフォース 新価格版 1.3.0
# BID: 972D8BF172E86C18
# Game speed is tied to framerate
MASTER_WRITE:
# Remove double buffer
## REF: E8 37 00 B9 E8 03 1F 32
-
type: asm_a64
main_offset: 0xAD414C
instructions: [
[mov, w8, 3]
]
# Block switching back to 30 FPS mode on loading screens
## REF: 08 10 40 F9 48 00 00 B4, replace STR
-
type: asm_a64
main_offset: 0x6173F8
instructions: [
[nop]
]
ALL_FPS:
# Switch to 60 FPS Mode
## REF: 7F 7E 07 A9 6A A2 01 A9, ADRP + LDR below
-
type: write
address: [MAIN, 0x1CAC518, 0x28, 0x20, 0x14]
value_type: uint32
value: 1
# FPS target
## REF: 00 1D 40 BD 01 D0 37 1E, ADRP + LDR above it
-
type: evaluate_write
address: [MAIN, 0x1C38C28, 0x1C]
value_type: float
value: FPS_TARGET
-
type: evaluate_write
address: [MAIN, 0x1C38C28, 0x14C]
value_type: float
value: FPS_TARGET

View File

@ -1,19 +0,0 @@
# HUNDRED LINE -最終防衛学園- 1.2.0
# BID: D4A7205845845BCA
# Last found function with REF: FD 7B BE A9 F3 0B 00 F9 FD 03 00 91 E0 03 01 2A stores some code related to playing above 60 FPS. Look at it if someone will have an issue playing above 60 FPS.
ALL_FPS:
# FPS Lock
# REF: 1B 41 00 00
-
type: evaluate_write
address: [MAIN, 0xC97D18]
value_type: uint32
value: FRAMETIME_TARGET * 1000
# Unknown value, but set in the same function as FPS lock, so it may be important
# REF: 3C 00 00 00 01 00 00 00 00 00 00 00
-
type: evaluate_write
address: [MAIN, 0xC97CE4]
value_type: uint32
value: FPS_TARGET

View File

@ -1,15 +0,0 @@
# The Long Dark 2.51.170901
# BID: 99349B456BEA3469
ALL_FPS:
# TLD.Rendering.DynamicResolutionHelper_TypeInfo
-
type: evaluate_write
address: [MAIN, 0x7886928, 0xB8, 0x48]
value_type: uint32
value: FPS_TARGET
-
type: evaluate_write
address: [MAIN, 0x7886928, 0xB8, 0x50]
value_type: double
value: FRAMETIME_TARGET

View File

@ -1,15 +0,0 @@
# The Long Dark: Tales from the Far Territory 2.51.170901
# BID: 8CBC566AED7F1095
ALL_FPS:
# TLD.Rendering.DynamicResolutionHelper_TypeInfo
-
type: evaluate_write
address: [MAIN, 0x73B7A90, 0xB8, 0x48]
value_type: uint32
value: FPS_TARGET
-
type: evaluate_write
address: [MAIN, 0x73B7A90, 0xB8, 0x50]
value_type: double
value: FRAMETIME_TARGET

View File

@ -1,10 +0,0 @@
# The Legend of Heroes: Trails beyond the Horizon 1.0.6
# BID: 11D7F970861DFA66
ALL_FPS:
# REF: C1 03 80 52 09 35 00 B9, first ADRP + ADD above it
-
type: evaluate_write
address: [MAIN, 0x9FBEA0, 0x34]
value_type: uint32
value: FPS_TARGET

View File

@ -1,10 +0,0 @@
# The Legend of Heroes: Trails beyond the Horizon 1.0.5
# BID: A8C6A84FBCF08724
ALL_FPS:
# REF: C1 03 80 52 09 35 00 B9, first ADRP + ADD above it
-
type: evaluate_write
address: [MAIN, 0x9FBEA0, 0x34]
value_type: uint32
value: FPS_TARGET

View File

@ -1,18 +0,0 @@
# 룬 팩토리 5 / 符文工廠5 1.1.2
# BID: 082815456F5BD744
# Cutscenes don't use Dynamic Resolution
ALL_FPS:
# Dynamic Resolution Frame Target Max in ms (default is 38, so resolution is a priority over framerate)
## REF: Method$SingletonMonoBehaviour<SkyStudioTimeManager>.CheckInstance()
-
type: evaluate_write
address: [MAIN, 0x5ED5E58, 0x738, 0x70, 0x38]
value_type: float
value: "TruncDec(FRAMETIME_TARGET, 1)"
# Dynamic Resolution Frame Target Min in ms (default is 33)
-
type: evaluate_write
address: [MAIN, 0x5ED5E58, 0x738, 0x70, 0x3C]
value_type: float
value: "FRAMETIME_TARGET - 1.5"

View File

@ -1,167 +0,0 @@
# The Legend of Zelda: Breath of the Wild 1.9.0
# BID: CD57B23FA4BBAD65
DECLARATIONS:
-
type: variable
name: game_speed
value_type: float
default_value: 1.0
-
type: variable
name: min_delta
value_type: float
default_value: 1.0
evaluate: 30 / FPS_TARGET
-
type: variable
name: dr_factor
value_type: float
default_value: 100.0
evaluate: (FPS_TARGET / 30) * 100
-
type: variable
name: frame_tick
value_type: uint64
default_value: 0
-
type: const
name: default_frame_nanoseconds
value: 33333333
-
type: code
name: dynamicSpeed
instructions: [
[stp, x29, x30, [sp, -16], "!"],
[mov, x29, sp],
[blr, x8],
[mrs, x2, cntpct_el0],
[adrp, x8, $frame_tick],
[ldr, x1, [x8, $frame_tick]],
[cmp, x1, xzr],
[str, x2, [x8, $frame_tick]],
[b.eq, :goto4],
[sub, x0, x2, x1],
[bl, _convertTickToTimeSpan()],
[ucvtf, s0, x0],
[mov, w0, $default_frame_nanoseconds],
[movk, w0, $default_frame_nanoseconds, 16],
[ucvtf, s1, w0],
[fdiv, s0, s0, s1],
[fmov, s1, 2.0],
[fcmp, s0, s1],
[b.lt, :goto2],
[fmov, s0, s1],
:goto2, [adrp, x8, $min_delta],
[ldr, s1, [x8, $min_delta]],
[fcmp, s0, s1],
[b.gt, :goto3],
[fmov, s0, s1],
:goto3, [adrp, x8, $game_speed],
[str, s0, [x8, $game_speed]],
:goto4, [ldp, x29, x30, [sp], 16],
[ret]
]
-
type: variable
name: cutscene_state
value_type: uint8
default_value: 1
-
type: code
name: signalCutscene
instructions: [
[adrp, x7, $cutscene_state],
[strb, w1, [x7, $cutscene_state]],
[b, 0xD0B208] # Update this to jump to address replaced via "Signal Cutscenes playing"
]
MASTER_WRITE:
# Remove double buffer
## REF: 61 F6 42 39
-
type: asm_a64
main_offset: 0xE93DC8
instructions: [
[mov, w1, 1]
]
# Change pointer of time factor for DR calculations to $dr_factor
## REF: 01 01 27 1E 08 59 A8 52 03 08 21 1E, replace hardcoded 100.0 float
-
type: asm_a64
main_offset: 0x12670A4
instructions: [
[adrp, x8, $dr_factor],
[fmul, s3, s0, s1],
[ldr, s1, [x8, $dr_factor]]
]
# Dynamic speed
## Replace nvnQueuePresentTexture call to code cave _dynamicSpeed()
-
type: asm_a64
main_offset: 0xE9AB7C
instructions: [
[bl, _dynamicSpeed()]
]
## Patch game speed function to use speed from $game_speed
## REF: 00 3C 40 BD 00 40 00 BD, replace CBZ W8 after it
-
type: asm_a64
main_offset: 0x151D448
instructions: [
[b, +12]
]
## REF: 01 01 23 1E 28 00 80 52 42 D8 21 7E, replace FDIV + FMUL after that
-
type: asm_a64
main_offset: 0x151D46C
instructions: [
[adrp, x9, $game_speed],
[ldr, s1, [x9, $game_speed]]
]
## Patch UI speed function to use speeed from $game_speed
## REF: 01 10 2C 1E E0 03 1F 2A
-
type: asm_a64
main_offset: 0x1280ED8
instructions: [
[adrp, x7, $game_speed]
]
## REF: 00 08 21 1E 00 21 0B BD
-
type: asm_a64
main_offset: 0x1280EE4
instructions: [
[ldr, s0, [x7, $game_speed]]
]
# Signal Cutscenes playing
## REF: A8 00 80 52 E0 03 13 AA 68 C2 01 F8, second BL after that, before second BL you should have MOV X0, X19 + MOV W1, 1
-
type: asm_a64
main_offset: 0xD13910
instructions: [
[bl, _signalCutscene()]
]
## REF: 03 1C 40 92 80 82 17 91 E1 03 15 AA, second BL after that
-
type: asm_a64
main_offset: 0xD140D0
instructions: [
[bl, _signalCutscene()]
]
ALL_FPS:
# Scrolling speed
## REF: 68 16 41 B9 D8 22 D5 1A
## ADRP + LDR above it
-
type: evaluate_write
address: [MAIN, 0x1DAD0E0]
value_type: float
value: "30 / FPS_TARGET"
# Prerendered cutscenes must be played at 30 FPS
-
type: compare
compare_address: [VARIABLE, cutscene_state]
compare_type: "=="
compare_value: 0
value_type: refresh_rate
value: 30

View File

@ -1,37 +0,0 @@
# EVERYBODY'S GOLF: Hot Shots US 1.1.7
# BID: EB39450B8BEE080B
# Changed frametime target value math formula because default one sucks at 60 FPS target
DECLARATIONS:
-
type: variable
name: dr_frametime_max
value_type: double
default_value: 40
evaluate: "0.9 * FRAMETIME_TARGET"
-
type: variable
name: dr_frametime_min
value_type: double
default_value: 33.3333333333
evaluate: "(0.9 * FRAMETIME_TARGET) - 6"
MASTER_WRITE:
# REF: 0a 00 a4 d2 8a 08 e8 f2 41 01 67 9e
-
type: asm_a64
main_offset: 0x39E4928
instructions: [
[adrp, x10, $dr_frametime_max],
[ldr, d1, [x10, $dr_frametime_max]],
[nop]
]
# REF: 00 0d 40 fd 0a 00 b8 d2
-
type: asm_a64
main_offset: 0x39E49FC
instructions: [
[adrp, x10, $dr_frametime_min],
[ldr, d1, [x10, $dr_frametime_min]],
[nop],
[nop]
]

View File

@ -1,41 +0,0 @@
# DARQ Ultimate Edition 1.0.3
# BID: C57C698B73E75F7E
DECLARATIONS:
-
type: variable
name: frametime_target
value_type: double
default_value: 33.333332061767578
evaluate: "FRAMETIME_TARGET - 1.0" # Default value is FRAMETIME_TARGET, but it has issues with reaching 60 FPS
-
type: code
name: getFrametimeTarget1
instructions: [
[adrp, x8, $frametime_target],
[ldr, d9, [x8, $frametime_target]],
[ret]
]
-
type: code
name: getFrametimeTarget2
instructions: [
[adrp, x8, $frametime_target],
[ldr, d1, [x8, $frametime_target]],
[ret]
]
MASTER_WRITE:
# REF: 69 26 40 fd
-
type: asm_a64
main_offset: 0x17FE28C
instructions: [
[bl, _getFrametimeTarget1()]
]
# REF: 61 26 40 fd 00 20 61 1e
-
type: asm_a64
main_offset: 0x17FE2B8
instructions: [
[bl, _getFrametimeTarget2()]
]

View File

@ -1,21 +0,0 @@
# No Man's Sky 6.20.0
# BID: 19EC806A902017D6
DECLARATIONS:
-
type: variable
name: dr_target
value_type: float
default_value: 30
evaluate: FPS_TARGET
MASTER_WRITE:
# Redirect DR frametime target
# REF: 08 4E A8 52 00 01 27 1E 48 8F A8 52, ADRP + ADD + LDR above that
-
type: asm_a64
main_offset: 0x2085970
instructions: [
[adrp, x9, $dr_target],
[ldr, s0, [x9, $dr_target]],
[nop]
]

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