Lyall / FFXVIFix

A fix for Final Fantasy XVI that adds ultrawide/narrower support, uncaps framerate in cutscenes, lets you adjust gameplay FOV and much more.
MIT License
462 stars 10 forks source link

[Feature Request] Possibility to set arbitrary framerate target for DRS, before or after frame generation #70

Open weltuntergang666 opened 3 weeks ago

weltuntergang666 commented 3 weeks ago

I understand the DRS system in FF XVI works by reducing the rendering resolution until the target frame rate set in the options is reached. Then the selected upscaling method (DLSS, FSR or XESS) is used to bring the image up to the output resolution. Unfortunately the available frame rate targets are not very granular, they just go 30, 60, 120 and 240. It is also unclear, if and how frame generation is considered here. It would be great, if we could define an arbitrary frame rate target for the DRS system and also could specify, if the target is applicable for the fps before or after frame generation.

On my system I would like to be able to either:

Thanks for the great work guys, yet another game saved by your efforts.

Drahsid commented 3 weeks ago

A little note here, not entirely related, but by modifying the code at ffxvi.exe+AAE4A2 allows us to directly set the current resolution scale. R10 + 0x140 points to the byte which is the current resolution scale, bl is the second parameter to the subroutine.

weltuntergang666 commented 2 weeks ago

I tested the custom framerate feature from v0.8.4 with game version 1.01, but it does not seem to work. First I set DLSS to DLAA, disabled frame generation, selected the 60fps target and enabled DRS, the game is then correctly locking at 60fps, loading the GPU with ~80% according to RTS. Then I switched the target framerate to 40, worked as expected. Then when I selected the 30.00 FPS target the game locked to 30fps, and not to the 50fps I set in the ini file. I also tried to restart the game with all settings in place, but that is also not working.

I attached the log file and my settings as FFXVIFix.ini.txt FFXVIFix.log FFXVIFix.ini.txt

Lyall commented 2 weeks ago

I tested the custom framerate feature from v0.8.4 with game version 1.01, but it does not seem to work. First I set DLSS to DLAA, disabled frame generation, selected the 60fps target and enabled DRS, the game is then correctly locking at 60fps, loading the GPU with ~80% according to RTS. Then I switched the target framerate to 40, worked as expected. Then when I selected the 30.00 FPS target the game locked to 30fps, and not to the 50fps I set in the ini file. I also tried to restart the game with all settings in place, but that is also not working.

I attached the log file and my settings as FFXVIFix.ini.txt FFXVIFix.log FFXVIFix.ini.txt

If you set "30.00 FPS" in the menu, then click "Frame Rate" again, does it show your custom framerate target? I can't speak to how it works with dynamic resolution system as that's not something I have looked into yet.

This is how it looks on my end with 50fps set.

[Custom Framerate]
; Set enabled to true to replace the "30.00 FPS" frame rate option in-game with a custom value set below.
; Bear in mind that this framerate value is applied prior to frame generation.
Enabled = true
Framerate = 50

image

weltuntergang666 commented 2 weeks ago

No, on my end the 50.00 FPS option does not show up in the menu at all. Compared to your screenshot I have additional FPS options like 29.97 or 59.94, which I think is, because I am playing on a TV, not a PC monitor. Could it maybe because of these additional FPS options available on my end, that FFXVIfix is cannot inject the custom FPS value? framerate