Joy-Con: Difference between revisions
animal crossing |
No edit summary |
||
Line 1: | Line 1: | ||
Joy-Con is the name for the Switch's primary game controllers. The controllers communicate to the console through bluetooth and can be disconnected from the main unit. | Joy-Con is the name for the Switch's primary game controllers. The controllers communicate to the console through bluetooth and can be disconnected from the main unit. | ||
==Hardware== | == Hardware == | ||
The controllers themselves are simple to disassemble and identify. | The controllers themselves are simple to disassemble and identify. | ||
[[File:JoyconFront.jpg|400px|thumb|The front of the Joy-Con internal[https://www.ifixit.com/Teardown/Nintendo+Switch+Teardown/78263]]] | [[File:JoyconFront.jpg|400px|thumb|The front of the Joy-Con internal[https://www.ifixit.com/Teardown/Nintendo+Switch+Teardown/78263]]] | ||
Line 15: | Line 15: | ||
|} | |} | ||
== Firmware == | |||
==Firmware== | |||
''See also: [[Joy-Con Firmware]]'' | ''See also: [[Joy-Con Firmware]]'' | ||
Line 30: | Line 29: | ||
A dump of the ROM region (taken while firmware was running) can be found [[:File:bcm20734_rom.bin|here]]. Note this is the same SoC used on the other controller models, as well. | A dump of the ROM region (taken while firmware was running) can be found [[:File:bcm20734_rom.bin|here]]. Note this is the same SoC used on the other controller models, as well. | ||
== | == Bluetooth HID == | ||
=== Commands === | |||
{| class="wikitable" border="1" | |||
|- | |||
! Command || Name | |||
|- | |||
| 0x00 || | |||
|- | |||
| 0x01 || PairingOut | |||
|- | |||
| 0x02 || GetDeviceInfo | |||
|- | |||
| 0x03 || SetDataFormat | |||
|- | |||
| 0x04 || LRButtonDetection | |||
|- | |||
| 0x05 || Page | |||
|- | |||
| 0x06 || Reset | |||
|- | |||
| 0x07 || ClearPairingInfo | |||
|- | |||
| 0x08 || Shipment | |||
|- | |||
| 0x10 || SerialFlashRead | |||
|- | |||
| 0x11 || SerialFlashWrite | |||
|- | |||
| 0x12 || SerialFlashSectorErase | |||
|- | |||
| 0x20 || McuReset | |||
|- | |||
| 0x21 || McuWrite | |||
|- | |||
| 0x22 || McuResume | |||
|- | |||
| 0x23 || | |||
|- | |||
| 0x24 || McuPollingEnable | |||
|- | |||
| 0x25 || McuPollingDisable | |||
|- | |||
| 0x28 || AttachmentWrite | |||
|- | |||
| 0x29 || | |||
|- | |||
| 0x2A || AttachmentEnable | |||
|- | |||
| 0x2B || | |||
|- | |||
| 0x30 || SetIndicatorLed | |||
|- | |||
| 0x31 || GetIndicatorLed | |||
|- | |||
| 0x38 || SetNotificationLed | |||
|- | |||
| 0x40 || SensorSleep | |||
|- | |||
| 0x41 || SensorConfig | |||
|- | |||
| 0x42 || SensorWrite | |||
|- | |||
| 0x43 || SensorRead | |||
|- | |||
| 0x48 || MotorEnable | |||
|- | |||
| 0x50 || GetBatteryVoltage | |||
|- | |||
| 0x51 || WriteChargeSetting | |||
|- | |||
| 0x52 || | |||
|- | |||
| 0x58 || ExtDevWrite | |||
|- | |||
| 0x59 || GetExtDevInfo | |||
|- | |||
| 0x5A || ExtDevPollingEnable | |||
|- | |||
| 0x5B || ExtDevPollingDisable | |||
|- | |||
| 0x5C || ExtDevInFormatConfig | |||
|- | |||
| 0x60 || InternalAttachmentWrite | |||
|- | |||
| 0x61 || | |||
|- | |||
| 0x62 || InternalAttachmentEnable | |||
|- | |||
| 0x63 || InternalAttachmentPollingEnable | |||
|- | |||
| 0x64 || InternalAttachmentPollingDisable | |||
|- | |||
| 0x80 || Ack | |||
|- | |||
| 0x81 || PairingIn | |||
|- | |||
| 0x82 || DeviceInfo | |||
|- | |||
| 0x83 || LRButtonElapsedTime | |||
|- | |||
| 0x90 || SerialFlashData | |||
|- | |||
| 0xA0 || McuData | |||
|- | |||
| 0xA8 || AttachmentData | |||
|- | |||
| 0xAA || InternalAttachmentRead | |||
|- | |||
| 0xB0 || IndicatorLed | |||
|- | |||
| 0xC0 || SensorData | |||
|- | |||
| 0xD0 || BatteryVoltage | |||
|- | |||
| 0xD8 || ExtDevRead | |||
|- | |||
| 0xD9 || ExtDevInfo | |||
|} | |||
=== Left & Right Separate Joy-con === | |||
When paired directly to a computer over bluetooth, the joy-con both provide identical HID input report descriptor. This does not appear to include motion controls, IR data, or NFC. They both behave as detached single-player controllers. | When paired directly to a computer over bluetooth, the joy-con both provide identical HID input report descriptor. This does not appear to include motion controls, IR data, or NFC. They both behave as detached single-player controllers. | ||
Line 215: | Line 332: | ||
|} | |} | ||
==Colors== | == Colors == | ||
HEX codes for the colors shown in the "Controllers" menu of the Switch UI can be found in a Joy-con SPI dump starting at offset 0x6050. Body color is first followed by button color and each is 3 bytes long. These values are able to be re-written with any HEX color value to make the Joy-cons show up as different colors in the UI. The following is a list of official HEX colors recovered from SPI dumps. | HEX codes for the colors shown in the "Controllers" menu of the Switch UI can be found in a Joy-con SPI dump starting at offset 0x6050. Body color is first followed by button color and each is 3 bytes long. These values are able to be re-written with any HEX color value to make the Joy-cons show up as different colors in the UI. The following is a list of official HEX colors recovered from SPI dumps. | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 251: | Line 368: | ||
|} | |} | ||
==Additional Links== | == Additional Links == | ||
[https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering Reverse Engineering of the Joy-Con by Github user dekuNukem] | [https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering Reverse Engineering of the Joy-Con by Github user dekuNukem] |