Microsoft Train Simulator

With TrainSimulator MS are using a proprietory Graphics format for the various textures annd images. This "ACE" format comes in several different flavours :-

32 Bit   Scanlines divided into blocks of R,G,B and A. Fully mipped
24 bit   Scanlines divided into blocks of R, G and B. Fully mipped
24 Bit + Alpha   Scanlines divided into blocks of R, G and B followed by block of 1 bit alpha. Doesn`t seem to be mipped
DXT1   DirectDrawSurface DXT1 16 bit fully mipped. These textures must be square and "power of 2" in size.
DXT1A   DXT1 with 1-bit Alpha. Fully mipped. These textures must be square and "power of 2" in size.
Compressed   Any of the above with zlib compression applied.

I have extended mwgfx.dll to support all these formats. This means that all my Graphics programs can be used to view and convert the supported ACE types. The program TgaTool2 has been specially written just for dealing with ACE and Targa.

Other things have been discovered about the usage of textures in Trainsim over recent months. In particular it has become evident that internally all textures are displayed using only 16 bit colour. This has interesting effects that may alter the type of texture to use for a particular job in order to get the best visual effect.

Texture Format

  Displays as...

24 bit

  16 bit 565 (64k colours)

24 bit + Trans

  16 bit 555-1 (32k colours + 1 bit alpha)

32 bit

  16 bit 444-4 (4096 colours + 4 bit alpha)

DXT1/DXT1A 16 bit 565

  16 bit 565 (64k colours + 1 bit alpha)

As can be seen from this table the worst displaying format is actually 32 bit. This is because in order to incorporate the alpha channel the amount of colour depth available is only 12 bits. This equates to only 4096 colours so will show very noticeable colour banding and blotching where shades of a similar colour are used. Unless you absolutely require a multi-level alpha channel you should avoid using 32 bit wherever possible. If the required alpha is just a simple on/off transparency then use 24 bit + Trans or DXT1A. If no transparency is required then use 24 bit or DXT1