[Hack] スプラ2にスプラ1のBGM移植

BGM移植

スプラトゥーン2ではBGMとしてBFSTMという拡張子が使われている。

ファイル自体はADPRMストリームにループポイントのメタデータがついているだけらしいのでWAV化するソフトはいっぱいあるのだが、例えばスプラ1のBGMをループ情報を保持したままスプラ2に移植しようとするとちょっとややこしい。

LoopAudioConverter

すべてを解決してくれるのがこのソフトで、これを使えばループ情報を保存したままBFSTM変換をおこなうことができる。

と、ここまで書いたのだがよく考えたらWiiUもNintendoSwitchも音声ファイルはBFSTMなので特に変換する必要がなかったかもしれない。

バイトオーダーが異なるので変換は必須でした。

スプラ1のBGMデータ

さて、手持ちの音楽ファイルをBFSTM形式に変換できたら、今度はそれのバイトオーダーを変更しなければいけません。

VGAudioCli

ここからVGAudioCliをダウンロードしてきます。

入力ファイルがBFSTMやWAVにしか対応していないので一度WiiU版のBFSTMを経由しています。

めんどくさいのですが、まあご愛嬌ということで。

LoopAudioConverterがバイトオーダーを指定できたらいいんですけどね。

@echo off
mkdir output
for %%f in (%*) do (
 VGAudioCli --little-endian %%f output\%%~nf.bfstm
)

ニンテンドースイッチ向けの変換コマンドは上の通りなので、これをバッチファイルとしてVGAudioCliと同じフォルダに保存しましょう。

あとはさっき変換したWiiU向けのBFSTMをドラッグアンドドロップすれば全部スイッチ向けに変換してくれます。

完成したBFSTMファイルを “/romfs/Sound/Resource/Stream/” 以下にコピーすればOKです。

何かのファイルと置換しなければいけないのでファイル名には気をつけてください。

初期ファイル

実はスプラトゥーン1のBGMは製品版スプラトゥーン2のカートリッジ内にデータとして残っています。

なので、最悪ファイル名を変えるだけでBGM置換はできるはず。

BGMファイル名一覧

4.7.0までの置換可能なファイルのリストです。

いちおう簡単な説明をつけているので参考にしてください。

Ambi_Kawa00.bfstm
Ambi_Line.bfstm
Ambi_Piller00.bfstm
Ambi_Piller_StartDemo.bfstm
Ambi_Quarry.bfstm
Ambi_Tunnel.bfstm
Athletic_Wind.bfstm
BaseNoiseNear_Plaza.bfstm
BaseNoise_Nagasaki.bfstm
BaseNoise_Plaza.bfstm
BaseNoise_PlazaFes.bfstm
BaseNoise_Unduck.bfstm
BaseNoise_Upland.bfstm
BaseNoise_UplandNight.bfstm
BaseNoise_Venue.bfstm
BaseNoise_Wave.bfstm
Carousel_Ambi.bfstm
Carousel_Ambi_Night.bfstm
Construction00.bfstm
Coop_Env.bfstm
Court_Ambi.bfstm
Court_AmbiNight.bfstm
Court_Ambi_StartBaseNoise.bfstm
Deli_Env.bfstm
Ditch_BaseNoise00.bfstm
Env_HangedKing.bfstm
Env_Sea.bfstm
Env_StampKingDeco.bfstm
GelidiumKing_BaseNoise.bfstm
Jerry_Sound00.bfstm
KawaAmbi_Fes.bfstm
Kawa_Excavator00.bfstm
LastKing_BeforeDemo_Audience.bfstm
LastKing_PreMusic.bfstm
LastKing_StartDemo_Audience1.bfstm
LastKing_StartDemo_Audience2.bfstm
Mirror_Ambi00.bfstm
Mirror_Ambi_Cicada00.bfstm
Mirror_Ambi_NightBug00.bfstm
Mirror_Ambi_Shiokara00.bfstm
Plaza00_a.bfstm
Plaza00_c_VS.bfstm
Plaza00_e.bfstm
Plaza00_f.bfstm
Plaza00_g.bfstm
Plaza00_h.bfstm
Plaza00_i.bfstm
Plaza00_m.bfstm
Plaza_o_Arp.bfstm
Plaza_q_Rob.bfstm
Plaza_r_coop.bfstm
Plaza_s_AcGt.bfstm
Plaza_t_VSFes01.bfstm
Plaza_u_Pf.bfstm
Plaza_v_pizz.bfstm
Plaza_x_GW89seq.bfstm
Plaza_y_PercEns02.bfstm
RollerKing_BaseNoise.bfstm
STRM_BootScene.bfstm起動時BGM敗北
STRM_CoopEvent.bfstm夜WAVE
STRM_CoopEvent_Minigame.bfstm夜WAVE
STRM_CoopHeavy.bfstm
STRM_CoopHeavy_Minigame.bfstm
STRM_CoopMain.bfstm昼WAVE
STRM_CoopMain_Minigame.bfstm昼WAVE
STRM_CoopResult.bfstmリザルト画面
STRM_CoopTutorial.bfstmチュートリアル
STRM_Departure03_1_Minigame.bfstm
STRM_Fes_Plaza_Title.bfstm
STRM_LastBoss1.bfstm
STRM_LastBoss1_Minigame.bfstm
STRM_LastBoss2.bfstm
STRM_LastBoss2_Minigame.bfstm
STRM_Lobby.bfstm
STRM_LobbyCoop.bfstmクマサン商会
STRM_LobbyCoop_Minigame.bfstmクマサン商会
STRM_Lobby_Ikatcha.bfstmイカッチャ
STRM_Matching_Versus.bfstmマッチング中
STRM_Matching_Versus_Others.bfstmマッチング中
STRM_Mission01_Blitz_Bossa.bfstm
STRM_Mission01_Blitz_Bossa_LCP.bfstm
STRM_Mission01_Blitz_Bossa_Minigame.bfstm
STRM_Mission01_Gambit.bfstmスプラ1BGM
STRM_Mission01_Gambit_Last.bfstmスプラ1BGM
STRM_Mission02_Blitz_Maji.bfstm
STRM_Mission02_Blitz_Maji_LCP.bfstm
STRM_Mission02_Blitz_Maji_Minigame.bfstm
STRM_Mission02_Gambit.bfstmスプラ1BGM
STRM_Mission02_Gambit_Last.bfstmスプラ1BGM
STRM_Mission03_Blitz_Joban.bfstm
STRM_Mission03_Blitz_Joban_LCP.bfstm
STRM_Mission03_Blitz_Joban_Minigame.bfstm
STRM_Mission04_Blitz_Spacy.bfstm
STRM_Mission04_Blitz_Spacy_LCP.bfstm
STRM_Mission04_Blitz_Spacy_Minigame.bfstm
STRM_Mission05_Gambit_Rival.bfstmスプラ1BGM
STRM_Mission05_Gambit_Rival_Last.bfstmスプラ1BGM
STRM_Mission_BossCamera.bfstm
STRM_Mission_Boss_Blitz.bfstm
STRM_Mission_Boss_Blitz_Minigame.bfstm
STRM_Mission_LastBossCamera1.bfstm
STRM_Mission_LastBossCamera2.bfstm
STRM_News.bfstm
STRM_News_Ending.bfstm
STRM_News_Minigame.bfstm
STRM_PlayerMake.bfstm
STRM_Plaza_1stTime_Demo_Day.bfstm
STRM_Plaza_Fes.bfstm
STRM_Plaza_Fes_Combined.bfstm
STRM_Shiokara2017.bfstm
STRM_ShootingRange.bfstm試し打ち場BGM
STRM_Shop.bfstm
STRM_Shop_Minigame.bfstm
STRM_StaffRoll.bfstmスタッフロールBGM
STRM_Stage_March_Minigame.bfstm
STRM_Stage_StrikeYoke_Minigame.bfstm
STRM_Sumisoae_Minigame.bfstmホタルBGM
STRM_Tokimeki_Minigame.bfstmアオリBGM
STRM_Tutorial.bfstm
STRM_Tutorial_system.bfstm
STRM_Versus01.bfstmバトルBGM
STRM_Versus02.bfstmバトルBGM
STRM_Versus03.bfstmバトルBGM
STRM_Versus04.bfstmバトルBGM
STRM_Versus05.bfstmバトルBGM
STRM_Versus06.bfstmバトルBGM
STRM_Versus07.bfstmバトルBGM
STRM_Versus08.bfstmバトルBGM
STRM_Versus09.bfstmバトルBGM
STRM_Versus10.bfstmバトルBGM
STRM_Versus11.bfstmバトルBGM
STRM_Versus12.bfstmバトルBGM
STRM_Versus13.bfstmバトルBGM
STRM_Versus14.bfstmバトルBGM
STRM_Versus15.bfstmバトルBGM
STRM_Versus16.bfstmバトルBGM
STRM_VersusFes01.bfstmフェスバトルBGM
STRM_VersusFes02.bfstmフェスバトルBGM
STRM_VersusFes02_InGame.bfstmフェスバトルBGM
STRM_VersusFes03.bfstmフェスバトルBGM
STRM_VersusLast1min.bfstmバトルBGM
STRM_VersusLast1min_Fes.bfstmフェスバトルBGM
STRM_VersusResult_Fes_Lose.bfstmフェス敗北BGM
STRM_VersusResult_Lose.bfstm敗北BGM
STRM_VersusResult_Win.bfstm勝利BGM
STRM_VersusStartDemo.bfstmバトル開始時BGM
STRM_VersusStartDemo_Fes.bfstmバトル開始時BGM
STRM_VersusStartDemo_Fes02.bfstmバトル開始時BGM
STRM_VS01_Gambit.bfstmスプラ1BGM
STRM_VS03_Gambit.bfstmスプラ1BGM
STRM_VS06_Gambit.bfstmスプラ1BGM
STRM_VS07_Gambit.bfstmスプラ1BGM
STRM_VS08_Gambit.bfstmスプラ1BGM
STRM_VS09_Gambit.bfstmスプラ1BGM
STRM_World.bfstm
STRM_World_1stTime_Demo.bfstm
STRM_World_Minigame.bfstm
Tutorial_Construct00.bfstm
Tutorial_Construct01.bfstm
Tutorial_ConstructWet.bfstm
Tutorial_UrbanTraffic00.bfstm
Wind_World_Minegishi.bfstm