Line 554: |
Line 554: |
| | 0x086B00C2 | | | 0x086B00C2 |
| |? | | |? |
− | |? | + | |SetOtherSaveDataSecureValue |
| | 00121004 | | | 00121004 |
| |- | | |- |
| | 0x086C00C2 | | | 0x086C00C2 |
| |? | | |? |
− | |? | + | |GetOtherSaveDataSecureValue |
| | 00121004 | | | 00121004 |
| |- | | |- |
Line 568: |
Line 568: |
| |- | | |- |
| | 0x086E00C0 | | | 0x086E00C0 |
− | |? | + | |Related to Secure Value? Used in Pokemon Sun/Moon. |
− | |? | + | |SetThisSaveDataSecureValue |
| |None? | | |None? |
| |- | | |- |
| | 0x086F0040 | | | 0x086F0040 |
− | |? | + | |Related to Secure Value? Used in Pokemon Sun/Moon. |
− | |? | + | |GetThisSaveDataSecureValue |
| | 0xE | | | 0xE |
| |- | | |- |
Line 644: |
Line 644: |
| | 0x087D0000 | | | 0x087D0000 |
| | [[9.6.0-24|9.6.0-X]] | | | [[9.6.0-24|9.6.0-X]] |
− | | Writes an u32 from state to cmdreply[2]. Probably the total number of titles in the SEEDDB? | + | | GetNumSeeds. Writes the number of seeds to cmdreply[2] |
| | 0x00200000 | | | 0x00200000 |
| |- | | |- |
Line 686: |
Line 686: |
| | ? | | | ? |
| | 0x00200000 | | | 0x00200000 |
| + | |- |
| + | | 0x088600C0 |
| + | | [[11.1.0-34|11.1.0-X]] |
| + | | [[FS:CheckUpdatedDat|CheckUpdatedDat]] |
| + | | 0x00080000 |
| |} | | |} |
| | | |
Line 729: |
Line 734: |
| =File and directory access= | | =File and directory access= |
| ==Files== | | ==Files== |
− | File session handles obtained via [[FS:OpenFile]] et al can be used to access files through a service-like interface, despite not being an actual service registered using [[SRV:RegisterService]]. | + | File session handles obtained via [[FS:OpenFile]] and [[FS:OpenFileDirectly]] can be used to access files through a service-like interface, despite not being an actual service registered using [[SRV:RegisterService]]. To use this service-like interface, simply call the SendSyncRequest SVC with a file session handle, using the IPC buffer in thread-local storage for parameters and responses, just like you would with a proper service. |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 783: |
Line 788: |
| | | |
| ==Directories== | | ==Directories== |
| + | Directory session handles obtained via [[FS:OpenDirectory]] are usable via a service-like interface, following the exact same procedure described above for file sessions. |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
Line 826: |
Line 832: |
| |- | | |- |
| | 0x00000003 | | | 0x00000003 |
− | | Application [[#RomFS|RomFS]] | + | | SelfNCCH (including [[#RomFS|RomFS]]) |
| | Yes | | | Yes |
| | No | | | No |
Line 1,066: |
Line 1,072: |
| |- | | |- |
| | 0x567890B4 | | | 0x567890B4 |
− | | ? SaveData from Demo Version of Retail Game | + | | Similar to 0x567890B2 but can only access Accessible Save specified in [[NCCH/Extended_Header#Storage_Info|exheader]]? |
| | Yes | | | Yes |
| | No | | | No |
| | No | | | No |
− | | No | + | | Yes |
| | ? | | | ? |
| |} | | |} |
Line 1,088: |
Line 1,094: |
| ! Value | | ! Value |
| ! Description | | ! Description |
| + | |- |
| + | | -1 |
| + | | Returned internally by Process9, when errors occur it seems(in particular when no nul-terminator was found in the input path). The data ptr is set to NULL. |
| |- | | |- |
| | 0x0 | | | 0x0 |
Line 1,099: |
Line 1,108: |
| |- | | |- |
| | 0x3 | | | 0x3 |
− | | ASCII - Text-based path with 7-bit ASCII characters padded to 8-bits each | + | | ASCII - Text-based path with 7-bit ASCII characters padded to 8-bits each (signed char) |
| |- | | |- |
| | 0x4 | | | 0x4 |
Line 1,109: |
Line 1,118: |
| == Binary LowPath == | | == Binary LowPath == |
| The format of the data that a binary LowPath points to is custom per archive. | | The format of the data that a binary LowPath points to is custom per archive. |
| + | |
| + | === SelfNCCH File Path Data Format === |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Index word |
| + | ! Description |
| + | |- |
| + | | 0 |
| + | | Type: |
| + | * 0x0: RomFS |
| + | * 0x1: error 0xD9004676 |
| + | * 0x2: ExeFS |
| + | * 0x3: Error 0xE0E046BE. |
| + | * 0x4: FS-module crashes on this |
| + | * 0x5: Update RomFS? |
| + | |- |
| + | | 1-2 |
| + | | File name for ExeFS ("icon"/"banner"/"logo"). ".code" is not allowed |
| + | |} |
| + | |
| + | Note that ExeFS files only support reading from offset=0 and with size=file_size. |
| | | |
| === SystemSaveData Archive Path Data Format === | | === SystemSaveData Archive Path Data Format === |
Line 1,152: |
Line 1,182: |
| |} | | |} |
| The file/directory lowpath for this FS archive is a text path in the [[Savegames|savegame]] filesystem. | | The file/directory lowpath for this FS archive is a text path in the [[Savegames|savegame]] filesystem. |
| + | |
| + | === 0x567890B4 Archive Path Data Format === |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Index word |
| + | ! Description |
| + | |- |
| + | | 0 |
| + | | [[Mediatypes|Mediatype]] |
| + | |- |
| + | | 1 |
| + | | <code><nowiki>Lower_word_saveid >> 8</nowiki></code> ? |
| + | |- |
| + | | 2 |
| + | | Unknown. Game calculate this using formula <code><nowiki>0xFFFFFF00 | unknown_b</nowiki></code> |
| + | |} |
| | | |
| === ExtSaveData Archive Path Data Format === | | === ExtSaveData Archive Path Data Format === |
Line 1,183: |
Line 1,229: |
| |- | | |- |
| | 2 | | | 2 |
− | | [[Mediatypes|Mediatype]] | + | | ([[Mediatypes|Mediatype]] & 0xFF) | (uninitialized_data? & 0xFFFFFF00) |
| |- | | |- |
| | 3 | | | 3 |
− | | Reserved | + | | Number of something? Hardcoded per-archive, 0 for ExeFS, 200 for area:, 100 for rate:, 40 for eula:, etc. |
| |} | | |} |
| | | |
Line 1,213: |
Line 1,259: |
| | | |
| Archives 0x3 and 0x2345678E both allow for accessing the [[RomFS#Level_3_Format|level-3 IVFC images]] for RomFS access. The main CXI RomFS is accessible via an all-zero 0xc-byte binary file-lowpath. The update RomFS can be accessed with the first u32 in the binary file-lowpath being set to 0x5. The user must handle parsing the filesystem used in the exposed image itself. | | Archives 0x3 and 0x2345678E both allow for accessing the [[RomFS#Level_3_Format|level-3 IVFC images]] for RomFS access. The main CXI RomFS is accessible via an all-zero 0xc-byte binary file-lowpath. The update RomFS can be accessed with the first u32 in the binary file-lowpath being set to 0x5. The user must handle parsing the filesystem used in the exposed image itself. |
| + | |
| + | With FSPXI the returned data for RomFS is the entire RomFS section from the NCCH, starting at the IVFC header. |
| | | |
| The 0x3 archive is an interface for the 0x2345678E archive with the current process programID+mediatype. The file lowpath is 3-words. These words are written to 0x2345678E-archive file_lowpath+0, with the rest of that lowpath set to all-zero(lowpath is different from archive 0x2345678A). File lowpath: | | The 0x3 archive is an interface for the 0x2345678E archive with the current process programID+mediatype. The file lowpath is 3-words. These words are written to 0x2345678E-archive file_lowpath+0, with the rest of that lowpath set to all-zero(lowpath is different from archive 0x2345678A). File lowpath: |
Line 1,267: |
Line 1,315: |
| | SD | | | SD |
| |- | | |- |
− | | 2 | + | | 3 |
| | TWL Photo | | | TWL Photo |
| |} | | |} |
Line 1,448: |
Line 1,496: |
| | 0x10 | | | 0x10 |
| | 0x120 | | | 0x120 |
− | | The [[nand/private/movable.sed]], encrypted with AES-CTR using the above MAC for the counter. | + | | The [[nand/private/movable.sed]], encrypted with AES-CBC using the above MAC for the counter. |
| |} | | |} |
| | | |