Download Play: Difference between revisions

Line 59: Line 59:
|}
|}


Total_frames is at least 0x4 normally. When a sysupdate is included, total_frames is 0x4+<total frames required for the titlelist(normally 0x1)>.
Total_frames is at least 0x4 normally. When a sysupdate is included, total_frames is 0x4+<total frames required for the titlelist(normally 0x1)>. Total_frames should be <=0x20, but the code doesn't check for this specific value.


Frames:
==== Checksum ====
The checksum seed is the 4-byte output from [[PS:EncryptDecryptAes|encrypting]] zeros with AES-CTR using [[PSPXI:EncryptDecryptAes|keytype5]]. The CTR is the output from this: "for(i=0; i<0x10; i++)ctr[i] = ctrseed[i] ^ host_macaddress[i % 6];" This ctrseed is a fixed 0x10-byte random-data block stored in DLP-sysmodule .rodata.
This seed is initialized after connecting to/creating the DLP network.
 
The checksum stored in the above data frame header is then calculated using this checksum seed.
 
==== Frames ====
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 83: Line 89:
The structure of each spectator frame relative to "frame-specific payload" is described below.
The structure of each spectator frame relative to "frame-specific payload" is described below.


==== Metadata frame ====
===== Metadata frame =====
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 185: Line 191:
If the u16 at frameheader+0x6 is less than 0x101, the 8-bytes at outptr are cleared to all-zero, instead of copying the data from offset 0x2E8.
If the u16 at frameheader+0x6 is less than 0x101, the 8-bytes at outptr are cleared to all-zero, instead of copying the data from offset 0x2E8.


==== Icon gfx frame ====
===== Icon gfx frame =====
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 197: Line 203:
|}
|}


==== Sysupdate titlelist frame ====
===== Sysupdate titlelist frame =====
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-