Settings EEPROM structure ========================= Structure --------- +--------+------+-----------------------------------------------------------------------------------------------------+ | Offset | Size | Description | +========+======+=====================================================================================================+ | 0x100 | 0x03 | board info + CRC16 | +--------+------+-----------------------------------------------------------------------------------------------------+ | 0x103 | 0x03 | drc area + CRC16 | +--------+------+-----------------------------------------------------------------------------------------------------+ | 0x106 | 0x03 | `device info`_ | +--------+------+-----------------------------------------------------------------------------------------------------+ | 0x11E | 0x0E | Factory `Acc Calibration`_ | +--------+------+-----------------------------------------------------------------------------------------------------+ | 0x1AC | 0x15 | Factory `Gyro Calibration`_ | +--------+------+-----------------------------------------------------------------------------------------------------+ | 0x12C | 0x15 | `Gyro Calibration`_ | +--------+------+-----------------------------------------------------------------------------------------------------+ | 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 | `Acc Calibration`_ | +--------+------+-----------------------------------------------------------------------------------------------------+ | 0x244 | 0x12 | `TP Calibration`_ | +--------+------+-----------------------------------------------------------------------------------------------------+ | 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 | +--------+------+-----------------------------------------------------------------------------------------------------+ .. _device info: Device Info ~~~~~~~~~~~ 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. | +--------+--------------------------------------------+ .. _TP Calibration: Touchpad Calibration ~~~~~~~~~~~~~~~~~~~~ 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 | +--------+------+---------------------------+ .. _Acc Calibration: Accelerometer Calibration ~~~~~~~~~~~~~~~~~~~~~~~~~ Each accelerometer value is converted to floating point values on the Wii U using the following logic. .. code-block:: c 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 | +--------+------+---------------------------+ .. _Gyro Calibration: Gyroscope Calibration ~~~~~~~~~~~~~~~~~~~~~ Each gyroscope value is converted to floating point values on the Wii U using the following logic. .. code-block:: c 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 | +--------+------+---------------------------+