[Hack] Map Forceを解説する

Map Force

// ShootingRange Replacements [AmazingChz]
@enabled
023B318E 466C645F446974636830315F567373000000000000

ちなみに上記のコードは旧バッテラになります

なんでこのコードでMap Forceが実現できるのかという技術的解説記事になります。

コードの意味

まずはコードの意味するところから考えましょう。

アドレス部は単にそうであるというふうに考えればよいですが、 “466C645F446974636830315F567373000000000000” って一体何のことなんだろうって思ってしまいますよね。

実はこれはUTF-8エンコードされた文字列を16進数表記したものなのです。

変換の手順とかエンコードの仕組みとかは解説すると記事が長くなってしまうのでとりあえず以下のURLので試してみてください。

おそらく、Fld_Ditch01_Vssとデコードされたはずです。

そして、この文字列が旧バッテラストリートを指しているため、このコードは試し打ち場をバッテラストリートに置換することができるわけです。

後ろの0が続いているのは元々が44バイト分ファイル名が予約されているためです。

0埋めしておかないとバグが発生する可能性があります。

各ステージのファイル名

ファイル名を16進数変換して44バイトに足りない分だけ0埋めするとコードが完成します。

ENJPFile Name
Urchin Underpassデカライン高架下Fld_Crank00_Vss
Saltspray Rigシオノメ油田Fld_Seaplant00_Vss
Museum d’Alfonsinoキンメダイ美術館Fld_Pivot00_Vss
Mahi-Mahi ResortマヒマヒリゾートFld_Hiagari00_Vss
Hammerhead Bridgeマサバ海峡大橋Fld_Kaisou00_Vss
Flounder Heightsヒラメが丘団地Fld_Jyoheki00_Vss
Ancho-V-GamesアンチョビットゲームズFld_Office01_Vss
Arowna MallアロワナモールFld_UpDown01_Vss
Blackbelly SkateparkBバスパークFld_SkatePark02_Vss
Camp Triggerfishモンガラキャンプ場Fld_Athletic01_Vss
Goby ArenaアジフライスタジアムFld_Court00_Vss
Humpback Pump TrackコンブトラックFld_Wave00_Vss
Inkblot Art Academy海女美術大学Fld_Upland00_Vss
Kelp Domeモズク農園Fld_Maze02_Vss
MakoMartザトウマーケットFld_Line00_Vss
Manta Mariaマンタマリア号Fld_Pillar00_Vss
Moray TowersタチウオパーキングFld_Tuzura00_Vss
Musselforge FitnessフジツボスポーツクラブFld_Unduck00_Vss
Piranha Pitショッツル鉱山Fld_Quarry02_Vss
Port Mackerelホッケふ頭Fld_Amida01_Vss
Shellendorf Instituteデボン海洋博物館Fld_Tunnel00_Vss
Snapper Canalエンガワ河川敷Fld_Kawa01_Vss
Starfish Mainstageガンガゼ野外音楽堂Fld_Venue02_Vss
Sturgeon Shipyardチョウザメ造船Fld_Nagasaki00_Vss
The ReefバッテラストリートFld_Ditch02_Vss
Wahoo WorldスメーシーワールドFld_Carousel00_Vss
Walleye Warehouseハコフグ倉庫Fld_Warehouse01_Vss
New Albacore HotelホテルニューオートロFld_Nakasu00_Vss
Skipper Pavilionムツゴ楼Fld_Mirror00_Vss

ステージIDの後ろの数字が02となっているものはスプラトゥーン2のアップデートで改修されたステージなので、数字を01にすると旧ステージが遊べます。

よって、デフォルトで対応しているのはモズク農園・ガンガゼ野外音楽堂・バッテラストリート・ショッツル鉱山・Bバスパークの5ステージになります。

初期ステージ01のものは00があるかもしれませんが、そういうファイルがない可能性が高いので多分フリーズします。

旧ステージ集

旧Bバスパーク
デカライン高架下
キンメダイ美術館
マヒマヒリゾート
マサバ海峡大橋
ヒラメが丘団地

シオノメ油田だけ何故かフリーズして遊べません。

// Saltspray Rig [AmazingChz]
@enabled
023B318E 466C645F536561506C616E7430305F567373000000

こっちが正しいコードじゃないのかなって思っているんですが、こっちをやってもフリーズします…

その他のステージ

ステージのファイル名を置換するだけなので、バトル専用のステージ以外も指定できます。

// Fld_Shakehouse00_Cop
// ShootingRange Replacements [AmazingChz]
@enabled
023B318E 466C645F5368616B65686F75736530305F436F7000

例えばこのようなコードは試し打ち場を海上集落シャケト場に置き換えてしまいます。

ファイル名が44バイト以内で記述できるならなんでもいいようですね。

プラベのときはバトルできるステージかどうかのチェックが入るのですが、試し打ちではそれがないのでプレイヤーの初期位置が定義されているステージであればなんでも遊べると思います。

何故フィールドテクスチャがないのか

それはmapデータはあるのにmodelデータがないから。

mapデータはあるからリスポーン地点やオブジェクトの位置は定義されているけれど、テクスチャやその他の塗れる場所とかは一切定義されていない。

なのでこんななんにもない空間に飛ばされてしまいます。

バトルには利用できるか

この方法がバトルに利用できたとしても役立つことはないのだが、手軽に旧ステージが遊べるというのは結構自分にはお得感があったりします。

役立つことがないというのは、未リリースのステージは内部データとして持っていないのでExeFSでいくら改変したとしても遊ぶことができないため。

マヒマヒリゾートなどはデータの一部があるだけで、完全なステージではないので遊ぶことができない。

というか、例えばLFSを利用して旧ステージのファイル名を変更してファイル置換を行えば旧ステージって遊べるんでしょうか?

シェアする