地形コード
施設コードとは異なり、へクスごとの地形を管理し、完全な
マップエディットを成立させるコード。
ただし施設コードのページに書いた通り、施設コードがないと施設としての役割を果たさないため、
施設データとセットで記述する必要がある。
地形コードはセーブデータには一切記録されない。
本ゲームにおけるマップのサイズは、ご存じの通り最大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