illusion's Blog
Contact Patches

Framepacing Fixes for Fromsoftware Titles (PS4)

Please note that you are required to have a exploited PlayStation 4 console on firmware 9.00 or lower to run the patches mentioned in this article.

Intro

If you have ever played a recent fromsoftware games on console, be it Bloodborne, Dark Souls 3 or the recently released Elden Ring. You may have noticed something off about the presentation. One being that it feels more stuttery than other games with a 30 fps cap. And the other is inconsistent framerate on the enhanced consoles. With the framerate going up and down as it pleases depending on what is happening on screen.

Let’s address the first issue. Improper frame pacing. It is an issue that started to occur on the 8th generation era with Bloodborne.

Yikes.

Now let’s go back to the previous generation, the PS3/Xbox 360 era.

Dark Souls on Xbox 360, no issues here. A consistent 30 fps when it meets the framerate target.

How about Demon Souls?

Yep, no issues here either.

What Went Wrong?

I could only speculate on the decision to implement their own framerate cap for multi plat games is portability. Not having to deal with API calls for each console is a definite win but they did not realize if their timer precision was off, it will cause inconsistency in frame delivery.

But there’s something even more strange. Checkout this video from VG Tech where they showcase Dark Souls 1 in Backcompat Mode on Xbox One and..

Bad framepacing on the newer consoles but not original hardware? Very strange indeed.

The Simple Fix

So what are the solutions? A very simple fix to this would be to call the relavent API function calls equivalent to the platform.

Here are some suggestions.

Platform API Calls
PS3 cellGcmSetFlipMode
PS4/PS5 SceVideoOutFlipRate
Xbox 360 D3D::PresentInterval
Xbox One/Series S/X IDXGISwapChain::Present

But calling these functions and giving them appropriate device handle is not enough to fix the issue. We must also lift the game’s broken framerate limiter as well.

Either by changing Game.FlipMode in the code to 60FPS_* or changing minimum frame update time from 33.33ms to 16.67ms. Let’s see the changes.

Here’s bloodborne with the frame pacing issues resolved.

Volla! With just a few lines of code, we get proper and consistent 30 frames per second! Killing two bug reports with one stone.

The same fix also applies for the uncapped framerate on the enhanced consoles in Dark Souls 3 and later titles. though when implementing this in reality, the framerate cap must always be an option rather than forcing it on the user.

Trivia

Here’s a little bit of trivia for you, there’s already deltatime calculated for the framerate counter among other things.

But fromsoftware did not use this until the release of Dark Souls 3. Which is also how I ported the framerate patch for Bloodborne by Lance McDonald to the Network Test version.

Closing words

That is all I have for you today, you can support me using the links below and thanks to the patrons and you for reading!

Catch you next time where we race against opponents in a sea of mud with big trucks?

Showcase

Patches

Need help with installing the patches?

Check out the Installation Guide.

Supporters

Thanks to the patrons who supported me on various platforms! You guys are awesome!

Monthly supporters:

  • Patreon:

    • ac2pic
    • Alexa
    • Brett
    • Ciril
    • GarnetSunset
    • Mmmmmhno
    • Paul
    • PlayStation5Mods
    • RazzySxPB
    • Ryan
    • Voredy
    • YveltalGriffin
    • Zackery
    • alessaro92
    • ashenC
    • embee
    • erdosadam24
    • faith
    • maplemiyazaki
    • patrick
    • rudi
  • Github Sponsors:

    • VIPO777
    • WardFail
    • Whitehawkx
    • gorshco
    • jrson83
    • regal.
    • suwagawaki