MaxConsoleで、匿名の開発者がSwitchのカートリッジダンプ(XCI)を取り扱えるWindows向けツール
XCI Explorer をリリースした事が伝えられていました。
XCI Explorer _20180531.png
https://twitter.com/kood_infothief/status/1001817430262366208
↑とりあえず3.0.0のSwitchでPegaSwitchを使用してBOTWをダンプし、XCI Explorerを使ってみました。
タイトルID、カートリッジサイズ、マスターキーの種類、SDKバージョン、ゲームのバージョン、プロダクトコード、
ROMサイズ、トリミング後のサイズ、ゲームタイトル、開発会社
といった情報を取得する事が可能で、PartitionsタブではXCIの中のhfs0やncaを抽出することが可能なようです。
XCIはカートリッジ(2GB, 4GB, 8GB, 16GB)そのままのダンプのため、データとして不要な部分が存在します。
その不要な部分を取り除くのがトリミング機能のようです。
Hackinformerの記事によると、Switchのゲームにはゲーム毎に固有のヘッダーがあり、そのヘッダーは証明書と呼ばれるらしいです。
XCI Explorerはこのヘッダー内容を閲覧したり削除する事が可能で、エクスポートとインポートにも対応しています。
Hackinformerの記事によるとヘッダーのエクスポート/インポートは3DSのGateway ROM patcherと同じような機能との事です。
ちなみに、海賊グループであるBBBが流しているXCIファイルはそのヘッダー部分が値"FF"で埋められているそうです。
私がPegaSwitchを使用してダンプしたXCIのヘッダー部分はFFで埋まってなかったので正しいヘッダーなのかもしれません。
XCIのダンプは現時点ではFW3.0.0以下向けのWebkit exploitとして知られるPegaSwitchと、PegaSwitch向けのdumpXCI.jsのみで可能です。
PegaSwitch自体は7日前に4.1.0がサポートされたようですが、スクリプトの多くで3.0.1にて修正されたsmhaxが利用されているようなので
4.1.0でdumpXCI.jsが使用可能かどうかは不明です。
3.0.0以下のSwitchを持っている方はXCIのダンプを試してみるのも一興だと思います。
SX PRO/SX OS を予約されている方は良いスタートダッシュが切れるかもしれませんし。
PegaSwitchの環境構築は以下を参考にすると良いと思います。
https://switch.hacks.guide/homebrew-launcher-(pegaswitch)
Windowsにでnpm installを実行時にVCBuild.exeに関するエラーが出た場合は以下を実行してからnpm installを実行すると良いかもしれません。
npm install --global windows-build-tools
dumpXCI.jsはSwitchにPegaSwitchの画面が表示された後で以下のような感じで実行してください。
evalfile usefulscripts/dumpXCI.js
dumpXCI.jsはコマンドプロンプトに何も出力しないため、ダンプの進行状況はpegaswitchのログファイル(pegaswitch.log)頼りとなります。
XCIは分割状態でSwitchに挿されたmicroSDにダンプされるため、最終的にはPCで統合する必要があります。
統合に関してはdumpXCI.jsにコメントが入っているのでそれを参考にしてください。
余談ですが、カートリッジをXCIではなくそのままダンプするHomebrewが存在します。
https://github.com/MCMrARM/switch-game-card-dumper
https://gbatemp.net/threads/is-there-a-tool-to-dump-your-own-games.504757/#post-8002689
使っても無意味だと思いますが、まあ紹介だけ。これでダンプしてもXCIとは構造が違うので、XCI Explorerでは読み込めません。