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