地形コード

施設コードとは異なり、へクスごとの地形を管理し、完全なマップエディットを成立させるコード。
ただし施設コードのページに書いた通り、施設コードがないと施設としての役割を果たさないため、
施設データとセットで記述する必要がある。
地形コードはセーブデータには一切記録されない。

本ゲームにおけるマップのサイズは、ご存じの通り最大62×62へクスであるが、
選択できないマスが端に見えているのを含めると、実質X=0,Y=0~X=63,Y=63までの64×64へクスとなる。

地形コードは、マップの実際のサイズ(操作できる領域)に関わらず、常に64×64へクス分のデータ領域が用意されている。
さらに地形コードには2種類のレイヤーがある。地形の種類と、同一種類におけるバリエーションだ。

地形の種類(レイヤー1):
 例えば「海」「森」「都市」など、地形そのものの種類を管理する。
 ユニットの移動、地形効果などに影響を与える。
バリエーション(レイヤー2):
 同じ「海」であっても、海岸線の形は様々である。同じ「道路」であっても、道の形は様々である。
 このような地形ごとのバリエーションを管理する。
 隣接するへクスに自然に地形が繋がるよう構成されていることが多い。
 施設コードにおいて、同じ値を設定しているのに座標によって施設の形が違うのもこれが原因。

「地形の種類」で1000hバイト、「バリエーション」で1000hバイトの計2000hバイトで構成される。
(1000hバイトは10進で64×64=2048バイトである。つまり1へクスあたり1バイト×2レイヤーの情報がある)

座標 地形の種類 同一地形バリエーション
60メモリ 02メモリ 60メモリ 02メモリ
X=0,Y=0 D78A4 0 D88A4 1000
X=1,Y=0 D78A5 1 D88A5 1001
X=2,Y=0 D78A6 2 D88A6 1002
・・・ ・・・ ・・・ ・・・ ・・・
X=63,Y=0 D78E3 3F D88E3 103F
X=0,Y=1 D78E4 40 D88E4 1040
X=1,Y=1 D78E5 41 D88E5 1041
・・・ ・・・ ・・・ ・・・ ・・・
X=0,Y=2 D7924 D8924
・・・ ・・・ ・・・ ・・・ ・・・
X=63,Y=63 D88A3 FFF D98A3 1FFF

コードを適用し地形を変えるためにはマップのロードが必要であり、またセーブデータにも記憶されないため、
改造コードの文脈で使用するよりも、バイナリ改造に用いる意義の方が大きいといえる。

完全にオリジナルのマップを作ることも理論上は不可能ではないが、かなり難しい。
地形種コードだけならまだしも、バリエーションコードのパターンが膨大で、
かつ上に書いたように、隣り合ったへクスが自然に繋がるよう構成するのが求められるため。
さらにマップサムネイルの問題もある(本コードの範囲外)。
オリジナルデータを作るなら、バリエーションコードは諦めるか、
RPGツクールの地形エディタみたいに自動で地形を繋げてくれるツールがあればといったところ。

(加筆予定)
最終更新:2022年06月14日 21:24