Changes

156 bytes added ,  17:45, 17 August 2020
no edit summary
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"
 
|-
 
|-