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.

Continue reading Progress Report: May 2017

Lead Graphics Developer kd-11 Is Joining Nekotekina’s Patreon

Veteran RPCS3 graphics developer kd-11 is joining Nekotekina’s Patreon. kd-11 has worked on RPCS3 since January 2016 and has since then fixed countless bugs in all graphics renderers and implemented a lot of missing functionality. Without his dedicated work, RPCS3 would certainly not be where it is today.

As you know lead core developer Nekotekina, who has worked on RPCS3 since 2013, launched his highly successful Patreon in January this year. Thanks to the overwhelming amount of support, he has been able to work on RPCS3 full time for 5 months now and the progress he has done is staggering. The RPCS3 team has discussed the best course of action for the road forward and have decided that the time is now right for kd-11 to join Nekotekina’s Patreon in order for him to obtain hardware necessary for development and testing.

The Purpose

As kd-11 works on the graphics side of things, especially the renderers using OpenGL, Vulkan, and D3D12 (Direct3D 12), modern hardware is required for development and testing. Ideally, he needs a modern AMD, Nvidia, and Intel GPU to easier identify bugs specific to one platform. Furthermore, kd-11 works as a consultant and therefore has the possibility to accept or turn down certain jobs. If support on Patreon reaches a certain level, he may be able to spend more time on the project.

As of now the goal is obtaining necessary hardware for development and testing:

  • – A modern AMD GPU that supports DirectX12 and Vulkan.
  • – A modern Nvidia GPU that supports DirectX12 and Vulkan.
  • – A modern Intel CPU where the iGPU supports DirectX12 and Vulkan

Roadmap

With the support of generous patrons kd-11 will be able to work on the following tasks:

Short term

  • – Investigate game specific bugs like the overly bright bloom in [redacted] or the overly dark lighting in Demon’s Souls.
  • – Improve performance and compatibility of all renderers.
  • – Enable Vulkan on Linux, which will bring a tremendous performance improvement for some games.
  • – Implement missing functionality that will fix various bugs in different games. For example, the broken shadows in many games including Demon’s Souls depend on this task.

Mid term

  • – Properly support some PlayStation 3 features like MSAA that are lacking at the moment.
  • – Implement RSX reports which are missing at the moment.

Long term

  • – Enable higher rendering resolution to play games at any resolution, for example 4K instead of 720p in Demon’s Souls or [redacted].
  • – Enable extra graphics options to support extra rendering features, such as custom anti-aliasing modes.

Continue reading Lead Graphics Developer kd-11 Is Joining Nekotekina’s Patreon

Progress Report: April 2017

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.

Game Compatibility: Game Status

Game Compatibility: Monthly Improvements (April 2017)

[redacted]

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 [redacted] running in RPCS3 for our YouTube channel.

[redacted]

Here are some really interesting results. [redacted] 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 [redacted] could be the best version. [redacted] running at 4K and 60 FPS is very possible.

Continue reading Progress Report: April 2017

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