[Hack] ステージ移植指南

Hack

ステージ移植

Starlightが起動するのは3.1.0までなのですが、朽ちた箱舟ポラリスが実装されたのは4.2.0なのでStarlightでは一切ポラリスの検証ができないというデメリットが有りました。

LFSの仕組みでは既存のファイルを上書きすることしかできないので(追加することはできない)、サーモンランのなにかのステージをポラリスに置換することで3.1.0でポラリスをプレイするための方法についてまとめました。

移植に必要なもの

スプラ1からデータをもってくるわけではないので、スプラ2のアップデータと3.1.0が動作する環境があればOKです。

初期状態

未編集状態

なにも変わっていないので、いつもどおりのサーモンランが始まります。

Env

何を定義しているのかはよくわからんのですが、一応コピーしておきます。

Shakeride.szs (from 5.2.0)
-> extract by sarc_tool
Shakeride.genvb
-> rename
Shakelift.genvb
-> pack and compress with yaz0 by sarc_tool
Shakelift.szs
Envファイルだけ読み込んだ状態

特に何かが変わった気はしませんね。

Model

ステージのテクスチャなどが含まれる最も根幹をなすファイルです。

ポラリスを読み込ませるのに必要なモデルファイルは以下の三つです。

ファイル名ファイル
Fld_Shakeride00.Nin_NX_NVN.szsBFRES, KCL
Fld_Shakeride00_Jmp.Nin_NX_NVN.szsKCL
Lft_ShakerideBoard.Nin_NX_NVN.szsBFRES

Fld_Shakeride00.Nin_NX_NVN.szs

ポラリスのデータは3.1.0には存在しないので5.2.0からデータをとってきます。

Fld_Shakeride00.Nin_NX_NVN.szs (from 5.2.0)
-> rename
Fld_Shakelift00.Nin_NX_NVN.szs

こちらに関してはリネームだけで移植できました。

モデルデータ読み込み

モデルデータだけ置き換えるとオブジェクトはトキシラズのものが使われるので潮位も変ですし、オオモノシャケの出現位置やスポーン位置もおかしいです。

Fld_Shakeride00_Jmp.Nin_NX_NVN.szs

Jmpファイルは内部にKCLをもつデータファイルです。

これがやっかいで、sarc_toolでもSwitchToolboxで圧縮してもエラーが発生してしまいます。

最終的に、Uwizard(コレ自体はWiiU向けのツールなのですが、流用できた)を使って対応することができました。

なので手順としては、

  • Fld_Shakeride00_Jmp.Nin_NX_NVN.szsを展開
    • 展開自体はsarc_toolでもUwizardでも可
  • Fld_Shakeride00.kclをFld_Shakelift00.kclに変更
  • フォルダ名をFld_Shakelift00_Jmp.Nin_NX_NVN
  • Fld_Shakeride00_Jmp.Nin_NX_NVNをUwizardでSZS形式に圧縮
    • Pack and Compress SARC .SZSを選択すればよい

のようになります。ここで四時間くらい詰まったので、他の方の参考になればいいなと思います。

ファイル名はちゃんと変更しよう
KCLで塗り判定と足場判定は正しくできた

ただ、最後のBoardファイルを読み込んでいないので一部のモデルが欠けている状態です。

Lft_ShakerideBoard.Nin_NX_NVN.szs

Boardファイルは一部のオブジェクトを表示するための補完ファイルです。

Lft_ShakerideBoard.Nin_NX_NVN.szs (from 5.2.0)
-> open and edit packed files by SwitchToolbox
Lft_ShakeliftBoard.Nin_NX_NVN.szs
SwitchToolboxでの編集

これもリネームだけではクラッシュして動かないので、内部ファイルを編集します。

SwitchToolboxで編集するか、sarc_toolで展開してから直接BFRESファイル内のオブジェクト名変更と、KCLのリネームをします。

最後に再びSZSで圧縮すれば読み込みます。

Boardファイル読み込み完了!

FieldEnvSet

ここでは空の明るさなどが設定されています。

ポラリスはトキシラズと比べて空が暗いのですが、ポラリス用のデータをファイル名を変更することで読み込むことができます。

Fld_Shakeride00_Cop_Cloudy_Sunset.bprm
Fld_Shakeride00_Cop_Foggy_Sunset.bprm
Fld_Shakeride00_Cop_Sunny_Sunset.bprm
-> rename
Fld_Shakelift00_Cop_Cloudy_Sunset.bprm
Fld_Shakelift00_Cop_Foggy_Sunset.bprm
Fld_Shakelift00_Cop_Sunny_Sunset.bprm

FieldEnvSetのデータはPack/Param.packを展開することで取得できます。

FieldEnvSetで空を暗くしてみた

Map

Mapファイルはオブジェクトファイルをモデルデータに配置する座標などを指定するファイルです。

Fld_Shakeride00_Cop.szs
-> sarc_tool (extract)
Fld_Shakeride00_Cop.byaml
-> rename
Fld_Shakelift00_Cop.byaml
-> decrypt (by theforthdimension)
Fld_Shakelift00_Cop.byaml.xml
-> replace "Shakeride" to "Shakelift" (2 places)
Fld_Shakelift00_Cop.byaml.xml
-> decrypt  (by theforthdimension)
Fld_Shakelift00_Cop.szs

Mapファイルで読み込むモデルデータを指定してあるので、本来のポラリスのマップデータ(ポラリスのオブジェクト位置が正しく載っている)を編集してトキシラズいぶし工房のデータを読み込むように変更します。

これはRed氏のMapMergeと全く同じ仕組みです。

Mapファイルを読み込んでオブジェクト位置修正

ただし、この動画の場合ではまだモデルデータを全て移植できていないので足場がなく、モデルの上に立つことができません。

Layout

// from 3.1.0
StageIcon_00.Nin_NX_NVN.szs
StageIcon_01.Nin_NX_NVN.szs

ステージを選択する画面でトキシラズいぶし工房の画像を朽ちた箱舟ポラリスに上書きします。

SwitchToolboxでポラリスの画像をとってきて置換する必要があります。

まあこれはめんどくさいのでやらなくてもいいかも

Layoutファイルでアイコン変更

ちなみにステージ名を変更するにはCommonMsgファイルを編集すればOK!

Camera

Coop_Result_Fld_Shakeride00.camera.bprm
-> rename
Coop_Result_Fld_Shakelift00.camera.bprm

これはファイル名を編集するだけで大丈夫です。

ただ、変更したところで何が変わっているのかは微妙なところですね。

ファイル構成

結局どんなファイル構成にすればいいのかというと以下のとおりです。

romfs/Env/Shakelift.szs
romfs/Layout/StageIcon_00.Nin_NX_NVN.szs
romfs/Layout/StageIcon_01.Nin_NX_NVN.szs
romfs/Map/Fld_Shakelift00_Cop.szs
romfs/Model/Fld_Shakelift00.Nin_NX_NVN.sz
romfs/Model/Fld_Shakelift00_Jmp.Nin_NX_NVN.szs
romfs/Model/Lft_ShakeliftBoard.Nin_NX_NVN.szs
romfs/Pack/Map.pack
romfs/Pack/Param.pack
romfs/Param/Camera/Coop_Result_Fld_Shakelift00.camera.bprm
romfs/Param/FieldEnvSet/Fld_Shakelift00_Cop_Cloudy_Sunset.bprm
romfs/Param/FieldEnvSet/Fld_Shakelift00_Cop_Foggy_Sunset.bprm
romfs/Param/FieldEnvSet/Fld_Shakelift00_Cop_Sunny_Sunset.bprm
romfs/System/RegionLangMask.txt

PackファイルはMapとParamファイルを読み込むために必要な0Byteのダミーデータです。

時間はかかりましたが、今まで全く手を付けられていなかったモデルデータの弄り方について少し理解が進んだのは良いことだと思います。

次はモデルデータを自作してカスタムステージをつくることにチャレンジしてみたいですね。

記事は以上。

コメント

  1. 匿名 より:

    1つ気になった所があるのですが、ライドレールはどうなるのですか?
    どうしても気になったので。

    • えむいー より:

      現状、自動でライドレールを起動することはできず、インクをかけることで起動することができます。
      ただ、フェスステージと同じようにしばらく放置していると止まってしまいます。

    • 匿名 より:

      そうなんですね。教えてくださりありがとうございます。
      ポラリスは広いので、1回止まってしまうと面倒ですね。

  2. 匿名 より:

    ライドレールの設定ファイルは2種類あるのかもしれませんね
    制限時間がある従来のライドレールとポラリスにあるような開始時点で有効化されるライドレール

    • 匿名 より:

      ポラリスのライドレールもナワバリバトルなどでプレイすると通常のライドレールと同じ仕様になるので、サーモンラン開始時にライドレールを起動しっぱなしにするようなロジックが働いているのかもしれません。

      残念ながらポラリスが実装されたのが3.1.0以降なので解析してその箇所を特定するのが難しいですが…

    • 匿名 より:

      返信ありがとうございます。
      ドスコイの大砲も、ナワバリバトルと
      サーモンラン専用のパラメータがあるので、そんな感じなんですかね。
      ヒーローモードやオクトエキスパンションでは、常に発動しているのでそこから持ってきたて、追加したのかもしれませんね。

    • えむいー より:

      何かしら起動するためのロジックがあると思うので突き止めたいと思う一方、これだけのためにリソースを割くのももったいないなあと葛藤しています(笑)

タイトルとURLをコピーしました