GBA Romから音源を抽出してみた
【2019/11/23追記】
以下のブログに本記事の続きを掲載しております。ポケモンゴールデンサンのBGMを抽出したい方はご覧ください。
https://www.vulneraresearch.com/?p=167
GBA Romファイルから音源を抽出したかったので挑戦してみた。
ちなみに今回抽出しようと考えているのは
「ポケットモンスター ベガ」
「ポケットモンスター ゴールデンサン」
のBGM。
CD化されているBGMは全てCD音源を所持しているものの、改造Rom系のBGMは当然ながらCD化されていません。
ということで挑戦。
まず前提ですが、Romに関しては自分で吸い出したポケットモンスター ファイヤーレッド、エメラルドのRomにipsパッチを当てたベガとゴールデンサンのRomを用意します。
私はDSでマジコンが大流行していた時期に購入したDS TTiというマジコンにGBA Backup Toolというソフトを導入してRomを吸い出しました。
続いて以下から
saptapperというソフトをダウンロード
https://web.archive.org/web/20151027120022/http://gsf.caitsith2.net/tools/saptapper.zip
展開すると以下の様になっていると思います。
このフォルダの中にGBAファイルをコピーします。
GBAファイル名は半角7文字以下にするとよいみたいです。
そしてアドレスバーにcmdと入力してEnter。
Windows 7以降はcmdと入力するとコマンドプロンプトが起動するはずです。
Windows Vista とWindows XPは調べたことないな、、、
すると以下の様な画面が出てきます。
そしてコマンドを実行します。
コマンドは
saptapper rom名.gba
となります。
今回の場合は
saptapper bega.gba
です。
コマンド入力後Enterで以下の様にコマンドプロンプトに文字が表示されると思います。
これは成功例です。
成功した場合はrom名と同じフォルダ(今回はbega)が作成され、中にminigsfという拡張子のデータ大量とgsflibというデータが1つ入っています。
この様にデータがあればBGMの抽出に成功しました。
しかし、このデータはよく使用されているiTunesなどでは再生することができません。
音楽再生ソフトはお好みではあるのですが、私はfoobar2000というソフトを使用しています。
さらにGSF Decoderというコンポーネントをfoobar2000にインストールします。
foobar2000にminigsfを渡してあげるとBGMが再生されます。
wav形式への変換も可能です。
ここまではポケットモンスター ベガのBGM抽出でしたが、ゴールデンサンではsaptapper使用時にエラーが出力されます。
この場合はSappyというソフトを使用して音源を再生、抽出します。
Sappyは以下のサイトからダウンロードします。
http://cdn42.atwikiimg.com/pokeds/?plugin=ref&serial=19
Google Chromeの場合以下のような警告が表示されると思いますが、危険が伴うデータではないのでダウンロードを継続してください。
ダウンロードをしたzipファイルを展開すると以下の様になっている思います。
sappy12.exeを実行しセットアップを行います。
セットアップの際プログラムなどを展開するフォルダを聞かれます。
どこでも構わないのですが、指定したフォルダの場所は必ず覚えておいてください。
指定したフォルダに作成されたsappy.exeを起動します。
メニューからFileを選択しGBARomファイルを指定します。
すると私の場合は以下の様なエラー画面になりました。
同じエラーが出る方は以下のサイトから改善されたデータをダウンロードします。
ダウンロードしたzipファイルにある説明が詳しいのでよく読みexeファイルを差し替えます。
そしてゴールデンサンのRomを読み込みます。
エラーは出ないと思います。
赤で囲んだ部分の数字を目的のBGMが流れるまで上げ続けます。
目的のBGMが見つかれば左側のメニューにある「MIDI書き出し」でmidi形式での出力が可能となります。
【補足】
midi形式出力は便利であるものの、音質はよくないのでSappyで再生している時に録音ソフトを使用した方が良い。
それならばエミュレータで動かして録音すればいいと思われるかもしれないが、戦闘BGMではボールの音などがどうしても入るので、、、