[SWITCH] XCIをNSPに変換する xci2nsp がリリース - 一時的なファイルを作成しないため4NXCIより高速

2018/10/05 02:59 Switch 2
GBAtempで、Team 2168がSwitchのカートリッジのダンプであるXCIをインストール可能な形式である
NSPに変換する事が出来る xci2nsp をリリースした事が伝えられていました。
ソースコードはGitLabで公開されており、Windows向けビルドは以下からダウンロード可能です。
https://gitlab.com/roothorick/dedbae/tags


GitLabで公開されているのはSwitchのファイルの復号/改変/再暗号化等を行うライブラリ/ツールであるdedbaeという物で、
dedbaeに含まれるツールの1つがxci2npsのようです。Team 2168はSwitch上でXCIを(NSPに変換せず)直接インストールする
事が可能なZeroTwoXCIをリリースした、つい先月登場したチームです。

さて、XCIをNSPに変換すると聞いて思い出されるのは4NXCIです。(4NXCIは実際には変換というよりXCIの展開とNSPの作成)
今回リリースされたxci2nspは、一言で言えば4NXCIよりも高速です。xci2nspはまさにXCI to NSPを実現しています。
4NXCIは一度必要なファイルを抽出し、そこに変更を加えNSPとしてパックするという処理を行っていました。
それに対しxci2nspはゲームの実行ファイルやアセットを読み込んで直接NSPとして出力するといった処理を行っているそうです。

xci2nspを使用するには、XCIの他に、Switchのファイルを復号/暗号化するための鍵が必要になります。
XCIは以下のHomebrewを利用してカートリッジからダンプしてください。
https://github.com/DarkMatterCore/gcdumptool/releases (v1.0.5でエラーが出る場合は "これ" を試してください)
鍵は以下のHomebrewを利用して鍵を集めたファイルであるprod.keysを用意してください。
https://github.com/shchmue/kezplez-nx (使用方法)

prod.keysは、"$HOME/.switch/" に (Windowsの場合は "C:Users/(ユーザー名)/.switch/" に) 配置してください。
Windowsの場合は普通に.switchフォルダを作成しようとするとドットが最初にあるためにエラーが発生するはずです。
ドットが最初にあるフォルダを作成する場合は、ドットを最後にも入れて作成してみてください。(.switch.)
そうする事で.switchフォルダが作成されるはずです。(無理ならググってください)
prod.keysを上記の場所に配置する理由は、hactoolが参照するパスを標準化したいため、という事のようです。
これはとても良い動きだと思います。

使用方法は、コマンドライン上で引数としてXCIのパスを指定するか、単にexeにXCIをドラッグ&ドロップするだけです。
前者の方法を取った場合、NSPはxci2nspのディレクトリに作成されるようです。
後者の方法を取った場合、NSPはXCIと同じディレクトリに作成されるようです。

作成されるNSPのファイル名の形は以下のようになります。
・"ゲームタイトル [タイトルID][バージョン].nsp" … (ゲームデータ本体。バージョン部分は基本的に0)
・"ゲームタイトル [タイトルID][バージョン][UPD].nsp" … (ゲームのアプデ。)
後者はカートリッジにそのゲームのアプデが含まれている場合のみ作成されます。
ファイル名のゲームタイトル部分は、XCIに含まれるゲームタイトル情報に依存します。
多言語に対応しているカートリッジのXCIを使用した場合、基本的には米/英向けのタイトル情報が参照されます。
Switchの言語情報は基本「American English/British English/Japanese/French/German/............/Chinese」の順で
並んでおり、xci2nspは一番最初に検出された言語のタイトル情報をファイル名に使用しているためです。
で、日本のゲームでタイトル情報が英語に対応していない場合、アルファベットに変換されそれがファイル名になります。
ひらがなカタカナは問題ありませんが、CDNSPと同様にその変換処理が漢字には向いていないようです。
私の手持ちのゲームで言うと、「嘘つき姫と盲目王子」がそうでした。xci2nspを使用してNSPに変換すると
「Xu tukiJi toMang Mu Wang Zi [0100574009f9e000][0].nsp」というファイル名になってしまいます。



作成したNSPを動作させる場合はsig patchもといFSパッチが適用されるCFWを使用する必要があります。
ReiNX及びSX OSはFSパッチがデフォルトで適用されます。hekateを利用して起動するAtmosphereやRajNXの場合、
以下の記述が含まれた項目からFWを起動しなければいけません。これはsig patchを適用するための記述です。
kip1patch=nosigchk
SDFilesSwitchやRajNXはこの記述が全部の項目に入っているはずなので、自分で書き足す必要は無いと思います。

Tinfoilを利用してインストールした場合、アプデのNSPでない限りは最初に以下のエラーが出るはずです。
"Ticket installation failed!"
このエラーは気にしなくても構いません。最新版の4NXCIもそうですが、NSPにtikが含まれないためにこのエラーが発生します。
tikはtitlekeyを用いて復号しなければいけないNCAが含まれる場合のみ必要な存在なため、XCIからの変換の場合は不要です。



この記事執筆時点(xci2nsp v1.0.0-1)で以下の問題が判明しているようです。
・ファイルのパーミッション関連の処理が最適化されていないためエラーが発生する可能性有り
・最初にストレージの空き容量が確認されないため、空き容量が無いと処理の途中で "No space left on device" とエラーが発生する
・更新ファイルから英語に対応した場合、ファイル名のゲームタイトル部分が本体側のNSPとは異なってしまう





▼コメント


オイスター 2019/11/30 20:27
突然のコメント失礼いたします。
上記説明の通り、フォルダを配置し、prod.keysを配置
xciファイルをドロップしたところ、コマンドプロンプトは表示した瞬間
「動作を停止しました」
と表示されます。
管理人 kood 2019/12/01 01:01
>>オイスターさん
現在prod.keysはLockpick_RCMで作成する事が推奨されています。
https://github.com/shchmue/Lockpick_RCM
また、xci2nspは昨年10月から更新されていないので、4NXCIを試してみてください。
https://github.com/The-4n/4NXCI


▼コメントを投稿












※「英数字90%以上」のコメントを規制中です。コメントを投稿する際は日本語でお願いします。
※確認ボタンを押すと投稿確認フォームに移ります。投稿確認フォームの送信ボタンを押してください。
※確認フォームにある「メールアドレス」に入力された内容は管理人のみ確認可能です。空欄で構いません。
※確認フォームにある「タイトル」「パスワード」は当ブログでは使用していません。空欄で構いません。
※確認フォームにある「URL」は名前のリンクとして機能します。空欄で構いません。
※確認フォームには非公開コメントのチェック項目がありますが、非公開コメントは受け付けていません。
メールフォームより連絡頂ければメールにてお返事致します。