The ACX file format

The .acx file format is used to store static, structured data. It is essentially the predecessor to the .ex format. Unlike .ex, .acx files can only represent tables, and each file can only contain a single table.

ACX Header

Size (Bytes) Name Description
8 magic ‘ACX’ followed by 5 zero bytes
4 compressed_size Size of the uncompressed data
4 uncompressed_size Size of the compressed data
compressed_size data The compressed data (zlib DEFLATE)

Table Header

The uncompressed data has the following structure.

Size (Bytes) Name Description
4 column_count The number of columns in the table
column_count * 4 column_types The types of each column
4 row_count The number of rows in the table

Column Types

Value Type Description
0 int 32-bit integer
1 float 32-bit float (probably…)
2 string Null-terminated string

Table Data

Immediately following the table header is the table data, in row-major order. Because columns can contain strings, each row has a variable width. You should consult the column_types list from the table header to determine the type of data in each cell.

There is no structure to this data beyond being a list of column_count * row_count cells. Strings are null-terminated; everything else is 4-bytes.