以降に、本エディッタで生成する「M08」及び「M8D」マップデータに関する仕様詳細を提示します。
本エディッタでマップデータを作成した際、以降の仕様詳細を参考にデータのインポートを実施して下さい。
■ヘッダー情報 (0x0000〜0x000F、16バイト)
0x0000〜0x0002 :識別拡張子情報「$38304d」(「M08」)
0x0003 :(未使用)
0x0004〜0x0005 :マップの幅(2バイト)
0x0006〜0x0007 :マップの高さ(2バイト)
0x0008 :インデックス情報 1
0x0009 :インデックス情報 2
0x000A :インデックス情報 3
0x000B :インデックス情報 4
0x000C〜0x000F :(未使用)
■マップデータ情報 (0x0010〜????、マップサイズにより変化)
マップの左上隅座標を(0,0)とすると、データの並びは
0x0010 座標 (0,0)
0x0011 座標 (0,1)
0x0012 座標 (0,2)
:
:
0x001F 座標 (0,15)
のようにまず最初に1行目のデータを1バイト毎に格納。
1行目のデータがX座標の終点に達すると、次は2行目のデータ (1,0) からの格納が始まる。
これを最終行まで繰り返し、全データを格納する。
(1チップ当たりの登録番号情報は 0〜255 の256通りまで)
;--------------------------------------------------------------- ; mp_wd マップの幅 ; mp_ht マップの高さ ; mp_indx(4) マップのインデックス情報 ; mp(mp_wd,mp_ht) マップデータ格納用2次元配列変数 ;--------------------------------------------------------------- ;------------ 'M08'データファイルの読み込み tmp_ldname="filename" ; "filename"=対象のデータファイル名 sdim tmp,64 bload tmp_ldname,tmp,64 ; ヘッダ情報読み込み ;------------ マップの幅、高さの情報の取得 mp_wd=wpeek(tmp,4) : mp_ht=wpeek(tmp,6) ;------------ インデックス情報の取得 repeat 4 mp_indx(cnt)=peek(tmp,8+cnt) loop ;------------ マップデータの読み込み sdim tmpmpd,mp_wd*mp_ht ; マップデータ全長 bload tmp_ldname,tmpmpd,mp_wd*mp_ht,16 ; マップデータ本体の読込 repeat mp_ht a2=cnt repeat mp_wd a1=cnt mp(a1,a2)=peek(tmpmpd,a2*mp_wd+a1) loop loop ;------------ 処理終了
■ヘッダー情報 (0x0000〜0x000F、16バイト)
0x0000〜0x0002 :識別拡張子情報「$38304d」(「M8D」)
0x0003 :(未使用)
0x0004〜0x0005 :マップの幅(2バイト)
0x0006〜0x0007 :マップの高さ(2バイト)
0x0008 :マップ1のインデックス情報 1
0x0009 :マップ1のインデックス情報 2
0x000A :マップ1のインデックス情報 3
0x000B :マップ1のインデックス情報 4
0x000C :マップ2のインデックス情報 1
0x000D :マップ2のインデックス情報 2
0x000E :マップ2のインデックス情報 3
0x000F :マップ2のインデックス情報 4
■マップデータ情報 (0x0010〜[add1]、マップサイズにより変化)
マップの左上隅座標を(0,0)とすると、データの並びは
0x0010 マップ1の座標 (0,0)
0x0011 マップ2の座標 (0,0)
0x0012 マップ1の座標 (0,1)
0x0013 マップ2の座標 (0,1)
:
:
0x001E マップ1の座標 (0,7)
0x001F マップ2の座標 (0,7)
のように、始点 (0,0) からのマップ1と2のデータが交互に1バイト毎に並べて格納される。
他は基本的に上記「M08」形式と同じ仕様。
これを最終行まで繰り返し、全データを格納する。
■マップ1と2の名称の情報 ([add1]+1 〜 [add1]+128)
エディット画面に表示されるマップ1と2のマップ名称の文字列データが、マップデータ格納領域以降に格納される。
各名称の文字列の最大長は64文字(64バイト)。
[add1] +1〜+64 :マップ1の名称文字列(64バイト)
[add1] +65〜+128 :マップ2の名称文字列(64バイト)
;--------------------------------------------------------------- ; mp_wd マップの幅 ; mp_ht マップの高さ ; mp_indx(4,2) マップのインデックス情報(2次元) ; mp(mp_wd,mp_ht,2) マップデータ格納用2次元配列変数(x2次元) ;--------------------------------------------------------------- ;------------ 'M8D'データファイルの読み込み tmp_ldname="filename" ; "filename"=対象のデータファイル名 sdim tmp,64 bload tmp_ldname,tmp,64 ; ヘッダ情報読み込み ;------------ マップの幅、高さの情報の取得 mp_wd=wpeek(tmp,4) : mp_ht=wpeek(tmp,6) ;------------ インデックス情報の取得 repeat 2 a2=cnt repeat 4 a1=cnt mp_indx(a1,a2)=peek(tmp,8+a2*4+a1) loop loop ;------------ マップデータの読み込み sdim tmpmpd,mp_wd*mp_ht*2 ; マップデータ全長 bload tmp_ldname,tmpmpd,mp_wd*mp_ht*2,16 ; マップデータ本体の読込 repeat mp_ht a2=cnt repeat mp_wd a1=cnt mp(a1,a2,0)=peek(tmpmpd,a2*mp_wd*2+a1*2) mp(a1,a2,1)=peek(tmpmpd,a2*mp_wd*2+a1*2+1) loop loop ;------------ 処理終了