I will tell you that it finally got me up to coding again though. I have not really done alot of programming lately, so I decided to do a little 3rd-party app for my new favorite game.
The challenge, extract files from a game data file. All was well, I found the signature, then the number of items, and the total file length. Followed by 256 bytes for each item, four for (what I think is) a type identifier, 4 bytes start offset, 4 bytes unknown (at this time) use, 4 bytes data block length, and finally two hundred and forty bytes for file name.
Read all the items into an ArrayList for storage (in a class), and display the list in a ListBox. Simple enough. Read the data start offset and add that to the items offset, Read the length into a file.
Well, the data I get isn't what I expected. I have an idea on what the unknown data field is, I think it is the uncompressed length of the file stored. I think that because the unknown field is always larger than the length field. I extracted a BMP file, and it was not correct, header was completly wrong. Ho-hum, compression seems like it would be pretty normal.
Now I just hope its RLE, because everything else is a little complicated to just impliment on the fly into the tool. Looking at how 'simple' the data is stored in the file, I think it will be RLE but I have alot of research to do to find out what kind of compression this uses just by looking at the files data. RLE also seems likely because it would be easy to read and decompress at the same time. The data block always starts with 78 9C (hex) and the following two bytes seem to always fall on hex combinations of D and E, but have been observed to be different at times. If you know alot about RLE detection, or compression in general, and would like to help out email or PM me please!
If you have GTR, you can download my little tool if you want to see what is inside the .GTR data files. GTR File (C#, requires .NET).