- このトピックには3件の返信、1人の参加者があり、最後に1年、 2ヶ月前に更新されました。 により
-
トピック
-
FEBuilderGBA 20180601.21で、FE8Nにスキル発動アニメーション機能を追加しました。
差分は、config\patch2\FE8J\skill_2018_06_01\skill anime.7z に入っています。
よろしければ、本体にマージしてほしいです。発動したスキルを記録するのに、0203AB40から4バイト利用します。
スキル構造体に空きがないので、
skl_anime_tableというテーブルを増設しました。void* skl_anime_table[128];
judgeSkill.asmを改造して、スキルを保持していると判定した場合、メモリ0203AB40にデータを記録します。
0203AB40 byte 味方の攻撃スキルID
0203AB41 byte 味方の防衛スキルID (大盾/聖盾)
0203AB42 byte 敵の攻撃スキルID
0203AB43 byte 敵の防衛スキルID (大盾/聖盾)その後、スキルが発動した場合は、メモリから最後に保持していると判定したスキルIDを利用して、アニメーションさせます。
アニメがない場合は、ディフォルトのアニメがロードされます。
もし、スキルが不発だった場合は、スキルが動作しないので、関係ないです。本来は、それぞれのスキルが発動したタイミングで記録するべきですが、直すのが面倒なので、ここで判定しています。
また、 goadroadとEAの連携は非常に動作が怪しいので・・・アニメーションのルーチンは、 Engine Hacks\_N\_Skills\_anime\ の中にあります。
上記の通り、goadroadとEAの連携は非常に動作が怪しいので、 devkit pro の gnu asmで書いてます。record_skillanime_id.s 保持しているとされるスキルIDを記録するサブルーチン。judgeSkill.asmから呼ばれる。
get_skillanime_data.s 記録したスキルIDを読み出すサブルーチン。playskill*.sから呼ばれる。
playskillanime_attack.s 攻撃スキルのアニメを設定します。
playskillsound_attack.s 攻撃スキルの発動音を設定します。
playskillanime_defence.s 防衛スキルのアニメを設定します。
playskillsound_defence.s 防衛スキルの発動音を設定します。スキルアニメは、FEBuilderGBAのスキル設定の画面から行います。
正しく設定されていれば、右端のアニメのタブが有効になります。アニメーションデータは、FE8UのSkillSystemsの構造を元にしています。
しかし、向こうは、先頭にプログラム領域があったりするので、少しだけ違います。struct skillanime{
frame* frame_list;
void** tsa_list;
void** image_list;
void** palette_list;
int sound_id;
}; sizeof() == 20struct frame {
int wait; //ウェイト
int image_id; //何番目のTSA,IMAGE,PALETTEを利用するかどうか
}; sizeof() == 4tsa image palette は、それぞれポインタです。
MAX(frame.image_id) の数だけ存在します。
この構造は無駄が多く見えますが、GBAFEの魔法アニメのフォーマットはこういう作りになっています。