Changes

Jump to navigation Jump to search
79 bytes removed ,  21:38, 8 February 2022
→‎Checksum: The implementation is not wrong it's just a different one called CRC-16/XMODEM
Line 90: Line 90:  
==Checksum==
 
==Checksum==
   −
The algorithm used to verify the integrity of the database is based on [http://srecord.sourceforge.net/crc16-ccitt.html CRC16-CCITT], though it's an incorrect implementation. It is the same algorithm used to verify [http://wiibrew.org/wiki/Mii_Data#Block_format Mii Data on the Wii].
+
The algorithm used to verify the integrity of the database is based on CRC-16/XMODEM. It is the same algorithm used to verify [http://wiibrew.org/wiki/Mii_Data#Block_format Mii Data on the Wii].
    
To obtain the correct value for the checksum, apply the algorithm to the first 0xC81E bytes of the database. This can be done using [https://gbatemp.net/threads/tutorial-give-your-mii-gold-pants-and-use-it-for-streetpass.379146/page-24#post-6569186 FixCRC]; alternativly a pseudocode implementation of the checksum algorithm is given below:
 
To obtain the correct value for the checksum, apply the algorithm to the first 0xC81E bytes of the database. This can be done using [https://gbatemp.net/threads/tutorial-give-your-mii-gold-pants-and-use-it-for-streetpass.379146/page-24#post-6569186 FixCRC]; alternativly a pseudocode implementation of the checksum algorithm is given below:
Line 96: Line 96:  
<source lang="python">
 
<source lang="python">
 
def crc16_CCITTWii(u8[]: data) -> u16:
 
def crc16_CCITTWii(u8[]: data) -> u16:
     """Calculate a checksum of data using the CRC16-CCITT implementation of the Wii
+
     """Calculate a checksum of data using the CRC-16/XMODEM implementation
   −
     This implementation uses 0x0000 as the starting value, which is different
+
     CRC-16/XMODEM implementation uses 0x0000 as the starting value
    from what CRC16-CCITT specifies.
   
     """
 
     """
 
+
      
     # note: a correct implementation of CRC16-CCITT
  −
    #      would initialize this to 0xffff
   
     u32 crc := 0x0
 
     u32 crc := 0x0
   Line 135: Line 132:  
| 0x0
 
| 0x0
 
| 0x1
 
| 0x1
| Always 3?
+
| Mii Version - Always 3
 
|-
 
|-
 
| 0x1
 
| 0x1
Line 147: Line 144:  
| 0x3
 
| 0x3
 
| 0x1
 
| 0x1
| bit 0-3: ?<br/>bit 4-6: version? (1=Wii, 2=DSi, 3=3DS)
+
| bit 0-3: ?<br/>bit 4-6: Device Mii was originally made on (1=Wii, 2=DS, 3=3DS, 4=Wii U/Switch)
 
|-
 
|-
 
| 0x4
 
| 0x4
Line 155: Line 152:  
| 0xC
 
| 0xC
 
| 0x4
 
| 0x4
| 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 28: Always set?<br/>Bit 29: set for temporary Mii<br/>Bit 30: Set for DSi mii?<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 28: Always set?<br/>Bit 29: set for temporary Mii<br/>Bit 30: Set for DSi mii?<br/>Bit 31: not set if Mii is special
 
|-
 
|-
 
| 0x10
 
| 0x10
Line 207: Line 204:  
| 0x3E
 
| 0x3E
 
| 0x2
 
| 0x2
| bit 0-5: mouse style<br/>biy 6-8: mouse color<br/>bit 9-12: mouse scale<br/>bit 13-15: mouse yscale
+
| bit 0-5: mouth style<br/>bit 6-8: mouth color<br/>bit 9-12: mouth scale<br/>bit 13-15: mouth yscale
 
|-
 
|-
 
| 0x40
 
| 0x40
 
| 0x2
 
| 0x2
| bit 0-4: mouse y position<br/>bit 5-7: mustach style
+
| bit 0-4: mouth y position<br/>bit 5-7: mustach style
 
|-
 
|-
 
| 0x42
 
| 0x42
Line 233: Line 230:     
====Special (gold) Miis====
 
====Special (gold) Miis====
Specialness will override any other color and make the Mii non-editable.
+
Specialness will override any other pants color.
   −
Copying is rumored to have to be disabled.
+
A special Mii cannot have sharing on or else it will be deemed invalid.
    
Zeroed system-id and timestamp?
 
Zeroed system-id and timestamp?
Line 251: Line 248:  
====Personal (red) Mii====
 
====Personal (red) Mii====
 
A red Mii that happens to be the first in the file!
 
A red Mii that happens to be the first in the file!
 +
 +
The Mii doesn't really need to be red, it is only red because the personal Mii is always favorited.
    
==Mii values==
 
==Mii values==
Line 584: Line 583:  
     0x64,0x06,0x14,
 
     0x64,0x06,0x14,
 
     0x5d,0x66,0x1b,
 
     0x5d,0x66,0x1b,
     0x04,0x11,0x6e]
+
     0x04,0x11,0x6e],
 
     [0x7b,0x08,0x6a,
 
     [0x7b,0x08,0x6a,
 
     0x48,0x03,0x15,
 
     0x48,0x03,0x15,
77

edits

Navigation menu