Bloodborne's unofficial 60fps patch tested: just how good is it?
Dissecting the Souls engine with the man behind the hack.
One of the most celebrated games of this console generation, Bloodborne saw From Software team up with Sony to produce an epic gothic adventure - rich in lore, deep in gameplay, brutally hard in execution. From a Digital Foundry perspective, its only negative points are technical in nature. Bloodborne's 30fps frame-rate is poorly implemented, while the potential for 60fps gaming via a PlayStation 4 Pro patch never happened. With that in mind, it was with much interest that we followed the work of Lance McDonald, who chronicled his attempts to hack the Bloodborne code on debug hardware in order to run it at full frame-rate. Footage released shows McDonald getting extremely close to the target - but what is the full story?
Before we go on, it's worth stressing that the Bloodborne 60fps patch doesn't work on retail PlayStation 4 consoles and prospective users would need access to hacked or development hardware to experience it, if it were publicly available - which it isn't. Our interest is in dissecting the game, to see how it works and how effective an official patch could be. To that end, I spoke at length with Lance McDonald over the last week, getting to understand how this hack was achieved, then working with him to test various resolution and performance modes to get a more detailed view on how the From Software engine works and whether Bloodborne - and by extension other Souls titles from the same developer - could run at 60fps instead of its default 30fps. And even if a locked 60fps isn't possible, we also had to wonder - can the Souls family of titles' 30fps implementation be hacked to actually work... correctly?
Understanding why this is a problem is key. In an ideal world, games designed for living room displays would all run at 60 frames per second - one new frame for every refresh of the screen, the smoothest possible output, the lowest possible latency. However, the amount of rendering time required for modern game engines often makes this unreasonable, so games can spend twice as much time - two display refreshes - to generate a new frame. It's 30 frames per second rather than 60, 33.3ms instead of 16.7ms, but because there's still a consistent persistence for each frame, it still looks smooth.
From Software's engine is broken in this regard because its 30fps timing is not at all synchronised with display refreshes. The engine's 30 frames per second will present as when they are ready, at 16.7ms, 33.3ms or 50ms. This is what we refer to when we talk about 'bad frame-pacing' and the inconsistency gives the illusion of running at a lower performance level.
Before we talk about hacking Bloodborne to run at 60fps, the question is this: can the From engine be tweaked to synchronise its 30fps update with the display? Can each frame correctly persist for 33.3ms? According to Lance McDonald, such a change would require extensive reworking of the engine. Certainly, a simple patch of tweak is not possible: whether we're talking about gameplay logic, cloth physics, all timing variables within the engine are tied to counting frames as opposed to synchronising with every other display refresh. What this means is that getting a smooth, consistent 30fps can't work - the only way to circumvent the issue is to target a flat-out 60fps.
This presents a problem when the engine is hard-coded to frame-counting, but McDonald had some help when examining Dark Souls 3. From Software released a PC version of the game that ran faster than 30fps and in turn, this work was also used to patch the game for PlayStation 4 Pro, which retained the same 1080p resolution but allowed for an unlocked frame-rate. Lance McDonald discovered that the core engine mechanics between Dark Souls 3 and Bloodborne were identical and that From Software's solution for running unlocked could be injected back into the older game.
Simply removing the 30fps cap on its own wouldn't help much because every aspect of the game's timing assumes a 30fps performance level - unlocking the game to 60fps would double the speed of the entire game. The solution was somewhat more involved: essentially, where Bloodborne's in-game timing was limited to 1/30 frames, Dark Souls 3 adjusted the 30 target to whatever the current, unlocked frame-count was. McDonald followed the same strategy for Bloodborne, adjusting 108 different timing variables - and his work paid off. Bloodborne was now running unlocked, with correct game timing. But as much of a triumph as this was, it only presented new challenges.
First of all, there's the graphics side of the equation. Bloodborne's assets, engine and gameplay were tailored to running at 30fps at 1080p resolution. Simply unlocking the frame-rate sees the game running in a 30-40fps window for the most part. In theory at least, running on PlayStation 4 Pro would at least allow for a similar presentation as that seen in Dark Souls 3 - but the problem there is that Bloodborne was authored on an older PS4 SDK that had no Pro support, meaning that the game will not tap into the extra hardware. The only route forward for higher performance was running the hacked code under boost mode on Pro hardware. There is an uplift to performance, but we are still nowhere near 60 frames per second.
Interestingly, Bloodborne's rendition of the Souls engine does feature native support for various resolutions - specifically 720p, 900p and 1080p (any other injected resolutions failed). On vanilla PS4 hardware, the lower you push the pixel-count, the higher the frame-rate. However, hopes of 720p60 gaming were dashed - the best results seen where in 40-50fps territory. Remember that the engine was architected for the base PlayStation 4 to run at 30 frames per second, and this doesn't just apply to GPU workloads, but to the CPU too. Bloodborne spends a lot of CPU cycles streaming in and decompressing environment data as you traverse the landscape. The faster you travel, the harder the strain on the CPU, and the lower the unlocked frame-rate.
All of which returns us to PS4 Pro boost mode. It's remarkable to think that years on, we still don't know how it works - we can only guess, based on measurable results, and our conclusions do feed into what we see when running the patched Bloodborne. First of all, it looks as though the extra CPU clocks of the Pro are fully deployed in boost mode - and this clears up most of the frame-rate drops we see in Bloodborne running at 720p. It's far from a clean sweep - fast traversal through the densest stages can still hit performance hard - but this is the closest we're going to get to a smooth, consistent Bloodborne experience, with big sections of gameplay running locked at 60fps.
Running at 1080p with frame-rate unlocked only sees an incremental increase in performance over the vanilla PlayStation 4 - again tying in with our prior observations about boost mode. While you get full CPU clocks, it's our contention that you only get half of the Pro's graphics core active, albeit running at 911MHz rather than 800MHz. In short, there's an extra 14 per cent of performance available - and if you're operating at 35fps as we are in Bloodborne, that'll take you to 39fps or thereabouts. Perhaps inevitably, 900p as a halfway house doesn't produce great results either - we're CPU or GPU limited at any given point.
The takeaways from the Bloodborne 60fps experience are at once exciting but also sobering. Despite the fact we need to run under boost mode on PS4 Pro - and at 720p resolution, no less - the game benefits to an extraordinary degree. Gameplay is so much more fluid, not just because we're comparing to 30fps, but also because Bloodborne's execution of 30fps is so poorly implemented. The original game was superb, the 'upgrade' here is magical. But the findings from McDonald's hacking demonstrate that even if the game received an official Pro patch, while we could likely improve on the 720p we had to settle on here, all the evidence points to a profound CPU limitation that's still in play - and based on the Pro implementations seen for Dark Souls 3 and Sekiro: Shadows Die Twice, the overall experience would still feel unsatisfactory.
With that said, the testing here does reveal a grand opportunity for Sony. The new PlayStation 5 hardware features full backwards compatibility for PS4 - and migrating from the lacklustre Jaguar core to the latest AMD Zen 2 technology easily solves the fundamental CPU limitations experienced in allowing Bloodborne to consistently hit 60 frames per second. But if it's possible for a third party to patch the game, it should be relatively simple for Sony/From to do the same. Anything beyond that - like a push to 4K resolution, for example - would be a bonus. Put simply, there's a real opportunity here for a genuinely crowd-pleasing piece of back-compat magic from Sony - the question is whether the platform holder has any appetite at all to revisit the game, especially if the rumours are true and that Demon's Souls is indeed receiving the full remake treatment for PlayStation 5.