EA SSH FSH Image

From XentaxWiki
Jump to: navigation, search

Choose archive extension:

SSH, FSH, MSH, XSH, PSH

  • Format Type : Image
  • Endian Order : Little Endian
  • Signature : SHPI / SHPP / SHPS / SHPX / SHPM


Format Specifications

// EA Graphics (FSH, SSH etc.)
// file format

// Note: Whole file may be compressed with LZSS or Huffman
// Note: Image data may be swizzled (XBOX only?)


// header
4 bytes (char) - signature  // "SHPI" for PC games
                            // "SHPP" for PS1 games
                            // "SHPS" for PS2 games
                            // "ShpX" or "SHPX" for XBOX games
                            // "SHPM" for PSP games
4 bytes (uint32) - total file size
4 bytes (uint32) - number of entries
4 bytes (char) - directory ID // e.g. "G354", "G264", "G266",
                              // "G290", "G315", "GIMX", G344"

// directory
num_of_entries *
{
   4 bytes (char) - entry tag  // e.g. "br02"
   4 bytes (uint32) - entry offset 
}

// optional binary attachment
// Note: this attachment is added only for 16 bytes alignment
8 bytes (char) - ID string  // "Buy ERTS"
x bytes - padding


// data
num_of_entries *
{
   // entry header - 16 bytes
   1 byte (uint8) - record ID  // logically ANDed with 0x7F value
   3 bytes (uint24) - size of the block
   2 bytes (uint16) - width
   2 bytes (uint16) - height
   2 bytes (uint16) - X axis coordinate (Center X)
   2 bytes (uint16) - Y axis coordinate (Center Y)
   2 bytes - X axis position (Left X pos.)[uint12] + internal flag [uint1] + unknown [uint3]
   2 bytes - Y axis position (Top Y pos.)[uint12] + levels count (mipmaps) [uint4]

   x bytes - image data 
   x bytes - optional palette (header + data)
   x bytes - optional binary attachments (header + data)
}


Format Specifications (FSH/ShpF type)

// NBA Live 06
// FSH file format

// litte endian/big endian

// header
4 bytes (char) - signature  // "ShpF"
4 bytes (uint32) - total file size
4 bytes (uint32) - number of images

// TODO - format is different, e.g. contains longer filenames


Binary Attachments Specifications

  • Metal Bin
// header
1 byte (uint8) - entry ID  // 0x69
3 bytes (uint24) - size of the block
2 bytes (uint16) - data size  // always 64
2 bytes (uint16) - flags  // 0x10 0x00 - has data
8 bytes (uint64) - unknown

// data
x bytes (char) - data + padding  // "EAGL64 metal bin attachment for runtime texture management"


  • Hot spot / Pix region
// header
1 byte (uint8) - entry ID  // 0x7C
3 bytes (uint24) - size of the block

4 bytes (uint32) - number of value pairs (one region = 3 pairs)  // 3 - 1 region
                                                                 // 6 - 2 regions
                                                                 // 9 - 3 regions

// pix regions
num_of_regions *
{
   4 bytes (char) - hot spot ID  // e.g. "afih"
   4 bytes (uint32) - unknown  // always 0?
   4 bytes (int32) - left X
   4 bytes (int32) - top Y
   4 bytes (int32) - width
   4 bytes (int32) - height
}
x bytes - padding


  • Image name
// header
1 byte (uint8) - entry ID  // 0x70
3 bytes (uint24) - size of the block

// data
x bytes (char) - image name + padding  // e.g. "tp01"


  • Comment
// header
1 byte (uint8) - entry ID  // 0x6F
3 bytes (uint24) - size of the block
4 bytes (uint32) - comment string length

// data
x bytes (char) - comment string + padding // e.g. "TXLY,tp01,1,0,256,128,0x00000000"


  • Palette
// header
1 byte (uint8) - entry ID 
3 bytes (uint24) - size of the block
2 bytes (uint16) - palette width // e.g. 16 or 256
2 bytes (uint16) - palette height // always 1
2 bytes (uint16) - number of palette entries // e.g. 16 or 256
2 bytes (uint16) - unknown // always 0
2 bytes (uint16) - unknown // always 0
2 bytes (uint16) - unknown

// palette data
x bytes - data  // 1024 bytes for 256-color palette


Entry Types

It seems that this format can handle several different entry types (record IDs).
List of known types is listed below.

Entry Type (dec/hex) Format Description
2 / 0x02  ? 8-bit skewed image with 256-colors swapped palette
33 / 0x21  ? 256-colors palette
34 / 0x22 Palette 18 18-bit palette
35 / 0x23  ? 16-colors palette OR 256-colors 15-bit palette
36 / 0x24 Palette 24 24-bit palette
41 / 0x29 Palette 16 16-bit palette
42 / 0x2A Palette 32 32-bit palette
45 / 0x2D Palette 15 15-bit palette
64 / 0x40  ? 4-bit image with 16-colors palette
65 / 0x41  ? 8-bit image with 256-colors palette (15 bits per color in palette)
66 / 0x42  ? 16-bit image, no palette
...
91 / 0x5B  ? 32-bit image with swapped RGB, no palette
96 / 0x60 DXT1 compressed image, DXT1 4x4 packed, 1-bit alpha
97 / 0x61 DXT3 compressed image, DXT3 4x4 packed, 4-bit alpha
98 / 0x62 DXT5 compressed image, DXT5
99 / 0x63 ETC1 PVR image
100 / 0x64 PVRTC 4bpp RGB PVR image
102 / 0x66 6666 24-bit image
104 / 0x68 484 16-bit image without alpha channel
105 / 0x69 - metal bin attachment
106 / 0x6A 1010102 32-bit image with 10-bit RGB channels and 2-bit alpha channel
109 / 0x6D 4444 16-bit A4R4G4B4
111 / 0x6F - comment binary attachment
112 / 0x70 - image name binary attachment
120 / 0x78 565 16-bit A0R5G6B5
121 / 0x79 PAL4 image with palette (16 colors)
123 / 0x7B PAL8 image with palette (256 colors)
124 / 0x7C - hot spot / pix region
125 / 0x7D 8888 32-bit A8R8G8B8
126 / 0x7E 5551 16-bit A1R5G5B5
127 / 0x7F 888 24-bit A0R8G8B8
...
131 / 0x83  ? refpack compressed 16-bpp image (no palette)

MultiEx BMS

Notes

  • Files using this file format are often stored inside BIG/VIV archives.
  • Whole files may be compressed with LZSS compression or with Huffman compression or with Refpack compression.
  • PS2 games uses SSH extension, PC games uses FSH extension, PSP games uses MSH extension,
    XBOX games uses XSH extension, PS1 games uses PSH extension.
  • Files from XBOX games can contain images which are swizzled with Morton Order algorithm.

Games

List of games using this file format:

  • Def Jam: Fight for NY
  • EA Cricket 2005 (PS2)
  • EA Cricket 07 (PS2)
  • FIFA Street 1 (PS2)
  • FIFA 2000 (PS1)
  • FIFA 2006 (XBOX/PC/PS2/PSP)
  • FIFA 2009
  • FIFA 14 (PS2/PSP)
  • Golden Eye Rogue Agent (PS2)
  • Harry Potter And The Chamber Of Secrets (PS2)
  • James Bond 007: Nightfire
  • Madden NFL 06 (PSP)
  • Medal of Honor: Rising Sun
  • Medal of Honor: Frontline
  • Medal of Honor: Vanguarg
  • NBA Live 97 (PS1)
  • NBA Live 06 (PC)
  • NBA Live 07 (XBOX)
  • Need For Speed [Special Edition]
  • Need For Speed II [Special Edition]
  • Need For Speed III: Hot Pursuit
  • Need For Speed: High Stakes
  • Need For Speed: Hot Pursuit II
  • Need For Speed: Porsche 2000
  • Need For Speed: Porsche Challenge
  • Need For Speed: Road Challenge
  • Need for Speed: Undercover (PSP) (*.MSH / SHPM)
  • NHL 2002 (PS2)
  • SSX Tricky
  • UEFA Euro 2004

Supported Programs

Noesis Scripts

See Also



Gallery