.dat file format of Faster Than Light (FTL): GraphViz block diagram (.dot) source

Application

Faster Than Light (FTL)

File extension

dat

KS implementation details

License: CC0-1.0

This page hosts a formal specification of .dat file format of Faster Than Light (FTL) using Kaitai Struct. This specification can be automatically translated into a variety of programming languages to get a parsing library.

GraphViz block diagram source

ftl_dat.dot

digraph {
	rankdir=LR;
	node [shape=plaintext];
	subgraph cluster__ftl_dat {
		label="FtlDat";
		graph[style=dotted];

		ftl_dat__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
			<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
			<TR><TD PORT="num_files_pos">0</TD><TD PORT="num_files_size">4</TD><TD>u4le</TD><TD PORT="num_files_type">num_files</TD></TR>
			<TR><TD PORT="files_pos">4</TD><TD PORT="files_size">4</TD><TD>File</TD><TD PORT="files_type">files</TD></TR>
			<TR><TD COLSPAN="4" PORT="files__repeat">repeat num_files times</TD></TR>
		</TABLE>>];
		subgraph cluster__file {
			label="FtlDat::File";
			graph[style=dotted];

			file__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
				<TR><TD PORT="ofs_meta_pos">0</TD><TD PORT="ofs_meta_size">4</TD><TD>u4le</TD><TD PORT="ofs_meta_type">ofs_meta</TD></TR>
			</TABLE>>];
			file__inst__meta [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
				<TR><TD PORT="meta_pos">ofs_meta</TD><TD PORT="meta_size">...</TD><TD>Meta</TD><TD PORT="meta_type">meta</TD></TR>
			</TABLE>>];
		}
		subgraph cluster__meta {
			label="FtlDat::Meta";
			graph[style=dotted];

			meta__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
				<TR><TD PORT="len_file_pos">0</TD><TD PORT="len_file_size">4</TD><TD>u4le</TD><TD PORT="len_file_type">len_file</TD></TR>
				<TR><TD PORT="len_filename_pos">4</TD><TD PORT="len_filename_size">4</TD><TD>u4le</TD><TD PORT="len_filename_type">len_filename</TD></TR>
				<TR><TD PORT="filename_pos">8</TD><TD PORT="filename_size">len_filename</TD><TD>str(UTF-8)</TD><TD PORT="filename_type">filename</TD></TR>
				<TR><TD PORT="body_pos">...</TD><TD PORT="body_size">len_file</TD><TD></TD><TD PORT="body_type">body</TD></TR>
			</TABLE>>];
		}
	}
	ftl_dat__seq:files_type -> file__seq [style=bold];
	ftl_dat__seq:num_files_type -> ftl_dat__seq:files__repeat [color="#404040"];
	file__seq:ofs_meta_type -> file__inst__meta:meta_pos [color="#404040"];
	file__inst__meta:meta_type -> meta__seq [style=bold];
	meta__seq:len_filename_type -> meta__seq:filename_size [color="#404040"];
	meta__seq:len_file_type -> meta__seq:body_size [color="#404040"];
}