digraph {
rankdir=LR;
node [shape=plaintext];
subgraph cluster__gran_turismo_vol {
label="GranTurismoVol";
graph[style=dotted];
gran_turismo_vol__seq [label=<
pos | size | type | id |
0 | 8 | | magic |
8 | 2 | u2le | num_files |
10 | 2 | u2le | num_entries |
12 | 4 | | reserved |
16 | 4 | u4le | offsets |
repeat num_files times |
>];
gran_turismo_vol__inst__ofs_dir [label=<
id | value |
ofs_dir | offsets[1] |
>];
gran_turismo_vol__inst__files [label=<
pos | size | type | id |
(ofs_dir & 4294965248) | 32 | FileInfo | files |
repeat _root.num_entries times |
>];
subgraph cluster__file_info {
label="GranTurismoVol::FileInfo";
graph[style=dotted];
file_info__seq [label=<
pos | size | type | id |
0 | 4 | u4le | timestamp |
4 | 2 | u2le | offset_idx |
6 | 1 | u1 | flags |
7 | 25 | str(ASCII) | name |
>];
file_info__inst__size [label=<
id | value |
size | ((_root.offsets[(offset_idx + 1)] & 4294965248) - _root.offsets[offset_idx]) |
>];
file_info__inst__body [label=<
pos | size | type | id |
(_root.offsets[offset_idx] & 4294965248) | size | | body |
>];
file_info__inst__is_dir [label=<
id | value |
is_dir | (flags & 1) != 0 |
>];
file_info__inst__is_last_entry [label=<
id | value |
is_last_entry | (flags & 128) != 0 |
>];
}
}
gran_turismo_vol__seq:num_files_type -> gran_turismo_vol__seq:offsets__repeat [color="#404040"];
gran_turismo_vol__seq:offsets_type -> gran_turismo_vol__inst__ofs_dir [color="#404040"];
gran_turismo_vol__inst__ofs_dir:ofs_dir_type -> gran_turismo_vol__inst__files:files_pos [color="#404040"];
gran_turismo_vol__inst__files:files_type -> file_info__seq [style=bold];
gran_turismo_vol__seq:num_entries_type -> gran_turismo_vol__inst__files:files__repeat [color="#404040"];
gran_turismo_vol__seq:offsets_type -> file_info__inst__size [color="#404040"];
file_info__seq:offset_idx_type -> file_info__inst__size [color="#404040"];
gran_turismo_vol__seq:offsets_type -> file_info__inst__size [color="#404040"];
file_info__seq:offset_idx_type -> file_info__inst__size [color="#404040"];
gran_turismo_vol__seq:offsets_type -> file_info__inst__body:body_pos [color="#404040"];
file_info__seq:offset_idx_type -> file_info__inst__body:body_pos [color="#404040"];
file_info__inst__size:size_type -> file_info__inst__body:body_size [color="#404040"];
file_info__seq:flags_type -> file_info__inst__is_dir [color="#404040"];
file_info__seq:flags_type -> file_info__inst__is_last_entry [color="#404040"];
}