XPlor/definitions/asura/asura_chunk.xscript

166 lines
3.1 KiB
Plaintext
Raw Normal View History

// Asura Engine chunk structure
// Used by Rebellion games: Sniper Elite, AVP 2010, etc.
type asura_chunk [display="Asura Chunk"] byteorder BE
{
// Chunk header: 4-byte ID + 4-byte size + 4-byte version + 4-byte flags
chunk_id = ascii(read(4));
u32 chunk_size;
u32 version;
u32 flags;
chunk_id = chunk_id;
ui("chunk_id", "Chunk ID");
chunk_size = chunk_size;
ui("chunk_size", "Chunk Size");
version = version;
ui("version", "Version");
flags = flags;
ui("flags", "Flags");
// Calculate remaining data size
data_size = chunk_size - 16;
if (data_size > 0) {
data = read(data_size);
ui("data", "Chunk Data");
}
}
type asura_fcsr_chunk [display="FCSR Resource Chunk"] byteorder BE
{
// FCSR chunk header
chunk_id = ascii(read(4));
u32 chunk_size;
u32 version;
u32 flags;
chunk_id = chunk_id;
ui("chunk_id", "Chunk ID");
chunk_size = chunk_size;
ui("chunk_size", "Chunk Size");
version = version;
ui("version", "Version");
flags = flags;
ui("flags", "Flags");
// Resource info
u32 resource_type;
u32 unknown1;
u32 resource_size;
resource_type = resource_type;
ui("resource_type", "Resource Type");
unknown1 = unknown1;
ui("unknown1", "Unknown1");
resource_size = resource_size;
ui("resource_size", "Resource Size");
// Read null-terminated name
name = cstring();
name = name;
ui("name", "Resource Name");
}
type asura_lfsr_chunk [display="LFSR List Resource Chunk"] byteorder BE
{
// LFSR chunk header (list of file references)
chunk_id = ascii(read(4));
u32 chunk_size;
u32 version;
u32 flags;
chunk_id = chunk_id;
ui("chunk_id", "Chunk ID");
chunk_size = chunk_size;
ui("chunk_size", "Chunk Size");
version = version;
ui("version", "Version");
flags = flags;
ui("flags", "Flags");
// Number of entries
u32 entry_count;
entry_count = entry_count;
ui("entry_count", "Entry Count");
}
type asura_tsxt_chunk [display="TSXT Texture Set Chunk"] byteorder BE
{
// TSXT chunk header (texture set)
chunk_id = ascii(read(4));
u32 chunk_size;
u32 version;
u32 flags;
chunk_id = chunk_id;
ui("chunk_id", "Chunk ID");
chunk_size = chunk_size;
ui("chunk_size", "Chunk Size");
version = version;
ui("version", "Version");
flags = flags;
ui("flags", "Flags");
// Texture count
u32 texture_count;
texture_count = texture_count;
ui("texture_count", "Texture Count");
}
type asura_stsa_chunk [display="STSA Asset List Chunk"] byteorder BE
{
// STSA chunk header (asset list - reversed ASTS)
chunk_id = ascii(read(4));
u32 chunk_size;
u32 version;
u32 flags;
chunk_id = chunk_id;
ui("chunk_id", "Chunk ID");
chunk_size = chunk_size;
ui("chunk_size", "Chunk Size");
version = version;
ui("version", "Version");
flags = flags;
ui("flags", "Flags");
// File count
u32 file_count;
file_count = file_count;
ui("file_count", "File Count");
}