ファミコンの完全自作ROM&カセットを作ろう!!その3 ~とりあえず動くromカセットができた~
以前、ファミコンカセットを作ろうとしてピンアサイン直読み直結で作ったものの、結局動かず悶々としてました。何かが間違っているのは確かで、なにが間違っているのかがよくわからないまま暫く、とある本が出版されそれを元にもう一度作り直したのがこちら。
はい、デカイですね!通常のファミコンカセットの2〜3倍のサイズです。中身はepromが2つといたってシンプル。しかしながら重要なのはその上のジャンパ線で、ここにはファミコンカセット特有の機能を拡張できるように本来半田付けしてしまうところを外に出してあります。ざっくりいうとスルロールと音ですね。スクロールについては一枚の画面をひたすらループする方向を縦方向が横方向かどっちにするか、音については外部から音を追加で加える(体験してもらうなら、ゲームを起動して2コンのマイクに向かって喋ってもらうと、ファミコンを通して音が出ます。それみたいなもんです。)ですかね。もう一つ機能拡張のためピンを出しておいたのですが忘れてしまいました。
そしてこのカセット、実はどのマッパーにも属さない、変なカセットになっているようです。というのが、直繋ぎの場合PRGROMと呼ばれる6502側のROMは最大16kbyteだそうですが、今回製作したカセットは32kbyteが繋がるようになっています。(ドンキーコングやマリオブラザーズがマッパー0らしのですが、いやどんだけ小さいプログラムに詰め込んだのか恐ろしくなります。)たぶんきちんと調べればあるんでしょうね。詳しい方教えてください…
CHRROMと呼ばれるグラフィックROMは8kbyteでこれは変わりません。使ってみてわかったのですが、恐ろしく狭いです。背景はもちろん画面を埋められないほどしか画像を入れられません。スプライトも、msxのように重ね合わせて色を増やすことができるのですがそもそも登録できるスプライト枚数があまりに少ないことと色の指定可能数が実質12色とぞっとするほど少ないことです。
これについてはバンク切り替えやカラーパレットの書き換えでトリッキーに増やすことができますが、素直にプログラムしたらザコいゲームしか作れません。それでも、ファミコン実機で動くところを見ると感動もひとしおです。
今回は参考本をほぼ忠実に再現したため、uvepromを使用していますが本来はeepromを使用し、パソコンと繋がるようにしていつでも書き込めるようにするのが理想。どこかの映像でスクエアがリアルタイムで編集したゲームの内容をそのままファミコンに書き込んでいるのがありまして、それができたら最高というわけです。
というわけでカセットのピン詳細とROMのピンとをどう繋げばいいのか、ギコ猫様のサイトを参考にどうゲームを作るのかで格闘したので、メモがてら振り返ろうと思います。わかればそれなりに解説してあるのだなぁと感動するのですが、それでもとっつきにくさは群を抜いています。
また、エミュレーターで動くように書き出すソフトがほとんどの世の中、nesasmで書き出されたデータの中から実際のROMデータを抽出し書き込む方法を紹介します。市販のカセットには応用できないと思いますのでそこら辺期待してる奴は回れ右やぞ。
Apple1 Computerを現代で作ることはできるのか挑戦してみた その1~シフトレジスタ問題~
コメント
コメントを投稿