Ring-Con: Difference between revisions

Line 39: Line 39:
|-
|-
| [[#0x00020A04]] || 0x4 || 0x14
| [[#0x00020A04]] || 0x4 || 0x14
|-
| [[#0x00021104]] || 0x4 || 0x8
|-
| [[#0x00021204]] || 0x4 || 0x8
|-
| [[#0x00021304]] || 0x4 || 0x8
|-
| [[#0x00021A04]] || 0x4 || 0x14
|-
|-
| [[#0x00023104]] || 0x4 || 0x8
| [[#0x00023104]] || 0x4 || 0x8
Line 119: Line 127:
|-
|-
| 0x10 || 0x2 || 16bit value copied to output_struct+0x6.
| 0x10 || 0x2 || 16bit value copied to output_struct+0x6.
|}
== 0x00021104 ==
This is implemented in the app with the cmd to use being specified via an input param.
See [[#0x00021A04]].
Reply:
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x4 || 0x2 || Data, copied to an output struct as an 16bit value.
|-
| 0x6 || 0x1 || [[#CRC]] over the previous 0x3-bytes.
|}
== 0x00021204 ==
See [[#0x00021104]].
== 0x00021304 ==
See [[#0x00021104]].
== 0x00021A04 ==
The app uses cmd [[#0x00020000]] first. When u8 reply_x5 from that cmd is >=0x20, it proceeds to use cmd 0x00021A04. Otherwise, the following cmds are used, with the output being written to the output_struct: [[#0x00021104]] (output_struct+0x0), [[#0x00021204]] (output_struct+0x2), [[#0x00021304]] (output_struct+0x4).
Then, if any of the 16bit output fields in output_struct are set to 0xCAFE, a flag is set to 0x2 (same field used for invalid-CRC, which uses value 0x1 for that). Then this returns 0.
Reply:
{| class="wikitable" border="1"
|-
! Offset || Size || Description
|-
| 0x4 || 0x2 || 16bit value copied to output_struct+0x0.
|-
| 0x6 || 0x1 || [[#CRC]] over the previous 0x2-bytes.
|-
| 0x7 || 0x1 || Padding.
|-
| 0x8 || 0x2 || 16bit value copied to output_struct+0x2.
|-
| 0xA || 0x1 || [[#CRC]] over the previous 0x2-bytes.
|-
| 0xB || 0x1 || Padding.
|-
| 0xC || 0x2 || 16bit value copied to output_struct+0x4.
|-
| 0xE || 0x1 || [[#CRC]] over the previous 0x2-bytes.
|-
| 0xF || 0x1 || Padding.
|}
|}