Future Driver

激怒ぷんぷん丸 / Gekioko PunPun Maru

Introduction

ファミコンで近年話題の激おこぷんぷん丸、実はセガのハードでも出てたんです!
ファミコン版とは異なり、ステージは横スクロールしません。 ステージ上に次々現れる敵を全て倒せばステージクリアです。 四季と朝・昼・夜を掛け合わせた12ステージあります。 対応機種は国内のマスターシステムとマークIIIです。 FM音源には対応していません。

Screen shot

How to play

ボタンと操作方法
Button 1 ・・・ ぷんぷん煙を出します。 煙を敵に当てて倒します。
Button 2 ・・・ ジャンプします。 ぷんぷん丸は敵に触れると死にます。

ステージの低い位置で待機していると、弱者のキャンパー扱い。 残り時間が容赦無く減っていくぞ。 残り時間が無くなればタイムオーバー。 低い位置の方が敵を狙い易いけれども、ハイスコアの為にも、なるべく高い位置で待機しよう!
全ての敵を倒せば、棒が刺さったナス (ボーナス) が降りて来るぞ。 次のステージに移る前に、すばやく全部のボーナスをゲットだ。

ステージ紹介
春のステージ・・・風は穏やか、敵も穏やか、ここで腕慣らしだ。
夏のステージ・・・暑さに気を奪われるな、敵は何時までも甘くないぞ。
秋のステージ・・・おやおやハローウィン? おばけが出てくるぞ。
冬のステージ・・・地面が凍った! つるつる滑りながらも最後の一踏ん張り!

Download

BGM恵んでもらったので追加した。 但し適当。 BGMに合わせてステージ変更中・・・
punpun.zip - ROM image, 256 kBytes, Binary

BGM

ROPさんにいっぱい移植してもらった!

デバッグ・その他に関する連絡先
Twitter: @MtChocolate (フォロー無しプライベートメッセージもOKです)
Mail: youichi.minami@gmail.com (名字と名前を入れ替えると本当のアドレスになります)

開発ネタ

事の始まりは s.w. さん達の作ったファミコン版激おこぷんぷん丸 (sm20604710) です。 動画ではサウンドテストのみですが、後に鬼雷昇炎さんが ドット絵 を描いてくれたりして密かに横スクロールする所まで開発が進んでいます。 これを見て 『ヤベぇ、ウチも作るわー!!』 となった訳ですね。 ちなみに門真 なむさんが Bad Apple!! PV-FC 作った時も『ヤベぇ、ウチも作るわー!!』 なってメガドライブ版を作ったので、今回も同じノリです。

2013年4月頃、まず初めに長年使い慣れたメガドライブ (68000 + GCC) で開発を始めました。 ゲームシステムは2日くらいでほぼ出来上がっています。 後々、開発言語はCのまま、ファミコン (6502) やマスターシステム (Z80) 等の8bitプラットフォームへ移行する前提だったので、 VRAMアクセス等の極一部のアドレッシングを除いて全てのデータが8bitレジスタに収まるようにコーディングしています。 その後、無駄にしばらく間を置いて、 2013年8月頃にようやくプラットフォームをメガドライブからマスターシステムに移しました。 開発言語がCなので、プラットフォームが変わっても、 コーディングに気をつけていればハード固有の関数の中身以外は書き換える必要もなく、 実際の所、それらの関数が用意出来た時点で難無く早々と動かす事が出来ました。

初めてエミュレーター上で動いた時の感想は、 『Z80はCでコーディングしても結構速いのね!』 初めは30fpsに満たないかもしれないと不安に思っていたのだけど、 意外にも30fpsと60fpsの間を行ったり来たりしています。 コレは逝けると思ってCソース上での最適化を進めた結果、常時60fpsを達成出来ました。 今回あくまでCで開発するポリシーだったので、 アセンブラソースはスタートアップルーチンを除いて一切触れていません。 VBLANK中のVRAM書き込みルーチンすらCです。

その後実機でも60fpsを維持出来ている事を確認したのですが、 メガドライブと違ってマスターシステムはエミュレーター vs 実機での速度差があまり発生しない様です。 メガドライブの場合は基本エミュレーターの方が速いので、 エミュレーターでギリギリだと実機で処理落ちします。

勢い任せで2日でゲームシステムを作った都合上、ハード固有の関数を除いて main.c にほぼ全てを書いてます。 後で整理してソースコードも含めて公開予定です。 他にもマスターシステムで開発したい人が現れるかもしれないので。 ちなみに Fix It Felix Jr. もゲームシステムを2日で作ってます。 大体2日あれば肝心な部分だけは作れるぽいです。 その後の展開がトロいのが難ですが・・・。

マスターシステムはメガドライブと同じで、クセが無いので扱いが楽です。 せいぜい、スプライト アトリビュート テーブルの並び方がキモい (スプライト単位の構造体じゃなくて、一次元配列が数本並んでる) くらい。 ハッカー達が恵んでくれるドキュメントに従ってコーディングすればサクッと動いてくれます。 ただ今回は未使用のスプライトを初期化 (VRAMのスプライト アトリビュート テーブルをゼロで埋める) して無かったので、実機で動かした時に、画面にスプライトのゴミが出る現象が出ていました。 これは確保したメモリーがゼロ初期化されるエミュレーターでは再現されない所です。

ちなみにメガドライブも同じくワークメモリーとVRAMは電源投入時に不定になるので初期化しないといけないのですが、 メガドライブには定番の初期化ルーチン (SEGA.S) が各種メモリーとレジスターを初期化してくれるので、 ユーザーサイドはその点について意識しなくても良い様になっています。 マスターシステムは SEGA.S の様な、これと言った定番の初期化ルーチンが無いので自力で用意する事になります。 また、そもそもCで開発するキチガイが居ないので、Cとなれば一式自力で用意する必要があります。 PSG、VDP、I/Oの等のポート定義やレジスターのビット定義も含めて。

inserted by FC2 system