Joy-Con Firmware: Difference between revisions
Sebastiaan (talk | contribs) No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
The Joy-Con | The Joy-Con are internally called Ukyo (Left) and Sakyo (Right). The firmware is written in C++. | ||
= Joy-Con Firmware File = | = Joy-Con Firmware File = | ||
The length of the firmware must be 524288 bytes. | The length of the firmware must be 524288 bytes. | ||
Line 28: | Line 27: | ||
== Factory Configuration Sector == | == Factory Configuration Sector == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 36: | Line 34: | ||
! Description | ! Description | ||
|- | |- | ||
| 0x00 || B || 0x10 || | | 0x00 || B || 0x10 || IdentificationCode | ||
|- | |||
| 0x12 || B || 0x01 || [[#Type|Type]] | |||
|- | |- | ||
| | | 0x1B || B || 0x01 || FormatVersion | ||
|- | |- | ||
| | | 0x20 || B || 0x18 || Cal1 | ||
|- | |- | ||
| | | 0x3D || B || 0x19 || Cal2 | ||
|- | |- | ||
| 0x50 || B || | | 0x50 || B || 0x0D || [[#DesignInfo|DesignInfo]] | ||
|- | |- | ||
| | | 0x80 || B || 0x18 || Model1 | ||
|- | |- | ||
| | | 0x98 || B || 0x12 || Model2 | ||
|} | |} | ||
=== Type | === Type=== | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Value | ! Value | ||
! | ! Name | ||
|- | |- | ||
| 0x01 || Joy-Con Left | | 0x01 || Joy-Con Left | ||
Line 65: | Line 64: | ||
|} | |} | ||
== | === DesignInfo === | ||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x00 || 0x06 || [[#ControllerColor|ControllerColor]] | |||
|- | |||
| 0x06 || 0x07 || Unknown | |||
|} | |||
==== ControllerColor ==== | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Offset | ! Offset | ||
! Size | ! Size | ||
! Description | ! Description | ||
|- | |- | ||
| 0x00 || | | 0x00 || 0x03 || Body color of controller in RGB Hex (see [[Joy-Con#Colors|Joy-Con Colors]]) | ||
|- | |- | ||
| | | 0x03 || 0x03 || Button color of controller in RGB Hex (see [[Joy-Con#Colors|Joy-Con Colors]]) | ||
|} | |||
== User Calibration Sector == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Endianness | |||
! Size | |||
! Description | |||
|- | |- | ||
| | | 0x10 || B || 0x0B || LeftAnalogStickUserCal | ||
|- | |- | ||
| | | 0x1B || B || 0x0B || RightAnalogStickUserCal | ||
|- | |- | ||
| | | 0x26 || B || 0x1A || SixAxisSensorUserCal | ||
|} | |} | ||
= Firmware Chunks = | = Firmware Chunks = | ||
The firmware itself is stored in PatchRAM chunks, located at the Factory Offset or the OTA Offset. Each chunk has a Record Type, Size and Data. | The firmware itself is stored in PatchRAM chunks, located at the Factory Offset or the OTA Offset. Each chunk has a Record Type, Size and Data. | ||
Line 104: | Line 121: | ||
== Record Types == | == Record Types == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 121: | Line 137: | ||
=== Record 0x08 === | === Record 0x08 === | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 143: | Line 158: | ||
=== Record 0x0A === | === Record 0x0A === | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 158: | Line 172: | ||
=== Record 0x0B === | === Record 0x0B === | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 170: | Line 183: | ||
== Memory Regions == | == Memory Regions == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- |