エミュレータは年々人気が高まっていますが、多くの攻撃の標的にもなっています。エミュレータがどのように、そしてなぜ作成されるのかを理解するために、Vita3K チームの MacDu にインタビューすることができました。
私たちはエミュレータについて知っています。多くの古いゲーム機のタイトル、場合によっては最新のゲーム機のタイトルをあらゆるプラットフォームでプレイできるこのソフトウェアは、PC の世界で常に人気があります。しかし、それらがどのように機能するのか、そしてなぜそれらが作成されたのかを私たちは本当に知っているのでしょうか?
その間任天堂はSwitchエミュレータYuzuをダウンさせることに成功した、PS VitaエミュレータであるVita3Kを担当するフランスの開発者の一人、MacDu氏にお会いすることができて光栄でした。この若いコンピュータ サイエンスの修士課程の学生は、このようなプロジェクトを作成した理由だけでなく、それが意味する途方もない技術的課題についても説明してくれました。
どのようにコーディングを学びましたか?
「私は大学時代に Le Site du Zéro でコーディングを始めました。オンラインで自分だけ。私は C++ から始めて、チュートリアル全体に従い、現在私が最もよく知っているプログラムを 2/3 書きました。プログラム可能なレゴブロックも持っていましたが、これもとても興味深いものでした。次に、Java とその他のいくつかの言語に目を向けました。 »
エミュレーションの世界での経歴は何ですか?
「私は最初、ただ楽しむために Dart で NES エミュレータを作成しました。彼は歩きましたが、とても遅かったです。それはむしろプロジェクトそのもののためでした。 PS1 についても調べましたが、Vita3K チームに到着するまでは、エミュレータは半分しか機能していませんでした。 »
エミュレータ開発を始めたきっかけは何ですか?
「エミュレーションについて私が本当に気に入っているのは、マシン全体を実際にコーディングする必要があることです。これには多くの側面があります: レジスターがどのように機能するか、イメージがどのように作成されるか、CPU、GPU、コントローラーのインターフェースのコーディング...非常に興味深いです。また、バグを修正したり、新機能を実装したりすると、ゲームが最終的に動作したり、画像のレンダリングが向上したりするとすぐにフィードバックが得られるため、非常にやりがいがあります。フィードバックは視覚的で即時的です。以前は動作していなかったものが突然動作し始めます。 »
エミュレータはどうやってプログラムするのですか?
「何をするかに応じて、さまざまなレベルのエミュレーションがあることを理解する必要があります。古いマシンの場合、これには、たとえば CPU をコーディングし、各コンソール命令が最新のコンピュータが理解できるシーケンスに変換されるようにすることが含まれます。レジスタの実装など、低レベルの機能もあります。メモリ内の特定のアドレスは、たとえばコントローラーの状態を読み取るために使用されるため、ボタンが押されたかどうかを判断するには、この情報を取得できる必要があります。そして、ゲームがコンソールに命令を送信する GPU があり、エミュレータはこれらの命令を取得して、目的のプラットフォームで読み取り可能なシーケンスに変換する必要があります...これはリバース エンジニアリングと呼ばれるものです。結果からソースコードを見つけます。 »
開発中に遭遇する最大の困難は何ですか?
「ほとんどの場合、特に PS Vita のような比較的古いマシンの場合、実行速度はそれほど問題になりません。多くのコンソールには従来のコンピューターと同じプロセッサが搭載されていないため、最初の問題は CPU であることがよくあります。たとえば、Vita には ARM プロセッサが搭載されていますが、コンピュータは x86-64 です。したがって、命令をコンピュータが理解できるものに再コンパイルする必要がありますが、これらは 2 つの完全に異なるアーキテクチャです。現在、「ジャスト イン タイム再コンパイル」に JiT プログラムを使用しています。これにより、ARM 命令をリアルタイムで x86-64 命令に再コンパイルできるようになります。とても効果的です。
少なくとも PS Vita の主な問題は GPU レベルにあります。コンソールには、最近の従来のグラフィック カードなど、他のプラットフォームでは必ずしも利用できない特定の機能を活用する、やや特殊なグラフィック カードが搭載されている場合があります。これらの機能が存在しない場合、それらを正しくエミュレートすることは実際には非常に複雑になります。パフォーマンスの点で非常に高価になる可能性があります。 »
クロスプラットフォーム開発はどのように管理していますか?
「Vita3K を例に挙げると、エミュレータは主に Windows と Linux 向けにコーディングされました。 2 つのシステムには違いがありますが、GPU レベルの開発にはほとんど影響しません。 macOS バージョンが到着したとき、OS は開発者が GPU にアクセスしやすくする 2 つの関数ライブラリである OpenGL または Vulkan をサポートしていないため、すでにさらなる困難が生じていました。彼らは Metal と呼ばれる独自のインターフェイスを持っています。 Vulkan を Metal で使用できるようにする変換レイヤーがありますが、互換性を確保するために常にいくつかの追加要素を変更する必要があります。
macOS と Macbook 用の ARM バージョンを作成しようとすると、別の問題も発生します。たとえば、メモリの割り当て方法は大きく異なります。Windows と Linux では 4kb のブロック単位で割り当てられますが、Mac と ARM では 16kb のブロック単位で割り当てられます。
GPU では利用できない機能に加えて、このような注目すべき点が常にあります。この面では、電話が最も困難です。また、パフォーマンスの問題もありますが、多くの場合、携帯電話の性能ははるかに低く、パフォーマンスを損なわないようにさまざまなテクニックを使用する必要があります。各プラットフォームには異なるフェイントが必要であり、デバッグ ツールは、たとえば Android よりも Windows や Linux でより多く開発されています。 »
エミュレートしようとしているコンソールを「改善」したいという誘惑に駆られませんか?
「エミュレーションの世界では、ネイティブ プラットフォームよりも優れたパフォーマンスを発揮することが重要ではありません。ゲームは特定の動作を期待しており、それが非互換性を引き起こす可能性があるためです。記録のために言っておきますが、SEGA Master System は新しいバージョンのコンソールのプロセッサーのバグを修正し、そのせいでゲームが動作しなくなりました。マシンの動作に可能な限り近づけ、ゲーム レベルで正確に再現する必要があります。
その後、アップスケーリングやコミュニティが開発した 4K パックでのテクスチャの置き換えなどの改善をいつでも追加できます。たとえば、PS Vita にはローカライズされていない日本のゲームもたくさんあり、ファン集団がそれらを翻訳してプレイできるようにしています。そしてそれは本当に興味深いことです。 »
エミュレータを開発する目的は何ですか?
「プログラミングにはすでに課題がありますが、ビデオゲームの保護にも課題があります。いくつかのタイトルは非常に優れており、エミュレータがなければ数年後にはプレイできなくなる可能性があります。たとえば、私のお気に入りのゲームの 1 つは Xenogears ですが、これは PS1 エミュレーション以外では実際にはプレイできません。 »
エミュレーションに対する任天堂の立場を見てきました...エミュレータを開発するのは危険ですか?
"場合によります。通常、エミュレーションは合法です [編集者注: フランスでは、リバース エンジニアリングに関する知的財産法第 L 112-6-1 条によって保護されています] し、判例法もあります [編集者注: SEGA v Accolade aux United STATES] があるため、通常はノーです。 ]。この分野ではいつも少し複雑です。正式な通知やその他の通知に対してどのように反応するかわかりません。
さまざまなケースがあると言います。 PS Vitaについては、ソニーはほぼ完全に放棄しているので、そのように反応するのは奇妙です。しかし、常時接続のコンソール エミュレーションの場合は、少し異なるケースだと思います。 »
まだ放棄されていないマシンのエミュレータを開発することに良心がありますか?
「少しはありますが、エミュレーションによって特定のゲームの利益が減少する場合には、特に良心は考慮されるでしょう。私の観点から見ると、ゼルダ:ティアーズ オブ ザ キングダムSwitch では、エミュレータの存在がゲームの収益とゲーム開発者が得るものに悪影響を及ぼしていると主張することができます。これは私が避けたいことです。
これが、私がゲームの保存について話す理由です。エミュレーションは、タイトルが「通常の」生活を送った後に到着する必要があります。これが私にとって最も重要な点です。 »
エミュレータ関連のコミュニティ、特にあらゆるものを要求するコミュニティは管理が難しい場合があります。どのように体験しますか?
「私はこの件については全く中立で、引っ込み思案です。攻撃的なフィードバックやその他のものを持っている人は無視します。しかし、私がそれほど影響を受けていないとしても、他の人がさらに大きな影響を受けても不思議ではありません。私にとって、エミュレータの開発は、暇なときにやっている単なる面白い趣味です。私たちはそれを無料でオープンソースで行っているので、特に Android に関して、あらゆるものについて不満を言う多くの人たちに対してこのようなフィードバックを受けるのは複雑です。 »
Vita3Kを選んだ理由は何ですか?
「興味のあるゲームがあったから始めたんですが、テイルズ オブ ハーツR、投げるとすぐにクラッシュしました。問題を見つけて修正し、コードを再送信しました。その後、エミュレータの主要開発者の一人になるまで、私は仕事を続けました。これは 2010 年にリリースされたかなり最新のコンソールでもあり、コードを書くのは今でも興味深いものであり、当時 Vita3K ではやるべきことがたくさんありました。オープンソース プロジェクトの利点は、実際に自分たちで問題に直接取り組むことができることです。 »
開発における次の大きな課題は何ですか?
「Vita3K に関して少し気になるのは、残っている問題の大部分がグラフィックに関するものであり、私にとってはあまり興味のないことです。他のことも検討中ですが、まだ何も決まっていません。特に、先ほども言ったように、私はまだ現役のコンソール向けに開発することを避けたいと考えているからです。 »