Difference between revisions of "Filesystem services"
(Add DeleteDirectory link) |
Vgturtle127 (talk | contribs) m (Fixes and improvements, added a note about the table for accuracy purposes) |
||
Line 2: | Line 2: | ||
= Filesystem service "fs:USER" = | = Filesystem service "fs:USER" = | ||
− | You can at most have 32 | + | You can at most have 32 FS archive handles. |
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 9: | Line 9: | ||
! Available since system version | ! Available since system version | ||
! Description | ! Description | ||
− | ! scope="col" width="400" | Required [[NCCH/Extended_Header|exheader]] | + | ! scope="col" width="400" | Required [[NCCH/Extended_Header|exheader]] access info bitmask |
|- | |- | ||
| 0x000100C6 | | 0x000100C6 | ||
− | | | + | |? |
| Dummy1 | | Dummy1 | ||
| None | | None | ||
|- | |- | ||
| 0x040100C4 | | 0x040100C4 | ||
− | | | + | |? |
| Control | | Control | ||
| None | | None | ||
|- | |- | ||
| 0x08010002 | | 0x08010002 | ||
− | | | + | |? |
| [[FS:Initialize|Initialize]] | | [[FS:Initialize|Initialize]] | ||
| None | | None | ||
|- | |- | ||
| 0x080201C2 | | 0x080201C2 | ||
− | | | + | |? |
| [[FS:OpenFile|OpenFile]] | | [[FS:OpenFile|OpenFile]] | ||
| None | | None | ||
|- | |- | ||
| 0x08030204 | | 0x08030204 | ||
− | | | + | |? |
| [[FS:OpenFileDirectly|OpenFileDirectly]] | | [[FS:OpenFileDirectly|OpenFileDirectly]] | ||
| None | | None | ||
|- | |- | ||
| 0x08040142 | | 0x08040142 | ||
− | | | + | |? |
| [[FS:DeleteFile|DeleteFile]] | | [[FS:DeleteFile|DeleteFile]] | ||
| None | | None | ||
|- | |- | ||
| 0x08050244 | | 0x08050244 | ||
− | | | + | |? |
| RenameFile | | RenameFile | ||
| None | | None | ||
|- | |- | ||
| 0x08060142 | | 0x08060142 | ||
− | | | + | |? |
| [[FS:DeleteDirectory|DeleteDirectory]] | | [[FS:DeleteDirectory|DeleteDirectory]] | ||
| None | | None | ||
|- | |- | ||
| 0x08070142 | | 0x08070142 | ||
− | | | + | |? |
| DeleteDirectoryRecursively | | DeleteDirectoryRecursively | ||
| None | | None | ||
|- | |- | ||
| 0x08080202 | | 0x08080202 | ||
− | | | + | |? |
| CreateFile | | CreateFile | ||
| None | | None | ||
|- | |- | ||
| 0x08090182 | | 0x08090182 | ||
− | | | + | |? |
| [[FS:CreateDirectory|CreateDirectory]] | | [[FS:CreateDirectory|CreateDirectory]] | ||
| None | | None | ||
|- | |- | ||
| 0x080A0244 | | 0x080A0244 | ||
− | | | + | |? |
| RenameDirectory | | RenameDirectory | ||
| None | | None | ||
|- | |- | ||
| 0x080B0102 | | 0x080B0102 | ||
− | | | + | |? |
| [[FS:OpenDirectory|OpenDirectory]] | | [[FS:OpenDirectory|OpenDirectory]] | ||
| None | | None | ||
|- | |- | ||
| 0x080C00C2 | | 0x080C00C2 | ||
− | | | + | |? |
| [[FS:OpenArchive|OpenArchive]] | | [[FS:OpenArchive|OpenArchive]] | ||
− | | Each archive | + | | Each archive ID code has separate access info bitmasks, if it has any |
|- | |- | ||
| 0x080D0144 | | 0x080D0144 | ||
− | | | + | |? |
| ControlArchive | | ControlArchive | ||
| None | | None | ||
|- | |- | ||
| 0x080E0080 | | 0x080E0080 | ||
− | | | + | |? |
| [[FS:CloseArchive|CloseArchive]] | | [[FS:CloseArchive|CloseArchive]] | ||
| None | | None | ||
|- | |- | ||
| 0x080F0180 | | 0x080F0180 | ||
− | | | + | |? |
| FormatThisUserSaveData | | FormatThisUserSaveData | ||
| None | | None | ||
|- | |- | ||
| 0x08100200 | | 0x08100200 | ||
− | | | + | |? |
| CreateSystemSaveData | | CreateSystemSaveData | ||
− | | 0x4, for when the input saveID doesn't match the exheader saveID | + | | 0x4, for when the input saveID doesn't match the exheader saveID |
|- | |- | ||
| 0x08110040 | | 0x08110040 | ||
− | | | + | |? |
| DeleteSystemSaveData | | DeleteSystemSaveData | ||
− | | 0x1004, for when the input saveID doesn't match the exheader saveID | + | | 0x1004, for when the input saveID doesn't match the exheader saveID |
|- | |- | ||
| 0x08120080 | | 0x08120080 | ||
− | | | + | |? |
| GetFreeBytes | | GetFreeBytes | ||
| None | | None | ||
|- | |- | ||
| 0x08130000 | | 0x08130000 | ||
− | | | + | |? |
| GetCardType | | GetCardType | ||
| 0x1017 | | 0x1017 | ||
|- | |- | ||
| 0x08140000 | | 0x08140000 | ||
− | | | + | |? |
| [[FS:GetSdmcArchiveResource|GetSdmcArchiveResource]] | | [[FS:GetSdmcArchiveResource|GetSdmcArchiveResource]] | ||
| None | | None | ||
|- | |- | ||
| 0x08150000 | | 0x08150000 | ||
− | | | + | |? |
| [[FS:GetNandArchiveResource|GetNandArchiveResource]] | | [[FS:GetNandArchiveResource|GetNandArchiveResource]] | ||
| None | | None | ||
|- | |- | ||
| 0x08160000 | | 0x08160000 | ||
− | | | + | |? |
| GetSdmcFatfsError | | GetSdmcFatfsError | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x08170000 | | 0x08170000 | ||
− | | | + | |? |
| [[FS:IsSdmcDetected|IsSdmcDetected]] | | [[FS:IsSdmcDetected|IsSdmcDetected]] | ||
| None | | None | ||
|- | |- | ||
| 0x08180000 | | 0x08180000 | ||
− | | | + | |? |
| [[FS:IsSdmcWritable|IsSdmcWritable]] | | [[FS:IsSdmcWritable|IsSdmcWritable]] | ||
| None | | None | ||
|- | |- | ||
| 0x08190042 | | 0x08190042 | ||
− | | | + | |? |
| GetSdmcCid | | GetSdmcCid | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x081A0042 | | 0x081A0042 | ||
− | | | + | |? |
| GetNandCid | | GetNandCid | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x081B0000 | | 0x081B0000 | ||
− | | | + | |? |
| GetSdmcSpeedInfo | | GetSdmcSpeedInfo | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x081C0000 | | 0x081C0000 | ||
− | | | + | |? |
| GetNandSpeedInfo | | GetNandSpeedInfo | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x081D0042 | | 0x081D0042 | ||
− | | | + | |? |
| GetSdmcLog | | GetSdmcLog | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x081E0042 | | 0x081E0042 | ||
− | | | + | |? |
| GetNandLog | | GetNandLog | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x081F0000 | | 0x081F0000 | ||
− | | | + | |? |
| ClearSdmcLog | | ClearSdmcLog | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x08200000 | | 0x08200000 | ||
− | | | + | |? |
| ClearNandLog | | ClearNandLog | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x08210000 | | 0x08210000 | ||
− | | | + | |? |
| CardSlotIsInserted | | CardSlotIsInserted | ||
| 0x1017 | | 0x1017 | ||
|- | |- | ||
| 0x08220000 | | 0x08220000 | ||
− | | | + | |? |
| CardSlotPowerOn | | CardSlotPowerOn | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x08230000 | | 0x08230000 | ||
− | | | + | |? |
| CardSlotPowerOff | | CardSlotPowerOff | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x08240000 | | 0x08240000 | ||
− | | | + | |? |
| CardSlotGetCardIFPowerStatus | | CardSlotGetCardIFPowerStatus | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x08250040 | | 0x08250040 | ||
− | | | + | |? |
| CardNorDirectCommand | | CardNorDirectCommand | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x08260080 | | 0x08260080 | ||
− | | | + | |? |
| CardNorDirectCommandWithAddress | | CardNorDirectCommandWithAddress | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x08270082 | | 0x08270082 | ||
− | | | + | |? |
| CardNorDirectRead | | CardNorDirectRead | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x082800C2 | | 0x082800C2 | ||
− | | | + | |? |
| CardNorDirectReadWithAddress | | CardNorDirectReadWithAddress | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x08290082 | | 0x08290082 | ||
− | | | + | |? |
| CardNorDirectWrite | | CardNorDirectWrite | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x082A00C2 | | 0x082A00C2 | ||
− | | | + | |? |
| CardNorDirectWriteWithAddress | | CardNorDirectWriteWithAddress | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x082B00C2 | | 0x082B00C2 | ||
− | | | + | |? |
| CardNorDirectRead_4xIO | | CardNorDirectRead_4xIO | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x082C0082 | | 0x082C0082 | ||
− | | | + | |? |
| CardNorDirectCpuWriteWithoutVerify | | CardNorDirectCpuWriteWithoutVerify | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x082D0040 | | 0x082D0040 | ||
− | | | + | |? |
| CardNorDirectSectorEraseWithoutVerify | | CardNorDirectSectorEraseWithoutVerify | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x082E0040 | | 0x082E0040 | ||
− | | | + | |? |
| [[FS:GetProductInfo|GetProductInfo]] | | [[FS:GetProductInfo|GetProductInfo]] | ||
| 0x1005 | | 0x1005 | ||
|- | |- | ||
| 0x082F0040 | | 0x082F0040 | ||
− | | | + | |? |
| [[FS:GetProgramLaunchInfo|GetProgramLaunchInfo]] | | [[FS:GetProgramLaunchInfo|GetProgramLaunchInfo]] | ||
| 0x1005 | | 0x1005 | ||
|- | |- | ||
| 0x08300182 | | 0x08300182 | ||
− | | | + | |? |
| CreateExtSaveData | | CreateExtSaveData | ||
− | | 0xC, for when the input extdataID doesn't match the exheader extdataID | + | | 0xC, for when the input extdataID doesn't match the exheader extdataID |
|- | |- | ||
| 0x08310180 | | 0x08310180 | ||
− | | | + | |? |
| CreateSharedExtSaveData | | CreateSharedExtSaveData | ||
| 0x1005 | | 0x1005 | ||
|- | |- | ||
| 0x08320102 | | 0x08320102 | ||
− | | | + | |? |
| [[FS:ReadExtSaveDataIcon|ReadExtSaveDataIcon]] | | [[FS:ReadExtSaveDataIcon|ReadExtSaveDataIcon]] | ||
− | | 0x100D, for when the input extdataID doesn't match the exheader extdataID | + | | 0x100D, for when the input extdataID doesn't match the exheader extdataID |
|- | |- | ||
| 0x08330082 | | 0x08330082 | ||
− | | | + | |? |
| EnumerateExtSaveData | | EnumerateExtSaveData | ||
| 0x1005 | | 0x1005 | ||
|- | |- | ||
| 0x08340082 | | 0x08340082 | ||
− | | | + | |? |
| EnumerateSharedExtSaveData | | EnumerateSharedExtSaveData | ||
| 0x1005 | | 0x1005 | ||
|- | |- | ||
| 0x08350080 | | 0x08350080 | ||
− | | | + | |? |
| DeleteExtSaveData | | DeleteExtSaveData | ||
− | | 0x100D, for when the input extdataID doesn't match the exheader extdataID | + | | 0x100D, for when the input extdataID doesn't match the exheader extdataID |
|- | |- | ||
| 0x08360080 | | 0x08360080 | ||
− | | | + | |? |
| DeleteSharedExtSaveData | | DeleteSharedExtSaveData | ||
| 0x1005 | | 0x1005 | ||
|- | |- | ||
| 0x08370040 | | 0x08370040 | ||
− | | | + | |? |
| SetCardSpiBaudRate | | SetCardSpiBaudRate | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x08380040 | | 0x08380040 | ||
− | | | + | |? |
| SetCardSpiBusMode | | SetCardSpiBusMode | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x08390000 | | 0x08390000 | ||
− | | | + | |? |
| SendInitializeInfoTo9 | | SendInitializeInfoTo9 | ||
| None | | None | ||
|- | |- | ||
| 0x083A0100 | | 0x083A0100 | ||
− | | | + | |? |
| GetSpecialContentIndex | | GetSpecialContentIndex | ||
| 0x1005 | | 0x1005 | ||
|- | |- | ||
| 0x083B00C2 | | 0x083B00C2 | ||
− | | | + | |? |
| GetLegacyRomHeader | | GetLegacyRomHeader | ||
| 0x1015 | | 0x1015 | ||
|- | |- | ||
| 0x083C00C2 | | 0x083C00C2 | ||
− | | | + | |? |
| GetLegacyBannerData | | GetLegacyBannerData | ||
| 0x1015 | | 0x1015 | ||
|- | |- | ||
| 0x083D0100 | | 0x083D0100 | ||
− | | | + | |? |
| CheckAuthorityToAccessExtSaveData | | CheckAuthorityToAccessExtSaveData | ||
| 0x44 | | 0x44 | ||
|- | |- | ||
| 0x083E00C2 | | 0x083E00C2 | ||
− | | | + | |? |
| QueryTotalQuotaSize | | QueryTotalQuotaSize | ||
| None | | None | ||
|- | |- | ||
| 0x083F00C0 | | 0x083F00C0 | ||
− | | | + | |? |
| GetExtDataBlockSize | | GetExtDataBlockSize | ||
| None | | None | ||
|- | |- | ||
| 0x08400040 | | 0x08400040 | ||
− | | | + | |? |
| AbnegateAccessRight | | AbnegateAccessRight | ||
− | | | + | |? |
|- | |- | ||
| 0x08410000 | | 0x08410000 | ||
− | | | + | |? |
| DeleteSdmcRoot | | DeleteSdmcRoot | ||
| 0x1005 | | 0x1005 | ||
|- | |- | ||
| 0x08420040 | | 0x08420040 | ||
− | | | + | |? |
| DeleteAllExtSaveDataOnNand | | DeleteAllExtSaveDataOnNand | ||
| 0x1005 | | 0x1005 | ||
|- | |- | ||
| 0x08430000 | | 0x08430000 | ||
− | | | + | |? |
| [[FS:InitializeCtrFileSystem|InitializeCtrFileSystem]] | | [[FS:InitializeCtrFileSystem|InitializeCtrFileSystem]] | ||
| None | | None | ||
|- | |- | ||
| 0x08440000 | | 0x08440000 | ||
− | | | + | |? |
| CreateSeed | | CreateSeed | ||
| 0x2 | | 0x2 | ||
|- | |- | ||
| 0x084500C2 | | 0x084500C2 | ||
− | | | + | |? |
| GetFormatInfo | | GetFormatInfo | ||
− | | ? | + | |? |
|- | |- | ||
| 0x08460102 | | 0x08460102 | ||
− | | | + | |? |
| GetLegacyRomHeader2 | | GetLegacyRomHeader2 | ||
| 0x1015 | | 0x1015 | ||
|- | |- | ||
| 0x08470180 | | 0x08470180 | ||
− | | | + | |? |
| FormatCtrCardUserSaveData | | FormatCtrCardUserSaveData | ||
| 0x6 | | 0x6 | ||
|- | |- | ||
| 0x08480042 | | 0x08480042 | ||
− | | | + | |? |
| GetSdmcCtrRootPath | | GetSdmcCtrRootPath | ||
| 0x100D | | 0x100D | ||
|- | |- | ||
| 0x08490040 | | 0x08490040 | ||
− | | | + | |? |
| GetArchiveResource | | GetArchiveResource | ||
− | | ? | + | |? |
|- | |- | ||
| 0x084A0002 | | 0x084A0002 | ||
− | | | + | |? |
| ExportIntegrityVerificationSeed | | ExportIntegrityVerificationSeed | ||
| 0x4000 | | 0x4000 | ||
|- | |- | ||
| 0x084B0002 | | 0x084B0002 | ||
− | | | + | |? |
| ImportIntegrityVerificationSeed | | ImportIntegrityVerificationSeed | ||
| 0x4000 | | 0x4000 | ||
|- | |- | ||
| 0x084C0242 | | 0x084C0242 | ||
− | | | + | |? |
| FormatSaveData | | FormatSaveData | ||
− | | 0x6, in some cases this | + | | 0x6, in some cases this write isn't needed however |
|- | |- | ||
| 0x084D0102 | | 0x084D0102 | ||
− | | | + | |? |
| GetLegacySubBannerData | | GetLegacySubBannerData | ||
| 0x1015 | | 0x1015 | ||
|- | |- | ||
| 0x084E0342 | | 0x084E0342 | ||
− | | | + | |? |
| [[FS:UpdateSha256Context|UpdateSha256Context]] | | [[FS:UpdateSha256Context|UpdateSha256Context]] | ||
| 0x5 | | 0x5 | ||
|- | |- | ||
| 0x084F0102 | | 0x084F0102 | ||
− | | | + | |? |
| ReadSpecialFile | | ReadSpecialFile | ||
| None | | None | ||
|- | |- | ||
| 0x08500040 | | 0x08500040 | ||
− | | | + | |? |
| GetSpecialFileSize | | GetSpecialFileSize | ||
| None | | None | ||
Line 424: | Line 424: | ||
| [[3.0.0-5]] | | [[3.0.0-5]] | ||
| CreateExtSaveData | | CreateExtSaveData | ||
− | | Shared extdata: 0x101005. Regular extdata in certain cases: 0xC | + | | Shared extdata: 0x101005. Regular extdata in certain cases: 0xC |
|- | |- | ||
| 0x08520100 | | 0x08520100 | ||
| [[3.0.0-5]] | | [[3.0.0-5]] | ||
| DeleteExtSaveData (u32 flags, u64 extdataID) | | DeleteExtSaveData (u32 flags, u64 extdataID) | ||
− | | Shared extdata: 0x101005. Regular extdata in certain cases: 0x10100D | + | | Shared extdata: 0x101005. Regular extdata in certain cases: 0x10100D |
|- | |- | ||
| 0x08530142 | | 0x08530142 | ||
| [[3.0.0-5]] | | [[3.0.0-5]] | ||
| ReadExtSaveDataIcon | | ReadExtSaveDataIcon | ||
− | | 0x10100D(this doesn't apply in certain cases however) | + | | 0x10100D (this doesn't apply in certain cases, however) |
|- | |- | ||
| 0x085400C0 | | 0x085400C0 | ||
| [[3.0.0-5]] | | [[3.0.0-5]] | ||
| GetExtDataBlockSize? | | GetExtDataBlockSize? | ||
− | | 0x10100D(this doesn't apply in certain cases however) | + | | 0x10100D (this doesn't apply in certain cases, however) |
|- | |- | ||
| 0x08550102 | | 0x08550102 | ||
Line 449: | Line 449: | ||
| [[3.0.0-5]] | | [[3.0.0-5]] | ||
| FsCreateSystemSaveData? | | FsCreateSystemSaveData? | ||
− | | 0x4(this doesn't apply in certain cases however) | + | | 0x4 (this doesn't apply in certain cases, however) |
|- | |- | ||
| 0x08570080 | | 0x08570080 | ||
| [[3.0.0-5]] | | [[3.0.0-5]] | ||
| DeleteSystemSaveData | | DeleteSystemSaveData | ||
− | | 0x1004(this doesn't apply in certain cases however) | + | | 0x1004 (this doesn't apply in certain cases, however) |
|- | |- | ||
| 0x08580000 | | 0x08580000 | ||
Line 483: | Line 483: | ||
| 0x085D0180 | | 0x085D0180 | ||
| [[3.0.0-5]] | | [[3.0.0-5]] | ||
− | | ? | + | |? |
| 0x100001 | | 0x100001 | ||
|- | |- | ||
Line 518: | Line 518: | ||
| 0x08640000 | | 0x08640000 | ||
| [[3.0.0-5]] | | [[3.0.0-5]] | ||
− | | Obsoleted_4_0_GetNandInfo Stubbed, this returns an error | + | | Obsoleted_4_0_GetNandInfo Stubbed, this returns an error |
| None | | None | ||
|- | |- | ||
Line 524: | Line 524: | ||
| [[4.0.0-7]] | | [[4.0.0-7]] | ||
| SetSaveDataSecureValue, this is used with [[Anti Savegame Restore]]. | | SetSaveDataSecureValue, this is used with [[Anti Savegame Restore]]. | ||
− | | 0x121004(in certain cases this doesn't apply however) | + | | 0x121004 (in certain cases this doesn't apply, however) |
|- | |- | ||
| 0x086600C0 | | 0x086600C0 | ||
| [[4.0.0-7]] | | [[4.0.0-7]] | ||
| GetSaveDataSecureValue, this is used with [[Anti Savegame Restore]]. | | GetSaveDataSecureValue, this is used with [[Anti Savegame Restore]]. | ||
− | | 0x121004(in certain cases this doesn't apply however) | + | | 0x121004 (in certain cases this doesn't apply, however) |
|- | |- | ||
| 0x086700C4 | | 0x086700C4 | ||
Line 538: | Line 538: | ||
| 0x08680000 | | 0x08680000 | ||
| [[4.0.0-7]] | | [[4.0.0-7]] | ||
− | | GetMediaType, This loads the u8 mediatype for the current application from already initialized state, this u8 was originally loaded from the same data used by [[FS:GetProgramLaunchInfo|GetProgramLaunchInfo]]. This then writes the u8 to response-word[2]. This is used with [[Anti Savegame Restore]] | + | | GetMediaType, This loads the u8 mediatype for the current application from already initialized state, this u8 was originally loaded from the same data used by [[FS:GetProgramLaunchInfo|GetProgramLaunchInfo]]. This then writes the u8 to response-word[2]. This is used with [[Anti Savegame Restore]] |
| None | | None | ||
|- | |- | ||
Line 552: | Line 552: | ||
|- | |- | ||
| 0x086B00C2 | | 0x086B00C2 | ||
− | | ? | + | |? |
− | | ? | + | |? |
| 00121004 | | 00121004 | ||
|- | |- | ||
| 0x086C00C2 | | 0x086C00C2 | ||
− | | ? | + | |? |
− | | ? | + | |? |
| 00121004 | | 00121004 | ||
|- | |- | ||
| 0x086D0040 | | 0x086D0040 | ||
− | | ? | + | |? |
− | | ? | + | |? |
| 00020004 | | 00020004 | ||
|- | |- | ||
| 0x086E00C0 | | 0x086E00C0 | ||
− | | ? | + | |? |
− | | ? | + | |? |
− | | | + | |None? |
|- | |- | ||
| 0x086F0040 | | 0x086F0040 | ||
− | | ? | + | |? |
− | | ? | + | |? |
| 0xE | | 0xE | ||
|- | |- | ||
| 0x087000C2 | | 0x087000C2 | ||
− | | ? | + | |? |
− | | ? | + | |? |
− | | | + | |None? |
|- | |- | ||
| 0x08710100 | | 0x08710100 | ||
− | | ? | + | |? |
− | | ? | + | |? |
| 0xC | | 0xC | ||
|- | |- | ||
| 0x087201C0 | | 0x087201C0 | ||
− | | ? | + | |? |
− | | ? | + | |? |
| 00080004 | | 00080004 | ||
|- | |- | ||
| 0x087300C0 | | 0x087300C0 | ||
− | | ? | + | |? |
− | | ? | + | |? |
| 00080004 | | 00080004 | ||
|- | |- | ||
| 0x08740000 | | 0x08740000 | ||
− | | ? | + | |? |
− | | ? | + | |? |
| 00080004 | | 00080004 | ||
|- | |- | ||
| 0x08750140 | | 0x08750140 | ||
− | | ? | + | |? |
− | | ? | + | |? |
− | | | + | |None? |
|- | |- | ||
| 0x087600C0 | | 0x087600C0 | ||
− | | ? | + | |? |
− | | ? | + | |? |
− | | | + | |None? |
|- | |- | ||
| 0x08770100 | | 0x08770100 | ||
− | | ? | + | |? |
− | | ? | + | |? |
− | | ? | + | |? |
|- | |- | ||
| 0x087800C0 | | 0x087800C0 | ||
− | | ? | + | |? |
− | | ? | + | |? |
− | | ? | + | |? |
|} | |} | ||
− | + | Note: The question marks from Dummy1 to GetSpecialFileSize on the "available since system version" field are mainly there because I think that most of these are necessary for the main system to function, so theoretically that would mean that since the creation of the 3DS these were available, or since launch if that makes more sense. But because of the peculiar nature of some of the functions, they will remain question marks until they can be confirmed 100%. | |
− | Each session for fs:USER has separate permissions, initially these are set to all | + | When access rights are required for a command, at least one of the bits in the process access info specified in the above table for the command must be set. Error 0xD9004676 is returned when a process attempts to use a command which it doesn't have access rights for the command. The exheader access info field is all zero's for most applications. Note that the permissions listed in the above table is for system-version v2.x, therefore permission bit(s) added with newer FIRM may be missing from this. |
+ | |||
+ | Each session for fs:USER has separate permissions, initially these are set to all zero's for new fs:USER sessions. The permissions/etc for fs:USER sessions are initialized via [[FS:Initialize]](loaded from the user process exheader). | ||
=File service= | =File service= | ||
Line 695: | Line 697: | ||
= Filesystem service "fs:LDR" = | = Filesystem service "fs:LDR" = | ||
− | This service is identical to fs:USER, except [[FS:OpenArchive]] archive 0x2345678E can only be accessed with fs:LDR | + | This service is identical to fs:USER, except [[FS:OpenArchive]] archive 0x2345678E can only be accessed with fs:LDR |
= ProgramRegistry service "fs:REG" = | = ProgramRegistry service "fs:REG" = |
Revision as of 08:09, 12 November 2014
Filesystem service "fs:USER"
You can at most have 32 FS archive handles.
Command Header | Available since system version | Description | Required exheader access info bitmask |
---|---|---|---|
0x000100C6 | ? | Dummy1 | None |
0x040100C4 | ? | Control | None |
0x08010002 | ? | Initialize | None |
0x080201C2 | ? | OpenFile | None |
0x08030204 | ? | OpenFileDirectly | None |
0x08040142 | ? | DeleteFile | None |
0x08050244 | ? | RenameFile | None |
0x08060142 | ? | DeleteDirectory | None |
0x08070142 | ? | DeleteDirectoryRecursively | None |
0x08080202 | ? | CreateFile | None |
0x08090182 | ? | CreateDirectory | None |
0x080A0244 | ? | RenameDirectory | None |
0x080B0102 | ? | OpenDirectory | None |
0x080C00C2 | ? | OpenArchive | Each archive ID code has separate access info bitmasks, if it has any |
0x080D0144 | ? | ControlArchive | None |
0x080E0080 | ? | CloseArchive | None |
0x080F0180 | ? | FormatThisUserSaveData | None |
0x08100200 | ? | CreateSystemSaveData | 0x4, for when the input saveID doesn't match the exheader saveID |
0x08110040 | ? | DeleteSystemSaveData | 0x1004, for when the input saveID doesn't match the exheader saveID |
0x08120080 | ? | GetFreeBytes | None |
0x08130000 | ? | GetCardType | 0x1017 |
0x08140000 | ? | GetSdmcArchiveResource | None |
0x08150000 | ? | GetNandArchiveResource | None |
0x08160000 | ? | GetSdmcFatfsError | 0x2 |
0x08170000 | ? | IsSdmcDetected | None |
0x08180000 | ? | IsSdmcWritable | None |
0x08190042 | ? | GetSdmcCid | 0x2 |
0x081A0042 | ? | GetNandCid | 0x2 |
0x081B0000 | ? | GetSdmcSpeedInfo | 0x2 |
0x081C0000 | ? | GetNandSpeedInfo | 0x2 |
0x081D0042 | ? | GetSdmcLog | 0x2 |
0x081E0042 | ? | GetNandLog | 0x2 |
0x081F0000 | ? | ClearSdmcLog | 0x2 |
0x08200000 | ? | ClearNandLog | 0x2 |
0x08210000 | ? | CardSlotIsInserted | 0x1017 |
0x08220000 | ? | CardSlotPowerOn | 0x2 |
0x08230000 | ? | CardSlotPowerOff | 0x2 |
0x08240000 | ? | CardSlotGetCardIFPowerStatus | 0x2 |
0x08250040 | ? | CardNorDirectCommand | 0x2 |
0x08260080 | ? | CardNorDirectCommandWithAddress | 0x2 |
0x08270082 | ? | CardNorDirectRead | 0x2 |
0x082800C2 | ? | CardNorDirectReadWithAddress | 0x2 |
0x08290082 | ? | CardNorDirectWrite | 0x2 |
0x082A00C2 | ? | CardNorDirectWriteWithAddress | 0x2 |
0x082B00C2 | ? | CardNorDirectRead_4xIO | 0x2 |
0x082C0082 | ? | CardNorDirectCpuWriteWithoutVerify | 0x2 |
0x082D0040 | ? | CardNorDirectSectorEraseWithoutVerify | 0x2 |
0x082E0040 | ? | GetProductInfo | 0x1005 |
0x082F0040 | ? | GetProgramLaunchInfo | 0x1005 |
0x08300182 | ? | CreateExtSaveData | 0xC, for when the input extdataID doesn't match the exheader extdataID |
0x08310180 | ? | CreateSharedExtSaveData | 0x1005 |
0x08320102 | ? | ReadExtSaveDataIcon | 0x100D, for when the input extdataID doesn't match the exheader extdataID |
0x08330082 | ? | EnumerateExtSaveData | 0x1005 |
0x08340082 | ? | EnumerateSharedExtSaveData | 0x1005 |
0x08350080 | ? | DeleteExtSaveData | 0x100D, for when the input extdataID doesn't match the exheader extdataID |
0x08360080 | ? | DeleteSharedExtSaveData | 0x1005 |
0x08370040 | ? | SetCardSpiBaudRate | 0x2 |
0x08380040 | ? | SetCardSpiBusMode | 0x2 |
0x08390000 | ? | SendInitializeInfoTo9 | None |
0x083A0100 | ? | GetSpecialContentIndex | 0x1005 |
0x083B00C2 | ? | GetLegacyRomHeader | 0x1015 |
0x083C00C2 | ? | GetLegacyBannerData | 0x1015 |
0x083D0100 | ? | CheckAuthorityToAccessExtSaveData | 0x44 |
0x083E00C2 | ? | QueryTotalQuotaSize | None |
0x083F00C0 | ? | GetExtDataBlockSize | None |
0x08400040 | ? | AbnegateAccessRight | ? |
0x08410000 | ? | DeleteSdmcRoot | 0x1005 |
0x08420040 | ? | DeleteAllExtSaveDataOnNand | 0x1005 |
0x08430000 | ? | InitializeCtrFileSystem | None |
0x08440000 | ? | CreateSeed | 0x2 |
0x084500C2 | ? | GetFormatInfo | ? |
0x08460102 | ? | GetLegacyRomHeader2 | 0x1015 |
0x08470180 | ? | FormatCtrCardUserSaveData | 0x6 |
0x08480042 | ? | GetSdmcCtrRootPath | 0x100D |
0x08490040 | ? | GetArchiveResource | ? |
0x084A0002 | ? | ExportIntegrityVerificationSeed | 0x4000 |
0x084B0002 | ? | ImportIntegrityVerificationSeed | 0x4000 |
0x084C0242 | ? | FormatSaveData | 0x6, in some cases this write isn't needed however |
0x084D0102 | ? | GetLegacySubBannerData | 0x1015 |
0x084E0342 | ? | UpdateSha256Context | 0x5 |
0x084F0102 | ? | ReadSpecialFile | None |
0x08500040 | ? | GetSpecialFileSize | None |
0x08510242 | 3.0.0-5 | CreateExtSaveData | Shared extdata: 0x101005. Regular extdata in certain cases: 0xC |
0x08520100 | 3.0.0-5 | DeleteExtSaveData (u32 flags, u64 extdataID) | Shared extdata: 0x101005. Regular extdata in certain cases: 0x10100D |
0x08530142 | 3.0.0-5 | ReadExtSaveDataIcon | 0x10100D (this doesn't apply in certain cases, however) |
0x085400C0 | 3.0.0-5 | GetExtDataBlockSize? | 0x10100D (this doesn't apply in certain cases, however) |
0x08550102 | 3.0.0-5 | EnumerateExtSaveData | 0x101005 |
0x08560200 | 3.0.0-5 | FsCreateSystemSaveData? | 0x4 (this doesn't apply in certain cases, however) |
0x08570080 | 3.0.0-5 | DeleteSystemSaveData | 0x1004 (this doesn't apply in certain cases, however) |
0x08580000 | 3.0.0-5 | GetMovableSedHashedKeyYRandomData | 0x2004 |
0x08590200 | 3.0.0-5 | SetMovableSedHashedKeyYRandomData? | 0x2004 |
0x085A00C0 | 3.0.0-5 | SetArchivePriority(u64 ID,u32 priority) | None |
0x085B0080 | 3.0.0-5 | GetArchivePriority(u64 ID,u32 *priority) | None |
0x085C00C0 | 3.0.0-5 | SetCtrCardLatencyParameter | 0xE |
0x085D0180 | 3.0.0-5 | ? | 0x100001 |
0x085E0040 | 3.0.0-5 | ResetCardCompatibilityParameter | 0xE |
0x085F0040 | 3.0.0-5 | SwitchCleanupInvalidSaveData | 0x12004 |
0x08600042 | 3.0.0-5 | EnumerateSystemSaveData | 0x2004 |
0x08610042 | 3.0.0-5 | InitializeWithSdkVersion | None |
0x08620040 | 3.0.0-5 | SetPriority | None |
0x08630000 | 3.0.0-5 | GetPriority | None |
0x08640000 | 3.0.0-5 | Obsoleted_4_0_GetNandInfo Stubbed, this returns an error | None |
0x08650140 | 4.0.0-7 | SetSaveDataSecureValue, this is used with Anti Savegame Restore. | 0x121004 (in certain cases this doesn't apply, however) |
0x086600C0 | 4.0.0-7 | GetSaveDataSecureValue, this is used with Anti Savegame Restore. | 0x121004 (in certain cases this doesn't apply, however) |
0x086700C4 | 4.0.0-7 | ControlSecureSave | 0x121004 |
0x08680000 | 4.0.0-7 | GetMediaType, This loads the u8 mediatype for the current application from already initialized state, this u8 was originally loaded from the same data used by GetProgramLaunchInfo. This then writes the u8 to response-word[2]. This is used with Anti Savegame Restore | None |
0x08690000 | 4.0.0-7 | Obsoleted_4_0_GetNandEraseCount Stubbed, this returns an error. | None |
0x086A0082 | 4.0.0-7 | ReadNandReport This is a wrapper for FSPXI command 0x00550082. | None |
0x086B00C2 | ? | ? | 00121004 |
0x086C00C2 | ? | ? | 00121004 |
0x086D0040 | ? | ? | 00020004 |
0x086E00C0 | ? | ? | None? |
0x086F0040 | ? | ? | 0xE |
0x087000C2 | ? | ? | None? |
0x08710100 | ? | ? | 0xC |
0x087201C0 | ? | ? | 00080004 |
0x087300C0 | ? | ? | 00080004 |
0x08740000 | ? | ? | 00080004 |
0x08750140 | ? | ? | None? |
0x087600C0 | ? | ? | None? |
0x08770100 | ? | ? | ? |
0x087800C0 | ? | ? | ? |
Note: The question marks from Dummy1 to GetSpecialFileSize on the "available since system version" field are mainly there because I think that most of these are necessary for the main system to function, so theoretically that would mean that since the creation of the 3DS these were available, or since launch if that makes more sense. But because of the peculiar nature of some of the functions, they will remain question marks until they can be confirmed 100%.
When access rights are required for a command, at least one of the bits in the process access info specified in the above table for the command must be set. Error 0xD9004676 is returned when a process attempts to use a command which it doesn't have access rights for the command. The exheader access info field is all zero's for most applications. Note that the permissions listed in the above table is for system-version v2.x, therefore permission bit(s) added with newer FIRM may be missing from this.
Each session for fs:USER has separate permissions, initially these are set to all zero's for new fs:USER sessions. The permissions/etc for fs:USER sessions are initialized via FS:Initialize(loaded from the user process exheader).
File service
Command Header | Description |
---|---|
0x000100C6 | Dummy1 |
0x040100C4 | Control |
0x08010100 | OpenSubFile |
0x080200C2 | Read |
0x08030102 | Write |
0x08040000 | GetSize |
0x08050080 | SetSize |
0x08060000 | GetAttributes |
0x08070040 | SetAttributes |
0x08080000 | Close |
0x08090000 | Flush |
0x080A0040 | SetPriority |
0x080B0000 | GetPriority |
0x080C0000 | OpenLinkFile |
Directory service
Command Header | Description |
---|---|
0x000100C6 | Dummy1 |
0x040100C4 | Control |
0x08010042 | Read |
0x08020000 | Close |
Filesystem service "fs:LDR"
This service is identical to fs:USER, except FS:OpenArchive archive 0x2345678E can only be accessed with fs:LDR
ProgramRegistry service "fs:REG"
Command Header | Description |
---|---|
0x000100C6 | Dummy1 |
0x040103C0 | Register |
0x04020040 | Unregister |
0x040300C0 | GetProgramInfo |
0x04040100 | LoadProgram |
0x04050080 | UnloadProgram |
0x04060080 | CheckHostLoadId |