Offset |
Size |
Description |
---|---|---|
0x100 |
0x03 |
board info + CRC16 |
0x103 |
0x03 |
drc area + CRC16 |
0x106 |
0x03 |
|
0x11E |
0x0E |
Factory Acc Calibration |
0x1AC |
0x15 |
Factory Gyro Calibration |
0x12C |
0x15 |
|
0x153 |
0x12 |
Factory TP Calibration |
0x19E |
0x0E |
2nd Factory Acc Calibration |
0x1D3 |
0x12 |
2nd Factory TP Calibration |
0x200 |
0x03 |
language bank + CRC16 |
0x203 |
0x03 |
|
0x206 |
0x03 |
Connection mode related? + CRC16 |
0x20D |
0x06 |
Mic Config + CRC16 |
0x213 |
0x0E |
|
0x244 |
0x12 |
|
0x256 |
0x06 |
Unknown + ExtId 0 (Language) + CRC16 |
0x25C |
0x06 |
ExtId 1 (RC Database) + CRC16 |
0x262 |
0x06 |
ExtId 2 + CRC16 |
0x268 |
0x06 |
ExtId 3 + CRC16 |
0x26E |
0x06 |
ExtId 4 + CRC16 |
0x274 |
0x03 |
InitBootFlag + CRC16 |
0x277 |
0x0F |
|
0x286 |
0x03 |
LCD Mode + CRC16 |
0x289 |
0x0c |
TV Control Id + CRC16 |
0x295 |
0x03 |
|
0x298 |
0x03 |
Caffeine Enable Flag + CRC16 |
0x29B |
0x03 |
Caffeine Initial Boot Flag + CRC16 |
0x29E |
0x03 |
Caffeine Slot + CRC16 |
0x2A1 |
0x03 |
NotificationSoundMode + CRC16 |
0x2A4 |
0x03 |
NotificationInfo + CRC16 |
0x2A7 |
0x04 |
NotificationReadCount + CRC16 |
This is a 8 bit value shown below followed by a CRC16.
Bits |
Description |
---|---|
6 - 7 |
Unused/Unset |
4 - 5 |
Supported connection types: 0b00: Wired
0b01: Wireless
0b10: Both
0b01 on retail. |
2 - 3 |
Production type 0b00: Development
0b01: Mass
Enables the “DK Menu”, if both bits are 0. 0b01 on retail. |
0 - 1 |
Shipment status 0b00: Unshipped
0b01: Shipped
Shows the service menu, if unshipped. 0b01 on retail. |
The touchpad calibration scales the x and y values based on the provided max and min values. The input values are in the range of 0-4096 and get scaled down to 0-854 and 0-480.
Offset |
Size |
Description |
---|---|---|
0x00 |
0x02 |
newMinX |
0x02 |
0x02 |
newMinY |
0x04 |
0x02 |
newMaxX |
0x06 |
0x02 |
newMaxY |
0x08 |
0x02 |
oldMinX |
0x0A |
0x02 |
oldMinY |
0x0C |
0x02 |
oldMaxX |
0x0E |
0x02 |
oldMaxY |
0x10 |
0x02 |
CRC16 |
Each accelerometer value is converted to floating point values on the Wii U using the following logic.
float accelX = (float)rawAccelX / (float)(scaleX - offsetX);
float accelY = (float)rawAccelY / (float)(scaleY - offsetY);
float accelZ = (float)rawAccelZ / (float)(scaleZ - offsetZ);
Offset |
Size |
Description |
---|---|---|
0x00 |
0x02 |
offsetX |
0x02 |
0x02 |
offsetY |
0x04 |
0x02 |
offsetZ |
0x06 |
0x02 |
scaleX |
0x08 |
0x02 |
scaleY |
0x0A |
0x02 |
scaleZ |
0x0C |
0x02 |
CRC16 |
Each gyroscope value is converted to floating point values on the Wii U using the following logic.
float gyroX = ((float)rawGyroX + offsetX) * ((scaleMult * 6.0f) / (float)scaleX / 360.0f)
float gyroY = ((float)rawGyroY + offsetY) * ((scaleMult * 6.0f) / (float)scaleY / 360.0f)
float gyroZ = ((float)rawGyroZ + offsetZ) * ((scaleMult * 6.0f) / (float)scaleZ / 360.0f)
Offset |
Size |
Description |
---|---|---|
0x00 |
0x03 |
offsetX |
0x03 |
0x03 |
offsetY |
0x06 |
0x03 |
offsetZ |
0x09 |
0x03 |
scaleX |
0x0C |
0x03 |
scaleY |
0x0F |
0x03 |
scaleZ |
0x12 |
0x01 |
scaleMult |
0x13 |
0x02 |
CRC16 |