CECD Savegame

CECD Savegame

CEC System Save (00010026) Format #

Folder and files                         `CecDataPathType`
[Root]
├── eventlog.dat
└── CEC                                  10
    ├── MacFilter___
    ├── MBoxList____                     1
    ├── <8-digit ID>                     11
    │   ├── MBoxInfo____                 2
    │   ├── MBoxData.001                 101
    │   ├── MBoxData.010                 110
    │   ├── MBoxData.050                 150
    │   ├── MBoxData.<3-digit number>    100 + <number>
    │   ├── ...
    │   ├── InBox___                     12
    │   │   ├── BoxInfo_____             3
    │   │   ├── _<12-char ID>            6
    │   │   └── ...
    │   └── OutBox__                     13
    │       ├── BoxInfo_____             4
    │       ├── OBIndex_____             5
    │       ├── _<12-char ID>            7
    │       └── ...
    ├── <8-digit ID>
    ...

File MBoxList____ #

OffsetLengthDescription
0x002Magic 0x6868
0x022Padding
0x044Version? always 1
0x084Number of boxes
0x0C16 * 24List of box name

Each box name is 16-char long. However, due to the fact that box name is usually a 8-digit ID, the rest of 8 chars are always null characters. Unused box names are filled with null characters.

File MBoxInfo____ #

OffsetLengthDescription
0x002Magic 0x6363
0x022Padding
0x044Title ID (matches the box directory name)
0x084Private ID?
0x0C1Flags?
0x0D1Flags?
0x0E2Padding
0x1032HMAC Key
0x304Zero?
0x3412Timestamp when last accessed
0x401Flag?
0x411Flag?
0x421Flag?
0x431Flag?
0x4412Timestamp when last received
0x5016Zero?

Note: - Private ID seems to be a number chosen by application arbitrarily, possibly for verification. Magic numbers such as 0x00000000, 0x00000001, 0xFFFFFFFF, 0xAABBCCDD and other random numbers have been observed here.

File MBoxData.<3-digit number> #

File MBoxData.001 #

Icon

File MBoxData.010 #

This is the game title in null-terminated UTF-16 string.

File MBoxData.050 #

This is 8-byte file containing the title ID.

File BoxInfo_____ #

This file consists of a 0x20-byte header, and an array of 0x70-byte entry. Each entry is a copy of the message header. See the next section for the message header format. The box info header format is

OffsetLengthDescription
0x002Magic 0x6262
0x022Padding
0x044Size of this file
0x084Maximum box size
0x0C4Current box size
0x104Maximum message count
0x144Current message count / the size of the following array
0x184Maximum batch size
0x1C4Maximum message size

File _<12-char ID> #

Each such file is a message. The ID in the file name is the message ID encoded in base-64. A message file consists of a 0x70-byte header, several extra header, a message body, and a 0x20-byte HMAC(?).

The header format is

OffsetLengthDescription
0x002Magic 0x6060
0x022Padding
0x044Message size
0x084Header + extra headers size
0x0C4Body size
0x104Title ID
0x144Title ID 2?
0x184Batch ID
0x1C4? ID
0x208Message ID
0x284Message version?
0x2C8Message ID 2?
0x341Flags
0x351Send method
0x361Is unopen
0x371Is new
0x388Sender ID
0x408Sender ID 2?
0x4812Timestamp when sent
0x5412Timestamp when received
0x6012Timestamp when created
0x6C1Send count
0x6D1Forward count
0x6E2User data

Each extra header has a format of

OffsetLengthDescription
0x004Header type
0x044Data size
0x08Data sizeHeader data

The header type can be one of the follows:

ValueDescription
1?
2Icon
3Game name
4Info text
5Region?