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.
The ExeFS header is 0x200 bytes long and follows this simple structure:
|0x00||0xa0||File headers (10 headers maximum, 16 bytes each)|
|0xc0||0x140||File hashes (10 hashes maximum, 32 bytes each, one for each header)|
There are a maximum of 10* file headers in the ExeFS format, which have the following structure:
* The maximum number of ExeFS file headers, is disputable. With makerom indicating a maximum of 8 sections, and makecia indicating a maximum of 10. From a non-SDK point of view ExeFS header format can hold no more than 10 file headers within the currently define size of 0x200 bytes.
File offsets are non-inclusive of the header's size (0x200 bytes). Also, file headers which are not used are filled with all zeros.
Each file header has a corresponding file hash, which is the SHA256 hash calculated over the entire file contents.