Changes

2,773 bytes added ,  20:26, 5 August 2017
Add the lookup table at the end of the file (Credits to blubberdiblub on the Dolphin IRC channel)
Line 34: Line 34:  
| <code>0x3FB0</code> ?
 
| <code>0x3FB0</code> ?
 
| 2 bytes each
 
| 2 bytes each
| Lookup table for specific item names, 38 entries long. When the value is non-zero, it contains the offset where the item offset is stored (name LUT → item offset → actual item)<br/>''The offset is a guess, as well as the length (based on names dumped from the system menu). Assuming there are no other item names in this LUT and there is one entry for every known setting, it should be located (76 + 4) bytes from the end of file''
+
| [[#Lookup table for settings|Lookup table for specific item names]], 38 entries long. When the value is non-zero, it contains the offset where the item offset is stored (name LUT → item offset → actual item)
 
|-
 
|-
 
| <code>0x3FFC</code>  
 
| <code>0x3FFC</code>  
Line 106: Line 106:     
Note that both BIGARRAY and SMALLARRAY store the length (minus one) in the beginning and their actual size must be calculated from there. The name "ARRAY" need not indicate the actual content type; most settings store an application defined structure in them.
 
Note that both BIGARRAY and SMALLARRAY store the length (minus one) in the beginning and their actual size must be calculated from there. The name "ARRAY" need not indicate the actual content type; most settings store an application defined structure in them.
 +
 +
=== Lookup table for settings ===
 +
The end of the SYSCONF file acts as lookup table, supposedly to make finding settings easier/quicker. A lookup looks like this:
 +
# Seek 80 bytes (2 bytes per entry, 38 known entries at this point, plus 4 bytes for the <code>SCed</code> marker) backwards from the end of the file and read 76 bytes to obtain the lookup table.
 +
# Read the desired setting offset. In case this value is <code>0x0000</code>, the [[System Menu]] falls back to searching for the entry (otherwise [[Dolphin]] generated SYSCONF files would not work).
 +
# When non-zero, it represents an offset in the Item offset list. Seek to the value read, and read another 2 bytes from there.
 +
# Seek to the location indicated by the previous read (which is inside the Item offset list, and exists regardless of whether the lookup table is correct) to find the actual settinng.
 +
 +
New settings are added at the beginning, supposedly for backwards compatibility.
 +
 +
''Settings marked with ? are guesses, since they were not seen in any of the SYSCONF files available while writing''
 +
 +
{| class="wikitable"
 +
|-
 +
! File offset
 +
! Setting
 +
|-
 +
| <code>0x3FB0</code>
 +
| <code>MPLS.MOVIE</code>?
 +
|-
 +
| <code>0x3FB2</code>
 +
| <code>IPL.TID</code>?
 +
|-
 +
| <code>0x3FB4</code>
 +
| <code>WWW.RST</code>
 +
|-
 +
| <code>0x3FB6</code>
 +
| <code>DVD.CNF</code>?
 +
|-
 +
| <code>0x3FB8</code>
 +
| <code>BT.BAR</code>
 +
|-
 +
| <code>0x3FBA</code>
 +
| <code>BT.MOT</code>
 +
|-
 +
| <code>0x3FBC</code>
 +
| <code>BT.SPKV</code>
 +
|-
 +
| <code>0x3FBE</code>
 +
| <code>BT.SENS</code>
 +
|-
 +
| <code>0x3FC0</code>
 +
| <code>BT.CDIF</code>
 +
|-
 +
| <code>0x3FC2</code>
 +
| <code>BT.DINF</code>
 +
|-
 +
| <code>0x3FC4</code>
 +
| <code>DEV.DSM</code>?
 +
|-
 +
| <code>0x3FC6</code>
 +
| <code>DEV.CTC</code>?
 +
|-
 +
| <code>0x3FC8</code>
 +
| <code>DEV.VIM</code>?
 +
|-
 +
| <code>0x3FCA</code>
 +
| <code>DEV.BTM</code>?
 +
|-
 +
| <code>0x3FCC</code>
 +
| <code>NET.WCFG</code>
 +
|-
 +
| <code>0x3FCE</code>
 +
| <code>NET.WCPC</code>?
 +
|-
 +
| <code>0x3FD0</code>
 +
| <code>NET.PROF</code>?
 +
|-
 +
| <code>0x3FD2</code>
 +
| <code>NET.CTPC</code>
 +
|-
 +
| <code>0x3FD4</code>
 +
| <code>NET.CNF</code>?
 +
|-
 +
| <code>0x3FD6</code>
 +
| <code>IPL.UPT</code>
 +
|-
 +
| <code>0x3FD8</code>
 +
| <code>IPL.SND</code>?
 +
|-
 +
| <code>0x3FDA</code>
 +
| <code>IPL.SADR</code>
 +
|-
 +
| <code>0x3FDC</code>
 +
| <code>IPL.SSV</code>
 +
|-
 +
| <code>0x3FDE</code>
 +
| <code>IPL.PGS</code>
 +
|-
 +
| <code>0x3FE0</code>
 +
| <code>IPL.PC</code>
 +
|-
 +
| <code>0x3FE2</code>
 +
| <code>IPL.NIK</code>
 +
|-
 +
| <code>0x3FE4</code>
 +
| <code>IPL.LNG</code>
 +
|-
 +
| <code>0x3FE6</code>
 +
| <code>IPL.INC</code>
 +
|-
 +
| <code>0x3FE8</code>
 +
| <code>IPL.IDL</code>
 +
|-
 +
| <code>0x3FEA</code>
 +
| <code>IPL.FRC</code>
 +
|-
 +
| <code>0x3FEC</code>
 +
| <code>IPL.EULA</code>
 +
|-
 +
| <code>0x3FEE</code>
 +
| <code>IPL.E60</code>
 +
|-
 +
| <code>0x3FF0</code>
 +
| <code>IPL.DH</code>
 +
|-
 +
| <code>0x3FF2</code>
 +
| <code>IPL.CD2</code>
 +
|-
 +
| <code>0x3FF4</code>
 +
| <code>IPL.CD</code>
 +
|-
 +
| <code>0x3FF6</code>
 +
| <code>IPL.ARN</code>?
 +
|-
 +
| <code>0x3FF8</code>
 +
| <code>IPL.AR</code>
 +
|-
 +
| <code>0x3FFA</code>
 +
| <code>IPL.CB</code>
 +
|}
    
== Known settings ==
 
== Known settings ==
58

edits