rebtd7/FF13Fix

[Feature Request] Is it possible to fix 1440p rendering issues?

Closed this issue · 2 comments

wjoe commented

First of all, thank you for the mod! It's significantly improved the framerate of the game for me, I've often had issues running Final Fantasy XIII, made more difficult by playing under Linux, but between this mod and recent Proton improvements, I'm finally able to play it reliably at high settings with good performance.

There seems to be a common issue specifically with running Final Fantasy XIII at 2560x1440 resolution, that textures/models look very jagged and blocky, making it actually look worse at this resolution than at 1080p.

This is described in a few places, PC Gaming Wiki mentions it and suggests a possible workaround, and has an image showing the issue. Steam Forums also has a thread on the issue., the suggested solution is to use GeDoSaTo, but that's not compatible with this fix, so that's not ideal. Another suggestion is to set a virtual resolution of 1 pixel higher than 1440p, but I'm not sure how to go about doing this on Linux, so I've not been able to confirm that.

I have no idea what causes this or if it's fixable, but was wondering if there's any chance a fix for this can be implemented into FF13Fix? It's not a massive issue, running in fullscreen at 1080p works fine, but it's the last missing piece of the puzzle in getting the game running perfectly.

I've spent several hours trying to understand and fix the issue the proper way but I wasn't able to.
Maybe someone more experienced in D3D9 would be able to do it.

For now I've added a workaround in v1.4.4 reducing the internal res to 2559x1440, which is good enough I suppose.

FF13Fix/d3d9ex/AutoFix.cpp

Lines 140 to 148 in cadb6d0

void MainContext::FF13_Workaround_2560_1440_Res_Bug()
{
if (*ff13_internal_res_w == 2560 && *ff13_internal_res_h == 1440) {
// We need to reduce one or another. Increasing the internal res causes crashes.
// Decreasing the internal res width by one pixel causes the last pixel column displayed on the screen to stay black.
PrintLog("Applying workaround for resolution 2560x1440 bug.");
*ff13_internal_res_w = 2559;
}
}

The same workaround works fine in FF13-2 too 😄

wjoe commented

Thanks for the quick fix! This does the trick and resolves the issue.