Hi,
It's kd-11 with a quick development update on RSX emulation.
This is going to be a rather short update compared to the previous one. With keeping in line with the roadmap tactic of alternating between features and bug fixes, I have focused all my efforts for the past two weeks on bug fixes since the shader interpreters were added into the codebase. The strategy this time is to prioritize old tickets on github and solve at least one issue for each of them before moving on to newer issues. Since old tickets are from a period where rpcs3 was not so advanced, bug fixes to those issues tend to also automatically fix newer reported issues in more advanced games but without having to deal with the increased complexity.
A quick summary of RSX fixes added recently include:
1. The oldest rendering bug still active on github was fixed, it was from October of 2016. Rendering may have been fixed earlier but we introduced some memory access violations from RSX side that were finally resolved.
2. Alpha reference decoding for the Hatsune Miku engine was fixed, solving transparency problems in some of the later games.
3. Another old ticket from October 2017 this time was fixed, regarding the Saints Row engine. By reversing how the console remaps some special data formats, lighting in the series of games was fixed. This also automatically fixed some other games such as Red Faction: Armageddon.
4. Some shader pack/unpack instructions were fixed to match the PS3's behavior. This change was initially made as part of the investigatio for the Saints Row bug report, but it also fixed lighting in GTA V, Gran Turismo and even the Playstation Home client.
5. Investigations into odd values coming from rpcs3 vs real hardware led to a discovery about some unexpected but consistent behavior of the PS3 GPU when it comes to doing MAD instructions. A MAD instructions is a fused multiply and add instruction of the form a * b + c, and I was able to verify that the PS3 treats the first argument "a" very differently from the other 2. Implementing this behavior in rpcs3 fixed the sky in GTA V, the water rendering in One Piece: Pirate Warriors and the tonemapping in Crysis for PS3.
6. Other minor maintenance changes were made to fix minor crashes or other undesirable behavior.
I will continue working on the old bugs and glitches for the next two weeks before moving back to the roadmap. My first task there will be to clean up our code base and polish already implemented functionality such as the shader interpreter as well as fixing any vulkan device lost bugs I can find that may not have been reported. Optimization work should follow shortly after that and the plan is to move the codebase into maintenance mode immediately after that to close the majority of remaining bugs and/or regressions.
Thank you all for your continued support.
Regards,
kd-11