2017-03

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

cc65でファミコンゲーム開発

ブログ更新何年ぶりよ? というかXNAはどうなったんだ?とか。まぁ、そういうのは置いておいて。

そう、cc65ですよ! いまやファミコンゲームがC言語で書ける時代になったわけです。すごい時代になったもんですよね。そんな話を知人としていたわけですが、なんかいろいろあって結局自分も始めちゃいましてね、やっぱ面白いんですよ。ちまちまと作っていくのが。感覚的には片手で持てる程度のメモ帳にちまちまと細かい絵を描いてるような。そんな気分でゲーム作りしている印象です。今のゲームだと大量の石とかセメントとかドーンっと積んで、自社製のユンボ(ゲームエンジン)とかででかい建造物作るぞ~みたいな? それもすごいエキサイティングなことなんだけどね。こういう小さい環境のゲーム開発ってのも面白いです。

あ、また話が長くなってくる気配ですね。戻しましょう。cc65へ。
cc65は6502のCコンパイラなんですね。これとNES用のライブラリがあれば、ファミコン用のイメージが自分で作れちゃうってわけです。イメージっていうのは、いわゆるエミュ用のイメージである.nes形式ですね。これがフリーで提供されてるなんて素敵すぎです。ちなみに、出来上がったイメージファイルを実機で動作させる方法もいろいろあって、EPROMに焼いてカセットのロムを差し替える以外にも、PCからUSB転送すれば即ファミコンで動作しちゃうようなお手軽な方法もあるようです。

で、具体的な環境構築とかは説明が面倒というか、理解が半分にも及んでいないのでやめておきます。ググってサンプルとか探した方がよっぽど早いし、正確です。このブログに正確な情報を求める方が危険です!

というわけで、実際に始めてみて思うのは、本業でやったまもって騎士のときにも感じてましたが、画面をデザインすることとゲームをデザインすることが密接なんですよね。背景は全て8x8ドット刻みですし、パレットは16x16ドット単位。半透明もないので、画面にいれられる情報量にもおのずと限界がある。パレットの数もBGが4つにスプライトが4つ。それぞれ3色。+背景色に使えるのは1色のみ。これだけで画面デザインはかなり絞られてしまうので、やりたいことと、画面デザインを検討すると、自然にゲームシステムも固まってきてしまう。例えば、アイテムはどうで、武器はどんな感じにしようか? 体力ゲージはどんな風に表現しようか?とか。そういった要素は、上記の制限と処理速度を考えると、大して選択肢がない。もうこれしかやりようないよな…という具合に決まっていく。もちろん、そこから逸脱して独自性のある表現を考えるのも楽しいわけですが、やってみるとうまくいかなくて、四苦八苦したりと、まぁそういうのも含めて楽しいわけです。

んで、cc65を使うと処理速度が厳しい。遅いなんてもんじゃない! BGの書き換えなんて1フレームで5~7キャラが限界(アセンブリ言語でやればやり方次第で3ライン以上いけるらしいですよ!)。それでどうやってスクロールさせろっていうねん! と。なので、奇数フレームはこの処理をして、エフェクトは数フレームに1回更新すればいいか、とか、だんだん切なくなっていきます。で、しかも吐き出したコードがまたデカい! ファミコンのマッパー0だとプログラム領域が最大で32KBなんですが、ただでさえデカいコードなのであっという間に32KBを使い切っちゃう。なので、マッパー4辺りがよさそうです。プログラム、グラフィックがそれぞれ最大256KBですか? それだけあれば多少の贅沢は許されそうですが、同時に乗せられる容量は変わらないので、どっちにしても苦労することには変わらないです…。バンク切り替えは普通にCからでもできますし処理は速いです。BGの書き換えが重いので、大きな絵の変化はバンク切り替えが全てといっても過言ではないかもしれません。

さて、ブログ復活といっても何回続くのやらわかりませんが、最近見につけた知識を備忘録代わりに残しておきたいとは思います。そうなんです。最近はこんな感じで、ファミコンプログラムにハマってたわけですが、私のように技術の”ぎ”の字もないおっさんを見かねてか、いろいろと助けてくださる方もいるわけです。そんなノウハウを貯めつつゲーム作ってるのですが、そういった知識を独り占めというのも勿体無いので、自分で残せる範囲では残しておこうかと思います。
まずは1回目ということで駄文オンリーなんですが…。まぁ、次回からはもうちょい記事らしい記事を書こうかな?とか思ってます。しかし知れば知るほど、ファミコンってすごいハードだなぁ、と思います。仕様もスゴイけど、発売後の工夫? MMCやら拡張音源とか。あと驚いたのはファミコンは他のハードよりも音周りは優秀というのは聞いてたし、まもって騎士関連でもよくまぁこんな凝った曲できるよなぁ、とか思いながら仕事してたんですが、実際の仕様を見たら、え!? こんなショボい仕様であそこまでやってたの…!? と驚きが隠せないです。

で、今作ってるのは某グロブダ風な面クリ型固定画面シューティングです。グロブダのようなスピード感が出せればよいのですが、cc65ではちょ……っと厳しいですね。まぁファミコンなので、そこはファミコン風な方向性で勝負していきたいかなぁと思います。実はこれ最初マッパー0の32KB(スーパーマリオとかのロム)で作ってたんです。一応必要なデータと全部の画面は入れたので、後は作りこむだけかな?とか思っていたんですが、あのまもって騎士でサウンドドライバnsd.libをご提供いただきましたs.wさんにいろいろとご助言いただいて、調整されていく中でcc65でもmmc3いけるんじゃね?という展開になりまして、作り直しているところなんです。まぁ、マッパー0で完成させても良かったんですが、ガマンしてる箇所も多かったので、今度はちゃんと納得いくまで作れるかな? と思ってます。たぶん。

20150705_title.jpg
タイトル画面です。ゲームのタイトルは『硝煙の騎士デュランダル』っていいます。MMC3移行するにあたってタイトルシーンは変えようと思うので、たぶんこの画面は没になりそうです。残念!

20150705_maingame.jpg
メイン画面です。まんまですね! Bボタンを押しながら移動すると向き固定移動ができます。セレクトボタンでBボタンの機能を切り替えられて、パンチやミサイル、回復キットなどが使えます。

20150705_shop.jpg
ステージ中の金塊を取るとステージ後にパワーアップできます。パワーアップすると、さらに次のパワーアップのために必要な、新しい価格に書き換えるのですが…これがキツい! 各桁の数字を計算するのに割り算とか余りとか求めたんですが、死ぬほど重くて…。そんな計算のために1フレーム抜いたりとかしてたら、今度はコードがでかくなる! もうね…どないせいゆうねん! と。結局シーンまるごと切り替える形にしちゃいましたよ…。ショップでパワーアップすると、自動的に店でて、また入る。すると値段変わってる。みたいな。ヒドすぎwここもバンク切り替えて絵を入れたいので、ずいぶん変わるだろうと思います。記念です。


さて、次回からは、cc65でゲーム制作する際の注意事項とかまとめてみたいと思います。あまりちゃんとした検証してないので、海外サイトに書いてあって、やってみたらなんとなく軽くなったような? というレベルです。あくまで自己責任で、ということで。
スポンサーサイト

NEW ENTRY «  | BLOG TOP |  » OLD ENTRY

プロフィール

Karu_gamo

Author:Karu_gamo
<メールアドレス>
karu_gamo#hotmail.co.jp
#を@に置き換えてえてください。

<自分リンク>
かるがも研究所【新】
YouTubeチャンネル
公開素材置き場
仕様書
旧ブログ(見るとこないです)
管理者ページ

リンク

YouTube動画

FC2カウンター

カテゴリー

Twitter

 

月別アーカイブ

RSSフィード

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。