スキル発動アニメーション機能

ホーム NGフォーラム FE8Nサポート スキル発動アニメーション機能

このトピックには1件の返信が含まれ、1人の参加者がいます。2 週間、 4 日前 7743 さんが最後の更新を行いました。

  • 作成者
    トピック
  • #7030 返信

    7743

    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() == 20

    struct frame {
    int wait; //ウェイト
    int image_id; //何番目のTSA,IMAGE,PALETTEを利用するかどうか
    }; sizeof() == 4

    tsa image palette は、それぞれポインタです。
    MAX(frame.image_id) の数だけ存在します。
    この構造は無駄が多く見えますが、GBAFEの魔法アニメのフォーマットはこういう作りになっています。

返信先: スキル発動アニメーション機能
あなたの情報: