Progress Report: March 2017

March 2017 beat the previous record set by February 2017 as the most eventful month in the history of the project. So much happened that even this colossal progress report can only begin to scratch the surface.

First of all, lead RPCS3 developer Nekotekina reached the $1000 goal on Patreon, securing his long time commitment to work on RPCS3 full time. This was the direct result of the massive amount of attention the project got when two popular games were drastically improved this month. First, Demon’s Souls went from crashing in zero seconds to going ingame and almost being playable. Second, the cult classic Catherine received significant performance improvements and now runs with practically perfect graphics and performance. The two videos of these games received over 200 000 views on the official RPCS3 YouTube channel. Even the famous YouTube personality, TotalBiscuit was impressed with the progress, and the killing of the notorious Demon’s Souls boss Vanguard in RPCS3.

Of course the hundreds of videos posted by the community on YouTube, different forum posts, Reddit submissions, and so on, have contributed greatly to the massive growth of the RPCS3 community. In fact, new developer Inviuz aka Numan was one of these people who recently discovered RPCS3, spent a lot of hours reading the code and debugging Demon’s Souls, and finally getting it to boot for the first time. Oh and Red Dead Redemption also went to the main menu thanks to this, and some graphics improvements by kd-11. This showcases one of the most important strengths of RPCS3 being free and open-source software and it is very likely that more and more people will join the project in the future and contribute changes both big and small.

Since the last progress report, approximately 17 authors have made 115 commits with 6,831 lines of code added, and 4,471 lines of code deleted. And some significant improvements are still in the pipeline but have yet to be merged.

The progress report is mainly split into three different parts. First we will take a closer look at what each pull request this month did, and show a few practical examples. Thereafter we will take a look at a selection of some interesting games that were improved this month, though this is just a small slice of the hundreds upon hundreds of games that received small or significant improvements this month. Lastly we will take a look at some of the upcoming changes before rounding of this monthly progress report.

This Month’s Contributions

Let us start with Nekotekina who did some significant work this month. Over 60 commits encompassing a lot of major improvements such as automatic LLE module selection (probably the single most requested feature ever), LLVM 4 for Ryzen support, and staggering performance and stability improvements in many games.

Nekotekina’s Contributions

Automatic LLE (#2459)

Probably the single most anticipated feature ever. If you don’t know what this is, RPCS3 previously required you to manually pick which firmware modules should be loaded for each game. People would often have to refer to long lists of 20+ modules on the forums, often discovered by trial and error. However this is all ancient history now. RPCS3 will analyze the game executable and automatically load the required libraries now.

Reservations rewritten (#2404)

Substantial performance and stability improvements in many games. For example Catherine, [redacted], and Demon’s Souls saw large performance improvements from this. In fact, [redacted] is literally 10 times faster in all scenarios now, going from about 1 to about 10 FPS in the opening scene for example. In battles and dungeons [redacted] can peak at 30 FPS already. Catherine also runs at a stable 30 FPS in all scenarios with an overclocked Haswell-E 6-core or a Ryzen 7 8-core.

Continue reading Progress Report: March 2017

Progress Report: Demon’s Souls Nearly Playable and RPCS3 v0.0.2

It finally happened! The PlayStation 3 emulator RPCS3 has launched one of the most iconic games on the platform: Demon’s Souls. Are you curious to know how it all happened? What the developers went through? Welcome to this first of hopefully many to come developer logs where we will now tell you everything.

It all began in our Discord channel where a user going by the nickname, Numan approached us with some interesting news. He claimed to have conducted a detailed investigation of what Demon’s Souls was trying to do when it was crashing one second after booting. He drew the conclusion that the game was trying to allocate memory pages of different sizes, access levels, and different attributes. When the game then tried to access a specific memory address, it crashed with an access violation. Consequently, these discoveries lead to a more accurate implementation of the function sys_memory_get_page_attribute() which was responsible for this particular crash. Suddenly the game booted up in RPCS3 for the first time ever and showed a loading animation!

Continue reading Progress Report: Demon’s Souls Nearly Playable and RPCS3 v0.0.2

Progress Report: February 2017

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

kd-11: RTT Shader access fix (#2357); Implement BRB Opcode (#2426)

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:

Yakuza 1 & 2 HD ingame

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.

Continue reading Progress Report: February 2017

Progress Report: January 2017

A lot of things happened in January, specifically the second half of the month. As you all know, veteran RPCS3 developer Nekotekina had the opportunity to launch a Patreon with the goal of working on RPCS3 full time, and right now he is doing so.

At the time of this post and since the 1st of January, Nekotekina has made 54 commits on GitHub with various changes and improvements. In total, for the past 31 days, there were 82 commits with 6,726 lines of code added and 4,867 deleted by 11 authors. For example:

  • O1L made several improvements to graphics emulation, fixing bugs and implementing new things. This has made, among many games, Vanquish go ingame (with a lot of issues) and the PS3 version of GTA: San Andreas is now almost playable.

  • al0xf (a.k.a ssshadow) made a basic implementation of the PS3 on screen keyboard, therefore it is now possible to enter character names and such in several games like .hack//Versus and Terraria which takes these from menus to ingame and maybe even to a playable status.

  • Kirbyfan64 fixed a bug related to how RPCS3 measures time which should improve performance in general, especially in scenarios that were already close to 60 fps. For example Hatsune Miku: Project Diva Dreamy Theater is playable at a stable 60 fps now.

  • Cornytrace has started the important task of automatic decryption of encrypted .sprx files. This will fix a lot of games silently failing to boot if one is not very observant of the log file.

  • AniLeo did a lot of maintenance work such as updating the build scripts for AppVeyor and registering a few missing functions.

  • ikki84 stubbed cellMusic which made for example .hack//Versus and JoJo’s Bizarre Adventure All-Star Battle go ingame (they are maybe even playable now).

  • Shadow made a small improvement to cellSaveData which fixes a crash in Bomberman when it tries to load a non existing save file.

  • Talented graphics developer kd-11 has not yet committed anything to the master branch, but has made a lot of progress with several reported bugs.

So what was Nekotekina up to? An almost innumerable amount of things:

  • Fixed countless bugs in several games, some went from nothing to playable, other crash a few seconds later instead…

  • The AoT PPU LLVM recompiler now shows a progress window instead of seemingly hanging the emulator when compiling. What does AoT PPU LLVM recompiler mean? Maybe a topic for a future post.

  • A bug in the PKG installer was fixed, every homebrew should now be installable.

  • IdManager which issues numeric identifiers for PS3 kernel objects has been improved.

  • Small fixes in the video decoder has fixed cut-scenes in Catherine (and several other games as well) sometimes hanging or crashing. Additionally Steins;Gate 0 and a few other Visual Novels went from only showing the intro to being playable thanks to this.

  • Some Linux specific crashes were fixed. It’s not perfect yet, but work is ongoing.

  • Several thousand lines of code related to synchronization primitives was refactored. These are used in multi-threaded software to ensure that different threads do not conflict with each other, for example by modifying the same piece of data at the same time. Some bugs were also fixed in the process, and a few games now run better. This was important to simplify further development on RPCS3.

Miscellaneous

Let’s of course not forget the other big things that happened in January. Talented web designer DAGINATSUKO made an entire new website for rpcs3, including styling this blog.

  • AniLeo made a compatibility database, also spending countless hours checking recent and old test reports (some dating back to 2014) and filling it in. At this point in time over 500 games are listed, with 62 being playable, and an amazing 247 going ingame!

  • ssshadow and BlackDaemon tested a lot of games and made videos of them, some which are quite popular on YouTube. They also spent a lot of time answering questions on Discord and on the forums, getting some new games running in the process.

  • Youtubers like John GodGames and Rain Kikyou also tested several games and made popular youtube videos of them.

Game Compatibility

This is by no means a complete list, but here are some more notable games that either started working, or now work better than before. Countless more have also been retested on the forums, and found to be improved in one way or another.

Continue reading Progress Report: January 2017