mirror of
https://github.com/Ultra-NX/UltraNX.git
synced 2025-08-08 02:22:07 +00:00
Compare commits
17 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
85ffded054 | ||
|
7d6a8eb2b1 | ||
|
69db804029 | ||
|
d18b6d94c4 | ||
|
6c1c55d929 | ||
|
220ef77d17 | ||
|
ece8bc4858 | ||
|
081eaa7c7d | ||
|
eda99e7881 | ||
|
d28855fd34 | ||
|
d0b97525a8 | ||
|
bf48033941 | ||
|
9adc60b135 | ||
|
5153b2d17a | ||
|
9d661b1d18 | ||
|
1fc80bcbdb | ||
|
985a53995a |
41
README.md
41
README.md
@ -1,4 +1,4 @@
|
||||
# Ultra-NX by **[redraz](https://github.com/redraz)**
|
||||
# UltraNX by **[redraz](https://github.com/redraz)**
|
||||
|
||||

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

|
||||
|
||||
@ -6,7 +6,8 @@
|
||||
#
|
||||
### Ultra is a functional custom firmware for Nintendo Switch, with a focus on overclocking and an improved user experience.
|
||||
|
||||
### [Ultra 2.3](https://github.com/Ultra-NX/Ultra/releases/latest/) Supports HOS 19.0.1 and all console revisions
|
||||
### [Ultra 2.5|R1](https://github.com/Ultra-NX/UltraNX/releases) Supports HOS 20.2.0
|
||||
### [Ultra 2.5|Pre2](https://github.com/Ultra-NX/UltraNX/releases/tag/2.5-R2) Partially supports HOS 20.3.0 (Safe Mode Only)
|
||||
|
||||
|
||||
|
||||
@ -21,9 +22,7 @@
|
||||
* Regular updates, and an active community.
|
||||
* [Forks](https://github.com/Ultra-NX/Ultra-Resources/tree/main/patches) (own modifications) of programs and components needed for convenience, security and empowerment:
|
||||
* Atmosphere fork with Ultra version in system information, and disabled reports, which usually clogs up the SD card, wastes its resource and breaks the file system.
|
||||
* SaltyNX and FPSLocker forks, with support for changing screen refresh rate and with OLED support.
|
||||
* Mission Control fork, with the “easter egg” cut out, making the joycons yellow-blue.
|
||||
* Status Monitor fork with display of current voltages and unique Micro Overlay modules, whose presets can be changed via Ultra Tuner.
|
||||
|
||||
|
||||
|
||||
@ -36,35 +35,36 @@
|
||||
|
||||
|
||||
1. **Installed Payloads**:
|
||||
* [Lockpick_RCM](https://gbatemp.net/download/lockpick_rcm-1-9-13-fw-19-zoria-source.38837/) - Program for dumping console keys.
|
||||
* [Lockpick RCM](https://github.com/impeeza/Lockpick_RCMDecScots) - Program for dumping console keys.
|
||||
* [TegraExplorer](https://github.com/suchmememanyskill/TegraExplorer) - A low-level file manager for working with the system.
|
||||
|
||||
|
||||
1. **Installed Homebrew**
|
||||
* [Sphaira](https://github.com/ITotalJustice/sphaira) - Modern Homebrew Menu, analogous to nx-hbmenu
|
||||
* [AiO Switch Updater](https://github.com/HamletDuFromage/aio-switch-updater) - Program to update Ultra to the current version, as well as to download cheats.
|
||||
* [Daybreak](https://github.com/Atmosphere-NX/Atmosphere) - A program for updating OS.
|
||||
* [DBI](https://github.com/rashevskyv/dbi) - The best file manager, save manager and program installer on the console. If you need a different localization - Updater has a choice of EN-RU-PTBR-ZHCN.
|
||||
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1100#entry86288632) - The best file manager, save manager and program installer on the console.
|
||||
|
||||
|
||||
1. **Installed Modules**
|
||||
* [SaltyNX](https://github.com/masagrator/SaltyNX) - Background module allowing to modify files/processes in console, supports plugins. Not compatible with 32-bit games (list on the project's github).
|
||||
* [sys-clk](https://github.com/halop/OC_Toolkit_SC_EOS) - Module responsible for overclocking CPU, memory and GPU - for better performance. I change versions from different authors from time to time. Original authors: Meha/hanai3Bi, lineon, p-sam.
|
||||
* [sys-clk](https://github.com/ppkantorski/sys-clk) - Module responsible for overclocking CPU, memory and GPU - for better performance. I change versions from different authors from time to time. Original authors: Meha/hanai3Bi, lineon, p-sam.
|
||||
* [nx-ovlloader](https://github.com/ppkantorski/nx-ovlloader) - This module is used to switch the installed modules.
|
||||
* [sys-patch](https://github.com/impeeza/sys-patch) - Patches the system to run unsigned software instead of sigpatches.
|
||||
* [Mission Control](https://github.com/ndeadly/MissionControl) - A module that allows you to connect almost any gamepads to the console via bluetooth.
|
||||
* [sys-con](https://github.com/o0Zz/sys-con) - A module that allows you to connect almost any gamepads to the console via USB.
|
||||
* [Ultrahand Overlay](https://github.com/ppkantorski/Ultrahand-Overlay) - Special overlay-menu for interacting with the system: overclocking, controlling modes via ReverseNX, enabling cheats, etc. Also allows to use your own packages, for example, Ultra Tuner.
|
||||
- **`Ultra OC (sys-clk)`**, a mod of [sys-clk](https://github.com/halop/OC_Toolkit_SC_EOS) - Overlay for controlling sys-clk module. Slightly modified by me, but without digging into sources (Since they're closed).
|
||||
- [Status Monitor](https://github.com/Ultra-NX/Status-Monitor-Overlay), a fork of [Status Monitor](https://github.com/masagrator/Status-Monitor-Overlay) - Overlay that allows you to monitor console parameters in real time. It can act as an FPS counter. You change preset of Micro-overlay appearance in Updater.
|
||||
- **`Ultra OC (sys-clk)`**, a mod of [sys-clk](https://github.com/ppkantorski/sys-clk) - Overlay for controlling sys-clk module. Slightly modified by me, but without digging into sources (Since they're closed).
|
||||
- [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay), a fork of [Status Monitor](https://github.com/masagrator/Status-Monitor-Overlay) - Overlay that allows you to monitor console parameters in real time. It can act as an FPS counter. You change preset of Micro-overlay appearance in Updater.
|
||||
- [FPSLocker](https://github.com/masagrator/FPSLocker) - An overlay that allows you to unlock 60 FPS in games.
|
||||
- [EdiZon](https://github.com/proferabg/EdiZon-Overlay) - An overlay for using cheats.
|
||||
- [ReverseNX-RT](https://github.com/masagrator/ReverseNX-RT) - ReverseNX control overlay.
|
||||
- [Sysmodules](https://github.com/WerWolv/ovl-sysmodules/) - Overlay for enabling and disabling installed system modules.
|
||||
- [ReverseNX-RT](https://github.com/ppkantorski/ReverseNX-RT) - ReverseNX control overlay.
|
||||
- [Sysmodules](https://github.com/ppkantorski/ovl-sysmodules) - Overlay for enabling and disabling installed system modules.
|
||||
|
||||
|
||||
1. **Available for download via [Updater](https://github.com/Ultra-NX/Ultra/wiki/Tuner-RU#Updater)**
|
||||
* Homebrews:
|
||||
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1120#entry86288632) - Here you can download a DBI with the desired language, or update an existing one.
|
||||
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1100#entry86288632) - Here you can download a DBI or update an existing one.
|
||||
* [Linkalho](https://gbatemp.net/download/linkalho.38822/) - Account linking program.
|
||||
* [HB App Store](https://github.com/fortheusers/hb-appstore) - A free store for downloading Homebrew apps.
|
||||
* [PPSSPP](https://gbatemp.net/threads/ppsspp-switch-standalone-beta.544071/post-10492671) - PSP emulator.
|
||||
@ -73,9 +73,10 @@
|
||||
* [Battery Desync Fix](https://github.com/CTCaer/battery_desync_fix_nx) - Program to reset the battery controller. Do not use unnecessarily!
|
||||
* [MemToolkitNX](https://discord.com/channels/854839758815363072/1173171845139288114/1324099100202766408) - Benchmark and Memory Tester. The result is highly dependent on CPU overclocking.
|
||||
* [MemToolkitNX OLD](https://discord.com/channels/854839758815363072/1173171845139288114/1276196700750479480) - Benchmark and Memory Tester. The result is highly dependent on CPU overclocking. The old version, which many people like better than the new one.
|
||||
* [MicroMemBench](https://github.com/rashevskyv/4IFIR) - Benchmark. The result is highly dependent on CPU overclocking. A version from 4ifir that tests CPU Copy in real time, which allows you to quickly find out the result after changing timings.
|
||||
|
||||
* Overlays:
|
||||
* [Status Monitor Ultra](https://github.com/Ultra-NX/Status-Monitor-Overlay) - Status Monitor fork for UltraNX, supports many Micro-overlay presets, and has a number of unique features.
|
||||
* [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay) - Status Monitor fork from kantorski.
|
||||
* [Tetris](https://github.com/ppkantorski/Tetris-Overlay/) - "That" game in the form of an overlay. Works only on the latest versions of Ultrahand.
|
||||
* [MasterVolume](https://github.com/averne/MasterVolume) - Global volume control, allows you to raise the volume above the maximum. Use with care!
|
||||
* [NX-FanControl](https://github.com/Zathawo/NX-FanControl) - Module for manually adjusting the speed of the cooler. The changes are applied immediately, the module works from SOC temperature and not Skin temperature like Atmosphere.
|
||||
@ -86,6 +87,7 @@
|
||||
* Other:
|
||||
* [FPSLocker Patches](https://github.com/masagrator/FPSLocker-Warehouse) - Patches for FPSLocker, so you don't have to download a separate patch for each game through the overlay.
|
||||
* [DVR Patches](https://github.com/exelix11/dvr-patches) - SysDVR patches, work without the system module, activating background recording in games where it is initially prohibited.
|
||||
* [Mod Alchemist](https://github.com/ppkantorski/Mod-Alchemist) - A package for downloading, installing, and managing mods for games.
|
||||
* [sys-ftpd](https://github.com/cathery/sys-ftpd) - FTP server running in background.
|
||||
|
||||
|
||||
@ -110,8 +112,6 @@ Listed below are the licenses of those programs that have been modified specific
|
||||
* Meha
|
||||
* duckbill
|
||||
* snupt
|
||||
* Cooler3D
|
||||
* 4PDA
|
||||
#### And also - a special thanks to the administration and members of Ultra Group
|
||||
|
||||
|
||||
@ -121,7 +121,7 @@ Listed below are the licenses of those programs that have been modified specific
|
||||
If you like the project and you have a desire to support me with a penny - I will be very grateful.
|
||||
I have no other income at the moment, so any monetary help is very valuable to me.
|
||||
```
|
||||
TON: UQDioCnnPI5sk4KvxWzfPWsWbAyWCkzwhaYjy8Qpg2QwWMiL
|
||||
BTC: 1HsC4z8X1YkZzcSKZz1t7MXRa7rPi8qChV
|
||||
USDT: TQi3qLVrNGcr6avfVQBXRjpPTyvp5JZ7i2
|
||||
TON: UQA9My51bkGZHbYhbdRZfp6B60N7VJfsnKl0sakgw9YhAPct
|
||||
BTC: 18K6NN8NEavvMJL5Do3VTyJbL8NeZPHo93
|
||||
USDT TRC20: TUZ5szAmRsnvBuC4rFB8RaAoCbN6Ucy4sL
|
||||
```
|
@ -24,7 +24,7 @@ X0100964012528000
|
||||
|
||||
;Olympic Games Tokyo 2020 – The Official Video Game
|
||||
;1.0.0 crash on boot
|
||||
010034B00E14C000
|
||||
X010034B00E14C000
|
||||
|
||||
;Mario Strikers: Battle League
|
||||
;1.0.0 crash on boot
|
||||
@ -49,4 +49,12 @@ X0100964012528000
|
||||
|
||||
;Donkey Kong Country: Tropical Freeze
|
||||
;Crash at second level
|
||||
X0100C1F0051B6000
|
||||
X0100C1F0051B6000
|
||||
|
||||
;Death Road to Canada
|
||||
;1.0.8 crash
|
||||
X0100423009358000
|
||||
|
||||
;Splatoon 3
|
||||
;10.0.0 upwards crashes after online match
|
||||
X0100C2500FC20000
|
||||
|
@ -0,0 +1,27 @@
|
||||
# Horizon Chase 2 1.6.9
|
||||
# BID: E13F632FC2A66EEB
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x8349850, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8B36A30, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8B11598, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -1,4 +1,4 @@
|
||||
# Rad Rogers: Radical Edition 1.2.0
|
||||
# Rad Rodgers: Radical Edition 1.2.0
|
||||
# BID: 78885A1CA987C04C
|
||||
|
||||
unsafeCheck: true
|
||||
@ -13,3 +13,4 @@ ALL_FPS:
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
|
||||
|
@ -0,0 +1,22 @@
|
||||
# Gal*Gun Returns 1.0.4
|
||||
# BID: 7E65E5BC3564BE46
|
||||
# Buffers are hardcoded into fixed size class, so it's hard to get triple buffer
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# FPS Target + FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x16CE8A8, 0x20]
|
||||
value_type: float
|
||||
value: "60 / FPS_TARGET"
|
||||
# Lipsync fix
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1BA0A1C]
|
||||
value_type: uint32
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,36 @@
|
||||
# Tiebreak+: Official Game of the ATP and WTA 1.1.0
|
||||
# BID: 2A5244CCB17B44AC
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Triple buffer
|
||||
# REF: 00 40 00 00 00 04 00 00 00 88 00 00 02 00 00 00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1A81E6C
|
||||
value_type: uint32
|
||||
value: 3
|
||||
# Redirect Dynamic Resolution target reading to MAIN + 0x30C2F00
|
||||
# REF: 0C 9A 88 52 0C 6B A7 72
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x147AA94
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x9000E248 # ADRP X8, 0x30C2000
|
||||
- 0xBD4F0103 # LDR S3, [X8, 0xF00]
|
||||
- 0xD503201F # NOP
|
||||
## Default values
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x30C2F00
|
||||
value_type: float
|
||||
value: 0.03333333333
|
||||
ALL_FPS:
|
||||
# Adjust Dynamic Resolution target, we are using this trick because function is overengineered and it's not easy to just use standard 1 / FPS_TARGET
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x30C2F00]
|
||||
value_type: float
|
||||
value: "0.8 / FPS_TARGET"
|
@ -0,0 +1,36 @@
|
||||
# Tiebreak+: Official Game of the ATP and WTA 1.2.0
|
||||
# BID: 5BCA5C20C8F8A9B4
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Triple buffer
|
||||
# REF: 00 40 00 00 00 04 00 00 00 88 00 00 02 00 00 00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1A82EAC
|
||||
value_type: uint32
|
||||
value: 3
|
||||
# Redirect Dynamic Resolution target reading to MAIN + 0x30C3F00
|
||||
# REF: 28 11 91 52 08 A1 A7 72 03 01 27 1E
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x147B474
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x9000E248 # ADRP X8, 0x30C3000
|
||||
- 0xBD4F0103 # LDR S3, [X8, 0xF00]
|
||||
- 0xD503201F # NOP
|
||||
## Default values
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x30C3F00
|
||||
value_type: float
|
||||
value: 0.03333333333
|
||||
ALL_FPS:
|
||||
# Adjust Dynamic Resolution target, we are using this trick because function is overengineered and it's not easy to just use standard 1 / FPS_TARGET
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x30C3F00]
|
||||
value_type: float
|
||||
value: "0.8 / FPS_TARGET"
|
@ -0,0 +1,36 @@
|
||||
# Tiebreak+: Official Game of the ATP and WTA 1.3.0
|
||||
# BID: 88CC45A195E0BDA8
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Triple buffer
|
||||
# REF: 00 40 00 00 00 04 00 00 00 88 00 00 02 00 00 00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1A82F0C
|
||||
value_type: uint32
|
||||
value: 3
|
||||
# Redirect Dynamic Resolution target reading to MAIN + 0x30C3F00
|
||||
# REF: 28 11 91 52 08 A1 A7 72 03 01 27 1E
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x147BE04
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x9000E248 # ADRP X8, 0x30C3000
|
||||
- 0xBD4F0103 # LDR S3, [X8, 0xF00]
|
||||
- 0xD503201F # NOP
|
||||
## Default values
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x30C3F00
|
||||
value_type: float
|
||||
value: 0.03333333333
|
||||
ALL_FPS:
|
||||
# Adjust Dynamic Resolution target, we are using this trick because function is overengineered and it's not easy to just use standard 1 / FPS_TARGET
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x30C3F00]
|
||||
value_type: float
|
||||
value: "0.8 / FPS_TARGET"
|
@ -0,0 +1,30 @@
|
||||
# S.T.A.L.K.E.R.: Call of Prypiat 1.0.3
|
||||
# BID: AD4CBC4878008E1E
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# psLoadedFrameLimitFps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x17F9784]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
# psCurrentFrameLimitFps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x18168A0]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
# psCurrentFrameLimitMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1A8490C]
|
||||
value_type: float
|
||||
value: "1000 / FPS_LOCK_TARGET"
|
||||
# ResolutionInfo::sDynresGPUBudgetMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x17F9760]
|
||||
value_type: float
|
||||
value: "FRAMETIME_TARGET - (1/30)"
|
@ -0,0 +1,27 @@
|
||||
# SWORD ART ONLINE Fractured Daydream JAP 1.3.0
|
||||
# BID: C2F2C4B700B30598
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8FD6748, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x9011290, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x8810F08, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Breathedge 1.0.2
|
||||
# BID: B26DE1669B729335
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# Disable bUseFixedFrameRate
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x55CB668, 0x7F0]
|
||||
value_type: uint32
|
||||
value: 7
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x55CBDE0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x4E6A7B8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Tony Hawk's Pro Skater 3 + 4 1.05
|
||||
# BID: 65A9705A4BB35AA2
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x77DD4B8, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x780B6A0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x7006068, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Tony Hawk's Pro Skater 3 + 4 1.0.3
|
||||
# BID: A31FE9B8AF1156D4
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x77CF4B8, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x77FD6A0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x6FF83C8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -12,7 +12,7 @@ ALL_FPS:
|
||||
value: [FPS_TARGET, FPS_TARGET]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: write
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x71B2BD0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
|
@ -0,0 +1,15 @@
|
||||
# OCTOPATH TRAVELER 歧路旅人 1.0.5
|
||||
# BID: 9E6B0D0023F9DB3B
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x50B5698, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -1,7 +1,6 @@
|
||||
# SONIC FORCES 1.1.0
|
||||
# BID: 6D9EA94F8AAC00A8
|
||||
# Game speed is tied to framerate
|
||||
# Above 30 FPS level 8 is harder to beat and level 20 impossible to beat
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
@ -12,10 +11,27 @@ MASTER_WRITE:
|
||||
main_offset: 0xAD40FC
|
||||
value_type: uint32
|
||||
value: 0x52800068
|
||||
# Block switching back to 30 FPS mode on loading screens
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6173B0
|
||||
value_type: uint32
|
||||
value: 0xD503201F
|
||||
ALL_FPS:
|
||||
# FPS target (FPS * 2)
|
||||
# Switch to 60 FPS Mode
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x1CAC518, 0x28, 0x20, 0x14]
|
||||
value_type: uint32
|
||||
value: 1
|
||||
# FPS target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1C38C28, 0x1C]
|
||||
value_type: float
|
||||
value: "FPS_TARGET * 2"
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1C38C28, 0x14C]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
@ -1,7 +1,6 @@
|
||||
# SONIC FORCES 1.1.0
|
||||
# BID: 6D9EA94F8AAC00A8
|
||||
# Game speed is tied to framerate
|
||||
# Above 30 FPS level 8 is harder to beat and level 20 impossible to beat
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
@ -12,10 +11,27 @@ MASTER_WRITE:
|
||||
main_offset: 0xAD40FC
|
||||
value_type: uint32
|
||||
value: 0x52800068
|
||||
# Block switching back to 30 FPS mode on loading screens
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6173B0
|
||||
value_type: uint32
|
||||
value: 0xD503201F
|
||||
ALL_FPS:
|
||||
# FPS target (FPS * 2)
|
||||
# Switch to 60 FPS Mode
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x1CAC518, 0x28, 0x20, 0x14]
|
||||
value_type: uint32
|
||||
value: 1
|
||||
# FPS target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1C38C28, 0x1C]
|
||||
value_type: float
|
||||
value: "FPS_TARGET * 2"
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1C38C28, 0x14C]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
@ -1,12 +1,83 @@
|
||||
# WARRIORS OROCHI 4 1.0.13
|
||||
# BID: 5C9CCD358BE85FC9
|
||||
# Credits to Hazerou for figuring out the offset
|
||||
# Main offset stores address to start of .bss of NRO
|
||||
## REF: 02 00 00 00 3C 00 00 00
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Without DLC Ultimate Edition installed
|
||||
-
|
||||
type: write
|
||||
type: evaluate_compare
|
||||
compare_value_type: uint64
|
||||
compare_type: "=="
|
||||
compare_value: 0xE2CFDAC9EAC20398
|
||||
compare_address: [MAIN, 0x3AF80, -0x1A92FC0]
|
||||
address: [MAIN, 0x3AF80, -0x934A8]
|
||||
value_type: uint32
|
||||
value: [VSYNC_TARGET, FPS_TARGET]
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_value_type: uint64
|
||||
compare_type: "=="
|
||||
compare_value: 0xE2CFDAC9EAC20398
|
||||
compare_address: [MAIN, 0x3AF80, -0x1A92FC0]
|
||||
address: [MAIN, 0x3AF80, -0x934A0]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_value_type: uint64
|
||||
compare_type: "=="
|
||||
compare_value: 0xE2CFDAC9EAC20398
|
||||
compare_address: [MAIN, 0x3AF80, -0x1A92FC0]
|
||||
address: [MAIN, 0x3AF80, -0x9349C]
|
||||
value_type: uint32
|
||||
value: [VSYNC_TARGET, FPS_TARGET]
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_value_type: uint64
|
||||
compare_type: "=="
|
||||
compare_value: 0xE2CFDAC9EAC20398
|
||||
compare_address: [MAIN, 0x3AF80, -0x1A92FC0]
|
||||
address: [MAIN, 0x3AF80, -0x93494]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
||||
# With DLC Ultimate Edition installed
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_value_type: uint64
|
||||
compare_type: "!="
|
||||
compare_value: 0xE2CFDAC9EAC20398
|
||||
compare_address: [MAIN, 0x3AF80, -0x1A92FC0]
|
||||
address: [MAIN, 0x3AF80, -0x93200]
|
||||
value_type: uint32
|
||||
value: [VSYNC_TARGET, FPS_TARGET]
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_value_type: uint64
|
||||
compare_type: "!="
|
||||
compare_value: 0xE2CFDAC9EAC20398
|
||||
compare_address: [MAIN, 0x3AF80, -0x1A92FC0]
|
||||
address: [MAIN, 0x3AF80, -0x931F8]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_value_type: uint64
|
||||
compare_type: "!="
|
||||
compare_value: 0xE2CFDAC9EAC20398
|
||||
compare_address: [MAIN, 0x3AF80, -0x1A92FC0]
|
||||
address: [MAIN, 0x3AF80, -0x931F4]
|
||||
value_type: int32
|
||||
value: 1
|
||||
value_type: uint32
|
||||
value: [VSYNC_TARGET, FPS_TARGET]
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_value_type: uint64
|
||||
compare_type: "!="
|
||||
compare_value: 0xE2CFDAC9EAC20398
|
||||
compare_address: [MAIN, 0x3AF80, -0x1A92FC0]
|
||||
address: [MAIN, 0x3AF80, -0x931EC]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
||||
|
@ -23,6 +23,3 @@ ALL_FPS:
|
||||
address: [MAIN, 0x2AEF6D0, 2554]
|
||||
value_type: uint8
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
|
@ -0,0 +1,27 @@
|
||||
# Goat Simulator 3 1.0.7.7
|
||||
# BID: 504EBEAB62E802AD
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x99DC468, 0]
|
||||
value_type: float
|
||||
value: ["0.81 * FRAMETIME_TARGET", "0.81 * FRAMETIME_TARGET"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x9A02290, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x920CBF8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Goat Simulator 3 1.0.7.6
|
||||
# BID: 8D4FD57DB7D63120
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x99DD468, 0]
|
||||
value_type: float
|
||||
value: ["0.81 * FRAMETIME_TARGET", "0.81 * FRAMETIME_TARGET"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x9A03290, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x920DB48, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Goat Simulator 3 1.0.7.8
|
||||
# BID: A45BCB8A63C50DC8
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x99DC468, 0]
|
||||
value_type: float
|
||||
value: ["0.81 * FRAMETIME_TARGET", "0.81 * FRAMETIME_TARGET"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x9A02290, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x920CBF8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,53 @@
|
||||
# Kingdom Come: Deliverance - Royal Edition JP 1.9.6H
|
||||
# BID: 7A450848CFDEC18E
|
||||
# Some prerendered cutscenes are still pushed at 30 FPS
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Block updating DR timings, REF: 00 01 27 1E 48 40 A8 52
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1CA806C
|
||||
value_type: uint32
|
||||
value: 0xD503201F
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1CA8074
|
||||
value_type: uint32
|
||||
value: 0xD503201F
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1CA8094
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD503201F
|
||||
- 0xD503201F
|
||||
# Write default DR timings
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x56FF9C8
|
||||
value_type: float
|
||||
value: [32.5, 30.5, 31.5, 28.5, 33.5]
|
||||
ALL_FPS:
|
||||
# sys_MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x56FD1C8]
|
||||
value_type: int32
|
||||
value: FPS_LOCK_TARGET
|
||||
# Renderer thread delay
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x5704028]
|
||||
value_type: float
|
||||
value: 0.01
|
||||
# DR timings
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x56FF9C8]
|
||||
value_type: float
|
||||
value: ["FRAMETIME_TARGET * 0.975", "FRAMETIME_TARGET * 0.915", "FRAMETIME_TARGET * 0.945", "FRAMETIME_TARGET * 0.855", "FRAMETIME_TARGET * 1.005"]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Gal*Gun 2 1.0.4
|
||||
# BID: 9CDFB0CD24CAE030
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x4346990, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x44E6DA8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# Disable custom FPS Lock
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x44E6030, 0x764]
|
||||
value_type: float
|
||||
value: 0
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,30 @@
|
||||
# S.T.A.L.K.E.R.: Clear Sky 1.0.3
|
||||
# BID: C7E4E6F4167C8E3A
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# psLoadedFrameLimitFps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x17D4774]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
# psCurrentFrameLimitFps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x17F18E8]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
# psCurrentFrameLimitMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1A5F36C]
|
||||
value_type: float
|
||||
value: "1000 / FPS_LOCK_TARGET"
|
||||
# ResolutionInfo::sDynresGPUBudgetMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x17D4750]
|
||||
value_type: float
|
||||
value: "FRAMETIME_TARGET - (1/30)"
|
@ -4,25 +4,40 @@
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Remove FPS Lock
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x4835A4
|
||||
value_type: uint32
|
||||
value: 0xD503201F
|
||||
ALL_FPS:
|
||||
# Switch game to 60 FPS mode
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0xF0043C]
|
||||
value_type: uint32
|
||||
value: 1
|
||||
# FPS Target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xED96A8, 0x30]
|
||||
value_type: uint64
|
||||
value: "(FRAMETIME_TARGET / 2) * 19200"
|
||||
value_type: uint32
|
||||
value: "19200000 / FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xED96A8, 0x28]
|
||||
value_type: uint32
|
||||
value: "1920000 / FPS_TARGET"
|
||||
# FPS 2D Game Speed Target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xEFFC60, 0x30]
|
||||
value_type: float
|
||||
value: "0.5 / FPS_TARGET"
|
||||
value: "1 / FPS_TARGET"
|
||||
# FPS 3D Game Speed Target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xEFFC60, 0x50]
|
||||
value_type: float
|
||||
value: "0.5 / FPS_TARGET"
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
value: "1 / FPS_TARGET"
|
||||
|
@ -0,0 +1,27 @@
|
||||
# Expeditions: A Mudrunner Game 1.16.0.0
|
||||
# BID: 3DCE80782561A0CA
|
||||
# REF: 01 04 0C 5E 00 10 2E 1E
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect DR frametime target to MAIN+0x36B4F00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x171E454
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD000FCAC # adrp x12, #0x36B4000
|
||||
- 0xBD4F0182 # ldr s2, [x12, #0xf00]
|
||||
# default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x36B4F00
|
||||
value_type: float
|
||||
value: 33.3333333333
|
||||
ALL_FPS:
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x36B4F00]
|
||||
value_type: float
|
||||
value: FRAMETIME_TARGET
|
@ -0,0 +1,27 @@
|
||||
# Expeditions: A Mudrunner Game 1.17.0.0
|
||||
# BID: 471546458FD9E43D
|
||||
# REF: 01 04 0C 5E 00 10 2E 1E
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect DR frametime target to MAIN+0x36D4F00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x17358B4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF000FCED # adrp x13, #0x36D4000
|
||||
- 0xBD4F01A2 # ldr s2, [x13, #0xf00]
|
||||
# default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x36D4F00
|
||||
value_type: float
|
||||
value: 33.3333333333
|
||||
ALL_FPS:
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x36D4F00]
|
||||
value_type: float
|
||||
value: FRAMETIME_TARGET
|
@ -9,4 +9,4 @@ ALL_FPS:
|
||||
type: write
|
||||
address: [MAIN, 0x481B2F8, 0xB8, 0]
|
||||
value_type: int32
|
||||
value: 1
|
||||
value: -1
|
||||
|
@ -9,7 +9,8 @@ ALL_FPS:
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x24924D8, 0x504C]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
|
||||
|
@ -0,0 +1,21 @@
|
||||
# The Bridge Curse 2: The Extrication 1.0.1
|
||||
# BID: B7F344920B6D140E
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x5DB8968, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x65B48B8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Rune Factory: Guardians of Azuma 1.0.4
|
||||
# BID: 5F96AEDEA20AE78F
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8F48D40, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8F82470, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x7F616E8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Rune Factory: Guardians of Azuma 1.0.3
|
||||
# BID: 7F731AAE7DDCAF66
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8F48D40, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8F82470, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x7F616E8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Rune Factory: Guardians of Azuma 1.0.5
|
||||
# BID: E43BBBBFACE60867
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8F4AD40, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8F84470, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x7F636E8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# DRAGON QUEST III HD-2D Remake 1.1.0
|
||||
# BID: 4F41309B39EEBE5E
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x5AB93E8, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x62A5E28, 0]
|
||||
value_type: float
|
||||
value: [FRAMETIME_TARGET, FRAMETIME_TARGET]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x62D3B68, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,12 @@
|
||||
# Tamagotchi Plaza 1.0.2
|
||||
# BID: 9ACE779510EC93C9
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# UnityEngine.Rendering.OnDemandRendering_TypeInfo
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x683BB20, 0xB8, 0]
|
||||
value_type: int32
|
||||
value: -1
|
@ -0,0 +1,356 @@
|
||||
# Xenoblade Chronicles X: Definitive Edition 1.0.2
|
||||
# BID: 2A720C7CE5C84905
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Dynamic speed mod for stuff like UI, lipsync, grass and rain
|
||||
## Redirect nvnQueuePresentTexture call to code cave at MAIN+0x1735050
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x95EED8
|
||||
value_type: uint32
|
||||
value: 0x1437585E
|
||||
## Code Cave (save floats for speed factor to MAIN+0x47BE268, frametime as FPS in MAIN+0x47BE26C, frametime in s in MAIN+0x47BE270)
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1735050
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD63F0100
|
||||
- 0x97FFF52B
|
||||
- 0xB0018448
|
||||
- 0xF9413107
|
||||
- 0xF9013100
|
||||
- 0xB5000047
|
||||
- 0x17C8A79D
|
||||
- 0xCB070000
|
||||
- 0x97FFF528
|
||||
- 0xB0018448
|
||||
- 0xB9430101
|
||||
- 0xEB00003F
|
||||
- 0x5400004B
|
||||
- 0xAA0103E0
|
||||
- 0xD2881541
|
||||
- 0xF2A07F21
|
||||
- 0xEB00003F
|
||||
- 0x5400004C
|
||||
- 0xAA0103E0
|
||||
- 0x9E630000
|
||||
- 0xD00005A0
|
||||
- 0xFD46AC01
|
||||
- 0x1E611800
|
||||
- 0xD2807D00
|
||||
- 0x9E630001
|
||||
- 0x1E601821
|
||||
- 0xB0018440
|
||||
- 0x1E624021
|
||||
- 0xBD026C01
|
||||
- 0x1E27D002
|
||||
- 0x1E211842
|
||||
- 0xBD026802
|
||||
- 0xD2807D01
|
||||
- 0x9E630021
|
||||
- 0x1E611801
|
||||
- 0x1E624021
|
||||
- 0xBD027001
|
||||
- 0x17C8A77E
|
||||
## Default values for code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x47BE268
|
||||
value_type: float
|
||||
value: [1.0, 30.0, 0.033333333333]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x47BE300
|
||||
value_type: uint32
|
||||
value: 33333333
|
||||
## Function 1 to speed factor // Usage unknown
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x286968
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x900229D5
|
||||
- 0xF9470D00
|
||||
- 0xBD426AAA
|
||||
## Function 3 to speed factor // Usage unknown
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xA16F00
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x9001ED40
|
||||
- 0xBD426808
|
||||
## Function 4 to FPS // UI Speed
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xA1F060
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF001ECE0
|
||||
- 0x1E270100
|
||||
- 0xBD426C00
|
||||
## Function 5 to FPS // Usage unknown
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2672DC
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF0022A20
|
||||
- 0x1E270100
|
||||
- 0x7940D268
|
||||
- 0xBD426C05
|
||||
## Function 6 to FPS
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x26DB70
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0022A80
|
||||
- 0xBD426C00
|
||||
- 0x1E390000
|
||||
- 0x528000C9
|
||||
- 0x1AC90808
|
||||
## Function 7 to Frametime in s // Gameplay + cutscene speed
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1E2924
|
||||
value_type: uint32
|
||||
value: 0x90022EE9
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1E2938
|
||||
value_type: uint32
|
||||
value: 0xBD427120
|
||||
# Adjust various elements related to fighting
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1E8F48
|
||||
value_type: uint32
|
||||
value: 0x1455308B
|
||||
## Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1735174
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0018449
|
||||
- 0xBD426920
|
||||
- 0x17AACF74
|
||||
## Fix gun speed
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x30FACC
|
||||
value_type: uint32
|
||||
value: 0xD503201F
|
||||
# Redirect DR Target to MAIN+0x47BEF00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x13A90B4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB001A0A8
|
||||
- 0xBD4F0100
|
||||
## Default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x47BEF00
|
||||
value_type: float
|
||||
value: 0.01666666666
|
||||
# Adjust camera speed rotation dynamically
|
||||
## Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1735108
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0018448
|
||||
- 0xBD426908
|
||||
- 0x1E200900
|
||||
- 0x1E202008
|
||||
- 0x540000AA
|
||||
- 0x1E214000
|
||||
- 0x1E21C000
|
||||
- 0x1E214000
|
||||
- 0xD65F03C0
|
||||
- 0x1E21C000
|
||||
- 0xD65F03C0
|
||||
## Connect function 1
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1E17A0
|
||||
value_type: uint32
|
||||
value: 0x94554E5A
|
||||
## Connect function 2
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1E17B0
|
||||
value_type: uint32
|
||||
value: 0xAD7D03A1
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1E17BC
|
||||
value_type: uint32
|
||||
value: 0x94554E53
|
||||
# Force 1s sleep to synchronize audio if cutscene detected
|
||||
## Use function responsible for writing type 4 of cutscene
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2FB0D8
|
||||
value_type: uint32
|
||||
value: 0x1450E820
|
||||
### Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1735158
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x52800094
|
||||
- 0xD00045C0
|
||||
- 0xB90AF414
|
||||
- 0xD2994000
|
||||
- 0xF2A77340
|
||||
- 0x97FFF3D9
|
||||
- 0x17AF17DB
|
||||
# Adjust Field Action gauge bar speed
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xE5E00
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB00236C0
|
||||
- 0xF000E369
|
||||
- 0xBD426808
|
||||
## Fix for FN Site
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xE5858
|
||||
value_type: uint32
|
||||
value: 0x14593E24
|
||||
### Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x17350E8
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xBD40D260
|
||||
- 0xB0018440
|
||||
- 0xBD426801
|
||||
- 0x1E210800
|
||||
- 0x17A6C1D9
|
||||
# Fix long jump when not running
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x23EF70
|
||||
value_type: uint32
|
||||
value: 0x1453D863
|
||||
## Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x17350FC
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x1E27D00B
|
||||
- 0x1E2B296B
|
||||
- 0x17AC279C
|
||||
# Adjust QTE Speed
|
||||
## Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1735134
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0018454
|
||||
- 0xBD426A81
|
||||
- 0x1400001B
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x17351A8
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xBD412262
|
||||
- 0x1E210841
|
||||
- 0x17BA4435
|
||||
## Connect function
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x5C6280
|
||||
value_type: uint32
|
||||
value: 0x1445BBAD
|
||||
# Adjust Overdrive counter, Follow Ball speed
|
||||
## Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1735180
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0018440
|
||||
- 0xBD427000
|
||||
- 0xD65F03C0
|
||||
## Connect function
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x67354
|
||||
value_type: uint32
|
||||
value: 0x945B36AB
|
||||
# Fix fog speed
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x296AE0
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x90022948
|
||||
- 0xBD426902
|
||||
- 0x945279B3
|
||||
## Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x17351B4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x1E21C042
|
||||
- 0x1F020020
|
||||
- 0xD65F03C0
|
||||
ALL_FPS:
|
||||
# FPS Target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x47BE300]
|
||||
value_type: uint32
|
||||
value: "FRAMETIME_TARGET * 1000000"
|
||||
# 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]
|
||||
# DR Target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x47BEF00]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
||||
# 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: [MAIN, 0x47BEF00]
|
||||
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
|
||||
address: [MAIN]
|
||||
value_type: refresh_rate
|
||||
value: 30
|
@ -75,15 +75,6 @@ MASTER_WRITE:
|
||||
- 0xF0022A35
|
||||
- 0xF9470D00
|
||||
- 0xBD426AAA
|
||||
## Function 2 to speed factor // Weather effects (rain, fog)
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2892AC
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x90022A20
|
||||
- 0xF000D828
|
||||
- 0xBD426801
|
||||
## Function 3 to speed factor // Usage unknown
|
||||
-
|
||||
type: bytes
|
||||
@ -207,57 +198,22 @@ MASTER_WRITE:
|
||||
## Use function responsible for writing type of cutscene to write its ID if it's 8 or 16 (or 0 for any other) to MAIN+0x47CDFFF
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2CFEB4
|
||||
main_offset: 0x2FAC38
|
||||
value_type: uint32
|
||||
value: 0x1451D3F7
|
||||
value: 0x14512898
|
||||
### Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1744E90
|
||||
main_offset: 0x1744E98
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB9002279
|
||||
- 0x121D0720
|
||||
- 0xB0018448
|
||||
- 0x340000A0
|
||||
- 0x393FFD00
|
||||
- 0x52800094
|
||||
- 0xD00045C0
|
||||
- 0xB90AF414
|
||||
- 0xD2994000
|
||||
- 0xF2A77340
|
||||
- 0x97FFF3D9
|
||||
- 0x17AE2C02
|
||||
## "startEvent" to write uint8 1 to MAIN+0x47CDFFF
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3ECFD8
|
||||
value_type: uint32
|
||||
value: 0x144D5FBF
|
||||
### Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1744ED4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x910003FD
|
||||
- 0xB0018448
|
||||
- 0x52800020
|
||||
- 0x393FFD00
|
||||
- 0x17B2A03E
|
||||
## "endEvent" to write uint8 0 to MAIN+0x47CDFFF
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3ED178
|
||||
value_type: uint32
|
||||
value: 0x144D5F42
|
||||
### Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1744E80
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x910003FD
|
||||
- 0xB0018448
|
||||
- 0x393FFD1F
|
||||
- 0x17B2A0BC
|
||||
- 0x17AED763
|
||||
# Adjust Field Action gauge bar speed
|
||||
-
|
||||
type: bytes
|
||||
@ -308,7 +264,15 @@ MASTER_WRITE:
|
||||
value:
|
||||
- 0xB0018454
|
||||
- 0xBD426A81
|
||||
- 0x17BA027E
|
||||
- 0x1400001B
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1744EE8
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xBD412262
|
||||
- 0x1E210841
|
||||
- 0x17BA0261
|
||||
## Connect function
|
||||
-
|
||||
type: bytes
|
||||
@ -331,6 +295,24 @@ MASTER_WRITE:
|
||||
main_offset: 0x67354
|
||||
value_type: uint32
|
||||
value: 0x945B76DB
|
||||
# Fix fog speed
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x296640
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF00229A8
|
||||
- 0xBD426902
|
||||
- 0x9452BA2B
|
||||
## Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1744EF4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x1E21C042
|
||||
- 0x1F020020
|
||||
- 0xD65F03C0
|
||||
ALL_FPS:
|
||||
# FPS Target
|
||||
-
|
||||
@ -355,20 +337,20 @@ ALL_FPS:
|
||||
## Adjusts DR target
|
||||
-
|
||||
type: compare
|
||||
compare_address: [MAIN, 0x47CDFFF]
|
||||
compare_value_type: uint8
|
||||
compare_type: "!="
|
||||
compare_value: 0
|
||||
compare_address: [MAIN, 0x1FFEAF4]
|
||||
compare_value_type: uint32
|
||||
compare_type: ">"
|
||||
compare_value: 1
|
||||
address: [MAIN, 0x47CDF00]
|
||||
value_type: float
|
||||
value: 0.03333333333
|
||||
## Force OS to run at 60 Hz with interval 2
|
||||
-
|
||||
type: compare
|
||||
compare_address: [MAIN, 0x47CDFFF]
|
||||
compare_value_type: uint8
|
||||
compare_type: "!="
|
||||
compare_value: 0
|
||||
compare_address: [MAIN, 0x1FFEAF4]
|
||||
compare_value_type: uint32
|
||||
compare_type: ">"
|
||||
compare_value: 1
|
||||
address: [MAIN]
|
||||
value_type: refresh_rate
|
||||
value: 30
|
@ -0,0 +1,27 @@
|
||||
# Romancing SaGa 2: Revenge of the Seven 1.1.0
|
||||
# BID: D7A32C718E9D6363
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x6D25AE0, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7C01C70, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7C5A4C0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Star Overdrive 1.0.10
|
||||
# BID: 6D05923E7005E182
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x674C6E8, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x77322F0, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x776C850, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Star Overdrive 1.0.6/1.0.7/1.0.8
|
||||
# BID: 728D92CB9E54CE7A
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x674C6E8, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x77322F0, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x776C850, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Star Overdrive 1.0.5
|
||||
# BID: C0D9B410A09A4ADD
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x674B6E8, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x77312F0, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x776B850, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,30 @@
|
||||
# S.T.A.L.K.E.R.: Shadow Of Chornobyl 1.0.3
|
||||
# BID: F7D1E815E44D0A56
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# psLoadedFrameLimitFps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x165F4EC]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
# psCurrentFrameLimitFps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x167B9F0]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
# psCurrentFrameLimitMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x18E7ACC]
|
||||
value_type: float
|
||||
value: "1000 / FPS_LOCK_TARGET"
|
||||
# ResolutionInfo::sDynresGPUBudgetMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x165F2F0]
|
||||
value_type: float
|
||||
value: "FRAMETIME_TARGET - (1/30)"
|
@ -0,0 +1,57 @@
|
||||
# Resident Evil 1.0.0
|
||||
# BID: 6BEC9B23B09DF46C
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Detect prerendered cutscenes
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xB1A810
|
||||
value_type: uint32
|
||||
value: 0x14005CF6
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xB31BE8
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF81E0FF3
|
||||
- 0x52800021
|
||||
- 0xD000CDB3
|
||||
- 0xB90FF261
|
||||
- 0xAA0003F3
|
||||
- 0x52994000
|
||||
- 0x72A77340
|
||||
- 0xD4000161
|
||||
- 0xAA1303E0
|
||||
- 0x17FFA302
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xB1A9BC
|
||||
value_type: uint32
|
||||
value: 0x14005C95
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xB31C10
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x2A1F03E1
|
||||
- 0xD000CDA2
|
||||
- 0xB90FF041
|
||||
- 0x17FFCCA9
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1EC6CF0, 0x4C]
|
||||
value_type: float
|
||||
value: "FPS_LOCK_TARGET"
|
||||
-
|
||||
type: compare
|
||||
compare_type: "=="
|
||||
compare_value_type: uint32
|
||||
compare_value: 1
|
||||
compare_address: [MAIN, 0x24E7FF0]
|
||||
address: [MAIN]
|
||||
value_type: refresh_rate
|
||||
value: 30
|
@ -0,0 +1,38 @@
|
||||
# REYNATIS (US/EU) 1.0.10
|
||||
# BID: 5F765D2CC4CDEF1C
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect reading DR timing in DynamicResolution::LowerResSW() to MAIN + 0x7C22F00
|
||||
# REF: 01 f0 67 1e
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x38E7ECC
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF00219D4 # adrp x20, #0x7c22000
|
||||
- 0xFD478281 # ldr d1, [x20, #0xf00]
|
||||
- 0x1E612010 # fcmpe d0, d1
|
||||
- 0x2D482269 # ldp s9, s8, [x19, #0x40]
|
||||
- 0x540002CD # b.le #0x38e7f34
|
||||
- 0xBD40626A # ldr s10, [x19, #0x60]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x38E7F34
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xFD478681 # ldr d1, [x20, #0xf08]
|
||||
# Default handheld value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x7C22F00
|
||||
value_type: double
|
||||
value: [31, 29]
|
||||
ALL_FPS:
|
||||
# Dynamic Resolution Timing
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7C22F00]
|
||||
value_type: double
|
||||
value: ["0.93 * FRAMETIME_TARGET", "(0.93 * FRAMETIME_TARGET) - 2"]
|
@ -0,0 +1,35 @@
|
||||
# DRAGON BALL Z: KARAKOT + A NEW POWER AWAKENS SET 1.60
|
||||
# BID: BC99D4D0A9474360
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Disable bUseFixedFrameRate in cutscenes to unlock framerate
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x996A558, 0x810]
|
||||
value_type: uint32
|
||||
# Default is 0x47 in cutscenes, bUseFixedFrameRate |= 0x40
|
||||
# By writing 7 we are making sure that other flags are maintained:
|
||||
# bAllowMultiThreadedAnimationUpdate |= 4
|
||||
# bOptimizeAnimBlueprintMemberVariableAccess |= 2
|
||||
# bCanBlueprintsTickByDefault |= 1
|
||||
value: 7
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x9935498, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x996AE08, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x8DD7418, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
@ -0,0 +1,36 @@
|
||||
# Atelier Yumia: The Alchemist of Memories & the Envisioned Land 1.1.0
|
||||
# BID: 153DB27728D41305
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect DR to MAIN + 0x2F11FF0
|
||||
# REF: A9 24 89 52 49 A2 A7 72
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x10B09B4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB000F309 # adrp x9, 0x2f11000
|
||||
- 0xBD4FF121 # ldr s1, [x9, 0xff0]
|
||||
- 0xD503201F # nop
|
||||
## Default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2F11FF0
|
||||
value_type: float
|
||||
value: 0.035714
|
||||
ALL_FPS:
|
||||
# Disable FPS Lock
|
||||
# REF: 88 46 40 F9 03 11 40 F9, first ADRP+LDR above it
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x2ED8D10, 0xE0, 0x284]
|
||||
value_type: uint8
|
||||
value: 0
|
||||
# DR Target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x2F11FF0]
|
||||
value_type: float
|
||||
value: "1.01 / FPS_TARGET"
|
@ -0,0 +1,36 @@
|
||||
# Atelier Yumia: The Alchemist of Memories & the Envisioned Land 1.3.0
|
||||
# BID: 1CEA83A1E6684665
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect DR to MAIN + 0x2F5CFF0
|
||||
# REF: A9 24 89 52 49 A2 A7 72, second REF
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x10AAEE4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD000F589 # adrp x9, 0x2F5C000
|
||||
- 0xBD4FF121 # ldr s1, [x9, 0xFF0]
|
||||
- 0xD503201F # nop
|
||||
## Default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2F5CFF0
|
||||
value_type: float
|
||||
value: 0.035714
|
||||
ALL_FPS:
|
||||
# Disable FPS Lock
|
||||
# REF: 88 46 40 F9 03 11 40 F9, first ADRP+LDR above it
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x2F23C00, 0xE0, 0x294]
|
||||
value_type: uint8
|
||||
value: 0
|
||||
# DR Target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x2F5CFF0]
|
||||
value_type: float
|
||||
value: "1.01 / FPS_TARGET"
|
@ -0,0 +1,36 @@
|
||||
# Atelier Yumia: The Alchemist of Memories & the Envisioned Land 1.2.0
|
||||
# BID: 29F67D61B0AD1500
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect DR to MAIN + 0x2F4CFF0
|
||||
# REF: A9 24 89 52 49 A2 A7 72, second REF
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x10B2424
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD000F4C9 # adrp x9, 0x2F4C000
|
||||
- 0xBD4FF121 # ldr s1, [x9, 0xFF0]
|
||||
- 0xD503201F # nop
|
||||
## Default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2F4CFF0
|
||||
value_type: float
|
||||
value: 0.035714
|
||||
ALL_FPS:
|
||||
# Disable FPS Lock
|
||||
# REF: 88 46 40 F9 03 11 40 F9, first ADRP+LDR above it
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x2F13D80, 0xE0, 0x284]
|
||||
value_type: uint8
|
||||
value: 0
|
||||
# DR Target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x2F4CFF0]
|
||||
value_type: float
|
||||
value: "1.01 / FPS_TARGET"
|
@ -0,0 +1,36 @@
|
||||
# Atelier Yumia: The Alchemist of Memories & the Envisioned Land 1.2.1
|
||||
# BID: 3B2CB1C8865E7B1E
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect DR to MAIN + 0x2F4CFF0
|
||||
# REF: A9 24 89 52 49 A2 A7 72, second REF
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x10B2424
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD000F4C9 # adrp x9, 0x2F4C000
|
||||
- 0xBD4FF121 # ldr s1, [x9, 0xFF0]
|
||||
- 0xD503201F # nop
|
||||
## Default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2F4CFF0
|
||||
value_type: float
|
||||
value: 0.035714
|
||||
ALL_FPS:
|
||||
# Disable FPS Lock
|
||||
# REF: 88 46 40 F9 03 11 40 F9, first ADRP+LDR above it
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x2F13D80, 0xE0, 0x284]
|
||||
value_type: uint8
|
||||
value: 0
|
||||
# DR Target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x2F4CFF0]
|
||||
value_type: float
|
||||
value: "1.01 / FPS_TARGET"
|
@ -0,0 +1,13 @@
|
||||
# Atelier Yumia: The Alchemist of Memories & the Envisioned Land 1.0.2
|
||||
# BID: 5E43788065113530
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# Disable FPS Lock
|
||||
# REF: 88 46 40 F9 03 11 40 F9, first ADRP+LDR above it
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x2E8DCF0, 0xE0, 0x284]
|
||||
value_type: uint8
|
||||
value: 0
|
@ -0,0 +1,12 @@
|
||||
# EA SPORTS FC 25 1.7c.d76a
|
||||
# BID: 8AB0BBEBB5F628E6
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCEEDA68, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -0,0 +1,12 @@
|
||||
# EA SPORTS FC 25 1.7c.7841
|
||||
# BID: DF4B53A8F7EA6FB6
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCEECA68, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -0,0 +1,12 @@
|
||||
# EA SPORTS FC 25 1.7d.c638
|
||||
# BID: E60B4F857609BD49
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCEEFA88, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -0,0 +1,12 @@
|
||||
# EA SPORTS FC 25 1.79.b056
|
||||
# BID: EB8D70AB59D8A4C2
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCE71A68, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -0,0 +1,12 @@
|
||||
# EA SPORTS FC 25 1.7b.3ca3
|
||||
# BID: EE92CAF016873D08
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCE91A68, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -0,0 +1,12 @@
|
||||
# EA SPORTS FC 25 1.78.f2e9
|
||||
# BID: F51888C0188BFA18
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCE6FA68, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -0,0 +1,12 @@
|
||||
# EA SPORTS FC 25 1.7a.a54b
|
||||
# BID: F57C74294E14BDCC
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCE78A68, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -0,0 +1,12 @@
|
||||
# EA SPORTS FC 25 1.7a.6c14
|
||||
# BID: FF365FA7E744CDDA
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCE76A68, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -0,0 +1,27 @@
|
||||
# Bravely Default II Asia 1.0.0
|
||||
# BID: B5B9C7BB8D9716F6
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x72AEE90, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x73050F0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x69AA5C0, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -9,7 +9,8 @@ ALL_FPS:
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x2495500, 0x304C]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
|
||||
|
@ -0,0 +1,27 @@
|
||||
# Funko Fusion 3.1.1
|
||||
# BID: F5E599C889DF733A
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x7541A68, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x851D078, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x854AF60, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,75 @@
|
||||
# WARRIORS: Abyss 1.2.1
|
||||
# BID: 293D73083149473E
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# REF: 09 49 A8 52 21 01 27 1E 00 20 21 1E
|
||||
# Use FPS Target instead of vsync value for Dynamic Resolution max delta
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6BD270
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0004521 # ADRP X1, 0xF62000
|
||||
- 0xBD44D821 # LDR S1, [X1, 0x4D8]
|
||||
# Redirect DR Targets to MAIN+0x13F3F00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6BD314
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD00069A9 # ADRP X9, 0x13F3000
|
||||
- 0xBD4F0121 # LDR S1, [X9, 0xF00]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6BD324
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD00069A9 # ADRP X9, 0x13F3000
|
||||
- 0xBD4F0521 # LDR S1, [X9, 0xF04]
|
||||
# Default values
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x13F3F00
|
||||
value_type: float
|
||||
value: [50, 40]
|
||||
ALL_FPS:
|
||||
# REF: 00 00 F0 42 78 00 00 00 00 00 F0 42 04 00 00 00
|
||||
# FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xF624E4]
|
||||
value_type: uint32
|
||||
value: "120 / FPS_LOCK_TARGET"
|
||||
# Prevent from setting it as 0, otherwise game crashes
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_address: [MAIN, 0xF624E4]
|
||||
compare_type: "=="
|
||||
compare_value_type: uint32
|
||||
compare_value: 0
|
||||
address: [MAIN, 0xF624E4]
|
||||
value_type: uint32
|
||||
value: 1
|
||||
# Others
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xF624D8]
|
||||
value_type: float
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xF624DC]
|
||||
value_type: uint32
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xF624E0]
|
||||
value_type: float
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x13F3F00]
|
||||
value_type: float
|
||||
value: ["1.5 * FRAMETIME_TARGET", "1.2 * FRAMETIME_TARGET"]
|
@ -0,0 +1,75 @@
|
||||
# WARRIORS: Abyss 1.4.0
|
||||
# BID: 36B692C0FA9F6F46
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# REF: 09 49 A8 52 21 01 27 1E 00 20 21 1E
|
||||
# Use FPS Target instead of vsync value for Dynamic Resolution max delta
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6E3AF0
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD00049E1 # ADRP X1, 0x1021000
|
||||
- 0xBD4E1021 # LDR S1, [X1, 0xE10]
|
||||
# Redirect DR Targets to MAIN+0x1477F00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6E3B94
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x90006EE9 # ADRP X9, 0x14BF000
|
||||
- 0xBD4F0121 # LDR S1, [X9, 0xF00]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6E3BA4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x90006EE9 # ADRP X9, 0x14BF000
|
||||
- 0xBD4F0521 # LDR S1, [X9, 0xF04]
|
||||
# Default values
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x14BFF00
|
||||
value_type: float
|
||||
value: [50, 40]
|
||||
ALL_FPS:
|
||||
# REF: 00 00 F0 42 78 00 00 00 00 00 F0 42 04 00 00 00
|
||||
# FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1021E1C]
|
||||
value_type: uint32
|
||||
value: "120 / FPS_LOCK_TARGET"
|
||||
# Prevent from setting it as 0, otherwise game crashes
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_address: [MAIN, 0x1021E1C]
|
||||
compare_type: "=="
|
||||
compare_value_type: uint32
|
||||
compare_value: 0
|
||||
address: [MAIN, 0x1021E1C]
|
||||
value_type: uint32
|
||||
value: 1
|
||||
# Others
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1021E10]
|
||||
value_type: float
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1021E14]
|
||||
value_type: uint32
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1021E18]
|
||||
value_type: float
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x14BFF00]
|
||||
value_type: float
|
||||
value: ["1.5 * FRAMETIME_TARGET", "1.2 * FRAMETIME_TARGET"]
|
@ -0,0 +1,75 @@
|
||||
# WARRIORS: Abyss 1.3.0
|
||||
# BID: 71C5F3CB333F1542
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# REF: 09 49 A8 52 21 01 27 1E 00 20 21 1E
|
||||
# Use FPS Target instead of vsync value for Dynamic Resolution max delta
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6D24D0
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0004841 # ADRP X1, 0xFDB000
|
||||
- 0xBD4E0021 # LDR S1, [X1, 0xE00]
|
||||
# Redirect DR Targets to MAIN+0x1477F00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6D2574
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0006D29 # ADRP X9, 0x1477000
|
||||
- 0xBD4F0121 # LDR S1, [X9, 0xF00]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6D2584
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0006D29 # ADRP X9, 0x1477000
|
||||
- 0xBD4F0521 # LDR S1, [X9, 0xF04]
|
||||
# Default values
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1477F00
|
||||
value_type: float
|
||||
value: [50, 40]
|
||||
ALL_FPS:
|
||||
# REF: 00 00 F0 42 78 00 00 00 00 00 F0 42 04 00 00 00
|
||||
# FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xFDBE0C]
|
||||
value_type: uint32
|
||||
value: "120 / FPS_LOCK_TARGET"
|
||||
# Prevent from setting it as 0, otherwise game crashes
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_address: [MAIN, 0xFDBE0C]
|
||||
compare_type: "=="
|
||||
compare_value_type: uint32
|
||||
compare_value: 0
|
||||
address: [MAIN, 0xFDBE0C]
|
||||
value_type: uint32
|
||||
value: 1
|
||||
# Others
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xFDBE00]
|
||||
value_type: float
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xFDBE04]
|
||||
value_type: uint32
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xFDBE08]
|
||||
value_type: float
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1477F00]
|
||||
value_type: float
|
||||
value: ["1.5 * FRAMETIME_TARGET", "1.2 * FRAMETIME_TARGET"]
|
@ -0,0 +1,24 @@
|
||||
# 女神異聞錄5 亂戰:魅影攻手 1.0.1
|
||||
# BID: 496A2F5A9CE4FBEB
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1D11158]
|
||||
value_type: int32
|
||||
value: [FPS_LOCK_TARGET, VSYNC_TARGET]
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1D24BE8]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x2A848D0]
|
||||
value_type: int32
|
||||
value: "VSYNC_TARGET - 1"
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,21 @@
|
||||
# Cassette Beasts 1.8.2
|
||||
# BID: 768428355C994280
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# physics/common/physics_fps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x30AAAE0, 0x24]
|
||||
value_type: int32
|
||||
value: FPS_TARGET
|
||||
# debug/settings/fps/force_fps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x30AAAE0, 0x30]
|
||||
value_type: int32
|
||||
value: FPS_LOCK_TARGET
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,21 @@
|
||||
# Cassette Beasts 1.8.0
|
||||
# BID: B5DCAAA828DA5034
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# physics/common/physics_fps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x30AAAE0, 0x24]
|
||||
value_type: int32
|
||||
value: FPS_TARGET
|
||||
# debug/settings/fps/force_fps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x30AAAE0, 0x30]
|
||||
value_type: int32
|
||||
value: FPS_LOCK_TARGET
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,24 @@
|
||||
# Sword of the Necromancer: Resurrection 1.0.5
|
||||
# BID: FFF55266A618D06A
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x758CE00, 0]
|
||||
value_type: float
|
||||
value: ["0.9 * FRAMETIME_TARGET", "0.9 * FRAMETIME_TARGET"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x75C1298, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x6DE8CB8, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
@ -0,0 +1,27 @@
|
||||
# The Plucky Squire 1.0.8
|
||||
# BID: 892E6C4FE0D850B5
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x6C06668, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x6C34348, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x6436CE8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,21 @@
|
||||
# The Bridge Curse - Road to Salvation 1.6.0.1
|
||||
# BID: F54FC539CAF24C64
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x6560E98, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x6D5D3B8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,21 @@
|
||||
# Pumpkin Jack 1.4.4
|
||||
# BID: 0F73F1D52820F90B
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x60F3B68, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x592B218, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# MotoGP 25 1.0.3
|
||||
# BID: 03DBE839CAA0632B
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xA058518, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xA093DD0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x9074C00, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# MotoGP 25 1.0.1
|
||||
# BID: 72D353380DD03B52
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xA033518, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xA06EDD0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x904FC00, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# MotoGP 25 1.0.2
|
||||
# BID: BD9B46CAE607D7E8
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xA043518, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xA07EDD0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x905FC00, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -16,6 +16,12 @@ ALL_FPS:
|
||||
address: [MAIN, 0x73050F0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x69AA5C0, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
|
@ -0,0 +1,21 @@
|
||||
# Grounded 1.13
|
||||
# BID: B46B22D9AC7E567B
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8E50418, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8E76560, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,21 @@
|
||||
# Grounded 1.12
|
||||
# BID: F50C38B64DE532F7
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8E50418, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8E76560, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Labirynth Of The Demon King 1.81
|
||||
# BID: DE26B43C3D21B3A3
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# Disable FixedFrameRate
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x59ED248, 0x7A4]
|
||||
value_type: uint32
|
||||
value: 7
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x59EDB68, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x57EEDA8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,57 @@
|
||||
# Amber Isle 1.0.3
|
||||
# BID: E8BF195297B63BA2
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect all hardcoded doubles in DynamicResolutionHandler::Update to MAIN+0x909EF00
|
||||
## REF: c8 aa 8a f2 28 07 e8 f2
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x21FE1E4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x90037508 # adrp x8, #0x909E000
|
||||
- 0xFD478100 # ldr d0, [x8, #0xf00]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x21FE3E0
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x90037508 # adrp x8, #0x909E000
|
||||
- 0xFD478101 # ldr d1, [x8, #0xf00]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x21FE43C
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x90037508 # adrp x8, #0x909E000
|
||||
- 0xFD478101 # ldr d1, [x8, #0xf00]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x21FE7D4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x90037508 # adrp x8, #0x909E000
|
||||
- 0xFD478100 # ldr d0, [x8, #0xf00]
|
||||
## REF: c8 aa 8a f2 28 07 f8 f2
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x21fE550
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x90037508 # adrp x8, #0x909E000
|
||||
- 0xFD478100 # ldr d0, [x8, #0xf00]
|
||||
- 0x1E614000 # fneg d0, d0
|
||||
# default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x909EF00
|
||||
value_type: double
|
||||
value: 25.333333333333336
|
||||
ALL_FPS:
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x909EF00]
|
||||
value_type: double
|
||||
value: "FRAMETIME_TARGET * 0.76"
|
@ -1,4 +1,4 @@
|
||||
# Xenoblade Chronicles 3 2.2.0
|
||||
# Xenoblade Chronicles 3 2.2.0/2.2.1
|
||||
# BID: 82D187FE9EF9BE92
|
||||
|
||||
unsafeCheck: false
|
||||
|
@ -0,0 +1,21 @@
|
||||
# FANTASY LIFE i: The Girl Who Steals Time 1.4.0
|
||||
# BID: 061A7341077C0974
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xAD71938, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x9D51728, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,21 @@
|
||||
# FANTASY LIFE i: The Girl Who Steals Time 1.3.3
|
||||
# BID: 546820C12D88850D
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xAD09938, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x9CE9728, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# FANTASY LIFE i: The Girl Who Steals Time 1.2.1
|
||||
# BID: 66BC954F5323014C
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# Disable FixedFrameRate
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0xACC63E0, 0xAA4]
|
||||
value_type: uint32
|
||||
value: 7
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xACC7938, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x9CA7728, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# FANTASY LIFE i: The Girl Who Steals Time 1.3.0
|
||||
# BID: 9DBA6AA32721CAB9
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# Disable FixedFrameRate
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0xACF23E0, 0xAA4]
|
||||
value_type: uint32
|
||||
value: 7
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xACF3938, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x9CD3728, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# FANTASY LIFE i: The Girl Who Steals Time 1.1.0
|
||||
# BID: A697413E1DA7851A
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# Disable FixedFrameRate
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0xAB873E0, 0xAA4]
|
||||
value_type: uint32
|
||||
value: 7
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xAB88938, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x9B68728, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,12 @@
|
||||
# NINJA GAIDEN: Ragebound 1.0.3
|
||||
# BID: C7BD9BFC5F202073
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# UnityEngine.Time::fixedDeltaTime
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x58410E0, 0x48]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
@ -0,0 +1,47 @@
|
||||
# DRAGON BALL XENOVERSE 2 FOR NINTENDO SWITCH 1.24.00
|
||||
# BID: 7640CE319C043D56
|
||||
# Double buffer is hardcoded in class, getting triple buffer is hard.
|
||||
# Some graphical effects like aura have wrong speed outside of 15, 20, 30 and 60 FPS
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# Search those in Edizon by searching for 1/60 in title menu, then 1/30 when FPS lock is applied.
|
||||
# FPS Lock
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x4AC8AD8, 0x698]
|
||||
value_type: float
|
||||
value: 0.0
|
||||
# Unknown
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x4AC8AD8, 0x6A4]
|
||||
value_type: float
|
||||
value: 0.0
|
||||
# Game Battle Speed Factor
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x4AC8AD8, 0x6B0]
|
||||
value_type: uint32
|
||||
value: VSYNC_TARGET
|
||||
# Cutscenes Speed Factor
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x4AC8AD8, 0x6B4]
|
||||
value_type: uint32
|
||||
value: VSYNC_TARGET
|
||||
# Target Speed
|
||||
# REF: E9 03 00 32 09 01 00 39 C0 03 5F D6, first result, LDR instruction
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x23F51C0]
|
||||
value_type: float
|
||||
value: "(1 / FPS_TARGET) * VSYNC_TARGET"
|
||||
# Dynamic Resolution FPS Target
|
||||
# REF: 16 4E A8 52 F7 03 60 B2, first ADRP + LDR above it
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x23D53C8, 0x1844]
|
||||
value_type: float
|
||||
value: "FPS_TARGET"
|
@ -0,0 +1,47 @@
|
||||
# DRAGON BALL XENOVERSE 2 FOR NINTENDO SWITCH 1.24.03
|
||||
# BID: 82C912DDD4663022
|
||||
# Double buffer is hardcoded in class, getting triple buffer is hard.
|
||||
# Some graphical effects like aura have wrong speed outside of 15, 20, 30 and 60 FPS
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# Search those in Edizon by searching for 1/60 in title menu, then 1/30 when FPS lock is applied.
|
||||
# FPS Lock
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x4AC8AD8, 0x698]
|
||||
value_type: float
|
||||
value: 0.0
|
||||
# Unknown
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x4AC8AD8, 0x6A4]
|
||||
value_type: float
|
||||
value: 0.0
|
||||
# Game Battle Speed Factor
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x4AC8AD8, 0x6B0]
|
||||
value_type: uint32
|
||||
value: VSYNC_TARGET
|
||||
# Cutscenes Speed Factor
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x4AC8AD8, 0x6B4]
|
||||
value_type: uint32
|
||||
value: VSYNC_TARGET
|
||||
# Target Speed
|
||||
# REF: E9 03 00 32 09 01 00 39 C0 03 5F D6, first result, LDR instruction
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x23F51C0]
|
||||
value_type: float
|
||||
value: "(1 / FPS_TARGET) * VSYNC_TARGET"
|
||||
# Dynamic Resolution FPS Target
|
||||
# REF: 16 4E A8 52 F7 03 60 B2, first ADRP + LDR above it
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x23D53C8, 0x1844]
|
||||
value_type: float
|
||||
value: "FPS_TARGET"
|
@ -1,4 +1,4 @@
|
||||
# Achilles Legends Untold 1.0.1
|
||||
# Achilles Legends Untold 1.0.1/1.0.2
|
||||
# BID: BDDD7E8FA07C8C75
|
||||
|
||||
unsafeCheck: true
|
||||
@ -21,4 +21,5 @@ ALL_FPS:
|
||||
type: write
|
||||
address: [MAIN, 0x6199738, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
|
||||
value: [0, 0]
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Kirby Star Allies 4.0.0
|
||||
# Kirby Star Allies 4.0.0/4.0.0a
|
||||
# BID: D55608916FA56C18
|
||||
# Thanks to Kirby567Fan for finding offsets of interval
|
||||
|
||||
|
@ -0,0 +1,148 @@
|
||||
# The Legend of Zelda: Breath of the Wild 1.8.1
|
||||
# BID: A12F75F49B36F4B8
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Remove double buffer
|
||||
## REF: 61 F6 42 39
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xD80748
|
||||
value_type: uint32
|
||||
value: 0x52800021
|
||||
# Change pointer of GPU time factor for DR calculations to MAIN + 0x1D36C80
|
||||
## REF: XREF 0x46823555, replace loading for 0.001
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xE6F140
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF0007628
|
||||
- 0xBD4FF501
|
||||
# Dynamic speed
|
||||
## Replace nvnQueuePresentTexture call to code cave at MAIN+0x148D964
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xD874FC
|
||||
value_type: uint32
|
||||
value: 0x141C191A
|
||||
## Patch game speed function to use speed from MAIN+0x1D36FF0
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x14092A8
|
||||
value_type: uint32
|
||||
value: 0x14000003
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x14092CC
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0004969
|
||||
- 0xBD4FF121
|
||||
## Patch UI speed function to use speeed from MAIN+0x1D36FF0
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x116D0D8
|
||||
value_type: uint32
|
||||
value: 0xB0005E47
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x116D0E4
|
||||
value_type: uint32
|
||||
value: 0xBD4FF0E0
|
||||
## CODE CAVE
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x148D964
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD63F0100
|
||||
- 0xD53BE022
|
||||
- 0xB0004548
|
||||
- 0xF947FD01
|
||||
- 0xEB1F003F
|
||||
- 0x54000061
|
||||
- 0xF907FD02
|
||||
- 0x17E3E6E0
|
||||
- 0xCB010040
|
||||
- 0x97FFFBB6 # BL nn::os::ConvertToTimeSpan(nn::os::Tick)
|
||||
- 0x9E230000
|
||||
- 0x52940AA0
|
||||
- 0x72A03F80
|
||||
- 0x1E230001
|
||||
- 0x1E211800
|
||||
- 0x1E201001
|
||||
- 0x1E212000
|
||||
- 0x5400004B
|
||||
- 0x1E204020
|
||||
- 0xB0004548
|
||||
- 0xBD4FED01
|
||||
- 0x1E212000
|
||||
- 0x5400004C
|
||||
- 0x1E204020
|
||||
- 0xBD0FF100
|
||||
- 0x17FFFFED
|
||||
- 0xB0004540
|
||||
- 0xB94FF000
|
||||
- 0xD65F03C0
|
||||
- 0xB0004547
|
||||
- 0xB90FE8E1
|
||||
- 0x17DDA966
|
||||
# Signal Cutscenes playing
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xC00680
|
||||
value_type: uint32
|
||||
value: 0x942234D6
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xC00E40
|
||||
value_type: uint32
|
||||
value: 0x942232E6
|
||||
# Default speed
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1D36FF0
|
||||
value_type: float
|
||||
value: 1.0
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1D36FEC
|
||||
value_type: float
|
||||
value: 1.0
|
||||
# Default cutscene state
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1D36FE8
|
||||
value_type: uint8
|
||||
value: 1
|
||||
# Default DR factor
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1D36FF4
|
||||
value_type: float
|
||||
value: 0.001
|
||||
ALL_FPS:
|
||||
# Min Delta
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1D36FEC]
|
||||
value_type: float
|
||||
value: "30 / FPS_TARGET"
|
||||
# DR factor
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1D36FF4]
|
||||
value_type: float
|
||||
value: "(FPS_TARGET / 30) * 0.001"
|
||||
# Prerendered cutscenes must be played at 30 FPS
|
||||
-
|
||||
type: compare
|
||||
compare_address: [MAIN, 0x1D36FE8]
|
||||
compare_type: "=="
|
||||
compare_value_type: uint8
|
||||
compare_value: 0
|
||||
address: [MAIN]
|
||||
value_type: refresh_rate
|
||||
value: 30
|
@ -0,0 +1,157 @@
|
||||
# The Legend of Zelda: Breath of the Wild 1.8.2
|
||||
# BID: DE0B6AC4EFC1DDA7
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Remove double buffer
|
||||
## REF: 61 F6 42 39
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xD80748
|
||||
value_type: uint32
|
||||
value: 0x52800021
|
||||
# Change pointer of time factor for DR calculations to MAIN + 0x1D36FF4
|
||||
## REF: 01 01 27 1E 08 59 A8 52 03 08 21 1E, replace hardcoded 100.0 float
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1153314
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF0005F08
|
||||
- 0x1E210803
|
||||
- 0xBD4FF501
|
||||
# Dynamic speed
|
||||
## Replace nvnQueuePresentTexture call to code cave at MAIN+0x148D964
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xD874FC
|
||||
value_type: uint32
|
||||
value: 0x141C191A
|
||||
## Patch game speed function to use speed from MAIN+0x1D36FF0
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x14092A8
|
||||
value_type: uint32
|
||||
value: 0x14000003
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x14092CC
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0004969
|
||||
- 0xBD4FF121
|
||||
## Patch UI speed function to use speeed from MAIN+0x1D36FF0
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x116D0D8
|
||||
value_type: uint32
|
||||
value: 0xB0005E47
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x116D0E4
|
||||
value_type: uint32
|
||||
value: 0xBD4FF0E0
|
||||
## CODE CAVE
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x148D964
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD63F0100
|
||||
- 0xD53BE022
|
||||
- 0xB0004548
|
||||
- 0xF947FD01
|
||||
- 0xEB1F003F
|
||||
- 0x54000061
|
||||
- 0xF907FD02
|
||||
- 0x17E3E6E0
|
||||
- 0xCB010040
|
||||
- 0x97FFFBB6 # BL nn::os::ConvertToTimeSpan(nn::os::Tick)
|
||||
- 0x9E230000
|
||||
- 0x52940AA0
|
||||
- 0x72A03F80
|
||||
- 0x1E230001
|
||||
- 0x1E211800
|
||||
- 0x1E201001
|
||||
- 0x1E212000
|
||||
- 0x5400004B
|
||||
- 0x1E204020
|
||||
- 0xB0004548
|
||||
- 0xBD4FED01
|
||||
- 0x1E212000
|
||||
- 0x5400004C
|
||||
- 0x1E204020
|
||||
- 0xBD0FF100
|
||||
- 0x17FFFFED
|
||||
- 0xB0004540
|
||||
- 0xB94FF000
|
||||
- 0xD65F03C0
|
||||
- 0xB0004547
|
||||
- 0xB90FE8E1
|
||||
- 0x17DDA966
|
||||
# Signal Cutscenes playing
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xC00680
|
||||
value_type: uint32
|
||||
value: 0x942234D6
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xC00E40
|
||||
value_type: uint32
|
||||
value: 0x942232E6
|
||||
# Default speed
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1D36FF0
|
||||
value_type: float
|
||||
value: 1.0
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1D36FEC
|
||||
value_type: float
|
||||
value: 1.0
|
||||
# Default cutscene state
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1D36FE8
|
||||
value_type: uint8
|
||||
value: 1
|
||||
# Default DR factor
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1D36FF4
|
||||
value_type: float
|
||||
value: 100.0
|
||||
ALL_FPS:
|
||||
# Scrolling speed
|
||||
## REF: 68 16 41 B9 D8 22 D5 1A
|
||||
## ADRP + LDR above it
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1C4BA40]
|
||||
value_type: float
|
||||
value: "30 / FPS_TARGET"
|
||||
# Min Delta
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1D36FEC]
|
||||
value_type: float
|
||||
value: "30 / FPS_TARGET"
|
||||
# DR factor
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1D36FF4]
|
||||
value_type: float
|
||||
value: "(FPS_TARGET / 30) * 100"
|
||||
# Prerendered cutscenes must be played at 30 FPS
|
||||
-
|
||||
type: compare
|
||||
compare_address: [MAIN, 0x1D36FE8]
|
||||
compare_type: "=="
|
||||
compare_value_type: uint8
|
||||
compare_value: 0
|
||||
address: [MAIN]
|
||||
value_type: refresh_rate
|
||||
value: 30
|
@ -0,0 +1,27 @@
|
||||
# ぎゃる☆がん2 1.0.4
|
||||
# BID: 62B7F19804BCB70E
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x4346990, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x44E6DA8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# Disable custom FPS Lock
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x44E6030, 0x764]
|
||||
value_type: float
|
||||
value: 0
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,53 @@
|
||||
# 零 ~濡鴉ノ巫女~ 1.0.5
|
||||
# BID: 8BFBF5B8A7098443
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect min delta to MAIN + 0x1BC4FF0
|
||||
# REF: 00 D9 21 7E 28 19 20 1E
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x39ABF8
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD000C15B # ADRP X27, 0x1BC4000
|
||||
- 0xBD4FF368 # LDR S8, [X27, 0xFF0]
|
||||
# Redirect FPS Lock to MAIN + 0x1BC4FF4
|
||||
# REF: 69 AA 40 B9 0A 40 99 52
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x39B2D8
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB000C149 # ADRP X9, 0x7101BC4000
|
||||
- 0xB94FF529 # LDR W9, [X9, 0xFF4]
|
||||
- 0xD503201F # NOP
|
||||
- 0xD503201F # NOP
|
||||
# Default values
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1BC4FF0
|
||||
value_type: float
|
||||
value: 0.0333333333
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1BC4FF4
|
||||
value_type: uint32
|
||||
value: 33333333
|
||||
ALL_FPS:
|
||||
# Min delta
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1BC4FF0]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
||||
# FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1BC4FF4]
|
||||
value_type: uint32
|
||||
value: "1000000000 / FPS_TARGET"
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,28 @@
|
||||
# No Man's Sky 5.7.1
|
||||
# BID: 22D0D857A4DAEBBC
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect DR frametime target to MAIN+0x47D7FF0
|
||||
# REF: 08 4E A8 52 00 01 27 1E 48 8F A8 52, ADRP + ADD + LDR above that
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1F95A70
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD0014209 # adrp x9, #0x47D7000
|
||||
- 0xBD4FF120 # ldr s0, [x9, #0xff0]
|
||||
- 0xD503201F # NOP
|
||||
# default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x47D7FF0
|
||||
value_type: float
|
||||
value: 30
|
||||
ALL_FPS:
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x47D7FF0]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
@ -0,0 +1,28 @@
|
||||
# No Man's Sky 5.6.0
|
||||
# BID: 252A2FD2AD6A13FE
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect DR frametime target to MAIN+0x4722FF0
|
||||
# REF: 08 4E A8 52 00 01 27 1E 48 8F A8 52, ADRP + ADD + LDR above that
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1F3A018
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x90013F49 # adrp x9, #0x4722000
|
||||
- 0xBD4FF120 # ldr s0, [x9, #0xff0]
|
||||
- 0xD503201F # NOP
|
||||
# default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x4722FF0
|
||||
value_type: float
|
||||
value: 30
|
||||
ALL_FPS:
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x4722FF0]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
@ -0,0 +1,28 @@
|
||||
# No Man's Sky 5.7.01
|
||||
# BID: CF94B485A949F8D1
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect DR frametime target to MAIN+0x47DBFF0
|
||||
# REF: 08 4E A8 52 00 01 27 1E 48 8F A8 52, ADRP + ADD + LDR above that
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1F99B90
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD0014209 # adrp x9, #0x47DB000
|
||||
- 0xBD4FF120 # ldr s0, [x9, #0xff0]
|
||||
- 0xD503201F # NOP
|
||||
# default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x47DBFF0
|
||||
value_type: float
|
||||
value: 30
|
||||
ALL_FPS:
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x47DBFF0]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
@ -0,0 +1,28 @@
|
||||
# No Man's Sky 5.7.5
|
||||
# BID: D5C5F47DFABD0812
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect DR frametime target to MAIN+0x47E0FF0
|
||||
# REF: 08 4E A8 52 00 01 27 1E 48 8F A8 52, ADRP + ADD + LDR above that
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1F9BC40
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0014229 # adrp x9, #0x47E0000
|
||||
- 0xBD4FF120 # ldr s0, [x9, #0xff0]
|
||||
- 0xD503201F # NOP
|
||||
# default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x47E0FF0
|
||||
value_type: float
|
||||
value: 30
|
||||
ALL_FPS:
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x47E0FF0]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
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