マッププロパティでの7~16バイト目は使用するマップデータの番号などを指定する重要な項目ですが、少々特殊な読み取り方を行っています。
簡単に言うと、読み取りが1バイト単位でないということです。
竜の首の家・屋内を例にとると
byte 値
07 99
08 C8
09 46
10 03
11 40
12 22
13 32
14 CC
15 00
16 00
竜の首の家・屋内を例にとると
byte 値
07 99
08 C8
09 46
10 03
11 40
12 22
13 32
14 CC
15 00
16 00
となっています。(構造体からマップ関連データを参照のこと)
これらのデータによって、上から順にチップセット1、チップセット2、チップセット3、チップセット4、Layer3データ、タイル構成1、タイル構成2、マップデータ1、マップデータ2、マップデータ3を設定しています。
この場合、チップセット1の番号は「99」ではなく、そのうちbit0からbit6までの7bitの値になります。
「99」(16進数)を2進法で表すと「10011001」
これらのうちbit0からbit6までを抜き出すと「0011001」=19
よってチップセット1の番号は「19」となります。
これらのデータによって、上から順にチップセット1、チップセット2、チップセット3、チップセット4、Layer3データ、タイル構成1、タイル構成2、マップデータ1、マップデータ2、マップデータ3を設定しています。
この場合、チップセット1の番号は「99」ではなく、そのうちbit0からbit6までの7bitの値になります。
「99」(16進数)を2進法で表すと「10011001」
これらのうちbit0からbit6までを抜き出すと「0011001」=19
よってチップセット1の番号は「19」となります。
では「99」のうちのbit7はどうなるのかというと、次のチップセット2の値の指定に使われています。
チップセット2の値は「C8」
これを2進数で表すと「11001000」
この下にチップセット1の値のbit7を繋げると「110010001」
これの下位7bitを抜き出すと「0010001」=11
よってチップセット2の番号は「11」になります。
チップセット2の値は「C8」
これを2進数で表すと「11001000」
この下にチップセット1の値のbit7を繋げると「110010001」
これの下位7bitを抜き出すと「0010001」=11
よってチップセット2の番号は「11」になります。
チップセット3と4も同様に7bit単位での読み取りとなります。
(ちなみにチップセット3の番号は1B、チップセット4の番号は1Aになります)
全て7bit単位であれば簡単なのですが、厄介なことにLayer3の番号は6bit、マップデータ1~3の番号は10bitで設定されています。
手計算も可能ですが、簡単な計算プログラムを作ったのでこちらを利用するとよいでしょう。
→マッププロパティ計算
(ちなみにチップセット3の番号は1B、チップセット4の番号は1Aになります)
全て7bit単位であれば簡単なのですが、厄介なことにLayer3の番号は6bit、マップデータ1~3の番号は10bitで設定されています。
手計算も可能ですが、簡単な計算プログラムを作ったのでこちらを利用するとよいでしょう。
→マッププロパティ計算