Changes

Jump to navigation Jump to search
3,118 bytes added ,  19:31, 1 May 2017
Line 1: Line 1: −
Also known as CTR-009
+
Also known as CTR-009, it sends the commands to the console through the IR interface on the back of the console.
   −
Apperantly it sends the commands to the console through the IR interface on the back of the console.
+
[http://what-games.golog.jp/archives/1350330.html Pictures of its contents].
 
  −
Pictures of its contents... [http://what-games.golog.jp/archives/1350330.html Link].
      
== Usage Instructions ==
 
== Usage Instructions ==
    
[[File:Circle pad pro instructions.jpg]]
 
[[File:Circle pad pro instructions.jpg]]
 +
 +
== IR Protocol ==
 +
Communications with this device is done via the [[IR_Services|ir:USER]] service, which uses obfuscation implemented in software. The [[IRU:SetBitRate|bitrate-value]] passed to IRUSER is 0x04, hence the actual bps is 96000.
 +
 +
The application sends requests via [[IRUSER:SendIrnop]] and receives response from Circle Pad Pro via [[IRUSER:ReceiveIrnop]] (or read data from the [[IRUSER_Shared_Memory|shared memory]]). The request and response data structures below are payloads in packets. Each request begins with a one-byte ID that determines the request type.
 +
 +
=== Request 1: Read Input ===
 +
 +
Request (3 bytes):
 +
{| class="wikitable" border="1"
 +
|-
 +
!  offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x1
 +
| Request ID (fixed value 1)
 +
|-
 +
| 0x1
 +
| 0x1
 +
| Response period in ms
 +
|-
 +
| 0x2
 +
| 0x1
 +
| Unknown
 +
|}
 +
 +
Response (6 bytes):
 +
This Response will be sent repeatedly by the specified period.
 +
{| class="wikitable" border="1"
 +
|-
 +
!  offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x1
 +
| Response ID? Fixed value 0x10
 +
|-
 +
| 0x1
 +
| 0x3
 +
| Right circle pad position.
 +
This three bytes are two little-endian 12-bit fields. The first one is for x-axis and the second one is for y-axis.
 +
|-
 +
| 0x4
 +
| 0x1
 +
| bit[0:4] battery level?
 +
bit[5] ZL button
 +
 +
bit[6] ZR button
 +
 +
bit[7] R button
 +
 +
Note that for the three button fields, the bit is set when the button is NOT pressed.
 +
|-
 +
| 0x5
 +
| 0x1
 +
| Unknown
 +
|}
 +
 +
=== Request 2: Read Calibration Data? ===
 +
 +
Request (6 bytes):
 +
{| class="wikitable" border="1"
 +
|-
 +
!  offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x1
 +
| Request ID (fixed value 2)
 +
|-
 +
| 0x1
 +
| 0x1
 +
| Expected response time in ms?
 +
|-
 +
| 0x2
 +
| 0x2
 +
| Data offset? (aligned to 0x10?)
 +
|-
 +
| 0x4
 +
| 0x2
 +
| Data size (aligned to 0x10?)
 +
|}
 +
 +
Response (5 bytes + requested size)
 +
{| class="wikitable" border="1"
 +
|-
 +
!  offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x1
 +
| Response ID? Fixed value 0x11
 +
|-
 +
| 0x1
 +
| 0x2
 +
| Data offset? Same as Request+0x2
 +
|-
 +
| 0x3
 +
| 0x2
 +
| Data size. Same as Request+0x4
 +
|-
 +
| 0x5
 +
| data size
 +
| calibration data?
 +
|}
 +
 +
=== Request 3 ===
 +
Request (22 bytes?):
 +
{| class="wikitable" border="1"
 +
|-
 +
!  offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x1
 +
| Request ID (fixed value 3)
 +
|-
 +
| 0x1
 +
| 0x1
 +
| Expected response time in ms?
 +
|-
 +
| 0x2
 +
| ...
 +
| ?
 +
|}
 +
 +
Response (2 bytes?):
 +
{| class="wikitable" border="1"
 +
|-
 +
!  offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x1
 +
| Response ID? Fixed value 0x12
 +
|-
 +
| 0x1
 +
| 0x1
 +
| 0?
 +
|}
 +
 +
=== Request 4: Reset Calibration Data? ===
 +
Request (3 bytes?):
 +
{| class="wikitable" border="1"
 +
|-
 +
!  offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x1
 +
| Request ID (fixed value 4)
 +
|-
 +
| 0x1
 +
| 0x1
 +
| Expected response time in ms?
 +
|-
 +
| 0x2
 +
| 0x1
 +
| ?
 +
|}
 +
 +
 +
Response (2 bytes?):
 +
{| class="wikitable" border="1"
 +
|-
 +
!  offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x1
 +
| Response ID? Fixed value 0x13
 +
|-
 +
| 0x1
 +
| 0x1
 +
| 0?
 +
|}
 +
 +
=== Request 5 ===
 +
Request (2 bytes):
 +
{| class="wikitable" border="1"
 +
|-
 +
!  offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x1
 +
| Request ID (fixed value 5)
 +
|-
 +
| 0x1
 +
| 0x1
 +
| Expected response time in ms?
 +
|}
 +
 +
 +
Response (2 bytes?):
 +
{| class="wikitable" border="1"
 +
|-
 +
!  offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x1
 +
| Response ID? Fixed value 0x14
 +
|-
 +
| 0x1
 +
| 0x1
 +
| ?
 +
|}
242

edits

Navigation menu