最初の2byteはサイズ情報が格納されています。
1byte目 - 横方向のサイズ(この値に*8したものが横方向のドット数になる)
2byte目 - 縦方向のサイズ(=縦方向のドット数)
以降はデータ本体が続くのですが、
判別値(1byte) → データ部(場合によってはなし) → 判別値 → ...
の繰り返しになります。
判別値は「以降に続くデータ通りに出力」または「空白データを出力」のどちらであるか、
およびそのデータ量を表す値です。(後述)
キャラクタデータの終端を示すようなデータはないので、判別値に沿ったデータを出力した後、
画像サイズ分のデータを出力したかどうかから終了を判定します。
画像データの格納方向はCHRファイルなどと違い、
横8ドット単位のデータが「縦方向」に続いているので注意してください。
判別値は、最上位ビットが立っているかどうか($80以上か未満か)で処理が変わります。
[判別値が$80未満の場合]
この後に4byteのデータが(n+1)回続きます。 (n=判別値)
データは1回(4byte)で横8ドット分を表しており、1byteごとに以下の情報を持っています。
(CHRファイルなどと同様、各ビットが1ドットに対応しています)
1byte目 - パレット番号+1
2byte目 - パレット番号+2
3byte目 - パレット番号+4
4byte目 - 描画フラグ(0の場合は描画されない?)
[判別値が$80以上の場合]
空白データ(00 00 00 00と同等?)を(n-$80+1)回繰り返した状態になります。
(この場合、データ部にあたるものはありません)