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 (padding)
// 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 / entry type / image type
   3 bytes (uint24) - size of the block
   2 bytes (uint16) - image width
   2 bytes (uint16) - image 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 padding  // up to 16 bytes, filled with nulls
   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  // e.g. 1024 bytes for 256-color palette


Entry Types

This format can handle several different entry types (record IDs).
All known types are listed below.

Entry Type (dec/hex) Format Description Example Games Using This Format
1 / 0x01 unknown 4-bit image + palette Medal of Honor Frontline (PS2)
2 / 0x02 unknown 8-bit image with 256-colors swapped palette FIFA 09 (PS2)
MVP Baseball 2005 (PS2)
NHL 2002 (PS2)
4 / 0x04 unknown 8-bit image wihout palette Medal of Honor Frontline (PS2)
Medal of Honor Vanguard (PS2)
5 / 0x05 unknown 32-bit image without palette Medal of Honor Frontline (PS2)
14 / 0x0E unknown 8-bit with custom EA swizzle?? MVP Baseball 2005 (PS2)
33 / 0x21 unknown 256-colors palette unknown
34 / 0x22 Palette 18 18-bit palette unknown
35 / 0x23 unknown 16-colors palette OR 256-colors 15-bit palette NBA Live 97 (PS1)
36 / 0x24 Palette 24 24-bit palette unknown
41 / 0x29 Palette 16 16-bit palette unknown
42 / 0x2A Palette 32 32-bit palette unknown
45 / 0x2D Palette 15 15-bit palette unknown
59 / 0x3B unknown unknown Madden (PSP)
64 / 0x40 R5G5B5P1 4-bit image with 16-colors palette (palette type 35) NBA Live 97 (PS1)
ReBoot (PS1)
65 / 0x41 R5G5B5P1 8-bit image with 256-colors palette (15 bits per color in palette) (palette type 35) NBA Live 97 (PS1)
ReBoot (PS1)
66 / 0x42 R5G5B5P1 16-bit image, no palette NBA Live 97 (PS1)
ReBoot (PS1)
...
91 / 0x5B unknown 32-bit image with swapped RGB, no palette unknown
92 / 0x5C unknown unknown Madden (PSP)
93 / 0x5D unknown unknown Madden (PSP)
96 / 0x60 DXT1 compressed image, DXT1 4x4 packed, 1-bit alpha SimCity 4 Deluxe (PC)
97 / 0x61 DXT3 compressed image, DXT3 4x4 packed, 4-bit alpha SimCity 4 Deluxe (PC)
98 / 0x62 DXT5 compressed image, DXT5 unknown
99 / 0x63 ETC1 PVR image unknown
100 / 0x64 PVRTC 4bpp RGB PVR image unknown
102 / 0x66 6666 24-bit image unknown
104 / 0x68 484 16-bit image without alpha channel unknown
105 / 0x69 - metal bin attachment Almost all EA games
106 / 0x6A 1010102 32-bit image with 10-bit RGB channels and 2-bit alpha channel unknown
109 / 0x6D 4444 16-bit A4R4G4B4 unknown
111 / 0x6F - comment binary attachment unknown
112 / 0x70 - image name binary attachment Almost all EA games
120 / 0x78 565 16-bit A0R5G6B5 unknown
121 / 0x79 PAL4 image with palette (16 colors) unknown
123 / 0x7B PAL8 image with palette (256 colors) SimCity 4 Deluxe (PC)
124 / 0x7C - hot spot / pix region unknown
125 / 0x7D 8888 32-bit A8R8G8B8 SimCity 4 Deluxe (PC)
126 / 0x7E 5551 16-bit A1R5G5B5 unknown
127 / 0x7F 888 24-bit A0R8G8B8 SimCity 4 Deluxe (PC)
...
131 / 0x83 unknown refpack compressed 16-bpp image (no palette) FIFA 09 (PS2)

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, ART and PSP extensions.
  • 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
  • MVP 07: NCAA Baseball (PS2)
  • MVP Baseball 2005 (PS2)
  • NBA Live 97 (PS1) (*.PSH / *.PSP / *.ART)
  • 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)
  • ReBoot (PS1) (*.PSH)
  • SimCity 4 Deluxe (PC) (*.FSH)
  • SSX Tricky
  • UEFA Euro 2004

Supported Programs

quickBMS Scripts

Noesis Scripts

See Also



Gallery