Progress Report: May 2017

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.

Game Compatibility: Game Status

Game Compatibility: Monthly Improvements (April 2017)

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.

[redacted]

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

Oh and one more thing. Here is [redacted] peaking at 60FPS. I don’t know exactly what CPU was used (probably something very expensive) but it definitely proves the possibility.

Games

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


This little sports game got a speed boost with kd-11’s changes this month, and now it runs faster than it did before, although still very slow to be considered Playable.

Akimi Village

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.

Armageddon Riders


Armageddon Riders saw general performance and graphics improvements with several of the kd-11 changes this month. Previously it ran slower and had some graphical glitches.

Armored Core: For Answer


Armored Core: For Answer now goes past the main menu to some loading screens. It doesn’t go ingame yet, but previously it would crash on the main menu.

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


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


CellFactor: Psychokinetic Wars now goes ingame but is way too slow and also crashes randomly. Previously it only showed some intro screens.

Dark Souls

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


Dragon Quest Builders performance was approximately doubled with the Vulkan improvements by kd-11.

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


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


Guitar Hero III went from nothing at all to going ingame. It’s of course not playable at 10FPS but surprisingly it kind of works otherwise.

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


Significant performance improvements, this ran at less than 10FPS last month.

Lumines Supernova

Lumines Supernova is now flawlessly playable at full speed with Vulkan.

Knytt Underground

Knytt Underground is now flawlessly playable at nearly full speed with Vulkan.

Mobile Suit Gundam Side Stories


Mobile Suit Gundam Side Stories used to only show the intro, now it goes ingame with good graphics.

Nier


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


Graphics are now pretty much flawless in 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).

Rayman Legends


Rayman Legends is now playable at full speed with perfect graphics. Previously it was too slow.

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


Resonance of Fate used to crash very quickly but thanks to recent .sprx loading improvements and some graphics fixes it now reaches the main menu.

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.

Tales games

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

Topatoi is now approximately three times faster than before, but the graphics are still completely broken so it can’t be played.

Linux

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.

Here is a world first screenshot of Vulkan on Linux (although Patreon supporters already saw it last week or so)

Commits

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.

kd-11

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.

#2773 & #2779 – Vertex shader generation fixes for mesa compatibility: This makes most games boot on Linux when using gallium driver stack (radeonsi, nvc0 is not recommended but should work)

#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

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.

Jarveson

#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.

Raven02

#2786 – Implements a missing function making Tony Hawk Pro Ground go ingame.

hcorion

#2782 – Updated the ASMJT module. Can theoretically fix bugs and improve performance.

shameful

#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.

Other fixes

John-Gee, Zangetsu, grimd34th, AniLeo, xperia64,

Also scribam stubbed a lot of modules.

Closing Words

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.

Also, come check out our YouTube channel and Discord to stay up-to-date with any big news.

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.