Line 25:
Line 25:
#32 bytes Mii settings and info (not yet figured out)
#32 bytes Mii settings and info (not yet figured out)
#10 wide chars Mii creator (20 bytes)
#10 wide chars Mii creator (20 bytes)
+
+
Mii data structure (work in progress):
+
+
<pre>
+
typedef unsigned char u8;
+
typedef unsigned short u16;
+
typedef unsigned int u32;
+
+
#define MII_NAME_LENGTH 10
+
#define MII_CREATOR_NAME_LENGTH 10
+
+
#define MII_HEIGHT_MIN 0x00
+
#define MII_HEIGHT_MAX 0x7F
+
+
#define MII_WEIGHT_MIN 0x00
+
#define MII_WEIGHT_MAX 0x7F
+
+
typedef struct
+
{
+
// addr: 0x00 & 0x01
+
u16 invalid:1;
+
u16 isGirl:1;
+
u16 month:4;
+
u16 day:4;
+
u16 unknown:1; // Part of fav color??
+
u16 favColor:4; // 0 - 11 (changing to 1111, along with setting the preceeding bit // results in a grey shirt, some values over 11 will crash the Wii
+
// when trying to change the favorite color).
+
u16 unknown:1;
+
+
// addr: 0x02 through 0x15
+
u16 name[MII_NAME_LENGTH];
+
+
// addr: 0x16
+
u8 height;
+
+
// addr: 0x17
+
u8 weight;
+
+
// addr: 0x18 - 0x1B
+
u8 miiID1; // Unique Mii identifier
+
u8 miiID2;
+
u8 miiID3;
+
u8 miiID4;
+
+
// addr: 0x1C & 0x1D & 0x1E & 0x1F
+
u8 systemID0; // Checksum8 of first 3 bytes of mac addr
+
u8 systemID1; // mac addr 3rd-to-last byte
+
u8 systemID2; // mac addr 2nd-to-last byte
+
u8 systemID3; // mac addr last byte
+
+
// addr: 0x20
+
u16 faceshape:3;
+
u16 skinColor:3; // 0 - 5
+
u16 unknown:?;
+
u16 facialFeature:4; // 0 - 11
+
+
// addr: 0x22 & 0x23
+
u16 unknown:7; // Hair type falls in here
+
u16 hairColor:3;
+
u16 hairPart:1;
+
+
// addr: 0x24 & 0x25
+
u16 unknown:?; // Eyebrow type falls in here
+
u16 eyebrowrotation:?;
+
u16 unknown:?;
+
+
// addr: 0x26 & 0x27
+
u16 eyebrowColor:3;
+
u16 eyebrowSize:5; // min 0, max 16 (depends on eyebrow type?)
+
u16 eyebrowVOffset:?;
+
u16 eyebrowSpacing:?;
+
+
// addr: 0x28 & 0x29
+
u16 unknown:8; // Eye type falls in here
+
u16 eyeRotation:3;
+
u16 unknown:1;
+
u16 eyeHeight:4; // 12 == mid, 0 == highest
+
+
// addr: 0x2A & 0x2B
+
u16 eyeColor:3;
+
u16 unknown:13;
+
+
// addr: 0x2C & 0x2D
+
u16 noseType:4; // 0 - 11
+
u16 noseSize:4; // 0 - 8
+
u16 noseHeight:4; // 0 - 9?
+
u16 unknown:3;
+
+
// addr: 0x2E & 2F
+
u16 lipType:5;
+
u16 unknown:11;
+
+
// addr: 0x30
+
u8 unknown:1;
+
u8 glassesType:3;
+
u8 glassesColor:3;
+
u8 unknown:1;
+
+
// addr: 0x31 & 32
+
u16 glassesSize:3;
+
u16 unknown:1;
+
u16 glassesHeight:4;
+
u16 mustacheType:2;
+
u16 beardType:2;
+
u16 facialHairColor:3;
+
u16 unknown:2;
+
+
// addr: 0x33
+
u8 mustacheSize:3; // 0 (max) - ? (min)
+
u8 unknown:1;
+
u8 mustacheHeight:4; // 0 (high) - 16 (low)
+
+
// addr: 0x34 & 0x35
+
u16 moleOn:1;
+
u16 moleSize:3; // ? - 8
+
u16 moleHeight:5; // 0 -
+
u16 unknown:4;
+
u16 moleHorizontal:3; // 0 (left) - ? (right)
+
+
// addr: 0x36
+
u16 creatorName[MII_CREATOR_NAME_LENGTH];
+
} MII_DATA_STRUCT;
+
</pre>
== See Also ==
== See Also ==
* [[Wiimote]]
* [[Wiimote]]
* WDML - (Coming Soon) Library and end-user tools for management of Wiimote save data (including Mii data).
* WDML - (Coming Soon) Library and end-user tools for management of Wiimote save data (including Mii data).