BGMを移植する

最近は改良版ツールが作成され、容量を気にしなければ他のゲームからの移植も容易になりました。アップデートにより使い方が微妙に変わってるかもしれないので、ツールのreadmeをよく読んでください。

ただしここではFE間の移植を行います。

▽準備

Extend the Zahlman’s Song Editor

・Python ver 2.X.X系(http://www.python.org/download)

・sappy2006mod17.1

ツールの導入

ZSEは使うためにPythonもインストールする必要があります。
これを書いている時点での最終バージョンはver.2.7.8でした。間違ってver.3.X.Xをインストールしないようにして下さい。

sappy2006mod17.1も導入に一手間必要ですが、readmeが日本語なので大丈夫でしょう。sappyは「The Helmeted Rodent」というサイトです。

BGM移植

開いているのは烈火のロムです。烈火のこのBGMを聖魔に移植します。
srbsyfj
最近はこのアドレスをメモ帳に書き写すよりスクショをパシャりの方が効率がいい事に気づきました。
画像みたいに曲名を表示させたいという人は、曲名入力済みの「sappy.xml」をuploaderで配布してます。

移植元(烈火)のROMで必要な情報は「Header」です。今回は「0xAFE120」ということですね。このアドレスをひかえておきましょう。

アドレスをひかえたら次に移植先(聖魔)を開きます。そして、移植先の曲IDを開きます。
通常は空いているBGMのIDを利用しますが、今回はテストなので、戦闘BGMに上書きしてしまいます。
ryilnrkgh
こちら側では「Table」のアドレスをひかえます。「0x2141E8」ですね。
では必要な情報は揃ったので、曲を移植しましょう。

 ・ZSEのフォルダに移植先、移植元、両方のROMを入れます。(ROMのファイル名はわたしのと揃えておくのが無難です)
sryjb6d
 ・「main.py」を起動します
e68ohh

ここからは一気に進めます。
何も考えずに以下の通りに入力していって下さい。
一行済んだらエンターキーを押して下さいね。


open ae7j

rip 0xafe120

open be8j

burn 0x2141e8

close be8j

(ファイル名がわたしと違う人はその部分を変えましょう。)

 ・全部終えたらこんな感じです。
e6ibhuyg
これで、移植の大部分が終わります。
素直にこの通りに入力した場合、音楽や楽器データはROMの末尾に自動的にくっつけられます。
自分で指定したい場合は、「burn 0x2141e8」とした部分を例えば「burn 0x2141e8 0xff0000」と入力すれば、「00FF0000~」にデータが書き込まれます。
うっかり何かのデータに上書きしてしまわないように、アドレス指定は慎重に!

また、失敗が恐いから元ロムに上書きされたくないよ。という場合は、最後を”close test”とでもすれば。test.gbaが出力されます。ミスが怖いので、上書きせずにこうしておいたほうが良いかもしれません。

移植した曲の設定

さて、チェックが必要な部分がまだあと2カ所在ります。

両方のファイルをバイナリエディタで開いて下さい。そして烈火は先ほどの0xafe120、聖魔は移植したアドレスの先頭を見て下さい。

・移植元と移植先、ここの値が同じかをチェックして下さい
e57byjdt
違ったら移植元に合わせて下さい

また、もうひとつ、確認する箇所があります。両方のロムをProjects_FE_GBAで開き、「ソングテーブル」を確認して下さい。

・この??の部分を揃える必要があります
w57gbiuty

w5g6ufyhf
こちらも違ったら移植元に合わせて下さい

あとはVBAで聖魔を起動してチェックです。これにて移植が完了です。

5 thoughts on “BGMを移植する”

  1. いちいち突っ込むのもなんですけど最後の作業のProjectFEGBAの作業はマップ曲のループに関わってるってのは知ってるんですけけどバイナリの移植元に合わせる作業にはどういう意味があるんですか?またしないことによりどんな弊害が起きるんでしょうか?

    1. 効果音を移植した場合、ちゃんと合わせないと正常に鳴らない場合が多かったです
      私も確かにBGMだと何もしなくても問題ないような気がしますね

  2. これ、音楽によっては楽器が削られるみたいなんですけどなんとか
    ならないですかねえ?

    1. そうですね。未使用の楽器は無視されるし、楽器セットも圧縮されますね。
      つまりは分からないんですが…sampleを出力する機能がついてるらしいのでそれでできるのかも?適当ですみません。

コメントを残す

メールアドレスが公開されることはありません。