技アニメの解説/基本編

解説をhtmlの形にしたのは分かりやすいよう色や画像が使える形式の表現を使いたかったからなのと、どこかのブログサービスが終了して過去の有用なサイトが消えたという話を聞いたからです
この配布の形ならいつか配布場所が消えても誰かが持っていて必要な人にまた配布してくれるはず…!
(これを持っていてくれる"誰か"は存在するのか?)(今後長い年月が過ぎた後も必要な人っているのか?)(ネット検索で当たらないの致命的では?)(あとhtml書く練習もあったりしますいません)

私がこれを作り始める前の界隈には技アニメのスクリプト一覧はあっても作る時の解説は無いみたいだし、一応いくつか作って配布した実績できちゃったから作り方解説できるかもって大きく出てしまったが上手く書けるだろうか…
ええいままよ、とにかく書いてみるぞ

基本編 たいあたりの中身を見てみよう

基本的な動作の説明等は 改造ポケモン制作資料 Wiki さんの 技アニメーションスクリプト のページに載っています
私はこのページと睨めっこしながら技アニメ作りの回数をこなしていく内に理解が進むようになっていきました
資料Wikiのページを見つつ、この解説も見て頂くと理解しやすくなるかもしれません

動きを0から作るようなことはしません(というか私はできません)。既存の技アニメを見てどんな動きか確認し、使いたい動きを抽出して組み合わせて作っていきます
処理を0からなんて書けないです。既存の色々な技アニメ処理から求める動きを持ってきてこそ作れます
なのでロム内の既存技アニメを見てみることから始まります
野暮かもしれませんがYouTubeに三世代の技アニメをまとめてくれている動画があるので、それをじっくり眺めて作りたい動きと似た技を探すと良いです
今回は基本の解説ですし簡単そうな「たいあたり」とか良さそうですね
たいあたりの技アニメデータは 1AB44E~1AB48B にあるので、とりあえず抽出して見やすく分けるとこんな感じになります

00 9727
0A01 0C0C08
02 5CD33908 0202 0400 0400
0406
02 4CF13A08 0204 0000 0000 0100 0200
03 01840908 0205 0100 0300 0000 0600 0100
19 8400 3F
05
0B 01 0D
08

なおこうやって各技アニメの中を調べる場合は素ロムなら 1AA8B0~1AAE3B に技ID順で並んだ技アニメテーブルがあるので、そこから探す…のは面倒だと思いますので…
技アニメのデータ位置の一覧を作りました。活用して頂けると幸いです

話を戻して、数値の上から解説してみます


「00 9727」
00は画像読み込み、9727は技アニメ画像のIDを指定しています
ID2797の画像を読み込みますよ、という処理です
読み込みだけなので表示されるのはまだです
画像IDの一覧も資料Wikiにあります。画像アドレスページC01720~:モンスターボール の下ですね
ちなみにこれで読み込まれる画像は様々な技アニメで幅広く使われているギザギザのアレです
特に理由が無い限り、画像の読み込み処理は各技アニメ内の先頭にあります
技アニメを自作する際も00~処理はなるべく先頭に置いておくと良いです。処理を読む時にごちゃごちゃしなくて済みます


「0A01 0C0C08」
これはほぼセットなのでまとめています
0A~の処理と、0C~の処理です
0A~は画像の通過処理を設定します。続いて指定するのは00~03くらい?
画像によって通過したりしなかったりします
0C~は通過具合を設定できます
0C0Cと同じ数値が指定されててややこしいですが、最初の0Cは変更できず2番目の0Cは変更できます
2番目は明るさ調整で、0Cを09等と低くすると画像が暗く表示されると思います
高くすると明るく光っているような表示になるはずです
3番目の08は画像の透け具合の調整?みたいで、低くすると透けてるのか透けてないのか微妙に存在感のある画像になるはずです
高くすると透け透けで存在感の無い画像になっていきます
3番目の透け具合でも画像の色合いが変わってくるので、2番目の明るさ設定も含めてうまく調整しましょう
既存技アニメでは0C~処理のほとんどは2番目が 0C で3番目が 08 です
これらは技アニメを作る際に、抽出する画像に合わせて一緒に抽出するのが良いと思います
画像に干渉する処理なので、技アニメ自作の際は画像や動きが予想外の表示になってしまう原因になる可能性があります。もしおかしいなと思ったらこの処理を確認してみると解決できるかもしれません
なおこれらを設定する場合は必ず必要になる処理が後半にでてきます


「02 5CD33908 0202 0400 0400」
02~の処理です。これは処理の種類によって後に続く数値の量が変わります
この02処理は読み込んだ画像の表示から背景の色付け等様々なことをやるので、パッと見ただけでは何をやっているか分かりません
実際に何やってるのかは直接見た方が早いです
02処理の動きを単体で確認する為に技アニメとして読み込む時は、抽出先の技にある00処理(画像読み込み)を先頭に入れておくのと、最後に必ず 05 08 を入れてください
もし画像を扱う02処理だった場合、扱う画像を読み込んでいないと表示がおかしくなります。最後に08を入れないとリセットされます
ちなみに上記の処理は「たいあたりを使用したポケモンが動く」という内容です。読み込んだ画像の表示じゃねーのかよ分かるかそんなんって感じですよね
02に続く 5CD33908 はロム内の 39D35C を読み込みますよ、という処理です
その指定された先によっては色々できるのですが、それは置いといて
次の 0202 は資料WIkiにある通り、Z軸?と後に続く処理の数です
Z軸というのは画像表示の優先度とかレイヤー順みたいなやつです
自分や相手のポケモンより手前に画像を表示するのか、後ろに表示するのか、みたいな設定ができます
05だったり82や83だったり処理によって様々な設定がされているんですけど、画像によっては同じ数値でも表示が変わるような気もするので実際に試しつつ調整してください
まぁ上記の処理は自分のポケモンを動かすものなのでZ軸はそんなに影響ないですが、続く02は変更しないでください。どの02処理でもこの後に解説する03処理でも、ここを変更するとほぼほぼエラーが発生します
0202 の1番目の02は変更ok、2番目の02は変更NGです
2番目は 0202 の後に続く処理の数を指定している為です
後に続く処理の数とは 0202 に続いて書かれている 0400 0400 のことです。2バイトのセットを1と数えて2個です
この後に続く 02 4CF13A08 0204 0000 0000 0100 0200 だと、0204 の後に4つの2バイトのセットが並んでいます。そんな感じです
余談ですが2番目の数値はあくまでも数の指定なので、数値を変えてその数値に合わせて処理の数を同じにすると一応エラーは起こらずに動きます。完全に無意味ですが
話を戻し、0202 の後に続いている 0400 0400 は02で読み込んだ処理に対してある程度の設定をしています
処理によって後に続く数値の数が違うのは、処理の内容によって設定できる数が違うからだと思います
今回は自分のポケモンの動きなので、後に続く 0400 0400 で動きをある程度変えられるということになります
どの数値がどんな設定をしているかも、実際にいじって確認した方が早いです
中にはいじっても何を設定しているか分からないのもありますが…
0400 0400 を 1400 0400 にして、最初の0400が何を設定しているか確認する、という感じで確認していくと良いです
なお本当に 1400 0400 にして確認すると、普通のたいあたりよりめっちゃ前へ出ます
めっちゃ前へ出る めっちゃ前へ出る2
つまり最初の 0400 は、自分のポケモンが前へ出る幅を設定していると考えられます
2番目の数値も同じように確認します。その前に紛らわしさ防止で1番目の 1400 を元の 0400 に戻しておいた方が良いです
2番目の 0400 を 1400 にして確認してみると…画像では確認しにくいので実際にいじって見て頂くと分かりますが、かなり速い動きになります
更に1番目の数値を元に戻したはずなのにかなり前へ出ています。前へ出る幅にも影響しているのかも…?(正直分かりません)
ここで1番目が幅の調整なのを使って1番目の数値を 0400 から 0200 に減らすと、とても素早く前へ適度な幅で出る動きにできます
そんな感じで動きの調整ができます
当然と言えば当然なのですが、これらの数値も全てリトルエンディアン(逆順)で設定されています
あまり使わないとは思いますが大きい数値、例えば0151とか設定したい時は 5101 になります
0400 は単純に言えば 4 を設定していることになりますね


「0406」
この処理の次にある処理を実行するまでの待機時間です
たいあたりで言うなら自分のポケモンが動いて一番前へ出たタイミングで次の処理を実行したい、と思われるので待機させている感じですね
これが無い状態でたいあたりしてしまうと、自分のポケモンが動いたのと同時に相手へ当たった演出が入ってしまいます
04 が待機時間の処理で、06 が待機する時間を設定しています
数値が低いほど早く待機時間が終わり、高いほど長く待機します
既存技アニメの中には稀に 04 00 という何故入れたのかよく分からないのが入ってたりします。04で表示タイミングを調整してたけど最終的に不要だったのかな?紛らわしいので抽出の際はお気を付けて


「02 4CF13A08 0204 0000 0000 0100 0200」
先程の02処理より長いです。0204 で後に続く処理が4セットあるからですね
この 02 4CF13A08 ~はよく出てきます。様々な技アニメで幅広く使われているギザギザのアレが表示される処理だからです
画像ID2797を最初に(009727)読み込んでおいて、この処理で表示します
あと0A01~で通過処理をしたので、この画像がちょっと透けた状態で表示されるようになっています
後半の 0000 0000 0100 0200 である程度の設定ができます
画像の表示をする処理だと、最初と2番目の数値( 0000 0000 )は画像の表示位置設定であることが多いです
今回の場合は全て0なので相手に対して中心に表示されるよう設定されています
1番目の 0000 は表示する横の位置を、2番目の 0000 は表示する縦の位置を設定しています
1000 0000 と設定すると、自分が攻撃した時は相手の中心より右側に、相手が攻撃した時は自分の中心より左側にズレて表示されるはずです
ここがちょっとややこしくて位置を中心からズラして表示すると、自分が使った時と相手が使った時で表示位置が逆になることがあります
ただ 0000 1000 で横ではなく縦の位置を変えてみると、どちらも中心から下にズレて表示されます。逆じゃないのでややこしいですね
上へズラして表示するには 0000 F0FF といった、0を中心に遡る感じになります
左右にズラす時も、F0FF 0000 で自分が攻撃した時は相手の中心より左側に、相手が攻撃した時は自分の中心より右側にズレて表示されるはずです
PCに大体付いてる電卓を16進数(プログラマー)にして0の状態から-10をするとFF…(省略)…FFF0 と表示されますので、出てきたFFF0を逆順にして F0FF …といった感じで 1000 と対になる位置を計算できたりします
勿論もっとズラすなら1A00とかE6FFみたいになっていきます
この横の位置設定と縦の位置設定を組み合わせて、良い感じの位置に表示できます
例えば 1200 EEFF にすると、自分の攻撃では相手の右上に表示されて、相手の攻撃では左上に表示されるようになります
右上 左上
上手く組み合わせて自分好みの位置に表示しましょう
この横と縦の調整は、少々難しい言葉だとX軸とY軸による座標の設定という考え方が当てはまると思います
中心である原点からX軸(横)はどれくらいか、Y軸(縦)はどれくらいかって設定です
xとyだと個人的にややこしいので今後はなるべく横と縦の表記にします

3番目の 0100 は 1100 等に増やしてみてもどこか変わっているようには見えません
この場合は 0000 にしてみると分かる可能性があります
0000 に設定して試してみると、相手へ攻撃しているはずなのにぶつかったような表現のギザギザ画像が自分のポケモンに表示されます
つまりこれは画像が自分に表示されるか、または相手に表示されるかの指定と考えられます
0000 で自分に、 0100 で相手に表示することになります
相手は基本1匹しかいないので、0200以降は特に変化が無いということですね
ダブルバトルで2匹攻撃もありますが、0200以降はダブルバトルでも意味はありません
この表示相手の指定は大体0000か0100なので、他の処理を見ていてこれらの数値があったらまずは0000を0100に、0100は0000に変えて確認してみると良いです
それで表示位置が変わったらこれですし、変化が無かったら別の設定と考えられます
ただ前にも書いた通り1番目と2番目のセットは画像の位置設定の可能性が高いので、あるとしたらそれ以降の位置だと思われます
画像の位置が決められているものだと1~2番目の方に設定されているかも?

4番目の 0200 は大きい数値を設定すると画像がおかしくなってフリーズします
02から01だけ足した 0300 を設定すると、画像が小さくなっているのが分かります
逆に02より低い01、0100 を設定すると、画像が大きくなっているのが分かります
0000 は 0100 と変わりません
画像大きめ 画像大きめ大きめの0100
画像普通 画像普通普通の0200
画像小さめ 画像小さめ小さめの0300
0300~0100 の範囲で大きさを設定できるものだと考えられます
私が調べた限りだと画像の大きさを設定できる処理は数が少ないような気がします。幅広く使われる画像だからこそ汎用性を高める為に大きさ設定できるようにしたのかもしれませんね


「03 01840908 0205 0100 0300 0000 0600 0100」
長いですね。0205 で後に続く処理が5セットあるからですね
設定の仕組み自体は02~と似ています
そしてこの 03 01840908 ~も幅広く使われています。汎用性が高いです
相手が揺れる、という攻撃を受けた相手らしい動きをさせることができる処理だからです
03~は自分や相手のポケモンの動きに関わることが多いです
0205 に続く 0100 0300 0000 0600 0100 の設定を1つずつ確認していきます

最初の 0100 を 0000 にすると自分が揺れるようになります
02~の画像表示処理でも設定できた、自分に表示されるか相手に表示されるかの揺れ設定版ですね
0200 にすると相手が揺れなくなりますが、これはシングルでの反応であり 0200 にするとダブルで隣にいる味方が揺れるようになります
0300 でダブルで攻撃した相手の隣のポケモンが揺れるようになります
これは02画像表示処理では無かった反応ですね
この 03 01840908~処理を2つ並べて片方を 0100 、もう片方を 0300 にすることでダブルバトルで相手2体が揺れるので相手2体攻撃ができる技の表現ができます
上記の処理でやるなら
03 01840908 0205 0100 0300 0000 0600 0100
03 01840908 0205 0300 0300 0000 0600 0100
を並べれば、ダブルバトルで相手2体が一緒に揺れるということです
2体攻撃に設定されていて相手2体が揺れる演出の技の中を見てみると、似たような数値の並びが出てくると思います

2番目の 0300 を 1300 にすると、揺れるというより一瞬で凄い移動をして戻ります
0000 にすると揺れなくなることから、相手が揺れる幅を設定できるものと考えられます

3番目の 0000 を 1000 にすると、斜め下方向へと一瞬動いて戻ります
下方向へと動いたので試しに02の画像表示で上下の設定として試していた F0FF を入れてみると、相手が上へと動きます
このことから3番目の 0000 は相手が上下へ動く設定だと考えられます
特に上下へ動かす必要が無いので 0000 で上下へは動かないよう設定されているのでしょう
なお、上へ動かす設定は大抵の場合自分のポケモンの画像が動くと見切れるのでオススメしません
相手が上へ動く
相手を上へ飛ばすたいあたり!威力高そう!
自分が上へ動く
ウワーッ フシギダネが見切れてるゥ
全てのポケモン背面画像を上へ飛ばしても見切れないように作って設定するのは現実的ではないですし…
上下に揺れている動きをしたい場合は下へ動くようにすると良いです

4番目の 0600 を 1600 にすると、相手が長く揺れます
相手が揺れる時間を設定できるものと考えられます
技の表現によっては長い間揺れていて欲しい時もあると思われるので、そんな時は高めの数値を設定して長く揺らすことも可能です

5番目の 0100 を 1100 にすると、なんかゆっくりカクカク揺れます
揺れ方の設定?みたいなのができるものと考えられます
これは正直使われる範囲が狭いと思うのでそんなに仕組みを意識しなくて良いというか…
0100は普通、0200は速め、0300はちょっとカクつく感じ、くらいまで覚えておけば大丈夫だと思います
他の設定によっても揺れ方の印象が変わるので、他の設定も合わせて調整する形になるかもしれません
特に4番目の揺れる時間設定はこの揺れ方によって同じ数値でも揺れる時間が変わります

03~は自分や相手の動き設定が中心ですが、中には特殊な画像の表示とその動きを処理しているものもあります
また、02~の指定先とは違って 03…に続く指定先の数値は私にはさっぱり分かりません
資料Wiki曰くプログラムのアドレスが直接指定されているそうです
指定先を下手にいじることはできないと思われます


「19 8400 3F」
効果音を設定しています
19 は効果音再生処理、8400 は効果音の種類の設定、3F は相手側に対して大きく鳴るように設定してる?ようです
8400 がどの効果音を指しているのかは資料Wikiのファンファーレナンバーのページを見て頂くと早いです
表を見ると 0x84 と書かれた132番目のれんぞくパンチ音だと分かります
表では使用されている代表的な技名が1つ書かれているだけなので分かりにくいかも。慣れるしかないです
ここを 8400 から D800 にすると、たいあたりを当てただけで歓声があがる技になります。そんな感じで音を変えられます
効果音であれば技アニメ用の音ではないフィールドで使われる音等も再生できます。管理がややこしくなる可能性があるので非推奨ですが…
そして 3F は 相手側に鳴るように…ですが、これは恐らく実機GBAで動かした時に左右のスピーカーから鳴らす音量の比率を設定するんじゃないかなと思います。知らんけど
基本的にエミュレータで動かすので味方側とか相手側とか気にしなくても良さそうな気も…
とはいえ極々稀に実機GBAでも動くようカートリッジを用意してロムデータを入れて実機で動かす、なんていう凄いコアな方々もいることはいるみたいなんですが…
味方側に鳴らす場合は 0C 、全体で鳴らす時は 00 を入れるようです
省くことはできないので作る場合はそれっぽい設定をしておきましょう


「05」
この数値より前の処理で出ている演出が終わるまで次の処理に進まないようにします
たいあたりの場合は効果音や相手の揺れが終わるまで次の処理に行かないようにしています
どの技アニメにもよく使われている処理で、特に技アニメの終わりに使われています
全ての動きが完了するまで技アニメ終了処理(08)を止めておく感じですね
04~の処理と使い方は似ています。目的によって使い分けましょう


「0B 01 0D」
通過処理の 0A~、0C~ を入れたら必ずこれらも入れる必要があります
0B01 で 0A01 の設定解除、0D で 0C~の設定解除、ということで0Aと0Cがセットなのでこれもセットで覚えておくと良いです
稀に0A~だけの処理があり、その時は0B~だけになるくらいですね
0A~を入れたのにこの0B~を入れ忘れると、技が終わらなかったりポケモン画像や能力変化の表示がおかしくなったりします
上記の05で全ての動きが終わるまで0A~設定は解除せず、全ての動きが終わったら0B~で設定解除しつつ終了処理もする流れが多いです。~05 0B010D 08 で終了みたいな感じです


「08」
技アニメを終了する処理です。ここでおしまいってことです
これがあったら終了です
大抵は手前に待機の05が入っています。~05 (必要なら0B~) 08 で終わるイメージです
08という数値自体は何かを読み込む時の08だったり0C処理の0C08みたいによくくっ付いていたりするので、慣れない内は結構紛らわしいです



ようやくたいあたり1つを解説し終えました
うせやんまだ1つだけかよ

勿論他にも様々な処理がありますが、まずはこのページに挙げられたよく使われる処理たちをそこそこ理解してからでも他の処理を知るのは遅くありません
この基本編が分かってきたら他の解説ページも読んでみてください

次に読むのは様々な02処理編がオススメです