snuri00/psp-web-recomp リポジトリは、従来のエミュレータを使わずにPSPゲームをウェブブラウザで直接実行する方法を示しています。実行時にMIPSマシンコードを解釈するのではなく、このプロジェクトは静的再コンパイルを行います:ゲームの実行ファイルを事前にC++に翻訳し、そのC++をWebAssemblyにコンパイルして、WebGL2経由でレンダリングされるPSPのオペレーティングシステムとグラフィックチップの再実装にリンクします。このアプローチにより、God of War: Chains of Olympusのようなタイトルはブートから起動し、メニュー、カットシーン、戦闘をプレイし、画面内のタッチ入力で操作できるようになります。
この画像は記事で説明されている静的再コンパイルのアプローチを示しており、ゲームコードがWebAssemblyにコンパイルされ、再実装されたPSP OSとグラフィックレイヤーにリンクされている様子を表しています。

この画像はゲームのタイトルメニューを示しており、記事で述べられているようにプロジェクトがゲームを起動し、初期画面に到達できることを確認しています。
READMEに記載されている一連の最適化によりパフォーマンスが達成されています。プロジェクトによれば、God of Warは元々垂直ブランクを待たずにフレームバッファを交換していたため、表示される1フレームに対して約8フレーム分を描画していました。ただし、1つのブランク内でスワップスレッドを2回保持し、次のブランクまで待つことで、表示フレームあたりの作業量を8分の1に削減しています。Firefox固有の修正により、各描画ごとに小さなインデックスバッファを割り当てて再検証オーバーヘッドを回避し、ステンシルバッファの操作は実際に変更された長方形と定数値を追跡することで最適化され、4×解像度でのピクセル処理のオーバーヘッドが1フレームあたり6000万から約700万に削減されています。グラフィックチップとそのWebGLコンテキストはOffscreenCanvasを使用したワーカースレッドで実行されるため、フレーム時間は両方の合計ではなく、より忙しいスレッドによって決まります。その結果、Chains of OlympusはラップトップのChromeとFirefoxで60fpsで動作し、Ghost of Spartaはネイティブ解像度の3倍で55~60fpsで動作します。

このスクリーンショットは記事で説明されているとおりゲームが実行されている様子を示しており、ブラウザでのリコンパイル済みPSPタイトルの正常な実行を示しています。
このリポジトリは、この手法が同じエンジンで構築されたReady at Dawnの2タイトルのみで実証されていることを強調しており、他のゲームは実装されていないシステムコールやサポートされていないグラフィック機能で停止する可能性があり、その結果ログに '[hle] unimplemented …' と表示されます。著作権の制約によりゲームデータは含まれていないため、ユーザーは自分が所有しているゲームのディスクイメージを自分で用意する必要があり、生成されたWebAssemblyバイナリはゲームの権利者に帰属します。一部の komentator はPSP OSの機能のハイレベルエミュレーション自体が手順を追加したエミュレータであると主張していますが、このプロジェクトは元のハードウェアを必要とせずに古いPSPタイトルへのアクセスを可能にする保存の道筋であると位置付けています。