仓库源文站点原文


tags: [Arcaea] title: 解包 Arcaea_NS last_modified_at: 2023-3-18 slug: arcaea-ns-depack redirect_from:

- /posts/解包Arcaea_NS

你需要的文件

点我下载

需要的文件列表:我提供的工具箱、Arcaea的nsp文件、我提供的py文件

不提供Arcaea的游戏文件

开始解包

NSP/XCI -> NCA+TIK

运行解包工具整合版.bat,按你的Arcaea文件格式选择2/3,然后选1,然后将nsp/xci文件拖曳到窗口内,等待程序运行

nsp_to_nca过程的输出,最后会输出Done

Q:为什么会报[WARN]: Failed to match key

A:无视即可

当程序提示Done!时,恭喜!你已经完成了第一步

此时,NCA-NSP-XCI_TO extract文件夹内应该会出现一个叫Extracted_NSPExtracted_XCI的文件夹,我们只需要保留最大的NCA文件(我这里是a6128a36c6364c5d240f50961b55a774.nca)以及唯一的TIK文件(我这里是0100e680149dc000000000000000000b.tik),其它文件可以删除

NCA+TIK -> JSON+PACK

<del><small>吐槽几句,这一步是我卡的最久的,原因是没有使用.tik文件</small></del>

再次运行解包工具整合版.bat,选择1(选择NCA文件),然后选择2(提取加密的NCA文件),再选2(转换为 Romfs 文件夹),然后把上一步得到的那两个文件依次拖入

nca_to_pak过程的输出,输出多个Saving xxx to xxx后出现Done

此时,NCA-NSP-XCI_TO extract文件夹内会出现一个叫Extracted_NCA的文件夹,此文件夹内的romfs文件夹内会有两个文件,分别是arc.jsonarc.pack

UPDATE: DLC的话可能是arc_x.jsonarc_x.pack,此时你要分别看每个json文件是不是乱码,如果是就把对应的json和pack文件都删掉,把所留下的不是乱码的文件分别执行下一步(可能执行多次)

JSON+PACK -> 原始文件

这个存储方式很有意思,大概讲讲技术原理:

arc.json中的Groups存储着很多个分类,每个分类的OrderedEntries存储着分类中的每个文件在arc.pack中的开始位置(Offset)和长度(Length)(均以字节为单位)

我们需要做的,就是从arc.pack中的[Offset,Offset+Length)处提取文件内容,然后存储至对应的OriginalFilename

具体实现嘛,自行看代码

pak_to_fin过程的演示截图、最终得到的游戏文件列表

用我的丑陋代码提取后,你会得到finally_result目录,里面就是最终结果😀

WELCOME TO ARCAEA!