Line 1: |
Line 1: |
− | The Joy-Con is internally called Ukyo. (Strings in the firmware) The firmware is written in C++. (Also found in strings in the firmware) | + | 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 || Serial number | + | | 0x00 || B || 0x10 || IdentificationCode |
| + | |- |
| + | | 0x12 || B || 0x01 || [[#Type|Type]] |
| |- | | |- |
− | | 0x10 || ? || 0x02 || Unknown | + | | 0x1B || B || 0x01 || FormatVersion |
| |- | | |- |
− | | 0x12 || B || 0x01 || Type descriptor (see [[#Type Descriptor|Type Descriptor]]) | + | | 0x20 || B || 0x18 || Cal1 |
| |- | | |- |
− | | 0x13 || ? || 0x3D || Unknown | + | | 0x3D || B || 0x19 || Cal2 |
| |- | | |- |
− | | 0x50 || B || 0x03 || Body color of Controller in RGB Hex (see [[Joy-Con#Colors|Joy-Con Colors]]) | + | | 0x50 || B || 0x0D || [[#DesignInfo|DesignInfo]] |
| |- | | |- |
− | | 0x53 || B || 0x03 || Button color of Controller in RGB Hex (see [[Joy-Con#Colors|Joy-Con Colors]]) | + | | 0x80 || B || 0x18 || Model1 |
| |- | | |- |
− | | 0x56 || ? || 0xFAA || Unknown | + | | 0x98 || B || 0x12 || Model2 |
| |} | | |} |
| | | |
− | === Type Descriptor === | + | === Type=== |
− | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
| ! Value | | ! Value |
− | ! Type Name | + | ! Name |
| |- | | |- |
| | 0x01 || Joy-Con Left | | | 0x01 || Joy-Con Left |
Line 65: |
Line 64: |
| |} | | |} |
| | | |
− | == User Calibration Sector == | + | === 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 |
− | ! Endianness
| |
| ! Size | | ! Size |
| ! Description | | ! Description |
| |- | | |- |
− | | 0x00 || ? || 0x11 || Unknown | + | | 0x00 || 0x03 || Body color of controller in RGB Hex (see [[Joy-Con#Colors|Joy-Con Colors]]) |
| |- | | |- |
− | | 0x10 || B || 0x0B || Left Stick Calibration (Factory 0xFF?) | + | | 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 |
| |- | | |- |
− | | 0x1B || B || 0x0B || Right Stick Calibration (Factory 0xFF?) | + | | 0x10 || B || 0x0B || LeftAnalogStickUserCal |
| |- | | |- |
− | | 0x26 || B || 0x1A || Sensor Calibration (Factory 0xFF?) | + | | 0x1B || B || 0x0B || RightAnalogStickUserCal |
| |- | | |- |
− | | 0x40 || ? || 0xFBF || Unknown | + | | 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" |
| |- | | |- |