Line 472:
Line 472:
0020: 82 82 82 15 9C 9C 9E 38 40 3E
0020: 82 82 82 15 9C 9C 9E 38 40 3E
β
It is not yet clear why these sentences are repeated; but since at least the second one is known to be calibration data, maybe one version contains the calibration data that is actually being used, while the other version is meant for backup purposes (for example a "Return to factory settings" option) in case there will be a way of recalibrating the Wii Remote with future Wii firmware updates.
+
These are two blocks of calibration data (for redundancy), where the last byte of each is a checksum (all prior bytes plus 0x55). Nintendo's libraries will only use a calibration block if its checksum is correct, falling back to the second one if the first one is incorrect, and falling back to default values otherwise.
β
The four bytes starting at 0x0016 and 0x0020 store the calibrated zero offsets for the accelerometer (high 8 bits of X,Y,Z in the first three bytes, low 2 bits packed in the fourth byte as --XXYYZZ). Apparently, the four bytes at 0x001A and 0x24 store the force of gravity on those axes. The function of other data bytes is not known, and most of them differ between Wii Remotes. Some or all of these bytes might not be used by the Wii. However, there has been a case of a Wii Remote where Extension functionality was lost following a battery change, and restoring these bytes (which had been previously overwritten) fixed the problem. The Extension controllers did not work with a PC either (which did not explicitly use these bytes), suggesting some of these might be used by the Wii Remote itself. This is unconfirmed, but it is advised that these never be overwritten, and recommended that they be backed up, just in case.
+
The first block contains calibration data related to the IR camera. The format of this data and its significance has not been investigated yet.
+
+
The four bytes starting at 0x0016 and 0x0020 store the calibrated zero offsets for the accelerometer (high 8 bits of X,Y,Z in the first three bytes, low 2 bits packed in the fourth byte as --XXYYZZ). The four bytes at 0x001A and 0x24 store the force of gravity on those axes. The byte at 0x1e and 0x28 seems mostly unused, but apparently used to contain flags related to the speaker volume and the rumble motor.
At 0x16D0, there is some more unknown data:
At 0x16D0, there is some more unknown data: