Sappy 2006 と Midi2GBAを用いたBGMの編集

Last-modified: 2014-01-11 (土) 19:46:33

どこかで聞いた方法、sappy2006とMidi2gbaを使い、ポケモンで流れている音楽を変更する。
※不具合が起こるかもなので、必ずROMのバックアップをとること!

目次

 

基本、音の置き換え

音変更時に必要なもの。
1,sappy2006、2,Midi2gba、3,置き換えたいMidi、4,ROM

 

はじめに、sappyが日本語版のポケモンに対応していないため、sappy2006(以下sappy)を改変します。
しかし、英語版のポケモンは対応しているので、改変はとても簡単です。(既に設定済みなら、省略可)

 

まず、ROMをsappyで読み込み、表示されたアラート(アドレスが見つかりません。探しますか?みたいな事)
でOKをクリック。しばらくすると、再びアラートが出現します。その時に出力された数字(0x******)を
メモ帳等にメモしておいてください。
一旦sappyを閉じ、同じフォルダ内にあるsappy.xmlをメモ帳か何かで開いてください。
その中に、自分が読み込みたいゲームの名前(Pokemon Fire Redなど)の1行上にある</rom>というところから、
次の</rom>の手前にある</playlist>までコピってください。そして、</playlist>の下にそれを貼り付けてください。
次に、rom codeとsongtableを変更します。ポケモンファイアレッド(英語版)の場合、BPREとなっているはずです。
最後のEをJに変更し、songtableはさっきメモした数字を入力してください。
あとは、上書き保存して完了です。音楽のタイトルは、わかりやすいように日本語化しておくと便利です。

 

以上の準備ができたら、sappyで音楽を置き換えます。
最初にmidi2gbaを解凍、その後、置き換えたいMidiファイルをMidi2GBAのフォルダ内に入れてください。
そして、mid2agbという実行ファイルにMidiをD&Dしてください。sファイルが作られます。
後はsappyでAssemble songから.sファイルを選択、Base destination offset に変えたい音楽のオフセットを入力
し、Assemble that ugly thing! を選択してしばらく待つ。
するとDone!…っていうのが出てくるから、はいを選択。それで、ROMに書き込みは完了しました。
この時、.SファイルはMidi2GBAと同フォルダにないと、失敗する可能性があります。

 

後は実際にエミュレータで動作確認。音楽が流れていれば成功!

音の改善方法

音楽は置き換えられるものの、音がピコピコになってしまうという場合があります。
これは主人公が壁にぶつかったりすると途切れてしまうので、主旋律がピコピコでは話になりません。
それなら、DominoなどのMidi編集ソフトでMidiを再編集しましょう。

 

まず、置き換える場所の音楽(例えばマサラタウンだとする)をsappy2006のMidiドライバーモードで聞いてみましょう。
ゲームで流れているものとは、違った音色で流れてきますよね。
それをMidiファイルに保存するなりして、Midi編集ソフトで開いてください。
各パートが使っている音源がわかるはずです。
そして、実際に置き換える音楽(例えばトキワシティだとする)の各パートの楽器を
マサラの方で使われている楽器の音色にあわせて変更します。
そして、編集したMidiをsファイルにして、通常通り置き換えてみてください。
ピコピコ感はなくなり、まともになっているはずです。
(ダメな場合もあります。)

ループ設定法

ゲーム内では、音楽は永遠にループしています。しかし、普通に音楽を置き換えてもループはしません。
ループをする場合はsファイルを編集して行うのが一番です。

 

まずsファイルをメモ帳で開き、下にスクロールします。そして、Track2とあるところで一旦止めてください。
その上に.byte FINEとか書いてあるはずです。
(↓こんな感じ。これはパートの一番最後の部分なので、音楽の長さによって025などが変わります。)
@ 024 ----------------------------------------
.byte  PATT
.word ファイル名_1_008
@ 025 ----------------------------------------
.byte FINE

@**************** Track 2 (Midi-Chn.6) ****************@

 

↑の場合は、024の下に命令スクリプトを追加します。(024を書き換えると曲によってループした際に各パートのループ位置が変化する可能性がある)
@ 024 ----------------------------------------
.byte  PATT
.word ファイル名_1_008
@ 025 ----------------------------------------
.byte  GOTO
.word ファイル名_1_loop
@ 026 ----------------------------------------
.byte FINE

@**************** Track 2 (Midi-Chn.6) ****************@

 

これは「ファイル名_1_loop」という言葉がある場所に行きなさい、という命令スクリプトです。
後は入力した部分から手前のループしたいところ(↓の場所だとする)
@ 008 ----------------------------------------
ファイル名_1_008:

 

に、このように↓入力してやってください。
@ 008 ----------------------------------------
ファイル名_1_loop:
ファイル名_1_008:

 

これを他のパートも同様に設定します。
(他のパートの場合「ファイル名_2・・・」のように変わっていくので注意してください。)

 

すべてのパートの設定が終わったら、最後にsappyで置き換えてエミュで聞いてきましょう。
きちんとループしていたら、成功です。
(エミュで確認する前にsappyで聞いてみてください。それで、sappyが閉じてしまうのなら、入力ミスがあります。)

その他Q&A

Q.置き換えようとすると「not found MPlayDef.s」みたいなのが出てきて置き換えられない。
A.sファイルはMidi2GBAのフォルダ内に入れておかなければなりません。(MPlayDef.sがあるため。)
 ファイルの選択は、面倒がらずにやりましょう。

 

Q.音楽をmidiファイルに保存できない。
A.sappy2006でダメだったら、Bouche氏が作った「Sappy」(2006とは違います)で保存しましょう。
 ただし、それで保存したmidiはsファイルに変換できないようです。
 操作方法などは各自で調べてください。

 

Q.sappyでは流れるのに、ゲームでは流れない!
A.次のようにやってみてください。
準備するもの:既にsappyで音楽を変えたがゲームでは流れないROM(Aとする)音楽を変えていないROM(Bとする)

まず、Aをsappyで開き、流れない曲を選択します。そして、左側にあるメニューバーから
Export tracksを選択。1の所はすべてチェックを入れておいて、2のところは『$P』か『$T』のどっちかを入力する、
と書いてあるので、どちらかを入力して($Tは置き換えるときに使い、$Pは新規にインポートする時に使うようです。)OKを押します。
するとAの入っているフォルダ内に数字のファイルが生成されたはずです。($Tの場合)
次にBをsappyで開き、置き換えたい曲を選択します。そして、今度はImport tracksを選択します。
そして、先ほど生成されたファイルすべてにチェック。(Bの入っているフォルダ内にそれらのファイルを移しましょう)
チェックしたらOKを押す。それで置き換えられるので、最後にはいを選択。以上で完了です。
できたら、エミュで確認してください。今度こそ、きちんと再生されたはずです。
(これでもダメだったら、無理です。)

 

Q.置き換えた曲の次の曲が変になったんだけど・・・。
A.その場合は、上記の方法でやってみてください。

 

Q.ドラムがピアノになって悲しいことになった・・・。
A.よくわかりませんが、ドラムの音量を他のパートより極端に小さくしてカバーする方法があります。

 

Q.エメラルドの音楽をファイアレッドに移せない?
A.上記の方法で可能。

おまけ、音楽のアドレス一覧(ファイアレッドのもの)

音楽の一覧。入力する場合は、逆順にしてください。
(たとえば、RSのトレーナーバトルは、109と入力してください)

 
アドレス曲名?
00 00音楽なし
08 01進化、サファリゾーン
09 01トレーナーバトル(RS)
0A 01ジムバトル(RS)
0B 01通信時の曲(ピアノのヤツ)
10 01ガイドなど
11 01ゲームコーナー
12 01ロケット団アジト
13 01ジム
14 01プリンの歌
15 01オープニングのゲンガーとニドリーノが戦ってるとこの曲
16 01タイトル画面の曲。
17 01グレン島
18 01シオンタウン
1A 01自転車
1B 01ロケット団との遭遇(バトル前の曲)
1C 01ミニスカートとの遭遇(バトル前の曲)
1D 01ポケモントレーナーとの遭遇(バトル前の曲)
1E 01殿堂入り
1F 01トキワの森
20 01お月見山
21 01無人発電所、ポケモン屋敷
22 01エンディング
23 011番道路
24 01最初にオーキドが話すところの曲
25 01いろいろな道路
26 01セキチクシティの隣の道路
27 01ポケモンリーグ
28 01VSジムリーダー
29 01VSトレーナー
2A 01VS野生ポケモン
2B 01VSチャンピオン
2C 01マサラタウン
2D 01オーキド研究所
2E 01「おーい待て! 待つんじゃ!」の音楽
2F 01ポケモンセンター
30 01サントアンヌ号
31 01なみのり
32 01ポケモンタワー
33 01シルフカンパニー
34 01ハナダシティ
35 01タマムシシティ
36 01トレーナーに勝利
37 01野生ポケモンに勝利
38 01ジムリーダーに勝利
39 01クチバシティ
3A 01トキワシティ
3B 01ライバルのテーマ
3C 01ライバルのテーマ2
3D 01ファンファレー
3E 01何かをもらった
3F 01ポケモンを捕獲
40 01トレーナーカードの撮影
41 01Gamefreakと表示されるところのキラキラキラ、っての。
42 01ポケモン図鑑に登録されます!の曲
43 01イントロメッセージ①
44 01イントロメッセージ②
45 01イントロメッセージ③
46 01ゲームコーナー(+1)
47 01ゲームコーナー(+2)
48 01ポケモンセンター(高音版)
49 01不思議な贈り物
4A 01ゲームコーナー(+3)
4B 01イワヤマトンネル
4C 01ガイドなど(alt)
4D 01ナナシマの道路(水の散歩道など)
4E 01きのみの森
4F 01ナナシマ1~3
50 01ナナシマ4~5(ヒワダタウン)
51 01ナナシマ6~7(キキョウシティ)
52 01ポケモンの笛
53 01VSデオキシス
54 01VS伝説のポケモン
55 01VS伝説のポケモン(54との違いは、ドラムがない)
56 01ジムリーダーとの遭遇(バトル前の曲)
57 01デオキシス登場
58 01トレーナータワー
59 01マサラタウン(高音版)
5A 01おしえテレビ