Line 2:
Line 2:
See [[Mii Maker]] for the application chiefly designed to create, edit, delete, and trade Miis or convert them from and to a QR code.
See [[Mii Maker]] for the application chiefly designed to create, edit, delete, and trade Miis or convert them from and to a QR code.
+
+
The default endianness in this page is little-endian, unless explicitly specified.
==Mii Database==
==Mii Database==
Line 29:
Line 31:
|-
|-
| 0x23FC
| 0x23FC
−
| 0x4
+
| 0x2
−
| Header 0xFFFFFFFF
+
| Linked list tail index. 0xFFFF if the list is empty
+
|-
+
| 0x23FE
+
| 0x2
+
| Linked list head index. 0xFFFF if the list is empty
|-
|-
| 0x2400
| 0x2400
−
| 0xA41E
+
| 0xA410 (3000 * 0xE)
−
| Array of objects? See chapter
+
| Linked list of objects? See chapter
+
|-
+
| 0xC810
+
| 0xE
+
| Padding?
|-
|-
| 0xC81E
| 0xC81E
Line 46:
Line 56:
| 0xC824
| 0xC824
| 0x4
| 0x4
−
| Header? 0x39000000
+
| Mii count in this section. Maximum 100
|-
|-
−
| 0xC861
+
| 0xC828
−
| 0x2B
+
| 0x64 (100 * 0x1)
−
| Weird padding? 0x00
+
| Order index of Mii in this section?
|-
|-
| 0xC88C
| 0xC88C
−
| 0x1C20 (?)
+
| 0x1C20 (100 * 0x48)
−
| Array of Miis contributed from games, used for Mii Plaza "invitations" feature.<br/>The format isn't that of a full Mii.
+
| Array of Miis contributed from games, used for Mii Plaza "invitations" feature.<br/>The format isn't that of a full Mii. The "author" field is missing
|-
|-
| 0xE4AC
| 0xE4AC
Line 65:
Line 75:
|-
|-
| 0xE4C0
| 0xE4C0
−
| 0x3D860
+
| 0x3D860 (3000 * 0x54)
−
| Empty (00)
+
| Another array of Miis. Seems related to the CFHE section. <br/>The Mii format in this section is modified. The "author" field is missing, A 4-byte timestamp (seconds since 2000) together with 8-byte zeros(?) is appended at the end.
|}
|}
When encrypted in QR codes, 4 additional bytes are added. Two null bytes and a CRC-16. It's the exact same CRC-16 as for the Wii blocks on the 0x5e first bytes. It seems that the CRC is ignored, the Mii Maker expecting the result of APT:Unwrap to detect integrity loss.
When encrypted in QR codes, 4 additional bytes are added. Two null bytes and a CRC-16. It's the exact same CRC-16 as for the Wii blocks on the 0x5e first bytes. It seems that the CRC is ignored, the Mii Maker expecting the result of APT:Unwrap to detect integrity loss.
Line 72:
Line 82:
==CFHE object==
==CFHE object==
−
A 0xE-byte long item.
+
A 0xE-byte long linked list node. The format is 4-byte Mii ID (See Mii format) + 6-byte MAC + 2-byte previous node index (prev) + 2-byte next node index (next).
−
−
On my database, they're all 0000 0000 0000 0000 0000 FF7F FF7F.
−
Wild speculation: blacklist of already scanned celebrity (gold) Mii QRs?
+
An invalid node has value: ID = 0, MAC = 0, prev = 0x7FFF, next = 0x7FFF.
−
Alternative interpretation: FFFF FFFF 0000 0000 0000 0000 0000 is the 1st item; FF7F FF7F 0000 [...] the 2nd, etc;
+
The highest bit of these fields has some special meaning and isn't part of the index value.
==Checksum==
==Checksum==
Line 129:
Line 137:
| 0x0
| 0x0
| 0x4
| 0x4
−
| Mii ID (see chapter)
+
| Mii Header (see chapter)
|-
|-
| 0x4
| 0x4
Line 137:
Line 145:
| 0xC
| 0xC
| 0x4
| 0x4
−
| Specialness and date of creation (big-endian 32bit unsigned integer):<br/>Bit 0..27: (bit[0..27] * 2) = date of creation (seconds since 01/01/2010 00:00:00)<br/>Bit 31: not set iff Mii is special
+
| Mii ID (big-endian 32bit unsigned integer):<br/>Bit 0..27: (bit[0..27] * 2) = date of creation (seconds since 01/01/2010 00:00:00)<br/>Bit 31: not set iff Mii is special
|-
|-
| 0x10
| 0x10
Line 208:
Line 216:
|}
|}
−
==Mii ID==
+
==Mii Header==
* Byte 0: generally equals 3 (category?)
* Byte 0: generally equals 3 (category?)
* Byte 1: 0/1 = copying off/on
* Byte 1: 0/1 = copying off/on