6503がようやく動いた報告

イメージ
  回路図まで載っけて作りましたと宣言した前回。 いざ色々動かそうとしたものの、 プログラムがまともに動かないので試行錯誤してたら何年たってたんですかねこれ 。月日が経つのは怖いですね。 今回ようやく6503と6532が無事に動きました。 何につまづいたのかというと、多分アセンブラの文法です。 6502系のアセンブラって結構豊富で、 いろんなところから出てるんですがそれぞれアドレスの表記とか微 妙に違うんですね。 で、 今回久しぶりにca65というアセンブラを使用してみたのがつま づいた原因でした。 一度設定すれば大体の6502系には対応できるのが魅力ですが、 本当よくわからないmakeファイルの設定とかで地獄を見ました 。 以下何やってたのか簡単にまとめていきます。 新しい道具も作ったよ! ■:まず動かない いや、電気は通ってるしクロックは走ってるんですよ。 なのに6532の挙動がおかしくてIRQはでっぱなしだしcpu は止まるし訳がわかりません。 そこで今一度6532のデータシートを読むと、 「 NMIとIRQはオープンコレクタなので 必ずプルアップすること 」 ってあるんですね。何その罠。 というわけでプルアップ抵抗を追加しました。 これでcpuがすぐに止まる事故は解決… と思いきやまだ止まります。というか出力がよくわからない。 そこで大昔に作りかけてやめた出力確認用LEDパネルを作成する ことにしました。 ■:めちゃくちゃ便利なLEDパネル 5年くらい前にこんなの作ったら便利やろってLEDだけ並べて、 回路に不備があることに気がついてなげたもの。 今ならなんとかできそうってことで抵抗とトランジスタ をばーっと取り付けて、 カードエッジからも表のポートからも入力できるようにしました。 これまでは毎回ブレッドボードでled回路組んでたんでクソめん どくさいし抜けるしで散々だったのですが、 これで見やすい簡単出力もicに負担がなく万々歳になりました。 やったぜ。 まあ回路図書かずにえいやっと作ったので裏はすごいことになって ます。ちゃんと整えて、 入力スイッチもつけて体裁整えたら普通に便利道具になりそう。 クロックパルスも出せるようにしたいですね。 ledドライブのために2sc1815を贅沢に使用してます。 意外と高いですがいつ買ったのか結構あったので奮発...

ファミコンの完全自作ROM&カセットを作ろう!!その3 ~とりあえず動くromカセットができた~

以前、ファミコンカセットを作ろうとしてピンアサイン直読み直結で作ったものの、結局動かず悶々としてました。何かが間違っているのは確かで、なにが間違っているのかがよくわからないまま暫く、とある本が出版されそれを元にもう一度作り直したのがこちら。

はい、デカイですね!通常のファミコンカセットの23倍のサイズです。中身はeprom2つといたってシンプル。しかしながら重要なのはその上のジャンパ線で、ここにはファミコンカセット特有の機能を拡張できるように本来半田付けしてしまうところを外に出してあります。ざっくりいうとスルロールと音ですね。スクロールについては一枚の画面をひたすらループする方向を縦方向が横方向かどっちにするか、音については外部から音を追加で加える(体験してもらうなら、ゲームを起動して2コンのマイクに向かって喋ってもらうと、ファミコンを通して音が出ます。それみたいなもんです。)ですかね。もう一つ機能拡張のためピンを出しておいたのですが忘れてしまいました。

そしてこのカセット、実はどのマッパーにも属さない、変なカセットになっているようです。というのが、直繋ぎの場合PRGROMと呼ばれる6502側のROMは最大16kbyteだそうですが、今回製作したカセットは32kbyteが繋がるようになっています。(ドンキーコングやマリオブラザーズがマッパー0らしのですが、いやどんだけ小さいプログラムに詰め込んだのか恐ろしくなります。)たぶんきちんと調べればあるんでしょうね。詳しい方教えてください…
 CHRROMと呼ばれるグラフィックROM8kbyteでこれは変わりません。使ってみてわかったのですが、恐ろしく狭いです。背景はもちろん画面を埋められないほどしか画像を入れられません。スプライトも、msxのように重ね合わせて色を増やすことができるのですがそもそも登録できるスプライト枚数があまりに少ないことと色の指定可能数が実質12色とぞっとするほど少ないことです。
 これについてはバンク切り替えやカラーパレットの書き換えでトリッキーに増やすことができますが、素直にプログラムしたらザコいゲームしか作れません。それでも、ファミコン実機で動くところを見ると感動もひとしおです。
 今回は参考本をほぼ忠実に再現したため、uvepromを使用していますが本来はeepromを使用し、パソコンと繋がるようにしていつでも書き込めるようにするのが理想。どこかの映像でスクエアがリアルタイムで編集したゲームの内容をそのままファミコンに書き込んでいるのがありまして、それができたら最高というわけです。

というわけでカセットのピン詳細とROMのピンとをどう繋げばいいのか、ギコ猫様のサイトを参考にどうゲームを作るのかで格闘したので、メモがてら振り返ろうと思います。わかればそれなりに解説してあるのだなぁと感動するのですが、それでもとっつきにくさは群を抜いています。
 また、エミュレーターで動くように書き出すソフトがほとんどの世の中、nesasmで書き出されたデータの中から実際のROMデータを抽出し書き込む方法を紹介します。市販のカセットには応用できないと思いますのでそこら辺期待してる奴は回れ右やぞ。



ちなみに、実機にROMを書き込んでゲームを動かしている風景がこちら。
想像以上にドットがにじむのでそこら辺考えて絵を作る必要がありますね。



それではまた、まとめ終わり次第。

次回の記事:
El Capintanでios13以降などの新しいiphone/iPadを認識しない時の対処法
前回の記事:

Apple1 Computerを現代で作ることはできるのか挑戦してみた その1~シフトレジスタ問題~

コメント

このブログの人気の投稿

ファミコンの完全自作ROM&カセットを作ろう!!その1~立ちはだかるコンパイラの壁~

ファミリーベーシックでゲームプログラミング

ファミコンの完全自作ROM&カセット作ろう!〜cc65で起動ROMをつくる〜