No Gadget, No Life

ゲームやガジェットの雑記

Analogue Pocket が凄い

 

今回はAnalogue Pocketについて。入手して思ったことをつらつらと書いてみた。

レトロゲームが遊びたい:

そもそも僕が何をしたいのかと言うと「レトロゲームを心地よい環境で遊びたい」という事に尽きる。

子供の頃熱中した「あの」ゲームをもう一度遊びたい。途中で投げ出した「この」ゲームをクリアしたい。気になっていたけど結局やらなかった「その」ゲームをやってみたいなど。

気になる「あれ」「これ」「それ」を心地よく遊ぶ環境が欲しいのだ。

僕が心地よくレトロゲームを遊べると思う環境を良いと思う順にあげると

  1. 実機
  2. 現行機への移植版 or リマスター版
  3. 復刻ミニハード
  4. エミュレーター

このように考えている。

ただ実機は繋げるモニターも置き場所もない。移植版はやりたいゲームが全て現行機へ移植されているわけではない。復刻ミニハードは幾つも置く場所はないし、やりたいゲームも揃わない。と、本当は正規の手段で遊びたいのだがそれぞれ問題があり、1台で事足り、かつ、自分のゲームライブラリーが生かせるエミュ機、特に、携帯エミュ機で遊ぶ事を選択している。

新しいガジェットいじりの面白さも加わり、結果、何台も携帯エミュ機を買いやっぱり置き場所に困るという矛盾が発生している事は置いておこう・・・

沢山の携帯エミュ機を購入し試しているわけだが、現状では完全に心地良く遊べる環境になっていない。まあほぼ良いとは思っているんだけどねw

エミュ機の問題:

現在販売されている、ほとんどの携帯エミュ機は「ソフトウエアエミュレーション」の技術を使ってレトロゲーム機を再現している。エミュレーションなので、実機と比べれば、異なる点が出てくるのは仕方のない事だとは思うが、僕が特に気になる点は、「再現性」と「遅延」だ。

僕が初めてエミュレーターでコンシューマーゲームを遊んだ20数年前と比べれば、昨今のエミュレーターは再現精度も高く、機能も豊富で何なら実機より快適に遊べる一面もある。なのだが、過去の経験上(本来できることが出来ない、ゲームが進行不能になるなど)、何となく不安があるし、遅延の為、操作性が異なると感じる事がある。

これらの問題は「ソフトウエアエミュレーション」という再現方法に起因する。

レトロゲーム機の基本的なハード構成はパソコンなどと同様、CPU、PPU(Picture Processing Unit)、サウンドプロセッサ、インプットコントローラー、メモリー等で構成されており、各ユニットは同期を取りながら並行して処理を行っている。

「ソフトウエアエミュレーション」では、これら複数の処理ユニットが行っている処理を、エミュレーターを動かしているCPUがエミュレータープログラムを介して代行する。

CPUは1つづつ順番に処理を行う事になるので、エミュレートするレトロゲーム機同様の時間で処理を完了させるには、レトロゲーム機よりも高性能な(高周波数で動作する)CPUが必要になる。

レトロゲーム機実機と処理タイミングが異なる事は、ゲームの再現がうまくできなかったり、操作の遅延が発生する要因になる。

エミュレータープログラムでは実行するゲームに合わせて処理タイミングの調整を行うなどして、再現精度を高めていたりするが完全ではないのだろう。

以前読んだ記事によると、ソフトウエアエミュレーターの開発者曰く、ソフトウエアエミュレーターを使ってスーパーファミコンを正確に再現するには、3GHzで動作するCPUが必要になるらしい。

実際にはこれよりも低性能なCPUでスーパーファミコンのエミュレートは可能なわけだが、これはゲームプレイに大きな影響を与えないような処理を省略したりすることで、負荷を下げ低性能なCPUでの再現を可能にしている。

正確に再現する事よりもプレイアブルな状態を目指すことで、実用的なエミュレーターとしているわけだ。どの程度再現の正確さを追求するかは、開発者や開発コンセプトによるだろう。同じレトロゲーム機のエミュレーターでも動作が軽い・重いがあるのはそのエミュレーターの開発コンセプトによる。

「ソフトウエアエミュレーション」で「再現性」と「遅延」問題を解決するには、初めから高性能なCPUで動作することを前提としたエミュレーターを開発しないと解決できないという事になる。

現状多くの携帯エミュ機に搭載されるCPUは1~2Ghzのモノなので、これらの機体で「ソフトウエアエミュレーション」を使ってレトロゲーム機を動かすには「再現性」と「遅延」はある程度犠牲にならざるを得ないのかもしれない。

Analogue Pocketなら解決できる:

ようやくAnalogue Pocketの話に入るw

Analogue Pocketは多くの携帯エミュ機とはレトロゲーム機の再現方法が根本的に異なる。

FPGAと言う所謂「ハードウェアエミュレーション」技術を使ってレトロゲーム機の再現を行っている。

どういうことかと言うと、Analogue PocketにはCyclone V EというFPGAチップが搭載されているのだが、このチップ、イメージ的には「ブランク基盤」の様な状態になっている。

このチップに再現したいレトロゲーム機のCOREの情報をインプットすると、チップ上にレトロゲーム機に搭載されている各プロセッサを電子的に再現してくれる。

再現された各プロセッサは、実機同様に並行して処理可能な状態になる。その為、「ソフトウエアエミュレーション」で発生するような、処理タイミングの違いが発生せず結果として、精度の高い・遅延の少ない再現が可能になるわけだ。

工夫を凝らしてゲームを再現できるようにする「ソフトウエアエミュレーション」も凄いが、実機を物理的に再現してしまおうというFPGAも凄いw

僕がいつも気にしているエミュ機の入力遅延についても、Analogue Pocketならこの通り。

実機と差を感じない環境を手に入れることが出来る。

Analogue Pocketでどこまで再現可能なのか:

基本Analogue PocketはGBAの互換機という扱いで、実際にカートリッジを差し込んでGBやGBAのゲームを遊ぶ機体なのだが、1年ほど前にOpenFPGAに対応(リリース?)したことで、 Analogue Pocketの汎用性が大きく上がる事となった。

OpenFPGAによって開発されたCORE情報を、Analogue PocketのFPGAに取り込むことでGBA以外のレトロゲーム機の再現が可能になったのだ。

現状で既に多くのゲーム機に対応しているが、馴染みのあるもので言うと、ファミコン、スーパーファミコン、PCエンジン、メガドライブ等を動かすことが可能になっている。

レトロゲーム機をハード的に完全再現できる可能性が有るとなると、次に気になるのはどこまでイケるのか?って話だろう。

高性能なゲーム機を再現するには、より複雑な回路を再現する必要がある。FPGAでは実装できる回路の数をLE(ロジックエレメント)で表現し、Analogue Pocketに搭載されているFPGAチップでは、49,000LE(ロジックエレメント)が含まれている。

これがどれくらいの機体を再現できる回路数なのか?正直よくわからない(汗)

スーパーファミコンの場合、実際のLE数は数十万~数百万とされているが、OpenFPGAで公開されているSNES CoreのLE数は30,000程度になっているようだ。LE数が減っているのは、不要なロジックをなくしたり、再設計による効率化によるものらしい。

「ハードウェアエミュレーション」においても、実機の完全再現はしておらず、機能のスリム化は必要になる事がわかる。とはいえ、処理タイミング問題が解決出来ていることが「ハードウェアエミュレーション」での優位点とも言えるだろう。

Analogue Pocketでエミュレーション出来る限界はスーファミ(16ビット機)あたりなのではないかと推測している。

FPGAを使ってレトロゲーム機の再現をしている別プロジェクトMister FPGAでは110,000LEあるFPGAチップCyclone V SEが使われているが、Mister FPGAでは現在進行形でN64やSEGA SaturnのCore開発が進められている。

N64を再現するには110,000LEでは足りないという話もあるようで、Mister FPGAでどこまで再現されるのか注目される一方で、49,000LEのAnalogue Pocketには移植されないだろうと想像できる。 

ゲーム機の再現にはLE数のみならず、メモリーなどのアクセス速度にも依存するので、もともとはGBA互換機として設計されたAnalogue Pocketでは、同等性能のSNES世代のゲーム機再現が限界な気はする。

Analogue Pocketで動作するCOREは以下で確認可能。

Analogue Pocket | openFPGA Cores Inventory

携帯エミュ機と併用したい:

Analogue Pocketで、僕が一番遊ぶGBA、スーパーファミコン、PCエンジン、メガドライブなどが低遅延で遊べる環境が手に入った事で、何となく心の余裕(?)が生まれた気がする。携帯エミュ機の少々の入力遅延は許容してやっても良いぞ。という気持ちになってきたw

遅延があるならAnalogue Pocketで遊ぶから良いわ~って感じ。

なので、PS1以上のゲームを遊びたいなら携帯エミュ機を、それ以下はAnalogue Pocketを使うという形に落ち着きそうな気がする。

今後、中華エミュ機のFPGA化なんかを期待したりするのだが、まだ暫くは、無理かねw

最後に:

ここに書かれたエミュレーターの仕組みに関する情報は、僕の勝手な理解と妄想を多く含んでおります。

正確な情報を求める方はご自身で調査ください~~