ページカテゴリは「X1でゼビウスを作る
Ver.2」となっていますが、X1版はマップを62.5%に圧縮してあり、その地上キャラクタのデータを公開しても無意味(汎用性が無い)です。 よって、今回のデータ公開(ダウンロード可能)は、アーケード版を確認しながら(いわゆる「眼コピー」)作成したデータです。
(1)
ゼビウスマップの構成 ゼビウスマップは8×8ドットのマップチップで構成されておりされており、全体マップとしては横128×縦256個のマップチップを使用しています。 (横1024×縦2048ドット) ※以降マップチップの単位を「チップ」と表記します。
1エリア毎では横28×縦256チップです。画面表示は横28×縦36チップです。 各エリアのスクロール背景は全体マップからx座標(チップ単位=8ドット単位)により横28チップを抽出したものとなっています。
各エリアの(全体マップ)抽出のx座標は以下の通りです。 (x座標は0〜127として示しています)
AREA 1 =
64 AREA 2 =100 AREA 3 = 16 AREA 4 =
86 AREA 5 = 36 AREA 6 = 74 AREA 7 =
0 AREA 8 = 96 AREA 9 = 58 AREA 10 =
8 AREA 11 = 86 AREA 12 = 96 AREA 13 = 44 AREA 14 =
16 AREA 15 = 74 AREA 16
=100
全てを縦に繋げると、16エリア全体では横28×縦4096チップとなります。
(2)
地上キャラクタの配置
地上キャラクタ(ドモグラムも含む)の配置は、チップ単位のx座標、y座標としています。
(x座標は0〜27、y座標は0〜4095) y座標はエリア1の開始を4095としエリア16の最終を0としています。
地上キャラクタの配置データ(ドモグラムは含まず) → ダウンロード (ファイル名:ground_chr_data.csv)
→ Webページで見る
ドモグラムの配置と移動データ → ダウンロード (ファイル名:domogram_move_data.csv) →
Webページで見る
ただし、地上キャラの配置は、必ずしもチップ単位(8×8ドット単位)で配置されている訳ではありません。 その場合は、オフセット(x,y)として位置の補正をしています。
(以下は、ground_chr_data.csvにおける「出現位置_x」が4、「出現位置_y」が117のログラムを例にしています)
これは配置座標をマップチップ単位にしている為のオフセットです。 配置データをマップチップ単位にした理由は(ドット単位にしても良かったのですが、ドット単位で必要なら計算が出来るし) 背景をスクロールさせる際にマップチップを描画させる必要がありますし、その際に地上キャラクタを登場させるはずですから(地上キャラクタの登場タイミングを判定させるには)マップチップ単位の方が作り易いと判断しました。
※なお、X1版NEWゼビウスの場合は、マップを62.5%の比率でオリジナルを圧縮しており、マップチップは8×8ドットなので、オフセットによる配置がかなり多く存在しています。 アーケード版は(ground_chr_data.csvをご覧いただければ分かりますが)オフセットの必要な配置はそれ程多くはありません。
グロブターに関しては、(ground_chr_data.csvに) 「移動パターン」が存在します。移動パターンは0〜7であり、その動作は以下の通りです。
0 停止(動かない) 1 走行 2
停止→ロックオンで走行 3 走行→ロックオンで停止 4 停止→ブラスターで逆走→停止 5
走行→ロックオンで急発進→走行 6 走行→ブラスターで逆走→走行 7 停止→ブラスターで急発進→停止※データとして4が存在しません。(プログラムとしては実装しているのですが)確認不足です。 ちょっと、自信がありません。
アンドアジェネシスは、地上キャラクタでは無いのですが、登場位置と撤退位置もデータとして格納されています。
(3)
ドモグラムの配置と移動データ
配置に関しては、他の地上データを同じです。 登場してからの移動パターン数、移動距離(ドット数)を示しています。
【例1】 以下の例では、移動パターン数は3回で、それぞれの移動距離(ドット数)は以下の通りです。 (domogram_move_data.csv
における「出現位置_y」が3813を例にしています。最初に出現するドモグラムです)
移動パターン@の移動ベクトルはx軸が
0ドット、y軸が+16ドット この移動が終了したら移動パターンAに移行します。 移動パターンAの移動ベクトルはx軸が+32ドット、y軸が+32ドット この移動が終了したら移動パターンAに移行します。 移動パターンBは移動ベクトルはx軸が+80ドット、y軸が
0ドット 最終パターンなので画面外に消えるまで移動します。
【例2】 以下の例では、移動パターン数は2回で、それぞれの移動距離(ドット数)は以下の通りです。 (domogram_move_data.csv
における「出現位置_y」が73を例にしています)
移動パターン@の移動ベクトルはx軸が-80ドット、y軸が+80ドット この移動が終了したら移動パターンAに移行します。 移動パターンAは移動ベクトルはx軸が-80ドット、y軸が+40ドット 最終パターンなので画面外に消えるまで移動します。
移動パターン@の移動ベクトルは-45度なので、x軸とy軸を共に1ループにつき1ドット加減算すればよいのですが、移動パターンAは、1ループにつき、移動量の多いx軸を1ドット、y軸を0.5ドット加減算させます。※X1版NEWゼビウスの場合は、座標は固定小数点16ビットとして計算させています。(上位8ビットを整数、下位8ビットを小数としてあり、小数点以下は1/256刻みの精度しかありません)
これらのドモグラムデータ
(domogram_move_data.csv)の動作確認プログラムを作ってみました。
domogram_move_data.csvの(ヘッダ部の除いた)
行を入力する事により、ドモグラムの動作が確認できます。 画面の赤枠は、描画範囲
(横224ドット×縦288ドット)を示しています。 緑線は、背景スクロール(の速度)を示しています。 昔ながらのBASICの記述で作ったのでソースも公開しておきます。 ソースの拡張子はabpですが、テキストエディタでも開く事が可能です。シンプルに作ったつもりですので、よろしかったら参考になさって下さい。
「ドモグラム動作チェック」ソフト →
ダウンロード
(ファイル名 : domogram_move.zip)
※なお、開発言語はActiveBasic 4.24です。 ( Acrivebasic
公式ページ からAcriveBasicを入手すればコンパイルできます。実行ファイルも同梱しておきますが・・・)
【蛇足】 どうでも良い話ですが、ActiveBasicの「Open filename$ For Input
As
numberopen」によるファイル読込みは非常に遅いのです。 別手法で瞬時に読み込ませる方法もあるのですが、敢えてその手法は使わず、「Open」を使用しています。これはコードの可読性を重視したからなのです。
(4)
地上キャラクタ配置確認ソフト
上記の「ドモグラム動作チェック」ソフトでは、スクロール背景が無いために、(道(?)が無いので)ドモグラムの軌跡が分かりづらいと思います。 折角なので、ドモグラムデータ(domogram_move_data.csv)、地上キャラクタ配置データ(ground_chr_data.csv)を併せ、スクロール背景も含み動作プログラムを作ってみました。
地上キャラクタ配置確認ソフト「XEVIOUS
MAP」 → ダウンロード (ファイル名 :
map_scroll.zip)
最初に開始したいエリアを入力すれば、スクロールが開始されます。左の数値はマップチップ単位のy座標を表示させています。 グロブターは動かしていません。動作パターンは上述の(地上キャラクタの配置のグロブターの項)を参照下さい。
この地上キャラクタ配置確認ソフト「XEVIOUS
MAP」とアーケード版とを比較した動画も併せて作りました。 公開したデータは2011年にWindowsでゼビウスを作った時のものです。作った当初は(ドモグラムの動作が)アーケード版と殆ど同じ動作だったと思っていたのですが、今、見ると微妙に出現タイミングが違っている箇所もありますね。
この辺りは、もう少し動作確認を行い、いずれは修正していきたいと考えています。
動画 ゼビウス・マップ 地上キャラクタの配置【眼コピー】
VIDEO
※動画の画面右はアーケード版の動作で、今回作成した地上キャラクタ配置確認ソフト「XEVIOUS
MAP」と完全同期が取れていません。(スクロールスピードが微妙にことなり、エリア終盤では8ドット位ずれてきてしまっています)
アーケード版との比較スクリーンショットは、こちらのページ
いずれにせよ、眼コピーでの配置データ・移動データですので、(ドモグラム以外はかなり精度は高いと思いますが)、微妙な違いはあると思います。
【追記】 上記の実行ファイル(exe)が、稀に(?)アンチウィルスソフト
AVGフリーで検出される事がありました。問題は無いはずですが、ダウンロードした際には念の為、各々ウィルスチェックをしていただければ幸いです。