From Software's notorious 30fps stutter fixed - but only for hacked PS4 consoles
A three-line code fix dramatically improves Elden Ring, Bloodborne and more - so what's the catch?
One of the most baffling technical mysteries of the last console generation is simply this: why is that every From Software title on PlayStation 4 and Xbox One stutters so noticeably? From the studio's 2014 PS4 debut - Bloodborne - through to this year's Elden Ring, From Software's 30fps frame-rate solution just doesn't look or feel right on any of its games.
At Digital Foundry, we call this phenomenon 'inconsistent frame-pacing' - where even if you're getting 30 new frames per second, the staccato, inconsistent delivery of each new frame gives the illusion of much lower performance. But here's the thing: unofficial patches for every From game exist for hacked PlayStation 4s and astonishingly, it's a simple, rudimentary code fix. I've tested these patches - and they work, producing a far smoother, stutter-free effect. All of which made me wonder, why hasn't From Software fixed its own games if it's this simple. Are there any catches to these patches?
I first heard about this story from noted From Software 'code archeologist' Lance McDonald, creator of the Bloodborne 60fps patch we've seen running flawlessly via back-compat on PlayStation 5. He was highlighting the work of a hacker called Illusion, whose blog contains a wealth of patches for unlocking performance on a vast range of PlayStation 4 titles, or quality of life improvements such as - yes - frame-pacing fixes for every PS4 From Software title.
To get any of these patches working is not a process for the faint of heart: first of all, you require a PlayStation 4 console running on firmware 9.0 or lower, which requires an exploit run through the PS4 web browser which installs a payload from a USB stick. This allows users to install unsigned code in a way similar to Sony development consoles. However, installing the exploit is just the beginning of the tasks required: beyond that, you need to dump and decrypt the games you're patching before installing them on your hacked machine. None of this is particularly simple and for the purposes of this piece, further explanation isn't really relevant. In the case of the patched From Software titles, it's simply the means to put the theory to the test: that the studio's signature dodgy 30fps cap can actually be fixed.
According to Illusion, the problem is fairly straightforward. From's vanilla frame-rate cap does little more than the name suggests - it ensures that no more than 30 frames are presented per second. What it does not do is consider when each new frame should be delivered. In theory, a 30fps game should display a new frame on every other screen refresh - every 33.3ms - but instead, From titles see new images displayed at 16.7ms, 33.3ms or 50ms intervals. This is the classic Digital Foundry nemesis - inconsistent or 'bad' frame-pacing.
In the video embedded above, I've endeavoured to explain and demonstrate the issue but if that's not an option for you, check out the image below, which compares the unpatched version of Bloodborne with Illusion's patched alternative. I've omitted the frame-rate graph because it's irrelevant - both renditions run at 30fps. It's frame-time that is most important. On the left, you can see the update rate of the vanilla version with that inconsistent frame delivery - which actually gives the illusion of much lower performance. On the right, with Illusion's patch, the line is dead straight. Each and every frame arrives every 33.3ms. This is 30fps as it should be.
That's the technical explanation - but how does this impact the quality of the experience? I played patched versions of each and every From Software game and the difference is often night and day. Stutter on Bloodborne, Dark Souls 3 and Sekiro is gone - the only drops to performance are actual GPU bottlenecks in the most demanding scenes. Only the Elden Ring network test can be examined on a hacked PlayStation 4 (the new game runs on a firmware higher than the exploited 9.0) but this too delivers a more consistent experience - though performance is generally more impacted owing to the higher demands of the open world. Even so, the patched version is still an improvement over the shipping game. All told, in every title I sampled, it's difficult to see the patched rendition as anything other than the experience as we should have played it.
In fact, it's such a dramatic change in the presentation of the game, it suggests a substantial reworking of the game code - the improvement is that pronounced. However, Illusion's tweaks are very simple: the patch strips out the call to From's own 30fps cap, replacing it with a call to a Sony system library called SceVideoOutFlipRate - which does implement consistent frame-pacing where From's alternative does not. Rather than delivering a new frame for the next display update - whenever that may be - the Sony system call ensures that each and every frame is delivered at 33.3ms intervals. Is the patch really that simple then - literally changing one instruction for another?
"It's a two-line fix there," Illusion told me over Discord. "Basically, the previous inconsistent 30fps cap needs to be lifted first and then put in its place is the system SDK API call instead... [it] usually totals three lines of patched instructions."
Illusion speculates on his blog that From may have chosen this 30fps implementation over platform-specific system calls in order to facilitate multi-platform development, but it turns out that Microsoft has its own library for a consistent 30fps - IDXGISwapChain::Present for Xbox One and Xbox Series consoles. There is no hack or exploit for Microsoft console hardware, but it may well be the case that similar patches may be possible for the Xbox One versions of Dark Souls 3, Sekiro and Elden Ring.
Of course, From Software itself has moved on from 30fps caps. It started with its support for last-gen enhanced consoles, where the developer shifted to an unlocked frame-rate instead - an improvement over the botched 30fps but still far from ideal. In Elden Ring on current-gen consoles, the unlocked frame-rate idea was retained, but with quality and performance modes. The former doesn't look great as it presents like a 30fps game with extra hitching. The latter isn't ideal as there are far too many drops from the ideal 60fps.
It's at this point where Bluepoint Games' brilliant Demon's Souls Remake for PlayStation 5 enters the conversation. It offers a 4K quality mode that runs at a perfectly consistent 30 frames per second, alongside a 1440p temporally upscaled performance alternative that runs beautifully at 60fps. Demon's Souls demonstrates that simply unlocking performance is not the best solution: targeting fidelity at a consistent 30fps can deliver great results, but putting the time and effort into targeting and achieving a nigh-on locked 60fps with TAA upscaling makes such a difference. It's the way these games should present for optimal effect.
Going back to From Software's problematics 30fps cap, if there's a sense that Illusion's patches seem too good to be true, well - you'd be right. The patches add significant input lag. Before testing that out, I was reminded of the original beta release for the first Destiny, where Digital Foundry took Bungie to task for its inconsistent frame-pacing, the firm rising to the challenge and fixing the problem, stating at the time that doing so while retaining low input lag was not easy - by which I would assume that their solutions was more than a simple patch to call the system library.
Input lag testing threw up some remarkable results. While input lag varied a lot on the retail code, on average, the patched Bloodborne was 78ms slower to respond, dropping to 50ms slower on Elden Ring (though the later game is seemingly laggier than the likes of Dark Souls 3 and Bloodborne). This presents us with a dilemma: without Bungie-level optimisation, the patches basically deliver a much better-looking game, but at the expense of slower feedback from the controls. Did Bluepoint solve the problem with its Demon's Souls Remake? I don't think so: the 30fps mode in that game is as laggy as the patches, and astonishingly, input lag reduces by 85ms (!) by switching to the performance mode - the way the game should be played. If you own Demon's Souls Remake, give the 30fps mode a go: it's very similar to the patched From experience on last-gen machines.
So, what have we learned from this experience? The last-gen From games highlight how an inconsistent 30fps presents very closely to a game that isn't actually running at 30fps. It looks poor and marred an entire generation of games. In this respect, being able to play those games with a fixed presentation is a genuine game-changer - I wasn't prepared for just how much better-looking the games become. However, this three-line code fix only takes you so far and the hit to input lag is very high. I think the Demon's Souls Remake lays out the template for where From should go next: consistent performance levels in both modes, with 60fps locked as the target - but it looks like even Bluepoint struggled with input lag in its otherwise flawless 4K30 quality mode. On the off-chance that the studio is working on a Bloodborne Remake, addressing that would be welcome!
Other lessons learned? An initial foray into working with a hacked PS4 opens up a range of fascinating mods and patches, many of which come from Illusion himself, typically available on Github. DriveClub unlocked runs tantalisingly close to 60fps on PlayStation 4 Pro via Boost Mode, while it's interesting to see resolution scaling working in concert with a frame-rate unlock on the likes of Assassin's Creed Unity and Batman Arkham Knight. Just how much overhead does GTA5 have above its 30fps cap? Patched code reveals all. The downsides are obvious: running the risk of being banned from the PlayStation Store and the inability to run games beyond firmware 9.0 to name just two of them. Typically, you'll need to compile your own patches too - it's not easy and definitely not recommended for your primary PS4 console.