技アニメーション用のスクリプトコマンド一覧
実際の技アニメの作成については技アニメ解説(外部サイト)が参考になるかと思われます
目次
- スクリプト
- 00:画像読み込み
- 01:画像読み込み停止
- 02:技画像の表示と動作に関する指定
- 03:表示済みの画像の動作に関する指定
- 04:待機時間
- 05:前スクリプト終了まで待機
- [未使用]06:ブランクコード
- [未使用]07:ブランクコード
- 08:アニメーションスクリプトの終了
- 09:効果音の再生
- [未検証]0A:可視化設定?
- [未検証]0B:可視化設定解除?
- [未検証]0C:透過度指定
- [未検証]0D:
- 0E:ルーチンの呼び出し
- 0F:ルーチン先から戻る
- 10:任意パラメータセット
- 11:2ターン技のアニメーション指定
- 12:経過ターン数によりアニメーションが変化する技のアニメーション指定
- 13:別のオフセットへジャンプ
- 14:背景画像指定
- 15:背景画像指定解除
- 16:背景画像表示反映1
- 17:背景画像表示反映2
- 18:背景画像表示
- 19:効果音の再生
- 1A:効果音の振り分け
- 1B:効果音の再生(左右振り分け複数指定可)
- 1C:効果音の再生(繰り返し再生)
- 1D:効果音の再生(ウェイト指定あり)
- [未検証]1E:透過度(カウント値)の任意指定
- [未検証]1F:任意処理呼び出し
- 20:効果音のウェイト
- 21:条件判定ジャンプ
- [未検証]22:条件付き0A?パターン1
- [未検証]23:条件付き0B?パターン2
- 24:技使用者が敵側である場合ジャンプ
- 25:使用者位置によって表示する画像が異なる背景画像指定
- [未検証]26:曲に関する指定?パターン1
- [未検証]27:曲に関する指定?パターン2
- [未検証]28:LCD bg operations for each side something
- [未検証]29:LCD bg operations above, except unconditional
- [未検証]2A:28の類似処理。
- 2B:指定対象の画像非表示
- 2C:指定対象の画像表示
- 2D:指定対象の表示処理
- [未検証]2E:指定対象に対する画像処理?
- 2F:効果音の停止
- アセンブリ指定
- コード拡張について
スクリプト
00:画像読み込み
00 nn nn
技アニメーションに使用する画像を呼び出す
これを入れてない状態で指定の画像を使用する処理を呼び出すと表示がおかしくなる
01:画像読み込み停止
01 nn nn
一部のパターンにおいて設定されている画像の表示をしなくなる
00を挿入していなくても使用することができる
02:技画像の表示と動作に関する指定
02 @@ @@ @@ 08 xx NN ~
参照されたアドレスの動作を呼び出す。アドレスは4の倍数指定でなければならない。
NNはモーションの個数で一つのモーションごとに2byte
xxは不確定ではあるが画像のZ軸を操作している
アドレスのジャンプ先では
SI SI SP SP @1 @1 @1 08 @2 @2 @2 08 00 00 00 00 @3 @3 @3 08 @4 @4 @4 08
というような24byteの構造になっており
SIはそのアニメーションで使う画像、SPはその画像にしようするパレットで互いに同じものをいれておかなければならない
@1のジャンプ先では使用する画像制御
@2のジャンプ先ではアニメーションの動きに対する画像の指定と表示時間
加えて画像のループ設定も行っている
モジュールの数を変更した時にバグが起きる可能性がある(要検証)
@3のジャンプ先ではアニメーションの動きの一部を管理している
@4のジャンプ先はプログラム領域となっている
基本画像の大きさが同じで別に用意した画像て同じ動きをさせたい場合はSIとSPを書き換えれば動作する
03:表示済みの画像の動作に関する指定
03 @@ @@ @@ 08 xx NN ~
NNはモーションの個数で一つのモーションごとに2byte
xxは不確定ではあるが画像のZ軸を操作している
アドレス指定は02とは異なり、プログラムのアドレスが直接指定されている。
04:待機時間
04 nn
次のスクリプトを読むまで指定したフレーム数の間動作を止めておく
待機時間の長さは7Fまでは正常に動いたのを確認
80以降を入力すると表示がおかしくなる事がある
05:前スクリプト終了まで待機
05
直前に書かれた動作が終了するまで処理を留めておく。
[未使用]06:ブランクコード
[未使用]07:ブランクコード
08:アニメーションスクリプトの終了
08
技アニメーションを終了するときに使用する
これがないと技アニメーションが終わらないので必ず終わりに入れる必要性がある
09:効果音の再生
09 fn fn
fnに鳴らしたいファンファーレIDを入力
左右振り分けは攻撃対象側に依存
[未検証]0A:可視化設定?
0A nn
nnは対象位置(0x00:自分 0x01:相手)
指定の有無により透過処理の効果が得られるかが変わる。
自分と相手の両方を設定することは不可。
[未検証]0B:可視化設定解除?
0B nn
nnは対象指定(0x00:自分 0x01:相手)
おそらく0Aの設定解除
[未検証]0C:透過度指定
0C n1 n2
nnの具体的な数値詳細は不明。
オブジェクトに対する透過度の指定を行う。
n1では画像自体の光度、n2は画像に適用される光度?
カウント値とアルファ値があり、カウント値は0x3F40で、アルファ値は指定の値でセットされる。
[未検証]0D:
0D
おそらく0Cで行った透過度指定の解除(カウント値とアルファ値に0をセットする)。
0E:ルーチンの呼び出し
0E @@ @@ @@ 08
指定した参照先のアドレスへジャンプし書かれた動作を実行する
これを使うことで同じ処理の繰り返しを行うとき複数同じものを書かなくても良いという利点がある
戻ってくるときは0Fのスクリプトで戻ってくる
0F:ルーチン先から戻る
0F
0Eで飛んだ先から戻るときに使用されるリターン処理
10:任意パラメータセット
10 in nn nn
02037e36+ 2*inのメモリアドレスに指定したnnを格納する。
数値が動作によって固定されている場合は上書きできない。
11:2ターン技のアニメーション指定
11 @1 @1 @1 08 @2 @2 @2 08
1ターン目と2ターン目でアニメーションが異なる技のアニメーション指定
1ターン目の技アニメーションスクリプトが記述されているアドレスを@1に
2ターン目の技アニメーションスクリプトが記述されているアドレスを@2に指定する
経過ターン数の判定は02037e4aの内容を見て判断される
12:経過ターン数によりアニメーションが変化する技のアニメーション指定
12 nn @@ @@ @@ 08
nnは経過ターン数(00を起点とする)
経過ターン数(02037e4aの値)がnnと一致する場合、指定したアドレスへジャンプする。
13:別のオフセットへジャンプ
13 @@ @@ @@ 08
指定したアドレスへジャンプする。
14:背景画像指定
14 bg
bgは背景画像番号
メモリ領域に画像番号をセットする。反映は行われない。
セット済みフラグとして02037e4bに1をセットする。
15:背景画像指定解除
15
解除用の指定値をメモリ領域にセットする。反映は行われない。
セット済みフラグとして02037e4bに1をセットする。
16:背景画像表示反映1
16
02037e4bの値が2以外の場合は02037e14に1をセット
2の場合は02037e14に0をセット
02037e14に1がセットされていると技背景が表示反映されるものと思われる。
17:背景画像表示反映2
02037e4bの値が0以外の場合は02037e14に1をセット
0の場合は02037e14に0をセット
02037e14に1がセットされていると技背景が表示反映されるものと思われる。
18:背景画像表示
18 bg
bgは背景画像番号
14~17との違いは、このコマンドが処理された瞬間フェードイン処理などもなくいきなり画像が表示される点。
19:効果音の再生
19 fn fn NN
fnに鳴らしたいファンファーレIDを入力
NNには左右の振り分け
既存のスクリプトだと下のようになっている
00 | 全体 |
3F | 相手側 |
C0 | 味方側 |
1A:効果音の振り分け
1A NN
現在再生されている効果音の振り分けを再生中に変えることができる。
1B:効果音の再生(左右振り分け複数指定可)
1B fn fn N1 N2 nn nn
19・1Cと類似した処理を呼んでいるため、効果音関係の処理と思われる。
N1, N2は左右振り分け指定。1→2へと音が移動する。
nn nnはおそらく音の移動の仕方に関する挙動。本家では02 00の指定が多い
1C:効果音の再生(繰り返し再生)
1C fn fn NN in ti
fn, NNについては19と同様
inには繰り返し音が再生されるまでの間隔
tiには繰り返しの回数を指定する
1D:効果音の再生(ウェイト指定あり)
1D fn fn NN in
fn NNについては19と同様
inで音が再生までのウェイト時間が指定できる。
[未検証]1E:透過度(カウント値)の任意指定
1E cn cn
cnはカウント値の任意指定値
透過度指定で使用するカウント値を指定の値にセットする。
[未検証]1F:任意処理呼び出し
1F @@ @@ @@ 08 NN ~
02・03と同じように~任意処理を呼び出すもののよう。
20:効果音のウェイト
20
02037e17にセットされる値で処理分岐している。
現在再生されている効果音が鳴り終わるまで処理を留めておく。
21:条件判定ジャンプ
21 XX nn nn @@ @@ @@ 08
02037e36+ 2*XXのメモリ領域に格納されたアドレスとnnの値を比較し、一致する場合に指定アドレスへジャンプする。
本家ではバインド技番号チェック、行動対象チェックなどで仕様実績あり。
使用例一覧
バインド技番号チェック
- XX:00(02037e36にセットされた値を参照)
- nn:
0x00 まきつく・しめつける 0x01 ほのおのうず 0x02 うずしお 0x03 からではさむ 0x04 すなじごく
行動対象チェック
- XX:07(02037e44にセットされた値を参照。[03 0D CC 0B 08 02 00]とセットで使用される)
- nn:
0x00 自分 0x01 相手
[未検証]22:条件付き0A?パターン1
22 nn
nnは対象指定(0x00:自分 0x01:相手)
対象のポケモンのスプライトをBGに展開する。
0A/0Bと併用して自分と相手の両方のスプライトをBG展開することができる。
ただし22で展開したポケモンを動作させることはできない。
[未検証]23:条件付き0B?パターン2
23 nn
nnは対象指定(0x00:自分 0x01:相手)
22の設定解除?
24:技使用者が敵側である場合ジャンプ
24 @@ @@ @@ @@
技使用者が敵側である場合指定されたアドレスにジャンプする。
25:使用者位置によって表示する画像が異なる背景画像指定
25 b1 b2 b3
b1はプレイヤー側が攻撃する際の背景画像番号
b2は敵側が攻撃する際の背景画像番号
b3はコンテストにおいて技が使用された際の背景画像番号。
EMでは1B以降を指定すると画面が崩壊してフリーズするので注意。
[未検証]26:曲に関する指定?パターン1
26 mu mu NA NB nn nn
muはミュージックナンバー。
後半2バイトは不明値。
曲関係の処理らしいが詳細不明。
[未検証]27:曲に関する指定?パターン2
27 mu mu NA NB nn nn
muはミュージックナンバー。
後半4バイトは不明値。
曲関係の処理らしいが詳細不明。
[未検証]28:LCD bg operations for each side something
28 nn
ポケコミュ原文ママ。詳細不明。nnは対象指定。
[未検証]29:LCD bg operations above, except unconditional
29
ポケコミュ原文ママ。詳細不明。
[未検証]2A:28の類似処理。
2A nn
28の詳細が不明なため、こちらも詳細不明。nnは対象指定。
2B:指定対象の画像非表示
2B nn
nnは対象指定。
指定した対象の画像を非表示にする。フェードアウトなどはなくいきなり消える。
2C:指定対象の画像表示
2C nn
nnは対象指定。
指定した対象の画像を表示する。既に表示済みの場合は何も変化がない。フェードインなどはなくいきなり表示される。
2D:指定対象の表示処理
2D nn
指定した対象を表示する。ダブルバトルでしか効果はなく、攻撃対象が自分自身を指定する技でなければ意味が無い。
[未検証]2E:指定対象に対する画像処理?
2E nn
指定した対象になんらかの画像処理をしている? 詳細不明。
2D同様ダブルバトルかつ攻撃対象が自分自身を指定する技でなければ意味が無い。
2F:効果音の停止
2F
これを読み込むと現在流れている効果音が強制的に終了する
アセンブリ指定
コード | ||
00 | 0x371F8C | 0x07200D |
01 | 0x371F90 | 0x072075 |
02 | 0x371F94 | 0x0720C1 |
03 | 0x371F98 | 0x0721B5 |
04 | 0x371F9C | 0x072231 |
05 | 0x371FA0 | 0x072271 |
06 | 0x371FA4 | 0x0722A5 |
07 | 0x371FA8 | 0x0722A9 |
08 | 0x371FAC | 0x0722AD |
09 | 0x371FB0 | 0x0723AD |
0A | 0x371FB4 | 0x0723D5 |
0B | 0x371FB8 | 0x0729F1 |
0C | 0x371FBC | 0x072D85 |
0D | 0x371FC0 | 0x072DE5 |
0E | 0x371FC4 | 0x072E09 |
0F | 0x371FC8 | 0x072E3D |
10 | 0x371FCC | 0x072E51 |
11 | 0x371FD0 | 0x072E85 |
12 | 0x371FD4 | 0x072EC5 |
13 | 0x371FD8 | 0x072F09 |
14 | 0x371FDC | 0x072F45 |
15 | 0x371FE0 | 0x07311D |
16 | 0x371FE4 | 0x073161 |
17 | 0x371FE8 | 0x073195 |
18 | 0x371FEC | 0x0731C9 |
19 | 0x371FF0 | 0x07336D |
1A | 0x371FF4 | 0x0733A5 |
1B | 0x371FF8 | 0x0733D1 |
1C | 0x371FFC | 0x073675 |
1D | 0x372000 | 0x073759 |
1E | 0x372004 | 0x072DBD |
1F | 0x372008 | 0x073811 |
20 | 0x37200C | 0x073885 |
21 | 0x372010 | 0x073909 |
22 | 0x372014 | 0x072B41 |
23 | 0x372018 | 0x072C29 |
24 | 0x37201C | 0x07395D |
25 | 0x372020 | 0x072F89 |
26 | 0x372024 | 0x073521 |
27 | 0x372028 | 0x0735B5 |
28 | 0x37202C | 0x07396D |
29 | 0x372030 | 0x0739B9 |
2A | 0x372034 | 0x0739E1 |
2B | 0x372038 | 0x073A49 |
2C | 0x37203C | 0x073A85 |
2D | 0x372040 | 0x073AC5 |
2E | 0x372044 | 0x073B6D |
2F | 0x372048 | 0x073BFD |
コード拡張について
・上記アセンブリ指定のテーブルを任意の位置に移動
・テーブル参照先アドレス0x071FFCにあるテーブルアドレス指定を移動先のアドレスに置換
・移動したテーブルの末尾に追加したアセンブリ処理のアドレス+1を追記していく
上限指定などはないのでこれで30以降のコードも使用可能となるはず。