Changes

Jump to navigation Jump to search
no edit summary
Line 14: Line 14:     
== OpenCodeFileSystem ==
 
== OpenCodeFileSystem ==
Takes an [[NCM_services#ProgramId|ProgramId]] and a [[#ContentPath]]. Returns an [[#IFileSystem]].
+
Takes a type-0x19 input buffer containing a [[#FspPath]] and an input [[NCM_services#ProgramId|ProgramId]]. Returns an [[#IFileSystem]].
    
[10.0.0+] This now takes an additional type-0x1A output buffer.
 
[10.0.0+] This now takes an additional type-0x1A output buffer.
 +
 +
[16.0.0+] This now takes an additional input [[#ContentAttributes]].
 +
 +
[17.0.0+] This now takes a type-0x6 output buffer instead of a type-0x1A output buffer.
    
== IsArchivedProgram ==
 
== IsArchivedProgram ==
Takes an u64 ProcessId. Returns a bool (1 if the process id's [[#ContentPath]] ends in ".nca").
+
Takes an input u64 ProcessId. Returns a bool (1 if the process id's [[#FspPath]] ends in ".nca").
    
== SetCurrentProcess ==
 
== SetCurrentProcess ==
Takes a ProcessId descriptor.
+
Takes an input u64 ProcessId. No output.
    
= fsp-pr =
 
= fsp-pr =
Line 70: Line 74:  
| 7 || [2.0.0+] [[#OpenFileSystemWithPatch]]
 
| 7 || [2.0.0+] [[#OpenFileSystemWithPatch]]
 
|-
 
|-
| 8 || [16.0.0+] OpenFileSystemWithIdObsolete ([2.0.0-15.0.1] [[#OpenFileSystemWithId]])
+
| 8 || [16.0.0+] [[#OpenFileSystemWithIdObsolete]] ([2.0.0-15.0.1] OpenFileSystemWithId)
 
|-
 
|-
 
| 9 || [3.0.0+] OpenDataFileSystemByProgramId
 
| 9 || [3.0.0+] OpenDataFileSystemByProgramId
 
|-
 
|-
| 10 || [16.0.0+] OpenFileSystemWithId
+
| 10 || [16.0.0+] [[#OpenFileSystemWithId]]
 
|-
 
|-
 
| 11 || [[#OpenBisFileSystem]]
 
| 11 || [[#OpenBisFileSystem]]
Line 308: Line 312:  
| 1019 || [13.0.0+] UnsetDebugOption
 
| 1019 || [13.0.0+] UnsetDebugOption
 
|-
 
|-
| 1100 || [4.0.0+] OverrideSaveDataTransferTokenSignVerificationKey
+
| 1020 || [18.0.0+] OpenMemoryStressor
 +
|-
 +
| 1100 || [4.0.0-17.0.1] OverrideSaveDataTransferTokenSignVerificationKey
 +
|-
 +
| 1101 || [18.0.0+] OverrideSaveDataTransferKeyForTest
 
|-
 
|-
 
| 1110 || [6.0.0+] CorruptSaveDataFileSystemByOffset
 
| 1110 || [6.0.0+] CorruptSaveDataFileSystemByOffset
Line 589: Line 597:     
== OpenFileSystem ==
 
== OpenFileSystem ==
Takes a type-0x19 input [[#ContentPath]] and a [[#FileSystemProxyType]] as parameters. Returns an [[#IFileSystem]].
+
Takes a type-0x19 input buffer containing a [[#FspPath]] and an input [[#FileSystemProxyType]]. Returns an [[#IFileSystem]].
    
[2.0.0+] This function was removed.
 
[2.0.0+] This function was removed.
    
== SetCurrentProcess ==
 
== SetCurrentProcess ==
Takes a pid-descriptor.
+
Takes an input u64 ProcessId. No output.
    
== OpenFileSystemWithPatch ==
 
== OpenFileSystemWithPatch ==
Takes an input [[#FileSystemProxyType]] and an u64 title-id. Returns an [[#IFileSystem]].
+
Takes an input [[#FileSystemProxyType]] and an input [[NCM_services#ProgramId|ProgramId]]. Returns an [[#IFileSystem]].
    
Web-applet loads the [[#FileSystemProxyType]] (which must be '''Manual''') from u32_table[inparam].
 
Web-applet loads the [[#FileSystemProxyType]] (which must be '''Manual''') from u32_table[inparam].
Line 603: Line 611:  
Note: web-applet strings refer to both this cmd and [[#OpenFileSystemWithId]] as "MountContent", but official nn_sf_sync symbols use "OpenXX" names.
 
Note: web-applet strings refer to both this cmd and [[#OpenFileSystemWithId]] as "MountContent", but official nn_sf_sync symbols use "OpenXX" names.
   −
== OpenFileSystemWithId ==
+
== OpenFileSystemWithIdObsolete ==
Takes a type-0x19 input buffer, an [[#FileSystemProxyType]] and an u64 title-id. Returns an [[#IFileSystem]].
+
Takes a type-0x19 input buffer containing a [[#FspPath]], an input [[#FileSystemProxyType]] and an input [[NCM_services#ProgramId|ProgramId]]. Returns an [[#IFileSystem]].
    
The [[#IFileSystem]] must be '''Meta''' if the NCA type is 0.
 
The [[#IFileSystem]] must be '''Meta''' if the NCA type is 0.
Line 617: Line 625:     
When [[#FileSystemProxyType]] is '''Meta''', it uses in64=0xffffffffffffffff internally, otherwise it checks if in64 is set to 0xffffffffffffffff then throws an error if so. When the in64 used internally is not 0xffffffffffffffff, it's compared with the NCA [[NCM_services#ProgramId|ProgramId]], then an error is thrown on mismatch.
 
When [[#FileSystemProxyType]] is '''Meta''', it uses in64=0xffffffffffffffff internally, otherwise it checks if in64 is set to 0xffffffffffffffff then throws an error if so. When the in64 used internally is not 0xffffffffffffffff, it's compared with the NCA [[NCM_services#ProgramId|ProgramId]], then an error is thrown on mismatch.
 +
 +
== OpenFileSystemWithId ==
 +
Takes a type-0x19 input buffer containing a [[#FspPath]], an input [[#ContentAttributes]], an input [[#FileSystemProxyType]] and an input [[NCM_services#ProgramId|ProgramId]]. Returns an [[#IFileSystem]].
    
== OpenBisFileSystem ==
 
== OpenBisFileSystem ==
Takes a type-0x19 input buffer string and a [[#BisPartitionId]]. Official user-process code sets instr[0] = 0 normally. Returns an [[#IFileSystem]].
+
Takes a type-0x19 input buffer containing a [[#FspPath]] and an input [[#BisPartitionId]]. Returns an [[#IFileSystem]].
 +
 
 +
Official user-process code sets instr[0] = 0 normally.
    
Only partitionIDs for FAT partitions are usable with this, otherwise error 0x2EE202 is returned. Seems to be about the same as [[#OpenBisStorage]] except this mounts the partition filesystem instead of allowing direct access to the partition sectors.
 
Only partitionIDs for FAT partitions are usable with this, otherwise error 0x2EE202 is returned. Seems to be about the same as [[#OpenBisStorage]] except this mounts the partition filesystem instead of allowing direct access to the partition sectors.
Line 1,107: Line 1,120:  
|-
 
|-
 
| 221 || [17.0.0+] GetGameCardAsicCertificate
 
| 221 || [17.0.0+] GetGameCardAsicCertificate
 +
|-
 +
| 222 || [18.0.0+] GetGameCardCardHeader
 
|-
 
|-
 
| 300 || [[#SetSpeedEmulationMode]]
 
| 300 || [[#SetSpeedEmulationMode]]
 
|-
 
|-
 
| 301 || [[#GetSpeedEmulationMode]]
 
| 301 || [[#GetSpeedEmulationMode]]
 +
|-
 +
| 302 || [18.0.0+] SetApplicationStorageSpeed
 
|-
 
|-
 
| 400 || [5.0.0+] [[#SuspendSdmmcControl]]
 
| 400 || [5.0.0+] [[#SuspendSdmmcControl]]
Line 1,465: Line 1,482:  
|-
 
|-
 
| 0 || [[#GetChallenge]]
 
| 0 || [[#GetChallenge]]
 +
|-
 +
| 8 || [18.0.0+] SetMode
 +
|-
 +
| 9 || [18.0.0+] SetAttribute
 
|-
 
|-
 
| 16 || [[#SetKeySeedPackage]]
 
| 16 || [[#SetKeySeedPackage]]
Line 1,476: Line 1,497:  
| 63 || [17.0.0+] OpenSaveDataImporter
 
| 63 || [17.0.0+] OpenSaveDataImporter
 
|-
 
|-
| 64 || [6.0.0+] [[#OpenSaveDataImporterDeprecated]] ([5.0.0-5.1.0] OpenSaveDataImporter)
+
| 64 || [6.0.0-17.0.1] [[#OpenSaveDataImporterDeprecated]] ([5.0.0-5.1.0] OpenSaveDataImporter)
 
|-
 
|-
| 65 || [[#OpenSaveDataImporterForDiffImport]]
+
| 65 || [5.0.0-17.0.1] [[#OpenSaveDataImporterForDiffImport]]
 
|-
 
|-
| 66 || [6.0.0+] [[#OpenSaveDataImporterForDuplicateDiffImport]]
+
| 66 || [6.0.0-17.0.1] [[#OpenSaveDataImporterForDuplicateDiffImport]]
 
|-
 
|-
 
| 67 || [6.0.0-16.1.0] [[#OpenSaveDataImporter]]
 
| 67 || [6.0.0-16.1.0] [[#OpenSaveDataImporter]]
Line 1,488: Line 1,509:  
| 69 || [6.0.0+] [[#CancelSuspendingImport]]
 
| 69 || [6.0.0+] [[#CancelSuspendingImport]]
 
|-
 
|-
| 70 || [10.0.0+] DecryptAndVerifyInitialData
+
| 70 || [10.0.0+] CancelSuspendingImportByAttribute
 
|-
 
|-
| 80 || [11.0.0+] DecryptoAndVerifyPortContext
+
| 80 || [11.0.0+] SwapSecondary
 
|}
 
|}
   Line 1,537: Line 1,558:  
| 0 || [[#SetDivisionCount]]
 
| 0 || [[#SetDivisionCount]]
 
|-
 
|-
| 1 || [6.0.0+] [[#GetSaveDataInfo]]
+
| 1 || [6.0.0+] [[#ReadSaveDataExtraData]]
 
|-
 
|-
 
| 16 || [[#OpenSaveDataDiffChunkIterator]]
 
| 16 || [[#OpenSaveDataDiffChunkIterator]]
Line 1,551: Line 1,572:  
| 67 || [6.0.0+] [[#SuspendExport]]
 
| 67 || [6.0.0+] [[#SuspendExport]]
 
|-
 
|-
| 70 || [6.0.0+] [[#GetKeySeed]]
+
| 70 || [6.0.0-17.0.1] [[#GetKeySeed]]
 
|-
 
|-
 
| 71 || [6.0.0+] [[#GetInitialDataMac]]
 
| 71 || [6.0.0+] [[#GetInitialDataMac]]
Line 1,558: Line 1,579:  
|-
 
|-
 
| 73 || [9.0.0+] [[#GetInitialDataMacKeyGeneration]]
 
| 73 || [9.0.0+] [[#GetInitialDataMacKeyGeneration]]
 +
|-
 +
| 74 || [18.0.0+] [[#GetKeySeed]]
 
|-
 
|-
 
| 80 || [6.0.0+] [[#GetImportInitialDataAad]]
 
| 80 || [6.0.0+] [[#GetImportInitialDataAad]]
Line 1,605: Line 1,628:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [6.0.0+] [[#GetSaveDataInfo]]
+
| 0 || [6.0.0+] [[#ReadSaveDataExtraData]]
 
|-
 
|-
 
| 16 || [[#OpenSaveDataDiffChunkIterator]]
 
| 16 || [[#OpenSaveDataDiffChunkIterator]]
Line 1,628: Line 1,651:  
|}
 
|}
   −
== GetSaveDataInfo ==
+
== ReadSaveDataExtraData ==
 
No input/output, takes a type-0x6 output buffer.
 
No input/output, takes a type-0x6 output buffer.
   Line 1,875: Line 1,898:  
|-
 
|-
 
| 4 || Data
 
| 4 || Data
 +
|}
 +
 +
= ContentAttributes =
 +
This is "nn::fs::ContentAttributes".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value || Name
 +
|-
 +
| 0 || None
 +
|-
 +
| 15 || All
 
|}
 
|}
   Line 2,203: Line 2,238:  
|}
 
|}
   −
= StorageErrorInfo =
+
= MemoryReportInfo =
This is "nn::fs::StorageErrorInfo".
+
This is "nn::fs::MemoryReportInfo".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 2,213: Line 2,248:  
|-
 
|-
 
| 0x0
 
| 0x0
| 0x4
+
| 0x8
| NumActivationFailures
+
| PooledBufferFreeSizePeak
 
|-
 
|-
| 0x4
+
| 0x8
| 0x4
+
| 0x8
| NumActivationErrorCorrections
+
| PooledBufferRetriedCount
 
|-
 
|-
 +
| 0x10
 
| 0x8
 
| 0x8
| 0x4
+
| PooledBufferReduceAllocationCount
| NumReadWriteFailures
+
|-
 +
| 0x18
 +
| 0x8
 +
| BufferManagerFreeSizePeak
 +
|-
 +
| 0x20
 +
| 0x8
 +
| BufferManagerRetriedCount
 +
|-
 +
| 0x28
 +
| 0x8
 +
| ExpHeapFreeSizePeak
 +
|-
 +
| 0x30
 +
| 0x8
 +
| BufferPoolFreeSizePeak
 +
|-
 +
| 0x38
 +
| 0x8
 +
| PatrolReadAllocateBufferSuccessCount
 +
|-
 +
| 0x40
 +
| 0x8
 +
| PatrolReadAllocateBufferFailureCount
 +
|-
 +
| 0x48
 +
| 0x8
 +
| BufferManagerTotalAllocatableSizePeak
 +
|-
 +
| 0x50
 +
| 0x8
 +
| BufferPoolAllocateSizeMax
 +
|-
 +
| 0x58
 +
| 0x8
 +
| PooledBufferFailedIdealAllocationCountOnAsyncAccess
 
|-
 
|-
| 0xC
+
| 0x60
| 0x4
+
| 0x20
| NumReadWriteErrorCorrections
+
| Reserved
 
|}
 
|}
   −
= GameCardErrorInfo =
+
= StorageErrorInfo =
This is "nn::fs::GameCardErrorInfo".
+
This is "nn::fs::StorageErrorInfo".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 2,240: Line 2,311:  
| 0x0
 
| 0x0
 
| 0x4
 
| 0x4
| GameCardCrcErrorNum
+
| NumActivationFailures
 
|-
 
|-
 
| 0x4
 
| 0x4
 
| 0x4
 
| 0x4
| AsicCrcErrorNum
+
| NumActivationErrorCorrections
 
|-
 
|-
 
| 0x8
 
| 0x8
 
| 0x4
 
| 0x4
| RefreshNum
+
| NumReadWriteFailures
 
|-
 
|-
 
| 0xC
 
| 0xC
 
| 0x4
 
| 0x4
| RetryLimitOutNum
+
| NumReadWriteErrorCorrections
 
|}
 
|}
   −
= GameCardErrorReportInfo =
+
= GameCardErrorInfo =
This is "nn::fs::GameCardErrorReportInfo". This is a 0x40-byte struct.
+
This is "nn::fs::GameCardErrorInfo".
 
  −
= GameCardHandle =
  −
This is "nn::fs::GameCardHandle". This is an u32.
  −
 
  −
= GameCardPartition =
  −
This is "nn::fs::GameCardPartition".
      
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Value || Name
+
! Offset
 +
! Size
 +
! Description
 
|-
 
|-
| 0 || Update
+
| 0x0
 +
| 0x2
 +
| GameCardCrcErrorCount
 
|-
 
|-
| 1 || Normal
+
| 0x2
 +
| 0x2
 +
| Reserved
 
|-
 
|-
| 2 || Secure
+
| 0x4
 +
| 0x2
 +
| AsicCrcErrorCount
 
|-
 
|-
| 3 || [4.0.0+] Logo
+
| 0x6
|}
+
| 0x2
 
+
| Reserved
= GameCardPartitionRaw =
  −
This is "nn::fs::GameCardPartitionRaw".
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Value || Name
+
| 0x8
 +
| 0x2
 +
| RefreshCount
 
|-
 
|-
| 0 || NormalReadOnly
+
| 0xA
 +
| 0x2
 +
| Reserved
 
|-
 
|-
| 1 || SecureReadOnly
+
| 0xC
 +
| 0x2
 +
| ReadRetryCount
 
|-
 
|-
| 2 || RootWriteOnly
+
| 0xE
 +
| 0x2
 +
| TimeoutRetryErrorCount
 
|}
 
|}
   −
= GameCardAttribute =
+
= GameCardErrorReportInfo =
This is "nn::fs::GameCardAttribute".
+
This is "nn::fs::GameCardErrorReportInfo".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Value || Name
+
! Offset
 +
! Size
 +
! Description
 
|-
 
|-
| 1 || AutoBootFlag
+
| 0x0
 +
| 0x10
 +
| [[#GameCardErrorInfo|ErrorInfo]]
 
|-
 
|-
| 2 || HistoryEraseFlag
+
| 0x10
 +
| 0x2
 +
| AsicReinitializeFailureDetail
 
|-
 
|-
| 4 || [4.0.0+] RepairToolFlag
+
| 0x12
 +
| 0x2
 +
| InsertionCount
 
|-
 
|-
| 8 || [9.0.0+] DifferentRegionCupToTerraDeviceFlag
+
| 0x14
 +
| 0x2
 +
| RemovalCount
 
|-
 
|-
| 16 || [9.0.0+] DifferentRegionCupToGlobalDeviceFlag
+
| 0x16
|}
+
| 0x2
 
+
| AsicReinitializeCount
= GameCardSize =
  −
This is "nn::fs::GameCardSize".
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Value || Name
+
| 0x18
 +
| 0x4
 +
| AsicInitializeCount
 
|-
 
|-
| 1 || Size1GB
+
| 0x1C
 +
| 0x2
 +
| AsicReinitializeFailureCount
 
|-
 
|-
| 2 || Size2GB
+
| 0x1E
 +
| 0x2
 +
| AwakenFailureCount
 +
|-
 +
| 0x20
 +
| 0x2
 +
| Reserved
 
|-
 
|-
| 4 || Size4GB
+
| 0x22
 +
| 0x2
 +
| RefreshCount
 
|-
 
|-
| 8 || Size8GB
+
| 0x24
 +
| 0x4
 +
| LastReadErrorPageAddress
 
|-
 
|-
| 16 || Size16GB
+
| 0x28
 +
| 0x4
 +
| LastReadErrorPageCount
 
|-
 
|-
| 32 || Size32GB
+
| 0x2C
|}
+
| 0x4
 
+
| AwakenCount
= GameCardClockRate =
  −
This is "nn::fs::GameCardClockRate".
  −
 
  −
{| class="wikitable" border="1"
   
|-
 
|-
! Value || Name
+
| 0x30
 +
| 0x4
 +
| ReadCountFromInsert
 
|-
 
|-
| 25 || ClockRate25MHz
+
| 0x34
 +
| 0x4
 +
| ReadCountFromAwaken
 
|-
 
|-
| 50 || ClockRate50MHz
+
| 0x38
 +
| 0x8
 +
| Reserved
 
|}
 
|}
   −
= GameCardCompatibilityType =
+
= GameCardHandle =
This is "nn::fs::GameCardCompatibilityType".
+
This is "nn::fs::GameCardHandle". This is an u32.
 +
 
 +
= GameCardPartition =
 +
This is "nn::fs::GameCardPartition".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 2,348: Line 2,452:  
! Value || Name
 
! Value || Name
 
|-
 
|-
| 0 || Global
+
| 0 || Update
 
|-
 
|-
| 1 || China
+
| 1 || Normal
 +
|-
 +
| 2 || Secure
 +
|-
 +
| 3 || [4.0.0+] Logo
 
|}
 
|}
   −
= GameCardUpdatePartitionInfo =
+
= GameCardPartitionRaw =
This is "nn::fs::GameCardUpdatePartitionInfo".
+
This is "nn::fs::GameCardPartitionRaw".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset
+
! Value || Name
! Size
  −
! Description
   
|-
 
|-
| 0x0
+
| 0 || NormalReadOnly
| 0x4
  −
| Version
   
|-
 
|-
| 0x4
+
| 1 || SecureReadOnly
| 0x4
  −
| Reserved
   
|-
 
|-
| 0x8
+
| 2 || RootWriteOnly
| 0x8
  −
| Id
   
|}
 
|}
   −
= CardId1 =
+
= GameCardAttribute =
This is "nn::gc::detail::CardId1".
+
This is "nn::fs::GameCardAttribute".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset
+
! Value || Name
! Size
  −
! Description
  −
|-
  −
| 0x0
  −
| 0x1
  −
| MakerCode
  −
|-
  −
| 0x1
  −
| 0x1
  −
| MemoryCapacity
   
|-
 
|-
 +
| 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
 +
|-
 +
| 1 || China
 +
|}
 +
 +
= GameCardUpdatePartitionInfo =
 +
This is "nn::fs::GameCardUpdatePartitionInfo".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
| Version
 +
|-
 +
| 0x4
 +
| 0x4
 +
| Reserved
 +
|-
 +
| 0x8
 +
| 0x8
 +
| Id
 +
|}
 +
 +
= GameCardIdSet =
 +
This is "nn::gc::GameCardIdSet".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
| [[#CardId1|Id1]]
 +
|-
 +
| 0x4
 +
| 0x4
 +
| [[#CardId2|Id2]]
 +
|-
 +
| 0x8
 +
| 0x4
 +
| [[#CardId3|Id3]]
 +
|}
 +
 +
= CardId1 =
 +
This is "nn::gc::detail::CardId1".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x1
 +
| [[#MakerCodeForCardId1|MakerCode]]
 +
|-
 +
| 0x1
 +
| 0x1
 +
| [[#MemoryCapacity|MemoryCapacity]]
 +
|-
 +
| 0x2
 +
| 0x1
 +
| Reserved
 +
|-
 +
| 0x3
 +
| 0x1
 +
| MemoryType
 +
|}
 +
 +
= CardId2 =
 +
This is "nn::gc::detail::CardId2".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x1
 +
| CardSecurityNumber
 +
|-
 +
| 0x1
 +
| 0x1
 +
| CardType
 +
|-
 +
| 0x2
 
| 0x2
 
| 0x2
| 0x1
   
| Reserved
 
| Reserved
|-
  −
| 0x3
  −
| 0x1
  −
| MemoryType
   
|}
 
|}
   −
= CardId2 =
+
= CardId3 =
This is "nn::gc::detail::CardId2".
+
This is "nn::gc::detail::CardId3".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 2,411: Line 2,639:  
|-
 
|-
 
| 0x0
 
| 0x0
| 0x1
+
| 0x4
| CardSecurityNumber
  −
|-
  −
| 0x1
  −
| 0x1
  −
| CardType
  −
|-
  −
| 0x2
  −
| 0x2
   
| Reserved
 
| Reserved
 
|}
 
|}
   −
= CardId3 =
+
= MakerCodeForCardId1 =
This is "nn::gc::detail::CardId3".
+
This is "nn::gc::detail::MakerCodeForCardId1".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset
+
! Value || Name
! Size
+
|-
! Description
+
| 0x36 || Unknown
 +
|-
 +
| 0xC2 || MegaChips
 
|-
 
|-
| 0x0
+
| 0xAE || Lapis
| 0x4
  −
| Reserved
   
|}
 
|}
   −
= GameCardIdSet =
+
= MemoryCapacity =
This is "nn::gc::GameCardIdSet".
+
This is "nn::gc::detail::MemoryCapacity".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset
+
! Value || Name
! Size
+
|-
! Description
+
| 0xFA || 1GB
 +
|-
 +
| 0xF8 || 2GB
 +
|-
 +
| 0xF0 || 4GB
 
|-
 
|-
| 0x0
+
| 0xE0 || 8GB
| 0x4
  −
| [[#CardId1|Id1]]
   
|-
 
|-
| 0x4
+
| 0xE1 || 16GB
| 0x4
  −
| [[#CardId2|Id2]]
   
|-
 
|-
| 0x8
+
| 0xE2 || 32GB
| 0x4
  −
| [[#CardId3|Id3]]
   
|}
 
|}
   Line 2,534: Line 2,752:  
|}
 
|}
   −
= ContentPath =
+
= FspPath =
These are the 0x300 paths to NCA files for the various filesystems FS can access, beginning with @. They're passed via X descriptors, and returned via various [[Location Resolver services|ncm/lr]] commands.
+
This is "nn::fssrv::sf::FspPath". This is a 0x301-byte string.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"

Navigation menu