Trainz CDP file format ====================== numbers (int32, float) are stored in little-endian format string = null terminated string file ==== length type value 4 char[4] "ACS$" 4 int32 version ? 4 int32 0x00000000 ? 4 int32 file length block ===== length type value 4 int32 block length (= 1 + X + 1 + Y) 1 int8 block name length X string block name 1 int8 block value type Y block value (can be zero length) block value types ----------------- 0x00 block 0x01 int32 (or array of that) 0x02 float32 (or array of that) 0x03 string (null terminated) 0x04 file content (if content[4]==0 then plaintext, otherwise compressed) if parent block == "files" then content = uncompressed file length (int32) + [ 0 ] + file else if parent block == "thumbnail" then content = file 0x05 block name is a reference to an external file ?? 0x0d kuid = 2x int32