From FIFA Manager Modding Wiki

FSH (possibly, File Shape) is an internal image type in FIFA Manager. It was used since Premier-League Managers era. It supports DXT-compression and mipmapping. The file may contain multiple images.

Structure[edit | edit source]

The file starts with a header:

CHAR[4] - signature - "SHPI"
UINT32  - total file size
UINT32  - images count
CHAR[4] - tag (usually "G359")
#FOR images count
CHAR[4] - tag
UINT32  - offset to image data
// if there's a space (16-bytes alignment), "Buy ERTS" string is added

The header is followed by images.

Image data[edit | edit source]

Image data is an array of sections, including pixels data section, name section and other. Sections are aligned with 16 bytes. Each section starts with a header:

UINT8   - section type
UINT24  - offset to next section

After the header, section information is followed, which is individual for each section type.

Section: Pixel data[edit | edit source]

Section type (Hex) Format Description
7D 8888 32-bit image with alpha channel (8 bit)
7F 888 24-bit image without alpha channel
6D 4444 16-bit image with alpha channel (4 bit)
7E 5551 16-bit image with alpha channel (1 bit)
78 565 16-bit image without alpha channel
79 PAL4 image with palette (16 colors)
7B PAL8 image with palette (256 colors)
66 6666 24-bit image
68 484 16-bit image without alpha channel
6A 1010102 32-bit image with 10-bit RGB channels and 2-bit alpha channel
60 DXT1 compressed image (DXT1)
61 DXT3 compressed image (DXT3)
62 DXT5 compressed image (DXT5)
63 ETC1 PVR image
64 PVRTC 4bpp RGB PVR image
24 Palette 24 24-bit palette
2A Palette 32 32-bit palette
2D Palette 15 15-bit palette
29 Palette 16 16-bit palette
22 Palette 18 18-bit palette
UINT16  - width
UINT16  - height
UINT16  - center X
UINT16  - center Y
UINT12  - left X
UINT1   - internal flag (used to check if the data is owned by section)
UINT3   - unknown
UINT12  - top Y
UINT4   - levels count (mipmaps)
CHAR[]  - pixels

Usually there's only one pixel data in the image. The image contains 2 pixel datas when palette is used: pixels in first data and palette in second. For palette section, the "width" parameter is set to 16 or 256, depending on palette colors count. The "height" parameter is always 1. The "center X" parameter is the same with "width" parameter. All other parameters are usually set to 0.

Section: Image name[edit | edit source]

Section type (Hex) Format Description
70 - Image name
CHAR[]  - name
CHAR    - terminating zero

Section: Metal bin[edit | edit source]

Section type (Hex) Format Description
69 - Metal bin
UINT16  - data size (always 64)
UINT16  - flags (0x10 - has data)
UINT64  - unknown (always 0)
CHAR[]  - data (always "EAGL64 metal bin attachment for runtime texture management")

Section: Comment[edit | edit source]

Section type (Hex) Format Description
6F - Comment
UINT32  - comment size
CHAR[]  - comment (string, includes terminating 0)

The comment usually contain the text in the following format:



%s - texture name
%d - texture type (1 - dynamic texture, 2 - static texture)
%d - mipmaps flag (1 - has mipmaps, 0 - no mipmaps)
%d - width
%d - height
%.8x - unique texture hash (hexadecimal) 

This information is used by the game texture-loading engine

Section: Hot spot[edit | edit source]

Section type (Hex) Format Description
7C - Hot spot
UINT32  - number of int pairs (one region = 3 pairs), so "9" means 3 regions
#FOR num regions
UINT32  - hot-spot id
UINT32  - unknown (0)
INT32   - left X
INT32   - top Y
INT32   - width
INT32   - height

Tools[edit | edit source]

FSHEd by Brien Smith

GoFSH by rivit

GoFSH! by Hercules

EA Graphics Editor by Brien Smith