我一段时间以来一直在研究如何修改Crazy Taxi 3的纹理,并且我几乎碰到了砖墙。
游戏将其纹理资产存储在.art文件中,据我了解,由于存在许多纹理库,因此每个纹理中都包含几个纹理。还有一个包含这些文件的Sprites文件夹,它们表示相同的文件。文件。没有骰子。
搜索更多之后,我发现PFS:First Publisher也将此扩展用于其剪贴画。这些文件与该Wiki中记录的结构不完全匹配,但是每个.art文件在开始时都具有类似于该结构中的信息表的内容,然后还有图像数据。我还观察到字符串GXTX重复了很多次,可能表明它可能是新图像开头的指针。
除此之外,我不知道这种文件格式如何工作。似乎它是未压缩的图像数据,但是在许多程序中打开它后,我放弃了并需要帮助。


UPDATE 1:
我发现了一个很棒的工具,名为Texturefinder帮助我弄清楚了这些纹理是使用DXT压缩的,但是我不确定哪个版本,因为某个纹理库的一半在DXT1中看起来不错,而另一半看上去很混乱,直到我切换到DXT3或5。容器格式可能有关于在图像之前的表中使用哪种算法的信息,因为在每个纹理文件的开始处,有很多非图像数据,或者至少是此工具无法确定的数据。以下是使用一种算法而不是另一种算法的一些示例:



所以,这是我收集到的内容的更新列表:



.art文件包含字符串GXTX多次,通常后跟大约12个字节,这些字符串的值较小(类似于80 00 80 00 00 80 00 00 01 00 05 00),可能是图像分隔符
文件包含许多用DXT压缩的纹理不同形式的DXT(可能是DXT1和DXT3)
纹理库中的纹理可能具有不同的宽度/高度
每个纹理库在开始时都有大量的非图像数据
纹理是向上下

这里有更多示例可供比较。

评论

您可以提供文件格式的多个示例吗?这将有助于查找文件之间的结构共性。

#1 楼

我本周撤消了99%的.ART文件,请转到以下位置:

// header
4 bytes - total of images

// file offsets directory
  // for each image
  4 bytes - image offset in directory

// images directory
  // for each image
  4 bytes - magic (gxtx)
  2 bytes - width
  2 bytes - height
  4 bytes - image data size
  2 bytes - unknown
  2 bytes - compression type (10 = DXT1 | 11 = DXT3)
  X bytes - image data


评论


图像数据大小为4个字节,而不是2个字节。

–烟灰石
4月1日14:29

谢谢,固定

– Meth0d
4月2日,下午3:37

#2 楼

我进行了一些研究,发现纹理使用以下格式之一,具体取决于纹理具有的2个字节值(10、11、4、5、0或2063):

“ DXT1 ,DXT3,A8R8G8B8,A4R4G4B4,R5G6B5,A1R5G5B5“