Changes

Jump to navigation Jump to search
238 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
  
62

edits

Navigation menu