マップの各マスの周囲 4 方向はただの通路だったり、壁、森、扉などがあったりする。これらを「境界」と総称する。 境界は通行可否とは別の概念である(見た目が壁でも通行可能だったり、逆に見た目が通路でも通行不可なケースなどがある)。
マップの各マスは周囲 4 方向について境界の値 (0..=3
) を持っている。
値 0
は通路を意味し、値 1..=3
の意味はマップごとに異なる。
境界の値は 2bit なので、1 マスの周囲 4 方向の境界は 1 バイトに pack できる。この pack されたバイトを 16 * 16 = 256
個並べた配列を「マップ境界配列」と呼ぶ。
マップ境界配列のバイト内の pack 形式は以下の通り:
bit | 意味 |
---|---|
6-7 | 北の境界 |
4-5 | 東の境界 |
2-3 | 南の境界 |
0-1 | 西の境界 |
マップ境界配列の並び順は row-major で、y, x ともに昇順。つまり座標 (0, 0), (1, 0), ..., (15, 0), (1, 0), ... のように並んでいる。たとえばオフセット 19 は座標 (3, 1) に対応する。
マップ境界配列は $6200-$62FF
にロードされる。イベントにより動的に書き換わる場合もある。