Add XScript definitions for Rebellion's Asura engine formats: - Archive chunks (fcsr, acsr, rcsr) - Texture chunks (tsxt, xbtx2d_chunk) - Resource chunks and headers Used by games like Sniper Elite V2 on Xbox 360. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
106 lines
3.1 KiB
Plaintext
106 lines
3.1 KiB
Plaintext
// 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, readonly, display="Chunk ID"];
|
|
chunk_size = chunk_size [ui, readonly, display="Chunk Size"];
|
|
version = version [ui, readonly, display="Version"];
|
|
flags = flags [ui, readonly, display="Flags"];
|
|
|
|
// Calculate remaining data size
|
|
data_size = chunk_size - 16;
|
|
|
|
if (data_size > 0) {
|
|
data = read(data_size);
|
|
data = data [ui, display="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, readonly, display="Chunk ID"];
|
|
chunk_size = chunk_size [ui, readonly, display="Chunk Size"];
|
|
version = version [ui, readonly, display="Version"];
|
|
flags = flags [ui, readonly, display="Flags"];
|
|
|
|
// Resource info
|
|
u32 resource_type;
|
|
u32 unknown1;
|
|
u32 resource_size;
|
|
|
|
resource_type = resource_type [ui, readonly, display="Resource Type"];
|
|
unknown1 = unknown1 [ui, readonly, display="Unknown1"];
|
|
resource_size = resource_size [ui, readonly, display="Resource Size"];
|
|
|
|
// Read null-terminated name
|
|
name = cstring();
|
|
name = name [ui, readonly, display="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, readonly, display="Chunk ID"];
|
|
chunk_size = chunk_size [ui, readonly, display="Chunk Size"];
|
|
version = version [ui, readonly, display="Version"];
|
|
flags = flags [ui, readonly, display="Flags"];
|
|
|
|
// Number of entries
|
|
u32 entry_count;
|
|
entry_count = entry_count [ui, readonly, display="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, readonly, display="Chunk ID"];
|
|
chunk_size = chunk_size [ui, readonly, display="Chunk Size"];
|
|
version = version [ui, readonly, display="Version"];
|
|
flags = flags [ui, readonly, display="Flags"];
|
|
|
|
// Texture count
|
|
u32 texture_count;
|
|
texture_count = texture_count [ui, readonly, display="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, readonly, display="Chunk ID"];
|
|
chunk_size = chunk_size [ui, readonly, display="Chunk Size"];
|
|
version = version [ui, readonly, display="Version"];
|
|
flags = flags [ui, readonly, display="Flags"];
|
|
|
|
// File count
|
|
u32 file_count;
|
|
file_count = file_count [ui, readonly, display="File Count"];
|
|
}
|