Microsoft Train Simulator was made by Kuju Entertainment, formed by a management buyout of the Simis game studio in 1998, according to Wikipedia. Many of the files that form part of the game are in one of a number of formats bearing the "SIMISA" signature. For the purposes of discussing the file formats, I will only label the outer-most format the "Simis file format"; inner formats will be identified separately, later.
The Simis file format is identified a 16 byte or longer signature and header, with the remainder of the file being an inner format/data. The formats can all be identified by reading the first 8 bytes.
Uncompressed Simis File Format
00000000 53 49 4D 49 53 41 40 40 40 40 40 40 40 40 40 40 SIMISA@@@@@@@@@@
Uncompressed files are simple; 16 fixed bytes ("SIMISA@@@@@@@@@@"), followed by the inner format/data.
Compressed Simis File Format
00000000 53 49 4D 49 53 41 40 46 .. .. .. .. 40 40 40 40 SIMISA@F....@@@@
00000010 78 9C x?
Compressed files are slightly more interesting; 8 fixed bytes ("SIMISA@F"), followed by a 4 byte unsigned integer containing the uncompressed size of the remaining data, and another 4 fixed bytes ("@@@@"). The data itself is compressed using zlib's DEFLATE algorithm, which is identified by the two bytes following the 16 bytes header; all subsequent data is the raw DEFLATE stream.
Unicode Text Simis File Format
00000000 FF FE 53 00 49 00 4D 00 49 00 53 00 41 00 40 00 ÿþS.I.M.I.S.A.@.
00000010 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 @.@.@.@.@.@.@.@.
00000020 40 00 @.
This format is a variation on uncompressed, but for a specific type of inner format: Unicode text encoded with UTF16-LE. In this situation, two things are done to the header:
- It is encoded as UTF16-LE characters like the inner format/data.
- A UTF16-LE byte order mark is pre-pended.
Inner Formats
Whether the Simis file is compressed or not does not affect the inner formats allowed; any format may be compressed or uncompressed with no differences beyond that compression and the header indicating as much. It is unclear, however, how the Unicode text format would be compressed so, as I have not found any examples within Microsoft Train Simulator, I am considering them distinct at this level.