最近给王国之泪100%进度通关了,闲来无事就折腾了下王国之泪的拆包,探索一下这个在我心目中最伟大的游戏之一的素材包。经过半个小时的折腾终于大概搞懂了如何拆包并提取素材,这里做一个记录。
叠甲
这里不会对过于基础的内容做详细的说明,如 XCI、NCA、NSP 是什么,github 上不去怎么办,给出的 github 链接如何下载,命令行怎么用等等等等。
解包/拆包
事先准备
需要用到的工具、项目如下,将其全部下载即可。本教程基于原生 Windows 10 x64 环境编写,不保证其他操作系统、架构下的可行性。
- https://gbatemp.net/attachments/extrt_v2-1-rar.148595/
- https://github.com/julesontheroad/NSC_BUILDER
- https://github.com/KillzXGaming/Switch-Toolbox
- https://github.com/facebook/zstd
- https://github.com/SciresM/hactool
- 王国之泪的 XCI 文件,我的 blog 不会提供这个文件,原因如第 7 条所述。
- 有效的
prod.keys和title.keys,我的 blog 也不会提供这两个密钥,我不想收到东半球最强法务部的律师函。不过你大概可以在网上找到这两个 key 文件,毕竟 PC 上的 NS 模拟器必须要这些密钥才能启动游戏。
大概上述的所有东西下载并解压后你会得到这样的一堆文件。

这张图片内文件的排列与上面列出的工具列表的序号一一对应,防止以后某个项目改变了它的文件夹名后这篇教程直接boom。
将 XCI 解压为 NCA
- 将
prod.keys复制到NSCB_101bx64/ztools/文件夹内并重命名为keys.txt。 - 打开
NSCB_101bx64/NSCB.exe - 输入
6回车。 - 将 XCI 文件直接拖入打开的窗口中并回车。
- 输入
1回车。 - 继续输入
1回车。
不出意外的话,你应该可以看到这样的进度条。

待进度条走完并出现 *********** ALL FILES WERE PROCESSED! ************* 时就可以关闭这个蓝框框了,而解压下来的 NCA 文件则保存在 NSCB_101bx64/NSCB_extracted/ 下。
NCA 解包
- 将
hactools.exe复制到EXTRT_v2.1中 - 将
prod.keys复制到EXTRT_v2.1/文件夹内并重命名为keys.txt。 - 将上面提取出的
最大体积的 NCA 文件拖到EXTRT_v2.1文件夹中的 BAT 脚本上。举个例子:

接下来就是漫长的等待,程序会在完成后自动退出。等待的时间与你的磁盘性能、CPU 性能(单核性能)有关。解包完成后的文件则在 EXTRT_v2.1/EXTRTD_OUTPUT/program/ 目录下。
读取解包文件
- 打开
Toolbox-Letest/Toolbox.exe(后续会简称为 Toolbox) - 依次选择
Tools>Compression>ZSTD>Decompress并在弹出的文件选择窗口中选中EXTRT_v2.1/EXTRTD_OUTPUT/program/romfs/Pack/ZsDic.pack.zs - 展开左侧收缩框,依次将这三个文件导出到
Toolbox-Letest/Lib/ZstdDictionaries/文件夹内,如下图。 - 关闭并重新打开 Toolbox。
- 点击
File>Open (Folder)在弹出的窗口选中你刚解包的数据的目录。

解包后的文件夹结构
解包后大概会有 30w+ 的文件以及目录深度可能超过 7 级,为了更快速的找到我需要的东西,这里记录下目录结构。
- 模型、动作、光影法线贴图等
均在
/Model中,基本都是.mc.bfres文件。
- 纹理
全部都在
/TexToGo目录下,以.txtg格式存在。
- 背包内物品的缩略图
均在
/UI/Tex/Icon,以.bntx格式存在。
- 原始的图鉴照片
均在
/UI/Tex/PictureBook,以.bntx格式存在。
- 地图
均在
/UI/Map,以.bntx格式存在。
- 音频
均在
/Sound/Resource/Stream,以.bwav格式存在。
- 过场动画
均在
/Event/Movie。以.webm格式存在,平均码率 4000kb/s。
不同后缀的文件的作用
- .ainb
控制 AI 逻辑的文件。(猜测)
- .asb
不详。
- .baatarc
不详。
- .baev
不详。
- .bagst
不详。
- .bars
大概是一种打包音频文件的格式。你可以使用这个 软件 来编辑它。
- .bcul
不详。
- .beco
类似于调整 LOD 的文件,用于暂停摄像机看不到的区域的渲染。更多信息
- .belnk
不详
- .bfarc
不详
- .bfevfl
事件流?不是很懂(,建议直接看 wiki。
- .bfres
BFRES v10,用来保存模型的数据。
- .bfsha
不详。
- .bgyml
类似于
yaml格式的文件,bgyml文件存储了一些配置,可以用 这个工具 打开,当然,ToolBox 也是可以的。
- .bhtmp
可能是
heatmap?(纯猜测)。不详。
- .bkres
不详。
- .blarc
不详。
- .blwp
不详。
- .bnsh
不详
- .bntx
类似于一种图片格式,用于保存静态的图片素材。
- .bphnm
不详。
- .bphsc
不详。
- .bphsh
不详。
- .bslnk
不详。
- .bstar
不详。
- .bwav
音频格式,可以用 foobar2000 配合 vgmStream 插件播放、转码。更多详细的信息可以看 这里。
但是使用 foobar2000+vgmStream 转码后的文件体积貌似会特别大,可能是 vgmStream 插件的 bug。
- .byml
类似于
.bgyml。
- .cai
不详。
- .chunk
不详。
- .crbin
不详。
- .cutinfo
不详。
- .dpi
不详。
- .genvb
不详
- .jpg
…
- .mc
MeshCodec,用来打包模型中的骨骼、动作、法线贴图、阴影贴图等数据。
- .pack
打包文件。
- .png
…
- .quad
不详
- .rsizetable
ResourceSizeTable,用来存储资源大小的文件。
- .sarc
类似
.pack
- .ta
不详
- .txt
…
- .txtg
TexToGo,一种贴图纹理格式。如这个 gist 所示,
.txtg文件的格式长这样。
Offset Name Length Expected Value Notes x00 Magic 8 Bytes x50 x00 x11 x00 x36 x50 x4b x30 The last four bytes always contain 6PK0 x08 Width 2 Bytes Variable Most likely width based upon similarly named sprite sizes x0A Height 2 Bytes Variable Most likely height based upon similarly named sprite sizes x0c Unknown 1 Byte If the preceding entries are width and height, this may refer to ‘Z’ as a dimension, such as with 3d textures x0E Total Files 1 Byte Variable The number of file entries, starting from 0x50 x50 Decompressed File Checksums 8 Bytes * x0E Variable Each int contains the decompressed file size (x50 + (8 bytes * x0E)) Compressed File Checksums 8 Bytes * x0E * 2 Variable After reading each int, the next int is a control value of unknown purpose, which is commonly equal to 6 Follows Compressed File Checksums ZSTD Stream Start 4 Bytes x28 xb5 x2f xfd ZSTD magic header. The number of ZSTD headers found in the file should be equal to the value of x0E Notes
- The format appears to be a forked version of the 6pack format, except using ZSTD to compress entries instead of fastlz
- Files are Little-Endian (LE) UTF8.
- 0x54 appears to indicate that the largest block size is 65536
- Block sizes were observed to run from the largest possible, decreasing by half until the end of the file
- Decompressed data resembles the ASTC image format, but attempts to take the decoded data and create ASTC files have not been successful
- .vsts
不详。
- .wbr
不详。
- .webm
视频格式
- .zs
Zstandard,类似
zip7zrar,一种压缩数据的格式。更多信息大部分文件都带了这个后缀,所以需要先解压才能看到里面的内容。但幸好我们已经修改了 ToolBox 的文件,ToolBox 将会替我们完成解压~