This is the specifications for the image file which is handled by the Game Extractor plugin Viewer_TBV_TBVOL_BMX.

Endian Order:Little Endian
Compression:Custom RLE, LZO1X
Encryption:None


This format is used by the following Games:
3D Ultra Lionel Traintown *.bmx


This is the format specification information:
 
// HEADER
  4 - Header? (237,95,132,0)
  4 - Unknown (4)
  4 - Pixel Type (1=Grayscale, 2=RGB555)
  4 - File Data Length
  for most {
    48 - null
    }
  for some (only ones with LZO1X compression?) {
    4 - Unknown
    12 - null
    4 - Unknown
    4 - Unknown (1)
    4 - Unknown
    }
  
// DETAILS DIRECTORY
  4 - Number of Sprites
  
  // for each sprite
    4 - Offset (relative to the offset of this field)
    2 - X Position?
    2 - Y Position?
    2 - Sprite Width
    2 - Sprite Height
    2 - Unknown (32)
    2 - Compression Type (0=Raw RGB555, 1=RLE, 3=LZO1X+RGB555, 4=LZO1X+RLE, 5=Empty?)
    
// FILE DATA
  // for each file
    if (Compression Type == 0){
      if (PixelType == 1){
        X - Pixel Data (Grayscale)
        }
      else if (PixelType == 2){
        X - Pixel Data (RGB555)
        }
      }
    else if (Compression Type == 1){
      X - File Data (RLE encoding){
        // for each line {
          2 - Block Length
          X - Block {
            // repeat until we have a pixel for each of the sprite width {
              1 - Control Character (<128 = copy pixels raw, >128 = Repeat the next pixel X-128 times)
              X - Pixels (2-byte RGB555)
              }
            1 - null End Of Line character
        }
      }
    else if (Compression Type == 3){
      4 - Compressed Data Length
      4 - Decompressed Data Length
      X - File Data (Uncompress using LZO1X and then read RGB555 as per Compression Type 0){
      }
    else if (Compression Type == 4){
      4 - Compressed Data Length
      4 - Decompressed Data Length
      X - File Data (Uncompress using LZO1X and then apply RLE as per Compression Type 1){
      }
    else if (Compression Type == 5){
      1 - null
      }


These are the accompanying notes and further information:
 
An Image made up of lots of sprites.
Uses a basic type of RLE encoding. Also sometimes uses LZO1X compression on the RLE data.


Game Extractor is able to read files of this type, as well as files from thousands of other games. To give it a try, download Game Extractor (Basic Version) for free, and see what it can do.

For further information on this format, refer to the source code on our GitHub repository.