May was a very eventful month for RPCS3 as we saw significant core and performance improvements. The goal of this progress report is to highlight some of the more notable or interesting developments of the project. The report will start by showcasing a selection of games that were improved in one way or another. Thereafter we will summarize what work each contributor did this month.
kd-11 joined Nekotekina’s Patreon
You can read about this in more detail here.
The short version is that kd-11 is an extremely talented graphics developer who has helped RPCS3 since January of 2016. Without his work RPCS3 would not be here today. It goes the other way around too of course, without the significant core accuracy and performance improvements by Nekotekina we would not be here today either. Therefore it make sense for two great minds to join forces. With the generous Patreon support kd-11 will be able to acquire new hardware for development and testing. On the short term purchasing list is a modern NVIDIA GPU, a modern AMD GPU, and possibly a Skylake+ laptop of some kind. This would allow kd-11 to fix specific issues on these platforms. Not many people use RPCS3 with integrated Intel graphics but they are technically fast enough (for now at least). The problems lie in very very buggy Intel graphics drivers which is why it would help to have direct access to it.
Check out this video below, it highlights some games that saw performance improvements from “the secret build” which was a huge general graphics rework, with focus in particular on Vulkan.
Let’s start with [redacted]. above are various screenshots from further into the game. And take a look at the last one. Yes, someone beat the entire game in RPCS3 proving it to be “playable” although slow and with broken bloom (and the total play time is wrong because it is running slow). But Nekotekina knows how to make the game significantly faster and kd-11 has a good idea of why the bloom is broken. In the coming weeks Nekotekina will finally make libfiber work with the recompiler which will make the game quite a bit faster. kd-11 will hunt down one or more broken PPU instructions which send slightly broken floats through the pipeline which eventually end up as too bright bloom in this game. Theoretically these PPU fixes could also fix various bugs and crashes in other games too. Of course libfiber is used by more games than [redacted], like Red Dead Redemption, not that it really works, yet.
Below are before and after screenshots from [redacted] on Vulkan with the improvements by kd-11
Here is a selection of games that were improved in one way or another. The update history of the compatibility database can be found here for a more complete listing.
AFL Live 2
Akimi Village became approximately twice as fast with the Vulkan improvements by kd-11 and therefore it’s now pretty much playable. The screenshots above were taken by different people but they have similar i5 CPUs and Vulkan was slower than OpenGL before, so the comparison is valid.
Armored Core: For Answer
Atelier and Ar Tonelico
Atelier Rorona (Plus), Totori, Meruru and Ayesha as well as Ar Tonelico Qoga now run at 30FPS+ all the time on for example a Intel Haswell Core i5. These games run at full speed at any frame rate above 15FPS. Yes you could run this game at 144FPS or something (given a fast enough CPU that doesn’t yet exist) and it would probably still work fine. PhyreEngine is very good in this regard. Some minor graphical glitches persist and Ar Tonelico randomly crashes on the world map, but these games are in a very good state now. Atelier Ayesha is featured in the Vulkan improvements video in the introduction of this progress report.
Batman: Arkham Asylum
Batman: Arkham Asylum previously only showed some intro screens but now it goes ingame and looks alright overall. It’s way too slow to be playable though, and it also hangs after a while.
Catherine saw significant performance improvements from the Vulkan changes by kd-11. Together with the LLVM recompiler it can run at full speed on much wider range of hardware than before. This screenshot was taken on a normal quad core Intel Core i5-4690k.
CellFactor: Psychokinetic Wars
A Discord member beat a boss in Dark Souls at very low frame rate. This game is on the same engine as Demon’s Souls but for whatever reasons it runs much worse and frequently crashes.
Dead or Alive 5 Ultimate
Defenders of Ardania
Thanks to the Vulkan improvements by kd-11 this game not only runs on Vulkan now, it’s more than twice as fast as it was before.
Disgaea 4 & Disgaea D2
Using the speed hack patch by Nekotekina along with the Vulkan performance improvements by kd-11 great performance is achieved in Disgaea 4 and Disgaea D2. These games ran much slower overall before.
Dragon Quest Builders
Eureka Seven AO Attack The Legend
Eureka Seven AO Attack The Legend is approximately twice as fast with the recent graphics improvements.
Final Fantasy X/X-2 HD Remaster
With changes to .sprx loading from Nekotekina and Vulkan improvements by kd-11 Final Fantasy X HD now runs a bit faster than before, with correct graphics and great stability. A bit slow but basically almost there now. Interestingly X-2 basically doesn’t work at all even if X runs great.
Folklore used to do nothing and now it shows a loading screen. Maybe not too exciting but this game is quite unknown and interesting. It is the last real game to see the involvement of the veteran director “Cozy Okada” famous for directing the early Shin Megami Tensei games and working on Persona 1 and 2. Keep your eyes open on this one.
Guitar Hero III: Legends of Rock
Initial D Extreme Stage
Initial D Extreme Stage is about 2 – 3 times faster now on Vulkan. Also check this before and after video of the game.
Kane & Lynch: Dead Men
Lumines Supernova is now flawlessly playable at full speed with Vulkan.
Knytt Underground is now flawlessly playable at nearly full speed with Vulkan.
Mobile Suit Gundam Side Stories
Slight performance improvements, but also stability improvements with Vulkan in the original NieR. The screenshot above is from a little further into the game. There are still some graphical glitches though.
Ninja Gaiden Sigma 2
Oddworld: Munch’s Oddysee
Oddworld is now playable at 30FPS+ all the time on a decent CPU with good graphics thanks to the recent Vulkan improvements.
Poker Night 2
Poker Night 2 saw tremendous performance improvements. It used to only run with OpenGL at 4FPS. Now OpenGL runs at 8FPS, but more importantly Vulkan pushes it to 16FPS!
Race Driver: Grid
Race Driver: Grid kind of works now. It’s squashed down to the left side of the screen and runs at 3FPS but it’s better than showing a black screen only like before. It’s basically known why it’s squashed down like this, kd-11 will look into it some day (in simple terms some unknown parameters for some image format things).
Red Dead Redemption
To the left: Red Dead Redemption now also renders pretty good on Vulkan, but it still crashes almost instantly thereafter.
To the right: User Jay on Discord managed to quickly go past the main menu and technically go ingame for a single frame or two before it crashed. The screenshot was very blue which randomly happens so to clearly see the graphics it has been edited a bit.
Resident Evil Revelations
For a game with this good graphics it runs unexpectedly smooth, in fact may almost run just about as fast (or slow) as on a real PS3. Take a look at this video recorded by JohnGodGames.
Resonance of Fate
Scott Pilgrim vs. the World: The Game
Scott Pilgrim vs. the World: The Game is now completely playable at full speed with any controller (for a short while this month it only worked with a DualShock 4). This is important because for whatever silly licensing reasons this game has been delisted from both the Xbox and the PlayStation store. But RPCS3 will preserve it forever.
Sengoku Basara 4
Sengoku Basara 4 went from only showing a black screen to going ingame at quite acceptable performance. It’s basically playable, especially if your CPU can push it all the way to 30FPS.
Silent Hill: Homecoming
Silent Hill: Homecoming is also almost full speed now with the latest Vulkan improvements with very good graphics.
Featured are Symphonia and Xillia, the other Tales of games may or may not work, no one has tested them recently as far as I know. These two in particular saw performance improvements this month. Xilia now also works on OpenGL, previously it would crash going in game. Xillia also still has broken text at random places which is important for a game like this, and therefore it’s not really considered playable yet even if it runs fast enough.
The Ico & Shadow of the Colossus Collection
Shadow of the Colossus now very briefly goes ingame, but the graphics are completely broken and it crashes pretty fast. Still, it used to do nothing at all. This improvement is thanks to recent .sprx loading fixes among other things.
Topatoi is now approximately three times faster than before, but the graphics are still completely broken so it can’t be played.
Significant improvement are being made on the Linux version of RPCS3. In fact, so few bugs remain now that we will almost certainly start to provide Appimages this month, maybe even sooner rather than later this month!
In short various LLVM bug fixes were made, improvements for the open source graphics drivers are in place, and the infamous “st11range_error” that breaks RPCS3 for so many users has been narrowed down. Also with the recently merged new QT interface various old bugs were fixed like broken DPI scaling sometimes. (QT was not merged in time for detailing in this report, also it technically happened in June anyway). Moreover QT has moved RPCS3 very very close to Wayland and Vulkan support on Linux. At least Vulkan support may even be in the Appimages this month.
Based on feedback from the previous progress report this isn’t a complete list of every single commit everyone made. It would be ridiculously long and boring to read (and time consuming to write). Instead we will present a smaller selection of more notable commits and summarize the work each person did in general. For those who are interested a complete commit log can be found here.
This month kd-11 has mostly been working on Vulkan behind the scenes as well as other RSX (graphics) improvements.
The main focus lately has been performance and compatibility with several PRs already merged to that effect. A list of the main changes this month include:
#2769 – Vulkan renderer rewrite: This resulted in massive speed boost over the other renderers with the exception of OpenGL due to lack of hw accelerated blit.
SPU ‘speed hacks’: A hint to the scheduler to lower priority of SPU emulation threads. Currently only works on windows, but UNIX support is on the way.
#2803 – Rewrites of vertex upload paths: Vertex upload paths are a major resource drain and are largely unavoidable at the moment due to architecture of the PS3. This changeset rewrites uploads to select an optimal upload path at runtime drastically improving performance.
#2811 – Fix LLVM linkage on Linux: Fixes an LLVM linkage issue that made it impossible to use gallium drivers with RPCS3 on Linux if RPCS3 was compiled with LLVM support
#2818 – Bug fixes for Vulkan selection dialog: Fixes regressions introduced by the addition of the Vulkan GPU selector and rewrites some of the Vulkan instance handling code.
Nekotekina has been working on libfiber LLVM all month basically. This enables the PS3 system module libfiber to work with the LLVM recompiler, or in other words: when this is implemented [redacted] will (hopefully) be very fast. It’s not quite ready yet however but work is ongoing.
In the meantime Nekotekina did various smaller commits fixing odd bugs here and there improving a lot of games in different ways. He also did some general code cleaning, restructuring a few things here and there.
#2745 – Fixes a few bugs in the file system module. This improved game data installation among other things. For example Little Big Planet now really properly installs (and does not silently corrupt some files)
#2774 – Various bug fixes and some PPU preparations for libfiber among other things. Also further improves the file system module.
#2780 – Cleans up hundreds of lines of code and improves logging for developers. This is actually significant for developers testing games.
#2787 – Fixes broken sound in Dragon’s Crown and also improves the ALSA audio backend on Linux.
#2792 – Substantial improvements to DualShock 4 support. Uses calibration data from the controller for the gyro, fixes for bluetooth and decreased latency. This PR also fixes various bugs in other areas such as auto LLE with liblv2.sprx sometimes breaking savedata (at least [redacted])
#2826 – This fixes the Scott Pilgrim game, previously a buggy input function would cause it to crash. Also implements a new function making Epic Mickey 2, Singstar and other games boot.
#2786 – Implements a missing function making Tony Hawk Pro Ground go ingame.
#2782 – Updated the ASMJT module. Can theoretically fix bugs and improve performance.
#2781 – This PR fixed a parenthesis error in a shader. But never mind that, the story behind this one is really funny. Shameful is the guy who first beat the entire 100+ hours long game [redacted] in RPCS3. As if playing at low frame rate and with sometimes very broken bloom making everything very blue wasn’t bad enough the game would suddenly and consistently crash every single time he approached the last area before the last boss. Luckily it was only basically a typo in a file but for a brief moment of pure despair it looked like he wouldn’t be able to complete [redacted] in RPCS3.
John-Gee, Zangetsu, grimd34th, AniLeo, xperia64,
Also scribam stubbed a lot of modules.
All in all, this has been a month full of progress for RPCS3. Many games have seen improvements to graphical accuracy and performance, and compatibility has risen as well. With kd-11 on board the Patreon train progress will only accelerate even more from here.
Any and all donations are appreciated, and they each come with Discord rewards! If you want to help out Nekotekina and kd-11, you can check out the Patreon page here.
This report was written by ssshadow in one whole long day. The day after intensely finishing a master’s thesis, which by itself was worked on intensely for the last two weeks. Because I’m kind of insane that way.