PlayStation 5(PS5)のゲームをWindowsやLinuxで動かすことを目指すオープンソースプロジェクト「AnyPS5」が、追跡対象とするGPUシェーダー命令1,166個すべてを認識できるようになった。開発元が公開している進捗表では、対応率が100%に達しており、PS5の描画処理をPC向けに変換する技術が着実に前進している。
ただし、対応率100%は、PS5のゲームがすべてPCで動くようになったことを意味しない。今回達成したのは、GPU命令を読み取って識別する処理の対応率であり、命令を正しく変換して描画する機能や、ゲーム全体の互換性は別に検証する必要がある。
また、AnyPS5ではシステム関数の実装率も公開されているが、こちらも実際にゲームが動作する割合を示すものではない。PS5のゲームをPCで正しく動かすには何が必要なのか。今回の進展を理解するには、それぞれの数値が何を表しているのかを確認する必要がある。
GPU命令1,166個すべての認識に対応、残るのは正確な描画処理
AnyPS5の公式進捗表によると、2026年10月13日時点で、GPUシェーダー命令の対応数は1,166個中1,166個となり、100%に達している。
対象となるのは、プロジェクトが採用しているAMD RDNA 1およびRDNA 2の命令リストだ。開発元は、シェーダーデコーダーが命令を認識できるようになった時点で、その命令を実装済みとして数えている。
デコーダーとは、GPU向けの命令列を読み取り、それぞれがどのような処理を指定しているかを識別する仕組みだ。
したがって、今回の100%という数値は、採用した命令リストをすべて識別できるようになったことを示している。PS5のGPUが持つあらゆる機能を再現できるようになったという意味ではない。なお、AMDの公開命令リストに含まれていない一部の命令は、この集計の対象外となっている。
開発の進み具合は、日別の進捗履歴からも確認できる。
10月7日時点では1,166個中1,131個で、対応率は97.0%だった。それが翌8日には1,166個すべてに対応し、100%に到達している。
ただし、この履歴は当時の進捗ページをそのまま保存したものではない。過去のソースコードを現在の集計規則と命令リストで再評価した数値だ。そのため、当時表示されていた対応率とは異なる可能性があるが、同じ基準で開発の進展を比較できる。
そもそもAnyPS5は、一般的なゲーム機エミュレーターとは異なる方法でPS5のゲームをPC上で動かそうとしている。
プロジェクトのREADMEによると、AnyPS5では「relinker」と呼ばれるツールを使い、PS5向けの実行ファイルをWindowsやLinuxが扱える形式に変換する。
さらに、PS5のシステムライブラリが提供する機能を独自に実装し、変換したプログラムから呼び出せるようにする。
これにより、PS5の動作環境全体をソフトウェアで再現するのではなく、変換後のプログラムをWindowsやLinux上の通常のプロセスとして実行する仕組みになっている。
一方、GPUによる描画処理には、別の変換が必要だ。
AnyPS5の設計資料によると、PS5向けのシェーダープログラムは、次のような手順でPC向けに変換される。
- RDNAの命令列を読み取り、各命令を識別する。
- 分岐などを解析し、プログラムの制御フローを構築する。
- 命令を中間表現(IR)に変換する。
- 中間表現を最適化し、SPIR-V形式のコードを生成する。
- 生成したコードをVulkanの描画処理に組み込む。
SPIR-Vは、Vulkanなどで使われるシェーダープログラムの中間表現だ。AnyPS5では、変換した結果をメモリやディスクに保存し、次回以降の処理で再利用する仕組みも備えている。
つまり、AnyPS5ではPS5向けの実行ファイルをPC上で動かす処理と、GPUのシェーダーをPC向けに変換する処理が組み合わされている。
今回100%に達したのは、このうち最初の「命令を認識する」工程だ。
その後に続く制御フローの解析や演算処理の変換、実際のGPUでの描画が、すべて正しく行われることまで保証されたわけではない。
システム関数の実装率87.92%も、ゲームの互換性とは異なる
AnyPS5ではGPU命令とは別に、システムライブラリの実装状況も公開している。
2026年10月13日時点の数値は、3,594個の関数のうち3,160個が実装済みで、対応率は87.92%となっている。
ただし、この数字にも注意が必要だ。
集計対象となるのは、AnyPS5のプロジェクト内ですでに宣言されている関数だ。PS5のファームウェアが提供するすべての関数を網羅しているわけではない。
今後、新たな関数が追加されれば、集計対象の総数も増える。そのため、実装が進んでいても、分母の増加によって対応率が下がることがある。
さらに、「実装済み」と判定する基準も、実際の動作確認とは異なる。
開発元の進捗集計ルールでは、所定の未実装処理を呼び出す関数を未実装と判定し、それ以外の関数を実装済みに分類している。
つまり、関数がPS5と同じ結果を返すか、ゲーム内で問題なく機能するかを確認して数えているわけではない。
GPU命令とシステム関数の進捗率は、そもそも測定している内容が異なる。
| 開発段階 | 現在の進捗や実装状況 | 今後確認すべきこと |
|---|---|---|
| GPU命令の認識 | 対象となる1,166命令すべてをデコーダーが認識。対応率100% | 演算や分岐などを正しく変換できるか |
| システム関数の実装 | 宣言済みの3,594関数中3,160関数を実装済みに分類。対応率87.92% | 引数や返り値、実際の処理がPS5と同じように動作するか |
| GPU描画処理 | シェーダーをSPIR-Vに変換し、Vulkanで実行する仕組みを実装 | 描画結果やGPUの状態管理が正しいか |
| ゲームごとの互換性 | 作品別に動作段階や未解決の問題を追跡 | 起動からゲームプレイまで、安定して動作するか |
この分類は、AnyPS5の公式進捗表、集計規則、設計資料、およびREADMEの互換性に関する説明に基づくものだ。独自に各ゲームの動作を検証した結果ではない。
また、GPU命令の対応率とシステム関数の実装率を平均して、AnyPS5全体の完成度を算出することもできない。両者は測定対象も判定基準も異なるためだ。
集計方法の限界は、関数の中身を見るとさらに明確になる。
例えば、一定の条件を満たす定数を返すだけの関数や、例外を発生させるだけの関数も、未実装を示す特定の処理を呼び出していなければ、実装済みに分類される場合がある。
開発元の比較レポートでは、こうした実質的な処理がほとんどない関数を別途識別する仕組みが設けられているが、実装済みの集計数から除外されるわけではない。
そのため、87.92%という数字から、対象となるシステム関数のほとんどが実用上問題なく動作すると判断することはできない。
もっとも、これは実装済みとされる関数の大部分が不完全だという意味でもない。集計ルールだけでは、簡易的な実装がどれほど存在し、実際のゲーム動作にどの程度影響するかまでは分からない。
GPU命令を認識できても、正しく実行できるとは限らない
GPU命令の認識と、その命令が要求する処理を正確に再現することの違いは、AnyPS5の設計資料にも表れている。
具体例の一つが、シェーダーの浮動小数点演算における丸め処理だ。
コンピューターが小数を計算するとき、演算結果を利用可能な数値形式に収めるため、一定の規則に従って丸める必要がある。
この丸め方はGPUの設定によって変わる場合があり、元のPS5と異なる設定で計算すると、同じシェーダーでも結果が一致しない可能性がある。
AnyPS5のMODEレジスターに関する設計資料では、こうした設定をどの範囲まで再現できるかが説明されている。
現状では、初期状態と同じ丸め設定を書き込む処理など、限定的な操作には対応している。一方、実行中に丸め設定を変更する書き込みや、汎用レジスターの値を使ってMODEレジスターを書き換える処理は、例外を発生させる仕様になっている。
実行中の設定変更に対応するには、プログラムの分岐や処理の流れを解析しながら状態を追跡し、その変化を後続の演算にも反映しなければならない。
つまり、命令そのものを認識できても、その命令によって変化したGPUの状態を正しく管理できなければ、元のプログラムと同じ動作にはならない。
これは、命令の認識率100%だけでは把握できない、実装上の課題を示す例だ。
もちろん、この制約がすべてのゲームで問題になるわけではない。どの命令を使い、どのような設定変更を行うかは、ゲームやシェーダープログラムによって異なる。
あるゲームでは問題なく動作しても、別のゲームでは未対応の処理によって描画が崩れたり、プログラムが停止したりする可能性がある。
そのため、GPU命令の認識率が100%に達した後も、実際のシェーダープログラムを使った変換結果の検証や、GPUの動作を正しく再現するための開発が必要になる。
今後の焦点は、ゲームごとの動作検証と互換性の改善
AnyPS5の開発状況を利用者の視点で評価するには、GPU命令やシステム関数の対応率だけでなく、実際にどのゲームがどこまで動くのかを確認することが重要だ。
プロジェクトのREADMEでは、ゲームごとの対応状況を追跡するコミュニティプロジェクト「AnyPS5 Roadmap」が案内されている。
この一覧では、各ゲームがどの段階まで動作したか、どのような問題が残っているか、必要なシステムライブラリやGPU機能への対応状況などを確認できる。
また、開発元のGitHubにはゲーム別の動作検証を報告するディスカッションも用意されている。
ゲームの互換性を判断する際には、起動に成功したことと、実際にプレイできることを区別しなければならない。
例えば、ゲームが起動してタイトル画面まで進めても、描画が正常とは限らない。さらに、ゲームプレイを開始できたとしても、特定の場面で停止したり、長時間のプレイ中に問題が発生したりする可能性がある。
動作報告を評価するには、使用したPCの構成やOS、AnyPS5のバージョン、確認したゲーム内の場面、未解決の不具合などを合わせて確認する必要がある。
あるPCで特定のゲームが動作したからといって、別の環境や別のゲームでも同じ結果が得られるとは限らない。
また、開発の進捗を追う際にも、対応率の変化だけで判断するのは適切ではない。
システム関数の対応率は、新しい関数が追加されることで変動する。さらに、重複する実装を整理して共通化した場合などには、利用できる機能が変わらなくても集計上の数値が変化することがある。
開発元は、過去のソースコードを現在の集計規則で再評価する方法も公開しているため、進捗率の推移を見る際には、集計対象や計算方法の変化も考慮する必要がある。
今回、AnyPS5がGPUシェーダー命令1,166個すべての認識に対応したことは、PS5向けゲームをPCで動かすという目標に向けた重要な進展だ。
しかし、GPU命令をすべて読み取れるようになったことは、PS5の描画機能を完全に再現できたこととは異なる。
今後は、シェーダー変換の正確性を高めるとともに、システム関数の互換性やGPUの状態管理、ゲームごとに発生する不具合への対応が求められる。
最終的に重要なのは、開発進捗の数字そのものではなく、実際のゲームがどれだけ正確かつ安定して動作するかだ。
異なるPC環境での動作検証が進み、正常な描画や継続的なゲームプレイを再現できる作品が増えていけば、AnyPS5の実用性もより明確になっていくだろう。



