mirror of
https://github.com/Ultra-NX/UltraNX.git
synced 2026-05-29 20:13:12 +00:00
Compare commits
No commits in common. "main" and "2.7-R3" have entirely different histories.
44
README.md
44
README.md
@ -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
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
```
|
```
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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"
|
|
||||||
@ -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"
|
|
||||||
@ -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
|
|
||||||
@ -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"
|
|
||||||
@ -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"
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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]
|
|
||||||
@ -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"
|
|
||||||
@ -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"
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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"
|
|
||||||
@ -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]
|
|
||||||
]
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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)"
|
|
||||||
@ -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.
|
||||||
|
|||||||
@ -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]]
|
|
||||||
]
|
|
||||||
@ -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]]
|
|
||||||
]
|
|
||||||
@ -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]
|
|
||||||
]
|
|
||||||
@ -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]]
|
|
||||||
]
|
|
||||||
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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"
|
|
||||||
@ -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"
|
|
||||||
@ -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
|
|
||||||
@ -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]
|
|
||||||
]
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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"
|
|
||||||
@ -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]
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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]]
|
|
||||||
]
|
|
||||||
@ -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]]
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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"
|
|
||||||
@ -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"
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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"
|
|
||||||
@ -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"
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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]
|
||||||
-
|
-
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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]
|
|
||||||
]
|
|
||||||
@ -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"
|
|
||||||
@ -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
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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"
|
|
||||||
@ -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
|
|
||||||
@ -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]
|
|
||||||
]
|
|
||||||
@ -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()]
|
|
||||||
]
|
|
||||||
@ -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
Loading…
x
Reference in New Issue
Block a user