Changes

Jump to navigation Jump to search
7,210 bytes added ,  20:42, 22 March 2022
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 =

Navigation menu