Contents
NXDumpTool
ニンテンドースイッチのみでゲームカートリッジおよびアップデータをNSPとして抽出したり、ExeFSやRomFSを展開できる便利すぎるツール。
Kosmosを使ってCFW環境を構築したのであれば最初から同梱されているので、特別何かをインストールしたりする必要はありません。
暗号化を解除する必要があるのでNXDumpToolを使う前にlockpickでキーを取得しておく必要があります。やり方についてはこの記事を参考にしてください。
NSPのダンプ
まだ自分でも全部は把握できていないのですが、おおよそ以下のようなフローチャートになっているようです。
今回はnosigpatchを使っていない状態でNSPをインストールして正しく起動するための方法について解説します。
Ticket
Ticketはゲームカードごとに固有のものであり、ゲームのインストール時に本体に保存される証明書です。
逆に言えば、同じTicketをもつゲームが同時に起動しているということは、誰かがゲームカードをコピーして海賊行為を働いているということです。これが任天堂に検知されるとソフトBANされます。
The NSP has a ticket to be importedと書かれていたらTicketが同梱されています。ちなみにTitle keyとは関係ないよ。
nosigpatch
TicketがないNSPは本来はインストールすることができませんが、それを回避するためのKosmos用のパッチ(sigpatch)があります。
そのやり方についてはこの記事で詳しく解説しているのでどうぞ。
nosigpatchがあればticketがないNSPもインストールできます。
Common key
後述するRemove console specific dataを有効にした状態を指します。
NXDumpToolの設定
Split output dump (FAT32 support)
SDカードがFAT32でフォーマットされており、4GB以上のアップデータやNSPを抽出するときはYesにしましょう。exFATの場合はNoで問題ありません。
Verify dump using No-Intro database
ファイル整合性をチェックしてくれますが、インターネット環境が必要になります。Noでも問題ありません。
Remove console specific data
Ticketにはpersonalized ticketとcommon ticketの二種類があるのですが、どうもeShopからダウンロードしたものにはpersonalized ticketが使われているようです。
どちらのTicketも有効なのでnosigpatchをあてていなくてもインストール可能なNSPになるのですが、personalized ticketは初回起動時にTicketの有効性をチェックするためにダンプした本体以外(EMUNANDも含む)にインストールして起動しようとすると、インターネット接続(ニンテンドーネットワーク)が要求されます。
CFW環境ではインターネット接続およびニンテンドーネットワーク接続はBANの原因となりかねないので、このチェックは回避したいわけです。
このRemove console specific dataのオプションはpersonalized ticketをcommon ticketに切り替えることでそのチェックをバイパスできます。
なので、よっぽど特別な場合を除いて常にYesにしておいて良いと思います。
というか、これがNoだとeShopからダウンロードしてNSP化するとその抽出した本体でしか起動できなくなります。
ちなみにゲームカートリッジからダンプしたNSPの場合は既にcommon ticketが使われていますが、ここをYesにしておいても問題ないそうです。
Change NPDM RSA key/sig in Program NCA
このオプションを無効化するとどのようなCFWでもNSPが正しく動作するためにACIDパッチが追加で必要になるとのこと。
ということは常にYesで良さそうです。
各設定でインストールしてみた
Specific data | ticket-less | program NCA |
Yes | No | No |
Yes | Yes | No |
Yes | No | Yes |
Yes | Yes | Yes |
No | – | Yes |
さすがに全通り試すのはめんどくさかったので、これだけしかやってませんが十分でしょう。
検証環境
- FW 9.2.0 EMUMMC
- Kosmos 15.6
Specific data | ticket-less | program NCA | Result |
Yes | No | No | 2155-8007 |
Yes | Yes | No | 2002-4518 |
Yes | No | Yes | 起動 |
Yes | Yes | Yes | 2002-4518 |
No | – | Yes | 2155-8007 |
というわけで、nosigpatchなしで起動しようと思った場合には三番目の設定にしなければいけないことがわかります。
まあ二番目と四番目はTicket-lessだからそもそもインストールできないんだけれども。
検証環境(nosigpatch)
- FW 9.2.0 EMUMMC
- Kosmos 15.6
- nosigpatch
Specific data | ticket-less | program NCA | Result |
Yes | No | No | 起動 |
Yes | Yes | No | 起動 |
Yes | No | Yes | 起動 |
Yes | Yes | Yes | 起動 |
No | – | Yes | 2155-8007 |
nosigpatchを入れてみたところSpecific dataの項目をYesにしてcommon keyに切り替えてさえいればちゃんと起動することがわかりました。
まとめ
というわけで、nosigpatchを使わない前提であればNXDumpToolは以下の設定にしておくのが無難そうであることがわかりました。
RomFSのダンプ
NXDumpToolはRomFSを展開することもできます。
つまり、hactoolが不要になるというわけですね。
注意点としては、UPDのRomFSを展開するためにはBASEとUPDが必要になるということです。
BASEをカートリッジとして利用している場合は上手くUPDがダンプできない場合もあるので注意しましょう。
まずはNXDumpToolを起動して「Dump Installed SD card / eMMC content」を選択します。
するとゲーム一覧を見ることができます。
今回はスプラトゥーン2の体験版のBASEのRomFSをダンプしてみましょう。
ここで「RomFS options」を選択します。
ここで「RomFS section data dump」を選択すると全てのデータをダンプします。全データのダンプなのでそれなりに時間がかかります。
特定のファイルだけダンプしたい場合はその下の「Browse RomFS section」を選択します。
すると以下のような感じでRomFSのデータが表示されます。
今回は試しにParamフォルダの中身をダンプしてみましょう。
ここでファイルごとにAボタンを押せば「そのファイルをダンプ」になり、Yボタンを押せば「このフォルダ内の全てのファイルをダンプ」になります。
Paramフォルダ自体は20MBくらいしかないのであっという間に終わりますが、フォルダの中身が増えると当然それに比例して遅くなるので気をつけてください(例えばModelフォルダとかは重いです)
アップデータのダンプ
さて、スプラトゥーン2の体験版はアップデータがないBASEだったわけですがアップデータがあるソフトの場合はBASEまたはUPDを選択してダンプすることができます。
さて、スプラトゥーン2ですが情報のところをよくみると「Version: 0 (0.0.0.0)」や「Installed update(s): v1441792 (0.1.6.0)」と書かれているのがわかります。
これは「BASE(v0)とUPD(v1441792)がインストールされているよ」という意味になります。
試しにさっきと同じように「Browse RomFS section」を押してみましょう。
すると上の方に青い文字で「Base application to browse Splatoon 2v v0 (0.0.0.0)」と表示されているのがわかります。
つまり、今ダンプしようとしているのはBASEだということです。
これを切り替えるためには画面を一つ戻って「Use update/DLC」でダンプしたいバージョンを選択します。
すると今度は「Update to browse: Splatoon 2 | 01003BC0000A0b00 v 1441792 (0.16.0)」と表示されており、アップデータをダンプしようとしていることがわかります。
自身を天才と信じて疑わないマッドサイエンティスト。二つ上の姉は大英図書館特殊工作部勤務、額の十字架の疵は彼女につけられた。
コメント
すみません。こちらはRomFSのダンプの設定画面でした。
NSPとしてのダンプもアップデータを選択できませんでしたか?
また、NXDumpToolをアップデートすると間違いなくアップデータをダンプできるはずですので、アップデートしてみてください。
えむいー様、ツールは最新のものを使っていると思います。一番上の、RomFS section date dump を選択すると、NSP形式のデータも同時にNSPフォルダに保存されています。アップデートに必要なものは、これのことでしょうか。
動画にしてきました。
これでアップデータが正しく取得できるはずです。
えむいー様、お忙しい中、解説動画を作成いただきありがとうございます。
BGMが哀愁漂いますね。
DUMP installed SD card /eMMC contentを選択すると、この動画では画面左にゲームのアイコン(?)が表示されていますが、私の環境ではフォーマットの状態では、DUMP installed SD card /eMMC content を選択した後、Yボタンで画面切り替えをして、ゲーム選択は文字だけの表記になります。
これは元のデータがインストール版か、カートリッジからバックアップしたかの違いでしょうか?nxdumptoolは最新のものと思うのですが。(結果的には対象のゲームを選択して以降は、動画の0:20~と同じ画面になるので解説動画どおりの作業はできますが、やはり解説動画のゲームアイコン表記の方が華やかで作業はやり易いです。私が画面を切り替える操作を飛ばしているのでしょうか?)
それと、同じ質問(確認)すみません、アップデート反映に必要なものはこの動画で紹介されているデータであり、このページに最初から記載してあるアップデータのダンプ操作にあるRomFS section date dump からダンプしたデータや、romfsに保存されたている大容量のデータは消してしまっても特に問題はありませんでしょうか?
あと、匿名でさり気なく説明してくださっていた方、気が付かずお礼が遅れてすみません。
ありがとうございました。
はい、そちらは消してしまって構いません。
コメント失礼します。
インストールアップデータ NSP をダンプ、バックアップしようとしていますが、
『loadNsoBinaryData: unable to allocate 120993544 bytes for full decompressed NSO in program NCA!』
と表示されてしまい、取れません。
いろいろ環境を変えてトライするも解決に至らずです。
対策方法をご教授願いたいです。
よろしくお願いいたします。
同様のissueを調べてみたところ、2019年に一度報告されている問題のようです。
NXDumpToolが最新のものかどうかと、AppletモードではなくOverrideモードでの起動が推奨されています。
えむいー様
ありがとうございます。
v1.1.12 ですので最新のものを使っていると思います。
hbmで起動していますので、Appletモードなのかな?と思うのですが、
それを、Overrideモード(hbmで起動しない?)、アプリとして起動するのはどの様にするのでしょうか?
初心者のような質問ですみません。
詳しくはないのですが、Appletモードか、Overrideモードかというと RAM の問題で、400MB での起動がされているか、3GB の環境で起動されているのかということかな?とは想定できたのですが、だったらhbmで起動しないのはどうするの?という点で、行き詰りました。もう少しお教え頂ければありがたいです。
よろしくお願いいたします。
初期設定であればR長押しのままゲームを起動すればOverrideモードになったかと思います。
※設定はDeepSea Toolboxなどから見れます