mirror of
https://github.com/Ultra-NX/UltraNX.git
synced 2025-08-08 02:22:07 +00:00
Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
85ffded054 | ||
|
7d6a8eb2b1 | ||
|
69db804029 | ||
|
d18b6d94c4 | ||
|
6c1c55d929 | ||
|
220ef77d17 | ||
|
ece8bc4858 | ||
|
081eaa7c7d | ||
|
eda99e7881 | ||
|
d28855fd34 |
33
README.md
33
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.4](https://github.com/Ultra-NX/UltraNX/releases) Поддерживает HOS 20.0.1 и все ревизии консолей
|
||||
### [Ultra 2.5|R1](https://github.com/Ultra-NX/UltraNX/releases) Поддерживает HOS 20.2.0
|
||||
### [Ultra 2.5|Pre2](https://github.com/Ultra-NX/UltraNX/releases/tag/2.5-R2) Частично поддерживает HOS 20.3.0 (Только Safe Mode)
|
||||
|
||||
|
||||
|
||||
@ -25,9 +26,7 @@
|
||||
* Подробная [Wiki](https://github.com/Ultra-NX/Ultra/wiki) в которой есть ответы почти на все вопросы.
|
||||
* [Форки](https://github.com/Ultra-NX/Ultra-Resources/tree/main/patches) (свои модификации) программ и компонентов, нужные для удобства, безопасности и расширения возможностей:
|
||||
* Форк Атмосферы с прописанной версией Ультры в информации о системе, и отключенными репортами, обычно засоряющими сд карту, тратящими ее ресурс и ломающими файловую систему. Так же исправлена работа старых форвардеров (важно для хоумбрю игр/эмуляторов).
|
||||
* Форки SaltyNX и FPSLocker, с поддержкой изменения частоты обновления экрана и с поддержкой OLED.
|
||||
* Форк Mission Control, с вырезанной "пасхалкой", делающей джойконы жовто-блакитными.
|
||||
* Форк Status Monitor с отображением текущих вольтажей и уникальными модулями Микро Оверлея, пресеты которых можно менять через Ultra Tuner.
|
||||
|
||||
|
||||
|
||||
@ -48,28 +47,28 @@
|
||||
* [Sphaira](https://github.com/ITotalJustice/sphaira) - Современное Хоумбрю Меню, аналог nx-hbmenu
|
||||
* [AiO Switch Updater](https://github.com/HamletDuFromage/aio-switch-updater) - Программа для обновления Ultra до актуальной версии, а так же для скачивания читов.
|
||||
* [Daybreak](https://github.com/Atmosphere-NX/Atmosphere) - Программа для обновления системного ПО.
|
||||
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1120#entry86288632) - Лучший файловый менеджер, менеджер сохранений и установщик программ на консоль.
|
||||
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1100#entry86288632) - Лучший файловый менеджер, менеджер сохранений и установщик программ на консоль.
|
||||
|
||||
|
||||
1. **Установленные модули**
|
||||
* [SaltyNX](https://github.com/masagrator/SaltyNX) - Фоновый модуль, позволяющий модифицировать файлы\процессы в консоли, поддерживает плагины. Не совместим с 32-х битными играми (список на гитхабе проекта).
|
||||
* [sys-clk](https://github.com/halop/OC_Toolkit_SC_EOS) - Модуль отвечающий за разгон процессора, памяти и видеочипа - для лучшей производительности. Периодически меняю версии от разных авторов. Оригинальные авторы: Meha/hanai3Bi, lineon, p-sam.
|
||||
* [sys-clk](https://github.com/ppkantorski/sys-clk) - Модуль отвечающий за разгон процессора, памяти и видеочипа - для лучшей производительности. Периодически меняю версии от разных авторов. Оригинальные авторы: Meha/hanai3Bi, lineon, p-sam.
|
||||
* [nx-ovlloader](https://github.com/ppkantorski/nx-ovlloader) - С помощью этого модуля осуществляется переключение установленных модулей.
|
||||
* [sys-patch](https://github.com/impeeza/sys-patch) - Патчит систему на работу неподписанного софта вместо сигпатчей.
|
||||
* [Mission Control](https://github.com/ndeadly/MissionControl) - Модуль, позволяющий подключать практически любые геймпады к консоли по Bluetooth.
|
||||
* [sys-con](https://github.com/o0Zz/sys-con) - Модуль, позволяющий подключать практически любые геймпады к консоли по USB.
|
||||
* [Ultrahand Overlay](https://github.com/ppkantorski/Ultrahand-Overlay) - Специальное оверлей-меню для взаимодействия с системой: разгон, управление режимами через ReverseNX, включение читов, прочее. Так же позволяет использовать самописные пакеты, например - Ultra Tuner.
|
||||
- **`Ultra OC (sys-clk)`**, мод [sys-clk](https://github.com/halop/OC_Toolkit_SC_EOS) - Оверлей для управления модулем sys-clk. Немного изменен мной, но без копания в исходниках (Так как они закрыты).
|
||||
- [Status Monitor](https://github.com/Ultra-NX/Status-Monitor-Overlay), форк [Status Monitor](https://github.com/hanai3Bi/Status-Monitor-Overlay) - Оверлей позволяющий следить за параметрами консоли в реальном времени. Может выступать в качестве счетчика FPS. Сменить пресет Micro-оверлея можно в Updater.
|
||||
- **`Ultra OC (sys-clk)`**, мод [sys-clk](https://github.com/ppkantorski/sys-clk) - Оверлей для управления модулем sys-clk. Немного изменен мной, но без копания в исходниках (Так как они закрыты).
|
||||
- [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay), форк [Status Monitor](https://github.com/hanai3Bi/Status-Monitor-Overlay) - Оверлей позволяющий следить за параметрами консоли в реальном времени. Может выступать в качестве счетчика FPS. Сменить пресет Micro-оверлея можно в Updater.
|
||||
- [FPSLocker](https://github.com/masagrator/FPSLocker) - Оверлей, позволяющий разблокировать 60 FPS в играх.
|
||||
- [EdiZon](https://github.com/proferabg/EdiZon-Overlay) - Оверлей для использования читов.
|
||||
- [ReverseNX-RT](https://github.com/masagrator/ReverseNX-RT) - Оверлей для управления ReverseNX.
|
||||
- [ReverseNX-RT](https://github.com/ppkantorski/ReverseNX-RT) - Оверлей для управления ReverseNX.
|
||||
- [Sysmodules](https://github.com/ppkantorski/ovl-sysmodules) - Оверлей для включения и отключения установленных системных модулей.
|
||||
|
||||
|
||||
1. **Доступные для скачивания через [Ultra Tuner](https://github.com/Ultra-NX/UltraNX/wiki/Tuner-RU#ultra-tuner)**
|
||||
* Homebrews:
|
||||
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1120#entry86288632) - Здесь можно скачать DBI или обновить имеющийся.
|
||||
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1100#entry86288632) - Здесь можно скачать DBI или обновить имеющийся.
|
||||
* [Linkalho](https://gbatemp.net/download/linkalho.38822) - Программа для привязки аккаунта.
|
||||
* [HB App Store](https://github.com/fortheusers/hb-appstore) - Бесплатный магазин для скачивания Homebrew приложений.
|
||||
* [PPSSPP](https://gbatemp.net/threads/ppsspp-switch-standalone-beta.544071/post-10492671) - Эмулятор PSP.
|
||||
@ -81,7 +80,7 @@
|
||||
* [MicroMemBench](https://github.com/rashevskyv/4IFIR) - Бенчмарк. Результат сильно зависит от разгона CPU. Версия из Чифира которая в реальном времени тестирует CPU Copy, что позволяет быстро узнать результат после изменения таймингов.
|
||||
|
||||
* Overlays:
|
||||
* [Status Monitor Ultra](https://github.com/Ultra-NX/Status-Monitor-Overlay) - Форк Status Monitor для UltraNX, поддерживает много пресетов Micro-оверлея, и обладает рядом уникальных фишек.
|
||||
* [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay) - Форк Status Monitor от kantorski.
|
||||
* [Tetris](https://github.com/ppkantorski/Tetris-Overlay) - Та самая игра в виде оверлея. Работает только на последних версиях Ultrahand.
|
||||
* [MasterVolume](https://github.com/averne/MasterVolume) - Регулировка глобальной громкости, позволяет поднять громкость выше максимума. Использовать аккуратно!
|
||||
* [NX-FanControl](https://github.com/Zathawo/NX-FanControl) - Модуль для ручной регулировки оборотов кулера. Изменения применяются сразу, модуль смотрит на температуру SOC а не Skin, как Атмосфера.
|
||||
@ -92,6 +91,7 @@
|
||||
* Other:
|
||||
* [FPSLocker Patches](https://github.com/masagrator/FPSLocker-Warehouse) - Патчи для FPSLocker, что бы не качать отдельно патч для каждой игры через оверлей.
|
||||
* [DVR Patches](https://github.com/exelix11/dvr-patches) - Патчи SysDVR, работают и без системного модуля, активируя фоновую запись в играх, где это изначально запрещено.
|
||||
* [Mod Alchemist](https://github.com/ppkantorski/Mod-Alchemist) - Пакет для скачивания, установки и управления модами для игр.
|
||||
* [sys-ftpd](https://github.com/tomvita/sys-ftpd-light) - FTP сервер, работающий на фоне.
|
||||
|
||||
|
||||
@ -118,8 +118,6 @@
|
||||
* Meha
|
||||
* duckbill
|
||||
* snupt
|
||||
* Cooler3D
|
||||
* 4PDA
|
||||
#### А так же - отдельная благодарность администрации и участникам Ultra Group
|
||||
|
||||
|
||||
@ -129,14 +127,15 @@
|
||||
Если вам нравится проект, и у вас появилось желание поддержать меня копеечкой - я буду очень благодарен.
|
||||
У меня в данный момент нет других заработков, так что любая денежная помощь очень ценна для меня.
|
||||
```
|
||||
TON: UQDioCnnPI5sk4KvxWzfPWsWbAyWCkzwhaYjy8Qpg2QwWMiL
|
||||
BTC: 1HsC4z8X1YkZzcSKZz1t7MXRa7rPi8qChV
|
||||
USDT: TQi3qLVrNGcr6avfVQBXRjpPTyvp5JZ7i2
|
||||
|
||||
СБП : +79168089980
|
||||
|
||||
Альфа : 2200152336577997
|
||||
Tinkoff : 2200700170486970
|
||||
Сбер : 2202200513345833
|
||||
|
||||
TON: UQA9My51bkGZHbYhbdRZfp6B60N7VJfsnKl0sakgw9YhAPct
|
||||
BTC: 18K6NN8NEavvMJL5Do3VTyJbL8NeZPHo93
|
||||
USDT TRC20: TUZ5szAmRsnvBuC4rFB8RaAoCbN6Ucy4sL
|
||||
```
|
||||
|
||||
### Tinkoff QR
|
||||
|
@ -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.4](https://github.com/Ultra-NX/UltraNX/releases) Supports HOS 20.0.1 and all console revisions
|
||||
### [Ultra 2.5|R1](https://github.com/Ultra-NX/UltraNX/releases) Supports HOS 20.2.0
|
||||
### [Ultra 2.5|Pre2](https://github.com/Ultra-NX/UltraNX/releases/tag/2.5-R2) Partially supports HOS 20.3.0 (Safe Mode Only)
|
||||
|
||||
|
||||
|
||||
@ -21,9 +22,7 @@
|
||||
* Regular updates, and an active community.
|
||||
* [Forks](https://github.com/Ultra-NX/Ultra-Resources/tree/main/patches) (own modifications) of programs and components needed for convenience, security and empowerment:
|
||||
* Atmosphere fork with Ultra version in system information, and disabled reports, which usually clogs up the SD card, wastes its resource and breaks the file system.
|
||||
* SaltyNX and FPSLocker forks, with support for changing screen refresh rate and with OLED support.
|
||||
* Mission Control fork, with the “easter egg” cut out, making the joycons yellow-blue.
|
||||
* Status Monitor fork with display of current voltages and unique Micro Overlay modules, whose presets can be changed via Ultra Tuner.
|
||||
|
||||
|
||||
|
||||
@ -44,28 +43,28 @@
|
||||
* [Sphaira](https://github.com/ITotalJustice/sphaira) - Modern Homebrew Menu, analogous to nx-hbmenu
|
||||
* [AiO Switch Updater](https://github.com/HamletDuFromage/aio-switch-updater) - Program to update Ultra to the current version, as well as to download cheats.
|
||||
* [Daybreak](https://github.com/Atmosphere-NX/Atmosphere) - A program for updating OS.
|
||||
* [DBI](https://github.com/rashevskyv/dbi) - The best file manager, save manager and program installer on the console.
|
||||
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1100#entry86288632) - The best file manager, save manager and program installer on the console.
|
||||
|
||||
|
||||
1. **Installed Modules**
|
||||
* [SaltyNX](https://github.com/masagrator/SaltyNX) - Background module allowing to modify files/processes in console, supports plugins. Not compatible with 32-bit games (list on the project's github).
|
||||
* [sys-clk](https://github.com/halop/OC_Toolkit_SC_EOS) - Module responsible for overclocking CPU, memory and GPU - for better performance. I change versions from different authors from time to time. Original authors: Meha/hanai3Bi, lineon, p-sam.
|
||||
* [sys-clk](https://github.com/ppkantorski/sys-clk) - Module responsible for overclocking CPU, memory and GPU - for better performance. I change versions from different authors from time to time. Original authors: Meha/hanai3Bi, lineon, p-sam.
|
||||
* [nx-ovlloader](https://github.com/ppkantorski/nx-ovlloader) - This module is used to switch the installed modules.
|
||||
* [sys-patch](https://github.com/impeeza/sys-patch) - Patches the system to run unsigned software instead of sigpatches.
|
||||
* [Mission Control](https://github.com/ndeadly/MissionControl) - A module that allows you to connect almost any gamepads to the console via bluetooth.
|
||||
* [sys-con](https://github.com/o0Zz/sys-con) - A module that allows you to connect almost any gamepads to the console via USB.
|
||||
* [Ultrahand Overlay](https://github.com/ppkantorski/Ultrahand-Overlay) - Special overlay-menu for interacting with the system: overclocking, controlling modes via ReverseNX, enabling cheats, etc. Also allows to use your own packages, for example, Ultra Tuner.
|
||||
- **`Ultra OC (sys-clk)`**, a mod of [sys-clk](https://github.com/halop/OC_Toolkit_SC_EOS) - Overlay for controlling sys-clk module. Slightly modified by me, but without digging into sources (Since they're closed).
|
||||
- [Status Monitor](https://github.com/Ultra-NX/Status-Monitor-Overlay), a fork of [Status Monitor](https://github.com/masagrator/Status-Monitor-Overlay) - Overlay that allows you to monitor console parameters in real time. It can act as an FPS counter. You change preset of Micro-overlay appearance in Updater.
|
||||
- **`Ultra OC (sys-clk)`**, a mod of [sys-clk](https://github.com/ppkantorski/sys-clk) - Overlay for controlling sys-clk module. Slightly modified by me, but without digging into sources (Since they're closed).
|
||||
- [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay), a fork of [Status Monitor](https://github.com/masagrator/Status-Monitor-Overlay) - Overlay that allows you to monitor console parameters in real time. It can act as an FPS counter. You change preset of Micro-overlay appearance in Updater.
|
||||
- [FPSLocker](https://github.com/masagrator/FPSLocker) - An overlay that allows you to unlock 60 FPS in games.
|
||||
- [EdiZon](https://github.com/proferabg/EdiZon-Overlay) - An overlay for using cheats.
|
||||
- [ReverseNX-RT](https://github.com/masagrator/ReverseNX-RT) - ReverseNX control overlay.
|
||||
- [ReverseNX-RT](https://github.com/ppkantorski/ReverseNX-RT) - ReverseNX control overlay.
|
||||
- [Sysmodules](https://github.com/ppkantorski/ovl-sysmodules) - Overlay for enabling and disabling installed system modules.
|
||||
|
||||
|
||||
1. **Available for download via [Updater](https://github.com/Ultra-NX/Ultra/wiki/Tuner-RU#Updater)**
|
||||
* Homebrews:
|
||||
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1120#entry86288632) - Here you can download a DBI or update an existing one.
|
||||
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1100#entry86288632) - Here you can download a DBI or update an existing one.
|
||||
* [Linkalho](https://gbatemp.net/download/linkalho.38822/) - Account linking program.
|
||||
* [HB App Store](https://github.com/fortheusers/hb-appstore) - A free store for downloading Homebrew apps.
|
||||
* [PPSSPP](https://gbatemp.net/threads/ppsspp-switch-standalone-beta.544071/post-10492671) - PSP emulator.
|
||||
@ -77,7 +76,7 @@
|
||||
* [MicroMemBench](https://github.com/rashevskyv/4IFIR) - Benchmark. The result is highly dependent on CPU overclocking. A version from 4ifir that tests CPU Copy in real time, which allows you to quickly find out the result after changing timings.
|
||||
|
||||
* Overlays:
|
||||
* [Status Monitor Ultra](https://github.com/Ultra-NX/Status-Monitor-Overlay) - Status Monitor fork for UltraNX, supports many Micro-overlay presets, and has a number of unique features.
|
||||
* [Status Monitor](https://github.com/ppkantorski/Status-Monitor-Overlay) - Status Monitor fork from kantorski.
|
||||
* [Tetris](https://github.com/ppkantorski/Tetris-Overlay/) - "That" game in the form of an overlay. Works only on the latest versions of Ultrahand.
|
||||
* [MasterVolume](https://github.com/averne/MasterVolume) - Global volume control, allows you to raise the volume above the maximum. Use with care!
|
||||
* [NX-FanControl](https://github.com/Zathawo/NX-FanControl) - Module for manually adjusting the speed of the cooler. The changes are applied immediately, the module works from SOC temperature and not Skin temperature like Atmosphere.
|
||||
@ -88,6 +87,7 @@
|
||||
* Other:
|
||||
* [FPSLocker Patches](https://github.com/masagrator/FPSLocker-Warehouse) - Patches for FPSLocker, so you don't have to download a separate patch for each game through the overlay.
|
||||
* [DVR Patches](https://github.com/exelix11/dvr-patches) - SysDVR patches, work without the system module, activating background recording in games where it is initially prohibited.
|
||||
* [Mod Alchemist](https://github.com/ppkantorski/Mod-Alchemist) - A package for downloading, installing, and managing mods for games.
|
||||
* [sys-ftpd](https://github.com/cathery/sys-ftpd) - FTP server running in background.
|
||||
|
||||
|
||||
@ -112,8 +112,6 @@ Listed below are the licenses of those programs that have been modified specific
|
||||
* Meha
|
||||
* duckbill
|
||||
* snupt
|
||||
* Cooler3D
|
||||
* 4PDA
|
||||
#### And also - a special thanks to the administration and members of Ultra Group
|
||||
|
||||
|
||||
@ -123,7 +121,7 @@ Listed below are the licenses of those programs that have been modified specific
|
||||
If you like the project and you have a desire to support me with a penny - I will be very grateful.
|
||||
I have no other income at the moment, so any monetary help is very valuable to me.
|
||||
```
|
||||
TON: UQDioCnnPI5sk4KvxWzfPWsWbAyWCkzwhaYjy8Qpg2QwWMiL
|
||||
BTC: 1HsC4z8X1YkZzcSKZz1t7MXRa7rPi8qChV
|
||||
USDT: TQi3qLVrNGcr6avfVQBXRjpPTyvp5JZ7i2
|
||||
TON: UQA9My51bkGZHbYhbdRZfp6B60N7VJfsnKl0sakgw9YhAPct
|
||||
BTC: 18K6NN8NEavvMJL5Do3VTyJbL8NeZPHo93
|
||||
USDT TRC20: TUZ5szAmRsnvBuC4rFB8RaAoCbN6Ucy4sL
|
||||
```
|
@ -24,7 +24,7 @@ X0100964012528000
|
||||
|
||||
;Olympic Games Tokyo 2020 – The Official Video Game
|
||||
;1.0.0 crash on boot
|
||||
010034B00E14C000
|
||||
X010034B00E14C000
|
||||
|
||||
;Mario Strikers: Battle League
|
||||
;1.0.0 crash on boot
|
||||
@ -54,3 +54,7 @@ X0100C1F0051B6000
|
||||
;Death Road to Canada
|
||||
;1.0.8 crash
|
||||
X0100423009358000
|
||||
|
||||
;Splatoon 3
|
||||
;10.0.0 upwards crashes after online match
|
||||
X0100C2500FC20000
|
||||
|
@ -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,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,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,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.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 @@
|
||||
# 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,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,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
|
@ -1,4 +1,4 @@
|
||||
# Star Overdrive 1.0.6
|
||||
# Star Overdrive 1.0.6/1.0.7/1.0.8
|
||||
# BID: 728D92CB9E54CE7A
|
||||
|
||||
unsafeCheck: true
|
||||
|
@ -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,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.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,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.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.7a.a54b
|
||||
# BID: F57C74294E14BDCC
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCE78A68, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -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.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,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 @@
|
||||
# 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.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
|
@ -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]
|
@ -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,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.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
|
@ -1,4 +1,4 @@
|
||||
# The Smurfs - Dreams 1.0.2
|
||||
# The Smurfs - Dreams 1.0.2/1.0.3
|
||||
# BID: E08769D5B56A5A25
|
||||
|
||||
unsafeCheck: true
|
||||
@ -10,12 +10,6 @@ ALL_FPS:
|
||||
address: [MAIN, 0x8321958, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x92DEDE8, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
|
@ -0,0 +1,53 @@
|
||||
# 零 ~月蝕的假面~ 1.0.3
|
||||
# BID: A735894277FF90F3
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect min delta to MAIN + 0x1FE0FF0
|
||||
# REF: 00 D9 21 7E 28 19 20 1E
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x16D9B4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF000F39B # ADRP X27, 0x1FE0000
|
||||
- 0xBD4FF368 # LDR S8, [X27, 0xFF0]
|
||||
# Redirect FPS Lock to MAIN + 0x1FE0FF4
|
||||
# REF: 69 B2 40 B9 0A 40 99 52
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x16DDD0
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF000F389 # ADRP X9, 0x1FE0000
|
||||
- 0xB94FF529 # LDR W9, [X9, 0xFF4]
|
||||
- 0xD503201F # NOP
|
||||
- 0xD503201F # NOP
|
||||
# Default values
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1FE0FF0
|
||||
value_type: float
|
||||
value: 0.0333333333
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1FE0FF4
|
||||
value_type: uint32
|
||||
value: 33333333
|
||||
ALL_FPS:
|
||||
# Min delta
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1FE0FF0]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
||||
# FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1FE0FF4]
|
||||
value_type: uint32
|
||||
value: "1000000000 / FPS_TARGET"
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,12 @@
|
||||
# PowerWash Simulator 1.11.0
|
||||
# BID: 561B0F485E699E4E
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# FuturLab.SingletonMonoBehaviour<FrameRateLimiter>_TypeInfo (don't block FPSlocker internal lock because game's lock is kinda shit)
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x606A350, 0xB8, 0, 0x28]
|
||||
value_type: int32
|
||||
value: FPS_LOCK_TARGET
|
@ -0,0 +1,21 @@
|
||||
# The Hundred Line -Last Defense Academy- 1.0.6
|
||||
# BID: 5AF690F4A8BFCC67
|
||||
# Last found function with REF: FD 7B BE A9 F3 0B 00 F9 FD 03 00 91 E0 03 01 2A stores some code related to playing above 60 FPS. Look at it if someone will have an issue playing above 60 FPS.
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# FPS Lock
|
||||
# REF: 1B 41 00 00
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xC8CC78]
|
||||
value_type: uint32
|
||||
value: FRAMETIME_TARGET * 1000
|
||||
# Unknown value, but set in the same function as FPS lock, so it may be important
|
||||
# REF: 3C 00 00 00 01 00 00 00 00 00 00 00
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xC8CC44]
|
||||
value_type: uint32
|
||||
value: FPS_TARGET
|
@ -0,0 +1,21 @@
|
||||
# The Hundred Line -Last Defense Academy- 1.1.1
|
||||
# BID: EAADF33F510C5853
|
||||
# Last found function with REF: FD 7B BE A9 F3 0B 00 F9 FD 03 00 91 E0 03 01 2A stores some code related to playing above 60 FPS. Look at it if someone will have an issue playing above 60 FPS.
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# FPS Lock
|
||||
# REF: 1B 41 00 00
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xC95D10]
|
||||
value_type: uint32
|
||||
value: FRAMETIME_TARGET * 1000
|
||||
# Unknown value, but set in the same function as FPS lock, so it may be important
|
||||
# REF: 3C 00 00 00 01 00 00 00 00 00 00 00
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xC95CDC]
|
||||
value_type: uint32
|
||||
value: FPS_TARGET
|
@ -0,0 +1,57 @@
|
||||
# resident evil 0 1.0.0
|
||||
# BID: FB4239AA962B429B
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Detect prerendered cutscenes
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x9F2540
|
||||
value_type: uint32
|
||||
value: 0x14004E9A
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xA05FA8
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0008DE8
|
||||
- 0x52800021
|
||||
- 0xB90FF101
|
||||
- 0xF81E0FF3
|
||||
- 0xAA0003F3
|
||||
- 0x52994000
|
||||
- 0x72A77340
|
||||
- 0xD4000161
|
||||
- 0xAA1303E0
|
||||
- 0x17FFB15E
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x9F26EC
|
||||
value_type: uint32
|
||||
value: 0x14004E39
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xA05FD0
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x2A1F03E3
|
||||
- 0xB0008DE4
|
||||
- 0xB90FF083
|
||||
- 0x17FFDB0D
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1BAAC60, 0x4C]
|
||||
value_type: float
|
||||
value: "FPS_LOCK_TARGET"
|
||||
-
|
||||
type: compare
|
||||
compare_type: "=="
|
||||
compare_value_type: uint32
|
||||
compare_value: 1
|
||||
compare_address: [MAIN, 0x1BC2FF0]
|
||||
address: [MAIN]
|
||||
value_type: refresh_rate
|
||||
value: 30
|
@ -0,0 +1,12 @@
|
||||
# DAVE THE DIVER 1.0.4.1040
|
||||
# BID: 8ACF8D236ADAB16F
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# UnityEngine.Time::fixedDeltaTime
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x98E8680, 0x48]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
@ -0,0 +1,28 @@
|
||||
# City of Brass 1.2.0
|
||||
# BID: 53116900DC7BBE11
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x6257960, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 4)", "TruncDec(FRAMETIME_TARGET, 4)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x627BE28, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x5A2B258, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
|
@ -0,0 +1,27 @@
|
||||
# Misc. A Tiny Tale 1.0.4
|
||||
# BID: 0E9D849EF47198D8
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x4C25100, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x4C4B980, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x43F6548, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Misc. A Tiny Tale 1.0.5
|
||||
# BID: D24A46A2618C9E38
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x4C25100, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x4C4B980, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x43F6548, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -1,4 +1,4 @@
|
||||
# Kirby's Dream Buffet 1.0.0
|
||||
# Kirby's Dream Buffet 1.0.0/1.0.0a
|
||||
# BID: 82AF4E16BBC0BEC8
|
||||
# Thanks to Hazerou for finding offsets
|
||||
# Game was patched to use triple buffer, and to avoid flickering with some 2D transparent elements, I have disabled transparency in them.
|
||||
|
@ -1,4 +1,4 @@
|
||||
# ABZU 1.0.0
|
||||
# ABZU 1.0.0/1.0.01
|
||||
# BID: 59719CFCD1671B98
|
||||
|
||||
unsafeCheck: true
|
||||
@ -10,6 +10,12 @@ ALL_FPS:
|
||||
address: [MAIN, 0x6228EE0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x5996FC0, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
|
@ -9,7 +9,7 @@ ALL_FPS:
|
||||
type: write
|
||||
address: [MAIN, 0x3482FB0, 0xB8, 0]
|
||||
value_type: int32
|
||||
value: 1
|
||||
value: -1
|
||||
# maxFixedDeltaTime, ref: UnityEngine.Time::get_timeScale
|
||||
-
|
||||
type: write
|
||||
|
@ -0,0 +1,30 @@
|
||||
# Umurangi Generation 1.6.6.0
|
||||
# BID: 372AB37327DB2C31
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Read FPS Lock from MAIN+0x49FCFF0
|
||||
## REF: 81 1a 40 bd 02 10 2e 1e
|
||||
## REF: FPSTarget.<>d__6::MoveNext()
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2DF1E60
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF000E048 # adrp x8, #0x49fc000
|
||||
- 0xBD4FF101 # ldr s1, [x8, #0xff0]
|
||||
- 0xD503201F # NOP
|
||||
## Default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x49FCFF0
|
||||
value_type: float
|
||||
value: 0.03333333333
|
||||
ALL_FPS:
|
||||
# FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x49FCFF0]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
@ -0,0 +1,37 @@
|
||||
# Twilight Monk 1.2.0
|
||||
# BID: 7926A67119144CFD
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Disable bUseFixedFrameRate to untie game speed from framerate and unlock FPS
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x5DC2688, 0x7A4]
|
||||
value_type: uint32
|
||||
# Default is 0x46, bUseFixedFrameRate |= 0x40
|
||||
# By writing 7 we are making sure that other flags are maintained:
|
||||
# bAllowMultiThreadedAnimationUpdate |= 4
|
||||
# bOptimizeAnimBlueprintMemberVariableAccess |= 2
|
||||
value: 6
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x5D952E8, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x5DC2FA8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x55C62F8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,37 @@
|
||||
# Twilight Monk 1.3.0
|
||||
# BID: E9A189C0CA87A30C
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Disable bUseFixedFrameRate to untie game speed from framerate and unlock FPS
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x5E04268, 0x7A4]
|
||||
value_type: uint32
|
||||
# Default is 0x46, bUseFixedFrameRate |= 0x40
|
||||
# By writing 7 we are making sure that other flags are maintained:
|
||||
# bAllowMultiThreadedAnimationUpdate |= 4
|
||||
# bOptimizeAnimBlueprintMemberVariableAccess |= 2
|
||||
value: 6
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x5DD6EC8, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x5E04B88, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x5608AB8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,53 @@
|
||||
# PROJECT ZERO: Mask of the Lunar Eclipse West 1.0.3
|
||||
# BID: 0248DC99035AD28A
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect min delta to MAIN + 0x1FE0FF0
|
||||
# REF: 00 D9 21 7E 28 19 20 1E
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x16D9B4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF000F39B # ADRP X27, 0x1FE0000
|
||||
- 0xBD4FF368 # LDR S8, [X27, 0xFF0]
|
||||
# Redirect FPS Lock to MAIN + 0x1FE0FF4
|
||||
# REF: 69 B2 40 B9 0A 40 99 52
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x16DDD0
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF000F389 # ADRP X9, 0x1FE0000
|
||||
- 0xB94FF529 # LDR W9, [X9, 0xFF4]
|
||||
- 0xD503201F # NOP
|
||||
- 0xD503201F # NOP
|
||||
# Default values
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1FE0FF0
|
||||
value_type: float
|
||||
value: 0.0333333333
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1FE0FF4
|
||||
value_type: uint32
|
||||
value: 33333333
|
||||
ALL_FPS:
|
||||
# Min delta
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1FE0FF0]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
||||
# FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1FE0FF4]
|
||||
value_type: uint32
|
||||
value: "1000000000 / FPS_TARGET"
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -6,11 +6,15 @@ unsafeCheck: true
|
||||
ALL_FPS:
|
||||
# Game speed value
|
||||
-
|
||||
type: evaluate_write
|
||||
type: evaluate_compare
|
||||
compare_type: "=="
|
||||
compare_value_type: uint32
|
||||
compare_value: 2
|
||||
compare_address: [MAIN, 0x2218B44, 0x10]
|
||||
address: [MAIN, 0x2218B44, 0x20]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
||||
# Play prerendered cutscenes only at 60 FPS
|
||||
# Block prerendered cutscenes to 30 FPS
|
||||
-
|
||||
type: compare
|
||||
compare_address: [MAIN, 0x1728B58]
|
||||
|
@ -0,0 +1,83 @@
|
||||
# 無双OROCHI3 1.0.13
|
||||
# BID: 07650FD5E5E2B82C
|
||||
# Credits to Hazerou for figuring out the offset
|
||||
# Main offset stores address to start of .bss of NRO
|
||||
## REF: 02 00 00 00 3C 00 00 00
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Without DLC Ultimate Edition installed
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_value_type: uint64
|
||||
compare_type: "=="
|
||||
compare_value: 0x379B4590A7C2BC1F
|
||||
compare_address: [MAIN, 0x3AF80, -0x1B80FC0]
|
||||
address: [MAIN, 0x3AF80, -0x92BB8]
|
||||
value_type: uint32
|
||||
value: [VSYNC_TARGET, FPS_TARGET]
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_value_type: uint64
|
||||
compare_type: "=="
|
||||
compare_value: 0x379B4590A7C2BC1F
|
||||
compare_address: [MAIN, 0x3AF80, -0x1B80FC0]
|
||||
address: [MAIN, 0x3AF80, -0x92BB0]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_value_type: uint64
|
||||
compare_type: "=="
|
||||
compare_value: 0x379B4590A7C2BC1F
|
||||
compare_address: [MAIN, 0x3AF80, -0x1B80FC0]
|
||||
address: [MAIN, 0x3AF80, -0x92BAC]
|
||||
value_type: uint32
|
||||
value: [VSYNC_TARGET, FPS_TARGET]
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_value_type: uint64
|
||||
compare_type: "=="
|
||||
compare_value: 0x379B4590A7C2BC1F
|
||||
compare_address: [MAIN, 0x3AF80, -0x1B80FC0]
|
||||
address: [MAIN, 0x3AF80, -0x92BA4]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
||||
# With DLC Ultimate Edition installed
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_value_type: uint64
|
||||
compare_type: "!="
|
||||
compare_value: 0x379B4590A7C2BC1F
|
||||
compare_address: [MAIN, 0x3AF80, -0x1B80FC0]
|
||||
address: [MAIN, 0x3AF80, -0x93480]
|
||||
value_type: uint32
|
||||
value: [VSYNC_TARGET, FPS_TARGET]
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_value_type: uint64
|
||||
compare_type: "!="
|
||||
compare_value: 0x379B4590A7C2BC1F
|
||||
compare_address: [MAIN, 0x3AF80, -0x1B80FC0]
|
||||
address: [MAIN, 0x3AF80, -0x93478]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_value_type: uint64
|
||||
compare_type: "!="
|
||||
compare_value: 0x379B4590A7C2BC1F
|
||||
compare_address: [MAIN, 0x3AF80, -0x1B80FC0]
|
||||
address: [MAIN, 0x3AF80, -0x93474]
|
||||
value_type: uint32
|
||||
value: [VSYNC_TARGET, FPS_TARGET]
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_value_type: uint64
|
||||
compare_type: "!="
|
||||
compare_value: 0x379B4590A7C2BC1F
|
||||
compare_address: [MAIN, 0x3AF80, -0x1B80FC0]
|
||||
address: [MAIN, 0x3AF80, -0x9346C]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
@ -0,0 +1,12 @@
|
||||
# HEAVEN SEEKER ――The Savior of This Cruel World 1.2.0.139
|
||||
# BID: 135595BF76F46B1B
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# UnityEngine.Time::fixedDeltaTime (default is 0.033)
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x9888E78, 0x48]
|
||||
value_type: float
|
||||
value: "(1 / FPS_TARGET) * 0.99"
|
@ -0,0 +1,180 @@
|
||||
# The Legend of Zelda: Tears of The Kingdom 1.4.2
|
||||
# BID: 5CB42B1CF25469FB
|
||||
|
||||
Addons:
|
||||
- atmosphere/contents/0100F2C0115B6000/exefs/main.npdm
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Remove double buffer
|
||||
## REF: A0 2A 40 F9 61 A2 40 39
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xBBF258
|
||||
value_type: uint32
|
||||
value: 0x52800021
|
||||
# Code Injected, $x1 + 0xD8 - last frametime without compensation long ticks, $x0 + 0x50 - fps target used for calculation int,
|
||||
# $x0 + 0x24 - our fps target used for calculation but as float, originally is stored there 30 FPS int that seems to do nothing outside of this function
|
||||
## MAIN + 0x3ACCFFC = FPS target for reference
|
||||
## REF: nvnWindowSetPresentInterval
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2D4E68
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x9001BFC2
|
||||
- 0xBD4FFC49
|
||||
- 0xAA0003F4
|
||||
- 0xAA0103F5
|
||||
- 0xF9406C20
|
||||
- 0x94A33E6D # BL nn::os::ConvertToTimeSpan(nn::os::Tick)
|
||||
- 0x52994002
|
||||
- 0x72A77342
|
||||
- 0x1E220042
|
||||
- 0x9E220001
|
||||
- 0x1E211841
|
||||
- 0x1E292020
|
||||
- 0x1E21CD21
|
||||
- 0x1E25D009
|
||||
- 0x1E292020
|
||||
- 0x1E21BD21
|
||||
- 0x1E390022
|
||||
- 0xB9005282
|
||||
- 0xBD002681
|
||||
- 0x1400002B
|
||||
## Use our fps target
|
||||
## REF: 60 52 42 BD 08 4E A8 52
|
||||
### Replace LDR S0, [X22,#0x250]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2D4730
|
||||
value_type: uint32
|
||||
value: 0xBD422660
|
||||
### Replace SCVTF S0, S0
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2D4748
|
||||
value_type: uint32
|
||||
value: 0xD503201F
|
||||
## REF: 14 01 40 F9 08 4E A8 52
|
||||
### Replace LDR S0, [X22,#0x250]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x37EA5C
|
||||
value_type: uint32
|
||||
value: 0xBD4226C0
|
||||
### Replace SCVTF S0, S0
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x37EA68
|
||||
value_type: uint32
|
||||
value: 0xD503201F
|
||||
# When prerendered cutscene is active write flag to MAIN + 0x3ACCFFB
|
||||
## REF: 68 52 40 79 08 01 19 32 68 52 00 79
|
||||
## BL to Code Cave 1
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2B238B4
|
||||
value_type: uint32
|
||||
value: 0x975EC581
|
||||
## REF: 68 52 40 79 08 79 18 12 68 52 00 79, inside call
|
||||
## B to Code Cave 2
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2B210CC
|
||||
value_type: uint32
|
||||
value: 0x175ECF7F
|
||||
## CODE CAVE 1, offset +0x50 relative to start of previous code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2D4EB8
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x52800022
|
||||
- 0x9001BFC3
|
||||
- 0x393FEC62
|
||||
- 0x17F62A71 # Jump to original BL as B
|
||||
## CODE CAVE 2, offset +0x10 relative to start of previous code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2D4EC8
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x9001BFC3
|
||||
- 0x393FEC60
|
||||
- 0x14A343EC # B nn::oe::SetUserInactivityDetectionTimeExtended(bool)
|
||||
# Adjust DR timing to factor from MAIN + 0x3ACCFF4
|
||||
# REF: 88 02 15 CB 00 01 23 9E
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xEED54
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD001CEE8
|
||||
- 0xBD4FF501
|
||||
# Fix black background for D-pad menu
|
||||
## REF: 21 03 5E BC
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x387390
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x17FD36D1 # Jump to Code Cave 3
|
||||
- 0x1E202008
|
||||
## CODE CAVE 3, offset +0xC relative to start of previous code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2D4ED4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x1E202028
|
||||
- 0x54000101
|
||||
- 0x785FA328
|
||||
- 0x7100151F
|
||||
- 0x540000A1
|
||||
- 0x785F8328
|
||||
- 0x7100151F
|
||||
- 0x54000041
|
||||
- 0x1E2E1008
|
||||
- 0x1F080409
|
||||
- 0x1402C926 # Go back
|
||||
# Default values
|
||||
## FPS Target
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3ACCFFC
|
||||
value_type: float
|
||||
value: 30
|
||||
## Cutscene flag
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3ACCFFB
|
||||
value_type: uint8
|
||||
value: 0
|
||||
## Dynamic Resolution timing factor
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3ACCFF4
|
||||
value_type: float
|
||||
value: 0.001
|
||||
ALL_FPS:
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x3ACCFFC]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x3ACCFF4]
|
||||
value_type: float
|
||||
value: "0.001 * (FPS_TARGET / 30)"
|
||||
-
|
||||
type: compare
|
||||
compare_address: [MAIN, 0x3ACCFFB]
|
||||
compare_value_type: uint8
|
||||
compare_value: 1
|
||||
compare_type: "=="
|
||||
address: [MAIN]
|
||||
value_type: refresh_rate
|
||||
value: 30
|
@ -0,0 +1,170 @@
|
||||
# The Legend of Zelda: Tears of The Kingdom 1.4.0
|
||||
# BID: 6265F94D606242CE
|
||||
|
||||
Addons:
|
||||
- atmosphere/contents/0100F2C0115B6000/exefs/main.npdm
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Remove double buffer
|
||||
## REF: A0 2A 40 F9 61 A2 40 39
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xBD1F08
|
||||
value_type: uint32
|
||||
value: 0x52800021
|
||||
# Code Injected, $x1 + 0xD8 - last frametime without compensation long ticks, $x0 + 0x50 - fps target used for calculatuon int,
|
||||
# $x0 + 0x24 - our fps target used for calculation but as float, originally is stored there 30 FPS int that seems to do nothing outside of this function
|
||||
## MAIN + 0x3ACFFFC = FPS target for reference
|
||||
## REF: nvnWindowSetPresentInterval
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3E0F64
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF001B762
|
||||
- 0xBD4FFC49
|
||||
- 0xAA0003F4
|
||||
- 0xAA0103F5
|
||||
- 0xF9406C20
|
||||
- 0x949F20BE
|
||||
- 0xF0014902
|
||||
- 0xB9480842
|
||||
- 0x1E220042
|
||||
- 0x9E220001
|
||||
- 0x1E211841
|
||||
- 0x1E292020
|
||||
- 0x1E21CD21
|
||||
- 0x1E25D009
|
||||
- 0x1E292020
|
||||
- 0x1E21BD21
|
||||
- 0x1E390022
|
||||
- 0xB9005282
|
||||
- 0xBD002681
|
||||
- 0x1400002B
|
||||
## Use our fps target
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3E082C
|
||||
value_type: uint32
|
||||
value: 0xBD422660
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3E0844
|
||||
value_type: uint32
|
||||
value: 0xD503201F
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x4B4F8C
|
||||
value_type: uint32
|
||||
value: 0xBD4226C0
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x4B4F98
|
||||
value_type: uint32
|
||||
value: 0xD503201F
|
||||
# When prerendered cutscene is active write flag to MAIN + 0x3ACFFFB
|
||||
## REF: 68 52 40 79 08 01 19 32 68 52 00 79
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2B2A608
|
||||
value_type: uint32
|
||||
value: 0x9762DA6E
|
||||
## REF: 68 52 40 79 08 79 18 12 68 52 00 79
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2B27E20
|
||||
value_type: uint32
|
||||
value: 0x1762E46C
|
||||
## CODE CAVE
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3E0FC0
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x52800022
|
||||
- 0xF001B763
|
||||
- 0x393FEC62
|
||||
- 0x14196AF3
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3E0FD0
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF001B763
|
||||
- 0x393FEC60
|
||||
- 0x149F263A
|
||||
# Adjust DR timing to factor from MAIN + 0x3ACFFF4
|
||||
# REF: 0x46823555
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x18CB20
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF001CA08
|
||||
- 0xBD4FF501
|
||||
# Fix black background for D-pad menu
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x5ECA90
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x17F7D153
|
||||
- 0x1E202008
|
||||
## CODE CAVE
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3E0FDC
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x1E202028
|
||||
- 0x54000101
|
||||
- 0x785FA328
|
||||
- 0x7100151F
|
||||
- 0x540000A1
|
||||
- 0x785F8328
|
||||
- 0x7100151F
|
||||
- 0x54000041
|
||||
- 0x1E2E1008
|
||||
- 0x1F080409
|
||||
- 0x14082EA4
|
||||
# Default values
|
||||
## FPS Target
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3ACFFFC
|
||||
value_type: float
|
||||
value: 30
|
||||
## Cutscene flag
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3ACFFFB
|
||||
value_type: uint8
|
||||
value: 0
|
||||
## Dynamic Resolution timing factor
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3ACFFF4
|
||||
value_type: float
|
||||
value: 0.001
|
||||
ALL_FPS:
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x3ACFFFC]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x3ACFFF4]
|
||||
value_type: float
|
||||
value: "0.001 * (FPS_TARGET / 30)"
|
||||
-
|
||||
type: compare
|
||||
compare_address: [MAIN, 0x3ACFFFB]
|
||||
compare_value_type: uint8
|
||||
compare_value: 1
|
||||
compare_type: "=="
|
||||
address: [MAIN]
|
||||
value_type: refresh_rate
|
||||
value: 30
|
@ -0,0 +1,174 @@
|
||||
# The Legend of Zelda: Tears of The Kingdom 1.4.1
|
||||
# BID: 965EAB9CEB8EB867
|
||||
|
||||
Addons:
|
||||
- atmosphere/contents/0100F2C0115B6000/exefs/main.npdm
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Remove double buffer
|
||||
## REF: A0 2A 40 F9 61 A2 40 39
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xBC9088
|
||||
value_type: uint32
|
||||
value: 0x52800021
|
||||
# Code Injected, $x1 + 0xD8 - last frametime without compensation long ticks, $x0 + 0x50 - fps target used for calculatuon int,
|
||||
# $x0 + 0x24 - our fps target used for calculation but as float, originally is stored there 30 FPS int that seems to do nothing outside of this function
|
||||
## MAIN + 0x3ACAFFC = FPS target for reference
|
||||
## REF: nvnWindowSetPresentInterval
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x38A3C4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x9001BA02
|
||||
- 0xBD4FFC49
|
||||
- 0xAA0003F4
|
||||
- 0xAA0103F5
|
||||
- 0xF9406C20
|
||||
- 0x94A066EA # BL nn::os::ConvertToTimeSpan(nn::os::Tick)
|
||||
- 0x52994002
|
||||
- 0x72A77342
|
||||
- 0x1E220042
|
||||
- 0x9E220001
|
||||
- 0x1E211841
|
||||
- 0x1E292020
|
||||
- 0x1E21CD21
|
||||
- 0x1E25D009
|
||||
- 0x1E292020
|
||||
- 0x1E21BD21
|
||||
- 0x1E390022
|
||||
- 0xB9005282
|
||||
- 0xBD002681
|
||||
- 0x1400002B
|
||||
## Use our fps target
|
||||
## REF: 60 52 42 BD 08 4E A8 52
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x389C8C
|
||||
value_type: uint32
|
||||
value: 0xBD422660
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x389CA4
|
||||
value_type: uint32
|
||||
value: 0xD503201F
|
||||
## REF: 14 01 40 F9 08 4E A8 52
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x4916DC
|
||||
value_type: uint32
|
||||
value: 0xBD4226C0
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x4916E8
|
||||
value_type: uint32
|
||||
value: 0xD503201F
|
||||
# When prerendered cutscene is active write flag to MAIN + 0x3ACAFFB
|
||||
## REF: 68 52 40 79 08 01 19 32 68 52 00 79
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2B23988
|
||||
value_type: uint32
|
||||
value: 0x97619AA3
|
||||
## REF: 68 52 40 79 08 79 18 12 68 52 00 79, inside call
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2B211A0
|
||||
value_type: uint32
|
||||
value: 0x1761A4A1
|
||||
## CODE CAVE, offset +0x50 relative to start of previous code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x38A414
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x52800022
|
||||
- 0x9001BA03
|
||||
- 0x393FEC62
|
||||
- 0x141ADBE3
|
||||
## CODE CAVE, offset +0x10 relative to start of previous code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x38A424
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x9001BA03
|
||||
- 0x393FEC60
|
||||
- 0x14A06C69 # B nn::oe::SetUserInactivityDetectionTimeExtended(bool)
|
||||
# Adjust DR timing to factor from MAIN + 0x3ACAFF4
|
||||
# REF: 88 02 15 CB 00 01 23 9E
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x17AC04
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x9001CA88
|
||||
- 0xBD4FF501
|
||||
# Fix black background for D-pad menu
|
||||
## REF: 21 03 5E BC
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x48DDD0
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x17FBF198
|
||||
- 0x1E202008
|
||||
## CODE CAVE, offset +0xC relative to start of previous code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x38A430
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x1E202028
|
||||
- 0x54000101
|
||||
- 0x785FA328
|
||||
- 0x7100151F
|
||||
- 0x540000A1
|
||||
- 0x785F8328
|
||||
- 0x7100151F
|
||||
- 0x54000041
|
||||
- 0x1E2E1008
|
||||
- 0x1F080409
|
||||
- 0x14040E5F
|
||||
# Default values
|
||||
## FPS Target
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3ACAFFC
|
||||
value_type: float
|
||||
value: 30
|
||||
## Cutscene flag
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3ACAFFB
|
||||
value_type: uint8
|
||||
value: 0
|
||||
## Dynamic Resolution timing factor
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3ACAFF4
|
||||
value_type: float
|
||||
value: 0.001
|
||||
ALL_FPS:
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x3ACAFFC]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x3ACAFF4]
|
||||
value_type: float
|
||||
value: "0.001 * (FPS_TARGET / 30)"
|
||||
-
|
||||
type: compare
|
||||
compare_address: [MAIN, 0x3ACAFFB]
|
||||
compare_value_type: uint8
|
||||
compare_value: 1
|
||||
compare_type: "=="
|
||||
address: [MAIN]
|
||||
value_type: refresh_rate
|
||||
value: 30
|
@ -0,0 +1,27 @@
|
||||
# SnowRunner 1.0.40
|
||||
# BID: 54551AEABF6E1F41
|
||||
# Just search for 0x42055555
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect DR frametime target to MAIN+0x30A7F00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x193CEA8
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF000BB4A # adrp x10, #0x30A7000
|
||||
- 0xBD4F0142 # ldr s2, [x10, #0xf00]
|
||||
# default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x30A7F00
|
||||
value_type: float
|
||||
value: 33.3333333333
|
||||
ALL_FPS:
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x30A7F00]
|
||||
value_type: float
|
||||
value: FRAMETIME_TARGET
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user