[完全版] NXDumpToolの使い方

CFW

NXDumpTool

ニンテンドースイッチのみでゲームカートリッジおよびアップデータをNSPとして抽出したり、ExeFSやRomFSを展開できる便利すぎるツール。

Kosmosを使ってCFW環境を構築したのであれば最初から同梱されているので、特別何かをインストールしたりする必要はありません。

暗号化を解除する必要があるのでNXDumpToolを使う前にlockpickでキーを取得しておく必要があります。やり方についてはこの記事を参考にしてください。

NSPのダンプ

まだ自分でも全部は把握できていないのですが、おおよそ以下のようなフローチャートになっているようです。

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の設定

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 dataticket-lessprogram NCA
YesNoNo
YesYesNo
YesNoYes
YesYesYes
NoYes
試してみた設定一覧

さすがに全通り試すのはめんどくさかったので、これだけしかやってませんが十分でしょう。

検証環境

  • FW 9.2.0 EMUMMC
  • Kosmos 15.6
Specific dataticket-lessprogram NCAResult
YesNoNo2155-8007
YesYesNo2002-4518
YesNoYes起動
YesYesYes2002-4518
NoYes2155-8007
試してみた設定一覧

というわけで、nosigpatchなしで起動しようと思った場合には三番目の設定にしなければいけないことがわかります。

まあ二番目と四番目はTicket-lessだからそもそもインストールできないんだけれども。

検証環境(nosigpatch)

  • FW 9.2.0 EMUMMC
  • Kosmos 15.6
  • nosigpatch
Specific dataticket-lessprogram NCAResult
YesNoNo起動
YesYesNo起動
YesNoYes起動
YesYesYes起動
NoYes2155-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)」と表示されており、アップデータをダンプしようとしていることがわかります。

コメント

  1. 匿名 より:

    エラーコード2145-0001がでたのですが原因わかりますでしょうか

  2. 匿名 より:

    DeepSea v1.8.1をcfwとして導入
    lockpickとnxdumptoolでゲームソフトから吸い出した nspデータを
    いろいろなインストールソフトで試しているが、ことごとくエラーが出て使えない現状
    ソフトは
    ・ファイアーエンブレム 風花
    ・ルーンファクトリー4スペシャル

    Quarkソフトを試しているが、サイトで紹介されている手順でやっても
    switchをusbとして認識せずに起動してもすぐに閉じてしまう。

    なにか素人でも扱いやすいソフトがありましたら紹介してもらえると助かります。

    ちなみにダンプ時に

    Verify dump using No-Intro database
    Remove console specific data

    のふたつの選択肢はありませんでした。

    • えむいー より:

      インストール時にどのようなエラーがでるか教えていただきたいです。

      自分も手元でダンプしてみたのですが、インストール出来ないものがありひょっとしたら同じ原因かもしれません。

  3. すげる より:

    エラーコード2002-4518が出てきてフォーマットしたほうがいいとかsig-patchを入れろとか書いてあるんですけどやっぱフォーマットしないとダメなんでしょうか…

    • えむいー より:

      フォーマットは不要ですのでsigpatchを使うかTicketを同梱したNSPを利用してください。

  4. 匿名 より:

    readFileFromSecureHfs0PartitionByName: unable to find “/31e1…nca” in Secure HFS0 partition!
    readNcaDataByContentId: failed to read 3072 bytes block at offset…
    dumpNintendoSubmissionPackage: failed to read header from NCA “3e1…”

    と出てきてNSPがダンプできないのですが何か根本的に間違っているでしょうか?

    • えむいー より:

      LockpickRCMでキーを取得してみてください。

    • 匿名 より:

      私の場合も同様のエラーが発生しています。
      lockpick rcmを使いましたが改善しませんでした。
      SDカードのフォーマットはexFATです。

  5. エミュが好き より:

    えむいー様はじめまして。
    yuzuやswich未対策機などを検索してこちらに辿り着きました。
    大変に参考にさせていただいております。
    私はswichエミュレーターyuzuで、アップデート後のswichソフトを起動させることを最終目標にしているものです。
    もしよろしければご教示いただきたいのですが、現在、swichを2台用意し、一台の方でnxdumptoolでソフトをバックアップし(書いてあるのを参考にバックアップをすると拡張子が.xciとなっています)、もう一台の方でソフトの更新データをSDカードにためています。
    起動まで先は長そうなのですが、今時点でこの作業に誤りはないでしょうか?(同じswich本体で作業をしないといけない。といった制約等)
    それと、もし可能でしたらこの先の作業の参考になるページをご紹介いただけますと大変にありがたいです。

  6. 匿名 より:

    ご返信ありがとうごさいます。
    どのような内容か確認してみます。

  7. ゆず より:

    えむいー様、先日はURLありがとうございました。
    最近はYUZUが進化しているのか、多くの途中作業なしにyouzが起動できました。
    時に、
    上のNXdumptoolの使い方を見ると、xci、nsp、といった違う拡張子でバックアップできるようになっているようですが、これはどちらでバックアップをとった方が使い勝手が良いものなのでしょうか?
    それと、アップデートのデータをバックアップ(ゲームのバージョンアップをエミュレータで反映させたい。)したいのですが、どのデータをどの画面からバックアップするのご教示くださいませんでしょうか。
    それっぽいものが色んな画面から何種類もバックアップできるようになっていてどれが必要なものなのかイマイチよくわからないのです。
    色々と聞いてすみません。

    • えむいー より:

      yuzuの公式サイトのQuickStartを見るとNANDからファームウェアやキーを取得する必要があると書いてあるのですが、必要でしたか?

      自分も久しぶりにと試してみたらインストーラからインストールするだけでゲームが起動できたので。

      アップデータも試してみてインストールして反映させられたので記事にしようと思います。

  8. yuzuが動きました。 より:

    えむいー様、何度もご回答いただきありがとうございます。
    yuzuなのですが、keysというフォルダを作り、その中にprod.keysを入れるだけで起動するようになりました。
    飛ばした他の手順も踏んでいけば起動するゲームが増えるかもしれませんがまだ試していません。

    アップデートデータ反映の件、何度もすみません、

    私が今行っている作業なのですが、

    アップデートしたいカートリッジを入れ、ゲームをアップデートし、そのままの状態で、

    アルバムから、nxdumptoolを選択、

    Dump Installd SD card / eMMC contentを選択、

    Yボタンで画面切り替え、

    ○○○○ゲーム名 固有番号(固有番号)(UPdate)

    と表記されるので、アップデートしたいタイトルを選択、

    Nintendo Submissyon Packkage(NPS)dump prosess を選択、

    Start NSP dump prosess を選択、

    Aボタンでダンプ開始、

    終了後にNSPフォルダにアップデートデータ(と思われるデータ)が保存されている。

    という手順を踏んでいます。

    このやり方は正しいでしょうか?

    ネットでyuzuの使い方を検索し、アップデートを反映させる方法を探し出して所定の操作をしてyuzuからゲームを起動させても、そもそもタイトル画面にバージョンの表記が出ないのでイマイチできているのか不安なのです。

    yuzuを起動させた直後の画面ではゲームのリストの2つ横の列にuped ○.○.○と表記されているので上手くいってるのかな。。。と思わないでもないのですが、如何でしょうか?

    • えむいー より:

      せっかくでしたので、yuzuでバージョンを切り替えている動画を撮ってきました。

      https://www.youtube.com/watch?v=GRCwBlPQQhw

      スプラトゥーンは初期バージョンだと追加されていないコンテンツが起動直後に確認できるので、わかりやすいと思います。

      NXDumpToolの使い方はここの記事通りなのですが、せっかくなのでこちらも動画を撮ってこようと思いますのでしばらくお待ち下さい。

  9. yuzuが動いた。 より:

    えむいー様、早速のご対応ありがとうございます。世のyuzu好き(ゆずずき)の方々もお喜びのことと存じます。
    動画は0.5倍速でじっくり観察させていただきました。

    私の持っているソフトは、スプラトゥーンのような目に見えて違いがわかるソフトがまだyuzu未対応のため検証ができていません。

    ちなみにですが、上でえむいー様が解説されているやり方と、私が『こうやっています。』とお伝えしているやり方では何か違いがありますでしょうか?

    それと、動画内でyuzuにスプラトゥーンのアップデートを反映させる際、フォルダ内にたくさんのデータが見受けられたのですが、あれらは全てスプラトゥーンのバージョンデータなのでしょうか?

    • えむいー より:

      はい、全てダンプしたスプラトゥーンのNSPになります。

      NXDumpToolのバージョンが低いとUse update/DLCという項目を変更しなければBASEしかダンプできないのですが、確認されたでしょうか?

  10. 匿名 より:

    えむいー様、ご返信ありがとうございます。この画面から行けるのもやっております。
    この画面からのって結構データが大きいくなるのですがそうゆうものでしょうか?(元のデータと変わらないくらい)

    • えむいー より:

      アップデータのサイズはアップデートの内容によるのでなんとも言えません。

      設定でアップデータのダンプにする設定になっていますか?NXDumpToolをアップデートするなりして再確認してみてください。

    • 匿名 より:

      えむいー様、Use update/DLCから新しいバージョンに切り替えRomFS section date dump を選択していたのですが(romfsというフォルダが作成されて、その中に大容量のデータが入っている)状態なのですが、これは間違えたやり方でしたでしょうか?
      romfsに入っているデータは使い道はもうありませんでしょうか?

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