Giana’s Return ZDA
ZDA
- Game : Giana’s Return
- Format Type : Archive
- Endian Order : Little Endian
Format Specifications
// Giana's Return
// ZDA file format
// little endian
// Note: Files are compressed with ZLIB and encrypted with XOR.
//header
4 bytes (char) - magic // "ZDA\x00"
4 bytes (uint32) - number of files
4 bytes (uint32) - data start offset
num_of_files *
{
40 bytes (char) - filename + padding
4 bytes (uint32) - uncompressed size
4 bytes (uint32) - compressed size
4 bytes (uint32) - relative file offset
}
num_of_files *
{
x bytes - file data
}
MultiEx BMS Script
Not written yet.
Notes and Comments
- Files inside those archives are compressed with ZLIB and encrypted with custom XOR encryption.
- Key used for encrypting file is original file with \xBB byte added at the beginning.
Decryption method
Implementation for decryption method written in Python:
def decrypt_data(in_data):
xor_res = b'\xBB'
data_size = len(in_data)
out_data = bytearray()
for curr_offset in range(data_size):
data_byte = struct.pack("B", in_data[curr_offset])
xor_res = xore(xor_res, data_byte)
out_data.extend(xor_res)
return out_data
Compatible Programs