メガドライブ用ソフトのプログラミング その 16 - ラウンド1 | Arcade Cabinet

Arcade Cabinet

自作したゲームコントローラを紹介します

C言語の学習目的で、メガドライブプログラミングを行っています。ラウンド1がほぼ完成したのですが、無計画にプログラミングしてきたため、全体構造を頭の中だけで把握できなくなり、プログラムが崩壊寸前です。

C言語はクラスが使えないので、まず必要なオブジェクト(プレイヤー、プレイヤーの武器、敵機、敵機の武器、ステーション、バルーンなど)をそれぞれ構造体を作成し、なるべく変数単体は使用しないように設計しました。速度の問題があるので、小さな関数は必要最小限にし、ポインタの使い方を再度見直し、関数の呼び出しもポインタで行ったり、いろいろ試行錯誤しております。

 

ラウンド1です。何とか動いている状態です。ここでプログラミングを終了するかどうか正直迷いました。技術を少しばかり習得できると、それを継続するためのモチベーションが極端に下がってしまいます。飽きてくるというのもあります。ただ一つのゲームとして完成させたいという気持ちもありまして。本当に完成できるかどうか自信はないのですが、もう少しチャレンジを続けてみようと思います。

 

前線基地の座標をメモしたり

 

敵機のグラフィックスの調整をしたり

ファンタジーゾーンは音楽がとても良いですが、グラフィックスも最高ですね。素晴らしいセンスに感動を覚えながら作業を続けます。

 

 

メガドライブのハードウェアはとてもよくできていると思うのですが、使える色数が少ないのが最大の弱点かもしれません。メガドライブ読み込める色は9-bit colorでたったの512色です。さらに16色パレットが4つしか使えないので4色の透過色を考慮するとたったの60色です。色数を倍にする「シャドウ・ハイライト機能」もありますが、自分の技術ではまだ使い切れません。色数はゲームの見た目に大きく影響するので、色の選択には最大限に気を使いたいところです。

RGB各色の数値は0,36,73,109,146,182,219,255に固定し、16色1色は透明なのでオリジナルの画像を15色まで減色します。ただ減色ツールではなかなか思ったような色を選択できないので1色1色手作業で行っています。他にもっといい方法があるのかもしれません。

 

崩壊寸前のプログラミングの構造を見直し、複数の面に対応できる設計に改良中。2Playerの機能も追加中です。

速度面を重視した「わかりやすい構造のプログラミング」ってどんなものだろう?