EA SSH FSH Image: Difference between revisions

From XentaxWiki
Jump to navigation Jump to search
imported>Ikskoks
imported>Ikskoks
 
(480 intermediate revisions by the same user not shown)
Line 3: Line 3:
Choose archive extension:  
Choose archive extension:  


== SSH ==  
== SSH, FSH, MSH, XSH, PSH, GSH ==  


* ''' Format Type ''':    Image <br>  
* ''' Format Type ''':    Image <br>  
* ''' [http://en.wikipedia.org/wiki/Endianness Endian Order] ''': Little Endian <br>  
* ''' [http://en.wikipedia.org/wiki/Endianness Endian Order] ''': Little Endian / Big Endian <br>
* ''' Signature ''':    SHPI / SHPP / SHPS / SHPX / SHPM / SHPG <br>  




=== Format Specifications (EA Cricket 2005) ===  
=== Format Specifications ===  


<tt><b>
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;">
char {4}&nbsp;&nbsp;&nbsp;&nbsp; - Magic <font color="purple">(SHPS)</font> <br>
<pre>
uint32 {4}&nbsp;&nbsp; - File Length <br>
// EA Graphics (FSH, SSH etc.)
uint32 {4}&nbsp;&nbsp; - <font color="red"> '' Version? <font color="purple">(1)</font> '' </font> <br>
// file format
char {4}&nbsp;&nbsp;&nbsp;&nbsp; - File Code <font color="purple">(G359)</font> <br>
 
char {4}&nbsp;&nbsp;&nbsp;&nbsp; - Filename <font color="purple">(batt)</font> <br>
// Note: Whole file may be compressed with LZSS or Huffman
uint32 {4}&nbsp;&nbsp; - <font color="red"> '' Header Size? <font color="purple">(48)</font> '' </font> <br>
// Note: Image data may be swizzled (XBOX only?)
char {4}&nbsp;&nbsp;&nbsp;&nbsp; - <font color="red"> '' Group Name? <font color="purple">(Buy )</font> '' </font> <br>
 
char {4}&nbsp;&nbsp;&nbsp;&nbsp; - ERTS Header <font color="purple">(ERTS)</font> <br>
 
byte {16}&nbsp;&nbsp;&nbsp; - null <br>
// header
uint32 {4}&nbsp;&nbsp; - <font color="red"> '' Decompressed Image Size? '' </font> <br>
4 bytes (char) - signature  // "SHPI" for PC games
uint16 {2}&nbsp;&nbsp; - Image Width/Height <br>
                            // "SHPP" for PS1 games
uint16 {2}&nbsp;&nbsp; - Image Width/Height <br>
                            // "SHPS" or "ShpS" for PS2 games
uint32 {4}&nbsp;&nbsp; - null <br>
                            //  SHPX" or "ShpX" for XBOX games
uint32 {4}&nbsp;&nbsp; - <font color="red"> '' Unknown <font color="purple">(8192)</font> '' </font> <br>  
                            // "SHPM" for PSP games
                            // "SHPG" for WII 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)
}
</pre>
</div>
<br>
<br>
byte {X}&nbsp;&nbsp;&nbsp;&nbsp; - Image Data <font color="purple">(up to fileLength-256)</font> <br>  
 
=== Format Specifications (FSH/ShpF type) ===
 
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;">
<pre>
// 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
</pre>
</div>
 
 
=== Binary Attachments Specifications ===
 
* Metal Bin
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:900px; overflow:auto;">
<pre>
// 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"
</pre>
</div>
<br>
<br>
char {4}&nbsp;&nbsp;&nbsp;&nbsp; - EAGL Header <font color="purple">(EAGL)</font> <br>
char {236}&nbsp;&nbsp; - Description <font color="purple">(240 metal bin attachment for runtime texture management)</font> <font color="purple">(null to fill)</font> <br>
uint32 {4}&nbsp;&nbsp; - <font color="red"> '' Unknown <font color="purple">(112)</font> '' </font> <br>
char {4}&nbsp;&nbsp;&nbsp;&nbsp; - Filename <font color="purple">(batt)</font> <br>
uint64 {8}&nbsp;&nbsp; - null <br>
</b></tt>


* Hot spot / Pix region
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:900px; overflow:auto;">
<pre>
// 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
</pre>
</div>
<br>
* Image name
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:900px; overflow:auto;">
<pre>
// header
1 byte (uint8) - entry ID  // 0x70
3 bytes (uint24) - size of the block


=== Format Specifications (NHL 2002) ===
// data
x bytes (char) - image name + padding  // e.g. "tp01"
</pre>
</div>
<br>


<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;">
* Comment
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:900px; overflow:auto;">
<pre>
<pre>
// NHL 2002
// header
// SSH file format
1 byte (uint8) - entry ID  // 0x6F
3 bytes (uint24) - size of the block
4 bytes (uint32) - comment string length


// little endian
// data
x bytes (char) - comment string + padding // e.g. "TXLY,tp01,1,0,256,128,0x00000000"
</pre>
</div>
<br>


* Palette
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:900px; overflow:auto;">
<pre>
// header
// header
6 bytes - unknown
1 byte (uint8) - entry ID
4 bytes (char) - magic // "SHPS"
3 bytes (uint24) - size of the block
4 bytes (uint32) - some size?
2 bytes (uint16) - palette width // e.g. 16 or 256
4 bytes (uint32) - unknown  // "8" or "9"
2 bytes (uint16) - palette height // always 1
4 bytes (char) - file type // e.g. "GIMX"
2 bytes (uint16) - number of palette entries // e.g. 16 or 256
4 bytes (char) - file name // e.g. "body"
2 bytes (uint16) - unknown // always 0
55 bytes - unknown
2 bytes (uint16) - unknown // always 0
2 bytes (uint16) - unknown


x bytes - compressed data   // compressed with LZSS
// palette data
x bytes - data // e.g. 1024 bytes for 256-color palette
</pre>
</pre>
</div>
</div>
<br>
=== Entry Types ===
This format can handle several different entry types (record IDs).<br>
All known types are listed below.<br>
{| class="wikitable sortable"
|-
!    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) <br>MVP Baseball 2005 (PS2) <br>NHL 2002 (PS2)  <br> Medal of Honor Frontline (PS2)
|-
|    4  / 0x04                || r8g8b8          || 24-bit image wihout palette                                || Medal of Honor Frontline (PS2)  <br>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)  <br>FIFA Street (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)
|-


=== MultiEx BMS ===
|    36 / 0x24                || Palette 24        || 24-bit palette                                          || unknown
|-


Not written yet.
|    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                || Palette          || Palette                                                || Madden 08 (PSP)
|-
 
 
|    64 / 0x40                || R5G5B5P1          || 4-bit image with 16-colors palette (palette type 35)                    || NBA Live 97 (PS1) <br> 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) <br> ReBoot (PS1)
|-
 
|    66 / 0x42                || R5G5B5P1            || 16-bit image, no palette                                || NBA Live 97 (PS1) <br> ReBoot (PS1)
|-
 
| ...
|-
 
|    91  / 0x5B                || unknown          || 32-bit image with swapped RGB, no palette          || unknown
|-
 
|    92  / 0x5C                || unknown          || unknown                                            || Madden 08 (PSP)
|-
 
|    93  / 0x5D                || unknown          || 8-bit image with palette and PSP swizzling (R8G8B8A8)    || Madden 08 (PSP)    <br>Fight Night Round 3 (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)
|-
 
| ...
|-
 
|    130 / 0x82              || unknown              || refpack compressed                                    || SSX Tricky?
|-
 
|    131 / 0x83              || unknown              || refpack compressed 16-bpp image (no palette)            || FIFA 09 (PS2)
|-
 
|}


=== Notes ===  
=== Notes ===  
* Some files inside SSH container may be compressed with LZSS compression or with Huffman compression.
* Files using this file format are often stored inside [[Different versions of EA BIG/VIV archives|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, <br>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.
* Similarities:
** Image types 3 and 66 seems to be the same.


=== Games ===  
=== Games ===  
List of games using this file format:
List of games using this file format:
* Def Jam: Fight for NY
* EA Cricket 2005 (PS2)
* EA Cricket 2005 (PS2)
* EA Cricket 07 (PS2)
* EA Cricket 07 (PS2)
* FIFA Street 1 (PS2)
* FIFA Street 1 (PS2)
* FIFA 2000 (PS1)
* FIFA 2006 (XBOX/PC/PS2/PSP)
* FIFA 2009
* FIFA 2009
* FIFA 14 (PS2/PSP)
* Fight Night Round 3
* Golden Eye Rogue Agent (PS2)
* Harry Potter And The Chamber Of Secrets (PS2)
* Harry Potter And The Chamber Of Secrets (PS2)
* James Bond 007: Nightfire
* James Bond 007: Nightfire (other than PC release)
* Madden NFL 06 (PSP)
* Madden NFL 08 (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 2001
* NHL 2002 (PS2)
* NHL 2002 (PS2)
* NHL 2003
* NHL 2004
* NHL 2005
* NHL 2006
* NHL 2007
* NHL 2008
* NHL 2009
* ReBoot (PS1) (*.PSH)
* SimCity 4 Deluxe (PC) (*.FSH)
* SSX Tricky
* UEFA Euro 2004


=== Supported Programs ===  
=== Supported Programs ===  


* [https://forums.nba-live.com/downloads.php?view=detail&df_id=3215 EA Graphics Tools] (works with FIFA 2009 & FIFA Street 1)
* [https://github.com/bartlomiejduda/EA-Graphics-Manager EA Graphics Manager]
* [https://www.nba-live.com/nbalivewiki/index.php/EA_Graphics_Editor EA Graphics Editor]
* [https://forums.nba-live.com/downloads.php?view=detail&df_id=3215 EA Graphics Tools] (works with '''SSH/SHPS''' type, but only with some games like FIFA 2009 & FIFA Street 1)
* [https://forums.nba-live.com/downloads.php?view=detail&df_id=66 FshEd]
* [https://www.nba-live.com/nbalivewiki/index.php/EA_Graphics_Editor EA Graphics Editor] (works with '''FSH/SHPI''' type e.g. SimCity 4 Deluxe)
* [https://forums.nba-live.com/downloads.php?view=detail&df_id=66 FshEd] (works with '''FSH/SHPI''' type e.g. SimCity 4 Deluxe)
* [https://www.nfsplanet.com/cars_info.php?id=277&lang=eng Fsh Tool] / [https://forums.nba-live.com/downloads.php?view=detail&df_id=11 nFsh Tool] (works with '''FSH/SHPI''' type e.g. SimCity 4 Deluxe)
* [https://forums.nba-live.com/downloads.php?view=detail&df_id=3290 FshLine] (works with '''FSH/ShpF''' type, eg. NBA Live 06 PC AND with '''FSH/SHPI''' type e.g. SimCity 4 Deluxe)
* [https://forums.nba-live.com/downloads.php?view=detail&df_id=8 FshX] / [https://forums.nba-live.com/downloads.php?view=detail&df_id=9 FshX (for Vista)] (works with '''FSH/ShpF''' type, e.g. NBA Live 06 PC)
* [https://forums.nba-live.com/downloads.php?view=detail&df_id=13 NBA 2006 Jersey Raptor] (works with '''FSH/ShpF''' type, eg. NBA Live 06 PC)
* [https://community.simtropolis.com/files/file/23407-gofsh-fsh-texture-editor/ GoFSH - FSH Texture Editor] (works with '''FSH/SHPI''' type e.g. SimCity 4 Deluxe)
* [https://forum.xentax.com/viewtopic.php?p=26281#p26281 ExplodePSH] (works with '''PSH/SHPP''' type e.g. NBA Live 97 PS1)
* [https://github.com/bartlomiejduda/Tools/blob/master/NEW%20Tools/NHL%202002%20PS2/NHL_2002_PS2_Tool.py NHL_2002_PS2_Tool.py] (works with '''SSH/SHPS''' type and partially with other types - research in progress)
* [https://forums.nba-live.com/downloads.php?view=detail&df_id=29 GFXPack]
* [[Game Archive UnPacker (GAUP plugin)|GAUP Plugin]]
* [https://community.simtropolis.com/files/file/21281-fishman-beta-v020/ FiSHMan]
* [https://sc4devotion.com/csxlex/lex_filedesc.php?lotGET=2250 FSHLib]
* [https://community.simtropolis.com/files/file/21368-sc4tool-english/ SC4Tool]
* [https://github.com/GlitcherOG/SSX-Collection-Multitool SSX-Collection-Multitool]
* [https://community.simtropolis.com/files/file/21343-ilive-reader-093/ iLive - Reader]
* [https://drive.google.com/file/d/0B2HAAT4ognPFQndKRVZ4am1NUk0/view NHLINFO] (Tool for older NHL games)
* [http://www.fifaserwis.com/fifa99/download/file/fsh-editor/43 FSH Editor]
* [https://bitbucket.org/fifam/otools/src/master/ otools]
* [https://www.logipole.com/konvertor-en.htm Konvertor]
* PSicture (works with PSH files)
 
=== quickBMS Scripts ===
 
* [https://github.com/bartlomiejduda/EA-Graphics-Manager/blob/main/src/scripts/multiple_ea_images_in_one_archive_script.bms multiple_ea_images_in_one_archive_script.bms]
* [https://forum.xentax.com/viewtopic.php?p=33280#p33280 SSH SHPS script]
 
=== Noesis Scripts ===
 
* [https://github.com/bartlomiejduda/EA-Graphics-Manager/blob/main/src/scripts/ea_graph_man_noesis_script.py ea_graph_man_noesis_script.py]
* [https://forum.xentax.com/viewtopic.php?p=177561#p177561 tex_EA_LosAngeles_ssh]
* [https://forum.xentax.com/viewtopic.php?p=177216#p177216 tex_EA_xsh]
 
=== See Also ===
 
* [https://wiki.sc4devotion.com/index.php?title=FSH_Format FSH file format (SC4 wiki)]
* [https://fifam.miraheze.org/wiki/FSH FSH file format (FIFA wiki)]
<br><br>


==Gallery==
==Gallery==
<gallery bordercolor="transparent" spacing="small" orientation="landscape">
<gallery bordercolor="transparent" spacing="small" orientation="landscape">
ea_graphics_tools.png
ea_graphics_manager.png|EA Graphics Manager
ea_graphics_tools.png|EA Graphics Tools
FshX.png|FshX
ea_graphics_editor.png|EA Graphics Editor
fsh_ed.png|Fsh Ed
n_fsh_tool.png|nFsh Tool<br>
nba_jersey_raptor.png|NBA Jersey Raptor
go_fsh.png|GoFSH
explode_psh.png|ExplodePSH
</gallery>
</gallery>


Line 90: Line 432:




[[Category:Complete Almost Done|EA SSH Image]]
[[Category:Platform PC|EA SSH Image]]
[[Category:Platform PS1|EA SSH Image]]
[[Category:Platform PS2|EA SSH Image]]
[[Category:Platform PSP|EA SSH Image]]
[[Category:Platform XBOX|EA SSH Image]]
[[Category:CE None|EA SSH Image]]
[[Category:CE Compressed|EA SSH Image]]
[[Category:LZSS compression]]
[[Category:Huffman compression]]
[[Category:Refpack compression]]
[[Category:Format_Image | Type: Image]]
[[Category:Format_Image | Type: Image]]
[[Category:Extension_fsh | Extension: fsh]]
[[Category:Extension_ssh | Extension: ssh]]
[[Category:Extension_ssh | Extension: ssh]]
[[Category:BMS_None | BMS: None]]
[[Category:Extension_psh | Extension: psh]]
[[Category:Extension_msh | Extension: msh]]
[[Category:Extension_xsh | Extension: xsh]]
[[Category:File Format]]
[[Category:File Format]]

Latest revision as of 21:48, 1 August 2023

Choose archive extension:

SSH, FSH, MSH, XSH, PSH, GSH

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


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" or "ShpS" for PS2 games
                            //  SHPX" or "ShpX" for XBOX games
                            // "SHPM" for PSP games
                            // "SHPG" for WII 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)
Medal of Honor Frontline (PS2)
4 / 0x04 r8g8b8 24-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)
FIFA Street (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 Palette Palette Madden 08 (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 08 (PSP)
93 / 0x5D unknown 8-bit image with palette and PSP swizzling (R8G8B8A8) Madden 08 (PSP)
Fight Night Round 3 (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)
...
130 / 0x82 unknown refpack compressed SSX Tricky?
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.
  • Similarities:
    • Image types 3 and 66 seems to be the same.

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)
  • Fight Night Round 3
  • Golden Eye Rogue Agent (PS2)
  • Harry Potter And The Chamber Of Secrets (PS2)
  • James Bond 007: Nightfire (other than PC release)
  • Madden NFL 06 (PSP)
  • Madden NFL 08 (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 2001
  • NHL 2002 (PS2)
  • NHL 2003
  • NHL 2004
  • NHL 2005
  • NHL 2006
  • NHL 2007
  • NHL 2008
  • NHL 2009
  • ReBoot (PS1) (*.PSH)
  • SimCity 4 Deluxe (PC) (*.FSH)
  • SSX Tricky
  • UEFA Euro 2004

Supported Programs

quickBMS Scripts

Noesis Scripts

See Also



Gallery