mirror of
https://github.com/Ultra-NX/UltraNX.git
synced 2025-06-02 09:32:27 +00:00
Compare commits
15 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
d28855fd34 | ||
|
d0b97525a8 | ||
|
bf48033941 | ||
|
9adc60b135 | ||
|
5153b2d17a | ||
|
9d661b1d18 | ||
|
1fc80bcbdb | ||
|
985a53995a | ||
|
4e42f73191 | ||
|
b144b70918 | ||
|
b546edec8f | ||
|
aacfd99915 | ||
|
da2cbbb2f6 | ||
|
9c3765e08c | ||
|
65461efd23 |
31
README.md
31
README.md
@ -8,13 +8,14 @@
|
||||
|
||||
### Ultra - это функциональная кастомная прошивка для Nintendo Switch, с упором в разгон и улучшенный пользовательский опыт.
|
||||
|
||||
### [Ultra 2.3](https://github.com/Ultra-NX/Ultra/releases/latest/) Поддерживает HOS 19.0.1 и все ревизии консолей
|
||||
### [Ultra 2.4](https://github.com/Ultra-NX/UltraNX/releases) Поддерживает HOS 20.0.1 и все ревизии консолей
|
||||
|
||||
|
||||
|
||||
## Особенности Ultra
|
||||
|
||||
* Предварительно настроенный OC Switchcraft (Преемник OC-Suite) с пресетами.
|
||||
* По умолчанию уже есть андервольт, который заметно снижает потребление консоли, и небольшой разгон памяти, который сделает игры плавнее.
|
||||
* Лучший кастомизатор разгона для Свитч - [Ultra-Tuner](https://github.com/Ultra-NX/Ultra/wiki/Tuner-RU#Ultra-Tuner), позволяющий настраивать разгон прямо с консоли. Был первым, и остается неповторимым.
|
||||
* Сборка максимально легкая и не нагруженная. В ней нет лишнего, минимум необходимый для разгона и комфортного использования.
|
||||
* Модульная конструкция. В составе минимум приложений/плагинов/оверлеев, но вы всегда можете поставить еще через [Ultra Tuner](https://github.com/Ultra-NX/Ultra/wiki/Tuner-RU#Updater).
|
||||
@ -23,7 +24,7 @@
|
||||
* DBI с встроенным notUltraNX репозиторием игр, больше не нужно каждый раз искать новый шоп Тинфоила.
|
||||
* Подробная [Wiki](https://github.com/Ultra-NX/Ultra/wiki) в которой есть ответы почти на все вопросы.
|
||||
* [Форки](https://github.com/Ultra-NX/Ultra-Resources/tree/main/patches) (свои модификации) программ и компонентов, нужные для удобства, безопасности и расширения возможностей:
|
||||
* Форк Атмосферы с прописанной версией Ультры в информации о системе, и отключенными репортами, обычно засоряющими сд карту, тратящими ее ресурс и ломающими файловю систему.
|
||||
* Форк Атмосферы с прописанной версией Ультры в информации о системе, и отключенными репортами, обычно засоряющими сд карту, тратящими ее ресурс и ломающими файловую систему. Так же исправлена работа старых форвардеров (важно для хоумбрю игр/эмуляторов).
|
||||
* Форки SaltyNX и FPSLocker, с поддержкой изменения частоты обновления экрана и с поддержкой OLED.
|
||||
* Форк Mission Control, с вырезанной "пасхалкой", делающей джойконы жовто-блакитными.
|
||||
* Форк Status Monitor с отображением текущих вольтажей и уникальными модулями Микро Оверлея, пресеты которых можно менять через Ultra Tuner.
|
||||
@ -35,18 +36,19 @@
|
||||
1. **[Atmosphere](https://github.com/Atmosphere-NX/Atmosphere)** - Atmosphère, кастомная прошивка для Nintendo Switch.
|
||||
1. **[Hekate](https://github.com/CTCaer/hekate)** - Пользовательский графический загрузчик Nintendo Switch, патчер прошивки, инструментарий и многое другое.
|
||||
1. **[Ultra Tuner](https://github.com/Ultra-NX/Ultra-Tuner)** - Пакет для Ultrahand, позволяющий произвести тонкую настройку параметров под свою консоль. В случае нестабильной работы разгона, или при желании увеличить производительность консоли, Ultra Tuner - Ваш незаменимый помощник.
|
||||
1. **[OC-Switchcraft](https://github.com/halop/OC_Toolkit_SC_EOS)**, форк **[OC-Suite](https://github.com/hanai3Bi/Switch-OC-Suite/)** - Лоадер атмосферы с разгоном от B3711, позволяет выжать из N.Switch мощность Xbox One. Вовремя обновляется для поддержки новых возможностей Атмосферы.
|
||||
1. **[OC-Switchcraft](https://github.com/halop/OC-Switchcraft-EOS/releases)**, форк **[OC-Suite](https://github.com/hanai3Bi/Switch-OC-Suite/)** - Лоадер атмосферы с разгоном от B3711, позволяет выжать из N.Switch мощность Xbox One. Вовремя обновляется для поддержки новых возможностей Атмосферы.
|
||||
|
||||
|
||||
1. **Установленные пейлоады**:
|
||||
* [Lockpick_RCM](https://gbatemp.net/download/lockpick_rcm-1-9-13-fw-19-zoria-source.38837) - Программа для снятия ключей консоли.
|
||||
* [Lockpick RCM](https://github.com/impeeza/Lockpick_RCMDecScots) - Программа для снятия ключей консоли.
|
||||
* [TegraExplorer](https://github.com/suchmememanyskill/TegraExplorer) - Низкоуровневый файловый менеджер для работы с системой.
|
||||
|
||||
|
||||
1. **Установленные Homebrew**
|
||||
* [Sphaira](https://github.com/ITotalJustice/sphaira) - Современное Хоумбрю Меню, аналог nx-hbmenu
|
||||
* [AiO Switch Updater](https://github.com/HamletDuFromage/aio-switch-updater) - Программа для обновления Ultra до актуальной версии, а так же для скачивания читов.
|
||||
* [Daybreak](https://github.com/Atmosphere-NX/Atmosphere) - Программа для обновления системного ПО.
|
||||
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1120#entry86288632) - Лучший файловый менеджер, менеджер сохранений и установщик программ на консоль. Если вам нужна другая локализация - в [Updater](https://github.com/Ultra-NX/Ultra/wiki/Tuner-RU#Updater) есть выбор из EN-RU-PTBR-ZHCN.
|
||||
* [DBI](https://4pda.to/forum/index.php?showtopic=939714&st=1120#entry86288632) - Лучший файловый менеджер, менеджер сохранений и установщик программ на консоль.
|
||||
|
||||
|
||||
1. **Установленные модули**
|
||||
@ -62,29 +64,34 @@
|
||||
- [FPSLocker](https://github.com/masagrator/FPSLocker) - Оверлей, позволяющий разблокировать 60 FPS в играх.
|
||||
- [EdiZon](https://github.com/proferabg/EdiZon-Overlay) - Оверлей для использования читов.
|
||||
- [ReverseNX-RT](https://github.com/masagrator/ReverseNX-RT) - Оверлей для управления ReverseNX.
|
||||
- [Sysmodules](https://github.com/WerWolv/ovl-sysmodules/) - Оверлей для включения и отключения установленных системных модулей.
|
||||
- [Sysmodules](https://github.com/ppkantorski/ovl-sysmodules) - Оверлей для включения и отключения установленных системных модулей.
|
||||
|
||||
|
||||
1. **Доступные для скачивания через [Updater](https://github.com/Ultra-NX/Ultra/wiki/Tuner-RU#Updater)**
|
||||
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 или обновить имеющийся.
|
||||
* [Linkalho](https://gbatemp.net/download/linkalho.38822) - Программа для привязки аккаунта.
|
||||
* [Tinfoil](https://tinfoil.io) - Установщик и каталог игр.
|
||||
* [HB App Store](https://github.com/fortheusers/hb-appstore) - Бесплатный магазин для скачивания Homebrew приложений.
|
||||
* [PPSSPP](https://gbatemp.net/threads/ppsspp-switch-standalone-beta.544071/post-10492671) - Эмулятор PSP.
|
||||
* [Moonlight](https://github.com/XITRIX/Moonlight-Switch) - Клиент Moonlight, позволяет транслировать на консоль игры с PC.
|
||||
* [ThemezerNX](https://github.com/suchmememanyskill/themezer-nx) + [NXThemes Installer](https://github.com/exelix11/SwitchThemeInjector) + [Theme Patches](https://github.com/exelix11/theme-patches) - Поиск и установка тем на свитч.
|
||||
* [ReverseNX Tool](https://github.com/masagrator/ReverseNX-Tool) - Программа для управления ReverseNX.
|
||||
* [Battery Desync Fix](https://github.com/CTCaer/battery_desync_fix_nx) - Программа для сброса контроллера батареи. Не используйте просто так!
|
||||
* [MemToolkitNX](https://discord.com/channels/854839758815363072/1173171845139288114/1276196700750479480) - Бенчмарк и Тестер памяти. Результат сильно зависит от разгона CPU.
|
||||
* [MemToolkitNX](https://discord.com/channels/854839758815363072/1173171845139288114/1324099100202766408) - Бенчмарк и Тестер памяти. Результат сильно зависит от разгона CPU.
|
||||
* [MemToolkitNX OLD](https://discord.com/channels/854839758815363072/1173171845139288114/1276196700750479480) - Бенчмарк и Тестер памяти. Результат сильно зависит от разгона CPU. Старая версия, которая многим нравится больше новой.
|
||||
* [MicroMemBench](https://github.com/rashevskyv/4IFIR) - Бенчмарк. Результат сильно зависит от разгона CPU. Версия из Чифира которая в реальном времени тестирует CPU Copy, что позволяет быстро узнать результат после изменения таймингов.
|
||||
|
||||
* Overlays:
|
||||
* [Status Monitor Ultra](https://github.com/Ultra-NX/Status-Monitor-Overlay) - Форк Status Monitor для UltraNX, поддерживает много пресетов Micro-оверлея, и обладает рядом уникальных фишек.
|
||||
* [Tetris](https://github.com/ppkantorski/Tetris-Overlay) - Та самая игра в виде оверлея. Работает только на последних версиях Ultrahand.
|
||||
* [BT Audio](https://github.com/masagrator/BT_Audio-ovl) - Оверлей, позволяющий быстро отключаться/подключаться к bluetooth-гарнитуре.
|
||||
* [MasterVolume](https://github.com/averne/MasterVolume) - Регулировка глобальной громкости, позволяет поднять громкость выше максимума. Использовать аккуратно!
|
||||
* [NX-FanControl](https://github.com/Zathawo/NX-FanControl) - Модуль для ручной регулировки оборотов кулера. Изменения применяются сразу, модуль смотрит на температуру SOC а не Skin, как Атмосфера.
|
||||
* [BT Audio](https://github.com/masagrator/BT_Audio-ovl) - Оверлей, позволяющий быстро отключаться/подключаться к bluetooth-гарнитуре.
|
||||
* [Fizeau](https://github.com/averne/Fizeau) - Модуль для изменения цветового профиля экрана.
|
||||
* [sys-tune](https://github.com/HookedBehemoth/sys-tune) - Оверлей-музыкальный плеер, работает в фоне.
|
||||
|
||||
* Other:
|
||||
* [FPSLocker Patches](https://github.com/masagrator/FPSLocker-Warehouse) - Патчи для FPSLocker, что бы не качать отдельно патч для каждой игры через оверлей.
|
||||
* [DVR Patches](https://github.com/exelix11/dvr-patches) - Патчи SysDVR, работают и без системного модуля, активируя фоновую запись в играх, где это изначально запрещено.
|
||||
* [TriPlayer](https://github.com/DefenderOfHyrule/TriPlayer) - Хоумбрю-музыкальный плеер, который работает через системный модуль, и может сворачиваться, работая в фоне.
|
||||
* [sys-ftpd](https://github.com/tomvita/sys-ftpd-light) - FTP сервер, работающий на фоне.
|
||||
|
||||
|
||||
|
@ -6,13 +6,14 @@
|
||||
#
|
||||
### Ultra is a functional custom firmware for Nintendo Switch, with a focus on overclocking and an improved user experience.
|
||||
|
||||
### [Ultra 2.3](https://github.com/Ultra-NX/Ultra/releases/latest/) Supports HOS 19.0.1 and all console revisions
|
||||
### [Ultra 2.4](https://github.com/Ultra-NX/UltraNX/releases) Supports HOS 20.0.1 and all console revisions
|
||||
|
||||
|
||||
|
||||
## Features of Ultra
|
||||
|
||||
* Pre-configured OC Switchcraft (Successor to OC-Suite) with presets.
|
||||
* By default, there's already an undervolt that noticeably reduces the console's consumption, and a slight memory overclock that will make games smoother.
|
||||
* The best overclocking customizer for Switch - Ultra-Tuner, that allows you to customize overclocking right from the console. It was the first, and remains unique.
|
||||
* The CFW is as light as possible. There are no unnecessary things in it, only minimum necessary for overclocking and comfortable use.
|
||||
* Modular design. A minimum of applications/plugins/overlays are included, but you can always add more via the Ultra Tuner.
|
||||
@ -31,18 +32,19 @@
|
||||
1. **[Atmosphere](https://github.com/Atmosphere-NX/Atmosphere)** - Atmosphère, custom firmware for the Nintendo Switch.
|
||||
1. **[Hekate](https://github.com/CTCaer/hekate)** - Custom Nintendo Switch graphical bootloader, firmware patcher, toolkit and more.
|
||||
1. **[Ultra Tuner](https://github.com/Ultra-NX/Ultra-Tuner)** - Package for Ultrahand, which allows you to fine-tune the OC parameters for your console. In case of unstable overclocking, or if you want to increase the performance of your console, Ultra Tuner is your indispensable assistant.
|
||||
1. **[OC-Switchcraft](https://github.com/halop/OC_Toolkit_SC_EOS)**, a fork of **[OC-Suite](https://github.com/hanai3Bi/Switch-OC-Suite/)** - Atmosphere Loader with overclocking from B3711, allows you to reach from N.Switch power Xbox One. Updated in time to support new Atmosphere features.
|
||||
1. **[OC-Switchcraft](https://github.com/halop/OC-Switchcraft-EOS/releases)**, a fork of **[OC-Suite](https://github.com/hanai3Bi/Switch-OC-Suite/)** - Atmosphere Loader with overclocking from B3711, allows you to reach from N.Switch power Xbox One. Updated in time to support new Atmosphere features.
|
||||
|
||||
|
||||
1. **Installed Payloads**:
|
||||
* [Lockpick_RCM](https://gbatemp.net/download/lockpick_rcm-1-9-13-fw-19-zoria-source.38837/) - Program for dumping console keys.
|
||||
* [Lockpick RCM](https://github.com/impeeza/Lockpick_RCMDecScots) - Program for dumping console keys.
|
||||
* [TegraExplorer](https://github.com/suchmememanyskill/TegraExplorer) - A low-level file manager for working with the system.
|
||||
|
||||
|
||||
1. **Installed Homebrew**
|
||||
* [Sphaira](https://github.com/ITotalJustice/sphaira) - Modern Homebrew Menu, analogous to nx-hbmenu
|
||||
* [AiO Switch Updater](https://github.com/HamletDuFromage/aio-switch-updater) - Program to update Ultra to the current version, as well as to download cheats.
|
||||
* [Daybreak](https://github.com/Atmosphere-NX/Atmosphere) - A program for updating OS.
|
||||
* [DBI](https://github.com/rashevskyv/dbi) - The best file manager, save manager and program installer on the console. If you need a different localization - Updater has a choice of EN-RU-PTBR-ZHCN.
|
||||
* [DBI](https://github.com/rashevskyv/dbi) - The best file manager, save manager and program installer on the console.
|
||||
|
||||
|
||||
1. **Installed Modules**
|
||||
@ -58,32 +60,35 @@
|
||||
- [FPSLocker](https://github.com/masagrator/FPSLocker) - An overlay that allows you to unlock 60 FPS in games.
|
||||
- [EdiZon](https://github.com/proferabg/EdiZon-Overlay) - An overlay for using cheats.
|
||||
- [ReverseNX-RT](https://github.com/masagrator/ReverseNX-RT) - ReverseNX control overlay.
|
||||
- [Sysmodules](https://github.com/WerWolv/ovl-sysmodules/) - Overlay for enabling and disabling installed system modules.
|
||||
- [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.
|
||||
* [Linkalho](https://gbatemp.net/download/linkalho.38822/) - Account linking program.
|
||||
* [Tinfoil](https://tinfoil.io) - Installer and game store.
|
||||
* [HB App Store](https://github.com/fortheusers/hb-appstore) - A free store for downloading Homebrew apps.
|
||||
* [PPSSPP](https://gbatemp.net/threads/ppsspp-switch-standalone-beta.544071/post-10492671) - PSP emulator.
|
||||
* [Moonlight](https://github.com/XITRIX/Moonlight-Switch) - Moonlight client, allows to stream games from PC.
|
||||
* [ThemezerNX](https://github.com/suchmememanyskill/themezer-nx) + [NXThemes Installer](https://github.com/exelix11/SwitchThemeInjector) + [Theme Patches](https://github.com/exelix11/theme-patches) - Searching and installing themes on Switch.
|
||||
* [ReverseNX Tool](https://github.com/masagrator/ReverseNX-Tool) - ReverseNX control program.
|
||||
* [Battery Desync Fix](https://github.com/CTCaer/battery_desync_fix_nx) - Program to reset the battery controller. Do not use unnecessarily!
|
||||
* **`MemToolkitNX`** - Benchmark and Memory Tester. The result is highly dependent on CPU overclocking.
|
||||
* [MemToolkitNX](https://discord.com/channels/854839758815363072/1173171845139288114/1324099100202766408) - Benchmark and Memory Tester. The result is highly dependent on CPU overclocking.
|
||||
* [MemToolkitNX OLD](https://discord.com/channels/854839758815363072/1173171845139288114/1276196700750479480) - Benchmark and Memory Tester. The result is highly dependent on CPU overclocking. The old version, which many people like better than the new one.
|
||||
* [MicroMemBench](https://github.com/rashevskyv/4IFIR) - Benchmark. The result is highly dependent on CPU overclocking. A version from 4ifir that tests CPU Copy in real time, which allows you to quickly find out the result after changing timings.
|
||||
|
||||
* Overlays:
|
||||
* [Status Monitor Ultra](https://github.com/Ultra-NX/Status-Monitor-Overlay) - Status Monitor fork for UltraNX, supports many Micro-overlay presets, and has a number of unique features.
|
||||
* [Tetris](https://github.com/ppkantorski/Tetris-Overlay/) - "That" game in the form of an overlay. Works only on the latest versions of Ultrahand.
|
||||
* [BT Audio](https://github.com/masagrator/BT_Audio-ovl) - An overlay that allows you to quickly disconnect/connect to a bluetooth headset.
|
||||
* [MasterVolume](https://github.com/averne/MasterVolume) - Global volume control, allows you to raise the volume above the maximum. Use with care!
|
||||
* [NX-FanControl](https://github.com/Zathawo/NX-FanControl) - Module for manually adjusting the speed of the cooler. The changes are applied immediately, the module works from SOC temperature and not Skin temperature like Atmosphere.
|
||||
* [BT Audio](https://github.com/masagrator/BT_Audio-ovl) - An overlay that allows you to quickly disconnect/connect to a bluetooth headset.
|
||||
* [Fizeau](https://github.com/averne/Fizeau) - Module for changing the screen color profile.
|
||||
* [sys-tune](https://github.com/HookedBehemoth/sys-tune) - Overlay music player, works in background.
|
||||
|
||||
* Other:
|
||||
* [FPSLocker Patches](https://github.com/masagrator/FPSLocker-Warehouse) - Patches for FPSLocker, so you don't have to download a separate patch for each game through the overlay.
|
||||
* [DVR Patches](https://github.com/exelix11/dvr-patches) - SysDVR patches, work without the system module, activating background recording in games where it is initially prohibited.
|
||||
* [TriPlayer](https://github.com/DefenderOfHyrule/TriPlayer) - A homebrew music player that runs through the system module, and can minimize while running in the background.
|
||||
* [sys-ftpd](https://github.com/tomvita/sys-ftpd-light) - FTP server running in background.
|
||||
* [sys-ftpd](https://github.com/cathery/sys-ftpd) - FTP server running in background.
|
||||
|
||||
|
||||
|
||||
|
@ -49,4 +49,8 @@ X0100964012528000
|
||||
|
||||
;Donkey Kong Country: Tropical Freeze
|
||||
;Crash at second level
|
||||
X0100C1F0051B6000
|
||||
X0100C1F0051B6000
|
||||
|
||||
;Death Road to Canada
|
||||
;1.0.8 crash
|
||||
X0100423009358000
|
||||
|
@ -0,0 +1,27 @@
|
||||
# Horizon Chase 2 1.6.9
|
||||
# BID: E13F632FC2A66EEB
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x8349850, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8B36A30, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8B11598, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Gori: Cuddly Carnage 1.0.7
|
||||
# BID: A21FFE97D09DCE4E
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x6A02E68, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x6A3C938, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x6245AA8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,33 @@
|
||||
# Jujutsu Kaisen Cursed Clash US 1.4.0
|
||||
# BID: 7C724F497564C027
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8458A48, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x849BF50, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x77DD548, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
# Disable bUseFixedFrameRate
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x849B7A8, 0x9C4]
|
||||
value_type: uint32
|
||||
value: 7
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,22 @@
|
||||
# Gal*Gun Returns 1.0.4
|
||||
# BID: 7E65E5BC3564BE46
|
||||
# Buffers are hardcoded into fixed size class, so it's hard to get triple buffer
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# FPS Target + FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x16CE8A8, 0x20]
|
||||
value_type: float
|
||||
value: "60 / FPS_TARGET"
|
||||
# Lipsync fix
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1BA0A1C]
|
||||
value_type: uint32
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,36 @@
|
||||
# Tiebreak+: Official Game of the ATP and WTA 1.1.0
|
||||
# BID: 2A5244CCB17B44AC
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Triple buffer
|
||||
# REF: 00 40 00 00 00 04 00 00 00 88 00 00 02 00 00 00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1A81E6C
|
||||
value_type: uint32
|
||||
value: 3
|
||||
# Redirect Dynamic Resolution target reading to MAIN + 0x30C2F00
|
||||
# REF: 0C 9A 88 52 0C 6B A7 72
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x147AA94
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x9000E248 # ADRP X8, 0x30C2000
|
||||
- 0xBD4F0103 # LDR S3, [X8, 0xF00]
|
||||
- 0xD503201F # NOP
|
||||
## Default values
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x30C2F00
|
||||
value_type: float
|
||||
value: 0.03333333333
|
||||
ALL_FPS:
|
||||
# Adjust Dynamic Resolution target, we are using this trick because function is overengineered and it's not easy to just use standard 1 / FPS_TARGET
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x30C2F00]
|
||||
value_type: float
|
||||
value: "0.8 / FPS_TARGET"
|
@ -0,0 +1,30 @@
|
||||
# S.T.A.L.K.E.R.: Call of Prypiat 1.0.3
|
||||
# BID: AD4CBC4878008E1E
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# psLoadedFrameLimitFps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x17F9784]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
# psCurrentFrameLimitFps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x18168A0]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
# psCurrentFrameLimitMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1A8490C]
|
||||
value_type: float
|
||||
value: "1000 / FPS_LOCK_TARGET"
|
||||
# ResolutionInfo::sDynresGPUBudgetMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x17F9760]
|
||||
value_type: float
|
||||
value: "FRAMETIME_TARGET - (1/30)"
|
@ -0,0 +1,30 @@
|
||||
# S.T.A.L.K.E.R.: Call of Prypiat 1.0.2
|
||||
# BID: BBA39C65C1CC6463
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# psLoadedFrameLimitFps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x17F9784]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
# psCurrentFrameLimitFps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x18168A0]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
# psCurrentFrameLimitMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1A8490C]
|
||||
value_type: float
|
||||
value: "1000 / FPS_LOCK_TARGET"
|
||||
# ResolutionInfo::sDynresGPUBudgetMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x17F9760]
|
||||
value_type: float
|
||||
value: "0.99 * FRAMETIME_TARGET"
|
@ -0,0 +1,27 @@
|
||||
# SWORD ART ONLINE Fractured Daydream JAP 1.2.2
|
||||
# BID: 012A8C2C413E79B8
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8F57748, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8F92210, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x8791EC8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# SWORD ART ONLINE Fractured Daydream JAP 1.2.1
|
||||
# BID: 26C1E658E9B5B612
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8F41748, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8F7C210, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x877BEC8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# SWORD ART ONLINE Fractured Daydream JAP 1.1.3
|
||||
# BID: 3889588A60E1F399
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8EA4728, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8EDF1F0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x86DEEC8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# SWORD ART ONLINE Fractured Daydream JAP 1.2.0
|
||||
# BID: 46094C03E2EC668B
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8F3C748, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8F77210, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x8776EC8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# SWORD ART ONLINE Fractured Daydream JAP 1.1.2
|
||||
# BID: 520620FBA0B196A3
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8E95728, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8ED01F0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x86CFEC8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# SWORD ART ONLINE Fractured Daydream JAP 1.3.0
|
||||
# BID: C2F2C4B700B30598
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8FD6748, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x9011290, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x8810F08, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Breathedge 1.0.2
|
||||
# BID: B26DE1669B729335
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# Disable bUseFixedFrameRate
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x55CB668, 0x7F0]
|
||||
value_type: uint32
|
||||
value: 7
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x55CBDE0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x4E6A7B8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,24 @@
|
||||
# Chernobylite 1.1
|
||||
# BID: 2D2065AEBF94F9AE
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x641EAB8, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x644C838, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x5C83700, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
@ -0,0 +1,24 @@
|
||||
# Chernobylite 1.2
|
||||
# BID: 657F40EEBD955F31
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x641EAB8, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x644C838, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x5C83700, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
@ -0,0 +1,12 @@
|
||||
# DreadOut Remastered Collection 1.0.2
|
||||
# BID: 725731C74E4CA6A9
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# REF: DynamicResolution::.cctor
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x3E01640, 0, 0xB8, 8]
|
||||
value_type: double
|
||||
value: [FPS_TARGET, FRAMETIME_TARGET]
|
@ -1,7 +1,6 @@
|
||||
# SONIC FORCES 1.1.0
|
||||
# BID: 6D9EA94F8AAC00A8
|
||||
# Game speed is tied to framerate
|
||||
# Above 30 FPS level 8 is harder to beat and level 20 impossible to beat
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
@ -12,10 +11,27 @@ MASTER_WRITE:
|
||||
main_offset: 0xAD40FC
|
||||
value_type: uint32
|
||||
value: 0x52800068
|
||||
# Block switching back to 30 FPS mode on loading screens
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6173B0
|
||||
value_type: uint32
|
||||
value: 0xD503201F
|
||||
ALL_FPS:
|
||||
# FPS target (FPS * 2)
|
||||
# Switch to 60 FPS Mode
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x1CAC518, 0x28, 0x20, 0x14]
|
||||
value_type: uint32
|
||||
value: 1
|
||||
# FPS target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1C38C28, 0x1C]
|
||||
value_type: float
|
||||
value: "FPS_TARGET * 2"
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1C38C28, 0x14C]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
@ -1,7 +1,6 @@
|
||||
# SONIC FORCES 1.1.0
|
||||
# BID: 6D9EA94F8AAC00A8
|
||||
# Game speed is tied to framerate
|
||||
# Above 30 FPS level 8 is harder to beat and level 20 impossible to beat
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
@ -12,10 +11,27 @@ MASTER_WRITE:
|
||||
main_offset: 0xAD40FC
|
||||
value_type: uint32
|
||||
value: 0x52800068
|
||||
# Block switching back to 30 FPS mode on loading screens
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6173B0
|
||||
value_type: uint32
|
||||
value: 0xD503201F
|
||||
ALL_FPS:
|
||||
# FPS target (FPS * 2)
|
||||
# Switch to 60 FPS Mode
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x1CAC518, 0x28, 0x20, 0x14]
|
||||
value_type: uint32
|
||||
value: 1
|
||||
# FPS target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1C38C28, 0x1C]
|
||||
value_type: float
|
||||
value: "FPS_TARGET * 2"
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1C38C28, 0x14C]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
@ -0,0 +1,27 @@
|
||||
# Grand Theft Auto: Vice City - Definitive Edition 1.0.8
|
||||
# BID: 9151E53EE514B03A
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget (Default is 36.5 ms)
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7608988, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x762D640, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x6E7AA00, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -8,17 +8,17 @@ ALL_FPS:
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1D15228]
|
||||
value_type: int32
|
||||
value: [FPS_LOCK_TARGET, "1"]
|
||||
value: [FPS_LOCK_TARGET, VSYNC_TARGET]
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1D28CB8]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: write
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x2A88DC0]
|
||||
value_type: int32
|
||||
value: 0
|
||||
value: "VSYNC_TARGET - 1"
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
|
@ -0,0 +1,27 @@
|
||||
# Goat Simulator 3 1.0.7.7
|
||||
# BID: 504EBEAB62E802AD
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x99DC468, 0]
|
||||
value_type: float
|
||||
value: ["0.81 * FRAMETIME_TARGET", "0.81 * FRAMETIME_TARGET"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x9A02290, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x920CBF8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Goat Simulator 3 1.0.7.6
|
||||
# BID: 8D4FD57DB7D63120
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x99DD468, 0]
|
||||
value_type: float
|
||||
value: ["0.81 * FRAMETIME_TARGET", "0.81 * FRAMETIME_TARGET"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x9A03290, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x920DB48, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Goat Simulator 3 1.0.7.5
|
||||
# BID: C606C7DC1C0EC88F
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x954E2F8, 0]
|
||||
value_type: float
|
||||
value: ["0.81 * FRAMETIME_TARGET", "0.81 * FRAMETIME_TARGET"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x9573F60, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x8D7E218, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -1,4 +1,4 @@
|
||||
# Farming Simulator 23 Nintendo Switch Edition 1.6.0.0
|
||||
# Farming Simulator 23 Nintendo Switch Edition 1.6.0.0/1.7.0.0
|
||||
# BID: 17F37A56B17DD9CC
|
||||
|
||||
unsafeCheck: true
|
||||
|
@ -0,0 +1,51 @@
|
||||
# Momotaro Dentetsu: Showa, Heisei, Reiwa mo Teiban! Asia Edition 1.0.1
|
||||
# BID: B2D4462B71536EC6
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Remove double buffer
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1B630
|
||||
value_type: uint32
|
||||
value: 0x52800061
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x5774C
|
||||
value_type: uint32
|
||||
value: 0x52800061
|
||||
ALL_FPS:
|
||||
# REF: 20 59 60 BC
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xFF7090]
|
||||
value_type: float
|
||||
value: [FPS_TARGET, "60 / FPS_TARGET"]
|
||||
# Blocking game to max 60 FPS because setting game speed ratio below 1 causes glitches
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_address: [MAIN, 0xFF7090]
|
||||
compare_type: ">"
|
||||
compare_value_type: float
|
||||
compare_value: 60
|
||||
address: [MAIN, 0xFF7090]
|
||||
value_type: float
|
||||
value: 60
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_address: [MAIN, 0xFF7090]
|
||||
compare_type: "=="
|
||||
compare_value_type: float
|
||||
compare_value: 60
|
||||
address: [MAIN, 0xFF7094]
|
||||
value_type: float
|
||||
value: 1
|
||||
# Unknown value that is set based on FPS Lock function argument, 0 = 60 FPS, 1 = 30 FPS, 2 = 20 FPS, 3 = 15 FPS
|
||||
# According to IDA is not used at all, but writing this anyway
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x10D8028]
|
||||
value_type: uint32
|
||||
value: "VSYNC_TARGET - 1"
|
@ -0,0 +1,27 @@
|
||||
# Session: Skate Sim 1.1.4
|
||||
# BID: F327FFD8C2E85895
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7247868, 0]
|
||||
value_type: float
|
||||
value: ["FRAMETIME_TARGET", "FRAMETIME_TARGET"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7275438, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x6A7A668, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Gal*Gun 2 1.0.4
|
||||
# BID: 9CDFB0CD24CAE030
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x4346990, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x44E6DA8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# Disable custom FPS Lock
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x44E6030, 0x764]
|
||||
value_type: float
|
||||
value: 0
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# GUNDAM BREAKER 4 1.9.0
|
||||
# BID: 0CC82881FF112C6D
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x9F98D48, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x9FC67E8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x97CADA8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# GUNDAM BREAKER 4 1.12.0
|
||||
# BID: 0FF5CF27929E07F9
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xA080D48, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xA0AE7E8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x98B2D28, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# GUNDAM BREAKER 4 1.10.0
|
||||
# BID: 6267E76E9540F2ED
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x9FA2D48, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x9FD07E8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x97D4E48, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# GUNDAM BREAKER 4 1.11.0
|
||||
# BID: E82F8A34CCC706E7
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xA03AD48, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xA0687E8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x986C958, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,30 @@
|
||||
# S.T.A.L.K.E.R.: Clear Sky 1.0.2
|
||||
# BID: 227837B490A51033
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# psLoadedFrameLimitFps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x17D4774]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
# psCurrentFrameLimitFps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x17F18E8]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
# psCurrentFrameLimitMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1A5F36C]
|
||||
value_type: float
|
||||
value: "1000 / FPS_LOCK_TARGET"
|
||||
# ResolutionInfo::sDynresGPUBudgetMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x17D4750]
|
||||
value_type: float
|
||||
value: "0.99 * FRAMETIME_TARGET"
|
@ -0,0 +1,30 @@
|
||||
# S.T.A.L.K.E.R.: Clear Sky 1.0.3
|
||||
# BID: C7E4E6F4167C8E3A
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# psLoadedFrameLimitFps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x17D4774]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
# psCurrentFrameLimitFps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x17F18E8]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
# psCurrentFrameLimitMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1A5F36C]
|
||||
value_type: float
|
||||
value: "1000 / FPS_LOCK_TARGET"
|
||||
# ResolutionInfo::sDynresGPUBudgetMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x17D4750]
|
||||
value_type: float
|
||||
value: "FRAMETIME_TARGET - (1/30)"
|
@ -4,25 +4,40 @@
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Remove FPS Lock
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x4835A4
|
||||
value_type: uint32
|
||||
value: 0xD503201F
|
||||
ALL_FPS:
|
||||
# Switch game to 60 FPS mode
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0xF0043C]
|
||||
value_type: uint32
|
||||
value: 1
|
||||
# FPS Target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xED96A8, 0x30]
|
||||
value_type: uint64
|
||||
value: "(FRAMETIME_TARGET / 2) * 19200"
|
||||
value_type: uint32
|
||||
value: "19200000 / FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xED96A8, 0x28]
|
||||
value_type: uint32
|
||||
value: "1920000 / FPS_TARGET"
|
||||
# FPS 2D Game Speed Target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xEFFC60, 0x30]
|
||||
value_type: float
|
||||
value: "0.5 / FPS_TARGET"
|
||||
value: "1 / FPS_TARGET"
|
||||
# FPS 3D Game Speed Target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xEFFC60, 0x50]
|
||||
value_type: float
|
||||
value: "0.5 / FPS_TARGET"
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
value: "1 / FPS_TARGET"
|
||||
|
@ -0,0 +1,27 @@
|
||||
# Expeditions: A Mudrunner Game 1.14.0.0
|
||||
# BID: 08C88691FFA5407C
|
||||
# REF: 01 04 0C 5E 00 10 2E 1E
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect DR frametime target to MAIN+0x36AEF00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1718A64
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD000FCAC # adrp x12, #0x36AE000
|
||||
- 0xBD4F0182 # ldr s2, [x12, #0xf00]
|
||||
# default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x36AEF00
|
||||
value_type: float
|
||||
value: 33.3333333333
|
||||
ALL_FPS:
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x36AEF00]
|
||||
value_type: float
|
||||
value: FRAMETIME_TARGET
|
@ -0,0 +1,27 @@
|
||||
# Expeditions: A Mudrunner Game 1.12.0.0
|
||||
# BID: 225B47BDEC7C2D4E
|
||||
# REF: 01 04 0C 5E 00 10 2E 1E
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect DR frametime target to MAIN+0x3623F00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x16AB5C0
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x9000FBCC
|
||||
- 0xBD4F0182
|
||||
# default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3623F00
|
||||
value_type: float
|
||||
value: 33.3333333333
|
||||
ALL_FPS:
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x3623F00]
|
||||
value_type: float
|
||||
value: FRAMETIME_TARGET
|
@ -0,0 +1,27 @@
|
||||
# Expeditions: A Mudrunner Game 1.16.0.0
|
||||
# BID: 3DCE80782561A0CA
|
||||
# REF: 01 04 0C 5E 00 10 2E 1E
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect DR frametime target to MAIN+0x36B4F00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x171E454
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD000FCAC # adrp x12, #0x36B4000
|
||||
- 0xBD4F0182 # ldr s2, [x12, #0xf00]
|
||||
# default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x36B4F00
|
||||
value_type: float
|
||||
value: 33.3333333333
|
||||
ALL_FPS:
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x36B4F00]
|
||||
value_type: float
|
||||
value: FRAMETIME_TARGET
|
@ -0,0 +1,27 @@
|
||||
# Expeditions: A Mudrunner Game 1.13.0.0
|
||||
# BID: ED20E42E41B58D88
|
||||
# REF: 01 04 0C 5E 00 10 2E 1E
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect DR frametime target to MAIN+0x3628F00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x16AFA80
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB000FBCC # adrp x12, #0x3628000
|
||||
- 0xBD4F0182 # ldr s2, [x12, #0xf00]
|
||||
# default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3628F00
|
||||
value_type: float
|
||||
value: 33.3333333333
|
||||
ALL_FPS:
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x3628F00]
|
||||
value_type: float
|
||||
value: FRAMETIME_TARGET
|
@ -0,0 +1,33 @@
|
||||
# Jujutsu Kaisen Cursed Clash JP 1.4.0
|
||||
# BID: 7C724F497564C027
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8458A48, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x849BF50, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x77DD548, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
# Disable bUseFixedFrameRate
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x849B7A8, 0x9C4]
|
||||
value_type: uint32
|
||||
value: 7
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,21 @@
|
||||
# The Bridge Curse 2: The Extrication 1.0.1
|
||||
# BID: B7F344920B6D140E
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x5DB8968, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x65B48B8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,12 @@
|
||||
# ABYSS SEEKER――What Do You See Deep in Abyss 1.1.0.012
|
||||
# BID: C17F9C48EEFAB9DF
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# UnityEngine.Time::fixedDeltaTime
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7B48F40, 0x48]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
@ -0,0 +1,12 @@
|
||||
# ABYSS SEEKER――What Do You See Deep in Abyss 1.2.0.020
|
||||
# BID: FE67FB035271B5E4
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# UnityEngine.Time::fixedDeltaTime
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7B62100, 0x48]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
@ -0,0 +1,12 @@
|
||||
# Shadowverse: Champion's Battle 1.3.0
|
||||
# BID: 1F936E043FB8C349
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# UnityEngine.Time::fixedDeltaTime
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x64DB5C0, 0x48]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
@ -0,0 +1,60 @@
|
||||
# Amnesia Collection 1.3.0
|
||||
# BID: F6FB99E54347E740
|
||||
# Double buffer is hardcoded line by line, it's hard to make it triple
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect FPS Lock and Dynamic Resolution target values to MAIN + 0x21036F00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x13281C
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x90107828 # ADRP X8, 0x21036000
|
||||
- 0xF9478108 # LDR X8, [X8, 0xF00]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x3E324C
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF0106288 # ADRP X8, 0x21036000
|
||||
- 0xF9478108 # LDR X8, [X8, 0xF00]
|
||||
# NOP updating Dynamic Resolution target value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2D94E8
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0106AE9 # ADRP X9, 0x21036000
|
||||
- 0xB94F0929 # LDR W9, [X9, 0xF08]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x597C5C
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF01054E9 # ADRP X9, 0x21036000
|
||||
- 0xB94F0929 # LDR W9, [X9, 0xF08]
|
||||
# Default values
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x21036F00
|
||||
value_type: double
|
||||
value: 0.03333333333333333
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x21036F08
|
||||
value_type: float
|
||||
value: 33.333333333333
|
||||
ALL_FPS:
|
||||
# FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x21036F00]
|
||||
value_type: double
|
||||
value: "1 / FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x21036F08]
|
||||
value_type: float
|
||||
value: FRAMETIME_TARGET
|
@ -3,22 +3,6 @@
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect reading DR timing in DynamicResolution::UpdateResolution() to MAIN + 0xC88AF00
|
||||
# only for handheld (default handheld: 31.25 ms, docked: 46.875 ms - probably to block DR from working without disabling it)
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x74F5118
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0029CA8
|
||||
- 0xB94F0108
|
||||
# Default handheld value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xC88AF00
|
||||
value_type: uint32
|
||||
value: 600000
|
||||
ALL_FPS:
|
||||
# fixedDeltaTime = 1/FPS
|
||||
-
|
||||
@ -31,9 +15,3 @@ ALL_FPS:
|
||||
address: [MAIN, 0xC809DA0, 0x100]
|
||||
value_type: float
|
||||
value: 0.0666666666
|
||||
# Dynamic Resolution Timing = (0.9375/FPS) * 19200000
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xC88AF00]
|
||||
value_type: uint32
|
||||
value: "(0.9375 / FPS_TARGET) * 19200000"
|
||||
|
@ -0,0 +1,17 @@
|
||||
# MEGATON MUSASHI W: WIRED 3.2.2
|
||||
# BID: 1EC3E6373D7DA9A6
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# fixedDeltaTime = 1/FPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCAC9F20, 0x48]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
||||
- # maximumDeltaTime = 1/15 (with this setting game will slow down below 15 FPS instead of 30 FPS)
|
||||
type: write
|
||||
address: [MAIN, 0xCAC9F20, 0x100]
|
||||
value_type: float
|
||||
value: 0.0666666666
|
@ -3,22 +3,6 @@
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect reading DR timing in DynamicResolution::UpdateResolution() to MAIN + 0xC8C2F00
|
||||
# only for handheld (default handheld: 31.25 ms, docked: 46.875 ms - probably to block DR from working without disabling it)
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x74BF438
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF002A008
|
||||
- 0xB94F0108
|
||||
# Default handheld value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xC8C2F00
|
||||
value_type: uint32
|
||||
value: 600000
|
||||
ALL_FPS:
|
||||
# fixedDeltaTime = 1/FPS
|
||||
-
|
||||
@ -31,9 +15,3 @@ ALL_FPS:
|
||||
address: [MAIN, 0xC841820, 0x100]
|
||||
value_type: float
|
||||
value: 0.0666666666
|
||||
# Dynamic Resolution Timing = (0.9375/FPS) * 19200000
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xC8C2F00]
|
||||
value_type: uint32
|
||||
value: "(0.9375 / FPS_TARGET) * 19200000"
|
||||
|
@ -3,22 +3,6 @@
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect reading DR timing in DynamicResolution::UpdateResolution() to MAIN + 0xC8CBF00
|
||||
# only for handheld (default handheld: 31.25 ms, docked: 46.875 ms - probably to block DR from working without disabling it)
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x74ADA58
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD002A0E8
|
||||
- 0xB94F0108
|
||||
# Default handheld value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xC8CBF00
|
||||
value_type: uint32
|
||||
value: 600000
|
||||
ALL_FPS:
|
||||
# fixedDeltaTime = 1/FPS
|
||||
-
|
||||
@ -31,9 +15,3 @@ ALL_FPS:
|
||||
address: [MAIN, 0xC84AD60, 0x100]
|
||||
value_type: float
|
||||
value: 0.0666666666
|
||||
# Dynamic Resolution Timing = (0.9375/FPS) * 19200000
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xC8CBF00]
|
||||
value_type: uint32
|
||||
value: "(0.9375 / FPS_TARGET) * 19200000"
|
||||
|
@ -0,0 +1,17 @@
|
||||
# MEGATON MUSASHI W: WIRED 3.2.0
|
||||
# BID: 8286C091117CAECF
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# fixedDeltaTime = 1/FPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCAA1720, 0x48]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
||||
- # maximumDeltaTime = 1/15 (with this setting game will slow down below 15 FPS instead of 30 FPS)
|
||||
type: write
|
||||
address: [MAIN, 0xCAA1720, 0x100]
|
||||
value_type: float
|
||||
value: 0.0666666666
|
@ -0,0 +1,12 @@
|
||||
# MEGATON MUSASHI W: WIRED 3.2.3
|
||||
# BID: D152798E91A87AE7
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# fixedDeltaTime = 1/FPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCAC9F20, 0x48]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
@ -3,22 +3,6 @@
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect reading DR timing in DynamicResolution::UpdateResolution() to MAIN + 0xC8CBF00
|
||||
# only for handheld (default handheld: 31.25 ms, docked: 46.875 ms - probably to block DR from working without disabling it)
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x78910F8
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD00281C8
|
||||
- 0xB94F0108
|
||||
# Default handheld value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xC8CBF00
|
||||
value_type: uint32
|
||||
value: 600000
|
||||
ALL_FPS:
|
||||
# fixedDeltaTime = 1/FPS
|
||||
-
|
||||
@ -31,9 +15,3 @@ ALL_FPS:
|
||||
address: [MAIN, 0xC84AD20, 0x100]
|
||||
value_type: float
|
||||
value: 0.0666666666
|
||||
# Dynamic Resolution Timing = (0.9375/FPS) * 19200000
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xC8CBF00]
|
||||
value_type: uint32
|
||||
value: "(0.9375 / FPS_TARGET) * 19200000"
|
||||
|
@ -3,22 +3,6 @@
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect reading DR timing in DynamicResolution::UpdateResolution() to MAIN + 0xC8CBF00
|
||||
# only for handheld (default handheld: 31.25 ms, docked: 46.875 ms - probably to block DR from working without disabling it)
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x74AD958
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD002A0E8
|
||||
- 0xB94F0108
|
||||
# Default handheld value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xC8CBF00
|
||||
value_type: uint32
|
||||
value: 600000
|
||||
ALL_FPS:
|
||||
# fixedDeltaTime = 1/FPS
|
||||
-
|
||||
@ -31,9 +15,3 @@ ALL_FPS:
|
||||
address: [MAIN, 0xC84AD60, 0x100]
|
||||
value_type: float
|
||||
value: 0.0666666666
|
||||
# Dynamic Resolution Timing = (0.9375/FPS) * 19200000
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xC8CBF00]
|
||||
value_type: uint32
|
||||
value: "(0.9375 / FPS_TARGET) * 19200000"
|
||||
|
@ -0,0 +1,21 @@
|
||||
# Big Helmet Heroes 1.0.3
|
||||
# BID: 2CF926BBD5D1AB4D
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7012260, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x5BB0718, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,356 @@
|
||||
# Xenoblade Chronicles X: Definitive Edition 1.0.2
|
||||
# BID: 2A720C7CE5C84905
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Dynamic speed mod for stuff like UI, lipsync, grass and rain
|
||||
## Redirect nvnQueuePresentTexture call to code cave at MAIN+0x1735050
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x95EED8
|
||||
value_type: uint32
|
||||
value: 0x1437585E
|
||||
## Code Cave (save floats for speed factor to MAIN+0x47BE268, frametime as FPS in MAIN+0x47BE26C, frametime in s in MAIN+0x47BE270)
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1735050
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD63F0100
|
||||
- 0x97FFF52B
|
||||
- 0xB0018448
|
||||
- 0xF9413107
|
||||
- 0xF9013100
|
||||
- 0xB5000047
|
||||
- 0x17C8A79D
|
||||
- 0xCB070000
|
||||
- 0x97FFF528
|
||||
- 0xB0018448
|
||||
- 0xB9430101
|
||||
- 0xEB00003F
|
||||
- 0x5400004B
|
||||
- 0xAA0103E0
|
||||
- 0xD2881541
|
||||
- 0xF2A07F21
|
||||
- 0xEB00003F
|
||||
- 0x5400004C
|
||||
- 0xAA0103E0
|
||||
- 0x9E630000
|
||||
- 0xD00005A0
|
||||
- 0xFD46AC01
|
||||
- 0x1E611800
|
||||
- 0xD2807D00
|
||||
- 0x9E630001
|
||||
- 0x1E601821
|
||||
- 0xB0018440
|
||||
- 0x1E624021
|
||||
- 0xBD026C01
|
||||
- 0x1E27D002
|
||||
- 0x1E211842
|
||||
- 0xBD026802
|
||||
- 0xD2807D01
|
||||
- 0x9E630021
|
||||
- 0x1E611801
|
||||
- 0x1E624021
|
||||
- 0xBD027001
|
||||
- 0x17C8A77E
|
||||
## Default values for code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x47BE268
|
||||
value_type: float
|
||||
value: [1.0, 30.0, 0.033333333333]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x47BE300
|
||||
value_type: uint32
|
||||
value: 33333333
|
||||
## Function 1 to speed factor // Usage unknown
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x286968
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x900229D5
|
||||
- 0xF9470D00
|
||||
- 0xBD426AAA
|
||||
## Function 3 to speed factor // Usage unknown
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xA16F00
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x9001ED40
|
||||
- 0xBD426808
|
||||
## Function 4 to FPS // UI Speed
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xA1F060
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF001ECE0
|
||||
- 0x1E270100
|
||||
- 0xBD426C00
|
||||
## Function 5 to FPS // Usage unknown
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2672DC
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF0022A20
|
||||
- 0x1E270100
|
||||
- 0x7940D268
|
||||
- 0xBD426C05
|
||||
## Function 6 to FPS
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x26DB70
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0022A80
|
||||
- 0xBD426C00
|
||||
- 0x1E390000
|
||||
- 0x528000C9
|
||||
- 0x1AC90808
|
||||
## Function 7 to Frametime in s // Gameplay + cutscene speed
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1E2924
|
||||
value_type: uint32
|
||||
value: 0x90022EE9
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1E2938
|
||||
value_type: uint32
|
||||
value: 0xBD427120
|
||||
# Adjust various elements related to fighting
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1E8F48
|
||||
value_type: uint32
|
||||
value: 0x1455308B
|
||||
## Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1735174
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0018449
|
||||
- 0xBD426920
|
||||
- 0x17AACF74
|
||||
## Fix gun speed
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x30FACC
|
||||
value_type: uint32
|
||||
value: 0xD503201F
|
||||
# Redirect DR Target to MAIN+0x47BEF00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x13A90B4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB001A0A8
|
||||
- 0xBD4F0100
|
||||
## Default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x47BEF00
|
||||
value_type: float
|
||||
value: 0.01666666666
|
||||
# Adjust camera speed rotation dynamically
|
||||
## Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1735108
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0018448
|
||||
- 0xBD426908
|
||||
- 0x1E200900
|
||||
- 0x1E202008
|
||||
- 0x540000AA
|
||||
- 0x1E214000
|
||||
- 0x1E21C000
|
||||
- 0x1E214000
|
||||
- 0xD65F03C0
|
||||
- 0x1E21C000
|
||||
- 0xD65F03C0
|
||||
## Connect function 1
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1E17A0
|
||||
value_type: uint32
|
||||
value: 0x94554E5A
|
||||
## Connect function 2
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1E17B0
|
||||
value_type: uint32
|
||||
value: 0xAD7D03A1
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1E17BC
|
||||
value_type: uint32
|
||||
value: 0x94554E53
|
||||
# Force 1s sleep to synchronize audio if cutscene detected
|
||||
## Use function responsible for writing type 4 of cutscene
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2FB0D8
|
||||
value_type: uint32
|
||||
value: 0x1450E820
|
||||
### Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1735158
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x52800094
|
||||
- 0xD00045C0
|
||||
- 0xB90AF414
|
||||
- 0xD2994000
|
||||
- 0xF2A77340
|
||||
- 0x97FFF3D9
|
||||
- 0x17AF17DB
|
||||
# Adjust Field Action gauge bar speed
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xE5E00
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB00236C0
|
||||
- 0xF000E369
|
||||
- 0xBD426808
|
||||
## Fix for FN Site
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xE5858
|
||||
value_type: uint32
|
||||
value: 0x14593E24
|
||||
### Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x17350E8
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xBD40D260
|
||||
- 0xB0018440
|
||||
- 0xBD426801
|
||||
- 0x1E210800
|
||||
- 0x17A6C1D9
|
||||
# Fix long jump when not running
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x23EF70
|
||||
value_type: uint32
|
||||
value: 0x1453D863
|
||||
## Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x17350FC
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x1E27D00B
|
||||
- 0x1E2B296B
|
||||
- 0x17AC279C
|
||||
# Adjust QTE Speed
|
||||
## Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1735134
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0018454
|
||||
- 0xBD426A81
|
||||
- 0x1400001B
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x17351A8
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xBD412262
|
||||
- 0x1E210841
|
||||
- 0x17BA4435
|
||||
## Connect function
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x5C6280
|
||||
value_type: uint32
|
||||
value: 0x1445BBAD
|
||||
# Adjust Overdrive counter, Follow Ball speed
|
||||
## Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1735180
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0018440
|
||||
- 0xBD427000
|
||||
- 0xD65F03C0
|
||||
## Connect function
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x67354
|
||||
value_type: uint32
|
||||
value: 0x945B36AB
|
||||
# Fix fog speed
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x296AE0
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x90022948
|
||||
- 0xBD426902
|
||||
- 0x945279B3
|
||||
## Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x17351B4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x1E21C042
|
||||
- 0x1F020020
|
||||
- 0xD65F03C0
|
||||
ALL_FPS:
|
||||
# FPS Target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x47BE300]
|
||||
value_type: uint32
|
||||
value: "FRAMETIME_TARGET * 1000000"
|
||||
# FPS Lock
|
||||
# ref: 00 01 00 b9 2a 01 00 b9 c0 03 5f d6
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x1D943A0]
|
||||
value_type: int32
|
||||
value: [1, 1]
|
||||
# DR Target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x47BEF00]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
||||
# Lock game to 30 FPS when complex/prerendered cutscene is played
|
||||
## Adjusts DR target
|
||||
-
|
||||
type: compare
|
||||
compare_address: [MAIN, 0x1FEFAF4]
|
||||
compare_value_type: uint32
|
||||
compare_type: ">"
|
||||
compare_value: 2
|
||||
address: [MAIN, 0x47BEF00]
|
||||
value_type: float
|
||||
value: 0.03333333333
|
||||
## Force OS to run at 60 Hz with interval 2
|
||||
-
|
||||
type: compare
|
||||
compare_address: [MAIN, 0x1FEFAF4]
|
||||
compare_value_type: uint32
|
||||
compare_type: ">"
|
||||
compare_value: 2
|
||||
address: [MAIN]
|
||||
value_type: refresh_rate
|
||||
value: 30
|
@ -0,0 +1,356 @@
|
||||
# Xenoblade Chronicles X: Definitive Edition 1.0.1
|
||||
# BID: 3F2425864CF22684
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Dynamic speed mod for stuff like UI, lipsync, grass and rain
|
||||
## Redirect nvnQueuePresentTexture call to code cave at MAIN+0x1744D90
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x96ECD8
|
||||
value_type: uint32
|
||||
value: 0x1437582E
|
||||
## Code Cave (save floats for speed factor to MAIN+0x47CD268, frametime as FPS in MAIN+0x47CD26C, frametime in s in MAIN+0x47CD270)
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1744D90
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD63F0100
|
||||
- 0x97FFF52B
|
||||
- 0xB0018448
|
||||
- 0xF9413107
|
||||
- 0xF9013100
|
||||
- 0xB5000047
|
||||
- 0x17C8A7CD
|
||||
- 0xCB070000
|
||||
- 0x97FFF528
|
||||
- 0xB0018448
|
||||
- 0xB9430101
|
||||
- 0xEB00003F
|
||||
- 0x5400004B
|
||||
- 0xAA0103E0
|
||||
- 0xD2881541
|
||||
- 0xF2A07F21
|
||||
- 0xEB00003F
|
||||
- 0x5400004C
|
||||
- 0xAA0103E0
|
||||
- 0x9E630000
|
||||
- 0xD00005A0
|
||||
- 0xFD469C01
|
||||
- 0x1E611800
|
||||
- 0xD2807D00
|
||||
- 0x9E630001
|
||||
- 0x1E601821
|
||||
- 0xB0018440
|
||||
- 0x1E624021
|
||||
- 0xBD026C01
|
||||
- 0x1E27D002
|
||||
- 0x1E211842
|
||||
- 0xBD026802
|
||||
- 0xD2807D01
|
||||
- 0x9E630021
|
||||
- 0x1E611801
|
||||
- 0x1E624021
|
||||
- 0xBD027001
|
||||
- 0x17C8A7AE
|
||||
## Default values for code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x47CD268
|
||||
value_type: float
|
||||
value: [1.0, 30.0, 0.033333333333]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x47CD300
|
||||
value_type: uint32
|
||||
value: 33333333
|
||||
## Function 1 to speed factor // Usage unknown
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2864C8
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF0022A35
|
||||
- 0xF9470D00
|
||||
- 0xBD426AAA
|
||||
## Function 3 to speed factor // Usage unknown
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xA26D00
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF001ED20
|
||||
- 0xBD426808
|
||||
## Function 4 to FPS // UI Speed
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xA2EE60
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF001ECE0
|
||||
- 0x1E270100
|
||||
- 0xBD426C00
|
||||
## Function 5 to FPS // Usage unknown
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x266E3C
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF0022B20
|
||||
- 0x1E270100
|
||||
- 0x7940D268
|
||||
- 0xBD426C05
|
||||
## Function 6 to FPS
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x26D6D0
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x90022B00
|
||||
- 0xBD426C00
|
||||
- 0x1E390000
|
||||
- 0x528000C9
|
||||
- 0x1AC90808
|
||||
## Function 7 to Frametime in s // Gameplay + cutscene speed
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1E24E4
|
||||
value_type: uint32
|
||||
value: 0xF0022F49
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1E24F8
|
||||
value_type: uint32
|
||||
value: 0xBD427120
|
||||
# Adjust various elements related to fighting
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1E8B08
|
||||
value_type: uint32
|
||||
value: 0x145570EB
|
||||
## Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1744EB4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0018449
|
||||
- 0xBD426920
|
||||
- 0x17AA8F14
|
||||
## Fix gun speed
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x30F62C
|
||||
value_type: uint32
|
||||
value: 0xD503201F
|
||||
# Redirect DR Target to MAIN+0x47CDF00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x13B8DF4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB001A0A8
|
||||
- 0xBD4F0100
|
||||
## Default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x47CDF00
|
||||
value_type: float
|
||||
value: 0.01666666666
|
||||
# Adjust camera speed rotation dynamically
|
||||
## Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1744E48
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0018448
|
||||
- 0xBD426908
|
||||
- 0x1E200900
|
||||
- 0x1E202008
|
||||
- 0x540000AA
|
||||
- 0x1E214000
|
||||
- 0x1E21C000
|
||||
- 0x1E214000
|
||||
- 0xD65F03C0
|
||||
- 0x1E21C000
|
||||
- 0xD65F03C0
|
||||
## Connect function 1
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1E1360
|
||||
value_type: uint32
|
||||
value: 0x94558EBA
|
||||
## Connect function 2
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1E1370
|
||||
value_type: uint32
|
||||
value: 0xAD7D03A1
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1E137C
|
||||
value_type: uint32
|
||||
value: 0x94558EB3
|
||||
# Force 1s sleep to synchronize audio if cutscene detected
|
||||
## Use function responsible for writing type of cutscene to write its ID if it's 8 or 16 (or 0 for any other) to MAIN+0x47CDFFF
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2FAC38
|
||||
value_type: uint32
|
||||
value: 0x14512898
|
||||
### Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1744E98
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x52800094
|
||||
- 0xD00045C0
|
||||
- 0xB90AF414
|
||||
- 0xD2994000
|
||||
- 0xF2A77340
|
||||
- 0x97FFF3D9
|
||||
- 0x17AED763
|
||||
# Adjust Field Action gauge bar speed
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xE5B00
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x90023740
|
||||
- 0xD000E3E9
|
||||
- 0xBD426808
|
||||
## Fix for FN Site
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xE5558
|
||||
value_type: uint32
|
||||
value: 0x14597E34
|
||||
### Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1744E28
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xBD40D260
|
||||
- 0xB0018440
|
||||
- 0xBD426801
|
||||
- 0x1E210800
|
||||
- 0x17A681C9
|
||||
# Fix long jump when not running
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x23EAD0
|
||||
value_type: uint32
|
||||
value: 0x145418DB
|
||||
## Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1744E3C
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x1E27D00B
|
||||
- 0x1E2B296B
|
||||
- 0x17ABE724
|
||||
# Adjust QTE Speed
|
||||
## Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1744E74
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0018454
|
||||
- 0xBD426A81
|
||||
- 0x1400001B
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1744EE8
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xBD412262
|
||||
- 0x1E210841
|
||||
- 0x17BA0261
|
||||
## Connect function
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x5C5870
|
||||
value_type: uint32
|
||||
value: 0x1445FD81
|
||||
# Adjust Overdrive counter, Follow Ball speed
|
||||
## Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1744EC0
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0018440
|
||||
- 0xBD427000
|
||||
- 0xD65F03C0
|
||||
## Connect function
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x67354
|
||||
value_type: uint32
|
||||
value: 0x945B76DB
|
||||
# Fix fog speed
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x296640
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF00229A8
|
||||
- 0xBD426902
|
||||
- 0x9452BA2B
|
||||
## Code cave
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1744EF4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x1E21C042
|
||||
- 0x1F020020
|
||||
- 0xD65F03C0
|
||||
ALL_FPS:
|
||||
# FPS Target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x47CD300]
|
||||
value_type: uint32
|
||||
value: "FRAMETIME_TARGET * 1000000"
|
||||
# FPS Lock
|
||||
# ref: 00 01 00 b9 2a 01 00 b9 c0 03 5f d6
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x1DA33A0]
|
||||
value_type: int32
|
||||
value: [1, 1]
|
||||
# DR Target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x47CDF00]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
||||
# Lock game to 30 FPS when complex/prerendered cutscene is played
|
||||
## Adjusts DR target
|
||||
-
|
||||
type: compare
|
||||
compare_address: [MAIN, 0x1FFEAF4]
|
||||
compare_value_type: uint32
|
||||
compare_type: ">"
|
||||
compare_value: 1
|
||||
address: [MAIN, 0x47CDF00]
|
||||
value_type: float
|
||||
value: 0.03333333333
|
||||
## Force OS to run at 60 Hz with interval 2
|
||||
-
|
||||
type: compare
|
||||
compare_address: [MAIN, 0x1FFEAF4]
|
||||
compare_value_type: uint32
|
||||
compare_type: ">"
|
||||
compare_value: 1
|
||||
address: [MAIN]
|
||||
value_type: refresh_rate
|
||||
value: 30
|
@ -0,0 +1,27 @@
|
||||
# Romancing SaGa 2: Revenge of the Seven 1.0.2
|
||||
# BID: 1933FBAFE977FA75
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x6D1EA80, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7BFAC70, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7C534C0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Star Overdrive 1.0.6
|
||||
# BID: 728D92CB9E54CE7A
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x674C6E8, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x77322F0, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x776C850, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Star Overdrive 1.0.5
|
||||
# BID: C0D9B410A09A4ADD
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x674B6E8, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x77312F0, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x776B850, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,30 @@
|
||||
# S.T.A.L.K.E.R.: Shadow Of Chornobyl 1.0.2
|
||||
# BID: 8E8BFFE66292CFF1
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# psLoadedFrameLimitFps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x165F4EC]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
# psCurrentFrameLimitFps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x167B9F0]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
# psCurrentFrameLimitMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x18E7ACC]
|
||||
value_type: float
|
||||
value: "1000 / FPS_LOCK_TARGET"
|
||||
# ResolutionInfo::sDynresGPUBudgetMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x165F2F0]
|
||||
value_type: float
|
||||
value: "0.99 * FRAMETIME_TARGET"
|
@ -0,0 +1,30 @@
|
||||
# S.T.A.L.K.E.R.: Shadow Of Chornobyl 1.0.3
|
||||
# BID: F7D1E815E44D0A56
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# psLoadedFrameLimitFps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x165F4EC]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
# psCurrentFrameLimitFps
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x167B9F0]
|
||||
value_type: float
|
||||
value: FPS_LOCK_TARGET
|
||||
# psCurrentFrameLimitMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x18E7ACC]
|
||||
value_type: float
|
||||
value: "1000 / FPS_LOCK_TARGET"
|
||||
# ResolutionInfo::sDynresGPUBudgetMs
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x165F2F0]
|
||||
value_type: float
|
||||
value: "FRAMETIME_TARGET - (1/30)"
|
@ -1,27 +0,0 @@
|
||||
# Immortals Fenyx Rising 1.3.4
|
||||
# BID: 70F3F6751D73C644
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Game switches resolution to 13/15 of normal resolution when moving camera with right stick and game cannot handle target FPS
|
||||
# Redirect reading DR time target to MAIN + 0xA7E4F00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x15A9F10
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF00491C8
|
||||
- 0xBD4F0101
|
||||
# Default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0xA7E4F00
|
||||
value_type: float
|
||||
value: 33.3333333333
|
||||
ALL_FPS:
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xA7E4F00]
|
||||
value_type: float
|
||||
value: FRAMETIME_TARGET
|
@ -16,6 +16,12 @@ ALL_FPS:
|
||||
address: [MAIN, 0x7451B78, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x6C85418, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
||||
|
@ -0,0 +1,38 @@
|
||||
# REYNATIS (US/EU) 1.0.8
|
||||
# BID: 11D6D6158B566A74
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect reading DR timing in DynamicResolution::LowerResSW() to MAIN + 0x7C0DF00
|
||||
# REF: 01 f0 67 1e
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x391CEEC
|
||||
value_type: uint32
|
||||
value: # 941702B0 818247FD 1020611E 6922482D CD020054 6A6240BD
|
||||
- 0xB0021794 # adrp x20, #0x7c0d000
|
||||
- 0xFD478281 # ldr d1, [x20, #0xf00]
|
||||
- 0x1E612010 # fcmpe d0, d1
|
||||
- 0x2D482269 # ldp s9, s8, [x19, #0x40]
|
||||
- 0x540002CD # b.le #0x391cf54
|
||||
- 0xBD40626A # ldr s10, [x19, #0x60]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x391CF54
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xFD478681 # ldr d1, [x20, #0xf08]
|
||||
# Default handheld value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x7C0DF00
|
||||
value_type: double
|
||||
value: [31, 29]
|
||||
ALL_FPS:
|
||||
# Dynamic Resolution Timing
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7C0DF00]
|
||||
value_type: double
|
||||
value: ["0.93 * FRAMETIME_TARGET", "(0.93 * FRAMETIME_TARGET) - 2"]
|
@ -0,0 +1,38 @@
|
||||
# REYNATIS (US/EU) 1.0.6
|
||||
# BID: 25A4C89527E7A6E6
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect reading DR timing in DynamicResolution::LowerResSW() to MAIN + 0x7C0DF00
|
||||
# REF: 01 f0 67 1e
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x391CEEC
|
||||
value_type: uint32
|
||||
value: # 941702B0 818247FD 1020611E 6922482D CD020054 6A6240BD
|
||||
- 0xB0021794 # adrp x20, #0x7c0d000
|
||||
- 0xFD478281 # ldr d1, [x20, #0xf00]
|
||||
- 0x1E612010 # fcmpe d0, d1
|
||||
- 0x2D482269 # ldp s9, s8, [x19, #0x40]
|
||||
- 0x540002CD # b.le #0x391cf54
|
||||
- 0xBD40626A # ldr s10, [x19, #0x60]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x391CF54
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xFD478681 # ldr d1, [x20, #0xf08]
|
||||
# Default handheld value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x7C0DF00
|
||||
value_type: double
|
||||
value: [31, 29]
|
||||
ALL_FPS:
|
||||
# Dynamic Resolution Timing
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7C0DF00]
|
||||
value_type: double
|
||||
value: ["0.93 * FRAMETIME_TARGET", "(0.93 * FRAMETIME_TARGET) - 2"]
|
@ -0,0 +1,38 @@
|
||||
# REYNATIS (US/EU) 1.0.10
|
||||
# BID: 5F765D2CC4CDEF1C
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect reading DR timing in DynamicResolution::LowerResSW() to MAIN + 0x7C22F00
|
||||
# REF: 01 f0 67 1e
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x38E7ECC
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF00219D4 # adrp x20, #0x7c22000
|
||||
- 0xFD478281 # ldr d1, [x20, #0xf00]
|
||||
- 0x1E612010 # fcmpe d0, d1
|
||||
- 0x2D482269 # ldp s9, s8, [x19, #0x40]
|
||||
- 0x540002CD # b.le #0x38e7f34
|
||||
- 0xBD40626A # ldr s10, [x19, #0x60]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x38E7F34
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xFD478681 # ldr d1, [x20, #0xf08]
|
||||
# Default handheld value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x7C22F00
|
||||
value_type: double
|
||||
value: [31, 29]
|
||||
ALL_FPS:
|
||||
# Dynamic Resolution Timing
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7C22F00]
|
||||
value_type: double
|
||||
value: ["0.93 * FRAMETIME_TARGET", "(0.93 * FRAMETIME_TARGET) - 2"]
|
@ -0,0 +1,38 @@
|
||||
# REYNATIS (US/EU) 1.0.7
|
||||
# BID: 7C8FE1FD610E1F1F
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect reading DR timing in DynamicResolution::LowerResSW() to MAIN + 0x7C0DF00
|
||||
# REF: 01 f0 67 1e
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x391CEEC
|
||||
value_type: uint32
|
||||
value: # 941702B0 818247FD 1020611E 6922482D CD020054 6A6240BD
|
||||
- 0xB0021794 # adrp x20, #0x7c0d000
|
||||
- 0xFD478281 # ldr d1, [x20, #0xf00]
|
||||
- 0x1E612010 # fcmpe d0, d1
|
||||
- 0x2D482269 # ldp s9, s8, [x19, #0x40]
|
||||
- 0x540002CD # b.le #0x391cf54
|
||||
- 0xBD40626A # ldr s10, [x19, #0x60]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x391CF54
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xFD478681 # ldr d1, [x20, #0xf08]
|
||||
# Default handheld value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x7C0DF00
|
||||
value_type: double
|
||||
value: [31, 29]
|
||||
ALL_FPS:
|
||||
# Dynamic Resolution Timing
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7C0DF00]
|
||||
value_type: double
|
||||
value: ["0.93 * FRAMETIME_TARGET", "(0.93 * FRAMETIME_TARGET) - 2"]
|
@ -0,0 +1,37 @@
|
||||
# REYNATIS (US/EU) 1.0.5
|
||||
# BID: C370209AECC8D2FB
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect reading DR timing in DynamicResolution::LowerResSW() to MAIN + 0x7C0DF00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x30A752C
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD0025B34 # to update with newer updates
|
||||
- 0xFD478281 # to update if offset 0xF00 is still not enough
|
||||
- 0x1E612010
|
||||
- 0x2D482269
|
||||
- 0x540002CD # branch possible to update with newer updates
|
||||
- 0xBD40626A
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x30A7594
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xFD478681 # to update if offset 0xF00+8 is still not enough
|
||||
# Default handheld value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x7C0DF00
|
||||
value_type: double
|
||||
value: [31, 29]
|
||||
ALL_FPS:
|
||||
# Dynamic Resolution Timing
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7C0DF00]
|
||||
value_type: double
|
||||
value: ["(0.9 * FRAMETIME_TARGET) + 1", "(0.9 * FRAMETIME_TARGET) - 1"]
|
@ -0,0 +1,38 @@
|
||||
# REYNATIS (US/EU) 1.0.9
|
||||
# BID: C59C89CCDF382602
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect reading DR timing in DynamicResolution::LowerResSW() to MAIN + 0x7C0DF00
|
||||
# REF: 01 f0 67 1e
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x391CEEC
|
||||
value_type: uint32
|
||||
value: # 941702B0 818247FD 1020611E 6922482D CD020054 6A6240BD
|
||||
- 0xB0021794 # adrp x20, #0x7c0d000
|
||||
- 0xFD478281 # ldr d1, [x20, #0xf00]
|
||||
- 0x1E612010 # fcmpe d0, d1
|
||||
- 0x2D482269 # ldp s9, s8, [x19, #0x40]
|
||||
- 0x540002CD # b.le #0x391cf54
|
||||
- 0xBD40626A # ldr s10, [x19, #0x60]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x391CF54
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xFD478681 # ldr d1, [x20, #0xf08]
|
||||
# Default handheld value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x7C0DF00
|
||||
value_type: double
|
||||
value: [31, 29]
|
||||
ALL_FPS:
|
||||
# Dynamic Resolution Timing
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7C0DF00]
|
||||
value_type: double
|
||||
value: ["0.93 * FRAMETIME_TARGET", "(0.93 * FRAMETIME_TARGET) - 2"]
|
@ -1,7 +1,7 @@
|
||||
# DRAGON BALL Z: KARAKOT + A NEW POWER AWAKENS SET 1.50
|
||||
# BID: 20503FA77FA416B7
|
||||
|
||||
unsafeCheck: true
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# Disable bUseFixedFrameRate in cutscenes to unlock framerate
|
||||
|
@ -1,7 +1,7 @@
|
||||
# DRAGON BALL Z: KARAKOT + A NEW POWER AWAKENS SET 1.51
|
||||
# BID: 389E38618E93A5E0
|
||||
|
||||
unsafeCheck: true
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# Disable bUseFixedFrameRate in cutscenes to unlock framerate
|
||||
@ -32,4 +32,4 @@ ALL_FPS:
|
||||
type: write
|
||||
address: [MAIN, 0x88C2C08, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
value: [0, 0]
|
||||
|
@ -0,0 +1,35 @@
|
||||
# DRAGON BALL Z: KARAKOT + A NEW POWER AWAKENS SET 1.52
|
||||
# BID: 72F6F8B54276185C
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Disable bUseFixedFrameRate in cutscenes to unlock framerate
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x945A538, 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, 0x9425478, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x945ADE8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x88C6FD8, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
@ -0,0 +1,36 @@
|
||||
# Atelier Yumia: The Alchemist of Memories & the Envisioned Land 1.1.0
|
||||
# BID: 153DB27728D41305
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect DR to MAIN + 0x2F11FF0
|
||||
# REF: A9 24 89 52 49 A2 A7 72
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x10B09B4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB000F309 # adrp x9, 0x2f11000
|
||||
- 0xBD4FF121 # ldr s1, [x9, 0xff0]
|
||||
- 0xD503201F # nop
|
||||
## Default value
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x2F11FF0
|
||||
value_type: float
|
||||
value: 0.035714
|
||||
ALL_FPS:
|
||||
# Disable FPS Lock
|
||||
# REF: 88 46 40 F9 03 11 40 F9, first ADRP+LDR above it
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x2ED8D10, 0xE0, 0x284]
|
||||
value_type: uint8
|
||||
value: 0
|
||||
# DR Target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x2F11FF0]
|
||||
value_type: float
|
||||
value: "1.01 / FPS_TARGET"
|
@ -0,0 +1,13 @@
|
||||
# Atelier Yumia: The Alchemist of Memories & the Envisioned Land 1.0.2
|
||||
# BID: 5E43788065113530
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# Disable FPS Lock
|
||||
# REF: 88 46 40 F9 03 11 40 F9, first ADRP+LDR above it
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x2E8DCF0, 0xE0, 0x284]
|
||||
value_type: uint8
|
||||
value: 0
|
@ -0,0 +1,13 @@
|
||||
# Atelier Yumia: The Alchemist of Memories & the Envisioned Land 1.0.1
|
||||
# BID: A947DDE7826A3562
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# Disable FPS Lock
|
||||
# REF: 88 46 40 F9 03 11 40 F9, first ADRP+LDR above it
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x2E8AB00, 0xE0, 0x284]
|
||||
value_type: uint8
|
||||
value: 0
|
@ -0,0 +1,12 @@
|
||||
# EA SPORTS FC 25 1.76.8f16
|
||||
# BID: 2213810D247A7293
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCE36A68, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -0,0 +1,12 @@
|
||||
# EA SPORTS FC 25 1.75.48c1
|
||||
# BID: 25636E9F2595CFFD
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCE06A68, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -0,0 +1,12 @@
|
||||
# EA SPORTS FC 25 1.75.9499
|
||||
# BID: 27BDC0166D5D5A1B
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCE1DA68, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -0,0 +1,12 @@
|
||||
# EA SPORTS FC 25 1.78.24C5
|
||||
# BID: 641E15F899C4A057
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCE66A68, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -0,0 +1,12 @@
|
||||
# EA SPORTS FC 25 1.78.9aa6
|
||||
# BID: 7E587D3ADCFD66BC
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCE6FA68, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -0,0 +1,12 @@
|
||||
# EA SPORTS FC 25 1.75.dd04
|
||||
# BID: AF76EBEDE6A89F89
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCE25A68, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -0,0 +1,12 @@
|
||||
# EA SPORTS FC 25 1.77.4815
|
||||
# BID: B8264CDBC1CBFFCF
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCE3CA68, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -0,0 +1,12 @@
|
||||
# EA SPORTS FC 25 1.76.fc6a
|
||||
# BID: C953D6F477604662
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCE3BA68, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -0,0 +1,12 @@
|
||||
# EA SPORTS FC 25 1.79.b056
|
||||
# BID: EB8D70AB59D8A4C2
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCE71A68, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -0,0 +1,12 @@
|
||||
# EA SPORTS FC 25 1.78.f2e9
|
||||
# BID: F51888C0188BFA18
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCE6FA68, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -0,0 +1,12 @@
|
||||
# EA SPORTS FC 25 1.7a.6c14
|
||||
# BID: FF365FA7E744CDDA
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xCE76A68, 8]
|
||||
value_type: double
|
||||
value: FPS_TARGET
|
@ -0,0 +1,27 @@
|
||||
# Bravely Default II Asia 1.0.0
|
||||
# BID: B5B9C7BB8D9716F6
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x72AEE90, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x73050F0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x69AA5C0, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Funko Fusion 2.6.2
|
||||
# BID: BDB53001D5CAD0AE
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x752BA68, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8507078, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8534F60, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Funko Fusion 2.3.0
|
||||
# BID: E6B427227FED8411
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x74BEA68, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x849A078, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x84C7F60, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Funko Fusion 2.4.0
|
||||
# BID: F0787926C4CFF8F1
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x74FBA68, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x84D7078, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8504F60, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,75 @@
|
||||
# WARRIORS: Abyss 1.2.1
|
||||
# BID: 293D73083149473E
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# REF: 09 49 A8 52 21 01 27 1E 00 20 21 1E
|
||||
# Use FPS Target instead of vsync value for Dynamic Resolution max delta
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6BD270
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0004521 # ADRP X1, 0xF62000
|
||||
- 0xBD44D821 # LDR S1, [X1, 0x4D8]
|
||||
# Redirect DR Targets to MAIN+0x13F3F00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6BD314
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD00069A9 # ADRP X9, 0x13F3000
|
||||
- 0xBD4F0121 # LDR S1, [X9, 0xF00]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6BD324
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD00069A9 # ADRP X9, 0x13F3000
|
||||
- 0xBD4F0521 # LDR S1, [X9, 0xF04]
|
||||
# Default values
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x13F3F00
|
||||
value_type: float
|
||||
value: [50, 40]
|
||||
ALL_FPS:
|
||||
# REF: 00 00 F0 42 78 00 00 00 00 00 F0 42 04 00 00 00
|
||||
# FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xF624E4]
|
||||
value_type: uint32
|
||||
value: "120 / FPS_LOCK_TARGET"
|
||||
# Prevent from setting it as 0, otherwise game crashes
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_address: [MAIN, 0xF624E4]
|
||||
compare_type: "=="
|
||||
compare_value_type: uint32
|
||||
compare_value: 0
|
||||
address: [MAIN, 0xF624E4]
|
||||
value_type: uint32
|
||||
value: 1
|
||||
# Others
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xF624D8]
|
||||
value_type: float
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xF624DC]
|
||||
value_type: uint32
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xF624E0]
|
||||
value_type: float
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x13F3F00]
|
||||
value_type: float
|
||||
value: ["1.5 * FRAMETIME_TARGET", "1.2 * FRAMETIME_TARGET"]
|
@ -0,0 +1,75 @@
|
||||
# WARRIORS: Abyss 1.1.0
|
||||
# BID: 50C9028B61A0BB7F
|
||||
|
||||
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: 0x6400D0
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x90004441 # ADRP X1, 0xEC8000
|
||||
- 0xBD44C021 # LDR S1, [X1, 0x4C0]
|
||||
# Redirect DR Targets to MAIN+0x1359F00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x640174
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB00068C9 # ADRP X9, 0x1359000
|
||||
- 0xBD4F0121 # LDR S1, [X9, 0xF00]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x640184
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB00068C9 # ADRP X9, 0x1359000
|
||||
- 0xBD4F0521 # LDR S1, [X9, 0xF04]
|
||||
# Default values
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1359F00
|
||||
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, 0xEC84CC]
|
||||
value_type: uint32
|
||||
value: "120 / FPS_LOCK_TARGET"
|
||||
# Prevent from setting it as 0, otherwise game crashes
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_address: [MAIN, 0xEC84CC]
|
||||
compare_type: "=="
|
||||
compare_value_type: uint32
|
||||
compare_value: 0
|
||||
address: [MAIN, 0xEC84CC]
|
||||
value_type: uint32
|
||||
value: 1
|
||||
# Others
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xEC84C0]
|
||||
value_type: float
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xEC84C4]
|
||||
value_type: uint32
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xEC84C8]
|
||||
value_type: float
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1359F00]
|
||||
value_type: float
|
||||
value: ["1.5 * FRAMETIME_TARGET", "1.2 * FRAMETIME_TARGET"]
|
@ -0,0 +1,75 @@
|
||||
# WARRIORS: Abyss 1.3.0
|
||||
# BID: 71C5F3CB333F1542
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# REF: 09 49 A8 52 21 01 27 1E 00 20 21 1E
|
||||
# Use FPS Target instead of vsync value for Dynamic Resolution max delta
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6D24D0
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0004841 # ADRP X1, 0xFDB000
|
||||
- 0xBD4E0021 # LDR S1, [X1, 0xE00]
|
||||
# Redirect DR Targets to MAIN+0x1477F00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6D2574
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0006D29 # ADRP X9, 0x1477000
|
||||
- 0xBD4F0121 # LDR S1, [X9, 0xF00]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6D2584
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0006D29 # ADRP X9, 0x1477000
|
||||
- 0xBD4F0521 # LDR S1, [X9, 0xF04]
|
||||
# Default values
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1477F00
|
||||
value_type: float
|
||||
value: [50, 40]
|
||||
ALL_FPS:
|
||||
# REF: 00 00 F0 42 78 00 00 00 00 00 F0 42 04 00 00 00
|
||||
# FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xFDBE0C]
|
||||
value_type: uint32
|
||||
value: "120 / FPS_LOCK_TARGET"
|
||||
# Prevent from setting it as 0, otherwise game crashes
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_address: [MAIN, 0xFDBE0C]
|
||||
compare_type: "=="
|
||||
compare_value_type: uint32
|
||||
compare_value: 0
|
||||
address: [MAIN, 0xFDBE0C]
|
||||
value_type: uint32
|
||||
value: 1
|
||||
# Others
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xFDBE00]
|
||||
value_type: float
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xFDBE04]
|
||||
value_type: uint32
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xFDBE08]
|
||||
value_type: float
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1477F00]
|
||||
value_type: float
|
||||
value: ["1.5 * FRAMETIME_TARGET", "1.2 * FRAMETIME_TARGET"]
|
@ -0,0 +1,21 @@
|
||||
# Tales of Kenzera: TAU 1.5.0
|
||||
# BID: 9E7FB72540D748BA
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x6917E78, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x611ADC8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Ghostbusters: Spirits Unleashed Ecto Edition 1.11.0
|
||||
# BID: 49F6F257348A42A1
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xBBFBF70, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xBC21B48, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0xB42B9B8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,28 @@
|
||||
# SONIC X SHADOW GENERATIONS Launcher / SHADOW GENERATIONS 1.1.0
|
||||
# BID: C8CDBFD621A6B29B
|
||||
|
||||
# FPS Lock is used to determine dynamic resolution timing too, but it doesn't work properly when setting higher FPS.
|
||||
# DR Timing Fix is applied for anything above 30 FPS as it seems to fix the most notorious issue - stucking at 360p.
|
||||
# Turn off Window Sync for better performance
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
# REF: C8 AA 8A 52 A8 30 A8 72 first ADRP above it
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x3EAB7B8, 0x14]
|
||||
value_type: float
|
||||
value: FPS_TARGET
|
||||
# DR Timing fix, applied only for handheld
|
||||
# Ref: 00 01 3F D6 B4 02 00 F9 E0 03 13 AA 01 3E 80 52 first ADRP above it
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_address: [MAIN, 0x3EAB7E0, 0x18, 0x260, 0x24]
|
||||
compare_value_type: float
|
||||
compare_type: "=="
|
||||
compare_value: -2.8
|
||||
address: [MAIN, 0x3EAB7E0, 0x18, 0x260, 0x24]
|
||||
value_type: float
|
||||
value: ["-1.4 * VSYNC_TARGET", "-0.6 * VSYNC_TARGET", "0.025 * VSYNC_TARGET", "0.04 * VSYNC_TARGET", "0.05 * VSYNC_TARGET", "0.15 * VSYNC_TARGET"]
|
@ -1,4 +1,4 @@
|
||||
# SONIC GENERATIONS 1.0.1
|
||||
# SONIC GENERATIONS 1.0.1/1.1.0
|
||||
# BID: D91C67509C6AED8D
|
||||
|
||||
unsafeCheck: true
|
||||
@ -24,4 +24,4 @@ ALL_FPS:
|
||||
type: write
|
||||
address: [MAIN, 0x5226F00]
|
||||
value_type: uint8
|
||||
value: 0
|
||||
value: 0
|
||||
|
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