Progress Report: November 2017

November was one of the most interesting months of the year thanks to the huge amount of games that jumped out of Nothing into the Ingame/Playable categories. This is in part thanks to the hard work announced in December 1st, which made many previously non-working big titles now start working on RPCS3. Of course, some of the progress towards this announcement was merged gradually during the month of November. In this Progress Report, major emulation improvements will be detailed, followed by a list of noteworthy, interesting, and representative games that improved from these, and lastly individual contributions will be looked at closer.

Table of Contents

Major Improvements
Games
Commits
Closing Words

First things first, the compatibility statistics. In November we saw the category of games that do absolutely Nothing go down by over 100 games, and this while not taking in account any of the games that had reported improvements in December!
We are therefore making a prediction right now: thanks to the SPU/RSX fixes, amongst several other improvements: the number of known games that do Nothing will be less than 100 before the end of the year!

That is quite the feat because when the RPCS3 project got revitalized in January, thanks to Patreon and the full time employment of Nekotekina we had less than 100 games that were Playable – that to quite a lower standard than today. And the category Nothing didn’t even exist because we argued that “What is the point? Almost every game does Nothing anyway”. How far have we come!

Game Compatibility: Game Status
Game Compatibility: Monthly Improvements (November 2017)

Looking at the GitHub statistics for November 16 authors have pushed 172 commits with roughly 11,000 added lines of code, and 5,000 deletions.

Major RPCS3 Improvements

Ucharted 1, 2, 3; God of War I, II, III, Ascension; Ratchet & Clank I, II, III, IV; Little Big Planet 1, 2, 3; WipEout HD; inFamous 1, 2 and Every Other Exciting Game Ever

Well, not quite every exciting game ever, but on the first of december our week long countdown ended with a mega announcement of several high end “AAA” games that went from doing basically nothing to being nearly playable in some cases. And even The Last of Us improved a little (though it still doesn’t go ingame). You can read more about it in the following blog post:
RPCS3 begins to emulate several awaited AAA exclusives. Here’s how we’ve done it!

The full extent of improved games is not known yet, but testers have already found several more improved games besides the ones mentioned in the blog post. Such improvements will be discussed in the upcoming December Progress Report where the news technically belongs.

RSX Fixes by kd-11 (#3744) & (#3699)

These two sizeable PRs from kd-11 addressed a number of regressions and graphical issues in many games. Click on the links above to read detailed descriptions on what they improve exactly. The video below created by Asinine showcases many of these improvements with a side-by-side comparison if you haven’t seen it already, check it out!

Below are more games that were improved by these fixes:

Soul Calibur V

As you can see in the old (left) image Soul Calibur V character models were all kinds of broken before, now they mostly render correctly however everyone has white clothes and armor.

Armored Core: Verdict Day

Armored Core Verdict Day used to only display objects such as buildings in the top-left corner of the screen. As you can see in the image on the right this has been fixed thanks to kd-11.

Clive Barker’s Jericho

As you can see in the left (before) image Jericho used to look blurry and had numerous other graphical issues, now on the right (after) image the game looks almost perfect!

UFC 2009 Undisputed

UFC 2009 Undisputed used to display the ingame graphics at the incorrect size, but now it properly fills the screen/window.

Skylanders: Spyro’s Adventure and BioShock Infinite

Skylanders and BioShock Infinite received massive improvements in the graphics department this time around. Before, shown on the left, the games were a complete mess. Afterwards, shown on the right, the graphics are looking fairly accurate in the case of Skylanders, and a lot better though still not perfect in the case of BioShock (which also doesn’t progress past the main menu for now).

One Piece: Pirate Warriors

An issue with some incorrect graphics being drawn on the surface of the water has been resolved.

Lost Planet 2 & Resident Evil Code: Veronica X

Resident Evil Code: Veronica X as well as Lost Planet 2 now displays graphics for the first time, previously showing nothing at all.

Fixed regressions caused by initial Network implementation (#3702)

Clienthax fixed some regressions caused by Nekotekina’s network implementation. These changes made Backbreaker, Bomberman Ultra, NBA Jam: On Fire Edition, Need For Speed: Hot Pursuit, Resident Evil Operation Raccoon City and Driver: San Francisco go ingame!

Need for Speed: Hot Pursuit and Driver: San Francisco

Input Overhaul: Implemented controller button remapping and more (#3611)

Megamouse made an overhaul of the Input system, adding support for full button remapping, deadzone configuration and rumble intensity. These changes affect all controllers that use Xinput, Dualshock 4, evdev or MMJoystick as an input method. The Dualshock 4 remapping does not yet support touch sensors.

More Games

Here we will look at some of the top games of the month so to speak. These are either popular with the community or interesting in some other way, such as representing certain changes in a clear way. Regardless they all improved in one way or another during November, and they are just a small selection out of the potentially hundreds of different games that were more or less improved this month.

Dragon Quest Builders

A user by the name of Illynir managed to complete Dragon Quest Builders without a single crash and over 70 hours play time. This title also performs really well and the graphics are near perfect.

Dark Souls 2


Thanks to some changes from Hcorion, Dark Souls 2 went from not even booting to going ingame! The fix was actually quite simple, but as usual finding what is going wrong is the most difficult part. The game was asking for information on a connected mouse, regardless of if a mouse was connected or not in RPCS3 settings. The fix was simply returning an error to the game when it did this, that there is no mouse connected, and that makes it stop asking. Previously we just returned the OK status code but with no mouse data which caused the crash. In the above image we see the first screenshot Hcorion took of Dark Souls 2 running in RPCS3 on Linux with Vulkan. But from there kd-11 quickly got to work with the graphics. In the screenshots below we see a comparison between how it initially looked, and how it now looks after some love by kd-11. Speaking of that, in this separate post kd-11 went into much greater detail on what was fixed and how. Take a look at it, it is quite the interesting read even if everything isn’t completely understandable by a non guru!

This is actually major news for the Soulsborne community. On PC there is no way to obtain the original and unpatched game, should enthusiasts want to experience that. But now it would be easy to obtain a cheap (used) PS3 disc and play it with RPCS3 with in high resolution and with added anisotropic filtering.

NCAA Football 14


In the spirit of preservation, RPCS3 makes it possible to play this classic sports game that was discontinued due to various reasons. NCAA14 has been sought after by collectors and enthusiasts alike as it is the last in the franchise. As you can see the game has some issues such as the “yellow filter” which quite a few other games experience. However this also means that when it is fixed there will be another long list of games that improved.

Mobile Suit Gundam Extreme VS


Thanks to some changes from Clienthax this game and the “Full Boost” edition of the game now go ingame with near perfect graphics! The main remaining issues with the game is relatively low performance and bad audio.

Untold Legends: Dark Kingdom


This Playstation 3 launch title is now completely playable on RPCS3, previously it would quickly crash. Performance and graphics are at a glance excellent.

Battlefield Bad Company


Lighting improved in Battlefield Bad Company. It is still slow and has graphical issues but it’s getting there.

Skate 3

Shadows improved with Skate 3, the characters shadow are no longer inverted however the environment shadows are still incorrect.

Fight Night Round 4

Graphics have improved a lot with this game recently, the main remaining issues are low performance and bad audio.

Sly Cooper Thieves in Time

Sly Cooper Thieves in Time no longer requires Write Color Buffers to be enabled which increased performance and some issues when the camera was at a high angle have been fixed. However in order to get this game to run you must manually load the libaudio.sprx firmware which will result in no audio being output.

TNA iMPACT!


This Wrestling game made its way into the playable status this month!

Commits

As always, this is not a complete list of PRs or commits, nor does it necessarily list every single thing done by a given PR. For a full list, see PRs merged in November. Many of the unmentioned PRs are simply small updates, fixes, PRs mentioned in the previous reports, or minor improvements, sometimes only to the GUI.

Nekotekina

3760 – Nekotekina improved the way RPCS3 creates log files which are used for debugging. He also improved the PKG installer; it now handles downloadable content better.

3714 – This PR contains a wide array of minor fixes, implements a few new things, and does some work in cellSaveData to improve save functionality. It also has a few performance optimizations.

3749 – Fixes a timeout in cond_variable found by Farseer2.

3775 – Fixed an issue where RPCS3 would crash when using “Exit RPCS3 when process finishes” with games that use launchers such as HD collections.

3791 – Fixes the log file limit, an RSX bug, and improves sys_usbd_receive_event.

kd-11

3689 – Fixes some performance regressions from a prior PR. There are mostly interim fixes until a later PR introduces more complete implementations and optimizations.

3696 – This pull request by kd-11 changed some behaviour of the RSX rejecting framebuffer memory. A few games were fixed thanks to this.

3699 – This re-implements the shader pipeline with optimizations to the cache, implements texture data caches, render-to-cubemap, partially fixes texture size detection, hangups when using Write Color Buffers, and a workaround for a bug with AMD drivers (to quote kd-11: “Ugh”).

3711 – Some relatively minor fixes. Disable blit operations where the target is of size 0, bumps the shader cache version, some optimizations to cause fewer shaders to be generated in certain titles, and no longer respect FENCx instructions as they cause stupidly broken shaders.

3744 – This was a WIP implementation to try to get WCB working that was mostly successful. It enables blitting from main memory to local, allowing more titles to not need the slow WCB option. This also fixes a memory leak with some NVIDIA cards.

3772 – This PR contains work done on depth/color address when contention happens, implements Vulkan zcull, shader overlay implementation, fix precision modifier broken last time, and fixes face winding on OpenGL.

Megamouse

3688 – Fixed a crash when launching games via a shortcut or terminal command and “Exit RPCS3 when process finishes” was enabled.

3729 – Trophy management window now properly saves its dialog and icon state.

3751 – Small cleanup so RPCS3 will use a global appicon across various dialog windows instead of setting one for each window.

3753 – This pull request moved the “Disable Vertex Cache” option back onto the GPU tab in the settings menu. It had previously been moved to the debug tab.

3611 – Megamouse corrected some behaviour with RPCS3 where custom game configs would save even if you hit close rather than save. And support for full button remapping which was already detailed under the major features section here.

Hcorion

3673 – Hcorion laid the groundwork for connecting USB devices to RPCS3. This PR ‘stubs’ the USB syscalls. Stubbing a syscall won’t magically make it work like it would on a real PS3, but it implements them just enough so that it should work without regressing other games.

3694 – This pull request fixed cellMouseGetDataList which made Dark Souls 2 go from not even booting to going ingame!

3704 – Improved the version identifier on the game window to indicate if a branch other than master is being used.

3776 – Uses a new progress_dialog for installations.

flash-fire

3683 – Fixes the trophy system to no longer require the game to run once to register. Allows for a smoother transition between versions. Also fixes a crash when passed bad data, so incorrectly installed trophies are ignored rather than crashing the emulator.

3715 – Fixes an off by one error. Trophy manager now displays as intended.

Clienthax

3702 – Clienthax fixed regressions from Nekotekina’s network implementation, this was already detailed under the major features section here.

3734 & 3739 – By fixing a bug in sys_spu_thread_group_create Clienthax made Mobile Suit Gundam: Extreme VS & Mobile Suit Gundam: Extreme VS Full Boost boot for the first time. Shortly after he made cellSearchInitialize fire a callback which then moved both of the Gundam games to ingame!

Farseer

3690 – Fixed a fatal error (cellGameGetParamString: bad_alloc)

3708 – If a game requested a timeout that was too large when using Windows, an overflow would cause it to expire immediately. Thanks to Farseer and Nekotekina, this has been resolved.

3771 – Farseer made a temporary fix to cellGameBootCheck which allowed Ben 10 Ultimate Alien: Cosmic Destruction to go from loadable to ingame!

3742 – By checking sys_spu_thread_group_create’s nsize Farseer made some compatibility improvements with Pro Evolution Soccer games.

PeterMcteague

3799 – Added installation for additional packages on game boot (rebased and corrected by Nekotekina).

VelocityRa

3780 – VelocityRa avoid recreating SwsContext every frame

scribam

3682 – Fixes an uninitialized value in the RSX.

3703 – Some minor changes to the PPU translator for consistency and preparing for LLVM 5 and beyond.

3743 – Bumps the cmake requirement to a new version.

3757 – cpu_set_t only applies to linux, as it is unavailable on MacOS. MacOS remains unsupported in general however.

3758 – Fixed a bug introduced in an AppVeyor update.

3773 – Has CMake detect libswscale. Required for build, helps in certain developer situations.

3783 – Some general CMake improvements, such as simplifications and coding style fixes.

3784 – Updates the ReadMe on Fedora packages that are required to build.

3793 – Updates to Qt 5.9.3 on Travis, AppVeyor will automatically switch when available.

Ani

3728 – Ani fixed the version identifier for RPCS3 and also bumped up the version to 0.0.4!

Closing Words

If you like in-depth technical reports, early access to information, or you simply want to contribute, consider becoming a patron! All donations are greatly appreciated. As of October, RPCS3 now has two full-time coders that greatly benefit from the continued support of over 730 generous patrons.

Also, come check out our YouTube channel and Discord to stay up-to-date with any big news.

This report was written by ssshadow, Asinine, Talkashie, and Ani.