NES on FPGA 8:39 2009/11/30

はじめに

 NESについての説明は一般的なもので、 これをどのような方法で実装するかというのは個人の裁量に任せられます。 これは推理問題であり、NESの仕様を直観で得た実装方法でどのように実現するか、 あるいはそれが難雑であるならば別の実現方法を探ることとなります。

 NESについての項を推理編とするなら、 実装についての項は解答編といったところでしょうか? とすると当然ながら解答への過程は他にも存在し、 それは各々が辿るものであると思います。 我が道を行く方々はこれ以上の閲覧は無用かと思います。

 ミステリなぞ読んでもすぐに解答編になだれ込む私ですが、 今回の実装ではそれもままなりませんでした。 ですから直観に従って資料を読み解くという作業を意識してできたことが良かったと思います。

 下記は今回の実装についてのメモとなります。 実装はSFLで行っていますが、 他のハードウエア記述言語でももちろん記述可能かと思います。 実装したことはないので、その手間は想像できませんが…。

 Spartan3(20万ゲート)のボードが1万程度であります。 こいつにのっかればいいなあ。クロック25MHzだからVGAも綺麗に出せそうだし。 でもI/Oポートがまとまってないから使いにくい。

 Altera DE1を購入しました。NES程度であれば3つ位は入ります。 価格は個人輸入で約17,000円(1$89円)、VGAやサウンドCODECなどI/Oも豊富でお買い得です。

! どうでもいい。

ボードは7万もしないのがいくらでもあります。

海外のサイトで“FPGA on NES”って紹介されてた。 って逆だよ。それもいいけど。NES on FPGA on NESって。

てかタイトルがいろんなのとかぶってるなあ。

_
▼ 懐ハード on FPGAができるまで

 それはまさに遺跡発掘や考古学にも似た考え方で、 包み隠されたピースを発見、つなぎ合わせていく作業に近い。 次のような手順でOn FPGAに至るまでの流れを説明する。

1.ソフトウェア開発者向けの仕様
アセンブラや各レジスタの機能などの情報を入手する。 プログラム開発者向けに公開されている最も入手しやすい情報。 開発手法など、詳しく解説されているWebサイトなども多数ある。 エミュレータのソースコードからも分析できる。 CPUの理解には実際にアセンブラなどを組んでみて、 各レジスタの使い方など体感すると良い。

2.ハードウェア仕様
アーキテクチャや回路内部の動作などの情報を入手する。 主に互換機やエミュレータ開発者向けに、無償で解析された情報などが散見される。 その多くは非公式情報なためリバースエンジニアリングなどで発見されたものが多く、 人によって意見が分かれる部分もある。 そんなときは自分でREをやってみるのも手。 似たアーキテクチャから類推することもある。

3.ソフトウェア的なアプローチ
レジスタの書き換えタイミングなど、 エミュレータを作成しプログラムを実行してみてその動作を確認する。 必ずしもそれがそのままハードウェアに移行できるとは限らなかったり、 不要な回路が入っていたりするので注意が必要。

4.ハードウェア的なアプローチ
演算や内部回路のビット数など。 エミュからハードウェアへの移行で、クロックタイミングなど考慮しなければならない。 当時の回路設計技術などから回路構成を推察できる部分もある。

0.根性!
まず必要なのはプログラム、グラフィック、サウンドなどについての基本的な知識。 そしてそのハードウェアに対する思い入れや、このゲームを動かしてみたいという熱意が必要なのだ。
力技的な解析法として、オリジナルのチップを研磨にかけ、 レイアウトされている部分を露出させ、 電子顕微鏡で回路情報をそのまま視覚的にコピーしてしまう方法もあるようだ。

_
▼ 接続図

 現在このような構成になっています。 シリアルIF、SDRAM、FlashMEMはデバッグのためのインタフェースなのでNESとしては不必要です。


Copyright(C) pgate1 All Rights Reserved.