メガドライブ用ソフトのプログラミング その 9 - マップの読み込みとスクロール | Arcade Cabinet

Arcade Cabinet

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

メガドライブのゲーム開発目的でプログラミングの勉強中ですが、
ギャラクシアンがプレイ可能な状態で、ほぼ完成したので、自分自身の最終目標である横スクロールシューティングのプログラミングの勉強を始めることに…
*実は途中で中断している「ぼくのかんがえたファンタジーゾーン」は、PCではなくメガドライブで完成したいと、夢のようなことを考えています。


とりあえず勉強目的で、初代ファンタジーゾーンを移植してみることに…
まず、背景のマップの読み込みとスクロールです。
ファンタジーゾーンの背景は2重スクロールで、表の背景は2048x256ドット (256x32cell*)、裏の背景は1024x224(128x28cell*)ドットあります。
*cellは8x8ドットのパターンです。
SGDKについている、メガドライブのマニュアルによると、スクロールに使えるバックグラウンド面のサイズは、最大で128x128cell。


上図のように、メガドライブの背景スクロール面は広い領域があり、その一部が画面に表示されている状態です。ただ、広いのですが、ファンタジーゾーンの全てのマップを読み込めるほど広くはないようです。
「スーパーファンタジーゾーン」はどう処理されているのか?とても完成度が高いゲームですね。Gens KModで確認すると、スクリーンサイズは64x64cellになっていました。
どうやら、画面のスクロールに対応して見えないところで、マップを書き込んでいると思われます。
このマニュアル全て英語で、ハードウェアの専門用語が多く難解ですが、しばらく読み続けました。特にVDP (Video Display Processor)やVRAMについては理解する必要がありそうです。


次に、問題なのが、同時に使える色数です。
マニュアルによれば、使える色は9-bit colorとのこと、9-bitって何?
と思いましたが、よく読んでみると、赤:3bit 緑:3bit 青:3bitで色指定ができるようで、3bitとは2x2x2で8段階。赤8色、緑8色、青8色の色指定での組み合わせで、計512色の色を指定できることがわかりました。
さらに16色のパレットが4種類しか使えないので、同時発色は64色です。
オリジナルのファンタジーゾーンの発色をそのまま再現することは、不可能なようです。
1面の背景2画面を15色に減色してみました。減色ツールでは思うような変換ができなかったので、ドット絵エディタを用いて、根性で編集しました。


タイルパターンもなるべく少なくなるように微調整しました。


後ろの山です。
ファンタジーゾーンのデザインの素晴らしさに感動しながらの編集です。


処理速度の面で不安がありますが、2重スクロールの背景、ウインドウ面を用いてスコアパネルも表示しました。
動画は、実機でブラウン管での撮影です。今のところ非常に滑らかなスクロースです。