After 9 years game developer Adrian who also goes by the name Silent or CookiePLMonster, has finally fixed the strange ‘black blob’ artifacting/glitch issue in Mass Effect, that only impacted AMD FX and Ryzen processor systems.
Just in case you didn’t know about this old Game glitch/bug, when Mass Effect was released, the PC port was affected by a mysterious ‘blocky’ character texture issue, when AMD released its Bulldozer-based CPUs in 2011, and it even effects all the current AMD Ryzen processors. As you can see from this video the character models are all in ‘black shapes’.
As game developer Adrian points out in his lengthy blog post, vendor-specific game bugs are certainly not new, but they are typically related to GPU or driver issues. This seems to be the only graphical bug to affect particular CPUs from a specific vendor, which is AMD in this case. There are few existing workarounds that can fix this ‘black character texture’ issue, but the game developer decided to find out the root cause of this problem.
After some investigation, it appears that AMD’s FX and Ryzen processors don’t support the 3DNow! Instruction set, so the previous assumption was that the game engine will try to use these instructions whenever it detects an AMD processor. Though, according to Adrian, this doesn’t seem to be the case, because the game does not use that instruction set directly. The problem was first isolated to the Processor Specific Graphics Pipeline (PSGP) and Adrian found out that disabling this feature corrected the issue.
Upon further investigation, Adrian found that the issue was related to NaN values in pixel shader constants, but even after fixing the issue some of the in-game character models were still rendering as ‘dark grey’ images. After a bit more thorough testing, Adrian finally found the real root cause of this bug which lies with the game` engine being too sensitive to issues when it uses the AMD SSE2 instruction set, with improper calculations.
This whole process/testing might seem very complicated to some of you, so you should read his full Blog post for more details. But these are some of the important ‘technical’ points taken from his blog post:
- We verified that the game does not use 3DNow! instructions directly (only the system DLLs do).
- We found out that disabling PSGP fixes the issue on AMD processors.
- Using PIX, we found the culprit – NaN values in pixel shader constants.
- We nailed down the origin of those values to D3DXMatrixInverse.
- We fuzzed that function and found out that it does not give consistent results between Intel and AMD CPUs when SSE2 instructions are used.
- We accidentally found out that XMMatrixInverse does not have this flaw and is a viable replacement.
‘Adrian’ has actually posted a fix that works with both the Steam and Origin version of the Mass Effect game and doesn’t require an ASI Loader or any third-party software. Very few gaming bugs have affected a certain batch of CPUs instead of graphics cards, and Mass Effect 1 appears to be that PC game which was plagued with this black blocky texture glitch/bug.
Check this screenshot taken from the PC version of Mass Effect. As you can see all the character models are rendered in black.