Line 199:
Line 199:
Some commands require require the account slot as an argument, which is 1-indexed. The value for using the current loaded account is 0xFE.
Some commands require require the account slot as an argument, which is 1-indexed. The value for using the current loaded account is 0xFE.
+
+
= UUIDs =
+
+
The ACT service generates UUIDs for accounts and for the console in general.
+
+
All UUIDs generated by the service are Version 1 UUIDs [https://www.rfc-editor.org/rfc/rfc9562.html#name-uuid-version-1].
+
+
== Node Data ==
+
In general, the following 48-bit node data is used.
+
+
{| class="wikitable" border="1"
+
|-
+
! Offset !! Size !! Description
+
|-
+
| 0x0 || 0x1 || Always set to 1
+
|-
+
| 0x1 || 0x1 || Always set to 0 (related to parental controls?)
+
|-
+
| 0x2 || 0x4 || Byte-Swapped value from [[AM:GetDeviceId]]
+
|}
+
+
== UUID Types ==
+
=== Regular UUIDs ===
+
These are just standard RFC9562 [https://www.rfc-editor.org/rfc/rfc9562.html#name-uuid-version-1] UUIDs with the above node data.
+
+
=== Title-specific UUIDs ===
+
These UUIDs are specific to the title that requested them to be generated, specifically, using the unique ID portion of the title ID of that title.
+
+
The following technique is used internally to generate these UUIDs:
+
+
- Generate a regular UUID using the above mentioned node data (<code>regular_uuid</code>)
+
+
- <code>hash = SHA256 ( byte-swapped unique ID (thus, big endian) + 095E273A + 48-bit node data from regular_uuid )</code>
+
+
- <code>output_uuid = regular_uuid[0:9] + hash[10] | 0x1 + hash[11:16]</code>
= DataBlocks =
= DataBlocks =