わずか 9 年かかりましたが、AMD FX および Ryzen プロセッサを搭載したシステムにのみ影響を与えていた Mass Effect の謎の「黒い塊」アーティファクト問題を誰かがようやく解読し、修正しました。
この特定のバグがなぜこれほど興味深いのでしょうか?Adrianがこの問題の調査と修正を詳細にまとめたブログ記事で指摘しているように、ベンダー固有のゲームバグは決して新しいものではありませんが、通常はGPUまたはドライバーの問題に関連しています。筆者の知る限り、これは特定のベンダーの特定のCPUに関連し、特定のグラフィックカードシリーズに関連しない唯一のグラフィックバグです。
この問題は、ゲームの特定の部分でプレイヤーが「黒い塊」のように表示されるというものです。ゲーム機能を無効にしたり、マップを変更したりすることでこの問題を解決する回避策はいくつか存在します。エイドリアンは、そうした変更を必要としない修正を開発する前に、根本的な原因を特定することに注力しました。
AMDのFXおよびRyzenプロセッサは3DNow!命令セットをサポートしていないため、ゲームエンジンはAMDプロセッサを検出するとこれらの命令セットを使用しようとするというのが通説でした。しかし、Adrianは、ゲームが3DNow!命令セットを直接使用していないため、これは当てはまらないことを発見しました。開発者は、問題がProcessor Specific Graphics Pipeline(PSGP)にあることを突き止め、この機能を無効にすることで問題が解決することを発見しました。
興味深いことに、Adrianはさらに調査を進めた結果、根本的な問題はピクセルシェーダー定数のNaN値に起因していることを発見しました。しかし、この問題を修正しても問題は部分的にしか解決されず、キャラクターが濃い灰色の画像としてレンダリングされるだけでした(上図)。さらにテストを重ねた結果、真の根本的な問題は、ゲームエンジンがAMD SSE2命令セットを使用する際に不正確な計算に過度に敏感になっていることにあることが判明しました。
ただし、実際にはそこまで単純ではありません。修正がどのように発見され、実装されたかを詳しく知りたい場合は、記事全文をお読みください。記事で判明した内容を以下にまとめます。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
- ゲームは 3DNow! 命令を直接使用しない (システム DLL のみ使用する) ことを確認しました。
- PSGP を無効にすると AMD プロセッサの問題が修正されることが判明しました。
- PIX を使用して、ピクセル シェーダ定数内の NaN 値が原因であることがわかりました。
- 私たちはそれらの価値観の起源を に突き止めました
D3DXMatrixInverse
。 - 私たちはその関数をファジングし、SSE2 命令が使用されている場合、Intel CPU と AMD CPU 間で一貫した結果が得られないことを発見しました。
XMMatrixInverse
偶然にも、 にはこの欠陥がなく、代替品として有効であることが分かりました 。
開発者は、Steam版とOrigin版の両方で動作する修正を公開しました。この修正はASI Loaderやサードパーティ製ソフトウェアを必要とせず、ゲームを完全に修正できます。記事から無料ダウンロードリンクにアクセスすれば、10年近くもの間存在したこのバグに終止符を打つことができます。このバグは、グラフィックカードではなく特定のCPUシリーズにのみ発生する唯一の(あるいは極めて稀な)ゲームバグとして際立っていました。
ポール・アルコーンはTom's Hardware USの編集長です。CPU、ストレージ、エンタープライズハードウェアに関するニュースやレビューも執筆しています。