Filesystem services: Difference between revisions

No edit summary
 
(28 intermediate revisions by 4 users not shown)
Line 133: Line 133:
|-
|-
| 38 || [20.0.0+] DetachSdCard
| 38 || [20.0.0+] DetachSdCard
|-
| 39 || [21.0.0+] ShutdownStorage
|-
| 40 || [21.0.0+] FixSaveDataCertificate
|-
|-
| 51 || [[#OpenSaveDataFileSystem]]
| 51 || [[#OpenSaveDataFileSystem]]
Line 183: Line 187:
|-
|-
| 87 || [11.0.0+] [[#OpenSaveDataTransferManagerForRepair]]
| 87 || [11.0.0+] [[#OpenSaveDataTransferManagerForRepair]]
|-
| 88 || [21.0.0+] OpenSaveDataTransferManagerForSaveDataRepairWithPolicy
|-
|-
| 100 || OpenImageDirectoryFileSystem
| 100 || OpenImageDirectoryFileSystem
Line 276: Line 282:
| 640 || [4.0.0-7.0.1] IsSignedSystemPartitionOnSdCardValid
| 640 || [4.0.0-7.0.1] IsSignedSystemPartitionOnSdCardValid
|-
|-
| 651 || [S2]
| 650 || [S2] RegisterTicketVersionKeys
|-
|-
| 660 || [S2]
| 651 || [S2] RegisterCpDeviceUniqueKey
|-
| 660 || [S2] GetProcessEnvironmentSource
|-
|-
| 700 || [5.0.0+] [[#OpenAccessFailureDetectionEventNotifier]]
| 700 || [5.0.0+] [[#OpenAccessFailureDetectionEventNotifier]]
Line 290: Line 298:
| 720 || [5.0.0+] AbandonAccessFailure
| 720 || [5.0.0+] AbandonAccessFailure
|-
|-
| 800 || [2.0.0+] GetAndClearErrorInfo
| 800 || [2.0.0+] [[#GetAndClearErrorInfo]]
|-
|-
| 810 || [7.0.0+] RegisterProgramIndexMapInfo
| 810 || [7.0.0+] RegisterProgramIndexMapInfo
Line 302: Line 310:
| 1002 || [[#SetSaveDataRootPath]]
| 1002 || [[#SetSaveDataRootPath]]
|-
|-
| 1003 || DisableAutoSaveDataCreation
| 1003 || [1.0.0-21.2.0] DisableAutoSaveDataCreation
|-
|-
| 1004 || [[#SetGlobalAccessLogMode]]
| 1004 || [[#SetGlobalAccessLogMode]]
Line 334: Line 342:
| 1019 || [13.0.0+] UnsetDebugOption
| 1019 || [13.0.0+] UnsetDebugOption
|-
|-
| 1020 || [18.0.0+] OpenMemoryStressor
| 1020 || [18.0.0+] [[#OpenMemoryStressor]]
|-
|-
| 1100 || [4.0.0-17.0.1] OverrideSaveDataTransferTokenSignVerificationKey
| 1100 || [4.0.0-17.0.1] OverrideSaveDataTransferTokenSignVerificationKey
Line 395: Line 403:
| 0xD || CanMountBisSystem || 0x8000000000008080 || RW || [[#OpenBisFileSystem]]
| 0xD || CanMountBisSystem || 0x8000000000008080 || RW || [[#OpenBisFileSystem]]
|-
|-
| 0xE || CanMountBisSystemProperEncryption || 0x8000000000000080 || RW || [[#OpenBisFileSystem]]
| [21.0.0+] 0xE || CanMountBisUserProperPartition || 0x8000000000008080 || RW || [[#OpenBisFileSystem]]
|-
|-
| 0xF || CanMountBisSystemProperPartition || 0x8000000000000080 || RW || [[#OpenBisFileSystem]]
| [21.0.0+] 0xF || CanMountBisSystemProperEncryption || 0x8000000000000080 || RW || [[#OpenBisFileSystem]]
|-
|-
| 0x10 || CanMountSdCard || 0xC000000000200000 || RW || [[#OpenSdCardFileSystem]]
| [21.0.0+] 0x10 || CanMountBisSystemProperPartition || 0x8000000000008080 || RW || [[#OpenBisFileSystem]]
|-
|-
| 0x11 || CanMountGameCard || 0x8000000000000010 || R- || [[#OpenGameCardFileSystem]]
| [21.0.0+] 0x11 ([-20.5.0] 0x10) || CanMountSdCard || 0xC000000000200000 || RW || [[#OpenSdCardFileSystem]]
|-
|-
| 0x12 || CanMountDeviceSaveData || 0x8000000000040020 || RW || [[#OpenSaveDataFileSystem]]
| [21.0.0+] 0x12 ([-20.5.0] 0x11) || CanMountGameCard || 0x8000000000000010 || R- || [[#OpenGameCardFileSystem]]
|-
|-
| 0x13 || CanMountSystemSaveData || 0x8000000000000028 || RW || [[#OpenSaveDataFileSystemBySystemSaveDataId]]
| [21.0.0+] 0x13 ([-20.5.0] 0x12) || CanMountDeviceSaveData || 0x8000000000040020 || RW || [[#OpenSaveDataFileSystem]]
|-
|-
| 0x14 || CanMountOthersSaveData || 0x8000000000000020 || RW || [[#OpenSaveDataFileSystem]]
| [21.0.0+] 0x14 ([-20.5.0] 0x13) || CanMountSystemSaveData || 0x8000000000000028 || RW || [[#OpenSaveDataFileSystemBySystemSaveDataId]]
|-
|-
| 0x15 || CanMountOthersSystemSaveData || 0x8000000000000020 || RW || [[#OpenSaveDataFileSystemBySystemSaveDataId]]
| [21.0.0+] 0x15 ([-20.5.0] 0x14) || CanMountOthersSaveData || 0x8000000000000020 || RW || [[#OpenSaveDataFileSystem]]
|-
|-
| 0x16 || CanOpenBisPartitionBootPartition1Root || 0x8000000000010082 || RW || [[#OpenBisStorage]]
| [21.0.0+] 0x16 ([-20.5.0] 0x15) || CanMountOthersSystemSaveData || 0x8000000000000020 || RW || [[#OpenSaveDataFileSystemBySystemSaveDataId]]
|-
|-
| 0x17 || CanOpenBisPartitionBootPartition2Root || 0x8000000000010080 || RW || [[#OpenBisStorage]]
| [21.0.0+] 0x17 ([-20.5.0] 0x16) || CanOpenBisPartitionBootPartition1Root || 0x8000000000010082 || RW || [[#OpenBisStorage]]
|-
|-
| 0x18 || CanOpenBisPartitionUserDataRoot || 0x8000000000000080 || RW || [[#OpenBisStorage]]
| [21.0.0+] 0x18 ([-20.5.0] 0x17) || CanOpenBisPartitionBootPartition2Root || 0x8000000000010080 || RW || [[#OpenBisStorage]]
|-
|-
| 0x19 || CanOpenBisPartitionBootConfigAndPackage2Part1 || 0x8000000000010080 || RW || [[#OpenBisStorage]]
| [21.0.0+] 0x19 ([-20.5.0] 0x18) || CanOpenBisPartitionUserDataRoot || 0x8000000000000080 || RW || [[#OpenBisStorage]]
|-
|-
| 0x1A || CanOpenBisPartitionBootConfigAndPackage2Part2 || 0x8000000000010080 || RW || [[#OpenBisStorage]]
| [21.0.0+] 0x1A ([-20.5.0] 0x19) || CanOpenBisPartitionBootConfigAndPackage2Part1 || 0x8000000000010080 || RW || [[#OpenBisStorage]]
|-
|-
| 0x1B || CanOpenBisPartitionBootConfigAndPackage2Part3 || 0x8000000000010080 || RW || [[#OpenBisStorage]]
| [21.0.0+] 0x1B ([-20.5.0] 0x1A) || CanOpenBisPartitionBootConfigAndPackage2Part2 || 0x8000000000010080 || RW || [[#OpenBisStorage]]
|-
|-
| 0x1C || CanOpenBisPartitionBootConfigAndPackage2Part4 || 0x8000000000010080 || RW || [[#OpenBisStorage]]
| [21.0.0+] 0x1C ([-20.5.0] 0x1B) || CanOpenBisPartitionBootConfigAndPackage2Part3 || 0x8000000000010080 || RW || [[#OpenBisStorage]]
|-
|-
| 0x1D || CanOpenBisPartitionBootConfigAndPackage2Part5 || 0x8000000000010080 || RW || [[#OpenBisStorage]]
| [21.0.0+] 0x1D ([-20.5.0] 0x1C) || CanOpenBisPartitionBootConfigAndPackage2Part4 || 0x8000000000010080 || RW || [[#OpenBisStorage]]
|-
|-
| 0x1E || CanOpenBisPartitionBootConfigAndPackage2Part6 || 0x8000000000010080 || RW || [[#OpenBisStorage]]
| [21.0.0+] 0x1E ([-20.5.0] 0x1D) || CanOpenBisPartitionBootConfigAndPackage2Part5 || 0x8000000000010080 || RW || [[#OpenBisStorage]]
|-
|-
| 0x1F || CanOpenBisPartitionCalibrationBinary || 0x8000000000000084 || RW || [[#OpenBisStorage]]
| [21.0.0+] 0x1F ([-20.5.0] 0x1E) || CanOpenBisPartitionBootConfigAndPackage2Part6 || 0x8000000000010080 || RW || [[#OpenBisStorage]]
|-
|-
| 0x20 || CanOpenBisPartitionCalibrationFile || 0x8000000000000084 || RW || [[#OpenBisStorage]]
| [21.0.0+] 0x20 ([-20.5.0] 0x1F) || CanOpenBisPartitionCalibrationBinary || 0x8000000000000084 || RW || [[#OpenBisStorage]]
|-
|-
| 0x21 || CanOpenBisPartitionSafeMode || 0x8000000000000080 || RW || [[#OpenBisStorage]]
| [21.0.0+] 0x21 ([-20.5.0] 0x20) || CanOpenBisPartitionCalibrationFile || 0x8000000000000084 || RW || [[#OpenBisStorage]]
|-
|-
| 0x22 || CanOpenBisPartitionUser || 0x8000000000000080 || RW || [[#OpenBisStorage]]
| [21.0.0+] 0x22 ([-20.5.0] 0x21) || CanOpenBisPartitionSafeMode || 0x8000000000000080 || RW || [[#OpenBisStorage]]
|-
|-
| 0x23 || CanOpenBisPartitionSystem || 0x8000000000000080 || RW || [[#OpenBisStorage]]
| [21.0.0+] 0x23 ([-20.5.0] 0x22) || CanOpenBisPartitionUser || 0x8000000000000080 || RW || [[#OpenBisStorage]]
|-
|-
| 0x24 || CanOpenBisPartitionSystemProperEncryption || 0x8000000000000080 || RW || [[#OpenBisStorage]]
| [21.0.0+] 0x24 ([-20.5.0] 0x23) || CanOpenBisPartitionSystem || 0x8000000000000080 || RW || [[#OpenBisStorage]]
|-
|-
| 0x25 || CanOpenBisPartitionSystemProperPartition || 0x8000000000000080 || RW || [[#OpenBisStorage]]
| [21.0.0+] 0x25 ([-20.5.0] 0x24) || CanOpenBisPartitionSystemProperEncryption || 0x8000000000000080 || RW || [[#OpenBisStorage]]
|-
|-
| 0x26 || CanOpenBisPartitionDeviceTreeBlob || 0x8000002000000080 || RW || [[#OpenBisStorage]]
| [21.0.0+] 0x26 ([-20.5.0] 0x25) || CanOpenBisPartitionSystemProperPartition || 0x8000000000000080 || RW || [[#OpenBisStorage]]
|-
|-
| [3.0.0+] 0x27 || CanOpenSdCardStorage || 0xC000000000200000 || RW ||  
| [21.0.0+] 0x27 ([-20.5.0] 0x26) || CanOpenBisPartitionDeviceTreeBlob || 0x8000002000000080 || RW || [[#OpenBisStorage]]
|-
|-
| [3.0.0+] 0x28 || CanOpenGameCardStorage || 0x8000000000000100 || RW || [[#OpenGameCardStorage]], [[#EraseGameCard]] (bit1), [[#WriteToGameCard]] (bit1), [[#GetGameCardErrorInfo]] (bit1), [[#EraseAndWriteParamDirectly]] (bit1), [[#ReadParamDirectly]] (bit1), [[#ForceEraseGameCard]] (bit1)
| [21.0.0+] 0x28 ([3.0.0-20.5.0] 0x27) || CanOpenSdCardStorage || 0xC000000000200000 || RW ||  
|-
|-
| [4.0.0+] 0x29 || CanMountSystemDataPrivate || 0x8000000000100008 || R- || [[#OpenFileSystem]], [[#OpenDataStorageByDataId]]
| [21.0.0+] 0x29 ([3.0.0-20.5.0] 0x28) || CanOpenGameCardStorage || 0x8000000000000100 || RW || [[#OpenGameCardStorage]], [[#EraseGameCard]] (bit1), [[#WriteToGameCardDirectly]] (bit1), [[#GetGameCardErrorInfo]] (bit1), [[#EraseAndWriteParamDirectly]] (bit1), [[#ReadParamDirectly]] (bit1), [[#ForceEraseGameCard]] (bit1)
|-
|-
| [5.0.0+] 0x2A || CanMountHost || 0xC000000000400000 || RW || [[#OpenHostFileSystem]]
| [21.0.0+] 0x2A ([4.0.0-20.5.0] 0x29) || CanMountSystemDataPrivate || 0x8000000000100008 || R- || [[#OpenFileSystem]], [[#OpenDataStorageByDataId]]
|-
|-
| [6.0.0+] 0x2B || CanMountRegisteredUpdatePartition || 0x8000000000010000 || R- || [[#OpenRegisteredUpdatePartition]]
| [21.0.0+] 0x2B || CanMountSystemDataPrivateIdRestricted || 0x8000200000000000 || R- || [[#OpenFileSystem]], [[#OpenDataStorageByDataId]]
|-
|-
| [7.0.0+] 0x2C || CanOpenSaveDataInternalStorage || [-19.0.0] 0x8000000000000000 [20.0.0+] 0x8000000000000020 || RW || [[#OpenSaveDataInternalStorageFileSystem]]
| [21.0.0+] 0x2C ([5.0.0-20.5.0] 0x2A) || CanMountHost || 0xC000000000400000 || RW || [[#OpenHostFileSystem]]
|-
|-
| [7.0.0+] 0x2D || CanMountTemporaryDirectory || 0xC000000000000000 || RW ||  
| [21.0.0+] 0x2D ([6.0.0-20.5.0] 0x2B) || CanMountRegisteredUpdatePartition || 0x8000000000010000 || R- || [[#OpenRegisteredUpdatePartition]]
|-
|-
| [11.0.0+] 0x2E || CanMountAllBaseFilesystem || 0x8000000000000000 || RW || OpenBaseFileSystem
| [21.0.0+] 0x2E ([7.0.0-20.5.0] 0x2C) || CanOpenSaveDataInternalStorage || [20.0.0+] 0x8000000000000020 ([-19.0.0] 0x8000000000000000) || RW || [[#OpenSaveDataInternalStorageFileSystem]]
|-
|-
| [15.0.0+] 0x2F || CanNotMount || 0x0000000000000000 || -- || OpenCustomStorageFileSystem
| [21.0.0+] 0x2F ([7.0.0-20.5.0] 0x2D) || CanMountTemporaryDirectory || 0xC000000000000000 || RW || [11.0.0+] OpenBaseFileSystem, [12.0.0+] FormatBaseFileSystem
|-
| [21.0.0+] 0x30 ([11.0.0-20.5.0] 0x2E) || CanMountAllBaseFilesystem || 0x8000000000000000 || RW || OpenBaseFileSystem, [12.0.0+] FormatBaseFileSystem
|-
| [21.0.0+] 0x31 ([15.0.0-20.5.0] 0x2F) || CanNotMount || 0x0000000000000000 || -- || OpenCustomStorageFileSystem
|}
|}


Line 473: Line 485:
| 0x1 || CanEraseMmc || 0x8000000000000080 || EraseMmc
| 0x1 || CanEraseMmc || 0x8000000000000080 || EraseMmc
|-
|-
| [20.0.0+] 0x2 || || 0x8000100000000080 ||
| [20.0.0+] 0x2 || CanMarkBeforeEraseMmcPartitionUserData || 0x8000100000000080 ||
|-
|-
| [-19.0.0] 0x2 [20.0.0+] 0x3 || CanGetGameCardDeviceCertificate || 0x8000000000000010 || GetGameCardDeviceCertificate
| [20.0.0+] 0x3 ([-19.0.0] 0x2) || CanGetGameCardDeviceCertificate || 0x8000000000000010 || GetGameCardDeviceCertificate
|-
|-
| [-19.0.0] 0x3 [20.0.0+] 0x4 || CanGetGameCardIdSet || 0x8000000000000010 || GetGameCardIdSet
| [20.0.0+] 0x4 ([-19.0.0] 0x3) || CanGetGameCardIdSet || 0x8000000000000010 || GetGameCardIdSet
|-
|-
| [-19.0.0] 0x4 [20.0.0+] 0x5 || CanFinalizeGameCardDriver || 0x8000000000000200 || FinalizeGameCardDriver
| [20.0.0+] 0x5 ([-19.0.0] 0x4) || CanFinalizeGameCardDriver || 0x8000000000000200 || FinalizeGameCardDriver
|-
|-
| [-19.0.0] 0x5 [20.0.0+] 0x6 || CanGetGameCardAsicInfo || 0x8000000000000200 || GetGameCardAsicInfo
| [20.0.0+] 0x6 ([-19.0.0] 0x5) || CanGetGameCardAsicInfo || 0x8000000000000200 || GetGameCardAsicInfo
|-
|-
| [-19.0.0] 0x6 [20.0.0+] 0x7 || CanGetGameCardAsicCertificate || 0x8000000000000200 || GetGameCardAsicCertificate
| [20.0.0+] 0x7 ([-19.0.0] 0x6) || CanGetGameCardAsicCertificate || 0x8000000000000200 || GetGameCardAsicCertificate
|-
|-
| [20.0.0+] 0x8 || || 0x8000100000000080 ||
| [20.0.0+] 0x8 || CanGetGameCardCardHeader || 0x8000100000000080 ||
|-
|-
| [20.0.0+] 0x9 || || 0x8000100000000080 ||
| [20.0.0+] 0x9 || CanGetGameCardApplicationIdList || 0x8000100000000080 ||
|-
|-
| [20.0.0+] 0xA || || 0x8000080000000000 ||
| [20.0.0+] 0xA || CanGetGameCardDetailedErrorReportInfo || 0x8000080000000000 ||
|-
|-
| [20.0.0+] 0xB || || 0x8000000000000010 ||
| [20.0.0+] 0xB || CanSetGameCardSessionCreationDelay || 0x8000000000000010 ||
|-
|-
| [20.0.0+] 0xC || || 0x8000100000000080 ||
| [20.0.0+] 0xC || CanRegisterGameCardConfigurationData || 0x8000100000000080 ||
|-
|-
| [-19.0.0] 0x7 [20.0.0+] 0xD || CanCreateSaveData || 0x8000000000002020 || [[#CreateSaveDataFileSystem]]
| [20.0.0+] 0xD ([-19.0.0] 0x7) || CanCreateSaveData || 0x8000000000002020 || [[#CreateSaveDataFileSystem]]
|-
|-
| [-19.0.0] 0x8 [20.0.0+] 0xE || CanDeleteSaveData || 0x8000000000000060 || [[#DeleteSaveDataFileSystem]], RegisterSaveDataFileSystemAtomicDeletion
| [20.0.0+] 0xE ([-19.0.0] 0x8) || CanDeleteSaveData || 0x8000000000000060 || [[#DeleteSaveDataFileSystem]], RegisterSaveDataFileSystemAtomicDeletion
|-
|-
| [-19.0.0] 0x9 [20.0.0+] 0xF || CanCreateSystemSaveData || 0x8000000000000028 || CreateSaveDataFileSystemBySystemSaveDataId
| [20.0.0+] 0xF ([-19.0.0] 0x9) || CanCreateSystemSaveData || 0x8000000000000028 || CreateSaveDataFileSystemBySystemSaveDataId
|-
|-
| [-19.0.0] 0xA [20.0.0+] 0x10 || CanCreateOthersSystemSaveData || 0x8000000000000020 || CreateSaveDataFileSystemBySystemSaveDataId
| [20.0.0+] 0x10 ([-19.0.0] 0xA) || CanCreateOthersSystemSaveData || 0x8000000000000020 || CreateSaveDataFileSystemBySystemSaveDataId
|-
|-
| [-19.0.0] 0xB [20.0.0+] 0x11 || CanDeleteSystemSaveData || 0x8000000000004028 || [[#DeleteSaveDataFileSystem]], RegisterSaveDataFileSystemAtomicDeletion
| [20.0.0+] 0x11 ([-19.0.0] 0xB) || CanDeleteSystemSaveData || 0x8000000000004028 || [[#DeleteSaveDataFileSystem]], RegisterSaveDataFileSystemAtomicDeletion
|-
|-
| [-19.0.0] 0xC [20.0.0+] 0x12 || CanOpenSaveDataInfoReader || 0x8000000000000060 || [[#OpenSaveDataInfoReaderBySaveDataSpaceId]], [[#OpenSaveDataInfoReader]]
| [20.0.0+] 0x12 ([-19.0.0] 0xC) || CanOpenSaveDataInfoReader || 0x8000000000000060 || [[#OpenSaveDataInfoReaderBySaveDataSpaceId]], [[#OpenSaveDataInfoReader]]
|-
|-
| [-19.0.0] 0xD [20.0.0+] 0x13 || CanOpenSaveDataInfoReaderForSystem || 0x8000000000004020 || [[#OpenSaveDataInfoReaderBySaveDataSpaceId]], [[#OpenSaveDataInfoReader]]
| [20.0.0+] 0x13 ([-19.0.0] 0xD) || CanOpenSaveDataInfoReaderForSystem || 0x8000000000004020 || [[#OpenSaveDataInfoReaderBySaveDataSpaceId]], [[#OpenSaveDataInfoReader]]
|-
|-
| [-19.0.0] 0xE [20.0.0+] 0x14 || CanOpenSaveDataInfoReaderForInternal || 0x8000000000000040 || [[#OpenSaveDataInfoReaderWithFilter]]
| [20.0.0+] 0x14 ([-19.0.0] 0xE) || CanOpenSaveDataInfoReaderForInternal || 0x8000000000000040 || [[#OpenSaveDataInfoReaderWithFilter]]
|-
|-
| [-19.0.0] 0xF [20.0.0+] 0x15 || CanOpenSaveDataMetaFile || 0x8000000000020000 || OpenSaveDataMetaFile
| [20.0.0+] 0x15 ([-19.0.0] 0xF) || CanOpenSaveDataMetaFile || 0x8000000000020000 || OpenSaveDataMetaFile
|-
|-
| [-19.0.0] 0x10 [20.0.0+] 0x16 || CanSetCurrentPosixTime || 0x8000000000000400 || SetCurrentPosixTime, SetCurrentPosixTimeWithTimeDifference
| [20.0.0+] 0x16 ([-19.0.0] 0x10) || CanSetCurrentPosixTime || 0x8000000000000400 || SetCurrentPosixTime, SetCurrentPosixTimeWithTimeDifference
|-
|-
| [-19.0.0] 0x11 [20.0.0+] 0x17 || CanReadSaveDataFileSystemExtraData || 0x8000000000004060 || [[#ReadSaveDataFileSystemExtraData]]
| [20.0.0+] 0x17 ([-19.0.0] 0x11) || CanReadSaveDataFileSystemExtraData || 0x8000000000004060 || [[#ReadSaveDataFileSystemExtraData]]
|-
|-
| [-19.0.0] 0x12 [20.0.0+] 0x18 || CanSetGlobalAccessLogMode || 0x8000000000080000 || [[#SetGlobalAccessLogMode]]
| [20.0.0+] 0x18 ([-19.0.0] 0x12) || CanSetGlobalAccessLogMode || 0x8000000000080000 || [[#SetGlobalAccessLogMode]]
|-
|-
| [-19.0.0] 0x13 [20.0.0+] 0x19 || CanSetSpeedEmulationMode || 0x8000000000080000 || SetSpeedEmulationMode
| [20.0.0+] 0x19 ([-19.0.0] 0x13) || CanSetSpeedEmulationMode || 0x8000000000080000 || SetSpeedEmulationMode
|-
|-
| [20.0.0+] 0x1A || || 0x8000000400080000 ||
| [20.0.0+] 0x1A || CanSetApplicationStorageSpeed || 0x8000000400080000 ||
|-
|-
| [20.0.0+] 0x1B || || 0x8000000400080000 ||
| [20.0.0+] 0x1B || CanSetGameCardClockRateForSpeedEmulation || 0x8000000400080000 ||
|-
|-
| [-19.0.0] 0x14 [20.0.0+] 0x1C || CanDebug || 0xC000000000000000 ||  
| [20.0.0+] 0x1C ([-19.0.0] 0x14) || CanDebug || 0xC000000000000000 ||  
|-
|-
| [-19.0.0] 0x15 [20.0.0+] 0x1D || CanFillBis || 0xC000000000800000 || CreatePaddingFile, DeleteAllPaddingFiles
| [20.0.0+] 0x1D ([-19.0.0] 0x15) || CanFillBis || 0xC000000000800000 || CreatePaddingFile, DeleteAllPaddingFiles
|-
|-
| [2.0.0-19.0.0] 0x16 [20.0.0+] 0x1E || CanCorruptSaveData || 0xC000000001000000 || CorruptSaveDataFileSystem, CorruptSaveDataFileSystemBySaveDataSpaceId
| [20.0.0+] 0x1E ([2.0.0-19.0.0] 0x16) || CanCorruptSaveData || 0xC000000001000000 || CorruptSaveDataFileSystem, CorruptSaveDataFileSystemBySaveDataSpaceId
|-
|-
| [2.0.0-19.0.0] 0x17 [20.0.0+] 0x1F || CanCorruptSystemSaveData || 0x8000000001000060 || CorruptSaveDataFileSystem, CorruptSaveDataFileSystemBySaveDataSpaceId
| [20.0.0+] 0x1F ([2.0.0-19.0.0] 0x17) || CanCorruptSystemSaveData || 0x8000000001000060 || CorruptSaveDataFileSystem, CorruptSaveDataFileSystemBySaveDataSpaceId
|-
|-
| [2.0.0-19.0.0] 0x18 [20.0.0+] 0x20 || CanVerifySaveData || 0x8000000000000060 || [[#VerifySaveDataFileSystem]], VerifySaveDataFileSystemBySaveDataSpaceId
| [20.0.0+] 0x20 ([2.0.0-19.0.0] 0x18) || CanVerifySaveData || 0x8000000000000060 || [[#VerifySaveDataFileSystem]], VerifySaveDataFileSystemBySaveDataSpaceId
|-
|-
| [2.0.0-19.0.0] 0x19 [20.0.0+] 0x21 || CanDebugSaveData || 0xC000000002000000 || [[#CreateSaveDataFileSystem]], [[#OpenSaveDataFileSystem]], [[#SetSaveDataRootPath]]
| [20.0.0+] 0x21 ([2.0.0-19.0.0] 0x19) || CanDebugSaveData || 0xC000000002000000 || [[#CreateSaveDataFileSystem]], [[#OpenSaveDataFileSystem]], [[#SetSaveDataRootPath]]
|-
|-
| [2.0.0-19.0.0] 0x1A [20.0.0+] 0x22 || CanFormatSdCard || 0x8000000004000000 || FormatSdCardFileSystem
| [20.0.0+] 0x22 ([2.0.0-19.0.0] 0x1A) || CanFormatSdCard || 0x8000000004000000 || FormatSdCardFileSystem
|-
|-
| [3.0.0-19.0.0] 0x1B [20.0.0+] 0x23 || CanGetRightsId || 0x8000000008000000 || GetRightsId, GetRightsIdAndKeyGenerationByPath, GetRightsIdByPath
| [20.0.0+] 0x23 ([3.0.0-19.0.0] 0x1B) || CanGetRightsId || 0x8000000008000000 || GetRightsId, GetRightsIdAndKeyGenerationByPath, GetRightsIdByPath
|-
|-
| [3.0.0-19.0.0] 0x1C [20.0.0+] 0x24 || CanRegisterExternalKey || 0x8000000010000000 || RegisterExternalKey, UnregisterAllExternalKey
| [20.0.0+] 0x24 ([3.0.0-19.0.0] 0x1C) || CanRegisterExternalKey || 0x8000000010000000 || RegisterExternalKey, UnregisterAllExternalKey
|-
|-
| [4.0.0-19.0.0] 0x1D [20.0.0+] 0x25 || CanSetEncryptionSeed || 0x8000000000000800 || [[#SetSdCardEncryptionSeed]]
| [20.0.0+] 0x25 ([4.0.0-19.0.0] 0x1D) || CanSetEncryptionSeed || 0x8000000000000800 || [[#SetSdCardEncryptionSeed]]
|-
|-
| [4.0.0-19.0.0] 0x1E [20.0.0+] 0x26 || CanWriteSaveDataFileSystemExtraDataTimeStamp || 0x8000000000000020 || WriteSaveDataFileSystemExtraData, WriteSaveDataFileSystemExtraDataWithMask
| [20.0.0+] 0x26 ([4.0.0-19.0.0] 0x1E) || CanWriteSaveDataFileSystemExtraDataTimeStamp || 0x8000000000000020 || WriteSaveDataFileSystemExtraData, WriteSaveDataFileSystemExtraDataWithMask
|-
|-
| [4.0.0-19.0.0] 0x1F [20.0.0+] 0x27 || CanWriteSaveDataFileSystemExtraDataFlags || 0x8000000000004020 || WriteSaveDataFileSystemExtraData, WriteSaveDataFileSystemExtraDataWithMask
| [20.0.0+] 0x27 ([4.0.0-19.0.0] 0x1F) || CanWriteSaveDataFileSystemExtraDataFlags || 0x8000000000004020 || WriteSaveDataFileSystemExtraData, WriteSaveDataFileSystemExtraDataWithMask
|-
|-
| [4.0.0-19.0.0] 0x20 [20.0.0+] 0x28 || CanWriteSaveDataFileSystemExtraDataCommitId || 0x8000000000000020 || WriteSaveDataFileSystemExtraData, WriteSaveDataFileSystemExtraDataWithMask
| [20.0.0+] 0x28 ([4.0.0-19.0.0] 0x20) || CanWriteSaveDataFileSystemExtraDataCommitId || 0x8000000000000020 || WriteSaveDataFileSystemExtraData, WriteSaveDataFileSystemExtraDataWithMask
|-
|-
| [5.0.0-19.0.0] 0x21 [20.0.0+] 0x29 || CanWriteSaveDataFileSystemExtraDataAll || 0x8000000000000000 || WriteSaveDataFileSystemExtraData, WriteSaveDataFileSystemExtraDataWithMask
| [20.0.0+] 0x29 ([5.0.0-19.0.0] 0x21) || CanWriteSaveDataFileSystemExtraDataAll || 0x8000000000000000 || WriteSaveDataFileSystemExtraData, WriteSaveDataFileSystemExtraDataWithMask
|-
|-
| [5.0.0-19.0.0] 0x22 [20.0.0+] 0x2A || CanExtendSaveData || 0x8000000000002020 || ExtendSaveDataFileSystem
| [20.0.0+] 0x2A ([5.0.0-19.0.0] 0x22) || CanExtendSaveData || 0x8000000000002020 || ExtendSaveDataFileSystem
|-
|-
| [5.0.0-19.0.0] 0x23 [20.0.0+] 0x2B || CanExtendSystemSaveData || 0x8000000000000028 || ExtendSaveDataFileSystem
| [20.0.0+] 0x2B ([5.0.0-19.0.0] 0x23) || CanExtendSystemSaveData || 0x8000000000000028 || ExtendSaveDataFileSystem
|-
|-
| [5.0.0-19.0.0] 0x24 [20.0.0+] 0x2C || CanExtendOthersSystemSaveData || 0x8000000000000020 || ExtendSaveDataFileSystem
| [20.0.0+] 0x2C ([5.0.0-19.0.0] 0x24) || CanExtendOthersSystemSaveData || 0x8000000000000020 || ExtendSaveDataFileSystem
|-
|-
| [5.0.0-19.0.0] 0x25 [20.0.0+] 0x2D || CanRegisterUpdatePartition || 0x8000000020000000 || RegisterUpdatePartition
| [20.0.0+] 0x2D ([5.0.0-19.0.0] 0x25) || CanRegisterUpdatePartition || 0x8000000020000000 || RegisterUpdatePartition
|-
|-
| [5.0.0-19.0.0] 0x26 [20.0.0+] 0x2E || CanOpenSaveDataTransferManager || 0x8000000040000000 || [[#OpenSaveDataTransferManager]]
| [20.0.0+] 0x2E ([5.0.0-19.0.0] 0x26) || CanOpenSaveDataTransferManager || 0x8000000040000000 || [[#OpenSaveDataTransferManager]]
|-
|-
| [5.0.0-19.0.0] 0x27 [20.0.0+] 0x2F || CanOpenSaveDataTransferManagerVersion2 || 0x8000000200000000 || [[#OpenSaveDataTransferManagerVersion2]]
| [20.0.0+] 0x2F ([5.0.0-19.0.0] 0x27) || CanOpenSaveDataTransferManagerVersion2 || 0x8000000200000000 || [[#OpenSaveDataTransferManagerVersion2]]
|-
|-
| [5.0.0-19.0.0] 0x28 [20.0.0+] 0x30 || CanOpenSaveDataTransferManagerForSaveDataRepair || 0x8000000200000000 || OpenSaveDataTransferManagerForSaveDataRepair
| [20.0.0+] 0x30 ([5.0.0-19.0.0] 0x28) || CanOpenSaveDataTransferManagerForSaveDataRepair || 0x8000000200000000 || OpenSaveDataTransferManagerForSaveDataRepair
|-
|-
| [5.0.0-19.0.0] 0x29 [20.0.0+] 0x31 || CanOpenSaveDataTransferManagerForSaveDataRepairTool || 0x8000000000000000 || OpenSaveDataTransferManagerForSaveDataRepair
| [20.0.0+] 0x31 ([5.0.0-19.0.0] 0x29) || CanOpenSaveDataTransferManagerForSaveDataRepairTool || 0x8000000000000000 || OpenSaveDataTransferManagerForSaveDataRepair
|-
|-
| [5.0.0-19.0.0] 0x2A [20.0.0+] 0x32 || CanOpenOpenSaveDataTransferProhibiter || 0x8000000200002000 || [[#OpenSaveDataTransferProhibiter]]
| [20.0.0+] 0x32 ([5.0.0-19.0.0] 0x2A) || CanOpenOpenSaveDataTransferProhibiter || 0x8000000200002000 || [[#OpenSaveDataTransferProhibiter]]
|-
|-
| [5.0.0-19.0.0] 0x2B [20.0.0+] 0x33 || CanOpenSaveDataMover || 0x8000001000000000 || [[#OpenSaveDataMover]]
| [20.0.0+] 0x33 ([5.0.0-19.0.0] 0x2B) || CanOpenSaveDataMover || 0x8000001000000000 || [[#OpenSaveDataMover]]
|-
|-
| [5.0.0-19.0.0] 0x2C [20.0.0+] 0x34 || CanOpenBisWiper || 0x8000000000000800 || [[#OpenBisWiper]]
| [20.0.0+] 0x34 ([5.0.0-19.0.0] 0x2C) || CanOpenBisWiper || 0x8000000000000800 || [[#OpenBisWiper]]
|-
|-
| [5.0.0-19.0.0] 0x2D [20.0.0+] 0x35 || CanListAccessibleSaveDataOwnerId || 0x8000000240002000 || [[#ListAccessibleSaveDataOwnerId]]
| [20.0.0+] 0x35 ([5.0.0-19.0.0] 0x2D) || CanListAccessibleSaveDataOwnerId || 0x8000000240002000 || [[#ListAccessibleSaveDataOwnerId]]
|-
|-
| [5.0.0-19.0.0] 0x2E [20.0.0+] 0x36 || CanControlMmcPatrol || 0x8000000000000000 || SuspendMmcPatrol, ResumeMmcPatrol
| [20.0.0+] 0x36 ([5.0.0-19.0.0] 0x2E) || CanControlMmcPatrol || 0x8000000000000000 || SuspendMmcPatrol, ResumeMmcPatrol
|-
|-
| [5.0.0-19.0.0] 0x2F [20.0.0+] 0x37 || CanOverrideSaveDataTransferTokenSignVerificationKey || 0x8000000000000000 || OverrideSaveDataTransferTokenSignVerificationKey
| [20.0.0+] 0x37 ([5.0.0-19.0.0] 0x2F) || CanOverrideSaveDataTransferTokenSignVerificationKey || 0x8000000000000000 || OverrideSaveDataTransferTokenSignVerificationKey
|-
|-
| [5.1.0-19.0.0] 0x30 [20.0.0+] 0x38 || CanOpenSdCardDetectionEventNotifier || 0x8000000080200000 || [[#OpenSdCardDetectionEventNotifier]]
| [20.0.0+] 0x38 ([5.1.0-19.0.0] 0x30) || CanOpenSdCardDetectionEventNotifier || 0x8000000080200000 || [[#OpenSdCardDetectionEventNotifier]]
|-
|-
| [20.0.0+] 0x39 || || 0x8000000000200000 ||
| [20.0.0+] 0x39 || CanOpenSdCardAwakenReadyEventNotifier || 0x8000000000200000 ||
|-
|-
| [6.0.0-19.0.0] 0x31 [20.0.0+] 0x3A || CanOpenGameCardDetectionEventNotifier || 0x8000000080000110 || [[#OpenGameCardDetectionEventNotifier]]
| [20.0.0+] 0x3A ([6.0.0-19.0.0] 0x31) || CanOpenGameCardDetectionEventNotifier || 0x8000000080000110 || [[#OpenGameCardDetectionEventNotifier]]
|-
|-
| [20.0.0+] 0x3B || CanOpenGameCardAwakenReadyEventNotifier || 0x8000000080000110 || OpenGameCardAwakenReadyEventNotifier
| [20.0.0+] 0x3B || CanOpenGameCardAwakenReadyEventNotifier || 0x8000000080000110 || OpenGameCardAwakenReadyEventNotifier
|-
|-
| [6.0.0-19.0.0] 0x32 [20.0.0+] 0x3C || CanOpenSystemDataUpdateEventNotifier || 0x8000000000100008 || OpenSystemDataUpdateEventNotifier
| [20.0.0+] 0x3C ([6.0.0-19.0.0] 0x32) || CanOpenSystemDataUpdateEventNotifier || 0x8000000000100008 || OpenSystemDataUpdateEventNotifier
|-
| [6.0.0-19.0.0] 0x33 [20.0.0+] 0x3D || CanNotifySystemDataUpdateEvent || 0x8000000000010000 || NotifySystemDataUpdateEvent
|-
|-
| [6.0.0-19.0.0] 0x34 [20.0.0+] 0x3E || CanOpenAccessFailureDetectionEventNotifier || 0x8000000100000000 || [[#OpenAccessFailureDetectionEventNotifier]]
| [20.0.0+] 0x3D ([6.0.0-19.0.0] 0x33) || CanNotifySystemDataUpdateEvent || 0x8000000000010000 || NotifySystemDataUpdateEvent
|-
|-
| [6.0.0-19.0.0] 0x35 [20.0.0+] 0x3F || CanGetAccessFailureDetectionEvent || 0x8000000100000000 || GetAccessFailureDetectionEvent
| [20.0.0+] 0x3E ([6.0.0-19.0.0] 0x34) || CanOpenAccessFailureDetectionEventNotifier || 0x8000000100000000 || [[#OpenAccessFailureDetectionEventNotifier]]
|-
|-
| [6.0.0-19.0.0] 0x36 [20.0.0+] 0x40 || CanIsAccessFailureDetected || 0x8000000100000000 || IsAccessFailureDetected
| [20.0.0+] 0x3F ([6.0.0-19.0.0] 0x35) || CanGetAccessFailureDetectionEvent || 0x8000000100000000 || GetAccessFailureDetectionEvent
|-
|-
| [6.0.0-19.0.0] 0x37 [20.0.0+] 0x41 || CanResolveAccessFailure || 0x8000000100000000 || ResolveAccessFailure
| [20.0.0+] 0x40 ([6.0.0-19.0.0] 0x36) || CanIsAccessFailureDetected || 0x8000000100000000 || IsAccessFailureDetected
|-
|-
| [6.0.0-19.0.0] 0x38 [20.0.0+] 0x42 || CanAbandonAccessFailure || 0x8000000100000000 || AbandonAccessFailure
| [20.0.0+] 0x41 ([6.0.0-19.0.0] 0x37) || CanResolveAccessFailure || 0x8000000100000000 || ResolveAccessFailure
|-
|-
| [8.0.0-19.0.0] 0x39 [20.0.0+] 0x43 || CanQuerySaveDataInternalStorageTotalSize || 0x8000000040000000 || QuerySaveDataInternalStorageTotalSize
| [20.0.0+] 0x42 ([6.0.0-19.0.0] 0x38) || CanAbandonAccessFailure || 0x8000000100000000 || AbandonAccessFailure
|-
|-
| [9.0.0-19.0.0] 0x3A [20.0.0+] 0x44 || CanGetSaveDataCommitId || 0x8000000200000020 || [[#GetSaveDataCommitId]]
| [20.0.0+] 0x43 ([8.0.0-19.0.0] 0x39) || CanQuerySaveDataInternalStorageTotalSize || 0x8000000040000000 || QuerySaveDataInternalStorageTotalSize
|-
|-
| [20.0.0+] 0x45 ||   || 0x8000000000200000 ||
| [20.0.0+] 0x44 ([9.0.0-19.0.0] 0x3A) || CanGetSaveDataCommitId || 0x8000000200000020 || [[#GetSaveDataCommitId]]
|-
|-
| [9.0.0-19.0.0] 0x3B [20.0.0+] 0x46 || CanSetSdCardAccessibility || 0x8000000000200000 || SetSdCardAccessibility
| [20.0.0+] 0x45 || CanSetSdCardAccessibility || 0x8000000000200000 || SetSdCardAccessibility
|-
|-
| [9.0.0-19.0.0] 0x3C [20.0.0+] 0x47 || CanSimulateDevice || 0x4000000000000000 || SimulateDeviceDetectionEvent, SetSimulationEvent, ClearSimulationEvent
| [20.0.0+] 0x46 ([9.0.0-19.0.0] 0x3B) || CanSimulateDevice || 0x4000000000000000 || SimulateDeviceDetectionEvent, SetSimulationEvent, ClearSimulationEvent
|-
|-
| [9.0.0-19.0.0] 0x3D [20.0.0+] 0x48 || CanCreateSaveDataWithHashSalt || 0x8000000000000000 || [[#CreateSaveDataFileSystem]], [[#CreateSaveDataFileSystemWithHashSalt]]
| [20.0.0+] 0x47 ([9.0.0-19.0.0] 0x3C) || CanCreateSaveDataWithHashSalt || 0x8000000000000000 || [[#CreateSaveDataFileSystem]], [[#CreateSaveDataFileSystemWithHashSalt]]
|-
|-
| [9.0.0-19.0.0] 0x3E [20.0.0+] 0x49 || CanRegisterProgramIndexMapInfo || 0x8000000400000000 || RegisterProgramIndexMapInfo
| [20.0.0+] 0x48 ([9.0.0-19.0.0] 0x3D) || CanRegisterProgramIndexMapInfo || RegisterProgramIndexMapInfo
|-
|-
| [9.0.0-19.0.0] 0x3F [20.0.0+] 0x4A || CanChallengeCardExistence || 0x8000000000000010 || ChallengeCardExistence
| [20.0.0+] 0x49 ([9.0.0-19.0.0] 0x3E) || CanChallengeCardExistence || 0x8000000000000010 || ChallengeCardExistence
|-
|-
| [9.0.0-19.0.0] 0x40 [20.0.0+] 0x4B || CanCreateOwnSaveData || 0x8000000800000000 || [[#CreateSaveDataFileSystem]], CreateSaveDataFileSystemWithHashSalt
| [20.0.0+] 0x4A ([9.0.0-19.0.0] 0x3F) || CanCreateOwnSaveData || 0x8000000800000000 || [[#CreateSaveDataFileSystem]], CreateSaveDataFileSystemWithHashSalt
|-
|-
| [9.0.0-19.0.0] 0x41 [20.0.0+] 0x4C || CanDeleteOwnSaveData || 0x8000000800000000 || [[#DeleteSaveDataFileSystem]]
| [20.0.0+] 0x4B ([9.0.0-19.0.0] 0x40) || CanDeleteOwnSaveData || 0x8000000800000000 || [[#DeleteSaveDataFileSystem]]
|-
|-
| [10.0.0-19.0.0] 0x42 [20.0.0+] 0x4D || CanReadOwnSaveDataFileSystemExtraData || 0x8000000800000000 || [[#ReadSaveDataFileSystemExtraData]]
| [20.0.0+] 0x4C ([9.0.0-19.0.0] 0x41) || CanReadOwnSaveDataFileSystemExtraData || 0x8000000800000000 || [[#ReadSaveDataFileSystemExtraData]]
|-
|-
| [10.0.0-19.0.0] 0x43 [20.0.0+] 0x4E || CanExtendOwnSaveData || 0x8000000800000000 || ExtendSaveDataFileSystem
| [20.0.0+] 0x4D ([10.0.0-19.0.0] 0x42) || CanExtendOwnSaveData || 0x8000000800000000 || ExtendSaveDataFileSystem
|-
|-
| [10.2.0-19.0.0] 0x44 [20.0.0+] 0x4F || CanOpenOwnSaveDataTransferProhibiter || 0x8000000800000000 || [[#OpenSaveDataTransferProhibiter]]
| [20.0.0+] 0x4E ([10.0.0-19.0.0] 0x43) || CanOpenOwnSaveDataTransferProhibiter || 0x8000000800000000 || [[#OpenSaveDataTransferProhibiter]]
|-
|-
| [11.0.0-19.0.0] 0x45 [20.0.0+] 0x50 || CanFindOwnSaveDataWithFilter || 0x8000000800000000 || [[#FindSaveDataWithFilter]]
| [20.0.0+] 0x4F ([10.2.0-19.0.0] 0x44) || CanFindOwnSaveDataWithFilter || 0x8000000800000000 || [[#FindSaveDataWithFilter]]
|-
|-
| [13.0.0-19.0.0] 0x46 [20.0.0+] 0x51 || CanOpenSaveDataTransferManagerForRepair || 0x8000000000000020 || [[#OpenSaveDataTransferManagerForRepair]]
| [20.0.0+] 0x50 ([11.0.0-19.0.0] 0x45) || CanOpenSaveDataTransferManagerForRepair || 0x8000000000000020 || [[#OpenSaveDataTransferManagerForRepair]]
|-
|-
| [13.0.0-19.0.0] 0x47 [20.0.0+] 0x52 || CanSetDebugConfiguration || 0x8000000000000000 || SetDebugOption, UnsetDebugOption
| [20.0.0+] 0x51 ([13.0.0-19.0.0] 0x46) || CanSetDebugConfiguration || 0x8000000000000000 || SetDebugOption, UnsetDebugOption
|-
|-
| [15.0.0-19.0.0] 0x48 [20.0.0+] 0x53 || CanOpenDataStorageByPath || 0x8000000000000000 || OpenDataStorageByPath
| [20.0.0+] 0x52 ([13.0.0-19.0.0] 0x47) || CanOpenDataStorageByPath || 0x8000000000000000 || OpenDataStorageByPath
|-
|-
| [17.0.0-19.0.0] 0x49 [20.0.0+] 0x54|| CanNotifyErrorContextServiceReady || 0x8000004000000000 || NotifyErrorContextServiceReady
| [20.0.0+] 0x53 ([15.0.0-19.0.0] 0x48) || CanNotifyErrorContextServiceReady || 0x8000004000000000 || NotifyErrorContextServiceReady
|-
|-
| [17.0.0-19.0.0] 0x4A || CanGetProgramId || 0x8000000008000000 || GetProgramId, Removed in 20.0.0
| [20.0.0+] 0x54 ([17.0.0-19.0.0] 0x49) || CanGetProgramId || 0x8000000008000000 || GetProgramId
|-
|-
| [20.0.0+] 0x55 || CanGetContentStorageInfo || 0x8000000000000800 ||
| [20.0.0+] 0x55 || CanGetContentStorageInfo || 0x8000000000000800 ||
Line 646: Line 656:
|-
|-
| [20.0.0+] 0x57 || CanSetSdCardActivationMode || 0x8000000004000000 ||
| [20.0.0+] 0x57 || CanSetSdCardActivationMode || 0x8000000004000000 ||
|-
| [21.0.0+] 0x58 || CanEnableSdCardMalfunctionSimulation || 0x8000000000080000 ||
|-
| [21.0.0+] 0x59 || CanDisableSdCardMalfunctionSimulation || 0x8000000000080000 ||
|-
| [22.0.0+] 0x5A || CanShutdownStorage || 0x8000000000000000 ||
|}
|}


Line 659: Line 675:
Takes an input [[#FileSystemProxyType]] and an input [[NCM_services#ProgramId|ProgramId]]. Returns an [[#IFileSystem]].
Takes an input [[#FileSystemProxyType]] and an input [[NCM_services#ProgramId|ProgramId]]. Returns an [[#IFileSystem]].


Web-applet loads the [[#FileSystemProxyType]] (which must be '''Manual''') from u32_table[inparam].
The [[#FileSystemProxyType]] must be '''Manual'''.


Note: web-applet strings refer to both this cmd and [[#OpenFileSystemWithId]] as "MountContent", but official nn_sf_sync symbols use "OpenXX" names.
Note: web-applet strings refer to both this cmd and [[#OpenFileSystemWithId]] as "MountContent", but official nn_sf_sync symbols use "OpenXX" names.
Line 742: Line 758:


== ReadSaveDataFileSystemExtraDataBySaveDataSpaceId ==
== ReadSaveDataFileSystemExtraDataBySaveDataSpaceId ==
Takes an input u8 [[#SaveDataSpaceId]], an input u64 saveID, and a type-0x6 output buffer containing the [[#SaveDataFileSystemExtraData]].
Takes an input u8 [[#SaveDataSpaceId]], an input u64 saveID, and a type-0x6 output buffer containing the [[#SaveDataExtraData]].


== ReadSaveDataFileSystemExtraData ==
== ReadSaveDataFileSystemExtraData ==
Takes an input u64 saveID and a type-0x6 output buffer containing the [[#SaveDataFileSystemExtraData]].
Takes an input u64 saveID and a type-0x6 output buffer containing the [[#SaveDataExtraData]].


== OpenSaveDataInfoReader ==
== OpenSaveDataInfoReader ==
Line 761: Line 777:
== OpenSaveDataTransferManager ==
== OpenSaveDataTransferManager ==
No input, returns an [[#ISaveDataTransferManager]].
No input, returns an [[#ISaveDataTransferManager]].
[S2] Stubbed, just returns Result 0x177202.


== OpenSaveDataTransferManagerVersion2 ==
== OpenSaveDataTransferManagerVersion2 ==
Line 835: Line 853:


[8.0.0+] Now takes an additional 8-bytes of input.
[8.0.0+] Now takes an additional 8-bytes of input.
== GetAndClearErrorInfo ==
[21.0.0+] Now takes a type-0x1A output buffer and no longer returns 0x80-bytes of output.


== SetSaveDataSize ==
== SetSaveDataSize ==
Line 872: Line 893:
== GetProgramIndexForAccessLog ==
== GetProgramIndexForAccessLog ==
No input, returns two 32-bit values "version" and "program_index".
No input, returns two 32-bit values "version" and "program_index".
== OpenMemoryStressor ==
No input. Returns an output [[#IMemoryStressor]].


== OpenMultiCommitManager ==
== OpenMultiCommitManager ==
Line 1,111: Line 1,135:
| 6 || [17.0.0+] [[#GetSdCardHostControllerStatus]]
| 6 || [17.0.0+] [[#GetSdCardHostControllerStatus]]
|-
|-
| 7 || [20.0.0+] SetSdCardActivationMode
| 7 || [20.0.0+] [[#SetSdCardActivationMode]]
|-
|-
| 8 || [20.0.0+] [S1] TryGetSdCardInfo
| 8 || [20.0.0+] [S1] [[#TryGetSdCardInfo]]
|-
|-
| 100 || [[#GetMmcCid]]
| 100 || [[#GetMmcCid]]
Line 1,135: Line 1,159:
| 117 || [17.0.0+] [[#EraseMmcWithRange]]
| 117 || [17.0.0+] [[#EraseMmcWithRange]]
|-
|-
| 118 || [20.0.0+] MarkBeforeEraseMmcPartitionUserData
| 118 || [20.0.0+] [[#MarkBeforeEraseMmcPartitionUserData]]
|-
|-
| 119 || [20.0.0+] CheckAfterEraseMmcPartitionUserData
| 119 || [20.0.0+] [[#CheckAfterEraseMmcPartitionUserData]]
|-
|-
| 200 || [S1] [[#IsGameCardInserted]]
| 200 || [S1] [[#IsGameCardInserted]]
Line 1,189: Line 1,213:
| 224 || [S1] [19.0.0+] [[#GetGameCardApplicationIdList]]
| 224 || [S1] [19.0.0+] [[#GetGameCardApplicationIdList]]
|-
|-
| 225 || [S1] [20.0.0+] RegisterGameCardConfigurationData
| 225 || [S1] [20.0.0+] [[#RegisterGameCardConfigurationData]]
|-
|-
| 226 || [S1] [20.0.0+] GetGameCardDetailedErrorReportInfo
| 226 || [S1] [20.0.0+] [[#GetGameCardDetailedErrorReportInfo]]
|-
|-
| 300 || [[#SetSpeedEmulationMode]]
| 300 || [[#SetSpeedEmulationMode]]
Line 1,199: Line 1,223:
| 302 || [18.0.0+] [[#SetApplicationStorageSpeed]]
| 302 || [18.0.0+] [[#SetApplicationStorageSpeed]]
|-
|-
| 303 || [20.0.0+] SetGameCardClockRateForSpeedEmulation
| 303 || [20.0.0+] [[#SetGameCardClockRateForSpeedEmulation]]
|-
|-
| 304 || [20.0.0+] ClearGameCardClockRateForSpeedEmulation
| 304 || [20.0.0+] [[#ClearGameCardClockRateForSpeedEmulation]]
|-
|-
| 400 || [5.0.0+] [[#SuspendSdmmcControl]]
| 400 || [5.0.0+] [[#SuspendSdmmcControl]]
Line 1,236: Line 1,260:
== GetSdCardHostControllerStatus ==
== GetSdCardHostControllerStatus ==
No input. Returns an output [[#HostControllerStatus]].
No input. Returns an output [[#HostControllerStatus]].
== SetSdCardActivationMode ==
Takes an input [[#SdCardActivationMode]]. No output.
== TryGetSdCardInfo ==
Takes a type-0x6 output buffer and an input s64. No output.


== GetMmcCid ==
== GetMmcCid ==
Line 1,266: Line 1,296:
== EraseMmcWithRange ==
== EraseMmcWithRange ==
Takes an input [[#MmcPartition]] and two input u64s. No output.
Takes an input [[#MmcPartition]] and two input u64s. No output.
== MarkBeforeEraseMmcPartitionUserData ==
No input/output.
== CheckAfterEraseMmcPartitionUserData ==
No input/output.


== IsGameCardInserted ==
== IsGameCardInserted ==
Line 1,345: Line 1,381:
== GetGameCardApplicationIdList ==
== GetGameCardApplicationIdList ==
Takes a type-0x6 output buffer, an input s64 '''BufferSize''' and an input [[#GameCardHandle]]. Returns an output u16.
Takes a type-0x6 output buffer, an input s64 '''BufferSize''' and an input [[#GameCardHandle]]. Returns an output u16.
== RegisterGameCardConfigurationData ==
Takes a type-0x5 input buffer and an input s64. No output.
== GetGameCardDetailedErrorReportInfo ==
Takes a type-0x6 output buffer and an input s64. No output.


== SetSpeedEmulationMode ==
== SetSpeedEmulationMode ==
Line 1,354: Line 1,396:
== SetApplicationStorageSpeed ==
== SetApplicationStorageSpeed ==
Takes an input s32. No output.
Takes an input s32. No output.
== SetGameCardClockRateForSpeedEmulation ==
Takes an input s32. No output.
== ClearGameCardClockRateForSpeedEmulation ==
No input/output.


== SuspendSdmmcControl ==
== SuspendSdmmcControl ==
Line 1,395: Line 1,443:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || [[#GetChallenge]]
| 0 || [[#GetChallenge|GetChallenge]]
|-
|-
| 16 || [[#SetToken]]
| 16 || [[#SetToken|SetToken]]
|-
|-
| 32 || [[#OpenSaveDataExporter]]
| 32 || [[#OpenSaveDataExporter|OpenSaveDataExporter]]
|-
|-
| 64 || [[#OpenSaveDataImporter]]
| 64 || [[#OpenSaveDataImporter|OpenSaveDataImporter]]
|}
|}


== GetChallenge ==
== GetChallenge ==
No input/output, takes a type-0x6 output buffer.
Takes a type-0x6 output buffer. No output.


== SetToken ==
== SetToken ==
No input/output, takes a type-0x5 input buffer.
Takes a type-0x5 input buffer. No output.


== OpenSaveDataExporter ==
== OpenSaveDataExporter ==
Takes an input u8 [[#SaveDataSpaceId]] and u64, returns an [[#ISaveDataExporter]].
Takes an input u8 [[#SaveDataSpaceId]] and u64. Returns an [[#ISaveDataExporter]].


== OpenSaveDataImporter ==
== OpenSaveDataImporter ==
Line 1,425: Line 1,473:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || [[#GetChallenge]]
| 0 || [[#GetChallenge|GetChallenge]]
|-
|-
| 16 || [[#SetKeyPackage]]
| 16 || [[#SetKeyPackage|SetKeyPackage]]
|-
|-
| 80 || [[#OpenSaveDataExporterAndGetEncryptedKey]]
| 80 || [[#OpenSaveDataExporterAndGetEncryptedKey|OpenSaveDataExporterAndGetEncryptedKey]]
|-
|-
| 81 || [[#PrepareOpenSaveDataImporter]]
| 81 || [[#PrepareOpenSaveDataImporter|PrepareOpenSaveDataImporter]]
|-
|-
| 90 || [[#OpenSaveDataImporter]]
| 90 || [[#OpenSaveDataImporter_2|OpenSaveDataImporter]]
|-
|-
| 91 || [[#OpenSaveDataImporter2]]
| 91 || [[#OpenSaveDataImporter2|OpenSaveDataImporter2]]
|-
|-
| 100 || [[#OpenSaveDataExporterWithKey]]
| 100 || [[#OpenSaveDataExporterWithKey|OpenSaveDataExporterWithKey]]
|-
|-
| 110 || [[#OpenSaveDataImporterWithKey]]
| 110 || [[#OpenSaveDataImporterWithKey|OpenSaveDataImporterWithKey]]
|}
|}


== SetKeyPackage ==
== SetKeyPackage ==
No input/output, takes a type-0x5 input buffer.
Takes a type-0x5 input buffer. No output.  


== OpenSaveDataExporterAndGetEncryptedKey ==
== OpenSaveDataExporterAndGetEncryptedKey ==
Line 1,449: Line 1,497:


== PrepareOpenSaveDataImporter ==
== PrepareOpenSaveDataImporter ==
Takes a type-0x1A output buffer to receive a RsaEncryptedKey.
Takes a type-0x1A output buffer to receive a RsaEncryptedKey. No output.


== OpenSaveDataImporter ==
== OpenSaveDataImporter ==
Takes a total of 0x18-bytes of input and two type-0x5 input buffers, returns an [[#ISaveDataDivisionImporter]].
Takes a total of 0x18-bytes of input and two type-0x5 input buffers. Returns an [[#ISaveDataDivisionImporter]].


== OpenSaveDataImporter2 ==
== OpenSaveDataImporter2 ==
Takes a total of 0x18-bytes of input and a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]].
Takes a total of 0x18-bytes of input and a type-0x5 input buffer. Returns an [[#ISaveDataDivisionImporter]].


== OpenSaveDataExporterWithKey ==
== OpenSaveDataExporterWithKey ==
Takes a total of 0x20-bytes of input, returns an [[#ISaveDataDivisionExporter]].
Takes a total of 0x20-bytes of input. Returns an [[#ISaveDataDivisionExporter]].


== OpenSaveDataImporterWithKey ==
== OpenSaveDataImporterWithKey ==
Takes a total of 0x28-bytes of input and a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]].
Takes a total of 0x28-bytes of input and a type-0x5 input buffer. Returns an [[#ISaveDataDivisionImporter]].


[17.0.0+] Now only takes 0x18-bytes of input and an additional type-0x5 input buffer.
[17.0.0+] Now only takes 0x18-bytes of input and an additional type-0x5 input buffer.
Line 1,474: Line 1,522:
! Cmd || Name
! Cmd || Name
|-
|-
| 8 || [[#Register]]
| 8 || [[#Register|Register]]
|-
|-
| 16 || [[#Process]]
| 16 || [[#Process|Process]]
|-
|-
| 18 || [[#Cancel]]
| 18 || [[#Cancel|Cancel]]
|}
|}


== Register ==
== Register ==
Takes an input u64, no output.
Takes an input u64. No output.


== Process ==
== Process ==
Takes an input u64, returns an output u64.
Takes an input u64. Returns an output u64.


== Cancel ==
== Cancel ==
Line 1,499: Line 1,547:
! Cmd || Name
! Cmd || Name
|-
|-
| 80 || [[#OpenSaveDataExporter]]
| 80 || [[#OpenSaveDataExporter_2|OpenSaveDataExporter]]
|-
|-
| 90 || [[#OpenSaveDataImporter]]
| 90 || [[#OpenSaveDataImporter_3|OpenSaveDataImporter]]
|}
|}


== OpenSaveDataExporter ==
== OpenSaveDataExporter ==
Takes a total of 0x10-bytes of input, returns an [[#ISaveDataDivisionExporter]].
Takes a total of 0x10-bytes of input. Returns an [[#ISaveDataDivisionExporter]].


== OpenSaveDataImporter ==
== OpenSaveDataImporter ==
Takes 1-byte of input, a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]].
Takes 1-byte of input, a type-0x5 input buffer. Returns an [[#ISaveDataDivisionImporter]].


= ISaveDataExporter =
= ISaveDataExporter =
Line 1,519: Line 1,567:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || [[#GetSaveDataInfo]]
| 0 || [[#GetSaveDataInfo|GetSaveDataInfo]]
|-
|-
| 1 || [[#GetRestSize]]
| 1 || [[#GetRestSize|GetRestSize]]
|-
|-
| 16 || [[#Pull]]
| 16 || [[#Pull|Pull]]
|-
|-
| 17 || [[#PullInitialData]]
| 17 || [[#PullInitialData|PullInitialData]]
|}
|}


== GetSaveDataInfo ==
== GetSaveDataInfo ==
No input/output, takes a type-0x1A [[#SaveDataInfo]] output buffer.
Takes a type-0x1A [[#SaveDataInfo]] output buffer. No output.


The actual name for this is the SaveDataExporter constructor. This is used automatically after [[#OpenSaveDataExporter]] by official sw.
The actual name for this is the SaveDataExporter constructor. This is used automatically after [[#OpenSaveDataExporter]] by official sw.


== GetRestSize ==
== GetRestSize ==
No input, returns an output u64.
No input. Returns an output u64.


== Pull ==
== Pull ==
Takes a type-0x6 output buffer, returns an output u64.
Takes a type-0x6 output buffer. Returns an output u64.


== PullInitialData ==
== PullInitialData ==
No input/output, takes a type-0x6 output buffer.
Takes a type-0x6 output buffer. No output.


= ISaveDataImporter =
= ISaveDataImporter =
Line 1,551: Line 1,599:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || [[#GetSaveDataInfo]]
| 0 || [[#GetSaveDataInfo_2|GetSaveDataInfo]]
|-
|-
| 1 || [[#GetRestSize]]
| 1 || [[#GetRestSize_2|GetRestSize]]
|-
|-
| 16 || [[#Push]]
| 16 || [[#Push|Push]]
|-
|-
| 17 || [[#Finalize]]
| 17 || [[#Finalize|Finalize]]
|}
|}


== GetSaveDataInfo ==
== GetSaveDataInfo ==
No input/output, takes a type-0x1A [[#GetSaveDataInfo]] output buffer.
Takes a type-0x1A [[#GetSaveDataInfo]] output buffer. No output.


The actual name for this is the SaveDataImporter constructor. This is used automatically after [[#OpenSaveDataImporter]] by official sw.
The actual name for this is the SaveDataImporter constructor. This is used automatically after [[#OpenSaveDataImporter]] by official sw.


== GetRestSize ==
== GetRestSize ==
No input, returns an output u64.
No input. Returns an output u64.


== Push ==
== Push ==
No input/output, takes a type-0x5 input buffer.
Takes a type-0x5 input buffer. No output.


== Finalize ==
== Finalize ==
Line 1,583: Line 1,631:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || [[#GetChallenge]]
| 0 || [[#GetChallenge_2|GetChallenge]]
|-
|-
| 8 || [18.0.0+] SetMode
| 8 || [18.0.0+] SetMode
Line 1,589: Line 1,637:
| 9 || [18.0.0+] SetAttribute
| 9 || [18.0.0+] SetAttribute
|-
|-
| 16 || [[#SetKeySeedPackage]]
| 16 || [[#SetKeySeedPackage_2|SetKeySeedPackage]]
|-
|-
| 17 || [20.0.0+] SetLocalKeySeedPackage
| 17 || [20.0.0+] [[#SetLocalKeySeedPackage|SetLocalKeySeedPackage]]
|-
|-
| 32 || [[#OpenSaveDataExporter]]
| 32 || [[#OpenSaveDataExporter_3|OpenSaveDataExporter]]
|-
|-
| 33 || [[#OpenSaveDataExporterForDiffExport]]
| 33 || [[#OpenSaveDataExporterForDiffExport|OpenSaveDataExporterForDiffExport]]
|-
|-
| 34 || [6.0.0+] [[#OpenSaveDataExporterByContext]]
| 34 || [6.0.0+] [[#OpenSaveDataExporterByContext|OpenSaveDataExporterByContext]]
|-
|-
| 63 || [17.0.0+] OpenSaveDataImporter
| 63 || [17.0.0+] [[#OpenSaveDataImporter_4|OpenSaveDataImporter]]
|-
|-
| 64 || [6.0.0-17.0.1] [[#OpenSaveDataImporterDeprecated]] ([5.0.0-5.1.0] OpenSaveDataImporter)
| 64 || [6.0.0-17.0.1] [[#OpenSaveDataImporterDeprecated|OpenSaveDataImporterDeprecated]] ([5.0.0-5.1.0] OpenSaveDataImporter)
|-
|-
| 65 || [5.0.0-17.0.1] [[#OpenSaveDataImporterForDiffImport]]
| 65 || [5.0.0-17.0.1] [[#OpenSaveDataImporterForDiffImport|OpenSaveDataImporterForDiffImport]]
|-
|-
| 66 || [6.0.0-17.0.1] [[#OpenSaveDataImporterForDuplicateDiffImport]]
| 66 || [6.0.0-17.0.1] [[#OpenSaveDataImporterForDuplicateDiffImport|OpenSaveDataImporterForDuplicateDiffImport]]
|-
|-
| 67 || [6.0.0-16.1.0] [[#OpenSaveDataImporter]]
| 67 || [6.0.0-16.1.0] [[#OpenSaveDataImporter_5|OpenSaveDataImporter]]
|-
|-
| 68 || [6.0.0+] [[#OpenSaveDataImporterByContext]]
| 68 || [6.0.0+] [[#OpenSaveDataImporterByContext|OpenSaveDataImporterByContext]]
|-
|-
| 69 || [6.0.0+] [[#CancelSuspendingImport]]
| 69 || [6.0.0+] [[#CancelSuspendingImport|CancelSuspendingImport]]
|-
|-
| 70 || [10.0.0+] CancelSuspendingImportByAttribute
| 70 || [10.0.0+] CancelSuspendingImportByAttribute
Line 1,619: Line 1,667:


== GetChallenge ==
== GetChallenge ==
No input/output, takes a type-0x6 output buffer containing the '''Challenge'''.
Takes a type-0x6 output buffer containing the '''Challenge'''. No output.


== SetKeySeedPackage ==
== SetKeySeedPackage ==
No input/output, takes a type-0x5 input buffer containing the '''KeySeedPackage'''.
Takes a type-0x5 input buffer containing the '''KeySeedPackage'''. No output.
 
== SetLocalKeySeedPackage ==
Takes a type-0x5 input buffer containing a [[#LocalKeySeedPackage|LocalKeySeedPackage]]. No output.
 
This can only be used after [[#SetKeySeedPackage]], in certain conditions.


== OpenSaveDataExporter ==
== OpenSaveDataExporter ==
Line 1,631: Line 1,684:


== OpenSaveDataExporterByContext ==
== OpenSaveDataExporterByContext ==
No input/output, takes a type-0x5 input buffer, returns an [[#ISaveDataDivisionExporter]].
Takes a type-0x5 input buffer. Returns an [[#ISaveDataDivisionExporter]].
 
== OpenSaveDataImporter ==
Takes an input u8 [[#SaveDataSpaceId]], a type-0x19 input buffer containing a [[#SaveDataCreationInfo2]] and a type-0x5 input buffer containing an [[#InitialDataVersion2]]. Returns an [[#ISaveDataDivisionImporter]].


== OpenSaveDataImporterDeprecated ==
== OpenSaveDataImporterDeprecated ==
Takes an input u8 [[#SaveDataSpaceId]], a 0x10-byte userID, and a type-0x5 input buffer [[#InitialDataVersion2]]. Returns an [[#ISaveDataDivisionImporter]].
Takes an input u8 [[#SaveDataSpaceId]], a 0x10-byte userID, and a type-0x5 input buffer containing an [[#InitialDataVersion2]]. Returns an [[#ISaveDataDivisionImporter]].


== OpenSaveDataImporterForDiffImport ==
== OpenSaveDataImporterForDiffImport ==
Takes an input u8 [[#SaveDataSpaceId]], an u64, and a type-0x5 input buffer [[#InitialDataVersion2]], returns an [[#ISaveDataDivisionImporter]].
Takes an input u8 [[#SaveDataSpaceId]], an u64, and a type-0x5 input buffer [[#InitialDataVersion2]]. Returns an [[#ISaveDataDivisionImporter]].


== OpenSaveDataImporterForDuplicateDiffImport ==
== OpenSaveDataImporterForDuplicateDiffImport ==
Takes an input u8 and an u64, and a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]].
Takes an input u8 and an u64, and a type-0x5 input buffer. Returns an [[#ISaveDataDivisionImporter]].


== OpenSaveDataImporter ==
== OpenSaveDataImporter ==
Takes an input u8, an u8(bool), a 0x10-byte struct, and a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]].
Takes an input u8, an u8(bool), a 0x10-byte struct, and a type-0x5 input buffer. Returns an [[#ISaveDataDivisionImporter]].


== OpenSaveDataImporterByContext ==
== OpenSaveDataImporterByContext ==
No input/output, takes a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]].
No input/output, takes a type-0x5 input buffer. Returns an [[#ISaveDataDivisionImporter]].


== CancelSuspendingImport ==
== CancelSuspendingImport ==
Takes an input u64 and a 0x10-byte struct, no output.
Takes an input u64 and a 0x10-byte struct. No output.


= ISaveDataDivisionExporter =
= ISaveDataDivisionExporter =
Line 1,660: Line 1,716:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || [[#SetDivisionCount]]
| 0 || [[#SetDivisionCount|SetDivisionCount]]
|-
|-
| 1 || [6.0.0+] [[#ReadSaveDataExtraData]]
| 1 || [6.0.0+] [[#ReadSaveDataExtraData|ReadSaveDataExtraData]]
|-
|-
| 16 || [[#OpenSaveDataDiffChunkIterator]]
| 16 || [[#OpenSaveDataDiffChunkIterator|OpenSaveDataDiffChunkIterator]]
|-
|-
| 48 || [[#OpenSaveDataChunkExporter]]
| 48 || [[#OpenSaveDataChunkExporter|OpenSaveDataChunkExporter]]
|-
|-
| 64 || [6.0.0-8.1.0] [[#FinalizeFullExport]]
| 64 || [6.0.0-8.1.0] [[#FinalizeFullExport|FinalizeFullExport]]
|-
|-
| 65 || [6.0.0-8.1.0] [[#FinalizeDiffExport]]
| 65 || [6.0.0-8.1.0] [[#FinalizeDiffExport|FinalizeDiffExport]]
|-
|-
| 66 || [6.0.0+] [[#CancelExport]]
| 66 || [6.0.0+] [[#CancelExport|CancelExport]]
|-
|-
| 67 || [6.0.0+] [[#SuspendExport]]
| 67 || [6.0.0+] [[#SuspendExport|SuspendExport]]
|-
|-
| 70 || [6.0.0-17.0.1] [[#GetKeySeed]]
| 70 || [6.0.0-17.0.1] [[#GetKeySeed|GetKeySeed]]
|-
|-
| 71 || [6.0.0+] [[#GetInitialDataMac]]
| 71 || [6.0.0+] [[#GetInitialDataMac|GetInitialDataMac]]
|-
|-
| 72 || [6.0.0+] [[#FinalizeExport]]
| 72 || [6.0.0+] [[#FinalizeExport|FinalizeExport]]
|-
|-
| 73 || [9.0.0+] [[#GetInitialDataMacKeyGeneration]]
| 73 || [9.0.0+] [[#GetInitialDataMacKeyGeneration|GetInitialDataMacKeyGeneration]]
|-
|-
| 74 || [18.0.0+] [[#GetKeySeed]]
| 74 || [18.0.0+] [[#GetKeySeed|GetKeySeed]]
|-
|-
| 75 || [20.0.0+] GetLocalKeySeedPackage
| 75 || [20.0.0+] GetLocalKeySeedPackage
|-
|-
| 80 || [6.0.0+] [[#GetImportInitialDataAad]]
| 80 || [6.0.0+] [[#GetImportInitialDataAad|GetImportInitialDataAad]]
|-
|-
| 81 || [6.0.0+] [[#SetExportInitialDataAad]]
| 81 || [6.0.0+] [[#SetExportInitialDataAad|SetExportInitialDataAad]]
|-
|-
| 96 || [6.0.0+] [[#GetReportInfo]]
| 96 || [6.0.0+] [[#GetReportInfo|GetReportInfo]]
|}
|}


== SetDivisionCount ==
== SetDivisionCount ==
Takes an input u32, no output.
Takes an input u32. No output.


== OpenSaveDataChunkExporter ==
== OpenSaveDataChunkExporter ==
Takes an input u32, returns an [[#ISaveDataChunkExporter]].
Takes an input u32. Returns an [[#ISaveDataChunkExporter]].


== FinalizeFullExport ==
== FinalizeFullExport ==
No input, returns two 0x10-byte output structs.
No input. Returns two 0x10-byte output structs.


== FinalizeDiffExport ==
== FinalizeDiffExport ==
No input, returns an output 0x10-byte struct.
No input. Returns an output 0x10-byte struct.


== CancelExport ==
== CancelExport ==
Line 1,711: Line 1,767:


== SuspendExport ==
== SuspendExport ==
No input/output, takes a type-0x6 output buffer.
Takes a type-0x6 output buffer. No output.


== GetKeySeed ==
== GetKeySeed ==
No input, returns an output 0x10-byte struct.
No input. Returns an output 0x10-byte struct.


== GetInitialDataMac ==
== GetInitialDataMac ==
No input, returns an output 0x10-byte struct.
No input. Returns an output 0x10-byte struct.


== FinalizeExport ==
== FinalizeExport ==
Line 1,723: Line 1,779:


== SetExportInitialDataAad ==
== SetExportInitialDataAad ==
Takes an input 0x20-byte struct, no output.
Takes an input 0x20-byte struct. No output.


= ISaveDataDivisionImporter =
= ISaveDataDivisionImporter =
Line 1,734: Line 1,790:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || [6.0.0+] [[#ReadSaveDataExtraData]]
| 0 || [6.0.0+] [[#ReadSaveDataExtraData_2|ReadSaveDataExtraData]]
|-
|-
| 16 || [[#OpenSaveDataDiffChunkIterator]]
| 16 || [[#OpenSaveDataDiffChunkIterator_2|OpenSaveDataDiffChunkIterator]]
|-
|-
| 32 || [[#InitializeImport]]
| 32 || [[#InitializeImport|InitializeImport]]
|-
|-
| 33 || [[#FinalizeImport]]
| 33 || [[#FinalizeImport|FinalizeImport]]
|-
|-
| 34 || [6.0.0+] [[#CancelImport]]
| 34 || [6.0.0+] [[#CancelImport|CancelImport]]
|-
|-
| 35 || [6.0.0+] [[#GetImportContext]]
| 35 || [6.0.0+] [[#GetImportContext|GetImportContext]]
|-
|-
| 36 || [6.0.0+] [[#SuspendImport]]
| 36 || [6.0.0+] [[#SuspendImport|SuspendImport]]
|-
|-
| 37 || [11.0.0+] FinalizeImportWithoutSwap
| 37 || [11.0.0+] FinalizeImportWithoutSwap
|-
|-
| 48 || [[#OpenSaveDataChunkImporter]]
| 48 || [[#OpenSaveDataChunkImporter|OpenSaveDataChunkImporter]]
|-
|-
| 64 || [6.0.0+] [[#GetImportInitialDataAad]]
| 64 || [6.0.0+] [[#GetImportInitialDataAad|GetImportInitialDataAad]]
|-
|-
| 80 || [6.0.0+] [[#GetReportInfo]]
| 80 || [6.0.0+] [[#GetReportInfo_2|GetReportInfo]]
|}
|}


== ReadSaveDataExtraData ==
== ReadSaveDataExtraData ==
No input/output, takes a type-0x6 output buffer.
Takes a type-0x6 output buffer. No output.


== OpenSaveDataDiffChunkIterator ==
== OpenSaveDataDiffChunkIterator ==
No input, returns an [[#ISaveDataChunkIterator]].
No input. Returns an [[#ISaveDataChunkIterator]].


== InitializeImport ==
== InitializeImport ==
No input, returns an output u64.
No input. Returns an output u64.


== FinalizeImport ==
== FinalizeImport ==
Line 1,773: Line 1,829:


== GetImportContext ==
== GetImportContext ==
No input/output, takes a type-0x6 output buffer.
Takes a type-0x6 output buffer. No output.


== SuspendImport ==
== SuspendImport ==
Line 1,779: Line 1,835:


== OpenSaveDataChunkImporter ==
== OpenSaveDataChunkImporter ==
Takes an input u32, returns an [[#ISaveDataChunkImporter]].
Takes an input u32. Returns an [[#ISaveDataChunkImporter]].


== GetImportInitialDataAad ==  
== GetImportInitialDataAad ==  
No input, returns an output 0x20-byte struct.
No input. Returns an output 0x20-byte struct.


== GetReportInfo ==
== GetReportInfo ==
No input, returns an output 0x20-byte struct.
No input. Returns an output 0x20-byte struct.


= ISaveDataChunkIterator =
= ISaveDataChunkIterator =
Line 1,796: Line 1,852:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || [[#Next]]
| 0 || [[#Next|Next]]
|-
|-
| 1 || [[#IsEnd]]  
| 1 || [[#IsEnd|IsEnd]]  
|-
|-
| 16 || [[#GetId]]  
| 16 || [[#GetId|GetId]]  
|}
|}


Line 1,807: Line 1,863:


== IsEnd ==
== IsEnd ==
No input, returns an output u8.
No input. Returns an output u8.


== GetId ==
== GetId ==
No input, returns an output u32.
No input. Returns an output u32.


= ISaveDataChunkExporter =
= ISaveDataChunkExporter =
Line 1,821: Line 1,877:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || [[#Pull]]
| 0 || [[#Pull_2|Pull]]
|-
|-
| 16 || [6.0.0+] [[#GetRestRawDataSize]]
| 16 || [6.0.0+] [[#GetRestRawDataSize|GetRestRawDataSize]]
|}
|}


== Pull ==
== Pull ==
Takes an input u64 and a type-0x6 output buffer, returns an output u64.
Takes an input u64 and a type-0x6 output buffer. Returns an output u64.


== GetRestRawDataSize ==
== GetRestRawDataSize ==
No input, returns an output u64.
No input. Returns an output u64.


= ISaveDataChunkImporter =
= ISaveDataChunkImporter =
Line 1,841: Line 1,897:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || [[#Push]]
| 0 || [[#Push_2|Push]]
|}
|}


== Push ==
== Push ==
Takes an input u64 and a type-0x5 input buffer, no output.
Takes an input u64 and a type-0x5 input buffer. No output.


= ISaveDataTransferProhibiter =
= ISaveDataTransferProhibiter =
Line 1,854: Line 1,910:
This doesn't seem to handle any commands (?).
This doesn't seem to handle any commands (?).


= IMultiCommitManager =
= IMemoryStressor =
This is "nn::fssrv::sf::IMultiCommitManager".
This is "nn::fssrv::sf::IMemoryStressor".


This was added with [6.0.0+].
This was added with [18.0.0+].


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 1,863: Line 1,919:
! Cmd || Name
! Cmd || Name
|-
|-
| 1 || [[#Add]]
| 1 || [[#SetPooledBufferFreeSize]]
|-
|}
| 2 || [[#Commit]]
 
== SetPooledBufferFreeSize ==
Takes an input u32. No output.
 
= IMultiCommitManager =
This is "nn::fssrv::sf::IMultiCommitManager".
 
This was added with [6.0.0+].
 
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 1 || [[#Add]]
|-
| 2 || [[#Commit]]
|}
|}


Line 1,924: Line 1,995:


== OpenDevice ==
== OpenDevice ==
Returns an [[IStorageDevice]].
Returns an [[#IStorageDevice]].
 
== OpenStorage ==
== OpenStorage ==
Returns an [[IStorage]].
Returns an [[#IStorage]].


= IStorageDeviceOperator =
= IStorageDeviceOperator =
Line 1,999: Line 2,071:
| 8 || [4.0.0+] RegisteredUpdate
| 8 || [4.0.0+] RegisteredUpdate
|}
|}
sdknso converts the input [[#ContentType|ContentType]] to a FileSystemProxyType, for use with the cmd input.


= ContentType =
= ContentType =
Line 2,026: Line 2,100:
|-
|-
| 0 || None
| 0 || None
|-
| 1 || [S2]
|-
|-
| 15 || All
| 15 || All
Line 2,045: Line 2,121:
| 3 || [16.0.0+] System0
| 3 || [16.0.0+] System0
|}
|}
= UserId =
This is "nn::fs::UserId". This is a 0x10-byte struct.
= HashSalt =
This is "nn::fs::HashSalt". This is a 0x20-byte struct.
= SaveDataId =
This is "nn::fs::SaveDataId". This is an u64.
= StaticSaveDataId =
This is "nn::fs::StaticSaveDataId". This is an u64.
= SystemSaveDataId =
This is "nn::fs::SystemSaveDataId". This is an u64.
= SystemBcatSaveDataId =
This is "nn::fs::SystemBcatSaveDataId". This is an u64.
= SaveDataReferenceId =
This is "nn::fs::SaveDataReferenceId". This is an u64.


= SaveDataSpaceId =
= SaveDataSpaceId =
Line 2,066: Line 2,163:
|-
|-
| 101 || [3.0.0+] SafeMode
| 101 || [3.0.0+] SafeMode
|-
| 102 || [?+] ProperUser
|}
|}


Line 2,144: Line 2,243:
|}
|}


= ImageDirectoryId =
= SaveDataMetaInfo =
This is "nn::fs::ImageDirectoryId".
This is "nn::fs::SaveDataMetaInfo".


{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Value || Name
! Offset
! Size
! Description
|-
|-
| 0 || Nand
| 0x0
| 0x4
| Size
|-
|-
| 1 || SdCard
| 0x4
| 0x1
| [[#SaveDataMetaType|Type]]
|-
| 0x5
| 0xB
| Reserved
|}
 
= ImageDirectoryId =
This is "nn::fs::ImageDirectoryId".
 
{| class="wikitable" border="1"
|-
! Value || Name
|-
| 0 || Nand
|-
| 1 || SdCard
|}
|}


Line 2,289: Line 2,410:
| 33 || SystemProperPartition
| 33 || SystemProperPartition
|-
|-
| 34 || SignedSystemPartitionOnSafeMode
| 34 || [-?] SignedSystemPartitionOnSafeMode
|-
|-
| 35 || [16.0.0+] DeviceTreeBlob
| 35 || [16.0.0+] DeviceTreeBlob
|-
|-
| 36 || [16.0.0+] System0
| 36 || [16.0.0+] System0
|-
| 37 || System2
|-
| 38 || [?+] System3
|-
| 39 || [21.0.0+] UserProperPartition
|}
|}
System2 is not supported by FS, perhaps removed at some point?


= SdCardSpeedMode =
= SdCardSpeedMode =
Line 2,368: Line 2,497:
| 0xC
| 0xC
|  
|  
|}
= SdCardActivationMode =
This is "nn::fs::SdCardActivationMode".
{| class="wikitable" border="1"
|-
! Value || Name
|-
| 0 ||
|}
|}


Line 3,045: Line 3,184:
| 0x0
| 0x0
| 0x8
| 0x8
| [[NCM_services#ApplicationId|ApplicationId]] (0 for SystemSaveData)</br>SaveData: 0 can be used for accessing the savedata associated with the current FS session [[NCM_services#ApplicationId|ApplicationId]], otherwise when set this is the [[NCM_services#ApplicationId|ApplicationId]] associated with the savedata to access.
| [[#SaveDataReferenceId|ReferenceId]] (0 for SystemSaveData; SaveData: 0 can be used for accessing the savedata associated with the current FS session [[NCM_services#ApplicationId|ApplicationId]], otherwise when set this is the [[NCM_services#ApplicationId|ApplicationId]] associated with the savedata to access)
|-
|-
| 0x8
| 0x8
| 0x10
| 0x10
| UserId</br>For user-specific savedata(saveuser) when set, otherwise when zero this indicates the common savedata(savecommon). This is loaded from [[Account_services]].
| [[#UserId|UserId]] (for user-specific savedata(saveuser) when set, otherwise when zero this indicates the common savedata(savecommon); this is loaded from [[Account_services]])
|-
|-
| 0x18
| 0x18
| 0x8
| 0x8
| [[Flash_Filesystem|SystemSaveDataId]] (0 for SaveData)
| [[#StaticSaveDataId|StaticSaveDataId]] (0 for SaveData)
|-
|-
| 0x20
| 0x20
| 0x1
| 0x1
| [[#SaveDataType]]
| [[#SaveDataType|Type]]
|-
|-
| 0x21
| 0x21
| 0x1
| 0x1
| [[#SaveDataRank]]
| [[#SaveDataRank|Rank]]
|-
|-
| 0x22
| 0x22
| 0x2
| 0x2
| SaveDataIndex
| Index
|-
|-
| 0x24
| 0x24
| 0x4
| 0x1C
| Padding
| Reserved
|-
|}
| 0x28
 
| 0x8
For DeviceSaveData, this struct is all-zero except for the [[#SaveDataType]] field (and optionally the ApplicationId if specified).
| 0 for SystemSaveData/SaveData.
|-
| 0x30
| 0x8
| 0 for SystemSaveData/SaveData.
|-
| 0x38
| 0x8
| 0 for SystemSaveData/SaveData.
|}
 
Total size is 0x40-bytes.
 
For DeviceSaveData, this struct is all-zero except for the [[#SaveDataType]] field (and optionally the ApplicationId if specified).


= SaveDataCreationInfo =
= SaveDataCreationInfo =
Line 3,099: Line 3,224:
| 0x0
| 0x0
| 0x8
| 0x8
| SaveDataSize
| Size
|-
|-
| 0x8
| 0x8
Line 3,107: Line 3,232:
| 0x10
| 0x10
| 0x8
| 0x8
| AvailableSize</br>0x4000 for SystemSaveData/SaveData/DeviceSaveData/BcatSaveData.
| BlockSize (0x4000 for SystemSaveData/SaveData/DeviceSaveData/BcatSaveData)
|-
|-
| 0x18
| 0x18
| 0x8
| 0x8
| OwnerId</br>Official user-processes only uses 0 here for SystemSaveData/SaveData. For the dedicated save-creation code with SaveData/DeviceSaveData, this value comes from an input param with official user-processes. For BcatSaveData, this is the hard-coded [[NCM_services#ProgramId|ProgramId]] of the bcat-sysmodule.
| OwnerId (official user-processes only uses 0 here for SystemSaveData/SaveData; for the dedicated save-creation code with SaveData/DeviceSaveData, this value comes from an input param with official user-processes; for BcatSaveData, this is the hard-coded [[NCM_services#ProgramId|ProgramId]] of the bcat-sysmodule)
|-
|-
| 0x20
| 0x20
| 0x4
| 0x4
| [[#SaveDataFlags]]</br>Written using an input param for official user-processes. Hard-coded 0 for BcatSaveData.
| [[#SaveDataFlags|Flags]] (written using an input param for official user-processes; hard-coded 0 for BcatSaveData)
|-
|-
| 0x24
| 0x24
| 0x1
| 0x1
| [[#SaveDataSpaceId]]</br>Official user-processes only uses 0 here for SystemSaveData, 1 for SaveData/DeviceSaveData/BcatSaveData.
| [[#SaveDataSpaceId|SpaceId]] (Official user-processes only uses 0 here for SystemSaveData, 1 for SaveData/DeviceSaveData/BcatSaveData)
|-
|-
| 0x25
| 0x25
| 0x1
| 0x1
| Unknown. 0 for SystemSaveData/SaveData.
| IsPseudoSaveFs (0 for SystemSaveData/SaveData)
|-
|-
| 0x26
| 0x26
| 0x1A
| 0x1A
| Not initialized for SystemSaveData/SaveData.
| Reserved
|}
|}


Total size is 0x40-bytes.
= SaveDataCreationInfo2 =
 
This is "nn::fs::SaveDataCreationInfo2".
= DeviceSaveData =
This is accessed using the same commands for SaveData with the same input u8, the only difference compared to SaveData is the [[#SaveDataAttribute]].
 
= BcatSaveData =
This is accessed using the same commands for SaveData with the same input u8. The [[#SaveDataAttribute]] is the same as DeviceSaveData (besides the SaveDataType), except that the [[NCM_services#ApplicationId|ApplicationId]] field is always set to <input ApplicationId> (unlike DeviceSaveData where it's optional). See above regarding [[#SaveDataCreationInfo]].
 
The 0x10-byte struct passed to [[#CreateSaveDataFileSystem]] has the first 0x5-bytes set to all-zero.
 
MountSystemBcatSaveData uses [[#OpenSaveDataFileSystemBySystemSaveDataId]] with [[#SaveDataSpaceId]] System. The [[#SaveDataAttribute]] is all-zero, except for the SaveDataType, and SystemSaveDataId is set to the input param.
 
= SaveDataInfo =
This is "nn::fs::SaveDataInfo".


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 3,152: Line 3,265:
|-
|-
| 0x0
| 0x0
| 0x4
| Version
|-
| 0x4
| 0x4
| Reserved
|-
| 0x8
| 0x8
| SaveDataId
| 0x40
| [[#SaveDataAttribute|Attribute]]
|-
|-
| 0x48
| 0x8
| 0x8
| 0x1
| Size
| [[#SaveDataSpaceId]]
|-
|-
| 0x9
| 0x50
| 0x1
| [[#SaveDataType]]
|-
| 0xA
| 0x6
| Padding?
|-
| 0x10
| 0x10
| UserId
|-
| 0x20
| 0x8
| 0x8
| SystemSaveDataId (0 for regular SaveData)
| JournalSize
|-
|-
| 0x28
| 0x58
| 0x8
| 0x8
| [[NCM_services#ApplicationId|ApplicationId]] (for regular SaveData)
| BlockSize
|-
|-
| 0x30
| 0x60
| 0x8
| 0x8
| Raw saveimage size
| OwnerId
|-
|-
| 0x38
| 0x68
| 0x2
| 0x4
| SaveDataIndex
| Flags
|-
|-
| 0x3A
| 0x6C
| 0x1
| 0x1
| [[#SaveDataRank]]
| [[#SaveDataSpaceId|SpaceId]]
|-
|-
| 0x3B
| 0x6D
| 0x25
| 0x1
| Unknown. Usually zeros?
| [[#SaveDataFormatType|FormatType]]
|}
 
This is a 0x60-byte struct.
 
= SaveDataFileSystemExtraData =
This is a 0x200-byte struct. Appears to match [[Savegames#Extra_data]].
 
= InitialDataVersion2 =
This is a 0x8210-byte struct used by [[#ISaveDataTransferManagerWithDivision]].
 
= FsAccessControlRestrictionMode =
This is "nn::fs::FsAccessControlRestrictionMode".
 
{| class="wikitable" border="1"
|-
|-
! Value || Name
| 0x6E
| 0x2
| Reserved
|-
|-
| 0 ||  
| 0x70
| 0x1
| IsHashSaltSpecified
|-
| 0x71
| 0x3
| Reserved
|-
| 0x74
| 0x20
| [[#HashSalt|HashSalt]]
|-
| 0x94
| 0x1
| [[#SaveDataMetaType|MetaType]]
|-
| 0x95
| 0x3
| Reserved
|-
| 0x98
| 0x4
| MetaSize
|-
| 0x9C
| 0x160
| Reserved
|}
|}
= SaveDataInfo =
This is "nn::fs::SaveDataInfo".
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0
| 0x8
| SaveDataId
|-
| 0x8
| 0x1
| [[#SaveDataSpaceId|SaveDataSpaceId]]
|-
| 0x9
| 0x1
| [[#SaveDataType|SaveDataType]]
|-
| 0xA
| 0x6
| Reserved
|-
| 0x10
| 0x10
| SaveDataUserId
|-
| 0x20
| 0x8
| SystemSaveDataId (0 for regular SaveData)
|-
| 0x28
| 0x8
| [[NCM_services#ApplicationId|ApplicationId]] (for regular SaveData)
|-
| 0x30
| 0x8
| SaveDataSize
|-
| 0x38
| 0x2
| Index
|-
| 0x3A
| 0x1
| [[#SaveDataRank|Rank]]
|-
| 0x3B
| 0x1
| State
|-
| 0x3C
| 0x24
| Reserved
|}
= SaveDataExtraData =
This is "nn::fs::SaveDataExtraData".
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0
| 0x40
| [[#SaveDataAttribute|Attribute]]
|-
| 0x40
| 0x8
| OwnerId
|-
| 0x48
| 0x8
| TimeStamp
|-
| 0x50
| 0x4
| Flags
|-
| 0x54
| 0x4
| Reserved
|-
| 0x58
| 0x8
| AvailableSize
|-
| 0x60
| 0x8
| JournalSize
|-
| 0x68
| 0x8
| CommitId
|-
| 0x70
| 0x190
| Reserved
|}
= SaveDataFilter =
This is "nn::fs::SaveDataFilter".
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0
| 0x1
| FilterApplicationId
|-
| 0x1
| 0x1
| FilterSaveDataType
|-
| 0x2
| 0x1
| FilterSaveDataUserId
|-
| 0x3
| 0x1
| FilterStaticSaveDataId
|-
| 0x4
| 0x1
| FilterIndex
|-
| 0x5
| 0x1
| Option
|-
| 0x6
| 0x2
| Reserved
|-
| 0x8
| 0x40
| [[#SaveDataAttribute|Attribute]]
|}
= InitialDataVersion2 =
This is a 0x2000-byte struct used by [[#ISaveDataTransferManagerWithDivision]].
= LocalKeySeedPackage =
This is "nn::fs::LocalKeySeedPackage".
This is a 0x200-byte ([S2] 0x280-byte) struct.
= FsAccessControlRestrictionMode =
This is "nn::fs::FsAccessControlRestrictionMode".
{| class="wikitable" border="1"
|-
! Value || Name
|-
| 0 ||
|}
= Notes =
== DeviceSaveData ==
This is accessed using the same commands for SaveData with the same input u8, the only difference compared to SaveData is the [[#SaveDataAttribute]].
== BcatSaveData ==
This is accessed using the same commands for SaveData with the same input u8. The [[#SaveDataAttribute]] is the same as DeviceSaveData (besides the SaveDataType), except that the [[NCM_services#ApplicationId|ApplicationId]] field is always set to <input ApplicationId> (unlike DeviceSaveData where it's optional). See above regarding [[#SaveDataCreationInfo]].
The 0x10-byte struct passed to [[#CreateSaveDataFileSystem]] has the first 0x5-bytes set to all-zero.
MountSystemBcatSaveData uses [[#OpenSaveDataFileSystemBySystemSaveDataId]] with [[#SaveDataSpaceId]] System. The [[#SaveDataAttribute]] is all-zero, except for the SaveDataType, and SystemSaveDataId is set to the input param.


[[Category:Services]]
[[Category:Services]]