https://i.gzn.jp/img/2020/04/05/snes-emulator-ppu/00_m.jpg

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

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が内部で何が起きているのかを把握できないブラックボックスとして機能していると述べています。

https://i.gzn.jp/img/2020/04/05/snes-emulator-ppu/01.jpg

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

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

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

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

https://youtu.be/ATp5ke0KUA0
[SFC] Desert Fighter (J) - Intro & Demo Play - YouTube

続く

以下ソース
https://gigazine.net/news/20200405-snes-emulator-ppu/

★関連板★
■えっちな話題なら”ピンクニュース”
http://mercury.bbspink.com/hnews/
■新作AV情報なら”AV情報+”
http://mercury.bbspink.com/avplus/