uic_eeprom_structure
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| uic_eeprom_structure [2025/02/24 08:59] – arisotura | uic_eeprom_structure [2025/04/18 09:54] (current) – arisotura | ||
|---|---|---|---|
| Line 4: | Line 4: | ||
| The first 256 bytes are used internally, while the rest is used for user data storage. | The first 256 bytes are used internally, while the rest is used for user data storage. | ||
| + | |||
| + | https:// | ||
| ^ Address ^ Length ^ Description ^ | ^ Address ^ Length ^ Description ^ | ||
| Line 12: | Line 14: | ||
| | 0x1101 | | 0x1101 | ||
| | 0x1121 | | 0x1121 | ||
| - | | 0x1122 | + | | 0x1122 |
| - | | 0x1123 | + | |
| - | | 0x1124 | + | |
| + | | | ||
| + | | 0x1123 | ||
| + | 0x00 = disabled | ||
| + | | ||
| + | | ||
| + | | ||
| + | | | ||
| + | | 0x1124 | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | | ||
| | 0x1125 | | 0x1125 | ||
| | 0x1165 | | 0x1165 | ||
| + | | 0x1166 | ||
| | 0x116B | | 0x116B | ||
| | 0x116D | | 0x116D | ||
| Line 22: | Line 38: | ||
| | 0x1187 | | 0x1187 | ||
| | 0x118A | | 0x118A | ||
| + | | -- | -- | -- | | ||
| + | | 0x11FD | ||
| + | | 0x11FE | ||
| | -- | -- | -- | | | -- | -- | -- | | ||
| | 0x1200 | | 0x1200 | ||
| Line 27: | Line 46: | ||
| | 0x1203 | | 0x1203 | ||
| | 0x1204 | | 0x1204 | ||
| + | | 0x1206 | ||
| + | | 0x1207 | ||
| | 0x121A | | 0x121A | ||
| | 0x121C | | 0x121C | ||
| Line 42: | Line 63: | ||
| | 0x1283 | | 0x1283 | ||
| | 0x1284 | | 0x1284 | ||
| + | | 0x1286 | ||
| + | | 0x1287 | ||
| | 0x129A | | 0x129A | ||
| | 0x129C | | 0x129C | ||
| Line 52: | Line 75: | ||
| | 0x12E5 | | 0x12E5 | ||
| | 0x12E9 | | 0x12E9 | ||
| + | | -- | -- | -- | | ||
| + | | 0x12FD | ||
| + | | 0x12FE | ||
| | -- | -- | -- | | | -- | -- | -- | | ||
| | 0x1300 | | 0x1300 | ||
| Line 85: | Line 111: | ||
| | 0x1396 | | 0x1396 | ||
| | 0x1397 | | 0x1397 | ||
| + | | -- | -- | -- | | ||
| + | | 0x13FD | ||
| + | | 0x13FE | ||
| + | | -- | -- | -- | | ||
| + | | 0x1400 | ||
| + | | 0x1500 | ||
| + | | -- | -- | -- | | ||
| + | | 0x1580 | ||
| + | | 0x1680 | ||
| Data is stored in little-endian order. | Data is stored in little-endian order. | ||
| When multiple regions exist for a given information (for example, board info), the first region with a correct CRC16 is selected. | When multiple regions exist for a given information (for example, board info), the first region with a correct CRC16 is selected. | ||
| + | |||
| + | |||
| + | ===== Board info ===== | ||
| + | |||
| + | Bit 0-3 of the board info value are the main version, while bit 4-7 are the sub version. | ||
| + | |||
| + | Main version: | ||
| + | * 0 = DK1 | ||
| + | * 1 = EP_DK2 | ||
| + | * 2 = DP1 | ||
| + | * 3 = DP2 | ||
| + | * 4 = DK3 | ||
| + | * 5 = DK4 | ||
| + | * 6 = DP3 | ||
| + | * 7 = DK5 | ||
| + | * 8 = DP4 | ||
| + | * 9 = DKMP | ||
| + | * 10 = DP5 | ||
| + | * 11 = MASS | ||
| + | * 12 = DKMP2 | ||
| + | * 13 = DRC_I | ||
| + | |||
| + | Sub version: | ||
| + | * 0 = DK1_EP_DK2 | ||
| + | * 1 = DP1_DK3 | ||
| + | * 2 = DK4 | ||
| + | * 3 = DP3 | ||
| + | * 4 = DK5 | ||
| + | * 5 = DP4 | ||
| + | * 6 = DKMP | ||
| + | * 7 = DP5 | ||
| + | * 8 = MASS | ||
| + | * 9 = DKMP2 | ||
| + | * 10 = DRC_I | ||
| + | |||
| + | |||
| + | ===== Region info ===== | ||
| + | |||
| + | * 0 = Japan | ||
| + | * 1 = North America | ||
| + | * 2 = Europe | ||
| + | * 3 = China | ||
| + | * 4 = South Korea | ||
| + | * 5 = Taiwan | ||
| + | * 6 = Australia | ||
| + | |||
| + | |||
| + | ===== Board config ===== | ||
| + | |||
| + | Value is 0x15 for retail boards. | ||
| + | |||
| + | If bit0-1 are any value other than 1, the gamepad will enter service mode upon boot. | ||
| + | |||
| + | |||
| + | ===== Language ===== | ||
| + | |||
| + | (0-3 = America, 4-11 = Europe) | ||
| + | |||
| + | * 0 = English | ||
| + | * 1 = French | ||
| + | * 2 = Spanish | ||
| + | * 3 = Portuguese | ||
| + | * 4 = English | ||
| + | * 5 = French | ||
| + | * 6 = Spanish | ||
| + | * 7 = Portuguese | ||
| + | * 8 = Dutch | ||
| + | * 9 = Italian | ||
| + | * 10 = German | ||
| + | * 11 = Russian | ||
| + | * 12 = Japanese | ||
| + | * 13 = Chinese (simplified) | ||
| + | * 14 = Korean | ||
| + | * 15 = Chinese (traditional) | ||
| + | |||
| + | |||
| + | ===== Volume calibration ===== | ||
| + | |||
| + | ^ Offset ^ Length ^ Description ^ | ||
| + | | 0x00 | 1 | Minimum volume | | ||
| + | | 0x01 | 1 | Maximum volume | | ||
| + | |||
| + | The minimum and maximum values are used to cap the reading from the volume slider within an acceptable range. | ||
| + | |||
| + | TODO: detail how that reading is converted to the final volume setting passed to the audio amplifier | ||
| + | |||
| + | |||
| + | ===== Gyroscope calibration ===== | ||
| + | |||
| + | ^ Offset ^ Length ^ Description ^ | ||
| + | | 0x00 | 3 | Zero X | | ||
| + | | 0x03 | 3 | Zero Y | | ||
| + | | 0x06 | 3 | Zero Z | | ||
| + | | 0x09 | 3 | Rotation X | | ||
| + | | 0x0C | 3 | Rotation Y | | ||
| + | | 0x0F | 3 | Rotation Z | | ||
| + | | 0x12 | 1 | Speed | | ||
| + | |||
| + | |||
| + | ===== Accelerometer calibration ===== | ||
| + | |||
| + | ^ Offset ^ Length ^ Description ^ | ||
| + | | 0x00 | 2 | 0G X | | ||
| + | | 0x02 | 2 | 0G Y | | ||
| + | | 0x04 | 2 | 0G Z | | ||
| + | | 0x06 | 2 | 1G X | | ||
| + | | 0x08 | 2 | 1G Y | | ||
| + | | 0x0A | 2 | 1G Z | | ||
| + | |||
| + | |||
| + | ===== Touchscreen calibration ===== | ||
| + | |||
| + | ^ Offset ^ Length ^ Description ^ | ||
| + | | 0x00 | 2 | Point 1 screen X | | ||
| + | | 0x02 | 2 | Point 1 screen Y | | ||
| + | | 0x04 | 2 | Point 2 screen X | | ||
| + | | 0x06 | 2 | Point 2 screen Y | | ||
| + | | 0x08 | 2 | Point 1 raw X | | ||
| + | | 0x0A | 2 | Point 1 raw Y | | ||
| + | | 0x0C | 2 | Point 2 raw X | | ||
| + | | 0x0E | 2 | Point 2 raw Y | | ||
| + | |||
| + | Raw coordinates are 12-bit TSC readings, while screen coordinates are their corresponding values in pixels. | ||
| + | |||
| + | Observed screen coordinates are: 53,30 802,451 | ||
| + | |||
| + | |||
| + | ===== LCD brightness levels ===== | ||
| + | |||
| + | ^ Offset ^ Length ^ Description ^ | ||
| + | | 0x00 | 1 | Level 0 brightness level (setting A) | | ||
| + | | 0x01 | 1 | Level 0 frequency (setting B) | | ||
| + | | 0x02 | 1 | Level 1 brightness level | | ||
| + | | 0x03 | 1 | Level 1 frequency | | ||
| + | | 0x04 | 1 | Level 2 brightness level | | ||
| + | | 0x05 | 1 | Level 2 frequency | | ||
| + | | 0x06 | 1 | Level 3 brightness level | | ||
| + | | 0x07 | 1 | Level 3 frequency | | ||
| + | | 0x08 | 1 | Level 4 brightness level | | ||
| + | | 0x09 | 1 | Level 4 frequency | | ||
| + | | 0x0A | 1 | Level 5 brightness level | | ||
| + | | 0x0B | 1 | Level 5 frequency | | ||
| + | | 0x0C | 1 | Threshold level | | ||
| + | |||
| + | This table maps 6 predefined brightness levels to their adequate LCD parameters. See [[LCD# | ||
uic_eeprom_structure.1740387566.txt.gz · Last modified: 2025/02/24 08:59 by arisotura
