Nintendo Switchエミュレーター「suyu」の最終公開版となるバージョン0.0.4が登場し、ゲームコードを事前にx86-64へ変換する新しい「Recompiler mode」が追加された。従来のエミュレーションで必要だった実行時の変換処理を減らし、とくにCPU負荷が大きいゲームで性能向上を狙う仕組みだ。
suyuは、開発終了したYuzuを基にしたオープンソースのエミュレーターとして開発が続けられてきた。一般的なSwitchエミュレーターでは、Arm系のAArch64コードをPCのx86-64 CPUで実行するため、ゲームの動作中にJITコンパイラなどを使ってコードを逐次変換する。
新しいRecompiler modeでは、この変換をゲーム実行前に行う。Switch向けAArch64コードをx86-64の実行形式へ静的に再コンパイルし、suyuのHLEバックエンドと組み合わせることで、プレイ中に発生する変換処理を減らす。完全なWindowsネイティブ版へ変換するわけではなく、Switch固有のOS機能やグラフィックスAPIには引き続き互換レイヤーが必要となる。
それでも、CPU側のオーバーヘッドやJIT処理に起因する一部のカクつきを減らせる可能性があり、中級クラスのPCでも高解像度・高フレームレートを狙いやすくなるとされる。とくに『ゼルダの伝説 ブレス オブ ザ ワイルド』『ティアーズ オブ ザ キングダム』や「ゼノブレイド」シリーズのようなCPU負荷の大きいオープンワールド作品で効果が期待されている。
ただし、今回のv0.0.4をもってsuyuの開発は終了する。GitHubリポジトリはアーカイブ化され、コード自体はオープンソースとして残るものの、現在の開発チームによる更新は行われない。
Switchエミュレーションを巡っては、YuzuやRyujinxなど主要プロジェクトが相次いで終了してきた。suyuも継続開発には至らなかったが、最後のリリースで投入された静的再コンパイルという手法は、エミュレーションの負荷を減らす別のアプローチを示したことになる。
実際の効果はタイトルごとの互換性やベンチマークを確認する必要があり、「SwitchゲームがPCネイティブ性能になった」とまで評価するのは早い。一方、ゲーム機向けコードを事前変換して実行時負荷を削る仕組みは、今後のエミュレーターや再コンパイルプロジェクトにも応用される可能性がある。
出典:TechPowerUp
管理人コメント
「ネイティブ性能」という見出しは派手ですが、実際はSwitch向けコードを事前変換して実行時の負荷を減らす仕組みです。それでもJIT依存を減らせるのは面白い。残念なのは、その新機能を置き土産にsuyu自体の開発が終了すること。最後にエンジンを載せ替えて、そのままガレージを閉めてしまいました。








