4

I've been researching on how to modify the textures of Crazy Taxi 3 for a while now and I have pretty much hit a brick wall.
The game stores its texture assets in .art files, which, from what I understand, contain several textures in each of them, due to there being many banks of textures. There is also a Sprites folder containing these files that indicate the same.
A quick Google search led me to believe that this may be the AOL Image Format used in its software, however AOL 9.0 kept throwing errors when trying to open the files. No dice.
After searching more I found that PFS: First Publisher used this extension as well for its clip art. The files do not exactly match the structure documented in this wiki, but every .art file has something that looks like a table of information in that structure at the start, and then possibly image data. I have also observed that the string GXTX is repeated many times, may suggest that it might be a pointer of the beginning of a new image.
Other than that, I have no idea how this file format may work. It seems like it is uncompressed image data, however after opening it in many programs I have given up and need help.


UPDATE 1:
I have found a great tool called Texturefinder that helped me figure out that these textures are compressed with DXT, however I am unsure which version, as half of a certain texture bank may look great in DXT1, while another half looks jumbled until I switch to DXT3 or 5. The container format possibly has information on which algorithm to use in a table before the images, as at the start of each texture file there is plenty of non-image data, or at least data that this tool can not decide. Here are a few examples of this working in one algorithm vs the other:

DXT1a @ 512px width DXT3 @ 256px width

So, here is an updated list of what I have gathered:

  • .art files contain the string GXTX many times, usually followed by about 12 bytes that have small values (something like 80 00 80 00 00 80 00 00 01 00 05 00), likely an image separator
  • The files contain many textures compressed with DXT
  • Textures may be compressed with differing forms of DXT (possibly DXT1 and DXT3)
  • Textures in banks may have differing widths/heights
  • Every texture bank has a sizeable amount of non-image data at the start
  • The textures are upside down

Here are some more samples for comparison.

  • 1
    Can you provide multiple samples of the file format? This would be helpful for finding structural commonalities between the files. – pythonpython Dec 28 '19 at 12:06
3

I reversed 99% of the .ART file this week, here you go:

// 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
| improve this answer | |
  • 1
    The image data size is 4 bytes long instead of 2. – stashymane Apr 1 at 14:29
  • thanks, just fixed – Meth0d Apr 2 at 3:37
0

I've made some research and found that the textures uses one of these formats, depending on the 2 bytes value the texture has (10, 11, 4, 5, 0 or 2063):

"DXT1, DXT3, A8R8G8B8, A4R4G4B4, R5G6B5, A1R5G5B5"

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.