Filesystem services: Difference between revisions
(23 intermediate revisions by 11 users not shown) | |||
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 | | GetNumSeeds. Writes the number of seeds to cmdreply[2] | ||
| 0x00200000 | | 0x00200000 | ||
|- | |- | ||
Line 689: | Line 689: | ||
| 0x088600C0 | | 0x088600C0 | ||
| [[11.1.0-34|11.1.0-X]] | | [[11.1.0-34|11.1.0-X]] | ||
| | | [[FS:CheckUpdatedDat|CheckUpdatedDat]] | ||
| 0x00080000 | | 0x00080000 | ||
|} | |} | ||
Line 734: | Line 734: | ||
=File and directory access= | =File and directory access= | ||
==Files== | ==Files== | ||
File session handles obtained via [[FS:OpenFile]] | 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 788: | 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 831: | Line 832: | ||
|- | |- | ||
| 0x00000003 | | 0x00000003 | ||
| | | SelfNCCH (including [[#RomFS|RomFS]]) | ||
| Yes | | Yes | ||
| No | | No | ||
Line 1,071: | Line 1,072: | ||
|- | |- | ||
| 0x567890B4 | | 0x567890B4 | ||
| ? | | Similar to 0x567890B2 but can only access Accessible Save specified in [[NCCH/Extended_Header#Storage_Info|exheader]]? | ||
| Yes | | Yes | ||
| No | | No | ||
| No | | No | ||
| | | Yes | ||
| ? | | ? | ||
|} | |} | ||
Line 1,117: | 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,160: | 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,191: | Line 1,229: | ||
|- | |- | ||
| 2 | | 2 | ||
| [[Mediatypes|Mediatype]] | | ([[Mediatypes|Mediatype]] & 0xFF) | (uninitialized_data? & 0xFFFFFF00) | ||
|- | |- | ||
| 3 | | 3 | ||
| | | Number of something? Hardcoded per-archive, 0 for ExeFS, 200 for area:, 100 for rate:, 40 for eula:, etc. | ||
|} | |} | ||
Line 1,221: | 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,275: | Line 1,315: | ||
| SD | | SD | ||
|- | |- | ||
| | | 3 | ||
| TWL Photo | | TWL Photo | ||
|} | |} | ||
Line 1,456: | Line 1,496: | ||
| 0x10 | | 0x10 | ||
| 0x120 | | 0x120 | ||
| The [[nand/private/movable.sed]], encrypted with AES- | | The [[nand/private/movable.sed]], encrypted with AES-CBC using the above MAC for the counter. | ||
|} | |} | ||