タイルパレットの変更
タイルパレットを変更する一番簡単な方法は、マップエディタのプリセットから選択することです。
プリセットには存在しない組み合わせを行いたい場合は、章設定のPLIST IDを直接設定します。
PLSIT構造は、後で説明します。
とりあえず、章設定を選択して、PLISTの値を変更してみましょう。
既存の組み合わせはプリセットとして、すべて登録されているため、今回は村のパレットを強引に指定します。
PLISTの構造について説明します。
興味がない場合は、PLST分割まで読み飛ばしてください。
PLISTとは、マップに関するいろいろなもののポインタを格納したリストです。
このリストは最大255個の配列になります。(PLSIT IDはBYTE型で格納されため上限は255になります。)
void* map[Max 255] = {CH0_OBJ, CH0_PAL, CH0_PAL , CH0_MAP , CH1_OBJ, CH1_PAL… };
PLISTのポインタの値は、詳細メニューの「マップポインタ」から確認できます。
それぞれ格納されている値から、実際にデータへの接続は以下のようになります。
もし、地図やパレットを追加したい場合、空きPLISTを見つけて来ればよいということになります。
しかしながら、PLISTの大部分は使用されています。
PLIST IDはBYTE型で設定するため、255個を超えることができません。
再利用できれば、それが一番良いですが、再利用できない場合は、PLIST分割を行う必要があります。
PLIST分割とは、PLISTを種類ごとに分散させて、空きを作る方法です。
PLISTは、マップに切要なデータが、すべての項目が一つの配列に格納されています。
詳しく知りたい方は、この記事の末尾の「PLIST相関図」をご覧ください。
これだと、空き領域を作れないので、この構造を変更します。
すべてを一つの配列に入れるのではなく、それぞれの種類ごとの配列に振り分けるように変更します。
DEFAULT | → | PLIST Split | ||
Defualt | → | PALList | OBJList | CONFIGList …. |
OBJ | → | NULL | OBJ | NULL |
PAL | → | PAL | NULL | NULL |
CONFIG | → | NULL | NULL | CONFIG |
MAP | → | NULL | NULL | NULL |
EVENT | → | NULL | NULL | NULL |
OBJ | → | NULL | OBJ | NULL |
PAL | → | PAL | NULL | NULL |
CONFIG | → | NULL | NULL | CONFIG |
MAP | → | NULL | NULL | NULL |
EVENT | → | NULL | NULL | NULL |
こうすることで、それぞれ項目ごとのリストになるため、大量の余白を確保することが出来ます。
PLIST分割のやり方は簡単です。
詳細メニューのマップポインタから、PLIST分割のボタンを押すだけです。(この画面以外からでも呼び出すことが出来ます。)
ボタンを押せば、FEBuilderGBAが自動的に種類ごとにPLISTを分割します。
この作業は、危険な作業なので、事前にバックアップを取ることを忘れないようにしてください。
分割後に、F5キーを押して、ゲームが正しく動作するか確認してください。
ゲームが正しく動作したら、PLIST分割の成功です。
おめでとう。あなたは広大な空き領域を確保できました。
ここに素敵なマップを作りましょう。
前回のPLIST分割をしたことで、広大な空き領域を確保できました。
この空き領域を使って、FE6の雪のマップをインポートしてみましょう。
2つのファイルをexportします。
まずは、map_configをexportしてください。
map_configには、そのタイルが森なのか山なのか道なのかといった情報が格納されています。
また、マップを画像から切り抜きして組み立てる情報も入っています。
次に、マップのOBJとパレットをexportしてください。
png画像で取得できるので、両方のデータが含まれます。
map_config と png の、2つのファイルを保存してください。
データが手に入ったので、FE6を閉じしてください。
PLISTの空きIDを適当に設定してください。
OBJとPALとCONFIGの3つが必要です。
設定できたので、地図が表示されているはずです。
また、FELintのエラーも消滅しています。
F5キーを押してゲームを開始してみましょう。
雪のタイルになりました。
フィールドを強引に雪にしたので、一部問題はありますが、とりあえず動きます。