Page 1 of 1

Giants File Structures

Posted: Mon Jun 04, 2018 5:39 pm
by Vankerkom
Want to reply to this thread? -> Feedback & Questions thread

This is work in progress documentation for the files located in the Giants Bin folder.
All of the information is acquired by reverse engineering the file format.

File format Basics
All giant files contain a magic version number to recognize the file type. The version number of a file is stored in little endian order in the first 4 bytes of the content.

All files will have a separate post linked below. Contributing
if you want to contribute to this research, then feel free to hit me up on the GiantsWD discord server or reply to the feedback thread.

Feedback / Help
Feel free to reply to this thread if you have questions or want to give feedback.

GameObj.bin Structure

Posted: Mon Jun 04, 2018 5:46 pm
by Vankerkom
File: GameObj.bin

Version: 436208349 [ DD 02 00 1A ]

This is one of the first files that gets read by the game.

int32 version; // File version as mentioned in the fist post.
int32 fileSize; // The size of the content in the file

// This nextByte reads the first byte after fileSize if it does not find 0xFF (255) then it reads two null terminated strings and repeats until it reached 0xFF.
while(nextByte != 0xFF) {

char* object; // Always "world.gb2" - C-Style String (0 terminated)
char* someFx; // An effect set? (unsure) - C-Style String (0 terminated)


GZP Structure

Posted: Tue Jun 05, 2018 9:18 am
by Vankerkom
File: *.gzp

Version: 1711862017 [ 01 F1 08 66 ]

A custom archive that contains the game's assets in a compressed form.

int32 version; // File version as mentioned in the fist post.
int32 metaInfoOffset; // The offset of the file meta info which is located below the compressed content.

loop(entries) // Compressed content, entries count can be found inside the meta data.

// Content Meta Info
int32 unknown; // This value is currently unknown.
int32 entries; // The amount of entries in the file.
// This is a for loop for every entry
int32 compressedSize; // Size (Compressed)
int32 orignalSize; // Original Size (Decompressed)
_FILETIME fileTime; // 32bit windows file time. This indicates when the file was created?
int32 startOffset; // The start offset of the content inside the file.
char compressFlag; // This seems to be a flag if the item is compressed or not? Compressed files: 1 - not compressed 2 (unsure)
char nameLength; // The length of the name.
char[nameLength] name; // The name of the file in ASCII.

Code: Select all

        // _FILETIME
        // 32-Bit Windows Time/Date Formats
        // Parsed in LE direction.

        // Time
        // Bit position:    0 1 2 3 4	5 6 7 8 9 A     B C D E F
        // Length:	        5	        6	            5
        // Contents:	    hours	    minutes	        2-second increments
        // Value Range:	    0–23    	    0–59    	        0–29 in 2-second intervals

        // Date
        // Bit position:	0 1 2 3 4 5 6	    7 8 9 A     B C D E F
        // Length:	        7	                4	        5
        // Contents:	    year	            month	    day
        // Value Range:	    0–119	            1–12    	    1–31
        //                  relative to 1980