ソフトウェア

「100%の再現精度」を目指すスーパーファミコンのエミュレーターが抱える最後の課題とは?

by Nicholas Wang

bsnes」はスーパーファミコン、そして海外版のスーパーファミコンであるSuper Nintendo Entertainment System(SNES)の動作をPC上で再現するエミュレーターです。15年間にわたってbsnesを開発してきたBYUU氏が、エミュレーターを100%の再現度で完成させるために突き当たる「最後の壁」について解説しています。

How SNES emulators got a few pixels from complete perfection | Ars Technica
https://arstechnica.com/gaming/2020/04/how-snes-emulators-got-a-few-pixels-from-complete-perfection/


1990年11月に発売されたスーパーファミコンは2020年で発売30周年を迎え、その長い歴史の裏でエミュレーターの開発も多くの有志によって行われてきました。


BYUU氏が手がけるスーパーファミコンのエミュレーターは大まかに、絶対的な再現精度を目指す「higan」と、パフォーマンスや機能、使いやすさに焦点を当てた「bsnes」の2つに分けられます。そしてどちらも公式に発売されたスーパーファミコンおよびSNESのタイトルのほぼすべてを完全にプレイ可能だとBYUU氏は述べています。なお、例外となるのは、クラブの先から出すレーザー光線で飛距離や球種を選ぶ本格ゴルフシミュレーターゲーム「レーザバーディ」、エアロバイクと一体化した「The Super Nintendo LifeCycle Exertainment Bike」、2015年までサービスが提供されていたスーパーファミコン用馬券購入ソフト「JRA-PAT」などエミュレーションが難しい周辺機器を利用するものとのこと。

かつては不可能といわれたスーパーFXチップのエミュレーション、HD画質でのモード7への対応ワイドスクリーンのサポート遅延のさらなる削減など、「bsnesは近年めざましい発展を遂げてきた」と語るBYUU氏が、「100%忠実なエミュレーションという完全性」を追及する上で突き当たった大きな問題が、画面に送信されるビデオフレームを生成する画像処理ユニット(PPU)でした。

以下の画像はSNESのコンポーネント構成図で、矢印はプロセッサが相互に通信できることを示していて、点線はメモリチップによる接続です。BYUU氏は、「映像出力(Video Output)がPPUから、音声出力(Audio Output)が音源チップであるDSPから直接出力されている」ことを指摘し、PPUやDSPが内部で何が起きているのかを把握できないブラックボックスとして機能していると述べています。


SNESには約21MHzで動作する水晶クロックと約24MHzで動作するセラミック共振器が搭載されています。水晶クロックはCPUとPPUを、セラミック共振器はDSPとその制御用チップであるSMPを制御しています。クロックはさまざまなシステムにおいてタイミングを決めるための重要な要素であり、ゲームソフトはこの周波数に合わせてさまざまなタスクを実行するように設計されています。エミュレーターは、ハードウェアと全く同じようにタスクを処理することが求められるため、このクロックのタイミングをソフトウェアで再現する必要があります。

DSPによる音声処理やスーパーFXチップによるタスク処理のタイミングは膨大な開発費と時間をかけることで、チップのリバースエンジニアリングにも成功し、ほぼ解決の日の目を見たとのこと。しかし、BYUU氏によるとPPUは「真のブラックボックス」とのことで、その中で処理されている内容を直接監視する方法がないため、非常に苦労しているとのこと。

PPUのエミュレーションが、SNESエミュレーターの精度追求になぜ重要なのかについて、BYUU氏は1994年2月にセタから発売されたシューティングゲーム「デザートファイター:砂の嵐作戦」を例に挙げています。

以下のムービーで、デザートファイター:砂の嵐作戦がどんなゲームなのかを見ることができます。

[SFC] Desert Fighter (J) - Intro & Demo Play - YouTube


このゲームはエミュレーター泣かせといわれており、その理由の1つが砂漠に落ちて描画される戦闘機の影。この影は5つの走査線上で画面表示の輝度を変更することで表現されているため、ゲームのプレイを見ると、影の動きと形がやや不安定になります。この影は単なるエフェクトではなく、戦闘機が地上の施設を爆撃する際の目安として働きます。そのため、ゲームを満足にプレイするためには影を把握することが非常に重要ですが、この影をエミュレーターで再現するのは非常に難しいとのこと。


また、デザートファイター:砂の嵐作戦の一時停止画面では、ポップアップするウィンドウの左側で背景レイヤー3を有効にし、さらに右側でオフにすることで、画面に灰色の線を描画するという手法をとっています。そして、この灰色の線を表示する走査線を1フレームおきに交互に切り替えることで、オーバーレイの揺れを演出します。


デザートファイター:砂の嵐作戦で一時停止した瞬間は、以下のムービーの6分5秒頃で見ることができます。

【実況・ファミコンナビ Vol.238】デザートファイター砂の嵐作戦(スーパーファミコン・SNES) - YouTube


このように走査線のタイミングに合わせて画面をスクロールさせたり伸縮させたりすることで特殊効果を得る技法はラスタースクロールと呼ばれ、ポリゴンが採用される前のゲームで擬似的に3Dを演出するために使われていました。このラスタースクロールを使うゲームはいわばハードウェアでレンダリングを行うものであり、完全ソフトウェアレンダリングを行うエミュレーターでは再現が非常に困難。処理のタイミングはソフトによって異なり、PPUでどういう処理がされているのか分からないため、従来のエミュレーターでは、ソフトによってこのラスタースクロールを十分に再現できないものもあったそうです。

そこでBYUU氏は、SNESに使われているPPUをロジックアナライザーにつないで解析するという試みを行っているそうです。ただし、ロジックアナライザーは制御が難しく、実用的ではないとのこと。

by Billie Grace Ward

近年SNESのPPUのダイがスキャンされたことでPPUの解析が一歩進んだと、BYUU氏。ただし、BYUU氏の大まかな見積もりでは、スキャン画像から2基のPPUをマッピングしてソフトウェアで再現するには600時間もの時間がかかるそうです。「これは寄付だけでやっていくレベルを優に超えており、非常にレベルの高いスキルを持つ人が私たちのプロジェクトにボランティアで協力してくれることを期待する領域に達しています」とBYUU氏は述べています。


BYUU氏は「私は自分のSNESエミュレータープロジェクトでできる限りのことをしてきましたが、この最後の課題を終わらせるためには助けが必要です」と述べ、bsnesのGitHubプロジェクトへの貢献や、PPUの内部の仕組みについての研究論分など、協力を募っています。

この記事のタイトルとURLをコピーする

・関連記事
2Dアクションゲームの古典的傑作「プリンス・オブ・ペルシャ」の開発秘話を開発者が語る - GIGAZINE

任天堂とソニーの幻のゲーム機「Nintendo PlayStation」がオークションでついに落札 - GIGAZINE

24年前に失われたスーファミソフトの「幻のサテラビュー版」が発見され奇跡の復活を遂げる - GIGAZINE

ディズニー映画のスーファミゲームが2019年になってスーファミ&メガドライブ用カセットとして復活 - GIGAZINE

懐かしのスーファミコントローラーでNintendo Switchがプレイできる「スーパーファミコン コントローラー」を使ってみた - GIGAZINE

23年の時を超えて「美少女戦士セーラームーン」のゲームをファンの手で完全にローカライズすることに成功 - GIGAZINE

28年の時を超えて「グラディウスIII」の処理落ちを修正したところ攻略不可能レベルに難度が爆上がり - GIGAZINE

in ソフトウェア,   ハードウェア,   動画,   ゲーム, Posted by log1i_yk

You can read the machine translated English article here.