mirror of
https://github.com/derrod/legendary.git
synced 2024-12-22 01:45:28 +00:00
[doc] Add Kaitai Struct file for binary UE Manifests
This commit is contained in:
parent
95e76b0624
commit
0523ecfe28
249
doc/ue_manifest.ksy
Normal file
249
doc/ue_manifest.ksy
Normal file
|
@ -0,0 +1,249 @@
|
|||
meta:
|
||||
id: ue_manifest
|
||||
file-extension: manifest
|
||||
endian: le
|
||||
seq:
|
||||
- id: magic
|
||||
contents: [0x0C, 0xC0, 0xBE, 0x44]
|
||||
- id: header_size
|
||||
type: u4
|
||||
- id: header
|
||||
size: header_size - 8
|
||||
type: header
|
||||
- id: body_compressed
|
||||
size-eos: true
|
||||
type: body
|
||||
process: zlib
|
||||
if: header.stored_as == stored_as_flag::compressed
|
||||
- id: body_uncompressed
|
||||
size-eos: true
|
||||
type: body
|
||||
if: header.stored_as == stored_as_flag::uncompressed
|
||||
types:
|
||||
header:
|
||||
seq:
|
||||
- id: size_uncompressed
|
||||
type: u4
|
||||
- id: size_compressed
|
||||
type: u4
|
||||
- id: sha1_hash
|
||||
size: 20
|
||||
- id: stored_as
|
||||
type: u1
|
||||
enum: stored_as_flag
|
||||
- id: version
|
||||
type: u4
|
||||
body:
|
||||
seq:
|
||||
- id: meta_size
|
||||
type: u4
|
||||
- id: metadata
|
||||
size: meta_size - 4
|
||||
type: metadata
|
||||
- id: cdl_size
|
||||
type: u4
|
||||
- id: chunk_data_list
|
||||
type: chunk_data_list
|
||||
size: cdl_size - 4
|
||||
- id: fml_size
|
||||
type: u4
|
||||
- id: file_manifest_list
|
||||
type: file_manifest_list
|
||||
size: fml_size - 4
|
||||
- id: custom_data_size
|
||||
type: u4
|
||||
- id: custom_fields
|
||||
type: custom_fields
|
||||
size: custom_data_size - 4
|
||||
metadata:
|
||||
seq:
|
||||
- id: data_version
|
||||
type: u1
|
||||
- id: feature_level
|
||||
type: u4
|
||||
- id: is_file_data
|
||||
type: u1
|
||||
- id: app_id
|
||||
type: u4
|
||||
- id: app_name
|
||||
type: fstring
|
||||
- id: build_version
|
||||
type: fstring
|
||||
- id: launch_exe
|
||||
type: fstring
|
||||
- id: launch_command
|
||||
type: fstring
|
||||
- id: prereq_ids_num
|
||||
type: u4
|
||||
- id: prereq_ids
|
||||
type: fstring
|
||||
repeat: expr
|
||||
repeat-expr: prereq_ids_num
|
||||
- id: prereq_name
|
||||
type: fstring
|
||||
- id: prereq_path
|
||||
type: fstring
|
||||
- id: prereq_args
|
||||
type: fstring
|
||||
- id: build_id
|
||||
type: fstring
|
||||
if: data_version > 0
|
||||
chunk_data_list:
|
||||
seq:
|
||||
- id: version
|
||||
type: u1
|
||||
- id: count
|
||||
type: u4
|
||||
- id: guids
|
||||
size: 16
|
||||
repeat: expr
|
||||
repeat-expr: count
|
||||
- id: ue_hashes
|
||||
type: u8
|
||||
repeat: expr
|
||||
repeat-expr: count
|
||||
- id: sha_hashes
|
||||
size: 20
|
||||
repeat: expr
|
||||
repeat-expr: count
|
||||
- id: group_nums
|
||||
type: u1
|
||||
repeat: expr
|
||||
repeat-expr: count
|
||||
- id: window_sizes
|
||||
type: u4
|
||||
repeat: expr
|
||||
repeat-expr: count
|
||||
- id: file_sizes
|
||||
type: u4
|
||||
repeat: expr
|
||||
repeat-expr: count
|
||||
file_manifest_list:
|
||||
seq:
|
||||
- id: version
|
||||
type: u1
|
||||
- id: count
|
||||
type: u4
|
||||
- id: filenames
|
||||
type: fstring
|
||||
repeat: expr
|
||||
repeat-expr: count
|
||||
- id: symlink_targets
|
||||
type: fstring
|
||||
repeat: expr
|
||||
repeat-expr: count
|
||||
- id: sha_hashes
|
||||
size: 20
|
||||
repeat: expr
|
||||
repeat-expr: count
|
||||
- id: flags
|
||||
type: u1
|
||||
enum: file_flags
|
||||
repeat: expr
|
||||
repeat-expr: count
|
||||
- id: tags
|
||||
type: tags
|
||||
repeat: expr
|
||||
repeat-expr: count
|
||||
- id: chunk_parts
|
||||
type: chunk_parts
|
||||
repeat: expr
|
||||
repeat-expr: count
|
||||
- id: md5_hashes
|
||||
if: version > 0
|
||||
type: md5_hash
|
||||
repeat: expr
|
||||
repeat-expr: count
|
||||
- id: mime_types
|
||||
if: version > 0
|
||||
type: fstring
|
||||
repeat: expr
|
||||
repeat-expr: count
|
||||
- id: sha256_hashes
|
||||
if: version > 1
|
||||
size: 32
|
||||
repeat: expr
|
||||
repeat-expr: count
|
||||
custom_fields:
|
||||
seq:
|
||||
- id: version
|
||||
type: u1
|
||||
- id: count
|
||||
type: u4
|
||||
- id: keys
|
||||
type: fstring
|
||||
repeat: expr
|
||||
repeat-expr: count
|
||||
- id: values
|
||||
type: fstring
|
||||
repeat: expr
|
||||
repeat-expr: count
|
||||
fstring:
|
||||
seq:
|
||||
- id: length
|
||||
type: s4
|
||||
- id: value_ascii
|
||||
size: length
|
||||
type: str
|
||||
encoding: 'ASCII'
|
||||
if: length >= 0
|
||||
- id: value_utf16
|
||||
size: -2 * length
|
||||
type: str
|
||||
encoding: 'UTF-16LE'
|
||||
if: length < 0
|
||||
instances:
|
||||
value:
|
||||
value: 'length >= 0 ? value_ascii : value_utf16'
|
||||
if: length >= 0 or length < 0
|
||||
tags:
|
||||
seq:
|
||||
- id: count
|
||||
type: u4
|
||||
- id: tag
|
||||
type: fstring
|
||||
repeat: expr
|
||||
repeat-expr: count
|
||||
chunk_parts:
|
||||
seq:
|
||||
- id: count
|
||||
type: u4
|
||||
- id: elements
|
||||
type: chunk_part_entry
|
||||
repeat: expr
|
||||
repeat-expr: count
|
||||
chunk_part_entry:
|
||||
seq:
|
||||
- id: entry_size
|
||||
type: u4
|
||||
- id: chunk_part
|
||||
type: chunk_part
|
||||
size: entry_size - 4
|
||||
chunk_part:
|
||||
seq:
|
||||
- id: guid
|
||||
size: 16
|
||||
- id: offset
|
||||
type: u4
|
||||
- id: size
|
||||
type: u4
|
||||
md5_hash:
|
||||
seq:
|
||||
- id: has_md5
|
||||
type: u4
|
||||
- id: md5
|
||||
size: 16
|
||||
if: has_md5 != 0
|
||||
instances:
|
||||
body:
|
||||
value: 'header.stored_as == stored_as_flag::compressed ? body_compressed : body_uncompressed'
|
||||
if: header.stored_as == stored_as_flag::compressed or header.stored_as == stored_as_flag::uncompressed
|
||||
enums:
|
||||
stored_as_flag:
|
||||
0x0: uncompressed
|
||||
0x1: compressed
|
||||
file_flags:
|
||||
0x0: none
|
||||
0x1: read_only
|
||||
0x2: compressed
|
||||
0x4: unix_executable
|
Loading…
Reference in a new issue