mmm spot

好きで語ろうインターネッツ

海外版GBAポケモンでBGMを変更する方法

改造はいけません。

準備するもの

・Sappy2006(Sappy12.exe)
公式の頒布元は死んでいますが、検索すれば解決できます。自分はSappy2006 mod 17.1も入れています。
ハックロム勢の方、もっと新しくてカッコいいのあれば教えてください。

いつものページ

バイナリエディタ
Stirlingとか。私はValzhexを使わせて頂いています。ぼじーりいつもありがとう。

・ロムデータ
自炊しろ。ついでにミスったとき用にバックアップを無限に取っておいてください。

やり方

1. 変更したいBGMのミュージックナンバーをいつものページで確認する。
今回は例として北米版エメラルド(BPEE)の『[No.413]タイトル ~メインテーマ~』を『[No.526]ニビシティのテーマ』に変更してみます。


↑念のためですがここで流れている曲です。


2. それぞれの曲のヘッダーアドレスを調べる
予めインストールしたSappy2006を使って、変更元/変更先BGMの格納アドレス、ヘッダー値を調べます。

1.の工程で確認したミュージックナンバーを入力したところ、それぞれ以下の値であることがわかりました。

No. 曲名 格納アドレス ヘッダー値
413 Title Screen 0x06B56D8 0x092C7DC
526 Viridian City 0x06B5A60 0x098F3A0


3. バイナリエディタで格納アドレスのヘッダー値を書き換える
実際に参照先のBGM(ヘッダー値)を変更しに行きます。

バイナリエディタを使って、変更BGMの格納アドレスへジャンプします。
この時、先頭の”0x0”は不要です。

もしやり方を間違えていなければ、先ほど調べたヘッダー値が2桁ずつ反転して格納されているはずです。

※さっき調べたヘッダー値は0x092C7DCでしたね。つまりそういうことです。

この値を書き換えたい曲のヘッダー値に、2桁ずつ反転して書き換えます。
今回であれば、変更先のヘッダー値は"0x098F3A0"なので"A0 F3 98"になります。

これをあとは上書き保存して、エミュレータ等で起動してBGMが変わっていることを確認してください。

成功するとこんな感じでBGMが変わります↓