Featured image of post 【要CFW】3DSのROMから音源データを取り出してサントラを自作する

【要CFW】3DSのROMから音源データを取り出してサントラを自作する

はじめに

任天堂が世界に誇る、時代の先端を進むゲームハード、

Nintendo Switch Nintendo 3DS

今回は、CFW導入済み3DSを用いてゲームデータ内から音源ファイルを取り出し、mp3などの一般的なファイル形式へ変換することで、自作のサウンドトラック的なのを作ってみようと思います。

予習講義

CFW(カスタムファームウェア)とは、3DSのソフトウェアに非公式な ✝改造✝ を施すことで、通常では不可能な操作(データの吸い出し、非公式プログラムの実行など)を行えるようにする技術です。

非公式なので、もちろんサポートも切れますし(てか3DSってまだサポートされてんだっけ)、3DS本体がぶち壊れたり、データが葬り去られたりしても、自己責任です。いつものやつですね。

必要なものシリーズ

3DS

  • CFW導入済み3DS
  • 音源データを取り出したいゲームソフト

3DSは、ここと(ある程度)同じ手順でCFWが導入されている必要があります。最新バージョンで導入できます。

3DS Hacks Guide - 3DS Hacks Guide

ゲームソフトは、カートリッジ版でもダウンロード版でもOKです。

PC

以下のソフトを動かすためにWindows PCが必要です。

やってみよう

言うまでもないですが、ゲームは認められた方法で入手したものを使用してくださいね。

本サイトはゲームの違法ダウンロードを推奨しません

これまたいつものやつですね。


今回は、カートリッジ版ソフトは「ポケットモンスター ウルトラムーン」、ダウンロード版ソフトは「みんなで!カービィハンターズZ」で試します。

ウルトラサンムーンは、サントラ発売済みのサンムーンには無かった「レインボーロケット団」エピソードや、過去作の伝説のポケモンと出会える「ウルトラワープライド」が実装され、主に戦闘曲周りが大幅にリッチになっています。また、みんなで!カービィハンターズZは、基本プレイ無料のゲームでありながら、過去のカービィシリーズのアレンジをはじめとして新曲が多数追加されています。特にキングD・マインド戦の曲は、ウルトラスーパーデラックスのマスクド・デデデのテーマと鏡の大迷宮のダークマインド戦の曲を違和感なく融合させたすばらしいアレンジで、HAL研究所の……

……

おっと、喋りすぎてしまっ

音源データの取り出し

ゲームのBGMは、ゲーム内では基本的にループで再生されます。そのため、ループポイントが設定された独自のファイル形式を用いています。

3DSでは、主にbcstmという形式が使われています。しかし、必ずそうというわけではなく、例えば「大乱闘スマッシュブラザーズ for Nintendo 3DS」ではnus3bank、「星のカービィ 夢の泉の物語」の3DS移植版ではbmsなどが使われています。

カートリッジ版とダウンロード版では、音源の取り出し方法が若干違うので、両方解説しときます。

カートリッジ版

ROM内のデータを見る(カートリッジ版)

STARTボタンを押しながら3DSを起動し、表示されるメニューからGODMODE9を選択して起動します。

GODMODE9のメイン画面で[C:] GAMECARTを選択すると、現在挿入されているカートリッジの中身が見られます。

拡張子が.3dsとなっているファイル(.trim.3dsでもどっちでもいいです)を選択し、Aボタンを押します。

[C:] GAMECART 拡張子が.3dsのファイルを選択

NCSD image options...Mount image to drive と進み、Aボタンを押します。

NCSD image options… Mount image to drive < A > yes

カートリッジのROM内のデータが表示されます。

音楽データを探す

ROM内を漁って、フォルダ・ファイル名、拡張子(.bcstmとか)などから、音楽データっぽいのを探します。

ポケットモンスター ウルトラムーンの場合は、/content0.game/romfs/data/sound/にありました。

こんな感じで、基本的にどのゲームも分かりやすいフォルダに入っていることが多いです。

ROM内のデータ /content0.game/romfs/data/sound/

SDカードにコピー

Lボタンを押しながら十字キーを動かし、.bcstmを全部選択します。選択すると文字が黄色に変化します。

選択したらYボタンを押してファイルをクリップボードにコピーします。

.bcstmファイルを選択 クリップボードにコピーされた

GODMODE9のメイン画面に戻り、一番上の[0:] SDCARD (***)を選択します。

SDカード内の任意のディレクトリ(/gm9/out/でいいかなと思います)でYボタンを押し、< A > yesで貼り付けます。

[0:] SDCARD (***) < A > yes 音源ファイルが/gm9/out/に移動された

ダウンロード版

目的のソフトを探し出す

[A:] SYSNAND SDにカーソルを合わせた状態で、Rボタンを押しながらAボタンを押します。

下画面にメニューが表示されるので、Open title mnagerを選択します。

SDカードにインストールされているソフトがずらーっと表示されるので、その中から目的のソフトを探し出します。

[A:] SYSNAND SD Open title mamager インストールされているアプリが一覧で表示される

日本のゲームでもタイトルは英語で表示されていることがあります。また、漢字を含むタイトルは文字化けして表示されないため、そういった場合はここ(3dsdb)などを使ってタイトルコードを調べ、コードから探すのも手です。

3dsdb

「みんなで!カービィハンターズZ」は、英語で「Team Kirby Clash Deluxe」として表示されていました。

ROM内のデータを見る(ダウンロード版)

リストから目的のソフトを見つけて選んだ後、Open title folderを選択します。

0000000*.appのような、複数のファイルが出てくると思います。この中から、最も容量の大きいファイル(KB・MBの単位に注意)を選択します。

Open title folder 最も容量の大きいファイルを選択

NCCH image options...Mount image to drive と進み、Aボタンを押します。

NCCH image options… Mount image to drive < A > yes

あとはカートリッジ版と同じ手順で音楽データを探し出します。

カビハンZの場合は、/romfs/snd/stream/にありました。

カートリッジ版同様、L押しながら十字キーで選択、Yでコピーして[0:] SDCARD (***)の任意のディレクトリに移動してYボhuタンで貼り付け、てな感じです。

SDカードへのコピーが完了したら、もう3DSは用済みなので、R+STARTキーで電源を切ってしまいましょうね。

ちゃんと再生できるか確認

3DSのSDカードをPCにぶっ刺し、PCの分かりやすい場所にフォルダを作り、そこに音源データをぶち込みます。

foobar2000を起動し、foobar2000のウィンドウ上にドラッグ&ドロップすると、foobar2000上に音楽データがどばーっと表示されます。

foobar2000とvgmstreamのfoobar2000用コンポーネントが正しくインストールされていれば、foobar2000を使ってbcstmファイルをそのまま再生できるはずです。

bcstmファイルをネイティブに再生できる

基本的に、ここで再生したものより高音質にはなりません。例えば、大乱闘スマッシュブラザーズの3DS版では、ROMに含まれている音源データのサンプリング周波数が既に19999Hzと低いので、これを普通のオーディオファイルに変換したとしても音質は良くなりません。おそらくゲームの容量的な問題でしょう。

カービィやポケモンは一般的なMP3程度の音質はあるかな~と思いますが、まあ、3DSというハードで流すことを想定した作りなので、そういうことです。

ファイル形式を変換する

PCで聞くだけならbcstmファイルのままでもいいのかもしれませんが、一般的な再生機で聞くのにはちょっと不便なので、一般的なオーディオファイル形式に変換していきます。

ここで登場するのが Looping Audio Converter です。

上で載せたリンクからzipファイルをダウンロードし、解凍、中に入っているLoopingAudioConverter.exeを起動します。

Add Folderで、さっきbcstmファイルを保存したフォルダを選択します。

Output Directory:の右側から、オーディオファイルを出力するフォルダを選択します。今回は、デスクトップにoutputフォルダを作成し、そこに出力するようにします。

Add Folderでbcstmファイルが保存されているフォルダを選択 変換後ファイルを出力するフォルダを選択

変換の設定

今回は、bcstmファイルをMP3形式に変換します。

MP3に変換するので、Output formatを[FFmpeg] MP3に設定します。

その右にあるOptionsをクリックして開くウィンドウで、VBRを選択し、Qualityを-V (Extreme)に設定します。完了したらOKを押してウィンドウを閉じます。

出力ファイル形式を選択 変換音質の設定(MP3)

次にループの設定をします。

先述した通り、一般的なゲームソフトの音源ファイルは、ゲーム中で「トラックの最後までいったら特定のポイントに戻って繰り返し再生」という処理ができるように、ループポイントが設定された特殊なファイルとなっています。

Looping Audio Converterは、このループポイントを使って、「曲を何回ループさせる(何周する)か」や「ループ後に何秒間かけてフェードアウトするか」が設定できるようになっています。

ゲームの公式サントラを一度でも聴いたことがある人なら分かると思いますが、1,2周くらいしてフェードアウトしてトラック終了のアレを作れちゃうワケですね。

~~……どうでもいい話をすると、UNDERTALEやDELTARUNEには例外が多数存在し、多くの曲が冒頭から最後までのループを繰り返すようになっています。UNDERTALEのとあるボス戦の曲に「MEGALOVANIA」というものがあります。「レ↓レ↓レ↑、ラ、ラ♭、ソ、ファーレファソ」という主題が、小さな子どもたちが大活躍するスーパーファミコン用のとあるRPGゲームから引っこ抜いたような特徴的なオーバードライブギターのサウンドで演奏される冒頭部分、これ、最初聴いたときはイントロかなと思うんですけど、曲の最後まで行くともう一度このイントロ風の部分に戻ってくるんですね。これって実際のゲーム中ではイントロをループの度に何回も繰り返してることになるんですけど、実際にプレイして聴いてみるとそのループのつながりに違和感が全然ありません。なんだかすごい。ぜひ、他の曲も同じようになっているか聴いてみてくださいね。そして、話が逸れてごめんなさい。~~

ループの設定

1周したのち10秒かけてフェードアウトするように設定しました。

ここまでできたら、右下のStartを押して、変換を開始しましょう。押してもすぐ反応しないことがありますが、ちゃんと動いているので何度も押さないほうがいいかなと思います。

変換が開始されるとこのような画面になります。

変換中……

プログレスバーが最後までいったら変換完了、ウィンドウは閉じて大丈夫です。

出力先に設定したフォルダを確認して、ちゃんと変換できているか、ちゃんと再生できるかを確認しましょう。

【おまけ】タグ情報を付加する

変換されたMP3にはタグがついてないので、再生機で再生するときに少々不便です。

こういうときは、Mp3tagを使ってタグ情報を付加していきましょう。

Mp3tag - the universal Tag Editor (ID3v2, MP4, OGG, FLAC, ...)

「していきましょう」と言っても、市販のアルバムじゃないので、どういう順番でトラック番号をつけたらいいかも分からないし、タイトルが分かんない曲もあるし、アルバム名やアーティスト名をどうすればいいのかも分からない、そして完全手作業です。

ゲームへの知識、調べる努力、作品への愛が問われる作業です。しかし、昔のゲームプレイを振り返りながら、また、久しぶりにゲームをプレイしながら、「この曲の次はこの曲が来たらエモいな」とか自分で考えながらイチからタグ付けするのは、逆に楽しいかもしれません。

おわりに

Switchが完全に普及して3DSは完全に時代の産物になってしまった感があり、3DS偏愛者のまてかすはとても悲しいです。

幸運(?)なことに、3DSにはハードウェアに致命的な脆弱性があり、非公式ツールの導入が容易になっています。

この記事をきっかけに、引き出しの奥の方に眠っている3DSを引っ張り出してみて、触ってみて、弄ってみて、音楽を聴いてみて、懐かしい気持ちになってくれる人がいたら嬉しいですねー。

以上です、おわり。

Built with Hugo
テーマ StackJimmy によって設計されています。