April was a very eventful month for RPCS3. 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.
Since the last progress report, approximately 18 authors have made 104 commits, added 9,621 new lines of code and deleted 1,904 lines of code.
This is the last real PlayStation 3 game and it also happens to be highly popular. Let us take a look at a few things.
People often ask what kind of CPU is needed to run this game. The answer is that no CPU is truly fast enough right now, but if you enjoy playing games at 10 FPS or so, then feel free to get a CPU with a lot physical cores. See the screenshot below for the motivation behind this statement. Of course in the future when RPCS3 performance is improved such an extreme CPU likely will not be required.
If you didn’t see it already, we made a video of Persona 5 running in RPCS3 for our YouTube channel.
Here are some really interesting results. Digital Foundry proved that this game is locked to 30 FPS on PlayStation 4 as well as 30 FPS on PlayStation 3. However, in RPCS3 it is possible to unlock the framerate meaning that It is theoretically possible to run this game at more than 30 FPS. Look at the screenshot below, the game is really running at 40 FPS here with no problems. After all, if it can run fine at 15 FPS, half its intended frame rate, why would it not run fine at 60 FPS, double its intended frame rate?
Maybe there are some bugs, but maybe these could be patched just like Nekotekina patched an engine bug in Disgaea. Digital Foundry also pointed out the only other difference between the PlayStation 3 and the PlayStation 4 version of the game is the rendering resolution. But it is theoretically possible to increase internal rendering resolution in this game (although nothing has been implemented in RPCS3 yet). The point is, in the future the RPCS3 version of Persona 5 could be the best version. Persona 5 running at 4K and 60 FPS is very possible.
The Persona 5 video that we timely put up a day before the English release of the game got a lot of attention. For example, PC Gamer wrote an article about it and even a former Atlus employee gave his look of disapproval on it.
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.
Atelier and Ar Tonelico
Atelier Rorona (plus), Totori, Meruru, Ayesha, and Ar Tonelico Qoga saw performance improvements this month. More importantly they can now load saves thanks to findings by Numan and Nekotekina. Thus these four Atelier games are perfectly playable and a fast CPU with Vulkan rarely drops below 30 FPS. Ar Tonelico Qoga randomly crashes around the world map however, but it is close now and seemingly every other issue is fixed.
BioShock went from doing nothing at all to going ingame with good graphics. There are a few insignificant graphical issues like incorrect water reflections, but other than that, it looks good. It is however a bit too slow to be considered playable, even on a very fast CPU.
Bleach: Soul Resurrection
Dengeki Bunko: Fighting Climax
Dengeki Bunko: Fighting Climax used to crash upon loading its system save data but this was fixed along with fixing save data bugs for Persona 5, Atelier, and other games. It now goes ingame with a bit broken graphics. Speed-wise it is already there given a very fast CPU.
Devil May Cry 3 HD
Devil May Cry 3 HD runs with flawless graphics and performance (stable 60 FPS) and only suffers from broken audio. Otherwise it’s perfectly playable.
Disgaea D2: A Brighter Darkness
With a patch by Nekotekina, Disgaea D2: A Brighter Darkness now runs at a steady 30-60 FPS on a fast system, up from something like 5-10 FPS. Basically Nekotekina patched out a game bug that would cause unnecessarily high CPU load, even on a real PlayStation 3. Thanks to this user Whymsical has already beaten the entire game in RPCS3!
Performance is doubled (though still too slow) and some graphical issues were fixed, although there are still some bugs like completely missing water in the image above.
This game went from doing nothing at all to being essentially playable. A few minor graphical issues can be seen, and sometimes it crashes, but it’s almost there now.
Final Fantasy X/X-2 HD Remaster
Final Fantasy X/X-2 HD Remaster went from only showing the opening scene to being slow but playable. This is thanks to the custom SPRX module loading improvements by Nekotekina.
Grand Theft Auto V
Hatsune Miku: Project DIVA F
Ani got a perfect score on extreme difficulty which shows that this game is now emulated flawlessly with no input lag or other issues that affect gameplay. Moreover this was done on a laptop with an i7-6700HQ.
Another affected game that now looks better thanks to SPU improvements. Heavy Rain renders its graphics very well, with minimal glitches. A bit too slow still but nearly playable.
Hitman: Blood Money
Hitman: Blood Money went from only showing the intro to going ingame and basically being playable. Some NPC animations seem broken, but otherwise it runs as it should at around 20-30 FPS on a decent CPU.
JoJo’s Bizarre Adventure HD
JoJo’s Bizarre Adventure: All Star Battle
A few lighting bugs were fixed making graphics in this game more or less perfect. It is still too slow to be playable however.
Kingdom Hearts HD 1.5 Remix
Metal Gear Solid 4: Guns of the Patriots
Metal Gear Solid 4: Guns of the Patriots saw some improvements from .sprx fixes by Nekotekina. It loads further now than before, but still doesn’t work. However included with this game is a bit of the original Metal Gear Solid game running in an embedded PS1 emulator. And that bit works!
Midnight Club: Los Angeles
Midnight Club: Los Angeles goes from rendering only the sky and some trees to showing the entire city without heavy glitches. It might be playable but for now it is too slow to even test. This is another game that saw graphics improvements after some SPU fixes.
Went from nothing to ingame. Bloom is too bright, but otherwise it looks good.
Ni no Kuni: Wrath of the White Witch
Graphics in NieR were improved this month.
Ninja Gaiden Sigma 2
One Piece Unlimited World Red
Outrun Online Arcade
Outrun Online Arcade runs at a smooth 60 fps with only a few graphical glitches (and being offline)
Red Dead Redemption
Another affected game by the SPU improvements. Red Dead Redemption renders its graphics almost perfectly. Unfortunately, it still crashes in title screen likely due to an SPU-RSX synchronization error.
Resident Evil: Revelations
Sly Cooper: Thieves in Time
The Elder Scrolls V: Skyrim
Skyrim needs some hacks to boot but it can go ingame with surprisingly correct graphics and awful performance. Interestingly it loads .esm and .esp files just like the PC version, so it can be modded!
The Legend of Heroes: Trails of Cold Steel II
Worms, Worms 2: Armageddon, and Worms Revolution
These go ingame with graphical glitches but might playable otherwise. Especially Worms Revolution, as it didn’t even boot last month.
SNES and GBA emulators
Here is some bonus content: homebrew emulators such as SNEs9x and Visual Boy Advance now run flawlessly at full speed in RPCS3. This month Nekotekina fixed missing sound for these two in particular.
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 Nekotekina has focused on making many improvements to the emulator in the form of various bug fixes across pretty much every part of the project. But let us highlight one particular pull request first:
RPCS3 works on Linux!
#2632 This is a great PR. Finally the last real crashing/hanging bug on Linux was fixed. RPCS3 on Linux went from running almost no games to Demon’s Souls and Persona 5 on Linux with this PR!
Compatibility is identical between the Windows and Linux builds of RPCS3. Everything seen earlier in this report running on Windows (probably) also runs on Linux. Right now hopefully only one bug remains where the LLVM recompiler is broken on open source Intel and AMD graphics drivers. It is being investigated. However if you are on the binary Nvidia driver RPCS3 should work just fine. Once the LLVM bug is fixed we will start to provide builds, but for now you will have to compile it yourself. This is also an excellent opportunity to call for some help. If you are experienced with packaging Linux software with for example Flatpak, AppImage, .deb, .rpm, or something else please get in touch with an administrator on our Discord server.
#2601 this PR implemented a simple patch/cheat system in RPCS3. On Patreon Nekotekina also posted a patch for the Disgaea games where what is essentially a game engine bug is fixed drastically lowering CPU usage and increasing performance in these games. It is now possible to reach 60 FPS in for example Disgaea D2.
#2630 this was a collaboration between Nekotekina and Numan (Inviuz) and fixed broken save/load in many games, for example Persona 5 and Atelier.
#2640 applied some fixes to the PPU Analyzer, auto-LLE, and created a warning about libfiber.sprx not working with LLVM, warning users why many games will not run using the recompiler and auto-LLE. The good news is that we now know exactly why Persona 5 fails on the PPU recompiler, although it will take quite a bit of work to fix.
#2654 made some improvements to the PPU, and also vastly improved audio on Linux by adding a ALSA audio backend.
#2684 brought various improvements to SPRX loading, and also made the “Load only liblv2.sprx” option actually work as intended. This closely emulates how games can load and unload system module files on a real PlayStation 3 and has drastically improved compatibility. Additionally, some games like Metal Gear Solid 4 and Star Ocean 4 load much further (though they still crash starting up, but for new reasons).
#2722 added libfs.sprx to auto-LLE, and implemented and fixed several functions to go along with this. This may have fixed rare and random crashes in file loading in different games. Every PhyreEngine game is helped by this PR as they need LLE libfs.
There were also several more smaller commits fixing other bugs although they are not detailed here. The complete list can be found here.
#2629 this fixed various Vulkan specific bugs in different games. Most notably Vulkan now looks as good (or bad) as OpenGL in Persona 5.
#2647 added GPU texture blitting and scaling, which caused amazing improvements in several games. He also improved RSX emulation alongside OpenGL and Vulkan backends, fixing various bugs and making improvements.
#2683 a SPU bug that caused broken graphics in various games was fixed here. It made characters visible in GTA 5 and also mostly fixed broken and flickering graphics in Ni no Kuni.
Moreover kd-11 added better logging and error handling in RPCS3 when used with incompatible hardware, and he currently working on some significant performance improvements behind the scenes…
#2631 made improvements to cellSave that allowed several games to start saving, moving them from ingame to fully playable.
scribam: Too many to count; he has stubbed various modules and functions throughout the emulator. Click his name to see a full list. This enables better logging of unimplemented functions. Moreover some minor bug fixes were committed. Moreover HLE libfiber was stubbed, also improving logging when this modules is used.
ikki84 & al0xf
#2600 implemented cellImeJpEnterChar, which allowed input in Persona 5’s (yes, even the English version), along with any other game that required Japanese input. This was in collaboration with al0xf (ssshadow) who did most of the work but didn’t have time to finish it when we unexpectedly learned that the English version of Persona 5 still used this module.
#2336 was finally merged, which began the long process of moving RPCS3 away from wxWidgets and towards a QT-based interface. flash-fire and Megamouse have continued this work, and are actively welcoming any contributions towards making it happen.
They registred various missing functions and modules, thus improving logging in RPCS3.
Implement value missing value in Vulkan “src_alpha_saturate” for OutRun Online Arcade, merged in master by raven02 with #2724
#2699 a compilation fix for Linux in certain situations.
#2809 a Linux fix where the settings dialogue would crash if RPCS3 was compiled in debug mode.
#2689 great usability improvements to the RPCS3 GUI. Radiobuttons are now in place clearly marking when module loading is automatic, manual, or automatic with manual overrides. Moreover labels like “D3D adapter” and “PAD Settings” were renamed to “D3D adapter (DirectX 12 only)” and “Keyboard settings” to avoid any confusion as to what they mean and do.
#2655 and #2687 fixed various bugs and missing functionality with trophies. RPCS3 still doesn’t show when they are unlocked (outside of a logged function call) but nevertheless this fixes various crashes in setting them up and such. For example Dragon Ball Z Ultimate Tenkaichi.
#2660 this fixed broken anti-aliasing in Catherine causing a wire-frame effect to show up on OpenGL.
#2719 this contains some renderer fixed making small improvements in a few games.
#2720 this fixes various bugs such as broken analog controls in Devil May Cry 3 HD and fixes other game have non working input (Date a live, etc…); decryption fixes for edat files (Metal Gear Solid 4: Guns of the Patriots), and better error logging (previously game content errors didn’t work).
Also coming up is #2733 which adds native support for DualShock 4 controllers. This should be a very popular feature; just plug in your DualShock 4 controller, set DualShock 4 as your input device, and play games! This also supports Sixaxis and vibration on any controller that has it. This will enable a few more games like flOw to be playable as they strictly require motion controller support.
flash-fire/megamouse: As mentioned, these guys are doing the heroic work of rebuilding the GUI in QT. Their progress can be tracked in #2645. This is important because the current GUI toolkit WxWidgets is *old* and also completely broken in situations like DPI scaling on Linux and Windows 7.
And last but certainly not least, there are some upcoming changes that may give a performance boost to a certain recent title that everyone seems to love.
This isn’t an exhaustive list of either merged commits or open PRs, but is a general overview. Progress is being made all the time, so join the Discord or follow the GitHub for the latest updates. And, as always, we can all expect at least another few “Fixes” PRs from Nekotekina in the coming month; wouldn’t be RPCS3 without them. Moreover thanks to MarioSonic2987 and twdarkeh for helping ssshadow write this progress report.
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. The Patreon has been steadily rising and is going to surpass the third goal any day now.
Any and all donations are appreciated, and they each come with Discord rewards! If you want to help out, you can check out the Patreon page here.
Thanks to the following people for writing on this report: ssshadow, DAGINATSUKO, Ani, twdarkeh, MarioSonic2987, Talkashie.