It only took nine years, but someone has finally decoded and fixed the mysterious 'black blob' artifacting issue in Mass Effect that only impacted systems with AMD FX and Ryzen processors.
The PC port for Mass Effect was released back in 2008, but a mysterious and persistent 'black blob' artifacting issue appeared when AMD released its Bulldozer-based CPUs in 2011 and persists through to today's AMD Ryzen processors. At least until game developer Adrian, who also goes by Silent or CookiePLMonster, decided to decode and fix the nearly decade-old issue.
What makes this specific bug so interesting? As Adrian points out in his expansive blog post covering his investigation and fix for the issue, vendor-specific game bugs are certainly not new, but typically revolve around GPU or driver issues. To the author's knowledge, this is the only graphical bug to center around particular CPUs from a specific vendor, and not around a certain series of graphics cards.
The issue renders players as, well, 'black blobs' in certain parts of the game, and there are a few existing workarounds that fix the issue by disabling game features or altering maps. Adrian focused on identifying the underlying cause before developing a fix that wouldn't require those types of alterations.
AMD's FX and Ryzen processors don't support the 3DNow! instruction set, so the prevailing wisdom has been that the game engine tries to use those instructions when it detects an AMD processor. Adrian found this wasn't the case, though, because the game doesn't use that instruction set directly. Instead, the developer isolated the problem to the Processor Specific Graphics Pipeline (PSGP) and found that disabling the feature corrected the issue.
Interestingly, after further investigation, Adrian found that the root issue stemmed from NaN values in pixel shader constants, but fixing the issue only partially solved the problems, with characters rendering as dark grey images (above). A bit more testing unearthed that the real root issue lies with the game's engine being too sensitive to issues with imprecise calculations when it uses the AMD SSE2 instruction set.
It isn't quite that simple, though, so you should read the full article for the blow-by-blow of how the fix was discovered and implemented. Here's a breakdown of the findings from the article:
- 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
- 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
XMMatrixInversedoes not have this flaw and is a viable replacement.
The developer has posted a fix that works with both Steam and Origin versions of the game and doesn't require an ASI Loader or third-party software to fix the game fully. You can hit the article for the free download link, which closes the chapter on a decade's long bug that stood out for being either the only (or one of the very very few) gaming bugs that applied to a certain series of CPUs instead of graphics cards.