[Hack] 疑似ダウングレード用のファイルを作成する

Hack

ダウングレードの必要性

ニンテンドースイッチにおいてゲームをダウングレードすることのメリットはあまりありません。

というのも、最新のバージョンでないとオンライン対戦はできませんし、イカッチャなどのLanPlayでさえバージョンが異なるとできないためです。

パッチなども最新のバージョンで動くように日々改良されていっているので、更新が止まっているなどの特殊な場合を除いて最新のバージョンにアップデートして困ることはありません。

では、なぜダウングレードをするのでしょうか?

それは、スプラトゥーンにおいてバージョン3.1.0でないとStarlight(Starlionを含む)が動作しないためです。

疑似ダウングレードが求められるワケ

しかし、ダウングレード自体は該当するバージョンのNSPを持っていれば難しいことはありません。

GoldleafやTinfoilなどのNSPインストーラがあれば簡単にバージョンを下げることができます。

なぜ、ここで完全なダウングレードではなく、疑似ダウングレードが求められるのでしょうか?

それは、(ゲームにもよりますが)完全なダウングレードをしてしまうとセーブデータのバージョンの不整合から「最新のアップデータを適応してください」というエラーが表示されて低いバージョンのゲームを起動することができなくなってしまうためです。

例えば、スプラトゥーンの場合ですと今まで起動した中で最も新しいバージョンの情報がNANDに刻まれているために、本体を初期化しない限りダウングレードしたバージョンを起動させることができなくなります。

最新のバージョンで遊ぶのと、古いバージョンで改造を研究するのとを切り替えるために毎回本体を初期化していてはめんどくさいことこの上ないわけです。

疑似ダウングレード用のファイルの作成

ここではスプラトゥーンのダウングレードを前提に話を進めていきます。

スプラトゥーン以外でも手法としては全く同じなので同様の手順でダウングレードできます。

必要なもの

  1. 1.0.0のNSPまたはNCA
  2. ダウングレードしたいバージョンのNSPまたはNCA
  3. 該当するtitle.keys

絶対に持っていなければいけないのはこの三つです。

ゲームのカートリッジがあれば1.0.0は簡単に入手できるので、問題は3.1.0のNSPを入手できるかになります。リージョン(JP版、NA版、EU版)は問わないのでどれでも好きなバージョンで構いません。

title.keysに関しては用意したNSPがEU版であればEU版のタイトルキー、NA版であればNA版のタイトルキーが必要になります。

1.0.0がJP版、3.1.0がNA版といったハイブリットも可能ですが、この場合はJP版とNA版の二つのタイトルキーが必要になります。

タイトルキーに関してはLockpickで抜き出しても良いですが、ググるとインターネットの広大な海にぽつんと落ちていたりするのでそちらでも構いません。

最終的に以下のような形式のtitle.keysが得られたら大丈夫です。

01003BC0000A08000000000000000003 = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
01003C700009C8000000000000000003 = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0100F8F0000A28000000000000000003 = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

あとはこのtitle.keysを.switchというフォルダの中にコピーします。

HACGUIを一度でも使った事があれば既にtitle.keysが.switchフォルダ内に作られているのでこの作業は不要だったりします。

C:\Users\<USER NAME>\.switch

.switchフォルダはミュージックとかピクチャのフォルダがあるところと同じところに作成します。

追加で必要なもの

  1. 7zip
  2. LibHac(hacotoolnet)
  3. hactool

NSPを展開するのにhactoolを使うので、既にNCAとして持っている場合はhactoolは不要です。

LibHacはNCAからバイナリファイルを作るために使い、7zipはそのバイナリファイルをFAT32で扱えるように分割するために使います。

とりあえず必要な7zipをインストールした上で、NSPのファイル名を310.nspと100.nspに変えておきましょう(わかりやすくするためで、必須ではないです)

ZIPを解凍して実行ファイルを展開できたら、いよいよダウングレード用のファイルの作成開始です。

NSPをNCAに展開しよう

以下のコマンドでNSPからNCAを展開できます。

hactool -t pfs0 --pfs0dir=%~n1 %1

そこで、hactoolを使ってNSPからNCAを抽出するためのコマンドを載せておきますので、これを適当な名前のバッチファイルとして保存してください。

あとは、このバッチファイルにNSPをドラッグアンドドロップすればNCAとして抽出してくれます。

抽出したNCAのうち、最も大きなものをそれぞれ100.nca、310.ncaという風にリネームします。

3.1.0のmainを取り出す

コマンドプロンプトを開いて以下のコマンドを入力します。

hactool -t nca --exefsdir=exefs 310.nca

するとexefsというフォルダの中に3.1.0の実行ファイル(main)が展開されます。

NCAからバイナリ作成

hactoolnet 310.nca --basenca 100.nca --romfs romfs.bin

次に、上のコマンドを貼り付けたバッチファイルを作成します(面倒であれば直接コマンドから叩いても構いません)

先程NCAのリネームをしたのはここでダラダラと長いコマンドを打つのがわかりにくかったからです。

すると4GBくらいのバイナリファイルが完成します。

ここで問題となるのは4.7GBのファイルはFAT32のフォーマットにコピーできないというところです。

なのでこのromfs.binをFAT32で扱えるように分割しなきゃいけないわけです。

7zipで分割する

7zipを起動してromfs.binをひらきます。

romfs.binに辿り着いたら右クリックから「ファイル分割」を選択します。

ファイルサイズは「4294901760」を指定します。

ファイル分割をするとromfs.bin.001とromfs.bin.002というファイルができると思うのでこれらをそれぞれ00と01にリネームします。

リネームができたらromfs.binを削除した上でromfs.binという名前のフォルダを作成し、フォルダの中に00と01のファイルを移動させます。

すると、以下の六つのファイルができているはずです。

romfs.bin/00
romfs.bin/01
exefs/main
exefs/main.npdm
exefs/rtld
exefs/sdk

ハッシュチェック

次に、ファイルのハッシュチェックを行います。

ダウングレード用のファイルに少しでもミスがあれば起動しなくなるためです。用意したファイルが正しいものかどうか事前に調べておくことで「ファイルの作成ミス」なのか「ファイルの配置ミス」なのかがわかるというわけです。

今回用意した00と01のファイルとexefsフォルダ内の各ファイルを右クリックして「CRC SHA」から「SHA-256」を選択します。

romfs.bin/00
SHA256: 05D93198CC6E2A00FC44121B108545C5D055C21B3DB4C6079428A4DD5313C79B

romfs.bin/01
SHA256: 8BAC3E94995A71F26A7C9068EEA274B6E58706361023B68B8E9DC766D8554F6F

exefs/main
SHA256: 01D6121F0B4736337F1B8AB6CA51B3EEE74E29B27A88185026BB71E6599D5F72

exefs/main.npdm
SHA256: C714AA2B91D50E9F12DC2EEACA637D3F1D39B0EFAD0E76FC3C0A806132782F41

exefs/rtld
SHA256: 3522D56DDA056D4C7BA6F9508D6D1805D9A751B5A189A8700F9714CE06FB6C5A

exefs/sdk
SHA256: 1AD3BA3CB35303A7C713231F2E49346EF40C42DEB8A7526B6305A0B6358282FD

ここの値が異なっている場合はファイルが壊れているか、手順のどこかを間違っている可能性があります。

アーカイブ化する

このままだと単にromfs.binというフォルダの中に00と01というファイルが入っている状態になってしまうので、romfs.binというフォルダをファイルとして扱えるようにアーカイブ化します。

といってもやることは簡単で、romfs.binのフォルダを開いてから詳細設定を開いて「アーカイブする」にチェックを入れるだけです。

チェックを入れられたら、ダウングレード用のファイルの作成は完了です。

ファイルのコピー

ここまでできたらあとはダウングレード用のファイルをatmosphere/contents/titleidにコピーするだけです。

titleidにはダウングレードしたいスプラトゥーンのIDを入力しましょう。

この手法の便利なところは先ほど作成したダウングレード用のファイルはどのリージョンに対しても使えるということです。

つまり、JP版の3.1.0のNSPから作ったファイルでNA版やEU版をダウングレードすることもできます。

しかも、製品版だけでなく体験版でさえもダウングレード可能なので、2020年版の体験版(中身は5.2.0相当)を3.1.0にすることもできます。

今回の手順で一番詰まると思うのはromfs.binが正しくアーカイブとして認識されないことだと思うのですが、Goldleafでひらいたときにromfs.binがフォルダではなくファイルとして認識されていればアーカイブ化は成功しています。

Starlightの導入

Dockerを用いるものすごく簡単な手順があるのでこれを利用してください。

記事は以上。

コメント

  1. 匿名 より:

    こんにちは!疑似アップグレートをしてSplatoon2を5.3.1から3.1.0にして今はstarlionを使っています。怖くて試せていないのですが3.1.0のexefsとromfs.binを消せばまた5.3.1に戻るのでしょうか?

    • えむいー より:

      はい。MODと同じようにCFWのLFS機能を利用してダウングレードしたように見せかけているだけなのでromfs.binとexefsを削除(またはリネームでも可)すれば5.3.1に戻すことができます。

      バージョンの切り替えがめんどくさいのであれば、2020年度版の体験版などで上書きしてしまうのも手です(体験版はもうアップデートが来ないので)

  2. 著作権侵害犯 より:

    こんにちは!
    regionなんでもいいのでよければ3.1.0のアップデータ.nspをいただけませんか?

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