cc65は6502のCコンパイラなんですね。これとNES用のライブラリがあれば、ファミコン用のイメージが自分で作れちゃうってわけです。イメージっていうのは、いわゆるエミュ用のイメージである.nes形式ですね。これがフリーで提供されてるなんて素敵すぎです。ちなみに、出来上がったイメージファイルを実機で動作させる方法もいろいろあって、EPROMに焼いてカセットのロムを差し替える以外にも、PCからUSB転送すれば即ファミコンで動作しちゃうようなお手軽な方法もあるようです。具体的な環境構築とかは説明が面倒というか、理解が半分にも及んでいないのでやめておきます。サンプルとか探した方がよっぽど早いし、正確です。このブログに正確な情報を求める方が危険です!というわけで、実際に始めてみて思うのは、本業でやったまもって騎士のときにも感じてましたが、画面をデザインすることとゲームをデザインすることが密接なんですよね。背景は全て8x8ドット刻みですし、パレットは16x16ドット単位。半透明もないので、画面にいれられる情報量にもおのずと限界がある。パレットの数もBGが4つにスプライトが4つ。+背景色に使えるのは1色のみ。これだけで画面デザインはかなり絞られてしまうので、やりたいことと、画面デザインを検討すると、自然にゲームシステムも固まってきてしまう。体力ゲージはどんな風に表現しようか?とか。いった要素は、上記の制限と処理速度を考えると、大して選択肢がない。これしかやりようないよな...という具合に決まっていく。そこから逸脱して独自性のある表現を考えるのも楽しいわけですが、やってみるとうまくいかなくて、四苦八苦したりと、まぁそういうのも含めて楽しいわけです。cc65を使うと処理速度が厳しい。BGの書き換えなんて1フレームで5~7キャラが限界(アセンブリ言語でやればやり方次第で3ライン以上いけるらしいですよ!)。奇数フレームはこの処理をして、エフェクトは数フレームに1回更新すればいいか、とか、だんだん切なくなっていきます。ファミコンのマッパー0だとプログラム領域が最大で32KBなんですが、ただでさえデカいコードなのであっという間に32KBを使い切っちゃう。マッパー4辺りがよさそうです。それだけあれば多少の贅沢は許されそうですが、同時に乗せられる容量は変わらないので、どっちにしても苦労することには変わらないです...。バンク切り替えは普通にCからでもできますし処理は速いです。BGの書き換えが重いので、大きな絵の変化はバンク切り替えが全てといっても過言ではないかもしれません。ブログ復活といっても何回続くのやらわかりませんが、最近見につけた知識を備忘録代わりに残しておきたいとは思います。最近はこんな感じで、ファミコンプログラムにハマってたわけですが、私のように技術の”ぎ”の字もないおっさんを見かねてか、いろいろと助けてくださる方もいるわけです。そんなノウハウを貯めつつゲーム作ってるのですが、そういった知識を独り占めというのも勿体無いので、自分で残せる範囲では残しておこうかと思います。1回目ということで駄文オンリーなんですが...。次回からはもうちょい記事らしい記事を書こうかな?とか思ってます。知れば知るほど、ファミコンってすごいハードだなぁ、と思います。MMCやら拡張音源とか。今作ってるのは某グロブダ風な面クリ型固定画面シューティングです。グロブダのようなスピード感が出せればよいのですが、cc65ではちょ......っと厳しいですね。ファミコンなので、そこはファミコン風な方向性で勝負していきたいかなぁと思います。実はこれ最初マッパー0の32KB(スーパーマリオとかのロム)で作ってたんです。一応必要なデータと全部の画面は入れたので、後は作りこむだけかな?とか思っていたんですが、あのまもって騎士でサウンドドライバnsd.libをご提供いただきましたs.wさんにいろいろとご助言いただいて、調整されていく中でcc65でもmmc3いけるんじゃね?という展開になりまして、作り直しているところなんです。