Difference between revisions of "Filesystem services PXI"

From 3dbrew
Jump to navigation Jump to search
(Update HasFile/HasDirectory)
 
(37 intermediate revisions by 8 users not shown)
Line 1: Line 1:
 +
= Post 3.x =
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
!  Command Header, prior to [[3.0.0-5]]
 
 
!  Command Header, starting with [[3.0.0-5]]
 
!  Command Header, starting with [[3.0.0-5]]
 
!  Available since system version
 
!  Available since system version
Line 7: Line 7:
 
|-
 
|-
 
| 0x000101C2
 
| 0x000101C2
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
 
| [[FSPXI:OpenFile|OpenFile]]
 
| [[FSPXI:OpenFile|OpenFile]]
 
|-
 
|-
 
| 0x00020142
 
| 0x00020142
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| DeleteFile? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr)
+
| [[FSPXI:DeleteFile|DeleteFile]]
 
|-
 
|-
 
| 0x00030244
 
| 0x00030244
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| RenameFile? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, secondarchivehandlelo, secondarchivehandlehi, secondpathtype, secondpathsize, pathptrsize, pathptr, secondpathptrsize, secondpathptr)
+
| [[FSPXI:RenameFile|RenameFile]]
 
|-
 
|-
 
| 0x00040142
 
| 0x00040142
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| DeleteDirectory? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr)
+
| [[FSPXI:DeleteDirectory|DeleteDirectory]]
 
|-
 
|-
 
| 0x00050202
 
| 0x00050202
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| CreateFile? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, unknown_u32, unknown_lo, unknown_hi, pathptrsize, pathptr)
+
| [[FSPXI:CreateFile|CreateFile]]
 
|-
 
|-
 
| 0x00060182
 
| 0x00060182
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| CreateDirectory? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, unknown_u32, pathptrsize, pathptr)
+
| [[FSPXI:CreateDirectory|CreateDirectory]]
 
|-
 
|-
 
| 0x00070244
 
| 0x00070244
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| RenameDirectory? (unknown_u32, archivehandlelo, archivehandlehi, pathtype, pathsize, secondarchivehandlelo, secondarchivehandlehi, secondpathtype, secondpathsize, pathptrsize, pathptr, secondpathptrsize, secondpathptr)
+
| [[FSPXI:RenameDirectory|RenameDirectory]]
 
|-
 
|-
 
| 0x00080102
 
| 0x00080102
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| OpenDirectory (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr)
+
| [[FSPXI:OpenDirectory|OpenDirectory]]
 
|-
 
|-
 
| 0x00090142
 
| 0x00090142
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| ReadFile
+
| [[FSPXI:ReadFile|ReadFile]]
 
|-
 
|-
 
| 0x000A00C2
 
| 0x000A00C2
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| CalculateFileHashSHA256
+
| [[FSPXI:CalculateFileHashSHA256|CalculateFileHashSHA256]]
 
|-
 
|-
 
| 0x000B0182
 
| 0x000B0182
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| WriteFile
+
| [[FSPXI:WriteFile|WriteFile]]
 
|-
 
|-
 
| 0x000C0104
 
| 0x000C0104
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
 
| [[FSPXI:CalcSavegameMAC|CalcSavegameMAC]]
 
| [[FSPXI:CalcSavegameMAC|CalcSavegameMAC]]
 
|-
 
|-
 
| 0x000D0080
 
| 0x000D0080
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| GetFileSize
+
| [[FSPXI:GetFileSize|GetFileSize]]
 
|-
 
|-
 
| 0x000E0100
 
| 0x000E0100
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| SetFileSize (sizelo, sizehi, filehandlelo, filehandlehi)
+
| [[FSPXI:SetFileSize|SetFileSize]]
 
|-
 
|-
 
| 0x000F0080
 
| 0x000F0080
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| CloseFile (filehandlelo, filehandlehi)
+
| [[FSPXI:CloseFile|CloseFile]]
 
|-
 
|-
 
| 0x001000C2
 
| 0x001000C2
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| ReadDirectory (dirhandlelo, dirhandlehi, count, ptrsize, ptr)
+
| [[FSPXI:ReadDirectory|ReadDirectory]]
 
|-
 
|-
 
| 0x00110080
 
| 0x00110080
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| CloseDirectory (dirhandlelo, dirhandlehi)
+
| [[FSPXI:CloseDirectory|CloseDirectory]]
 
|-
 
|-
 
| 0x001200C2
 
| 0x001200C2
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
 
| [[FSPXI:OpenArchive|OpenArchive]]
 
| [[FSPXI:OpenArchive|OpenArchive]]
 
|-
 
|-
 
| 0x00130102
 
| 0x00130102
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| CreateExtSaveData? (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr)
+
| [[FSPXI:HasFile|HasFile]]
 
|-
 
|-
 
| 0x00140102
 
| 0x00140102
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr)
+
| [[FSPXI:HasDirectory|HasDirectory]]
 
|-
 
|-
| 0x00150102
+
| 0x001500C0
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| (archivehandlelo, archivehandlehi, pathtype, pathsize, pathptrsize, pathptr)
+
| [[FSPXI:CommitSaveData|CommitSaveData]]
 
|-
 
|-
 
| 0x00160080
 
| 0x00160080
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| CloseArchive (archivehandlelo, archivehandlehi)
+
| [[FSPXI:CloseArchive|CloseArchive]]
 
|-
 
|-
 
| 0x00170080
 
| 0x00170080
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| ReopenArchive? (archivehandlelo, archivehandlehi)
+
| [[FSPXI:LockArchive|LockArchive]] (archivehandlelo, archivehandlehi)
 
|-
 
|-
 
| 0x00180000
 
| 0x00180000
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| GetCardType
+
| [[FSPXI:GetCardType|GetCardType]]
 
|-
 
|-
 
| 0x00190000
 
| 0x00190000
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
 
| [[FSPXI:GetSdmcArchiveResource|GetSdmcArchiveResource]]
 
| [[FSPXI:GetSdmcArchiveResource|GetSdmcArchiveResource]]
 
|-
 
|-
 
| 0x001A0000
 
| 0x001A0000
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
 
| [[FSPXI:GetNandArchiveResource|GetNandArchiveResource]]
 
| [[FSPXI:GetNandArchiveResource|GetNandArchiveResource]]
 
|-
 
|-
 
| 0x001B0000
 
| 0x001B0000
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| GetSdmcFatFsError
+
| [[FSPXI:GetSdmcFatFsError|GetSdmcFatFsError]]
 
|-
 
|-
 
| 0x001C0000
 
| 0x001C0000
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| GetSdmcDetected
+
| [[FSPXI:IsSdmcDetected|IsSdmcDetected]]
 
|-
 
|-
 
| 0x001D0000
 
| 0x001D0000
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| GetSdmcWritable
+
| [[FSPXI:IsSdmcWritable|IsSdmcWritable]]
 
|-
 
|-
 
| 0x001E0042
 
| 0x001E0042
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
 
| [[FSPXI:GetSdmcCid|GetSdmcCid]]
 
| [[FSPXI:GetSdmcCid|GetSdmcCid]]
 
|-
 
|-
 
| 0x001F0042
 
| 0x001F0042
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
 
| [[FSPXI:GetNandCid|GetNandCid]]
 
| [[FSPXI:GetNandCid|GetNandCid]]
 
|-
 
|-
 
| 0x00200000
 
| 0x00200000
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| GetSdmcSpeedInfo
+
| [[FSPXI:GetSdmcSpeedInfo|GetSdmcSpeedInfo]]
 
|-
 
|-
 
| 0x00210000
 
| 0x00210000
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| GetNandSpeedInfo
+
| [[FSPXI:GetNandSpeedInfo|GetNandSpeedInfo]]
 
|-
 
|-
 
| 0x00220042
 
| 0x00220042
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| GetSdmcLog
+
| [[FSPXI:GetSdmcLog|GetSdmcLog]]
 
|-
 
|-
 
| 0x00230042
 
| 0x00230042
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| GetNandLog
+
| [[FSPXI:GetNandLog|GetNandLog]]
 
|-
 
|-
 
| 0x00240000
 
| 0x00240000
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| ClearSdmcLog
+
| [[FSPXI:ClearSdmcLog|ClearSdmcLog]]
 
|-
 
|-
 
| 0x00250000
 
| 0x00250000
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| ClearNandLog
+
| [[FSPXI:ClearNandLog|ClearNandLog]]
 
|-
 
|-
 
| 0x00260000
 
| 0x00260000
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| GetCardSlotInserted
+
| [[FSPXI:CardSlotIsInserted|CardSlotIsInserted]]
 
|-
 
|-
 
| 0x00270000
 
| 0x00270000
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| CardSlotPowerOn
+
| [[FSPXI:CardSlotPowerOn|CardSlotPowerOn]]
 
|-
 
|-
 
| 0x00280000
 
| 0x00280000
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| CardSlotPowerOff
+
| [[FSPXI:CardSlotPowerOff|CardSlotPowerOff]]
 
|-
 
|-
 
| 0x00290000
 
| 0x00290000
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| CardSlotGetIfPowerStatus
+
| [[FSPXI:CardSlotGetIFPowerStatus|CardSlotGetIFPowerStatus]]
 
|-
 
|-
 
| 0x002A0040
 
| 0x002A0040
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| [[FSPXI:CardNorDirectCommand|CardNorDirectCommand]] (These CardNor commands are used for accessing the raw gamecard flash savedata)
+
| [[FSPXI:CardNorDirectCommand|CardNorDirectCommand]]
 
|-
 
|-
 
| 0x002B0080
 
| 0x002B0080
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
 
| [[FSPXI:CardNorDirectCommandWithAddress|CardNorDirectCommandWithAddress]]
 
| [[FSPXI:CardNorDirectCommandWithAddress|CardNorDirectCommandWithAddress]]
 
|-
 
|-
 
| 0x002C0082
 
| 0x002C0082
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
 
| [[FSPXI:CardNorDirectRead|CardNorDirectRead]]
 
| [[FSPXI:CardNorDirectRead|CardNorDirectRead]]
 
|-
 
|-
 
| 0x002D00C2
 
| 0x002D00C2
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
 
| [[FSPXI:CardNorDirectReadWithAddress|CardNorDirectReadWithAddress]]
 
| [[FSPXI:CardNorDirectReadWithAddress|CardNorDirectReadWithAddress]]
 
|-
 
|-
 
| 0x002E0082
 
| 0x002E0082
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
 
| [[FSPXI:CardNorDirectWrite|CardNorDirectWrite]]
 
| [[FSPXI:CardNorDirectWrite|CardNorDirectWrite]]
 
|-
 
|-
 
| 0x002F00C2
 
| 0x002F00C2
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
 
| [[FSPXI:CardNorDirectWriteWithAddress|CardNorDirectWriteWithAddress]]
 
| [[FSPXI:CardNorDirectWriteWithAddress|CardNorDirectWriteWithAddress]]
 
|-
 
|-
 
| 0x003000C2
 
| 0x003000C2
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| [[FSPXI:CardNorDirectRead4IO|CardNorDirectRead4IO]]
+
| [[FSPXI:CardNorDirectRead_4xIO|CardNorDirectRead_4xIO]]
 
|-
 
|-
 
| 0x00310082
 
| 0x00310082
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| CardNorDirectCpuWriteWithoutVerify
+
| [[FSPXI:CardNorDirectCpuWriteWithoutVerify|CardNorDirectCpuWriteWithoutVerify]]
 
|-
 
|-
 
| 0x00320040
 
| 0x00320040
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
 
| [[FSPXI:CardNorDirectSectorEraseWithoutVerify|CardNorDirectSectorEraseWithoutVerify]]
 
| [[FSPXI:CardNorDirectSectorEraseWithoutVerify|CardNorDirectSectorEraseWithoutVerify]]
 
|-
 
|-
 
| 0x00330080
 
| 0x00330080
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| GetProductInfo
+
| [[FSPXI:GetProductInfo|GetProductInfo]]
 
|-
 
|-
 
| 0x00340040
 
| 0x00340040
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| SetCardSpiBaudrate
+
| [[FSPXI:SetCardSpiBaudrate|SetCardSpiBaudrate]]
 
|-
 
|-
 
| 0x00350040
 
| 0x00350040
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| SetCardSpiBusMode
+
| [[FSPXI:SetCardSpiBusMode|SetCardSpiBusMode]]
 
|-
 
|-
 
| 0x00360040
 
| 0x00360040
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| SendInitializeInfo
+
| [[FSPXI:SendInitializeInfoTo9|SendInitializeInfoTo9]]
 
|-
 
|-
| 0x00370140
+
| 0x00370100
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| CreateExtSaveData
+
| [[FSPXI:CreateExtSaveData|CreateExtSaveData]]
 
|-
 
|-
| 0x003800C0
+
| 0x00380100
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| DeleteExtSaveData
+
| [[FSPXI:DeleteExtSaveData|DeleteExtSaveData]]
 
|-
 
|-
| 0x00390082
+
| 0x00390102
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| EnumerateExtSaveData
+
| [[FSPXI:EnumerateExtSaveData|EnumerateExtSaveData]]
 
|-
 
|-
 
| 0x003A0100
 
| 0x003A0100
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| GetSpecialContentIndex
+
| [[FSPXI:GetSpecialContentIndex|GetSpecialContentIndex]]
 
|-
 
|-
 
| 0x003B00C2
 
| 0x003B00C2
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| GetLegacyRomHeader
+
| [[FSPXI:GetLegacyRomHeader|GetLegacyRomHeader]]
 
|-
 
|-
| 0x003C00C2
+
| 0x003C0102
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| GetLegacyBannerData
+
| [[FSPXI:GetLegacyBannerData|GetLegacyBannerData]]
 +
|-
 +
| 0x003D0040
 +
| ?
 +
| [[FSPXI:FormatCardNorDevice|FormatCardNorDevice]]
 +
|-
 +
| 0x003E0000
 +
| [[3.0.0-5]]
 +
| [[FSPXI:DeleteSdmcRoot|DeleteSdmcRoot]]
 +
|-
 +
| 0x003F0040
 +
| [[3.0.0-5]]
 +
| [[FSPXI:DeleteAllExtSaveDataOnNand|DeleteAllExtSaveDataOnNand]]
 +
|-
 +
| 0x00400000
 +
| [[3.0.0-5]]
 +
| [[FSPXI:InitializeCtrFilesystem|InitializeCtrFilesystem]]
 +
|-
 +
| 0x00410000
 +
| [[3.0.0-5]]
 +
| [[FSPXI:CreateSeed|CreateSeed]]
 +
|-
 +
| 0x00420042
 +
| [[3.0.0-5]]
 +
| [[FSPXI:GetSdmcCtrRootPath|GetSdmcCtrRootPath]]
 +
|-
 +
| 0x00430040
 +
| [[3.0.0-5]]
 +
| [[FSPXI:GetArchiveResource|GetArchiveResource]]
 +
|-
 +
| 0x00440002
 +
| [[3.0.0-5]]
 +
| [[FSPXI:ExportIntegrityVerificationSeed|ExportIntegrityVerificationSeed]]
 +
|-
 +
| 0x00450002
 +
| [[3.0.0-5]]
 +
| [[FSPXI:ImportIntegrityVerificationSeed|ImportIntegrityVerificationSeed]]
 +
|-
 +
| 0x00460102
 +
| [[3.0.0-5]]
 +
| [[FSPXI:GetLegacySubBannerData|GetLegacySubBannerData]]
 +
|-
 +
| 0x00470042
 +
| [[3.0.0-5]]
 +
| [[FSPXI:GenerateRandomBytes|GenerateRandomBytes]]
 +
|-
 +
| 0x004800C2
 +
| [[3.0.0-5]]
 +
| [[FSPXI:GetFileLastModified|GetFileLastModified]]
 +
|-
 +
| 0x00490102
 +
| [[3.0.0-5]]
 +
| [[FSPXI:ReadSpecialFile|ReadSpecialFile]]
 +
|-
 +
| 0x004A0040
 +
| [[3.0.0-5]]
 +
| [[FSPXI:GetSpecialFileSize|GetSpecialFileSize]]
 +
|-
 +
| 0x004B0000
 +
| [[3.0.0-5]]
 +
| [[FSPXI:StartDeviceMoveAsSource|StartDeviceMoveAsSource]]
 +
|-
 +
| 0x004C0240
 +
| [[3.0.0-5]]
 +
| [[FSPXI:StartDeviceMoveAsDestination|StartDeviceMoveAsDestination]]
 +
|-
 +
| 0x004D01C4
 +
| [[3.0.0-5]]
 +
| [[FSPXI:ReadFileSHA256|ReadFileSHA256]]
 +
|-
 +
| 0x004E0204
 +
| [[3.0.0-5]]
 +
| [[FSPXI:WriteFileSHA256|WriteFileSHA256]]
 +
|-
 +
| 0x004F0080
 +
| [[3.0.0-5]]
 +
| [[FSPXI:SetCtrCardLatencyParameter|SetCtrCardLatencyParameter]] (u64)
 +
|-
 +
| 0x00500040
 +
| [[3.0.0-5]]
 +
| [[FSPXI:SetPriority|SetPriority]]
 +
|-
 +
| 0x00510040
 +
| [[3.0.0-5]]
 +
| [[FSPXI:SwitchCleanupInvalidSaveData|SwitchCleanupInvalidSaveData]]
 +
|-
 +
| 0x00520042
 +
| [[3.0.0-5]]
 +
| [[FSPXI:EnumerateSystemSaveData|EnumerateSystemSaveData]]
 +
|-
 +
| 0x00530000
 +
| [[3.0.0-5]]
 +
| Stubbed with [[4.0.0-7]].
 +
|-
 +
| 0x00540000
 +
| [[4.0.0-7]]
 +
| Stubbed with [[4.0.0-7]].
 +
|-
 +
| 0x00550082
 +
| [[4.0.0-7]]
 +
| [[FSPXI:ReadNandReport|ReadNandReport]]
 +
|-
 +
| 0x00560102
 +
| [[9.6.0-24|9.6.0-X]]
 +
| ?
 +
|}
 +
 
 +
= Pre 3.x =
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Command Header, prior to [[3.0.0-5]]
 +
!  Available since system version
 +
!  Description
 +
|-
 +
| 0x003E....
 +
| ?
 +
| This was removed with [[3.0.0-5]].
 
|-
 
|-
 
| 0x003F0000
 
| 0x003F0000
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
 
| [[FSPXI:DeleteSdmcRoot|DeleteSdmcRoot]]
 
| [[FSPXI:DeleteSdmcRoot|DeleteSdmcRoot]]
 
|-
 
|-
 
| 0x00400040
 
| 0x00400040
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| DeleteAllExtSaveDataOnNand
+
| [[FSPXI:DeleteAllExtSaveDataOnNand|DeleteAllExtSaveDataOnNand]]
 
|-
 
|-
 
| 0x00410000
 
| 0x00410000
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
 
| [[FSPXI:InitializeCtrFilesystem|InitializeCtrFilesystem]]
 
| [[FSPXI:InitializeCtrFilesystem|InitializeCtrFilesystem]]
 
|-
 
|-
 
| 0x00420000
 
| 0x00420000
|?
 
 
| [[1.0.0-0]]
 
| [[1.0.0-0]]
| CreateSeed
+
| [[FSPXI:CreateSeed|CreateSeed]]
 
|-
 
|-
 
| 0x00430042
 
| 0x00430042
|?
 
 
| [[2.0.0-2]]
 
| [[2.0.0-2]]
 
| [[FSPXI:GetSdmcCtrRootPath|GetSdmcCtrRootPath]]
 
| [[FSPXI:GetSdmcCtrRootPath|GetSdmcCtrRootPath]]
 
|-
 
|-
 
| 0x00440040
 
| 0x00440040
|?
 
 
| [[2.0.0-2]]
 
| [[2.0.0-2]]
| GetArchiveResource
+
| [[FSPXI:GetArchiveResource|GetArchiveResource]]
 
|-
 
|-
 
| 0x00450002
 
| 0x00450002
|?
 
 
| [[2.0.0-2]]
 
| [[2.0.0-2]]
 
| [[FSPXI:ExportIntegrityVerificationSeed|ExportIntegrityVerificationSeed]]
 
| [[FSPXI:ExportIntegrityVerificationSeed|ExportIntegrityVerificationSeed]]
 
|-
 
|-
 
| 0x00460002
 
| 0x00460002
|?
 
 
| [[2.0.0-2]]
 
| [[2.0.0-2]]
 
| [[FSPXI:ImportIntegrityVerificationSeed|ImportIntegrityVerificationSeed]]
 
| [[FSPXI:ImportIntegrityVerificationSeed|ImportIntegrityVerificationSeed]]
 
|-
 
|-
 
| 0x00470082
 
| 0x00470082
|?
 
 
| [[2.0.0-2]]
 
| [[2.0.0-2]]
| EnumerateSharedExtSaveData
+
| This was removed with [[3.0.0-5]].
 
|-
 
|-
 
| 0x00480102
 
| 0x00480102
|?
 
 
| [[2.0.0-2]]
 
| [[2.0.0-2]]
| GetLegacySubBannerData
+
| [[FSPXI:GetLegacySubBannerData|GetLegacySubBannerData]]
 
|-
 
|-
 
| 0x00490042
 
| 0x00490042
|?
 
 
| [[2.0.0-2]]
 
| [[2.0.0-2]]
| Initialize (?)
+
| ?
 
|-
 
|-
 
| 0x004A00C2
 
| 0x004A00C2
|?
 
 
| [[2.0.0-2]]
 
| [[2.0.0-2]]
| OpenSpecialFile? (archivehandlelo, archivehandlehi, size, ptrsize_mul2, ptr)
+
| [[FSPXI:GetFileLastModified|GetFileLastModified]]
 
|-
 
|-
 
| 0x004B0102
 
| 0x004B0102
|?
 
 
| [[2.0.0-2]]
 
| [[2.0.0-2]]
| ReadSpecialFile
+
| [[FSPXI:ReadSpecialFile|ReadSpecialFile]]
|-
 
|?
 
| 0x004B0000
 
| [[3.0.0-5]]
 
| [[FSPXI:GetMovableSedHashedKeyYRandomData|GetMovableSedHashedKeyYRandomData]]
 
 
|-
 
|-
 
| 0x004C0040
 
| 0x004C0040
|?
 
 
| [[2.0.0-2]]
 
| [[2.0.0-2]]
| GetSpecialFileSize
+
| [[FSPXI:GetSpecialFileSize|GetSpecialFileSize]]
|-
 
|?
 
| 0x004D01C4
 
| [[3.0.0-5]]
 
| This is a wrapper for ReadFile. If the first ReadFile call fails, this calls ReadFile again then executes hash-related code.
 
 
|-
 
|-
|?
 
| 0x004E0204
 
| [[3.0.0-5]]
 
| This is a wrapper for WriteFile, this is similar to command 0x004D01C4.
 
|-
 
|?
 
| 0x004F....
 
| [[3.0.0-5]]
 
| (unknown_u64)
 
|-
 
|?
 
| 0x00500000
 
| [[3.0.0-5]]
 
| Stubbed, this only returns value 0.
 
|-
 
|?
 
| 0x0051....
 
| [[3.0.0-5]]
 
| (unknown_u8)
 
|-
 
|?
 
| 0x00520042
 
| [[3.0.0-5]]
 
| (outbuffersize, outbufferptr)
 
|-
 
|?
 
| 0x00530000
 
| [[3.0.0-5]]
 
| Unknown, stubbed with [[4.0.0-7]].
 
|-
 
|?
 
| 0x0054....
 
| [[4.0.0-7]]
 
| Stubbed with [[4.0.0-7]].
 
|-
 
|?
 
| 0x00550082
 
| [[4.0.0-7]]
 
| ReadNandReport (outbuffersize, u8 mediatype, outbufferptr)
 
 
|}
 
|}
 +
 +
Commands listed in the previous chart marked as available since [[1.0.0-0]] that are not shown in this chart are the same between both.
  
 
=Errors=
 
=Errors=
Line 435: Line 430:
 
| 0xC82044BE
 
| 0xC82044BE
 
| Object does already exist/failed to create object.
 
| Object does already exist/failed to create object.
 +
|-
 +
| 0xC86044D2
 +
| Failed to write file. Partition is full.
 +
|-
 +
| 0xC8804471
 +
| Attempted to open a file under a directory which doesn't exist.
 
|-
 
|-
 
| 0xC8804478
 
| 0xC8804478
Line 449: Line 450:
 
|-
 
|-
 
| 0xC92044E6
 
| 0xC92044E6
| Operation not allowed with the current file openflags (maybe other causes too?).
+
| Operation not allowed with the current file openflags/file already in use (if file was previously opened for writing).
 +
|-
 +
| 0xC92044E7
 +
| Resource locked.
 
|-
 
|-
 
| 0xC9204509
 
| 0xC9204509
Line 462: Line 466:
 
| 0xC960F401
 
| 0xC960F401
 
| [[SDMC]]/NAND bus error, REG_SDSTATUS: Bit23 (0x00800000)
 
| [[SDMC]]/NAND bus error, REG_SDSTATUS: Bit23 (0x00800000)
 +
|-
 +
| 0xD8604664
 +
| FSUSER: Returned when attempting to create a file in savedata when the current total number of files is already the [[FS:FormatSaveData|maximum]].
 
|-
 
|-
 
| 0xD9004587
 
| 0xD9004587
Line 474: Line 481:
 
| 0xD9004676
 
| 0xD9004676
 
| FSUSER: The specified service-command / archive is not accessible, due to the currently used exheader accessinfo not having the required bit(s) set. (This error can also indicate that the required ARM9 access-control mount flag is not enabled, in the exheader for any of the running ARM11 processes)
 
| FSUSER: The specified service-command / archive is not accessible, due to the currently used exheader accessinfo not having the required bit(s) set. (This error can also indicate that the required ARM9 access-control mount flag is not enabled, in the exheader for any of the running ARM11 processes)
 +
|-
 +
| 0xE0C046F9
 +
| FSPXI: Specified read-size doesn't match the actual filesize, when accessing ExeFS.
 
|-
 
|-
 
| 0xE0E046BE
 
| 0xE0E046BE
 
| Invalid lowpath. This can also indicate that the specified archive-id does not exist, or that the specified archive-id is not accessible over FSPXI. In certain cases this can also be caused by attempting to open a FSUSER archive where none of the required bit(s) for the archive are set in the user-process exheader accessinfo.
 
| Invalid lowpath. This can also indicate that the specified archive-id does not exist, or that the specified archive-id is not accessible over FSPXI. In certain cases this can also be caused by attempting to open a FSUSER archive where none of the required bit(s) for the archive are set in the user-process exheader accessinfo.
 
|-
 
|-
| 0xE0C046F9
+
| 0xE0E046C1
| FSPXI: Specified read-size doesn't match the actual filesize, when accessing ExeFS.
+
| File-reading returns this when the input 64bit file-pos is negative, or when the file-pos is larger than the filesize.
 +
|-
 +
| 0xE0E046D1
 +
| Failed to write to file because it would exceed the file size limit of the file system.
 
|-
 
|-
 
| 0xE160F402
 
| 0xE160F402

Latest revision as of 11:08, 8 June 2022

Post 3.x[edit]

Command Header, starting with 3.0.0-5 Available since system version Description
0x000101C2 1.0.0-0 OpenFile
0x00020142 1.0.0-0 DeleteFile
0x00030244 1.0.0-0 RenameFile
0x00040142 1.0.0-0 DeleteDirectory
0x00050202 1.0.0-0 CreateFile
0x00060182 1.0.0-0 CreateDirectory
0x00070244 1.0.0-0 RenameDirectory
0x00080102 1.0.0-0 OpenDirectory
0x00090142 1.0.0-0 ReadFile
0x000A00C2 1.0.0-0 CalculateFileHashSHA256
0x000B0182 1.0.0-0 WriteFile
0x000C0104 1.0.0-0 CalcSavegameMAC
0x000D0080 1.0.0-0 GetFileSize
0x000E0100 1.0.0-0 SetFileSize
0x000F0080 1.0.0-0 CloseFile
0x001000C2 1.0.0-0 ReadDirectory
0x00110080 1.0.0-0 CloseDirectory
0x001200C2 1.0.0-0 OpenArchive
0x00130102 1.0.0-0 HasFile
0x00140102 1.0.0-0 HasDirectory
0x001500C0 1.0.0-0 CommitSaveData
0x00160080 1.0.0-0 CloseArchive
0x00170080 1.0.0-0 LockArchive (archivehandlelo, archivehandlehi)
0x00180000 1.0.0-0 GetCardType
0x00190000 1.0.0-0 GetSdmcArchiveResource
0x001A0000 1.0.0-0 GetNandArchiveResource
0x001B0000 1.0.0-0 GetSdmcFatFsError
0x001C0000 1.0.0-0 IsSdmcDetected
0x001D0000 1.0.0-0 IsSdmcWritable
0x001E0042 1.0.0-0 GetSdmcCid
0x001F0042 1.0.0-0 GetNandCid
0x00200000 1.0.0-0 GetSdmcSpeedInfo
0x00210000 1.0.0-0 GetNandSpeedInfo
0x00220042 1.0.0-0 GetSdmcLog
0x00230042 1.0.0-0 GetNandLog
0x00240000 1.0.0-0 ClearSdmcLog
0x00250000 1.0.0-0 ClearNandLog
0x00260000 1.0.0-0 CardSlotIsInserted
0x00270000 1.0.0-0 CardSlotPowerOn
0x00280000 1.0.0-0 CardSlotPowerOff
0x00290000 1.0.0-0 CardSlotGetIFPowerStatus
0x002A0040 1.0.0-0 CardNorDirectCommand
0x002B0080 1.0.0-0 CardNorDirectCommandWithAddress
0x002C0082 1.0.0-0 CardNorDirectRead
0x002D00C2 1.0.0-0 CardNorDirectReadWithAddress
0x002E0082 1.0.0-0 CardNorDirectWrite
0x002F00C2 1.0.0-0 CardNorDirectWriteWithAddress
0x003000C2 1.0.0-0 CardNorDirectRead_4xIO
0x00310082 1.0.0-0 CardNorDirectCpuWriteWithoutVerify
0x00320040 1.0.0-0 CardNorDirectSectorEraseWithoutVerify
0x00330080 1.0.0-0 GetProductInfo
0x00340040 1.0.0-0 SetCardSpiBaudrate
0x00350040 1.0.0-0 SetCardSpiBusMode
0x00360040 1.0.0-0 SendInitializeInfoTo9
0x00370100 1.0.0-0 CreateExtSaveData
0x00380100 1.0.0-0 DeleteExtSaveData
0x00390102 1.0.0-0 EnumerateExtSaveData
0x003A0100 1.0.0-0 GetSpecialContentIndex
0x003B00C2 1.0.0-0 GetLegacyRomHeader
0x003C0102 1.0.0-0 GetLegacyBannerData
0x003D0040 ? FormatCardNorDevice
0x003E0000 3.0.0-5 DeleteSdmcRoot
0x003F0040 3.0.0-5 DeleteAllExtSaveDataOnNand
0x00400000 3.0.0-5 InitializeCtrFilesystem
0x00410000 3.0.0-5 CreateSeed
0x00420042 3.0.0-5 GetSdmcCtrRootPath
0x00430040 3.0.0-5 GetArchiveResource
0x00440002 3.0.0-5 ExportIntegrityVerificationSeed
0x00450002 3.0.0-5 ImportIntegrityVerificationSeed
0x00460102 3.0.0-5 GetLegacySubBannerData
0x00470042 3.0.0-5 GenerateRandomBytes
0x004800C2 3.0.0-5 GetFileLastModified
0x00490102 3.0.0-5 ReadSpecialFile
0x004A0040 3.0.0-5 GetSpecialFileSize
0x004B0000 3.0.0-5 StartDeviceMoveAsSource
0x004C0240 3.0.0-5 StartDeviceMoveAsDestination
0x004D01C4 3.0.0-5 ReadFileSHA256
0x004E0204 3.0.0-5 WriteFileSHA256
0x004F0080 3.0.0-5 SetCtrCardLatencyParameter (u64)
0x00500040 3.0.0-5 SetPriority
0x00510040 3.0.0-5 SwitchCleanupInvalidSaveData
0x00520042 3.0.0-5 EnumerateSystemSaveData
0x00530000 3.0.0-5 Stubbed with 4.0.0-7.
0x00540000 4.0.0-7 Stubbed with 4.0.0-7.
0x00550082 4.0.0-7 ReadNandReport
0x00560102 9.6.0-X ?

Pre 3.x[edit]

Command Header, prior to 3.0.0-5 Available since system version Description
0x003E.... ? This was removed with 3.0.0-5.
0x003F0000 1.0.0-0 DeleteSdmcRoot
0x00400040 1.0.0-0 DeleteAllExtSaveDataOnNand
0x00410000 1.0.0-0 InitializeCtrFilesystem
0x00420000 1.0.0-0 CreateSeed
0x00430042 2.0.0-2 GetSdmcCtrRootPath
0x00440040 2.0.0-2 GetArchiveResource
0x00450002 2.0.0-2 ExportIntegrityVerificationSeed
0x00460002 2.0.0-2 ImportIntegrityVerificationSeed
0x00470082 2.0.0-2 This was removed with 3.0.0-5.
0x00480102 2.0.0-2 GetLegacySubBannerData
0x00490042 2.0.0-2 ?
0x004A00C2 2.0.0-2 GetFileLastModified
0x004B0102 2.0.0-2 ReadSpecialFile
0x004C0040 2.0.0-2 GetSpecialFileSize

Commands listed in the previous chart marked as available since 1.0.0-0 that are not shown in this chart are the same between both.

Errors[edit]

Error-code Description
0xC82044BE Object does already exist/failed to create object.
0xC86044D2 Failed to write file. Partition is full.
0xC8804471 Attempted to open a file under a directory which doesn't exist.
0xC8804478 Object doesn't exist / failed to open object(file). Or: The specified title does not exist in the database.
0xC880448D FSPXI: Gamecard not inserted when attempting to use the gamecard.
0xC88044AB SDMC/NAND bus error, REG_SDSTATUS: TMIO_STAT_CMD_BUSY or TMIO_STAT_TXUNDERRUN
0xC88044AC SDMC/NAND bus error, REG_SDSTATUS: TMIO_STAT_ILL_FUNC
0xC92044E6 Operation not allowed with the current file openflags/file already in use (if file was previously opened for writing).
0xC92044E7 Resource locked.
0xC9204509 SDMC/NAND bus error, REG_SDSTATUS: TMIO_STAT_CMDTIMEOUT
0xC960454B SDMC/NAND bus error, when an error-bit in REG_SDSTATUS separate from the above errors is set. This can also indicate that the TWL partition table in the NAND sector0 is invalid, or that the sector signature for sector0 at offset 0x1FE is invalid?
0xC960454C SDMC/NAND bus error, REG_SDSTATUS: TMIO_STAT_STOPBIT_ERR
0xC960F401 SDMC/NAND bus error, REG_SDSTATUS: Bit23 (0x00800000)
0xD8604664 FSUSER: Returned when attempting to create a file in savedata when the current total number of files is already the maximum.
0xD9004587 FSPXI: Hash verification failure (only for NCCH region hashes?).
0xD9004588 FSPXI/FSUSER: Verification failure for RSA or hashes. FSUSER: Verification failed for savegame AES-MAC.
0xD900458B Invalid RomFS / savedata block hash.
0xD9004676 FSUSER: The specified service-command / archive is not accessible, due to the currently used exheader accessinfo not having the required bit(s) set. (This error can also indicate that the required ARM9 access-control mount flag is not enabled, in the exheader for any of the running ARM11 processes)
0xE0C046F9 FSPXI: Specified read-size doesn't match the actual filesize, when accessing ExeFS.
0xE0E046BE Invalid lowpath. This can also indicate that the specified archive-id does not exist, or that the specified archive-id is not accessible over FSPXI. In certain cases this can also be caused by attempting to open a FSUSER archive where none of the required bit(s) for the archive are set in the user-process exheader accessinfo.
0xE0E046C1 File-reading returns this when the input 64bit file-pos is negative, or when the file-pos is larger than the filesize.
0xE0E046D1 Failed to write to file because it would exceed the file size limit of the file system.
0xE160F402 SDMC/NAND bus error, REG_SDSTATUS: TMIO_STAT_RXRDY
0xE160F403 SDMC/NAND bus error, REG_SDSTATUS: Bit28 (0x10000000)
0xE160F404 SDMC/NAND bus error, REG_SDSTATUS: Bit27 (0x08000000)