Line 115: |
Line 115: |
| |- | | |- |
| | 36 || [9.0.0+] OpenHostFileSystemWithOption | | | 36 || [9.0.0+] OpenHostFileSystemWithOption |
| + | |- |
| + | | 37 || [14.0.0+] CreateSaveDataFileSystemWithCreationInfo2 |
| |- | | |- |
| | 51 || [[#OpenSaveDataFileSystem]] | | | 51 || [[#OpenSaveDataFileSystem]] |
Line 169: |
Line 171: |
| |- | | |- |
| | 101 || [11.0.0+] OpenBaseFileSystem | | | 101 || [11.0.0+] OpenBaseFileSystem |
| + | |- |
| + | | 102 || [12.0.0+] FormatBaseFileSystem |
| |- | | |- |
| | 110 || [[#OpenContentStorageFileSystem]] | | | 110 || [[#OpenContentStorageFileSystem]] |
Line 187: |
Line 191: |
| |- | | |- |
| | 205 || [7.0.0+] [[#OpenDataStorageWithProgramIndex]] | | | 205 || [7.0.0+] [[#OpenDataStorageWithProgramIndex]] |
| + | |- |
| + | | 206 || [13.0.0+] OpenDataStorageByPath |
| |- | | |- |
| | 400 || [[#OpenDeviceOperator]] | | | 400 || [[#OpenDeviceOperator]] |
Line 291: |
Line 297: |
| |- | | |- |
| | 1017 || [11.0.0+] OutputApplicationInfoAccessLog | | | 1017 || [11.0.0+] OutputApplicationInfoAccessLog |
| + | |- |
| + | | 1018 || [13.0.0+] SetDebugOption |
| + | |- |
| + | | 1019 || [13.0.0+] UnsetDebugOption |
| |- | | |- |
| | 1100 || [4.0.0+] OverrideSaveDataTransferTokenSignVerificationKey | | | 1100 || [4.0.0+] OverrideSaveDataTransferTokenSignVerificationKey |
Line 591: |
Line 601: |
| | ([7.0.0-9.2.0] 0x2C) || || 0x8000000000000000 || || | | | ([7.0.0-9.2.0] 0x2C) || || 0x8000000000000000 || || |
| |- | | |- |
− | | [7.0.0+] 0x2C || CanNotMount || 0x0000000000000000 || -- || OpenCustomStorageFileSystem | + | | ([10.0.0-10.2.0] 0x2C) || || 0x0000000000000000 || || |
| + | |- |
| + | | [7.0.0+] 0x2C || CanMountTemporaryDirectory|| 0xC000000000000000 || RW || |
| |- | | |- |
| | ([7.0.0-9.2.0] 0x2D) || || 0x0000000000000000 || || | | | ([7.0.0-9.2.0] 0x2D) || || 0x0000000000000000 || || |
| + | |- |
| + | | [7.0.0+] 0x2D || CanMountAllBaseFilesystem || 0x8000000000000000 || RW || OpenBaseFileSystem |
| + | |- |
| + | | [11.0.0+] 0x2E || CanNotMount || 0x0000000000000000 || -- || OpenCustomStorageFileSystem |
| |} | | |} |
| | | |
Line 940: |
Line 956: |
| |- | | |- |
| | [10.2.0+] 0x44 || CanFindOwnSaveDataWithFilter || 0x8000000800000000 || [[#FindSaveDataWithFilter]] | | | [10.2.0+] 0x44 || CanFindOwnSaveDataWithFilter || 0x8000000800000000 || [[#FindSaveDataWithFilter]] |
| + | |- |
| + | | [11.0.0+] 0x45 || CanOpenSaveDataTransferManagerForRepair || 0x8000000000000020 || [[#OpenSaveDataTransferManagerForRepair]] |
| + | |- |
| + | | [13.0.0+] 0x46 || CanSetDebugConfiguration || 0x8000000000000000 || SetDebugOption, UnsetDebugOption |
| + | |- |
| + | | [13.0.0+] 0x47 || CanOpenDataStorageByPath || 0x8000000000000000 || OpenDataStorageByPath |
| |} | | |} |
| | | |
Line 1,116: |
Line 1,138: |
| Takes in the 0x10 byte SD card encryption seed, and loads it into FS-module state. | | Takes in the 0x10 byte SD card encryption seed, and loads it into FS-module state. |
| | | |
− | [[NS_Services|NS]]-module reads the 0x10 bytes from SdCard:/Nintendo/Contents/private, and compares them to the first 0x10 bytes of the ns_appman:/private (in [[Flash_Filesystem#System_Savegames|system savedata]] 0x8000000000000043). If they match, NS calls this command using bytes 0x10-0x20 from ns_appman:/private. The rest of this file (0x1F0 bytes total) is (usually/always?) all-zero (however in some cases the byte at offset 0x20 is value 0x1). | + | [[NS_Services|NS]]-module reads the 0x10 bytes from SdCard:/Nintendo/Contents/private, and compares them to the first 0x10 bytes of the ns_appman:/private (in [[Flash_Filesystem#System_Savegames|system savedata]] 0x8000000000000043). If they match, NS calls this command using bytes 0x10-0x20 from ns_appman:/private. The rest of this file (0x1F0 bytes total) is all-zero except for the byte at offset 0x20. This byte is set to 1 by NS if the SD card has been mounted successfully and is subsequently passed to SetSdCardAccessibility. |
| | | |
| == OpenAccessFailureDetectionEventNotifier == | | == OpenAccessFailureDetectionEventNotifier == |
Line 1,356: |
Line 1,378: |
| |- | | |- |
| | 5 || [4.0.0+] OperateRange | | | 5 || [4.0.0+] OperateRange |
| + | |- |
| + | | 6 || [12.0.0+] OperateRangeWithBuffer |
| |} | | |} |
| | | |
Line 1,380: |
Line 1,404: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || IsSdCardInserted | + | | 0 || [[#IsSdCardInserted]] |
| |- | | |- |
− | | 1 || GetSdCardSpeedMode | + | | 1 || [[#GetSdCardSpeedMode]] |
| |- | | |- |
− | | 2 || [2.0.0+] GetSdCardCid | + | | 2 || [2.0.0+] [[#GetSdCardCid]] |
| |- | | |- |
− | | 3 || [2.0.0+] GetSdCardUserAreaSize | + | | 3 || [2.0.0+] [[#GetSdCardUserAreaSize]] |
| |- | | |- |
− | | 4 || [2.0.0+] GetSdCardProtectedAreaSize | + | | 4 || [2.0.0+] [[#GetSdCardProtectedAreaSize]] |
| |- | | |- |
− | | 5 || [2.0.0+] GetAndClearSdCardErrorInfo | + | | 5 || [2.0.0+] [[#GetAndClearSdCardErrorInfo]] |
| |- | | |- |
− | | 100 || GetMmcCid | + | | 100 || [[#GetMmcCid]] |
| |- | | |- |
− | | 101 || GetMmcSpeedMode | + | | 101 || [[#GetMmcSpeedMode]] |
| |- | | |- |
− | | 110 || EraseMmc | + | | 110 || [[#EraseMmc]] |
| |- | | |- |
− | | 111 || GetMmcPartitionSize | + | | 111 || [[#GetMmcPartitionSize]] |
| |- | | |- |
− | | 112 || [2.0.0+] GetMmcPatrolCount | + | | 112 || [2.0.0+] [[#GetMmcPatrolCount]] |
| |- | | |- |
− | | 113 || [2.0.0+] GetAndClearMmcErrorInfo | + | | 113 || [2.0.0+] [[#GetAndClearMmcErrorInfo]] |
| |- | | |- |
− | | 114 || [2.0.0+] GetMmcExtendedCsd | + | | 114 || [2.0.0+] [[#GetMmcExtendedCsd]] |
| |- | | |- |
− | | 115 || [4.0.0+] SuspendMmcPatrol | + | | 115 || [4.0.0+] [[#SuspendMmcPatrol]] |
| |- | | |- |
− | | 116 || [4.0.0+] ResumeMmcPatrol | + | | 116 || [4.0.0+] [[#ResumeMmcPatrol]] |
| |- | | |- |
| | 200 || [[#IsGameCardInserted]] | | | 200 || [[#IsGameCardInserted]] |
| |- | | |- |
− | | 201 || EraseGameCard | + | | 201 || [[#EraseGameCard]] |
| |- | | |- |
| | 202 || [[#GetGameCardHandle]] | | | 202 || [[#GetGameCardHandle]] |
Line 1,418: |
Line 1,442: |
| | 203 || [[#GetGameCardUpdatePartitionInfo]] | | | 203 || [[#GetGameCardUpdatePartitionInfo]] |
| |- | | |- |
− | | 204 || FinalizeGameCardDriver | + | | 204 || [[#FinalizeGameCardDriver]] |
| |- | | |- |
− | | 205 || GetGameCardAttribute | + | | 205 || [[#GetGameCardAttribute]] |
| |- | | |- |
| | 206 || [[#GetGameCardDeviceCertificate]] | | | 206 || [[#GetGameCardDeviceCertificate]] |
| |- | | |- |
− | | 207 || GetGameCardAsicInfo | + | | 207 || [[#GetGameCardAsicInfo]] |
| |- | | |- |
− | | 208 || GetGameCardIdSet | + | | 208 || [[#GetGameCardIdSet]] |
| |- | | |- |
− | | 209 || WriteToGameCardDirectly | + | | 209 || [[#WriteToGameCardDirectly]] |
| |- | | |- |
− | | 210 || SetVerifyWriteEnalbleFlag | + | | 210 || [[#SetVerifyWriteEnalbleFlag]] |
| |- | | |- |
− | | 211 || GetGameCardImageHash | + | | 211 || [[#GetGameCardImageHash]] |
| |- | | |- |
− | | 212 || [2.0.0+] GetGameCardDeviceIdForProdCard | + | | 212 || [2.0.0+] [[#GetGameCardDeviceIdForProdCard]] |
| |- | | |- |
− | | 213 || [2.0.0+] EraseAndWriteParamDirectly | + | | 213 || [2.0.0+] [[#EraseAndWriteParamDirectly]] |
| |- | | |- |
− | | 214 || [2.0.0+] ReadParamDirectly | + | | 214 || [2.0.0+] [[#ReadParamDirectly]] |
| |- | | |- |
− | | 215 || [2.0.0+] ForceEraseGameCard | + | | 215 || [2.0.0+] [[#ForceEraseGameCard]] |
| |- | | |- |
− | | 216 || [2.0.0+] GetGameCardErrorInfo | + | | 216 || [2.0.0+] [[#GetGameCardErrorInfo]] |
| |- | | |- |
− | | 217 || [2.1.0+] GetGameCardErrorReportInfo | + | | 217 || [2.1.0+] [[#GetGameCardErrorReportInfo]] |
| |- | | |- |
− | | 218 || [3.0.0+] GetGameCardDeviceId | + | | 218 || [3.0.0+] [[#GetGameCardDeviceId]] |
| |- | | |- |
| | 219 || [8.0.0+] [[#ChallengeCardExistence]] | | | 219 || [8.0.0+] [[#ChallengeCardExistence]] |
Line 1,452: |
Line 1,476: |
| | 220 || [9.0.0+] [[#GetGameCardCompatibilityType]] | | | 220 || [9.0.0+] [[#GetGameCardCompatibilityType]] |
| |- | | |- |
− | | 300 || SetSpeedEmulationMode | + | | 300 || [[#SetSpeedEmulationMode]] |
| |- | | |- |
− | | 301 || GetSpeedEmulationMode | + | | 301 || [[#GetSpeedEmulationMode]] |
| |- | | |- |
− | | 400 || [5.0.0+] SuspendSdmmcControl | + | | 400 || [5.0.0+] [[#SuspendSdmmcControl]] |
| |- | | |- |
− | | 401 || [5.0.0+] ResumeSdmmcControl | + | | 401 || [5.0.0+] [[#ResumeSdmmcControl]] |
| |- | | |- |
| | 402 || [6.0.0+] [[#GetSdmmcConnectionStatus]] | | | 402 || [6.0.0+] [[#GetSdmmcConnectionStatus]] |
Line 1,467: |
Line 1,491: |
| |} | | |} |
| | | |
− | == IsGameCardInserted == | + | == IsSdCardInserted == |
− | No input, returns a bool. | + | No input. Returns an output bool. |
| | | |
− | == GetGameCardHandle == | + | == GetSdCardSpeedMode == |
− | No input, returns an u32 '''GameCardHandle'''. | + | No input. Returns an output [[#SdCardSpeedMode]]. |
| | | |
− | == GetGameCardUpdatePartitionInfo == | + | == GetSdCardCid == |
− | Returns a [[NCM_services#ProgramId|ProgramId]] and the title-version for it.
| + | Takes a type-0x6 output buffer and an input s64 '''BufferSize'''. No output. |
| | | |
− | * Output u32 with ARMS-gamecard: title-version v131162. This is the title-version for [[2.1.0]], which is the sysupdate included with this gamecard. Launch-day gamecards return title-version v450.
| + | == GetSdCardUserAreaSize == |
− | * Output u64 with ARMS-gamecard: [[NCM_services#ProgramId|ProgramId]] 0100000000000816.
| + | No input. Returns an output s64 '''SdCardUserAreaSize'''. |
| | | |
− | [[NS_Services|NS]] appears to only use this with [[NCM_services|NCM]] for checking whether a sysupdate is required.
| + | == GetSdCardProtectedAreaSize == |
| + | No input. Returns an output s64 '''SdCardProtectedAreaSize'''. |
| | | |
− | == GetGameCardDeviceCertificate == | + | == GetAndClearSdCardErrorInfo == |
− | Takes a type-0x6 output buffer, an u32 '''GameCardHandle''' and an u64 '''DeviceCertificateBufferSize'''. No output. | + | Takes a type-0x6 output buffer '''LogBuffer''' and an input s64 '''LogBufferSize'''. Returns an output [[#StorageErrorInfo]] and an output s64 '''LogSize'''. |
| | | |
− | == ChallengeCardExistence == | + | == GetMmcCid == |
− | Takes a type-0x6 output buffer, two type-0x5 input buffers and an u32 '''GameCardHandle'''. No output. | + | Takes a type-0x6 output buffer and an input s64 '''BufferSize'''. No output. |
| | | |
− | [9.0.0+] The [[Account_services|account]] system module uses this as part of a new challenge-response mechanism for [[Network#aauth|application authentication]].
| + | == GetMmcSpeedMode == |
| + | No input. Returns an output [[#MmcSpeedMode]]. |
| | | |
− | == GetGameCardCompatibilityType == | + | == EraseMmc == |
− | Takes an u32 '''GameCardHandle''', returns an u8 '''CompatibilityType''' (0x00 = Global, 0x01 = China) from [[Gamecard_Format#Gamecard_Info|Gamecard Info]]. | + | Takes an input [[#MmcPartition]]. No output. |
| | | |
− | == GetSdmmcConnectionStatus == | + | == GetMmcPartitionSize == |
− | Takes a total of 4-bytes of input, returns a total of 8-bytes of output. | + | Takes an input [[#MmcPartition]]. Returns an output s64 '''MmcPartitionSize'''. |
| | | |
− | == SetDeviceSimulationEvent == | + | == GetMmcPatrolCount == |
− | Takes a total of 0x14-bytes of input, no output.
| + | No input. Returns an output u32 '''MmcPatrolCount'''. |
| | | |
− | == ClearDeviceSimulationEvent == | + | == GetAndClearMmcErrorInfo == |
− | Takes a total of 4-bytes of input, no output. | + | Takes a type-0x6 output buffer '''LogBuffer''' and an input s64 '''LogBufferSize'''. Returns an output [[#StorageErrorInfo]] and an output s64 '''LogSize'''. |
| | | |
− | = IEventNotifier = | + | == GetMmcExtendedCsd == |
− | This is "nn::fssrv::sf::IEventNotifier".
| + | Takes a type-0x6 output buffer and an input s64 '''BufferSize'''. No output. |
| | | |
− | {| class="wikitable" border="1"
| + | == SuspendMmcPatrol == |
− | |-
| + | No input/output. |
− | ! Cmd || Name
| |
− | |-
| |
− | | 0 || [[#GetEventHandle]]
| |
− | |}
| |
| | | |
− | == GetEventHandle == | + | == ResumeMmcPatrol == |
− | No input, returns an output Event handle. With official sw the EventClearMode is user-specified. | + | No input/output. |
| | | |
− | = ISaveDataTransferManager = | + | == IsGameCardInserted == |
− | This is "nn::fssrv::sf::ISaveDataTransferManager".
| + | No input. Returns an output bool. |
| | | |
− | This was added with [[4.0.0]].
| + | == EraseGameCard == |
| + | Takes an input [[#GameCardSize]] and an input u64 '''NormalAreaSize'''. No output. |
| | | |
− | {| class="wikitable" border="1"
| + | == GetGameCardHandle == |
− | |-
| + | No input. Returns an output [[#GameCardHandle]]. |
− | ! Cmd || Name
| |
− | |-
| |
− | | 0 || [[#GetChallenge]]
| |
− | |-
| |
− | | 16 || [[#SetToken]]
| |
− | |-
| |
− | | 32 || [[#OpenSaveDataExporter]]
| |
− | |-
| |
− | | 64 || [[#OpenSaveDataImporter]]
| |
− | |}
| |
| | | |
− | == GetChallenge == | + | == GetGameCardUpdatePartitionInfo == |
− | No input/output, takes a type-0x6 output buffer.
| + | Takes an input [[#GameCardHandle]]. Returns an output [[#GameCardUpdatePartitionInfo]]. |
| | | |
− | == SetToken == | + | == FinalizeGameCardDriver == |
− | No input/output, takes a type-0x5 input buffer. | + | No input/output. |
| | | |
− | == OpenSaveDataExporter == | + | == GetGameCardAttribute == |
− | Takes an input u8 [[#SaveDataSpaceId]] and u64, returns an [[#ISaveDataExporter]]. | + | Takes an input [[#GameCardHandle]]. Returns an output [[#GameCardAttribute]]. |
| | | |
− | == OpenSaveDataImporter == | + | == GetGameCardDeviceCertificate == |
− | Takes an input u8 [[#SaveDataSpaceId]] and a 0x10-byte userID, and a type-0x5 input buffer. Returns an output u64 and an [[#ISaveDataImporter]]. | + | Takes a type-0x6 output buffer, an input s64 '''BufferSize''' and an input [[#GameCardHandle]]. No output. |
| | | |
− | = ISaveDataTransferManagerForSaveDataRepair = | + | == GetGameCardAsicInfo == |
− | This is "nn::fssrv::sf::ISaveDataTransferManagerForSaveDataRepair".
| + | Takes a type-0x5 input buffer '''FwBuffer''', a type-0x6 output buffer containing [[#RmaInformation]] and two input s64s '''FwBufferSize''' and '''RmaInformationSize'''. No output. |
| | | |
− | This was added with [[9.0.0]].
| + | == GetGameCardIdSet == |
| + | Takes a type-0x6 output buffer containing a [[#GameCardIdSet]] and an input s64 '''BufferSize'''. No output. |
| | | |
− | {| class="wikitable" border="1"
| + | == WriteToGameCardDirectly == |
− | |-
| + | Takes a type-0x6 output buffer and two input s64s '''Offset''' and '''BufferSize'''. No output. |
− | ! Cmd || Name
| |
− | |-
| |
− | | 0 || [[#GetChallenge]]
| |
− | |-
| |
− | | 16 || [[#SetKeyPackage]]
| |
− | |-
| |
− | | 80 || [[#OpenSaveDataExporterAndGetEncryptedKey]]
| |
− | |-
| |
− | | 81 || [[#PrepareOpenSaveDataImporter]]
| |
− | |-
| |
− | | 90 || [[#OpenSaveDataImporter]]
| |
− | |-
| |
− | | 91 || [[#OpenSaveDataImporter2]]
| |
− | |-
| |
− | | 100 || [[#OpenSaveDataExporterWithKey]]
| |
− | |-
| |
− | | 110 || [[#OpenSaveDataImporterWithKey]]
| |
− | |}
| |
| | | |
− | == SetKeyPackage == | + | == SetVerifyWriteEnalbleFlag == |
− | No input/output, takes a type-0x5 input buffer. | + | Takes an input bool. No output. |
| | | |
− | == OpenSaveDataExporterAndGetEncryptedKey == | + | == GetGameCardImageHash == |
− | Takes a total of 0x10-bytes of input and a type-0x1A output buffer to receive a RsaEncryptedKey. Returns an [[#ISaveDataDivisionExporter]]. | + | Takes a type-0x6 output buffer, an input s64 '''BufferSize''' and an input [[#GameCardHandle]]. No output. |
| | | |
− | == PrepareOpenSaveDataImporter == | + | == GetGameCardDeviceIdForProdCard == |
− | Takes a type-0x1A output buffer to receive a RsaEncryptedKey. | + | Takes a type-0x5 input buffer '''CardHeaderForDev''', a type-0x6 output buffer and two input s64s '''CardHeaderForDevSize''' and '''BufferSize'''. No output. |
| | | |
− | == OpenSaveDataImporter == | + | == EraseAndWriteParamDirectly == |
− | Takes a total of 0x18-bytes of input and two type-0x5 input buffers, returns an [[#ISaveDataDivisionImporter]]. | + | Takes a type-0x5 input buffer and an input s64 '''BufferSize'''. No output. |
| | | |
− | == OpenSaveDataImporter2 == | + | == ReadParamDirectly == |
− | Takes a total of 0x18-bytes of input and a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]]. | + | Takes a type-0x6 output buffer and an input s64 '''BufferSize'''. No output. |
| | | |
− | == OpenSaveDataExporterWithKey == | + | == ForceEraseGameCard == |
− | Takes a total of 0x20-bytes of input, returns an [[#ISaveDataDivisionExporter]].
| + | No input/output. |
| + | |
| + | == GetGameCardErrorInfo == |
| + | No input. Returns an output [[#GameCardErrorInfo]]. |
| + | |
| + | == GetGameCardErrorReportInfo == |
| + | No input. Returns an output [[#GameCardErrorReportInfo]]. |
| | | |
− | == OpenSaveDataImporterWithKey == | + | == GetGameCardDeviceId == |
− | Takes a total of 0x28-bytes of input and a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]]. | + | Takes a type-0x6 output buffer and an input s64 '''BufferSize'''. No output. |
| | | |
− | = ISaveDataMover = | + | == ChallengeCardExistence == |
− | This is "nn::fssrv::sf::ISaveDataMover".
| + | Takes a type-0x6 output buffer, two type-0x5 input buffers and an input [[#GameCardHandle]]. No output. |
| | | |
− | This was added with [[10.0.0]].
| + | [9.0.0+] The [[Account_services|account]] system module uses this as part of a new challenge-response mechanism for [[Network#aauth|application authentication]]. |
| | | |
− | {| class="wikitable" border="1"
| + | == GetGameCardCompatibilityType == |
− | |-
| + | Takes an input [[#GameCardHandle]]. Returns an output [[#GameCardCompatibilityType]]. |
− | ! Cmd || Name
| |
− | |-
| |
− | | 8 || [[#Register]]
| |
− | |-
| |
− | | 16 || [[#Process]]
| |
− | |-
| |
− | | 18 || [[#Cancel]]
| |
− | |}
| |
| | | |
− | == Register == | + | == SetSpeedEmulationMode == |
− | Takes an input u64, no output. | + | Takes an input [[#SpeedEmulationMode]]. No output. |
| | | |
− | == Process == | + | == GetSpeedEmulationMode == |
− | Takes an input u64, returns an output u64.
| + | No input. Returns an output [[#SpeedEmulationMode]]. |
| | | |
− | == Cancel == | + | == SuspendSdmmcControl == |
| No input/output. | | No input/output. |
| | | |
− | = ISaveDataTransferManagerForRepair = | + | == ResumeSdmmcControl == |
− | This is "nn::fssrv::sf::ISaveDataTransferManagerForRepair".
| + | No input/output. |
| | | |
− | This was added with [[11.0.0]].
| + | == GetSdmmcConnectionStatus == |
| + | Takes a total of 4-bytes of input. Returns a total of 8-bytes of output. |
| + | |
| + | == SetDeviceSimulationEvent == |
| + | Takes a total of 0x14-bytes of input. No output. |
| + | |
| + | == ClearDeviceSimulationEvent == |
| + | Takes a total of 4-bytes of input. No output. |
| + | |
| + | = IEventNotifier = |
| + | This is "nn::fssrv::sf::IEventNotifier". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 1,625: |
Line 1,629: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 80 || [[#OpenSaveDataExporter]] | + | | 0 || [[#GetEventHandle]] |
− | |-
| |
− | | 90 || [[#OpenSaveDataImporter]]
| |
| |} | | |} |
| | | |
− | == OpenSaveDataExporter == | + | == GetEventHandle == |
− | Takes a total of 0x10-bytes of input, returns an [[#ISaveDataDivisionExporter]].
| + | No input, returns an output Event handle. With official sw the EventClearMode is user-specified. |
| | | |
− | == OpenSaveDataImporter == | + | = ISaveDataTransferManager = |
− | Takes 1-byte of input, a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]].
| + | This is "nn::fssrv::sf::ISaveDataTransferManager". |
− | | |
− | = ISaveDataExporter =
| |
− | This is "nn::fssrv::sf::ISaveDataExporter". | |
| | | |
| This was added with [[4.0.0]]. | | This was added with [[4.0.0]]. |
Line 1,645: |
Line 1,644: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || [[#GetSaveDataInfo]] | + | | 0 || [[#GetChallenge]] |
| |- | | |- |
− | | 1 || [[#GetRestSize]] | + | | 16 || [[#SetToken]] |
| |- | | |- |
− | | 16 || [[#Pull]] | + | | 32 || [[#OpenSaveDataExporter]] |
| |- | | |- |
− | | 17 || [[#PullInitialData]] | + | | 64 || [[#OpenSaveDataImporter]] |
| |} | | |} |
| | | |
− | == GetSaveDataInfo == | + | == GetChallenge == |
− | No input/output, takes a type-0x1A [[#SaveDataInfo]] output buffer. | + | No input/output, takes a type-0x6 output buffer. |
| | | |
− | The actual name for this is the SaveDataExporter constructor. This is used automatically after [[#OpenSaveDataExporter]] by official sw.
| + | == SetToken == |
| + | No input/output, takes a type-0x5 input buffer. |
| | | |
− | == GetRestSize == | + | == OpenSaveDataExporter == |
− | No input, returns an output u64.
| + | Takes an input u8 [[#SaveDataSpaceId]] and u64, returns an [[#ISaveDataExporter]]. |
| | | |
− | == Pull == | + | == OpenSaveDataImporter == |
− | Takes a type-0x6 output buffer, returns an output u64. | + | Takes an input u8 [[#SaveDataSpaceId]] and a 0x10-byte userID, and a type-0x5 input buffer. Returns an output u64 and an [[#ISaveDataImporter]]. |
| | | |
− | == PullInitialData == | + | = ISaveDataTransferManagerForSaveDataRepair = |
− | No input/output, takes a type-0x6 output buffer.
| + | This is "nn::fssrv::sf::ISaveDataTransferManagerForSaveDataRepair". |
| | | |
− | = ISaveDataImporter =
| + | This was added with [[9.0.0]]. |
− | This is "nn::fssrv::sf::ISaveDataImporter".
| |
− | | |
− | This was added with [[4.0.0]]. | |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 1,677: |
Line 1,674: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || [[#GetSaveDataInfo]] | + | | 0 || [[#GetChallenge]] |
| + | |- |
| + | | 16 || [[#SetKeyPackage]] |
| |- | | |- |
− | | 1 || [[#GetRestSize]] | + | | 80 || [[#OpenSaveDataExporterAndGetEncryptedKey]] |
| |- | | |- |
− | | 16 || [[#Push]] | + | | 81 || [[#PrepareOpenSaveDataImporter]] |
| |- | | |- |
− | | 17 || [[#Finalize]] | + | | 90 || [[#OpenSaveDataImporter]] |
− | |} | + | |- |
| + | | 91 || [[#OpenSaveDataImporter2]] |
| + | |- |
| + | | 100 || [[#OpenSaveDataExporterWithKey]] |
| + | |- |
| + | | 110 || [[#OpenSaveDataImporterWithKey]] |
| + | |} |
| | | |
− | == GetSaveDataInfo == | + | == SetKeyPackage == |
− | No input/output, takes a type-0x1A [[#GetSaveDataInfo]] output buffer. | + | No input/output, takes a type-0x5 input buffer. |
| | | |
− | The actual name for this is the SaveDataImporter constructor. This is used automatically after [[#OpenSaveDataImporter]] by official sw.
| + | == OpenSaveDataExporterAndGetEncryptedKey == |
| + | Takes a total of 0x10-bytes of input and a type-0x1A output buffer to receive a RsaEncryptedKey. Returns an [[#ISaveDataDivisionExporter]]. |
| | | |
− | == GetRestSize == | + | == PrepareOpenSaveDataImporter == |
− | No input, returns an output u64.
| + | Takes a type-0x1A output buffer to receive a RsaEncryptedKey. |
| | | |
− | == Push == | + | == OpenSaveDataImporter == |
− | No input/output, takes a type-0x5 input buffer.
| + | Takes a total of 0x18-bytes of input and two type-0x5 input buffers, returns an [[#ISaveDataDivisionImporter]]. |
| | | |
− | == Finalize == | + | == OpenSaveDataImporter2 == |
− | No input/output.
| + | Takes a total of 0x18-bytes of input and a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]]. |
| | | |
− | = ISaveDataTransferManagerWithDivision = | + | == OpenSaveDataExporterWithKey == |
− | This is "nn::fssrv::sf::ISaveDataTransferManagerWithDivision".
| + | Takes a total of 0x20-bytes of input, returns an [[#ISaveDataDivisionExporter]]. |
| | | |
− | This was added with [[5.0.0]]. | + | == OpenSaveDataImporterWithKey == |
| + | Takes a total of 0x28-bytes of input and a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]]. |
| + | |
| + | = ISaveDataMover = |
| + | This is "nn::fssrv::sf::ISaveDataMover". |
| + | |
| + | This was added with [[10.0.0]]. |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 1,709: |
Line 1,721: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || [[#GetChallenge]] | + | | 8 || [[#Register]] |
| |- | | |- |
− | | 16 || [[#SetKeySeedPackage]] | + | | 16 || [[#Process]] |
| |- | | |- |
− | | 32 || [[#OpenSaveDataExporter]] | + | | 18 || [[#Cancel]] |
| + | |} |
| + | |
| + | == Register == |
| + | Takes an input u64, no output. |
| + | |
| + | == Process == |
| + | Takes an input u64, returns an output u64. |
| + | |
| + | == Cancel == |
| + | No input/output. |
| + | |
| + | = ISaveDataTransferManagerForRepair = |
| + | This is "nn::fssrv::sf::ISaveDataTransferManagerForRepair". |
| + | |
| + | This was added with [[11.0.0]]. |
| + | |
| + | {| class="wikitable" border="1" |
| |- | | |- |
− | | 33 || [[#OpenSaveDataExporterForDiffExport]] | + | ! Cmd || Name |
| |- | | |- |
− | | 34 || [6.0.0+] [[#OpenSaveDataExporterByContext]] | + | | 80 || [[#OpenSaveDataExporter]] |
| |- | | |- |
− | |rowspan="2"| 64 || [5.0.0-5.1.0] OpenSaveDataImporter | + | | 90 || [[#OpenSaveDataImporter]] |
| + | |} |
| + | |
| + | == OpenSaveDataExporter == |
| + | Takes a total of 0x10-bytes of input, returns an [[#ISaveDataDivisionExporter]]. |
| + | |
| + | == OpenSaveDataImporter == |
| + | Takes 1-byte of input, a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]]. |
| + | |
| + | = ISaveDataExporter = |
| + | This is "nn::fssrv::sf::ISaveDataExporter". |
| + | |
| + | This was added with [[4.0.0]]. |
| + | |
| + | {| class="wikitable" border="1" |
| |- | | |- |
− | | [6.0.0+] [[#OpenSaveDataImporterDeprecated]] | + | ! Cmd || Name |
| |- | | |- |
− | | 65 || [[#OpenSaveDataImporterForDiffImport]] | + | | 0 || [[#GetSaveDataInfo]] |
| |- | | |- |
− | | 66 || [6.0.0+] [[#OpenSaveDataImporterForDuplicateDiffImport]] | + | | 1 || [[#GetRestSize]] |
| |- | | |- |
− | | 67 || [6.0.0+] [[#OpenSaveDataImporter]] | + | | 16 || [[#Pull]] |
| |- | | |- |
− | | 68 || [6.0.0+] [[#OpenSaveDataImporterByContext]] | + | | 17 || [[#PullInitialData]] |
− | |-
| + | |} |
− | | 69 || [6.0.0+] [[#CancelSuspendingImport]]
| |
− | |-
| |
− | | 70 || [10.0.0+] DecryptAndVerifyInitialData
| |
− | |-
| |
− | | 80 || [11.0.0+] DecryptoAndVerifyPortContext
| |
− | |} | |
| | | |
− | == GetChallenge == | + | == GetSaveDataInfo == |
− | No input/output, takes a type-0x6 output buffer containing the '''Challenge'''. | + | No input/output, takes a type-0x1A [[#SaveDataInfo]] output buffer. |
| | | |
− | == SetKeySeedPackage ==
| + | The actual name for this is the SaveDataExporter constructor. This is used automatically after [[#OpenSaveDataExporter]] by official sw. |
− | No input/output, takes a type-0x5 input buffer containing the '''KeySeedPackage'''.
| |
| | | |
− | == OpenSaveDataExporter == | + | == GetRestSize == |
− | Takes an input u8 [[#SaveDataSpaceId]] and u64. Returns an [[#ISaveDataDivisionExporter]].
| + | No input, returns an output u64. |
| | | |
− | == OpenSaveDataExporterForDiffExport == | + | == Pull == |
− | Takes an input u8 [[#SaveDataSpaceId]], an u64, and a type-0x5 input buffer [[#InitialDataVersion2]]. Returns an [[#ISaveDataDivisionExporter]]. | + | Takes a type-0x6 output buffer, returns an output u64. |
| | | |
− | == OpenSaveDataExporterByContext == | + | == PullInitialData == |
− | No input/output, takes a type-0x5 input buffer, returns an [[#ISaveDataDivisionExporter]]. | + | No input/output, takes a type-0x6 output buffer. |
| | | |
− | == OpenSaveDataImporterDeprecated == | + | = ISaveDataImporter = |
− | Takes an input u8 [[#SaveDataSpaceId]], a 0x10-byte userID, and a type-0x5 input buffer [[#InitialDataVersion2]]. Returns an [[#ISaveDataDivisionImporter]].
| + | This is "nn::fssrv::sf::ISaveDataImporter". |
| | | |
− | == OpenSaveDataImporterForDiffImport ==
| + | This was added with [[4.0.0]]. |
− | Takes an input u8 [[#SaveDataSpaceId]], an u64, and a type-0x5 input buffer [[#InitialDataVersion2]], returns an [[#ISaveDataDivisionImporter]].
| |
| | | |
− | == OpenSaveDataImporterForDuplicateDiffImport ==
| + | {| class="wikitable" border="1" |
− | Takes an input u8 and an u64, and a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]].
| |
− | | |
− | == OpenSaveDataImporter ==
| |
− | Takes an input u8, an u8(bool), a 0x10-byte struct, and a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]].
| |
− | | |
− | == OpenSaveDataImporterByContext ==
| |
− | No input/output, takes a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]].
| |
− | | |
− | == CancelSuspendingImport ==
| |
− | Takes an input u64 and a 0x10-byte struct, no output.
| |
− | | |
− | = ISaveDataDivisionExporter =
| |
− | This is "nn::fssrv::sf::ISaveDataDivisionExporter".
| |
− | | |
− | This was added with [[5.0.0]].
| |
− | | |
− | {| class="wikitable" border="1" | |
| |- | | |- |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || [[#SetDivisionCount]] | + | | 0 || [[#GetSaveDataInfo]] |
| |- | | |- |
− | | 1 || [6.0.0+] [[#GetSaveDataInfo]] | + | | 1 || [[#GetRestSize]] |
| |- | | |- |
− | | 16 || [[#OpenSaveDataDiffChunkIterator]] | + | | 16 || [[#Push]] |
| |- | | |- |
− | | 48 || [[#OpenSaveDataChunkExporter]] | + | | 17 || [[#Finalize]] |
− | |- | + | |} |
− | | 64 || [6.0.0-8.1.0] [[#FinalizeFullExport]]
| + | |
| + | == GetSaveDataInfo == |
| + | No input/output, takes a type-0x1A [[#GetSaveDataInfo]] output buffer. |
| + | |
| + | The actual name for this is the SaveDataImporter constructor. This is used automatically after [[#OpenSaveDataImporter]] by official sw. |
| + | |
| + | == GetRestSize == |
| + | No input, returns an output u64. |
| + | |
| + | == Push == |
| + | No input/output, takes a type-0x5 input buffer. |
| + | |
| + | == Finalize == |
| + | No input/output. |
| + | |
| + | = ISaveDataTransferManagerWithDivision = |
| + | This is "nn::fssrv::sf::ISaveDataTransferManagerWithDivision". |
| + | |
| + | This was added with [[5.0.0]]. |
| + | |
| + | {| class="wikitable" border="1" |
| |- | | |- |
− | | 65 || [6.0.0-8.1.0] [[#FinalizeDiffExport]] | + | ! Cmd || Name |
| |- | | |- |
− | | 66 || [6.0.0+] [[#CancelExport]] | + | | 0 || [[#GetChallenge]] |
| |- | | |- |
− | | 67 || [6.0.0+] [[#SuspendExport]] | + | | 16 || [[#SetKeySeedPackage]] |
| |- | | |- |
− | | 70 || [6.0.0+] [[#GetKeySeed]] | + | | 32 || [[#OpenSaveDataExporter]] |
| |- | | |- |
− | | 71 || [6.0.0+] [[#GetInitialDataMac]] | + | | 33 || [[#OpenSaveDataExporterForDiffExport]] |
| |- | | |- |
− | | 72 || [6.0.0+] [[#FinalizeExport]] | + | | 34 || [6.0.0+] [[#OpenSaveDataExporterByContext]] |
| |- | | |- |
− | | 73 || [9.0.0+] [[#GetInitialDataMacKeyGeneration]] | + | |rowspan="2"| 64 || [5.0.0-5.1.0] OpenSaveDataImporter |
| |- | | |- |
− | | 80 || [6.0.0+] [[#GetImportInitialDataAad]] | + | | [6.0.0+] [[#OpenSaveDataImporterDeprecated]] |
| + | |- |
| + | | 65 || [[#OpenSaveDataImporterForDiffImport]] |
| + | |- |
| + | | 66 || [6.0.0+] [[#OpenSaveDataImporterForDuplicateDiffImport]] |
| + | |- |
| + | | 67 || [6.0.0+] [[#OpenSaveDataImporter]] |
| + | |- |
| + | | 68 || [6.0.0+] [[#OpenSaveDataImporterByContext]] |
| + | |- |
| + | | 69 || [6.0.0+] [[#CancelSuspendingImport]] |
| |- | | |- |
− | | 81 || [6.0.0+] [[#SetExportInitialDataAad]] | + | | 70 || [10.0.0+] DecryptAndVerifyInitialData |
| |- | | |- |
− | | 96 || [6.0.0+] [[#GetReportInfo]] | + | | 80 || [11.0.0+] DecryptoAndVerifyPortContext |
| |} | | |} |
| | | |
− | == SetDivisionCount == | + | == GetChallenge == |
− | Takes an input u32, no output.
| + | No input/output, takes a type-0x6 output buffer containing the '''Challenge'''. |
| | | |
− | == OpenSaveDataChunkExporter == | + | == SetKeySeedPackage == |
− | Takes an input u32, returns an [[#ISaveDataChunkExporter]].
| + | No input/output, takes a type-0x5 input buffer containing the '''KeySeedPackage'''. |
| | | |
− | == FinalizeFullExport == | + | == OpenSaveDataExporter == |
− | No input, returns two 0x10-byte output structs.
| + | Takes an input u8 [[#SaveDataSpaceId]] and u64. Returns an [[#ISaveDataDivisionExporter]]. |
| | | |
− | == FinalizeDiffExport == | + | == OpenSaveDataExporterForDiffExport == |
− | No input, returns an output 0x10-byte struct.
| + | Takes an input u8 [[#SaveDataSpaceId]], an u64, and a type-0x5 input buffer [[#InitialDataVersion2]]. Returns an [[#ISaveDataDivisionExporter]]. |
| | | |
− | == CancelExport == | + | == OpenSaveDataExporterByContext == |
− | No input/output. | + | No input/output, takes a type-0x5 input buffer, returns an [[#ISaveDataDivisionExporter]]. |
| + | |
| + | == OpenSaveDataImporterDeprecated == |
| + | Takes an input u8 [[#SaveDataSpaceId]], a 0x10-byte userID, and a type-0x5 input buffer [[#InitialDataVersion2]]. Returns an [[#ISaveDataDivisionImporter]]. |
| | | |
− | == SuspendExport == | + | == OpenSaveDataImporterForDiffImport == |
− | No input/output, takes a type-0x6 output buffer.
| + | Takes an input u8 [[#SaveDataSpaceId]], an u64, and a type-0x5 input buffer [[#InitialDataVersion2]], returns an [[#ISaveDataDivisionImporter]]. |
| | | |
− | == GetKeySeed == | + | == OpenSaveDataImporterForDuplicateDiffImport == |
− | No input, returns an output 0x10-byte struct.
| + | Takes an input u8 and an u64, and a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]]. |
| | | |
− | == GetInitialDataMac == | + | == OpenSaveDataImporter == |
− | No input, returns an output 0x10-byte struct.
| + | Takes an input u8, an u8(bool), a 0x10-byte struct, and a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]]. |
| | | |
− | == FinalizeExport == | + | == OpenSaveDataImporterByContext == |
− | No input/output. | + | No input/output, takes a type-0x5 input buffer, returns an [[#ISaveDataDivisionImporter]]. |
| | | |
− | == SetExportInitialDataAad == | + | == CancelSuspendingImport == |
− | Takes an input 0x20-byte struct, no output. | + | Takes an input u64 and a 0x10-byte struct, no output. |
| | | |
− | = ISaveDataDivisionImporter = | + | = ISaveDataDivisionExporter = |
− | This is "nn::fssrv::sf::ISaveDataDivisionImporter". | + | This is "nn::fssrv::sf::ISaveDataDivisionExporter". |
| | | |
| This was added with [[5.0.0]]. | | This was added with [[5.0.0]]. |
Line 1,850: |
Line 1,901: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || [6.0.0+] [[#GetSaveDataInfo]] | + | | 0 || [[#SetDivisionCount]] |
| + | |- |
| + | | 1 || [6.0.0+] [[#GetSaveDataInfo]] |
| |- | | |- |
| | 16 || [[#OpenSaveDataDiffChunkIterator]] | | | 16 || [[#OpenSaveDataDiffChunkIterator]] |
| |- | | |- |
− | | 32 || [[#InitializeImport]] | + | | 48 || [[#OpenSaveDataChunkExporter]] |
| + | |- |
| + | | 64 || [6.0.0-8.1.0] [[#FinalizeFullExport]] |
| + | |- |
| + | | 65 || [6.0.0-8.1.0] [[#FinalizeDiffExport]] |
| + | |- |
| + | | 66 || [6.0.0+] [[#CancelExport]] |
| |- | | |- |
− | | 33 || [[#FinalizeImport]] | + | | 67 || [6.0.0+] [[#SuspendExport]] |
| |- | | |- |
− | | 34 || [6.0.0+] [[#CancelImport]] | + | | 70 || [6.0.0+] [[#GetKeySeed]] |
| |- | | |- |
− | | 35 || [6.0.0+] [[#GetImportContext]] | + | | 71 || [6.0.0+] [[#GetInitialDataMac]] |
| |- | | |- |
− | | 36 || [6.0.0+] [[#SuspendImport]] | + | | 72 || [6.0.0+] [[#FinalizeExport]] |
| |- | | |- |
− | | 37 || [11.0.0+] FinalizeImportWithoutSwap | + | | 73 || [9.0.0+] [[#GetInitialDataMacKeyGeneration]] |
| |- | | |- |
− | | 48 || [[#OpenSaveDataChunkImporter]] | + | | 80 || [6.0.0+] [[#GetImportInitialDataAad]] |
| |- | | |- |
− | | 64 || [6.0.0+] [[#GetImportInitialDataAad]] | + | | 81 || [6.0.0+] [[#SetExportInitialDataAad]] |
| |- | | |- |
− | | 80 || [6.0.0+] [[#GetReportInfo]] | + | | 96 || [6.0.0+] [[#GetReportInfo]] |
| |} | | |} |
| | | |
− | == GetSaveDataInfo == | + | == SetDivisionCount == |
− | No input/output, takes a type-0x6 output buffer.
| + | Takes an input u32, no output. |
| | | |
− | == OpenSaveDataDiffChunkIterator == | + | == OpenSaveDataChunkExporter == |
− | No input, returns an [[#ISaveDataChunkIterator]].
| + | Takes an input u32, returns an [[#ISaveDataChunkExporter]]. |
| | | |
− | == InitializeImport == | + | == FinalizeFullExport == |
− | No input, returns an output u64. | + | No input, returns two 0x10-byte output structs. |
| | | |
− | == FinalizeImport == | + | == FinalizeDiffExport == |
− | No input/output. | + | No input, returns an output 0x10-byte struct. |
| | | |
− | == CancelImport == | + | == CancelExport == |
| No input/output. | | No input/output. |
| | | |
− | == GetImportContext == | + | == SuspendExport == |
| No input/output, takes a type-0x6 output buffer. | | No input/output, takes a type-0x6 output buffer. |
| | | |
− | == SuspendImport == | + | == GetKeySeed == |
| + | No input, returns an output 0x10-byte struct. |
| + | |
| + | == GetInitialDataMac == |
| + | No input, returns an output 0x10-byte struct. |
| + | |
| + | == FinalizeExport == |
| No input/output. | | No input/output. |
| | | |
− | == OpenSaveDataChunkImporter == | + | == SetExportInitialDataAad == |
− | Takes an input u32, returns an [[#ISaveDataChunkImporter]]. | + | Takes an input 0x20-byte struct, no output. |
| | | |
− | == GetImportInitialDataAad == | + | = ISaveDataDivisionImporter = |
− | No input, returns an output 0x20-byte struct.
| + | This is "nn::fssrv::sf::ISaveDataDivisionImporter". |
− | | |
− | == GetReportInfo ==
| |
− | No input, returns an output 0x20-byte struct.
| |
− | | |
− | = ISaveDataChunkIterator =
| |
− | This is "nn::fssrv::sf::ISaveDataChunkIterator". | |
| | | |
| This was added with [[5.0.0]]. | | This was added with [[5.0.0]]. |
Line 1,912: |
Line 1,971: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || [[#Next]] | + | | 0 || [6.0.0+] [[#GetSaveDataInfo]] |
| + | |- |
| + | | 16 || [[#OpenSaveDataDiffChunkIterator]] |
| + | |- |
| + | | 32 || [[#InitializeImport]] |
| + | |- |
| + | | 33 || [[#FinalizeImport]] |
| + | |- |
| + | | 34 || [6.0.0+] [[#CancelImport]] |
| + | |- |
| + | | 35 || [6.0.0+] [[#GetImportContext]] |
| + | |- |
| + | | 36 || [6.0.0+] [[#SuspendImport]] |
| + | |- |
| + | | 37 || [11.0.0+] FinalizeImportWithoutSwap |
| + | |- |
| + | | 48 || [[#OpenSaveDataChunkImporter]] |
| |- | | |- |
− | | 1 || [[#IsEnd]] | + | | 64 || [6.0.0+] [[#GetImportInitialDataAad]] |
| |- | | |- |
− | | 16 || [[#GetId]] | + | | 80 || [6.0.0+] [[#GetReportInfo]] |
| |} | | |} |
| | | |
− | == Next == | + | == GetSaveDataInfo == |
− | No input/output. | + | No input/output, takes a type-0x6 output buffer. |
| | | |
− | == IsEnd == | + | == OpenSaveDataDiffChunkIterator == |
− | No input, returns an output u8. | + | No input, returns an [[#ISaveDataChunkIterator]]. |
| + | |
| + | == InitializeImport == |
| + | No input, returns an output u64. |
| + | |
| + | == FinalizeImport == |
| + | No input/output. |
| + | |
| + | == CancelImport == |
| + | No input/output. |
| + | |
| + | == GetImportContext == |
| + | No input/output, takes a type-0x6 output buffer. |
| + | |
| + | == SuspendImport == |
| + | No input/output. |
| + | |
| + | == OpenSaveDataChunkImporter == |
| + | Takes an input u32, returns an [[#ISaveDataChunkImporter]]. |
| + | |
| + | == GetImportInitialDataAad == |
| + | No input, returns an output 0x20-byte struct. |
| | | |
− | == GetId == | + | == GetReportInfo == |
− | No input, returns an output u32. | + | No input, returns an output 0x20-byte struct. |
| | | |
− | = ISaveDataChunkExporter = | + | = ISaveDataChunkIterator = |
− | This is "nn::fssrv::sf::ISaveDataChunkExporter". | + | This is "nn::fssrv::sf::ISaveDataChunkIterator". |
| + | |
| + | This was added with [[5.0.0]]. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Cmd || Name |
| + | |- |
| + | | 0 || [[#Next]] |
| + | |- |
| + | | 1 || [[#IsEnd]] |
| + | |- |
| + | | 16 || [[#GetId]] |
| + | |} |
| + | |
| + | == Next == |
| + | No input/output. |
| + | |
| + | == IsEnd == |
| + | No input, returns an output u8. |
| + | |
| + | == GetId == |
| + | No input, returns an output u32. |
| + | |
| + | = ISaveDataChunkExporter = |
| + | This is "nn::fssrv::sf::ISaveDataChunkExporter". |
| | | |
| This was added with [[5.0.0]]. | | This was added with [[5.0.0]]. |
Line 1,964: |
Line 2,085: |
| | | |
| = ISaveDataTransferProhibiter = | | = ISaveDataTransferProhibiter = |
− | This was added with [[6.0.0]]. | + | This is "nn::fssrv::sf::ISaveDataTransferProhibiter". |
| + | |
| + | This was added with [6.0.0+]. |
| | | |
| This doesn't seem to handle any commands (?). | | This doesn't seem to handle any commands (?). |
| | | |
| = IMultiCommitManager = | | = IMultiCommitManager = |
− | This was added with [[6.0.0]]. | + | This is "nn::fssrv::sf::IMultiCommitManager". |
| + | |
| + | This was added with [6.0.0+]. |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 1,987: |
Line 2,112: |
| | | |
| = IWiper = | | = IWiper = |
− | This is "nn::fs::IWiper". | + | This is "nn::fssrv::sf::IWiper". |
| | | |
| This was added with [[10.0.0]]. | | This was added with [[10.0.0]]. |
Line 2,006: |
Line 2,131: |
| No input. Returns an u64. | | No input. Returns an u64. |
| | | |
− | = FileSystemProxyType = | + | = IStorageDeviceManager = |
− | This is "nn::fs::FileSystemProxyType". | + | This is "nn::fssrv::storage::sf::IStorageDeviceManager". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
− | ! Value || Name | + | ! Cmd || Name |
| |- | | |- |
− | | 0 || Code | + | | N/A || IsInserted |
| |- | | |- |
− | | 1 || Rom | + | | N/A || IsHandleValid |
| |- | | |- |
− | | 2 || Logo | + | | N/A || OpenDetectionEvent |
− | |-
| |
− | | 3 || Control
| |
− | |-
| |
− | | 4 || Manual
| |
| |- | | |- |
− | | 5 || Meta | + | | N/A || OpenOperator |
| |- | | |- |
− | | 6 || Data | + | | N/A || OpenDevice |
| |- | | |- |
− | | 7 || Package | + | | N/A || OpenStorage |
| |- | | |- |
− | | 8 || [4.0.0+] RegisteredUpdate | + | | N/A || Invalidate |
| |} | | |} |
| | | |
− | = ContentType = | + | = IStorageDeviceOperator = |
− | This is "nn::fs::ContentType". | + | This is "nn::fssrv::storage::sf::IStorageDeviceOperator". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
− | ! Value || Name | + | ! Cmd || Name |
| + | |- |
| + | | N/A || Operate |
| |- | | |- |
− | | 0 || Meta | + | | N/A || OperateIn |
| |- | | |- |
− | | 1 || Control | + | | N/A || OperateOut |
| |- | | |- |
− | | 2 || Manual | + | | N/A || OperateOut2 |
| |- | | |- |
− | | 3 || Logo | + | | N/A || OperateInOut |
| |- | | |- |
− | | 4 || Data | + | | N/A || OperateIn2Out |
| |} | | |} |
| | | |
− | = ContentStorageId = | + | = IStorageDevice = |
− | This is "nn::fs::ContentStorageId". | + | This is "nn::fssrv::storage::sf::IStorageDevice". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
− | ! Value || Name | + | ! Cmd || Name |
| + | |- |
| + | | N/A || GetHandle |
| + | |- |
| + | | N/A || IsHandleValid |
| + | |- |
| + | | N/A || OpenOperator |
| + | |- |
| + | | N/A || Read |
| + | |- |
| + | | N/A || Write |
| + | |- |
| + | | N/A || Flush |
| |- | | |- |
− | | 0 || System | + | | N/A || SetSize |
| |- | | |- |
− | | 1 || User | + | | N/A || GetSize |
| |- | | |- |
− | | 2 || SdCard | + | | N/A || OperateRange |
| |} | | |} |
| | | |
− | = SaveDataSpaceId = | + | = FileSystemProxyType = |
− | This is "nn::fs::SaveDataSpaceId". | + | This is "nn::fs::FileSystemProxyType". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 2,071: |
Line 2,206: |
| ! Value || Name | | ! Value || Name |
| |- | | |- |
− | | 0 || System | + | | 0 || Code |
| + | |- |
| + | | 1 || Rom |
| + | |- |
| + | | 2 || Logo |
| |- | | |- |
− | | 1 || User | + | | 3 || Control |
| |- | | |- |
− | | 2 || SdSystem | + | | 4 || Manual |
| |- | | |- |
− | | 3 || [3.0.0+] Temporary | + | | 5 || Meta |
| |- | | |- |
− | | 4 || [4.0.0+] SdUser | + | | 6 || Data |
| |- | | |- |
− | | 100 || [3.0.0+] ProperSystem | + | | 7 || Package |
| |- | | |- |
− | | 101 || [3.0.0+] SafeMode | + | | 8 || [4.0.0+] RegisteredUpdate |
| |} | | |} |
| | | |
− | Determines the storage where the savedata is stored.
| + | = ContentType = |
− | | + | This is "nn::fs::ContentType". |
− | = SaveDataType = | |
− | This is "nn::fs::SaveDataType". | |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 2,095: |
Line 2,232: |
| ! Value || Name | | ! Value || Name |
| |- | | |- |
− | | 0 || System | + | | 0 || Meta |
| |- | | |- |
− | | 1 || Account | + | | 1 || Control |
| |- | | |- |
− | | 2 || Bcat | + | | 2 || Manual |
| |- | | |- |
− | | 3 || Device | + | | 3 || Logo |
| |- | | |- |
− | | 4 || [3.0.0+] Temporary | + | | 4 || Data |
− | |-
| |
− | | 5 || [3.0.0+] Cache
| |
− | |-
| |
− | | 6 || [4.0.0+] SystemBcat
| |
| |} | | |} |
| | | |
− | = SaveDataRank = | + | = ContentStorageId = |
− | This is "nn::fs::SaveDataRank". | + | This is "nn::fs::ContentStorageId". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 2,117: |
Line 2,250: |
| ! Value || Name | | ! Value || Name |
| |- | | |- |
− | | 0 || Primary | + | | 0 || System |
| + | |- |
| + | | 1 || User |
| |- | | |- |
− | | 1 || Secondary | + | | 2 || SdCard |
| |} | | |} |
| | | |
− | = SaveDataEnumerateOption = | + | = SaveDataSpaceId = |
− | This is "nn::fs::SaveDataEnumerateOption". | + | This is "nn::fs::SaveDataSpaceId". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 2,129: |
Line 2,264: |
| ! Value || Name | | ! Value || Name |
| |- | | |- |
− | | 1 || AllRank | + | | 0 || System |
− | |}
| |
− | | |
− | = SaveDataFlags =
| |
− | This is "nn::fs::SaveDataFlags".
| |
− | | |
− | {| class="wikitable" border="1"
| |
| |- | | |- |
− | ! Value || Name
| + | | 1 || User |
| + | |- |
| + | | 2 || SdSystem |
| |- | | |- |
− | | 1 || KeepAfterResettingSystemSaveData | + | | 3 || [3.0.0+] Temporary |
| |- | | |- |
− | | 2 || KeepAfterRefurbishment | + | | 4 || [4.0.0+] SdUser |
| |- | | |- |
− | | 4 || KeepAfterResettingSystemSaveDataWithoutUserSaveData | + | | 100 || [3.0.0+] ProperSystem |
| |- | | |- |
− | | 8 || NeedsSecureDelete | + | | 101 || [3.0.0+] SafeMode |
| |} | | |} |
| | | |
− | = SaveDataMetaType = | + | Determines the storage where the savedata is stored. |
− | This is "nn::fs::SaveDataMetaType". | + | |
| + | = SaveDataType = |
| + | This is "nn::fs::SaveDataType". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 2,155: |
Line 2,288: |
| ! Value || Name | | ! Value || Name |
| |- | | |- |
− | | 0 || None | + | | 0 || System |
| + | |- |
| + | | 1 || Account |
| + | |- |
| + | | 2 || Bcat |
| + | |- |
| + | | 3 || Device |
| + | |- |
| + | | 4 || [3.0.0+] Temporary |
| |- | | |- |
− | | 1 || Thumbnail | + | | 5 || [3.0.0+] Cache |
| |- | | |- |
− | | 2 || ExtensionContext | + | | 6 || [4.0.0+] SystemBcat |
| |} | | |} |
| | | |
− | = ImageDirectoryId = | + | = SaveDataRank = |
− | This is "nn::fs::ImageDirectoryId". | + | This is "nn::fs::SaveDataRank". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 2,169: |
Line 2,310: |
| ! Value || Name | | ! Value || Name |
| |- | | |- |
− | | 0 || Nand | + | | 0 || Primary |
| |- | | |- |
− | | 1 || SdCard | + | | 1 || Secondary |
| |} | | |} |
| | | |
− | = CloudBackupWorkStorageId = | + | = SaveDataEnumerateOption = |
− | This is "nn::fs::CloudBackupWorkStorageId". | + | This is "nn::fs::SaveDataEnumerateOption". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 2,181: |
Line 2,322: |
| ! Value || Name | | ! Value || Name |
| |- | | |- |
− | | 0 || Nand
| + | | 1 || AllRank |
− | |-
| |
− | | 1 || SdCard | |
| |} | | |} |
| | | |
− | = CustomStorageId = | + | = SaveDataFlags = |
− | This is "nn::fs::CustomStorageId". | + | This is "nn::fs::SaveDataFlags". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 2,193: |
Line 2,332: |
| ! Value || Name | | ! Value || Name |
| |- | | |- |
− | | 0 || System | + | | 1 || KeepAfterResettingSystemSaveData |
| + | |- |
| + | | 2 || KeepAfterRefurbishment |
| + | |- |
| + | | 4 || KeepAfterResettingSystemSaveDataWithoutUserSaveData |
| |- | | |- |
− | | 1 || SdCard | + | | 8 || NeedsSecureDelete |
| |} | | |} |
| | | |
− | = Priority = | + | = SaveDataMetaType = |
− | This is "nn::fs::Priority". | + | This is "nn::fs::SaveDataMetaType". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 2,205: |
Line 2,348: |
| ! Value || Name | | ! Value || Name |
| |- | | |- |
− | | 0 || Realtime | + | | 0 || None |
| |- | | |- |
− | | 1 || Normal | + | | 1 || Thumbnail |
| |- | | |- |
− | | 2 || Low | + | | 2 || ExtensionContext |
| |} | | |} |
| | | |
− | = PriorityRaw = | + | = ImageDirectoryId = |
− | This is "nn::fs::PriorityRaw". | + | This is "nn::fs::ImageDirectoryId". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 2,219: |
Line 2,362: |
| ! Value || Name | | ! Value || Name |
| |- | | |- |
− | | 0 || Realtime | + | | 0 || Nand |
| |- | | |- |
− | | 1 || Normal | + | | 1 || SdCard |
− | |-
| |
− | | 2 || Low
| |
− | |-
| |
− | | 3 || Background
| |
| |} | | |} |
| | | |
− | = AbortSpecifier = | + | = CloudBackupWorkStorageId = |
− | This is "nn::fs::AbortSpecifier". | + | This is "nn::fs::CloudBackupWorkStorageId". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 2,235: |
Line 2,374: |
| ! Value || Name | | ! Value || Name |
| |- | | |- |
− | | 0 || Default | + | | 0 || Nand |
| |- | | |- |
− | | 1 || Abort | + | | 1 || SdCard |
− | |-
| |
− | | 2 || ReturnResult
| |
| |} | | |} |
| | | |
− | = OperationId = | + | = CustomStorageId = |
− | This is "nn::fs::OperationId". | + | This is "nn::fs::CustomStorageId". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 2,249: |
Line 2,386: |
| ! Value || Name | | ! Value || Name |
| |- | | |- |
− | | 0 || Clear | + | | 0 || System |
| |- | | |- |
− | | 1 || ClearSignature | + | | 1 || SdCard |
− | |-
| |
− | | 2 || InvalidateCache
| |
− | |-
| |
− | | 3 || QueryRange
| |
| |} | | |} |
| | | |
− | = MountHostOption = | + | = Priority = |
− | This is "nn::fs::MountHostOption". | + | This is "nn::fs::Priority". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 2,265: |
Line 2,398: |
| ! Value || Name | | ! Value || Name |
| |- | | |- |
− | | 1 || PseudoCaseSensitive | + | | 0 || Realtime |
| + | |- |
| + | | 1 || Normal |
| + | |- |
| + | | 2 || Low |
| |} | | |} |
| | | |
− | = BisPartitionId = | + | = PriorityRaw = |
− | This is "nn::fs::BisPartitionId". | + | This is "nn::fs::PriorityRaw". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 2,275: |
Line 2,412: |
| ! Value || Name | | ! Value || Name |
| |- | | |- |
− | | 0 || BootPartition1Root | + | | 0 || Realtime |
| |- | | |- |
− | | 10 || BootPartition2Root | + | | 1 || Normal |
| |- | | |- |
− | | 20 || UserDataRoot | + | | 2 || Low |
| |- | | |- |
− | | 21 || BootConfigAndPackage2Part1 | + | | 3 || Background |
− | |- | + | |} |
− | | 22 || BootConfigAndPackage2Part2 | + | |
| + | = AbortSpecifier = |
| + | This is "nn::fs::AbortSpecifier". |
| + | |
| + | {| class="wikitable" border="1" |
| |- | | |- |
− | | 23 || BootConfigAndPackage2Part3 | + | ! Value || Name |
| |- | | |- |
− | | 24 || BootConfigAndPackage2Part4 | + | | 0 || Default |
| |- | | |- |
− | | 25 || BootConfigAndPackage2Part5 | + | | 1 || Abort |
| |- | | |- |
− | | 26 || BootConfigAndPackage2Part6 | + | | 2 || ReturnResult |
| + | |} |
| + | |
| + | = OperationId = |
| + | This is "nn::fs::OperationId". |
| + | |
| + | {| class="wikitable" border="1" |
| |- | | |- |
− | | 27 || CalibrationBinary | + | ! Value || Name |
| |- | | |- |
− | | 28 || CalibrationFile | + | | 0 || Clear |
| |- | | |- |
− | | 29 || SafeMode | + | | 1 || ClearSignature |
| |- | | |- |
− | | 30 || User | + | | 2 || InvalidateCache |
| |- | | |- |
− | | 31 || System | + | | 3 || QueryRange |
− | |- | + | |} |
− | | 32 || SystemProperEncryption | + | |
| + | = MountHostOption = |
| + | This is "nn::fs::MountHostOption". |
| + | |
| + | {| class="wikitable" border="1" |
| |- | | |- |
− | | 33 || SystemProperPartition | + | ! Value || Name |
| |- | | |- |
− | | 34 || SignedSystemPartitionOnSafeMode | + | | 1 || PseudoCaseSensitive |
| |} | | |} |
| | | |
− | = MmcSpeedMode = | + | = BisPartitionId = |
| + | This is "nn::fs::BisPartitionId". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value || Name |
| + | |- |
| + | | 0 || BootPartition1Root |
| + | |- |
| + | | 10 || BootPartition2Root |
| + | |- |
| + | | 20 || UserDataRoot |
| + | |- |
| + | | 21 || BootConfigAndPackage2Part1 |
| + | |- |
| + | | 22 || BootConfigAndPackage2Part2 |
| + | |- |
| + | | 23 || BootConfigAndPackage2Part3 |
| + | |- |
| + | | 24 || BootConfigAndPackage2Part4 |
| + | |- |
| + | | 25 || BootConfigAndPackage2Part5 |
| + | |- |
| + | | 26 || BootConfigAndPackage2Part6 |
| + | |- |
| + | | 27 || CalibrationBinary |
| + | |- |
| + | | 28 || CalibrationFile |
| + | |- |
| + | | 29 || SafeMode |
| + | |- |
| + | | 30 || User |
| + | |- |
| + | | 31 || System |
| + | |- |
| + | | 32 || SystemProperEncryption |
| + | |- |
| + | | 33 || SystemProperPartition |
| + | |- |
| + | | 34 || SignedSystemPartitionOnSafeMode |
| + | |} |
| + | |
| + | = SdCardSpeedMode = |
| + | This is "nn::fs::SdCardSpeedMode". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value || Name |
| + | |- |
| + | | 0 || Identification |
| + | |- |
| + | | 1 || DefaultSpeed |
| + | |- |
| + | | 2 || HighSpeed |
| + | |- |
| + | | 3 || Sdr12 |
| + | |- |
| + | | 4 || Sdr25 |
| + | |- |
| + | | 5 || Sdr50 |
| + | |- |
| + | | 6 || Sdr104 |
| + | |- |
| + | | 7 || Ddr50 |
| + | |- |
| + | | 8 || Unknown |
| + | |} |
| + | |
| + | = MmcSpeedMode = |
| This is "nn::fs::MmcSpeedMode". | | This is "nn::fs::MmcSpeedMode". |
| | | |
Line 2,317: |
Line 2,536: |
| ! Value || Name | | ! Value || Name |
| |- | | |- |
− | | 0 || Identification | + | | 0 || Identification |
− | |- | + | |- |
− | | 1 || LegacySpeed | + | | 1 || LegacySpeed |
− | |- | + | |- |
− | | 2 || HighSpeed | + | | 2 || HighSpeed |
− | |- | + | |- |
− | | 3 || Hs200 | + | | 3 || Hs200 |
− | |- | + | |- |
− | | 4 || Hs400 | + | | 4 || Hs400 |
| + | |- |
| + | | 5 || Unknown |
| + | |} |
| + | |
| + | = MmcPartition = |
| + | This is "nn::fs::MmcPartition". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value || Name |
| + | |- |
| + | | 0 || UserData |
| + | |- |
| + | | 1 || BootPartition1 |
| + | |- |
| + | | 2 || BootPartition2 |
| + | |} |
| + | |
| + | = StorageErrorInfo = |
| + | This is "nn::fs::StorageErrorInfo". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x4 |
| + | | NumActivationFailures |
| + | |- |
| + | | 0x4 |
| + | | 0x4 |
| + | | NumActivationErrorCorrections |
| + | |- |
| + | | 0x8 |
| + | | 0x4 |
| + | | NumReadWriteFailures |
| + | |- |
| + | | 0xC |
| + | | 0x4 |
| + | | NumReadWriteErrorCorrections |
| + | |} |
| + | |
| + | = GameCardErrorInfo = |
| + | This is "nn::fs::GameCardErrorInfo". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x4 |
| + | | GameCardCrcErrorNum |
| + | |- |
| + | | 0x4 |
| + | | 0x4 |
| + | | AsicCrcErrorNum |
| + | |- |
| + | | 0x8 |
| + | | 0x4 |
| + | | RefreshNum |
| + | |- |
| + | | 0xC |
| + | | 0x4 |
| + | | RetryLimitOutNum |
| + | |} |
| + | |
| + | = GameCardErrorReportInfo = |
| + | This is "nn::fs::GameCardErrorReportInfo". This is a 0x40-byte struct. |
| + | |
| + | = GameCardHandle = |
| + | This is "nn::fs::GameCardHandle". This is an u32. |
| + | |
| + | = GameCardPartition = |
| + | This is "nn::fs::GameCardPartition". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value || Name |
| + | |- |
| + | | 0 || Update |
| + | |- |
| + | | 1 || Normal |
| + | |- |
| + | | 2 || Secure |
| + | |- |
| + | | 3 || [4.0.0+] Logo |
| + | |} |
| + | |
| + | = GameCardPartitionRaw = |
| + | This is "nn::fs::GameCardPartitionRaw". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value || Name |
| + | |- |
| + | | 0 || NormalReadOnly |
| + | |- |
| + | | 1 || SecureReadOnly |
| + | |- |
| + | | 2 || RootWriteOnly |
| + | |} |
| + | |
| + | = GameCardAttribute = |
| + | This is "nn::fs::GameCardAttribute". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value || Name |
| + | |- |
| + | | 1 || AutoBootFlag |
| + | |- |
| + | | 2 || HistoryEraseFlag |
| + | |- |
| + | | 4 || [4.0.0+] RepairToolFlag |
| + | |- |
| + | | 8 || [9.0.0+] DifferentRegionCupToTerraDeviceFlag |
| + | |- |
| + | | 16 || [9.0.0+] DifferentRegionCupToGlobalDeviceFlag |
| + | |} |
| + | |
| + | = GameCardSize = |
| + | This is "nn::fs::GameCardSize". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value || Name |
| + | |- |
| + | | 1 || Size1GB |
| + | |- |
| + | | 2 || Size2GB |
| + | |- |
| + | | 4 || Size4GB |
| + | |- |
| + | | 8 || Size8GB |
| + | |- |
| + | | 16 || Size16GB |
| + | |- |
| + | | 32 || Size32GB |
| + | |} |
| + | |
| + | = GameCardClockRate = |
| + | This is "nn::fs::GameCardClockRate". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value || Name |
| + | |- |
| + | | 25 || ClockRate25MHz |
| + | |- |
| + | | 50 || ClockRate50MHz |
| + | |} |
| + | |
| + | = GameCardCompatibilityType = |
| + | This is "nn::fs::GameCardCompatibilityType". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value || Name |
| + | |- |
| + | | 0 || Global |
| |- | | |- |
− | | 5 || Unknown | + | | 1 || China |
| |} | | |} |
| | | |
− | = MmcPartition = | + | = GameCardUpdatePartitionInfo = |
− | This is "nn::fs::MmcPartition". | + | This is "nn::fs::GameCardUpdatePartitionInfo". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
− | ! Value || Name | + | ! Offset |
| + | ! Size |
| + | ! Description |
| |- | | |- |
− | | 0 || UserData | + | | 0x0 |
| + | | 0x4 |
| + | | Version |
| |- | | |- |
− | | 1 || BootPartition1 | + | | 0x4 |
| + | | 0x4 |
| + | | Reserved |
| |- | | |- |
− | | 2 || BootPartition2 | + | | 0x8 |
| + | | 0x8 |
| + | | Id |
| |} | | |} |
| | | |
− | = GameCardPartition = | + | = CardId1 = |
− | This is "nn::fs::GameCardPartition". | + | This is "nn::gc::detail::CardId1". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
− | ! Value || Name | + | ! Offset |
| + | ! Size |
| + | ! Description |
| |- | | |- |
− | | 0 || Update | + | | 0x0 |
| + | | 0x1 |
| + | | MakerCode |
| |- | | |- |
− | | 1 || Normal | + | | 0x1 |
| + | | 0x1 |
| + | | MemoryCapacity |
| |- | | |- |
− | | 2 || Secure | + | | 0x2 |
| + | | 0x1 |
| + | | Reserved |
| |- | | |- |
− | | 3 || [4.0.0+] Logo | + | | 0x3 |
| + | | 0x1 |
| + | | MemoryType |
| |} | | |} |
| | | |
− | = GameCardPartitionRaw = | + | = CardId2 = |
− | This is "nn::fs::GameCardPartitionRaw". | + | This is "nn::gc::detail::CardId2". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
− | ! Value || Name | + | ! Offset |
| + | ! Size |
| + | ! Description |
| |- | | |- |
− | | 0 || NormalReadOnly | + | | 0x0 |
| + | | 0x1 |
| + | | CardSecurityNumber |
| |- | | |- |
− | | 1 || SecureReadOnly | + | | 0x1 |
| + | | 0x1 |
| + | | CardType |
| |- | | |- |
− | | 2 || RootWriteOnly | + | | 0x2 |
| + | | 0x2 |
| + | | Reserved |
| |} | | |} |
| | | |
− | = GameCardAttribute = | + | = CardId3 = |
− | This is "nn::fs::GameCardAttribute". | + | This is "nn::gc::detail::CardId3". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
− | ! Value || Name | + | ! Offset |
− | |-
| + | ! Size |
− | | 1 || AutoBootFlag
| + | ! Description |
− | |-
| |
− | | 2 || HistoryEraseFlag
| |
− | |-
| |
− | | 4 || [4.0.0+] RepairToolFlag
| |
− | |-
| |
− | | 8 || [9.0.0+] DifferentRegionCupToTerraDeviceFlag
| |
| |- | | |- |
− | | 16 || [9.0.0+] DifferentRegionCupToGlobalDeviceFlag | + | | 0x0 |
| + | | 0x4 |
| + | | Reserved |
| |} | | |} |
| | | |
− | = GameCardSize = | + | = GameCardIdSet = |
− | This is "nn::fs::GameCardSize". | + | This is "nn::gc::GameCardIdSet". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
− | ! Value || Name | + | ! Offset |
− | |-
| + | ! Size |
− | | 1 || Size1GB
| + | ! Description |
− | |-
| |
− | | 2 || Size2GB
| |
− | |-
| |
− | | 4 || Size4GB
| |
| |- | | |- |
− | | 8 || Size8GB | + | | 0x0 |
| + | | 0x4 |
| + | | [[#CardId1|Id1]] |
| |- | | |- |
− | | 16 || Size16GB | + | | 0x4 |
| + | | 0x4 |
| + | | [[#CardId2|Id2]] |
| |- | | |- |
− | | 32 || Size32GB | + | | 0x8 |
| + | | 0x4 |
| + | | [[#CardId3|Id3]] |
| |} | | |} |
| | | |
− | = GameCardClockRate = | + | = RmaInformation = |
− | This is "nn::fs::GameCardClockRate". | + | This is "nn::gc::RmaInformation". This is a 0x200-byte struct. |
− | | |
− | {| class="wikitable" border="1"
| |
− | |-
| |
− | ! Value || Name
| |
− | |-
| |
− | | 25 || ClockRate25MHz
| |
− | |-
| |
− | | 50 || ClockRate50MHz
| |
− | |}
| |
| | | |
| = SimulatingDeviceType = | | = SimulatingDeviceType = |