Loading... 最近给王国之泪100%进度通关了,闲来无事就折腾了下王国之泪的拆包,探索一下这个在我心目中最伟大的游戏之一的素材包。经过半个小时的折腾终于大概搞懂了如何拆包并提取素材,这里做一个记录。 ## 叠甲 这里不会对过于基础的内容做详细的说明,如 XCI、NCA、NSP 是什么,github 上不去怎么办,给出的 github 链接如何下载,命令行怎么用等等等等。 ## 解包/拆包 ### 事先准备 需要用到的工具、项目如下,将其全部下载即可。**本教程基于原生 Windows 10 x64 环境编写,不保证其他操作系统、架构下的可行性。** 1. https://gbatemp.net/attachments/extrt_v2-1-rar.148595/ 2. https://github.com/julesontheroad/NSC_BUILDER 3. https://github.com/KillzXGaming/Switch-Toolbox 4. https://github.com/facebook/zstd 5. https://github.com/SciresM/hactool 6. 王国之泪的 XCI 文件,我的 blog 不会提供这个文件,原因如第 7 条所述。 7. 有效的 `prod.keys` 和 `title.keys`,我的 blog 也不会提供这两个密钥,我不想收到东半球最强法务部的律师函。不过你大概可以在网上找到这两个 key 文件,毕竟 PC 上的 NS 模拟器必须要这些密钥才能启动游戏。 大概上述的所有东西下载并解压后你会得到这样的一堆文件。 ![示例](https://img.ixiaocai.net/images/2023/06/19/f00624d050473b4c33136fbdae7f596a.png) 这张图片内文件的排列与上面列出的工具列表的序号一一对应,防止以后某个项目改变了它的文件夹名后这篇教程直接boom。 ### 将 XCI 解压为 NCA 1. 将 `prod.keys` 复制到 `NSCB_101bx64/ztools/` 文件夹内 `并` 重命名为 `keys.txt` 。 2. 打开 `NSCB_101bx64/NSCB.exe` 3. 输入 `6` 回车。 4. 将 XCI 文件直接拖入打开的窗口中并回车。 5. 输入 `1` 回车。 6. 继续输入 `1` 回车。 不出意外的话,你应该可以看到这样的进度条。 ![示例](https://img.ixiaocai.net/images/2023/06/19/0a8b408c65816282c876ad7b1b54d2d1.png) 待进度条走完并出现 `*********** ALL FILES WERE PROCESSED! *************` 时就可以关闭这个蓝框框了,而解压下来的 NCA 文件则保存在 `NSCB_101bx64/NSCB_extracted/` 下。 ### NCA 解包 1. 将 `hactools.exe` 复制到 `EXTRT_v2.1` 中 2. 将 `prod.keys` 复制到 `EXTRT_v2.1/` 文件夹内 `并` 重命名为 `keys.txt` 。 3. 将上面提取出的 `最大体积` 的 NCA 文件拖到 `EXTRT_v2.1` 文件夹中的 BAT 脚本上。举个例子: ![示例](https://img.ixiaocai.net/images/2023/06/20/7b24396ae67e91c4a0d1bedbd859cb54.png) 接下来就是漫长的等待,程序会在完成后自动退出。等待的时间与你的磁盘性能、CPU 性能(单核性能)有关。解包完成后的文件则在 `EXTRT_v2.1/EXTRTD_OUTPUT/program/` 目录下。 ### 读取解包文件 1. 打开 `Toolbox-Letest/Toolbox.exe` (后续会简称为 Toolbox) 2. 依次选择 `Tools` > `Compression` > `ZSTD` > `Decompress` 并在弹出的文件选择窗口中选中 `EXTRT_v2.1/EXTRTD_OUTPUT/program/romfs/Pack/ZsDic.pack.zs` 3. 展开左侧收缩框,依次将这三个文件导出到 `Toolbox-Letest/Lib/ZstdDictionaries/` 文件夹内。如下图: ![示例](https://img.ixiaocai.net/images/2023/06/20/250ee09113dd58ccad2f6121a1b96b40.png) 4. 关闭并重新打开 Toolbox。 5. 点击 `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 > 大概是一种打包音频文件的格式。你可以使用这个 [软件](https://github.com/NanobotZ/BarsTool) 来编辑它。 ### .bcul > 不详。 ### .beco > 类似于调整 LOD 的文件,用于暂停摄像机看不到的区域的渲染。[更多信息](https://zeldamods.org/wiki/LoadBalancer.beco) ### .belnk > 不详 ### .bfarc > 不详 ### .bfevfl > 事件流?不是很懂(,建议直接看 [wiki](https://zeldamods.org/wiki/BFEVFL)。 ### .bfres > BFRES v10,用来保存模型的数据。 ### .bfsha > 不详。 ### .bgyml > 类似于 `yaml` 格式的文件,`bgyml` 文件存储了一些配置,可以用 [这个工具](https://github.com/NX-Editor/NxEditor) 打开,当然,ToolBox 也是可以的。 ### .bhtmp > 可能是 `heatmap`?(纯猜测)。 > > 不详。 ### .bkres > 不详。 ### .blarc > 不详。 ### .blwp > 不详。 ### .bnsh > 不详 ### .bntx > 类似于一种图片格式,用于保存静态的图片素材。 ### .bphnm > 不详。 ### .bphsc > 不详。 ### .bphsh > 不详。 ### .bslnk > 不详。 ### .bstar > 不详。 ### .bwav > 音频格式,可以用 foobar2000 配合 [vgmStream](https://github.com/vgmstream/vgmstream) 插件播放、转码。更多详细的信息可以看 [这里](https://gota7.github.io/Citric-Composer/specs/binaryWav.html)。 > > 但是使用 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](https://gist.github.com/zoeysaurusrex/0c8a1ae2e218d1c76959765bf9e9c408) 所示,`.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`,一种压缩数据的格式。[更多信息](https://github.com/facebook/zstd) > 大部分文件都带了这个后缀,所以需要先解压才能看到里面的内容。但幸好我们已经修改了 ToolBox 的文件,ToolBox 将会替我们完成解压~ 最后修改:2023 年 06 月 22 日 © 允许规范转载 赞 7 给点.jpg
10 条评论
您好,请问解包后可以得到游戏中的图片文件吗?我一直很想要王国之泪人物名鉴里的那些立绘的高清无底图片,但是在网上一直找不到(能找到一小部分但是不全,而且有的画质实在太糊)。不知大神是否愿意分享?
https://www.file.io/AHpo/download/OBbhWoHPo1Fn
PNG 内即为图片,剩下的全是转换过程中的中间格式。
均在 /UI/Tex/CharaDirectory 下,自己尝试解包看看
bwav使用foobar2000+vgmStream 转码后文件特别大是因为转出来只是wav格式,还得再转成MP3。注意奥德赛这类游戏的bfstm文件有的包含多于2个音轨,要先转成wav然后编辑音轨混音,不然会十分怪异。其实vgm可以单独使用,不需要那个播放器,参考命令行。
感谢补充。
老板我的keys可以提到nca,但是nca文件投到那个bat里的时候说我的keys不match 这个怎么办啊 试了好多版本keys都不行
抱歉,关于 keys 的问题我均无法解答。
老板解决了 好像是这个hactools的问题,我换了多个来源的hactools都不能match,但我直接用switch toolbox和同样的最新keys解包成功了 谢谢老板