王国之泪解包教程
这是一篇发布于 607 天前的文章,部分信息可能已发生改变。
最近给王国之泪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,类似
zip
7z
rar
,一种压缩数据的格式。更多信息
大部分文件都带了这个后缀,所以需要先解压才能看到里面的内容。但幸好我们已经修改了 ToolBox 的文件,ToolBox 将会替我们完成解压~