TIM (PlayStation graphics)

From Just Solve the File Format Problem
Revision as of 14:51, 25 August 2023 by Foxtrot (Talk | contribs)

Jump to: navigation, search
File Format
Name TIM (PlayStation graphics)
Ontology
Extension(s) .tim
Kaitai Struct Spec psx_tim.ksy

TIM, or PSX TIM, is an uncompressed raster image file format associated with the Sony PlayStation family of video game consoles.

It supports 4- and 8-bit paletted images, and 15- and 24-bit full color images.

See also TIM2.

Contents

Identification

Files begin with (hex) bytes 10 00 00 00.

Structure

This content was first retrieved from the Internet Archive's Wayback Machine for the date 2017-11-03 from the following URL: https://web.archive.org/web/20171103172802/http://rewiki.regengedanken.de/wiki/.TIM

A TIM file contains one uncompressed bitmap. It starts with this header:

typedef struct {
	unsigned long	magic;	/* Constant = 0x10 */
	unsigned long	type;
	unsigned long	offset; /* allways Size of Clut data + 12 */
	unsigned short	Palette Org X;
	unsigned short	Palette Org Y;
	unsigned short	palette_colors;
	unsigned short	nb_palettes;
} tim_header_t;
  • type can be:
    • 0x08 for 4 bits paletted images
    • 0x09 for 8 bits paletted images
    • 0x02 for 16 bits true-colour images.
  • offset is an offset to start of image data.
  • nb_palettes is the number of palettes stored in the file, each palette having palette_colors colors.

Palettes

In the case of paletted images, palettes are following the header in the file. Each color is coded in a 16-bits RGB value, which format is A1B5G5R5. There are 'palette_colors'*'nb_palettes' values stored.

Image header

After the optionnal palettes, come the image header. The width is in 16bit words, it means the real width in pixel is width*4 for 4-bits paletted images, width*2 for 8-bits paletted images and width for 16-bits paletted images.

typedef struct {
	unsigned short	width;	/* Width of image in 16-bits words */
	unsigned short	height; /* Height of image in pixels */
} tim_size_t;

Image data

  • 4 bits images: Each pixel is stored in 4 bits (so 2 pixels per byte), bits 7-4 for first pixel, and bits 3-0 for second pixel. The value is an index in a palette stored in the beginning of the file.
  • 8 bits images: Each pixel is stored in a byte, which is an index in a palette stored in the beginning of the file.
  • 16 bits images: Each pixel is in A1B5G5R5 format.

Software

Sample files

Resources

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox