CECD Savegame: Difference between revisions
→File MBoxInfo____: Update information gathered from developing NetPass |
Meleemeister (talk | contribs) Wikitable class added to tables |
||
| (One intermediate revision by one other user not shown) | |||
| Line 29: | Line 29: | ||
=== File <code>MBoxList____</code> === | === File <code>MBoxList____</code> === | ||
{| | {| class="wikitable" | ||
! Offset | ! Offset | ||
! Length | ! Length | ||
| Line 60: | Line 60: | ||
=== File <code>MBoxInfo____</code> === | === File <code>MBoxInfo____</code> === | ||
{| | {| class="wikitable" | ||
! Offset | ! Offset | ||
! Length | ! Length | ||
| Line 156: | Line 156: | ||
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 | 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 | ||
{| | {| class="wikitable" | ||
! Offset | ! Offset | ||
! Length | ! Length | ||
| Line 205: | Line 205: | ||
The header format is | The header format is | ||
{| | {| class="wikitable" | ||
! Offset | ! Offset | ||
! Length | ! Length | ||
| Line 256: | Line 256: | ||
| 0x2C | | 0x2C | ||
| 8 | | 8 | ||
| Message ID 2 | | Message ID 2 (reply-to message id in an exchange) | ||
|- | |- | ||
| 0x34 | | 0x34 | ||
| Line 309: | Line 309: | ||
Each extra header has a format of | Each extra header has a format of | ||
{| | {| class="wikitable" | ||
! Offset | ! Offset | ||
! Length | ! Length | ||
| Line 329: | Line 329: | ||
The header type can be one of the follows: | The header type can be one of the follows: | ||
{| | {| class="wikitable" | ||
! Value | ! Value | ||
! Description | ! Description | ||
Latest revision as of 21:08, 20 July 2025
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____
| Offset | Length | Description |
|---|---|---|
| 0x00 | 2 | Magic 0x6868 |
| 0x02 | 2 | Padding |
| 0x04 | 4 | Version? always 1 |
| 0x08 | 4 | Number of boxes |
| 0x0C | 16 * 24 | List 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____
| Offset | Length | Description |
|---|---|---|
| 0x00 | 2 | Magic 0x6363 |
| 0x02 | 2 | Padding |
| 0x04 | 4 | Title ID (matches the box directory name) |
| 0x08 | 4 | Private ID? |
| 0x0C | 1 | Flags? |
| 0x0D | 1 | Flags? |
| 0x0E | 2 | Padding |
| 0x10 | 32 | HMAC Key |
| 0x30 | 4 | Zero? |
| 0x34 | 12 | Timestamp when last accessed |
| 0x40 | 1 | Display New Notification Dot |
| 0x41 | 1 | Flag? |
| 0x42 | 1 | Flag? |
| 0x43 | 1 | Flag? |
| 0x44 | 12 | Timestamp when last received |
| 0x50 | 16 | Zero? |
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
| Offset | Length | Description |
|---|---|---|
| 0x00 | 2 | Magic 0x6262 |
| 0x02 | 2 | Padding |
| 0x04 | 4 | Size of this file |
| 0x08 | 4 | Maximum box size |
| 0x0C | 4 | Current box size |
| 0x10 | 4 | Maximum message count |
| 0x14 | 4 | Current message count / the size of the following array |
| 0x18 | 4 | Maximum batch size |
| 0x1C | 4 | Maximum 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
| Offset | Length | Description |
|---|---|---|
| 0x00 | 2 | Magic 0x6060 |
| 0x02 | 2 | Padding |
| 0x04 | 4 | Message size |
| 0x08 | 4 | Header + extra headers size |
| 0x0C | 4 | Body size |
| 0x10 | 4 | Title ID |
| 0x14 | 4 | Title ID 2? |
| 0x18 | 4 | Batch ID |
| 0x1C | 4 | ? ID |
| 0x20 | 8 | Message ID |
| 0x28 | 4 | Message version? |
| 0x2C | 8 | Message ID 2 (reply-to message id in an exchange) |
| 0x34 | 1 | Flags |
| 0x35 | 1 | Send method |
| 0x36 | 1 | Is unopen |
| 0x37 | 1 | Is new |
| 0x38 | 8 | Sender ID |
| 0x40 | 8 | Sender ID 2? |
| 0x48 | 12 | Timestamp when sent |
| 0x54 | 12 | Timestamp when received |
| 0x60 | 12 | Timestamp when created |
| 0x6C | 1 | Send count |
| 0x6D | 1 | Forward count |
| 0x6E | 2 | User data |
Each extra header has a format of
| Offset | Length | Description |
|---|---|---|
| 0x00 | 4 | Header type |
| 0x04 | 4 | Data size |
| 0x08 | Data size | Header data |
The header type can be one of the follows:
| Value | Description |
|---|---|
| 1 | ? |
| 2 | Icon |
| 3 | Game name |
| 4 | Info text |
| 5 | Region? |