February 2017 was one of the most eventful months in RPCS3 history. Earlier this month we reached the first Patreon goal of $500, thus ensuring that Nekotekina can continue to work on RPCS3 full time for the time being. A total of 17 authors have pushed 127 commits to the master branch, with 9882 lines of coded added and 6575 lines of code deleted. This represents several hundred, if not thousands hours of work on the project, and it really shows.
In this progress report we will take a look at what each person has been working on for the past month, and highlight some of the more noteworthy changes. This is however far from a complete list of contributions and improvements. Several people in the community have tested hundreds of games, reported several issues, made YouTube videos and supported people on Discord. Nekotekina, kd-11, and the rest of the RPCS3 team would like to thank everyone for their contributions to the project.
This Month’s Contributions
Catherine: Before and After
The talented graphics developer kd-11 made great changes this month fixing a lot of graphical issues in several games. With fixes to RTT shader access Catherine went from a half screen mess to looking perfect with Vulkan and DirectX 12. Several other games were also fixed with this commit such as Turbo Super Stunt Squad and Bakugan Battle Brawlers. Moreover Eternal Sonata’s main menu isn’t black anymore.
kd-11 also implemented the BRB opcode improving a lot of games such as Yakuza 1 & 2 HD, One Piece: Pirate Warriors, Hellboy: The Science of Evil, Saint Seiya Brave Soldiers and Sly Cooper: Thieves in Time. Specifically Yakuza 1 & 2 HD went from only a black screen to going ingame and running quite well:
Lastly kd-11 is also working a significant commit improving the texture cache. This will fix broken graphics in several games such as Turbo: Super Stunt Squad, Akiba’s Trip: Undead & Undressed, Lone Survivor, Devil May Cry 4, and Persona 4 Arena (and probably many other games by Arc System Works!). But more on this in the next monthly progress report.
Shadow: Joystick support using mmsystem library on Windows (#2355); Per game configuration (#2418, #2422); HLE cellGameGetHomeLaunchOptionPath, sceNpTrophyCreateContext, cellDiscGameGetBootDiscInfo (#2382, #2390)
The new mmjoystick option in the settings window
Shadow greatly improved gamepad support on Windows: any gamepad that is detected by Windows should work in RPCS3 now. Before that, only XInput compatible devices would work without additional software.
He also reimplemented per game configuration files, which is very helpful for people that want to test several games – they won’t need to reconfigure every game twice. One now only need to right click on a game in the game list to configure it uniquely.
Moreover Shadow fixed miscellaneous bugs with trophies and such which made, for example, “Söldner-X: Himmelsstürmer” go from nothing to playable with good frame rate. This bug likely affects a few other games as well. cellDiscGameGetBootDiscInfo was also implemented helping a few games, most notably Resistance: Fall of Man that now loads for a bit longer before crashing.
cornytrace: PS3UPDAT.PUP installer (#2386, #2398)
The firmware installer in action
One can now acquire all LLE modules by simply letting RPCS3 extract an ordinary PS3 firmware update file. Moreover as decryption on the fly of .sprx files was implemented together with this one no longer need to manually decrypt the LLE module files, or any game .sprx files. It is no longer necessary to grab these files from your own CFW PS3.
The Legend of Spyro: Dawn of the Dragon now displays proper ingame graphics. Incidentally, together with other general improvements to performance and stability this game runs very well now, check out this video for example. Yes, the game seems payable!
Jarveson also improved cellPngDec HLE, making games like Sonic CD and Arkedo work without LLE cellPngDec.
This works around some rare crashes in a few games. For example in game video cutscenes in Persona 5 are now skippable without crashing (and without a hacked build as before).
AniLeo: Rough implementation of above RSX methods (#2403); Default dGPU on Nvidia Optimus systems (#2400); Hide D3D12 on non-w10 OSes (#2416); libnet: recvfrom fix (#2427)
AniLeo roughly implemented some GCM Direct Memory Access methods. Sword Art Online: Lost Song, Dragon Ball Z: Battle of Z, Costume Quest, Costume Quest 2, Stacking Demo, AKB1/149 Renai Sosenkyo and a few other titles now show their Intros.
He also defaulted RPCS3 to use the dedicated graphics on Nvidia Optimus and AMD Switchable Graphics systems, which prevents unaware users from using their Intel integrated graphics instead of their dedicated graphics, which can cause unexpected behaviour. Moreover a libnet function which was crashing the emulator on One Piece: Pirate Warriors Menu was fixed.
flash-fire: Small code quality improvement in the GUI (#2395)
Nekotekina’s February Commits
Almost too much to be listed in one blog entry with a total of 79 commits. Even trying to keep it brief the following list is more than one full page in the text editor.
Some very nasty and deeply rooted PPU bugs were fixed. These bugs affected a few CPU instructions and how time is measured in RPCS3. The result? A staggering number of games stopped crashing or hanging.
Persona 5, Atelier Rorona, Totori, Meruru, Ayesha, Ar Tonelico Qoga, Trinity Universe, Tekken 6, and Project Diva F 2nd are amongst the many, many, titles who were improved by said bugfix. These games either went from nothing to ingame, or they no longer randomly hang after circa 30 seconds. Moreover videos and music in all Disgaea games started working properly again with this fix. One could even make the bold claim that every single game that uses PhyreEngine saw an improvement here. That said the situation is not perfect, many of these games still randomly hang, but much less often than before. For instance Atelier Ayesha went from hanging in a few seconds to hanging after 50 minutes. Needless to say this is slightly trickier to debug, but Nekotekina is taking a look at it.
Moreover Red Dead Redemption, in conjunction with the graphics improvements by kd-11, now shows some intro logos.
This bug was fixed by investigating why Arkedo 1 was hanging randomly. Fun fact, the three Arkedo games were the first commercial games to boot way back in 2014. Also during Debugging Nekotekina concluded that the game is a bit buggy on a real PS3 as well, if left running it will hang after ~40 days have passed.
But yes, fixing a bug in Arkedo 1 improved all the games mentioned earlier, and it made Red Dead Redemption show intro screens.
A priority based thread scheduler was implemented, which means different game threads can now run at different priorities like on a real PS3. At the very least this can be a small performance improvement, if only a few percent more fps. It can also, in theory at least, improve stability in some games.
The rpcs3 debugger was greatly improved and fixed. One can now follow the PC (program counter) for each thread, see CPU register contents, and set breakpoints. This has nothing to do with playing games, but it is an important step in debugging them, that is finding bugs and further simplifying development.
Some synchronization primitives bugs were fixed and performance was increased. For example Catherine is running faster than ever, and combined with earlier mentioned graphics fixes by kd11 this game is very close to playable now.
Nekotekina fixed several different bugs causing crashes on Linux, most of these were also fixed along with refactoring synchronization primitives, thus helping both the Windows and the Linux version in one way or another. Although the Linux version still isn’t perfect, many games now hang on a black screen, it is clearly improved and a few commercial games work as they should now. Below we can see The Guided Fate Paradox and The Legend of Spyro ingame and playable on Linux, along with Catherine at least showing the loading screen. As seen below the fps counter is not functioning yet, but work is ongoing, and as Nekotekina continues to debug different Linux specific issues while refactoring years old code. Maybe Catherine will go ingame on Linux in the next progress report?
A lot of work was spent on improving the LLVM recompiler. First of all some bugs and regressions were fixed, for example Hatsune Miku Project Diva F, and likely a few more games, can now run with the recompiler again. Most importantly the LLVM recompiler now caches its output so one only has to recompile a game once. Upon restarting a game the cache files will be loaded and the game will be up and running immediately. Moreover the entire game binary isn’t recompiled at once, instead the process is splitted up into several steps. This drastically lowers memory consumption, for example when recompiling Catherine rpcs3.exe used to consume about 6 GB of RAM, but now it peaks at about 1 GB, quite a bit lower and much more usable on computer with 8 GB of RAM. Great improvements for the LLVM recompiler all around in other words. Below is a screenshot of Catherine reaching more than 20 fps ingame. It is very close to being perfectly playable now.
Last but not least, Nekotekina has been researching proper behavior of many functions, and fixed bugs in general. For example by investigating the strange crash when starting Persona 5 more was understood about the finer details of how libFiber operates (used to offload computations from the PPU to the SPUs). Along with a small graphics fix by O1L Persona 5 now runs (or rather walks) on the master branch builds without any strange hacks. The remaining issues, aside from running at 1-10 fps, are that loading saves doesn’t work, and one can’t get past name input because of unimplemented functions for Japanese character input (imejp). Of course the hunt for bugs continues.
Website and Compatibility
During this month our website was visited ~160.000 times by ~125.000 unique visitors accounting for a total of 11 million hits!
Our most viewed pages were, by order: Compatibility, Homepage, Download, January Progress Report and The Quickstart Guide.
Fun fact: We got some visits from the PlayStation browser!
AniLeo finished reviewing over 1600 forum threads (while fixing/merging some), filling in the compatibility database with all the user provided reports.
Here are the compatibility statistics for today (generated on 26th Feb, 16:30 GMT).
ssshadow and AniLeo went through a month of changes and reports to write this progress report. Together with BlackDaemon and kd-11 hours upon hours were also spent testing different pull requests and debugging issues, along with supporting users on the forums and on Discord.
Clienthax did an interesting discovery, the PSN version of Zone of the Enders HD also includes the Xbox360 executable with debug symbols:
John GodGames made videos of several games running on RPCS3 on his YouTube channel with 265k subscribers while reporting the many bugs he found along the way.
BlackDaemon also tested hundreds of titles and reported their statuses on the forums, finding many improvements since the last time they were last reported tested. Moreover digitaldude also tested a significant number of games. Of course we would like to thank everyone else on the forums for testing games and reporting issues. Even testing only one new game is still valuable information.
This is by far not a complete list of games that started working, or games that now work better than before, but this should be an interesting selection of some more notable improvements.
Skate 2 now goes Ingame, although it looks very orange. (Thread: http://www.emunewz.net/forum/showthread.php?tid=178308&pid=244009)
The steeplejack master doesn’t spin in a loop anymore, therefore, Ar tonelico Qoga: KoAC reaches much further in its emulation now. (Gameplay: https://www.youtube.com/watch?v=Fe4p_4R4TqU)
Red Dead Redemption now plays an Intro! (Video: https://www.youtube.com/watch?v=yv2ocu8f_b0)
Ni no Kuni – Wrath of the White Witch goes Ingame! (Video: https://www.youtube.com/watch?v=paD1j5j2HvI)
Atelier Totori goes ingame and runs quite well. Meruru also works just as well. (Video: https://www.youtube.com/watch?v=ouniEtytfgI)
Atelier Ayesha also goes ingame and runs quite well. The below video was edited down from 50 minutes of gameplay at close to full speed with the LLVM recompiler. (Video: https://www.youtube.com/watch?v=IV3n8CUzH-E)
As mentioned earlier Persona 5 no longer crashes on the master branch builds, and no longer hangs after 3 seconds even if you use a hacked build to make it start. The screenshots above were taken from the first part of the game, up until name input where it crashed because of unimplemented functions for japanese name input. In this month Persona 5 went from (officially) crashing instantly to going ingame and running slow but stable.
Killzone now reaches the main menu and even goes ingame with broken graphics and low speed.
Batman: Arkham Origins Blackgate
Dragon Ball Xenoverse
Jojo’s Bizarre Adventure HD
The Legend of Heroes: Trails of Cold Steel 1 & 2
NBA Live 09
The Amazing Spider-Man 2
Saint Seiya: Brave Soldiers
Tekken 6 goes ingame and would be playable if it ran faster.
Last but not least, Bayonetta now goes ingame. It looks good and runs stable but is far to slow, for now. Video: https://www.youtube.com/watch?v=_3btzJZGI4A
Once again, this is a small selection of all known games that were improved in one way or another in February. There are probably many other games out there that remain untested for now.
This report has hopefully highlighted some of the more significant improvements to RPCS3 in the month of February. Of course work on RPCS3 continues with Nekotekina currently working full time on the project thanks the generous support of the patrons. Thanks again to all the Patrons who helped reach the $500 goal on Patreon and who made all of this possible.
This month’s Supporters+ ($25+) were: Howard Garrison ($100).
This wraps up another monthly progress report. We hope you enjoyed reading it as well as the changes themselves and stick around for the coming months! Don’t forget you can join our Discord server and forums to keep in touch.