SilentPatch for Yakuza 3 & Yakuza 4 Remastered

February 5, 2021

5 min. to read

TL;DR - if you are not interested in an in-depth overview of what was wrong with the game and how it was fixed, scroll down to Download section for a download link.


It’s been a week since Yakuza Remastered Collection has released on PC and Xbox One. I’ve been looking forward to these games, and now with Yakuza 3, 4, and 5 released, we are very close to seeing a complete mainline Yakuza saga on PC!

Like with Yakuza Kiwami 2 (but unlike Yakuza: Like a Dragon!), these ports have been made by QLOC. Yakuza Kiwami 2 got a SilentPatch several months after the release, therefore with the Remastered Collection, I knew I’ll be looking into these games shortly after launch. As always in cases like this, it didn’t take long before something worth looking into showed up.

Burning CPU cycles for… fun?

DISCLAIMER: All screenshots shown in this article come from the early stages of Yakuza 3 and 4. You can reach those segments within one or two hours of playing, so I don’t think they can be considered major spoilers.

I spotted the first oddity even before launching any of the games. For some reason, Yakuza 3 and Yakuza 4 ship with… compatibility options! The included script file sets the games to use Windows 8 compatibility and overrides the DPI scaling settings.

I can’t think of any reasons where those would be required in a modern game. Although I can’t say for sure what went down, Windows 8 compatibility is highly likely a placebo fix for something – I find it unlikely it was the only viable option. DPI scaling settings, on the other hand, should have been set in the executable’s manifest instead of being forced through compatibility settings!

The next issue may not be obvious, but something is definitely wrong – both Yakuza 3 and Yakuza 4 are insanely CPU intensive, much more than Yakuza 0 and even Yakuza Kiwami 2! My 4-core, 8-thread CPU regularly saw 50-60% overall CPU load, with some cutscenes going as far as 90%.

A simple cutscene using 90% CPU time? Hmmm.

A quick look at Steam forums reveals it’s a widespread issue. Even worse, for some people, it seems to have caused performance issues (it is possible if the CPU heats up and throttles or if threads are starving each other for CPU time).

This time for my investigations I used Special K. Most people use it as a general-purpose framework to address the most common issues in various games and/or to retrofit HDR, but I instead used its extensive resource monitoring capabilities. With proper setup, it can act almost as a profiler!

Special K makes the worst offenders instantly noticeable, so I could come forward with several fixes. I’ll spare the implementation details because they aren’t useful – instead, I’ll briefly explain the changes I made. In the best case, the information presented this way could even come in handy for QLOC themselves.

Other issues and things I can’t fix

Shortly after I sent out the first patch version for testing, I’ve been notified it causes crashes when finishing fights with a Heat Action. What we originally thought was the patch fault seems to be an original game bug occurring randomly, but SilentPatch made this bug happen consistently!

I would like to emphasize here that I don’t know exactly what causes this crash. It seems to be a race condition between a scheduled asynchronous job and something else, and the job does not have its input data prepared correctly, and thus crashes. Thankfully, said job already has some failure handling in place, so as a workaround I added additional parameter validation to the function, and… it seems to have helped!

At last, no crashes.

As for an official fix, I would hope QLOC performs an in-depth investigation of this bug, as with source access it should be much easier than when operating on a compiled executable. Scheduling changes I mentioned above make this bug 100% reproducible, which is IMO the most important aspect for getting the bug fixed quickly. Fingers crossed!


On a closing note, there are also some issues I was not able to address, and some of them are realistically not fixable by anyone except for QLOC:

Download

The modification can be downloaded from Mods & Patches. Click here to head to the game’s page directly (the same download works for both Yakuza 3 and Yakuza 4):

Download SilentPatch for Yakuza 3/Yakuza 4

After downloading, all you need to do is to extract the archive to the game’s directory, and that’s it! Not sure how to proceed? Check the Setup Instructions. Those patches only work with the Steam version of the games!


For those interested, the full source code of the mod has been published on GitHub, so it can be freely used as a reference: See source on GitHub

Share