Filesystem services: Difference between revisions

No edit summary
Ootulp (talk | contribs)
 
(25 intermediate revisions by 4 users not shown)
Line 16: Line 16:
Takes a type-0x19 input buffer containing a [[#FspPath]] and an input [[NCM_services#ProgramId|ProgramId]]. Returns an [[#IFileSystem]].
Takes a type-0x19 input buffer containing a [[#FspPath]] and an input [[NCM_services#ProgramId|ProgramId]]. Returns an [[#IFileSystem]].


[10.0.0+] This now takes an additional type-0x1A output buffer.
[10.0.0+] Now takes an additional type-0x1A output buffer.


[16.0.0+] This now takes an additional input [[#ContentAttributes]].
[16.0.0+] Now takes an additional input [[#ContentAttributes]].


[17.0.0+] This now takes a type-0x6 output buffer instead of a type-0x1A output buffer.
[17.0.0+] Now takes a type-0x6 output buffer instead of a type-0x1A output buffer.
 
[20.0.0+] Now no longer takes a type-0x19 input buffer containing a [[#FspPath]] and instead takes an input [[NCM_services#StorageId|StorageId]].


== IsArchivedProgram ==
== IsArchivedProgram ==
Line 45: Line 47:


== RegisterProgram ==
== RegisterProgram ==
Takes a [[NCM_services#StorageId|StorageId]], an u64 ProcessId, a [[NCM_services#ProgramId|ProgramId]], a 0x1C type-A buffer for the [[NPDM#FS_Access_Header| FS Access Header]], and a 0x2C type-A buffer for the [[NPDM#FS_Access_Control| FS Access Control]]
Takes an input [[NCM_services#StorageId|StorageId]], an input u64 ProcessId, an input [[NCM_services#ProgramId|ProgramId]], a type-0x5 input buffer containing an [[NPDM#ACID|ACID]] [[NPDM#FsAccessControl|FsAccessControl]], and a type-0x5 input buffer containing an [[NPDM#ACI0|ACI0]] [[NPDM#FsAccessControl|FsAccessControl]].


Final FS permissions are stored as (ACI0_perms & ACID_perms). Will panic(svcBreak) when buffer sizes from ipc-rawdata are invalid.
Final FS permissions are stored as (ACI0_perms & ACID_perms). Will panic(svcBreak) when buffer sizes from ipc-rawdata are invalid.
[20.0.0+] Now takes an additional input [[#FsAccessControlRestrictionMode]].


== UnregisterProgram ==
== UnregisterProgram ==
Takes a pid. Removes registered FS permissions for that PID.
Takes an input u64 ProcessId. No output.
 
Removes registered FS permissions for that PID.


== SetEnabledProgramVerification ==
== SetEnabledProgramVerification ==
Seems to sets a global flag to inputval & 1.
Takes an input bool. No output.


When the flag is zero, it will set ret=0 instead of ret={error} when verifying the fixed-key [[NPDM]] ACID signature fails. This also skips verifying the [[NCA_Format|NCA Header]] signature using the ACID key. Note that if verifying the fixed-key ACID signature is successful, and verifying the ACID-key NCA header signature fails, it will throw an error and abort.
When the flag is zero, it will set ret=0 instead of ret={error} when verifying the fixed-key [[NPDM]] ACID signature fails. This also skips verifying the [[NCA_Format|NCA Header]] signature using the ACID key. Note that if verifying the fixed-key ACID signature is successful, and verifying the ACID-key NCA header signature fails, it will throw an error and abort.
Line 107: Line 113:
|-
|-
| 28 || [4.0.0+] DeleteSaveDataFileSystemBySaveDataAttribute
| 28 || [4.0.0+] DeleteSaveDataFileSystemBySaveDataAttribute
|-
| 29 || [19.0.0+] IsInitializationMode
|-
|-
| 30 || [[#OpenGameCardStorage]]
| 30 || [[#OpenGameCardStorage]]
Line 123: Line 131:
|-
|-
| 37 || [14.0.0+] CreateSaveDataFileSystemWithCreationInfo2
| 37 || [14.0.0+] CreateSaveDataFileSystemWithCreationInfo2
|-
| 38 || [20.0.0+] DetachSdCard
|-
|-
| 51 || [[#OpenSaveDataFileSystem]]
| 51 || [[#OpenSaveDataFileSystem]]
Line 207: Line 217:
|-
|-
| 501 || [[#OpenGameCardDetectionEventNotifier]]
| 501 || [[#OpenGameCardDetectionEventNotifier]]
|-
| 502 || [20.0.0+] OpenSdCardAwakenReadyEventNotifier
|-
| 503 || [19.0.0+] OpenGameCardAwakenReadyEventNotifier
|-
|-
| 510 || [5.0.0+] OpenSystemDataUpdateEventNotifier
| 510 || [5.0.0+] OpenSystemDataUpdateEventNotifier
Line 257: Line 271:
|-
|-
| 631 || [4.0.0+] IsSdCardAccessible
| 631 || [4.0.0+] IsSdCardAccessible
|-
| 632 || [19.0.0+] TestExternalKey
|-
|-
| 640 || [4.0.0-7.0.1] IsSignedSystemPartitionOnSdCardValid
| 640 || [4.0.0-7.0.1] IsSignedSystemPartitionOnSdCardValid
Line 273: Line 289:
|-
|-
| 810 || [7.0.0+] RegisterProgramIndexMapInfo
| 810 || [7.0.0+] RegisterProgramIndexMapInfo
|-
| 820 || [19.0.0+] GetContentStorageInfoIndex
|-
|-
| 1000 || [1.0.0-9.2.0] SetBisRootForHost
| 1000 || [1.0.0-9.2.0] SetBisRootForHost
Line 312: Line 330:
| 1019 || [13.0.0+] UnsetDebugOption
| 1019 || [13.0.0+] UnsetDebugOption
|-
|-
| 1100 || [4.0.0+] OverrideSaveDataTransferTokenSignVerificationKey
| 1020 || [18.0.0+] OpenMemoryStressor
|-
| 1100 || [4.0.0-17.0.1] OverrideSaveDataTransferTokenSignVerificationKey
|-
| 1101 || [18.0.0+] OverrideSaveDataTransferKeyForTest
|-
|-
| 1110 || [6.0.0+] CorruptSaveDataFileSystemByOffset
| 1110 || [6.0.0+] CorruptSaveDataFileSystemByOffset
Line 329: Line 351:


Note that the functions check whether or not at least one bit is set in the mask. This means that, you don't need to set 0xFFFFFFFFFFFFFFFF to get all permissions: it suffices to set 0x8000000000000000.
Note that the functions check whether or not at least one bit is set in the mask. This means that, you don't need to set 0xFFFFFFFFFFFFFFFF to get all permissions: it suffices to set 0x8000000000000000.
If nn::spl::IsDebugMode() is disabled (retail behavior), the FS sysmodule masks the permission descriptor with 0x3FFFFFFFFFFFFFFF upon process registration.


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


Line 741: Line 793:


Returns a [[IPC_Marshalling#Domain_message|domain object ID]] implementing the [[#IStorage]] interface for data archives.
Returns a [[IPC_Marshalling#Domain_message|domain object ID]] implementing the [[#IStorage]] interface for data archives.
[[NCA|PublicData]] is exempt from the [[#Permissions|permissions]] check.


== OpenDataFileSystemWithProgramIndex ==
== OpenDataFileSystemWithProgramIndex ==
Line 1,051: Line 1,105:
| 5 || [2.0.0+] [[#GetAndClearSdCardErrorInfo]]
| 5 || [2.0.0+] [[#GetAndClearSdCardErrorInfo]]
|-
|-
| 6 || [17.0.0+] GetSdCardHostControllerStatus
| 6 || [17.0.0+] [[#GetSdCardHostControllerStatus]]
|-
| 7 || [20.0.0+] SetSdCardActivationMode
|-
| 8 || [20.0.0+] TryGetSdCardInfo
|-
|-
| 100 || [[#GetMmcCid]]
| 100 || [[#GetMmcCid]]
Line 1,071: Line 1,129:
| 116 || [4.0.0+] [[#ResumeMmcPatrol]]
| 116 || [4.0.0+] [[#ResumeMmcPatrol]]
|-
|-
| 117 || [17.0.0+] EraseMmcWithRange
| 117 || [17.0.0+] [[#EraseMmcWithRange]]
|-
| 118 || [20.0.0+] MarkBeforeEraseMmcPartitionUserData
|-
| 119 || [20.0.0+] CheckAfterEraseMmcPartitionUserData
|-
|-
| 200 || [[#IsGameCardInserted]]
| 200 || [[#IsGameCardInserted]]
Line 1,115: Line 1,177:
| 220 || [9.0.0+] [[#GetGameCardCompatibilityType]]
| 220 || [9.0.0+] [[#GetGameCardCompatibilityType]]
|-
|-
| 221 || [17.0.0+] GetGameCardAsicCertificate
| 221 || [17.0.0+] [[#GetGameCardAsicCertificate]]
|-
|-
| 300 || [[#SetSpeedEmulationMode]]
| 222 || [18.0.0+] [[#GetGameCardCardHeader]]
|-
|-
| 301 || [[#GetSpeedEmulationMode]]
| 223 || [19.0.0+] [[#SetGameCardSessionCreationDelay]]
|-
|-
| 400 || [5.0.0+] [[#SuspendSdmmcControl]]
| 224 || [19.0.0+] [[#GetGameCardApplicationIdList]]
|-
| 225 || [20.0.0+] RegisterGameCardConfigurationData
|-
| 226 || [20.0.0+] GetGameCardDetailedErrorReportInfo
|-
| 300 || [[#SetSpeedEmulationMode]]
|-
| 301 || [[#GetSpeedEmulationMode]]
|-
| 302 || [18.0.0+] [[#SetApplicationStorageSpeed]]
|-
| 303 || [20.0.0+] SetGameCardClockRateForSpeedEmulation
|-
| 304 || [20.0.0+] ClearGameCardClockRateForSpeedEmulation
|-
| 400 || [5.0.0+] [[#SuspendSdmmcControl]]
|-
|-
| 401 || [5.0.0+] [[#ResumeSdmmcControl]]
| 401 || [5.0.0+] [[#ResumeSdmmcControl]]
Line 1,149: Line 1,227:
== GetAndClearSdCardErrorInfo ==
== GetAndClearSdCardErrorInfo ==
Takes a type-0x6 output buffer '''LogBuffer''' and an input s64 '''LogBufferSize'''. Returns an output [[#StorageErrorInfo]] and an output s64 '''LogSize'''.
Takes a type-0x6 output buffer '''LogBuffer''' and an input s64 '''LogBufferSize'''. Returns an output [[#StorageErrorInfo]] and an output s64 '''LogSize'''.
== GetSdCardHostControllerStatus ==
No input. Returns an output [[#HostControllerStatus]].


== GetMmcCid ==
== GetMmcCid ==
Line 1,176: Line 1,257:
== ResumeMmcPatrol ==
== ResumeMmcPatrol ==
No input/output.
No input/output.
== EraseMmcWithRange ==
Takes an input [[#MmcPartition]] and two input u64s. No output.


== IsGameCardInserted ==
== IsGameCardInserted ==
Line 1,197: Line 1,281:
== GetGameCardDeviceCertificate ==
== GetGameCardDeviceCertificate ==
Takes a type-0x6 output buffer, an input s64 '''BufferSize''' and an input [[#GameCardHandle]]. No output.
Takes a type-0x6 output buffer, an input s64 '''BufferSize''' and an input [[#GameCardHandle]]. No output.
[19.0.0+] Now returns an output s64 '''OutSize''' which can be 0x200 or 0x400.


== GetGameCardAsicInfo ==
== GetGameCardAsicInfo ==
Line 1,241: Line 1,327:
== GetGameCardCompatibilityType ==
== GetGameCardCompatibilityType ==
Takes an input [[#GameCardHandle]]. Returns an output [[#GameCardCompatibilityType]].
Takes an input [[#GameCardHandle]]. Returns an output [[#GameCardCompatibilityType]].
== GetGameCardAsicCertificate ==
Takes a type-0x6 output buffer and an input s64 '''BufferSize'''. No output.
== GetGameCardCardHeader ==
Takes a type-0x6 output buffer, an input s64 '''BufferSize''' and an input [[#GameCardHandle]]. No output.
== SetGameCardSessionCreationDelay ==
Takes two input bools and an input u32. No output.
== GetGameCardApplicationIdList ==
Takes a type-0x6 output buffer, an input s64 '''BufferSize''' and an input [[#GameCardHandle]]. Returns an output u16.


== SetSpeedEmulationMode ==
== SetSpeedEmulationMode ==
Line 1,247: Line 1,345:
== GetSpeedEmulationMode ==
== GetSpeedEmulationMode ==
No input. Returns an output [[#SpeedEmulationMode]].
No input. Returns an output [[#SpeedEmulationMode]].
== SetApplicationStorageSpeed ==
Takes an input s32. No output.


== SuspendSdmmcControl ==
== SuspendSdmmcControl ==
Line 1,474: Line 1,575:
|-
|-
| 0 || [[#GetChallenge]]
| 0 || [[#GetChallenge]]
|-
| 8 || [18.0.0+] SetMode
|-
| 9 || [18.0.0+] SetAttribute
|-
|-
| 16 || [[#SetKeySeedPackage]]
| 16 || [[#SetKeySeedPackage]]
|-
| 17 || [20.0.0+] SetLocalKeySeedPackage
|-
|-
| 32 || [[#OpenSaveDataExporter]]
| 32 || [[#OpenSaveDataExporter]]
Line 1,485: Line 1,592:
| 63 || [17.0.0+] OpenSaveDataImporter
| 63 || [17.0.0+] OpenSaveDataImporter
|-
|-
| 64 || [6.0.0+] [[#OpenSaveDataImporterDeprecated]] ([5.0.0-5.1.0] OpenSaveDataImporter)
| 64 || [6.0.0-17.0.1] [[#OpenSaveDataImporterDeprecated]] ([5.0.0-5.1.0] OpenSaveDataImporter)
|-
|-
| 65 || [[#OpenSaveDataImporterForDiffImport]]
| 65 || [5.0.0-17.0.1] [[#OpenSaveDataImporterForDiffImport]]
|-
|-
| 66 || [6.0.0+] [[#OpenSaveDataImporterForDuplicateDiffImport]]
| 66 || [6.0.0-17.0.1] [[#OpenSaveDataImporterForDuplicateDiffImport]]
|-
|-
| 67 || [6.0.0-16.1.0] [[#OpenSaveDataImporter]]
| 67 || [6.0.0-16.1.0] [[#OpenSaveDataImporter]]
Line 1,497: Line 1,604:
| 69 || [6.0.0+] [[#CancelSuspendingImport]]
| 69 || [6.0.0+] [[#CancelSuspendingImport]]
|-
|-
| 70 || [10.0.0+] DecryptAndVerifyInitialData
| 70 || [10.0.0+] CancelSuspendingImportByAttribute
|-
|-
| 80 || [11.0.0+] DecryptoAndVerifyPortContext
| 80 || [11.0.0+] SwapSecondary
|}
|}


Line 1,546: Line 1,653:
| 0 || [[#SetDivisionCount]]
| 0 || [[#SetDivisionCount]]
|-
|-
| 1 || [6.0.0+] [[#GetSaveDataInfo]]
| 1 || [6.0.0+] [[#ReadSaveDataExtraData]]
|-
|-
| 16 || [[#OpenSaveDataDiffChunkIterator]]
| 16 || [[#OpenSaveDataDiffChunkIterator]]
Line 1,560: Line 1,667:
| 67 || [6.0.0+] [[#SuspendExport]]
| 67 || [6.0.0+] [[#SuspendExport]]
|-
|-
| 70 || [6.0.0+] [[#GetKeySeed]]
| 70 || [6.0.0-17.0.1] [[#GetKeySeed]]
|-
|-
| 71 || [6.0.0+] [[#GetInitialDataMac]]
| 71 || [6.0.0+] [[#GetInitialDataMac]]
Line 1,567: Line 1,674:
|-
|-
| 73 || [9.0.0+] [[#GetInitialDataMacKeyGeneration]]
| 73 || [9.0.0+] [[#GetInitialDataMacKeyGeneration]]
|-
| 74 || [18.0.0+] [[#GetKeySeed]]
|-
| 75 || [20.0.0+] GetLocalKeySeedPackage
|-
|-
| 80 || [6.0.0+] [[#GetImportInitialDataAad]]
| 80 || [6.0.0+] [[#GetImportInitialDataAad]]
Line 1,614: Line 1,725:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || [6.0.0+] [[#GetSaveDataInfo]]
| 0 || [6.0.0+] [[#ReadSaveDataExtraData]]
|-
|-
| 16 || [[#OpenSaveDataDiffChunkIterator]]
| 16 || [[#OpenSaveDataDiffChunkIterator]]
Line 1,637: Line 1,748:
|}
|}


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


Line 2,224: Line 2,335:
|}
|}


= MemoryReportInfo =
= HostControllerStatus =
This is "nn::fs::MemoryReportInfo".
This is "nn::sdcard::HostControllerStatus".
 
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0
| 0xC
|
|}
 
= MemoryReportInfo =
This is "nn::fs::MemoryReportInfo".


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 2,235: Line 2,360:
| 0x0
| 0x0
| 0x8
| 0x8
| PooledBufferFreeSizePeak
| PooledBufferFreeSizePeak
|-
|-
| 0x8
| 0x8
| 0x8
| 0x8
| PooledBufferRetriedCount
| PooledBufferRetriedCount
Line 2,478: Line 2,603:
| 16 || [9.0.0+] DifferentRegionCupToGlobalDeviceFlag
| 16 || [9.0.0+] DifferentRegionCupToGlobalDeviceFlag
|}
|}
= GameCardAttribute2 =
This is "nn::fs::GameCardAttribute2".


= GameCardSize =
= GameCardSize =
Line 2,590: Line 2,718:
| 0x3
| 0x3
| 0x1
| 0x1
| MemoryType
| [[#MemoryType|MemoryType]]
|}
|}


Line 2,604: Line 2,732:
| 0x0
| 0x0
| 0x1
| 0x1
| CardSecurityNumber
| [[#CardSecurityNumber|CardSecurityNumber]]
|-
|-
| 0x1
| 0x1
| 0x1
| 0x1
| CardType
| [[#CardType|CardType]]
|-
|-
| 0x2
| 0x2
Line 2,639: Line 2,767:
|-
|-
| 0xAE || Lapis
| 0xAE || Lapis
|-
| 0x36 ||
|}
|}


Line 2,661: Line 2,791:
|}
|}


= RmaInformation =
= MemoryType =
This is "nn::gc::RmaInformation". This is a 0x200-byte struct.
This is "nn::gc::detail::MemoryType".
 
= SimulatingDeviceType =
This is "nn::fs::SimulatingDeviceType".


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 2,671: Line 2,798:
! Value || Name
! Value || Name
|-
|-
| 0 || eMMC
| 0x1 || T1RomFast
|-
| 0x2 || T2RomFast
|-
| 0x9 || T1NandFast
|-
| 0xA || T2NandFast
|-
| 0x21 || T1RomLate
|-
| 0x22 || T2RomLate
|-
|-
| 1 || SdCard
| 0x29 || T1NandLate
|-
|-
| 2 || GameCard
| 0x2A || T2NandLate
|}
|}


= SimulatingDeviceDetectionMode =
= CardSecurityNumber =
This is "nn::fs::SimulatingDeviceDetectionMode".
This is "nn::gc::detail::CardSecurityNumber".


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 2,685: Line 2,822:
! Value || Name
! Value || Name
|-
|-
| 0 || NoSimulation
| 0 || 0
|-
| 1 || 1
|-
| 2 || 2
|-
|-
| 1 || DeviceAttached
| 3 || 3
|-
|-
| 2 || DeviceRemoved
| 4 || 4
|}
|}


= SimulatingDeviceAccessFailureEventType =
= CardType =
This is "nn::fs::SimulatingDeviceAccessFailureEventType".
This is "nn::gc::detail::CardType".


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 2,699: Line 2,840:
! Value || Name
! Value || Name
|-
|-
| 0 || None
| 0 || Rom
|-
|-
| 1 || AccessTimeoutFailure
| 1 || WritableDevT1
|-
|-
| 2 || AccessFailure
| 2 || WritableProdT1
|-
|-
| 3 || DataCorruption
| 3 || WritableDevT2
|}
|-
 
| 4 || WritableProdT2
= SimulatingDeviceTargetOperation =
|}
This is "nn::fs::SimulatingDeviceTargetOperation".
 
 
= RmaInformation =
{| class="wikitable" border="1"
This is "nn::gc::RmaInformation". This is a 0x200-byte struct.
|-
 
! Value || Name
= GameCardCardHeader =
|-
This is a 0x600-byte struct.
| 1 || Read
 
|-
{| class="wikitable" border="1"
| 2 || Write
|-
|}
! Offset
 
! Size
= SpeedEmulationMode =
! Description
This is "nn::fs::SpeedEmulationMode".
|-
 
| 0x0
{| class="wikitable" border="1"
| 0x100
|-
| [[XCI#CardHeader|Signature]]
! Value || Name
|-
|-
| 0x100
| 0 || None
| 0x100
|-
| [[Lotus3#GetCardHeader|Header]]
| 1 || Faster
|-
|-
| 0x200
| 2 || Slower
| 0x400
|-
| [[XCI#NewCardHeaderCertArea|NewCardHeaderCertArea]]
| 3 || Random
|}
|}
 
 
= GameCardAsicProductionFirmware =
= FspPath =
This is the [[Lotus3#AsicFirmware|firmware]] for reading production Gamecards.
This is "nn::fssrv::sf::FspPath". This is a 0x301-byte string.
 
 
Embedded in "nn::gc::detail::EmbeddedDataHolder::g_FwReadBuffer" when in production mode.
{| class="wikitable" border="1"
 
|-
[4.0.0+] This firmware was updated to provide support for new Gamecards.
! Path || Notes
 
[9.0.0+] This firmware was updated.
 
[11.0.0+] This firmware was updated.
 
[12.0.0+] This firmware was updated.
 
[14.0.0+] This firmware was updated.
 
= GameCardAsicDevelopmentFirmware =
This is the [[Lotus3#AsicFirmware|firmware]] for reading development Gamecards.
 
Embedded in "nn::gc::detail::EmbeddedDataHolder::g_FwReadBuffer" when in development mode.
 
[9.0.0+] This firmware was updated.
 
[11.0.0+] This firmware was updated.
 
[14.0.0+] This firmware was updated.
 
= GameCardAsicWriterFirmware =
This is the [[Lotus3#AsicFirmware|firmware]] for writing development Gamecards.
 
Embedded in "nn::gc::detail::EmbeddedDataHolder::g_FwWriterBuffer".
 
= SimulatingDeviceType =
This is "nn::fs::SimulatingDeviceType".
 
{| class="wikitable" border="1"
|-
! Value || Name
|-
| 0 || eMMC
|-
| 1 || SdCard
|-
| 2 || GameCard
|}
 
= SimulatingDeviceDetectionMode =
This is "nn::fs::SimulatingDeviceDetectionMode".
 
{| class="wikitable" border="1"
|-
! Value || Name
|-
| 0 || NoSimulation
|-
| 1 || DeviceAttached
|-
| 2 || DeviceRemoved
|}
 
= SimulatingDeviceAccessFailureEventType =
This is "nn::fs::SimulatingDeviceAccessFailureEventType".
 
{| class="wikitable" border="1"
|-
! Value || Name
|-
| 0 || None
|-
| 1 || AccessTimeoutFailure
|-
| 2 || AccessFailure
|-
| 3 || DataCorruption
|}
 
= SimulatingDeviceTargetOperation =
This is "nn::fs::SimulatingDeviceTargetOperation".
 
{| class="wikitable" border="1"
|-
! Value || Name
|-
| 1 || Read
|-
| 2 || Write
|}
 
= SpeedEmulationMode =
This is "nn::fs::SpeedEmulationMode".
 
{| class="wikitable" border="1"
|-
! Value || Name
|-
| 0 || None
|-
| 1 || Faster
|-
| 2 || Slower
|-
| 3 || Random
|}
 
= FspPath =
This is "nn::fssrv::sf::FspPath". This is a 0x301-byte string.
 
{| class="wikitable" border="1"
|-
! Path || Notes
|-
|-
| @SystemContent ||
| @SystemContent ||
Line 2,939: Line 3,182:
= InitialDataVersion2 =
= InitialDataVersion2 =
This is a 0x8210-byte struct used by [[#ISaveDataTransferManagerWithDivision]].
This is a 0x8210-byte struct used by [[#ISaveDataTransferManagerWithDivision]].
= FsAccessControlRestrictionMode =
This is "nn::fs::FsAccessControlRestrictionMode".
{| class="wikitable" border="1"
|-
! Value || Name
|-
| 0 ||
|}


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