昨天写了 LNK4 容器,其实本来打算连 AFS 一起写下来的,无奈解出的图像文件格式很奇怪。
嘛,先把文件提取过程记录一下。
其实 AFS 是一种已经广泛应用的容器,随便搜一下就知道,最早是 Sega 搞出来的。网上也有很多解包工具。但是,这次遇到的 AFS 文件稍微不大一样。

首先,是文件标识符 0x41465300(AFS)。紧接着绿色部分是包含文件数,依然是 Big Endian。
其实在 Xbox 360 上,Big Endian 很正常,毕竟整个系统都是 Big Endian。
接下来就是文件表,蓝色表示文件的起始地址,这个是绝对地址,不用算偏移量。紫色部分则是文件长度。
等等,明明只有 10 个文件,为什么却有 11 个地址/长度对?转到相应地址一看,居然是文件表。这也是前面说的“不大一样”。

每个文件占用 48 字节,头 32 字节是文件名,后面跟着是几个属性值,具体什么意思就不研究了,反正只要拿到文件名就够了。
但是,解出来的 .spc 和 .xtx 文件却不知道该怎么打开。可以肯定,.spc 是某种压缩格式,因为同样尺寸的图像文件大小相差很大。而 .xtx 却长度固定,应该是某种未压缩格式。

