Difference between revisions of "ExeFS"

From 3dbrew
Jump to navigation Jump to search
m
m (It seems to actually be 10, instead of 8)
Line 19: Line 19:
 
|-
 
|-
 
|  0x00
 
|  0x00
0x80
+
0xa0
|  File headers (8 headers maximum, 16 bytes each)
+
|  File headers (10 headers maximum, 16 bytes each)
 
|-
 
|-
0x80
+
0xa0
0x80
+
0x20
 
|  Reserved
 
|  Reserved
 
|-
 
|-
0x100
+
0xc0
0x100
+
0x140
|  File hashes (8 hashes maximum, 32 bytes each, one for each header)
+
|  File hashes (10 hashes maximum, 32 bytes each, one for each header)
 
|}
 
|}
  
 
==== File headers ====
 
==== File headers ====
There are a maximum of 8 file headers in the ExeFS format, which have the following structure:
+
There are a maximum of 10 file headers in the ExeFS format, which have the following structure:
  
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"

Revision as of 16:58, 25 July 2013

Overview

ExeFS or Executable Filesystem contains information related to the executable program, and is the part of the CXI format.

The ExeFS usually contains one or more of the following files:

  • .code Contains the code binary, which can be optionally reverse-LZSS compressed via an exheader flag.
  • .logo Contains distribution licensing Binary data.
  • .banner Contains the banner which homemenu uses for this CXI.
  • .icon Contains the icon which homemenu displays for this CXI.

Format

The ExeFS header is 0x200 bytes long and follows this simple structure:

START SIZE DESCRIPTION
0x00 0xa0 File headers (10 headers maximum, 16 bytes each)
0xa0 0x20 Reserved
0xc0 0x140 File hashes (10 hashes maximum, 32 bytes each, one for each header)

File headers

There are a maximum of 10 file headers in the ExeFS format, which have the following structure:

START SIZE DESCRIPTION
0x0 0x8 File name
0x8 0x4 File offset
0xC 0x4 File size

File offsets are non-inclusive of the header's size (0x200 bytes). Also, file headers which are not used are filled with all zeros.

File hashes

Each file header has a corresponding file hash, which is the SHA256 hash calculated over the entire file contents.