FE定番の増援イベントの作り方について説明します。
とりあえず序章に毎ターン増援を出したいと思います。
まずは、増援するユニットを作ります。
設定が終わったら、彼らが配置されている先頭アドレスをメモってください。
今回は、0x01000000が先頭アドレスです。
なぜ、先頭アドレスをメモする必要があるのか?
それは、彼らを表示するイベントはこれから作るため、彼らのデータはどこへも紐付けされていないためです。
そのため、ユニット配置ウィンドウを閉じたり、別の章に切り替えたりすると、データが失われるためです。
データが失われても、領域を占有していることにはかわりなく、無駄な領域が生まれてしまいます。
とはいっても、100バイトにも満たない程度のロスだと思いますが・・・
メインの簡易メニューに移動します。
次は、先ほど作成したユニットを出現させるイベントを作ります。
ターン条件イベントが確保されました。
ちょっと多すぎましたね・・・
まあ、1つ12バイトなので、誤差みたいなものです。誤差だよ誤差。
ちゃんと、やる場合は、先ほど領域を確保するときに、確保するサイズをちゃんと指定してください。
ただ、小さすぎると、もっと増やしたくなった時に、再度追加で確保すると、断片化によるロスが発生しますので、どちらがいいかは、難しいところです。
今回は以下のように設定しました。
イベントは後で設定するので0のままにします。
発生タイプ | 2 | 2=ターン条件 |
開始ターン | 2 | |
終了ターン | 3 | |
ターン前指定 | 0 | 主人公ターンに実行 |
つまり、2-3ターン目の主人公ターンに増援を出します。
合計2回の増援が行われます。
主人公ターンとは、プレイヤーが操作できるターンのことです。
主人公ターンに増援するのと、敵ターンに増援するのでは、難易度が大幅に変わります。
主人公ターンに増援されたキャラは、出てきたターンは動きません。
そのため、先制攻撃で倒すことができます。
敵ターンに増援すると、出てきたターンに即行動するので、プレイヤーからすると完全な不意打ちになります。
もし、背後から増援され、敵ターンで先行して動かれたりなんてすると、悪夢ですね。
前半のステージは、プレイヤーターンに増援して、後半は敵ターンにするとかの使い分けを考える必要があります。
この後に、イベントの確保をしたときにも書き込みは行われるので、ここで書き込みをするかどうかは、実はどうでもいいです。
ただ、やったところで損は何もありません。
イベントでどんな命令を実行するか選ぶことができます。
ここには、先人たちの解析で現在判明しているすべての命令が登録されています。
イベント命令は、 config/data/eventcond_*.txt にあります。
命令はFEシリーズごとにことなります。
また、ASMを使えれば新規に命令プログラムすることもできます。
「[XXXXXXXX:POINTER_UNIT:ユニット情報]を読込移動 主に増援 カメラ移動有り」を選択してください。
選択後に、「命令を選択する」ボタンを押してください。
なお、命令をダブルクリックしても、大丈夫です。
最初の方でユニットを増設したアドレスをメモりましたよね。
その内容をここで書きます。
今回は、 0x01000000にユニットを設置しましたので、 01000000となります。
ちなみに、正式には、ポインタですので、GBAのアドレス配置のルールにより +0x08000000しないといけません。
0x01000000 + 0x08000000 = 0x09000000ですので、 0x09000000が正しい値です。
でも、そんな計算をいちいちするのは面倒です。
面倒ということはミスが発生するのでよくないです。
そのため、FEBuilderは自動的に変換してくれます。
ユーザは、何も考えずに、値を書くだけで自動的にすべて解決します。
もちろん、+0x08000000した正しい値を書いていただいてもまったく問題ありません。
いきなり3人増援はちょっとやりすぎたかもしれません。
増援を減らすべきなのかも・・・・ということで、ユニット数の増減をやってみます。
メイン画面である簡易メニュー画面に戻ってください。
FEBuilderGBAは、PAUSE/BREAKキーを押すと、どの画面からでも、メイン画面に戻れて便利です。
簡易メニュー画面では、増援で出てくる敵キャラがちゃんとマップに表示されています。
彼らの数を変えたいので、増援ユニットをダブルクリックしてください。
1人だけだと味気ない場合は、元に戻すこともできます。
先ほどのユニット情報を再度見てみると、1人になっています。
これは、ディフォルトは終端まで読み込むからです。
2人目に終端が入っているので、1人だけの読込になっています。
では、増やす場合、読込数をもっと大きい値にすればいいのか?というと、そんなことはダメです。
試しに、読込数を10と、当初の3よりもっと大きい値にすると、このようになりました。
なにやら、めちゃくちゃな情報が表示されました。
これは、終端を突き破って、別の情報を強引にユニット情報として解釈したためです。
これらを書き換えると、他の情報を壊してしまうため、とても危険です。
ゲームのフリーズにつながります。
何かまずいことが起きた場合は、もう一度、リストを選択しなおすと、自動的に再取得が行われるため、安全になります。
「書き込む」ボタンを押さない限り、大丈夫です。
また、間違って「書き込む」ボタンを押したとしても、Undo機能で元に戻せますし、そもそも、メインメニューでROMに書き込むと、命じない限り、すべての処理はメモリ上で行われるので、ROMファイルを傷つけることはありません。
もし、ROMにも書き込んでしまったという場合でも、FEBuilderはROMに書き込む前にバックアップを取っています。
だからといって、バックアップもすべて消してしまったという場合は、さすがにどうしようもありません。
リストの拡張でいくらでも変えられるといっても、リストの拡張をやりまくると、使えない断片データがたくさん生まれて、残り容量を圧迫します。
ご利用は計画的にどうぞ。
将来的には、断片データを再利用するdeflagする機能を作りたいとは思います。
ただ、なかなか難しい機能なので開発は難航しています。
以上で増援の説明は終了です。
ユニット数の調整は、章開始イベントとかでもやりますので、やり方を覚えてしまうと、幅広い応用が可能です。