GBA版ファイアーエムブレム改造まとめWiki2
戦闘アニメ移植
最終更新:
Bot(ページ名リンク)
-
view
戦闘アニメ
そのうちもう少し分かりやすいのをまとめるかも。
戦闘アニメ移植マニュアル
1.はじめに
▼Stirlingの環境設定
編集1の「上書モード時の貼り付けは上書き処理する」
編集2の「上書きモード時の末尾自動挿入」
にチェックをしておかないといけない。
▼ポインタとは
例えば烈火のロードのクラスの戦闘アニメのデータ「10 0D D6 08」
リトルエンディアンだから08D60D10(00D60D10)になる
「10 0D D6 09」なら09D60D10(10D60D10)
▼ROM拡張
ROMをStirlingで開き、最後尾に移動してF連打するなり一気にコピーするなりして増やす。
▼Stirlingの環境設定
編集1の「上書モード時の貼り付けは上書き処理する」
編集2の「上書きモード時の末尾自動挿入」
にチェックをしておかないといけない。
▼ポインタとは
例えば烈火のロードのクラスの戦闘アニメのデータ「10 0D D6 08」
リトルエンディアンだから08D60D10(00D60D10)になる
「10 0D D6 09」なら09D60D10(10D60D10)
▼ROM拡張
ROMをStirlingで開き、最後尾に移動してF連打するなり一気にコピーするなりして増やす。
2.アドレス
▼戦闘アニメポインタ指定アドレス
封印 6A0000
烈火 E00000
聖魔 C00000
▼戦闘アニメ画像アドレス
封印 6A1000
烈火 E02000
聖魔 C02000
▼戦闘アニメポインタ指定アドレス
封印 6A0000
烈火 E00000
聖魔 C00000
▼戦闘アニメ画像アドレス
封印 6A1000
烈火 E02000
聖魔 C02000
▼待機アニメ指定アドレス
封印 662C14
烈火 D613B8
聖魔 903E0C
▼待機アニメ画像アドレス
封印 2504B4
烈火 378C68
聖魔 1A71E0
封印 662C14
烈火 D613B8
聖魔 903E0C
▼待機アニメ画像アドレス
封印 2504B4
烈火 378C68
聖魔 1A71E0
▼移動アニメ指定アドレス
封印 6649B4
烈火 D650B4
聖魔 A13488
▼移動アニメ画像アドレス
封印 27B188
烈火 3BF728
聖魔 1B2D84
封印 6649B4
烈火 D650B4
聖魔 A13488
▼移動アニメ画像アドレス
封印 27B188
烈火 3BF728
聖魔 1B2D84
▼空き領域アドレス
封印 7FF0B0
烈火 不明
聖魔 F00000
封印 7FF0B0
烈火 不明
聖魔 F00000
3.ポインタ2
▼ポインタ2の解凍の編集は手ごわい
戦闘アニメ画像アドレスを変えただけでうまくいくものもあるが、
ロードナイトなどの騎乗クラスや勇者などはフリーズしたり画像崩壊する。
コマンドというものがあって、例えば、[47] 00 00 85 []内がコマンド番号(47はマントがなびくコマンド)
ここではほんの一例を紹介する。
▼ポインタ2の解凍の編集は手ごわい
戦闘アニメ画像アドレスを変えただけでうまくいくものもあるが、
ロードナイトなどの騎乗クラスや勇者などはフリーズしたり画像崩壊する。
コマンドというものがあって、例えば、[47] 00 00 85 []内がコマンド番号(47はマントがなびくコマンド)
ここではほんの一例を紹介する。
[烈火]ロードナイト(剣) → 聖魔に移植
1C 00 00 85 07 00 02 86 → 1B 00 00 85 04 00 02 86
1C 00 00 85 07 00 0A 86 → 1C 00 00 85 14 00 0F 86
※聖魔の擬似職(ロードナイトならソシアルナイトなど)のポインタ2を解凍して見比べてみたらわかりやすい
1C 00 00 85 07 00 02 86 → 1B 00 00 85 04 00 02 86
1C 00 00 85 07 00 0A 86 → 1C 00 00 85 14 00 0F 86
※聖魔の擬似職(ロードナイトならソシアルナイトなど)のポインタ2を解凍して見比べてみたらわかりやすい
[封印]盗賊女(剣) → 聖魔に移植
04 00 0F 86 → 03 00 0F 86
04 00 10 86 → 03 00 10 86
03 00 1A 86 → 03 00 25 86
04 00 0F 86 → 03 00 0F 86
04 00 10 86 → 03 00 10 86
03 00 1A 86 → 03 00 25 86
[烈火]勇者ライナス(剣) → 聖魔に移植
03 00 8C 86 → 05 00 3D 86
01 00 7D 86 → 02 00 7D 86
03 00 7F 86 → 05 00 7F 86
03 00 8D 86 → 05 00 3D 86
03 00 8C 86 → 05 00 3D 86
01 00 7D 86 → 02 00 7D 86
03 00 7F 86 → 05 00 7F 86
03 00 8D 86 → 05 00 3D 86
[封印]勇者女(剣) → 聖魔に移植
01 00 7D 86 → 02 00 7D 86
01 00 98 86 → 05 00 7F 86
01 00 7D 86 → 02 00 7D 86
01 00 98 86 → 05 00 7F 86
[封印]勇者女(斧あり) → 聖魔に移植
色々と変えすぎて何変えたか覚えてない(というか変える必要あったっけ)
色々と変えすぎて何変えたか覚えてない(というか変える必要あったっけ)
[烈火]ブレイドロード(剣) → 聖魔に移植
43 00 00 85 01 00 02 86 → 43 00 00 85 12 00 03 86
43 00 00 85 01 00 02 86 → 43 00 00 85 12 00 03 86
[烈火]グレードロード(斧あり) → 聖魔に移植
03 00 03 86 => 06 00 09 86
03 00 03 86 => 06 00 09 86
[烈火]ロードヘクトル(斧あり) → 聖魔に移植
03 00 17 86 → 03 00 0B 86
03 00 17 86 → 03 00 0B 86
[烈火]大賢者(アトス) → 聖魔に移植
47 00 00 85 → 00 00 00 85
47 00 00 85 → 00 00 00 85
[烈火]災いを招く者(ネルガル) → 聖魔に移植
47 00 00 85 → 00 00 00 85
47 00 00 85 → 00 00 00 85
4.移植
[烈火]ロードヘクトルを聖魔の空き領域(F00000)に移植してみる。
[烈火]ロードヘクトルを聖魔の空き領域(F00000)に移植してみる。
① NLZ-GBA Advanceを起動し、『File->Open ROM』で移植したい画像があるROM(ここでは烈火の剣)を開く。
Offsetのところに「E02000」(戦闘アニメ画像アドレス)を入力し、移植したい画像を探す。
E23084(84 30 E2 08)
E240B8(B8 40 E2 08)
E2511C(1C 51 E2 08)
E25FC0(C0 5F E2 08)
この4つがロードヘクトルの画像アドレスだが、4つ目の画像(E25FC0)の次の画像も調べる。
次の画像アドレスは「E26D60」だが、このアドレス-1をしてメモする。
「E26D5F」が減算されたもので、これが画像アドレスの最後尾となる。
Offsetのところに「E02000」(戦闘アニメ画像アドレス)を入力し、移植したい画像を探す。
E23084(84 30 E2 08)
E240B8(B8 40 E2 08)
E2511C(1C 51 E2 08)
E25FC0(C0 5F E2 08)
この4つがロードヘクトルの画像アドレスだが、4つ目の画像(E25FC0)の次の画像も調べる。
次の画像アドレスは「E26D60」だが、このアドレス-1をしてメモする。
「E26D5F」が減算されたもので、これが画像アドレスの最後尾となる。
1つ目の画像開始アドレス「E23084」は、移植先では「F00000」
2つ目の画像開始アドレス「E240B8」から1つ目の画像開始アドレス「E23084」を減算。つまり、
E240B8 - E23084 = 1034
減算した数を移植先の1つ目の画像開始アドレス「F00000」に加算。つまり、
1034 + F00000 = F01034(これが移植先の2つ目の画像開始アドレス)
3つ目の画像開始アドレス「E2511C」から1つ目の画像開始アドレス「E23084」を減算。つまり、
E2511C - E23084 = 2098
減算した数を移植先の1つ目の画像開始アドレス「F00000」に加算。つまり、
2098 + F00000 = F02098(これが移植先の3つ目の画像開始アドレス)
4つ目の画像開始アドレス「E25FC0」から1つ目の画像開始アドレス「E23084」を減算。つまり、
E25FC0 - E23084 = 2F3C
減算した数を移植先の1つ目の画像開始アドレス「F00000」に加算。つまり、
2F3C + F00000 = F02F3C(これが移植先の4つ目の画像開始アドレス)
2つ目の画像開始アドレス「E240B8」から1つ目の画像開始アドレス「E23084」を減算。つまり、
E240B8 - E23084 = 1034
減算した数を移植先の1つ目の画像開始アドレス「F00000」に加算。つまり、
1034 + F00000 = F01034(これが移植先の2つ目の画像開始アドレス)
3つ目の画像開始アドレス「E2511C」から1つ目の画像開始アドレス「E23084」を減算。つまり、
E2511C - E23084 = 2098
減算した数を移植先の1つ目の画像開始アドレス「F00000」に加算。つまり、
2098 + F00000 = F02098(これが移植先の3つ目の画像開始アドレス)
4つ目の画像開始アドレス「E25FC0」から1つ目の画像開始アドレス「E23084」を減算。つまり、
E25FC0 - E23084 = 2F3C
減算した数を移植先の1つ目の画像開始アドレス「F00000」に加算。つまり、
2F3C + F00000 = F02F3C(これが移植先の4つ目の画像開始アドレス)
まとめると、
E23084(84 30 E2 08)→F00000(00 00 F0 08)
E240B8(B8 40 E2 08)→F01034(34 10 F0 08)
E2511C(1C 51 E2 08)→F02098(98 20 F0 08)
E25FC0(C0 5F E2 08)→F02F3C(3C 2F F0 08)
E23084(84 30 E2 08)→F00000(00 00 F0 08)
E240B8(B8 40 E2 08)→F01034(34 10 F0 08)
E2511C(1C 51 E2 08)→F02098(98 20 F0 08)
E25FC0(C0 5F E2 08)→F02F3C(3C 2F F0 08)
②烈火をStirlingで開き、全ての画像(E23084~E26D5F)をコピー。
※「範囲を指定して選択」を使うと楽。
コピーしたものを聖魔の空き領域「F00000」にペースト。
※「範囲を指定して選択」を使うと楽。
コピーしたものを聖魔の空き領域「F00000」にペースト。
③烈火をStirlingで開き、戦闘アニメポインタ指定アドレス(烈火なのでE00000)から、
ロードヘクトル(helm_ax1)を探し、攻撃パターンの5つのポインタを確認。
※例えば、erlm_sw1ならエリウッド。これを識別子という
※xx xx xx 08で1個のポインターになる
ロードヘクトルの戦闘アニメポインタ指定アドレスは「E000C8」。これをコピーすると、
68 65 6C 6D 5F 61 78 31 00 00 00 00 EC 7A E2 08 00 78 E2 08 D8 72 E2 08 B8 6D E2 08 60 6D E2 08
細かに説明すると、
[68 65 6C 6D 5F 61 78 31](00 00 00 00)「EC 7A E2 08」『 00 78 E2 08』【D8 72 E2 08】《B8 6D E2 08》〈60 6D E2 08〉
[]内は識別子(8バイト)
()内は空きアドレス(4バイト)
「」内はポインタ1(4バイト)
『』内はポインタ2(4バイト)
【】内はポインタ3(4バイト)
《》内はポインタ4(4バイト)
〈〉内はポインタ5(4バイト)
このポインタ全てをメモし、1~4つ目の画像アドレスの次(余裕を見てF04000)に移植する。
さらに、ポインタ1から少し下に空きアドレス(00 00 ... とずらっと並んでるところ)の次のアドレス(10 80 ...)の手前をチェック。
ここでもまた、画像開始アドレスと同じように、
(移植元のポインタ4 - 移植元のポインタ5) + 移植先のポインタ5 = 移植先のポインタ4
というように計算しなければならない。
つまり、
移植元 移植先
ポインタ1 EC 7A E2 08→E27AEC<E27B4B> F04D8C(+D8C)
ポインタ2 00 78 E2 08→E27800 ポインタ2は現時点ではわからない
ポインタ3 D8 72 E2 08→E272D8 F04578(+578)
ポインタ4 B8 6D E2 08→E26DB8 F04058(+58)
ポインタ5 60 6D E2 08→E26D60 F04000
<>内はポインタ1から少し下に空きアドレスの次のアドレス。つまりポインタ1の終わり
ロードヘクトル(helm_ax1)を探し、攻撃パターンの5つのポインタを確認。
※例えば、erlm_sw1ならエリウッド。これを識別子という
※xx xx xx 08で1個のポインターになる
ロードヘクトルの戦闘アニメポインタ指定アドレスは「E000C8」。これをコピーすると、
68 65 6C 6D 5F 61 78 31 00 00 00 00 EC 7A E2 08 00 78 E2 08 D8 72 E2 08 B8 6D E2 08 60 6D E2 08
細かに説明すると、
[68 65 6C 6D 5F 61 78 31](00 00 00 00)「EC 7A E2 08」『 00 78 E2 08』【D8 72 E2 08】《B8 6D E2 08》〈60 6D E2 08〉
[]内は識別子(8バイト)
()内は空きアドレス(4バイト)
「」内はポインタ1(4バイト)
『』内はポインタ2(4バイト)
【】内はポインタ3(4バイト)
《》内はポインタ4(4バイト)
〈〉内はポインタ5(4バイト)
このポインタ全てをメモし、1~4つ目の画像アドレスの次(余裕を見てF04000)に移植する。
さらに、ポインタ1から少し下に空きアドレス(00 00 ... とずらっと並んでるところ)の次のアドレス(10 80 ...)の手前をチェック。
ここでもまた、画像開始アドレスと同じように、
(移植元のポインタ4 - 移植元のポインタ5) + 移植先のポインタ5 = 移植先のポインタ4
というように計算しなければならない。
つまり、
移植元 移植先
ポインタ1 EC 7A E2 08→E27AEC<E27B4B> F04D8C(+D8C)
ポインタ2 00 78 E2 08→E27800 ポインタ2は現時点ではわからない
ポインタ3 D8 72 E2 08→E272D8 F04578(+578)
ポインタ4 B8 6D E2 08→E26DB8 F04058(+58)
ポインタ5 60 6D E2 08→E26D60 F04000
<>内はポインタ1から少し下に空きアドレスの次のアドレス。つまりポインタ1の終わり
ポインタ2(00 78 E2 08 = E27800)をメモ。
④Nintenlords LZ77 Compressorを起動し、Inputfile. のBrowse...を押し、烈火を開く。
Action->Decompressを選択し、Input info->Offsetに「E27800」を入力。
Runを押せば「Outputfile」が出来上がる。
※初期ではOutputfile.だが、任意の名前でOK
Action->Decompressを選択し、Input info->Offsetに「E27800」を入力。
Runを押せば「Outputfile」が出来上がる。
※初期ではOutputfile.だが、任意の名前でOK
⑤「Outputfile」をStirlingで開き、画像開始アドレスを置換する。
つまり、
E23084(84 30 E2 08)→F00000(00 00 F0 08)
E240B8(B8 40 E2 08)→F01034(34 10 F0 08)
E2511C(1C 51 E2 08)→F02098(98 20 F0 08)
E25FC0(C0 5F E2 08)→F02F3C(3C 2F F0 08)
※一括置換がオススメ。
本来ならこれで終わりだが、ロードヘクトルは特殊なので、
03 00 17 86 → 03 00 0B 86
も置換する。
つまり、
E23084(84 30 E2 08)→F00000(00 00 F0 08)
E240B8(B8 40 E2 08)→F01034(34 10 F0 08)
E2511C(1C 51 E2 08)→F02098(98 20 F0 08)
E25FC0(C0 5F E2 08)→F02F3C(3C 2F F0 08)
※一括置換がオススメ。
本来ならこれで終わりだが、ロードヘクトルは特殊なので、
03 00 17 86 → 03 00 0B 86
も置換する。
⑥Nintenlords LZ77 Compressorを起動し、Inputfile. のBrowse...を押し、Outputfileを開く。
Outputfile. は適当なファイル名を。
Action->Compressを選択し、Runを押して再圧縮。
Outputfile. は適当なファイル名を。
Action->Compressを選択し、Runを押して再圧縮。
⑦烈火をStirlingで開き、ロードヘクトルの戦闘アニメポインタ指定アドレスは「E000C8」にジャンプ。
ポインタ5 E26D60 ~ ポインタ1の終わり E27B4B
をコピーし、聖魔の空き領域「F04000」にペースト。
さらに、⑥で再圧縮したポインタ2のファイルをStirlingで開き、全て選択してペースト。
移植したアドレス内に、画像開始アドレスが残っているので、
E23084(84 30 E2 08)→F00000(00 00 F0 08)
E240B8(B8 40 E2 08)→F01034(34 10 F0 08)
E2511C(1C 51 E2 08)→F02098(98 20 F0 08)
E25FC0(C0 5F E2 08)→F02F3C(3C 2F F0 08)
を置換する。(ない場合もあるが気にしない)
ポインタ5 E26D60 ~ ポインタ1の終わり E27B4B
をコピーし、聖魔の空き領域「F04000」にペースト。
さらに、⑥で再圧縮したポインタ2のファイルをStirlingで開き、全て選択してペースト。
移植したアドレス内に、画像開始アドレスが残っているので、
E23084(84 30 E2 08)→F00000(00 00 F0 08)
E240B8(B8 40 E2 08)→F01034(34 10 F0 08)
E2511C(1C 51 E2 08)→F02098(98 20 F0 08)
E25FC0(C0 5F E2 08)→F02F3C(3C 2F F0 08)
を置換する。(ない場合もあるが気にしない)
⑧再圧縮ポインタ2の開始アドレス(F04DEC)が移植先のポインタ2となる。
※極稀に例外もある。その場合は、
烈火をStirlingで開き、ロードヘクトルのポインタ2「E27800」にジャンプ。
10 7C 0A 00 04 03をコピーして、聖魔の方で検索する。
再圧縮ポインタ2の開始アドレス(F04DEC)ともうひとつ検索ヒットするので、そちらが移植先のポインタ2となる。
※極稀に例外もある。その場合は、
烈火をStirlingで開き、ロードヘクトルのポインタ2「E27800」にジャンプ。
10 7C 0A 00 04 03をコピーして、聖魔の方で検索する。
再圧縮ポインタ2の開始アドレス(F04DEC)ともうひとつ検索ヒットするので、そちらが移植先のポインタ2となる。
つまり、
移植元 移植先
ポインタ1 EC 7A E2 08→E27AEC<E27B4B> F04D8C(+D8C)
ポインタ2 00 78 E2 08→E27800 F04DEC
ポインタ3 D8 72 E2 08→E272D8 F04578(+578)
ポインタ4 B8 6D E2 08→E26DB8 F04058(+58)
ポインタ5 60 6D E2 08→E26D60 F04000
となる。
移植元 移植先
ポインタ1 EC 7A E2 08→E27AEC<E27B4B> F04D8C(+D8C)
ポインタ2 00 78 E2 08→E27800 F04DEC
ポインタ3 D8 72 E2 08→E272D8 F04578(+578)
ポインタ4 B8 6D E2 08→E26DB8 F04058(+58)
ポインタ5 60 6D E2 08→E26D60 F04000
となる。
⑨聖魔をStirlingで開き、戦闘アニメポインタ指定アドレス「C00000」にジャンプ。
初期ではC9となっているが、ここまでで1つの戦闘アニメを追加したので+1
つまり、CAに変更する。
初期ではC9となっているが、ここまでで1つの戦闘アニメを追加したので+1
つまり、CAに変更する。
⑩戦闘アニメを指定する。これは任意の場所。
試しに、エイリークの剣アニメを上書きしてみる。
エイリークの戦闘アニメアドレス(903570)からコピー。
00 01 03 00 09 01 04 00 00 00 00 00
03→CAに書き換える。
試しに、エイリークの剣アニメを上書きしてみる。
エイリークの戦闘アニメアドレス(903570)からコピー。
00 01 03 00 09 01 04 00 00 00 00 00
03→CAに書き換える。