Line 1,380: |
Line 1,380: |
| ! 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,418: |
| | 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,452: |
| | 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,466: |
Line 1,466: |
| | 501 || [6.0.0+] [[#ClearDeviceSimulationEvent]] | | | 501 || [6.0.0+] [[#ClearDeviceSimulationEvent]] |
| |} | | |} |
| + | |
| + | == IsSdCardInserted == |
| + | No input. Returns an output bool. |
| + | |
| + | == GetSdCardSpeedMode == |
| + | No input. Returns an output [[#SdCardSpeedMode]]. |
| + | |
| + | == GetSdCardCid == |
| + | Takes a type-0x6 output buffer and an input s64 '''BufferSize'''. No output. |
| + | |
| + | == GetSdCardUserAreaSize == |
| + | No input. Returns an output s64 '''SdCardUserAreaSize'''. |
| + | |
| + | == GetSdCardProtectedAreaSize == |
| + | No input. Returns an output s64 '''SdCardProtectedAreaSize'''. |
| + | |
| + | == GetAndClearSdCardErrorInfo == |
| + | Takes a type-0x6 output buffer '''LogBuffer''' and an input s64 '''LogBufferSize'''. Returns an output [[#StorageErrorInfo]] and an output s64 '''LogSize'''. |
| + | |
| + | == GetMmcCid == |
| + | Takes a type-0x6 output buffer and an input s64 '''BufferSize'''. No output. |
| + | |
| + | == GetMmcSpeedMode == |
| + | No input. Returns an output [[#MmcSpeedMode]]. |
| + | |
| + | == EraseMmc == |
| + | Takes an input [[#MmcPartition]]. No output. |
| + | |
| + | == GetMmcPartitionSize == |
| + | Takes an input [[#MmcPartition]]. Returns an output s64 '''MmcPartitionSize'''. |
| + | |
| + | == GetMmcPatrolCount == |
| + | No input. Returns an output u32 '''MmcPatrolCount'''. |
| + | |
| + | == GetAndClearMmcErrorInfo == |
| + | Takes a type-0x6 output buffer '''LogBuffer''' and an input s64 '''LogBufferSize'''. Returns an output [[#StorageErrorInfo]] and an output s64 '''LogSize'''. |
| + | |
| + | == GetMmcExtendedCsd == |
| + | Takes a type-0x6 output buffer and an input s64 '''BufferSize'''. No output. |
| + | |
| + | == SuspendMmcPatrol == |
| + | No input/output. |
| + | |
| + | == ResumeMmcPatrol == |
| + | No input/output. |
| | | |
| == IsGameCardInserted == | | == IsGameCardInserted == |
− | No input, returns a bool. | + | No input. Returns an output bool. |
| + | |
| + | == EraseGameCard == |
| + | Takes an input [[#GameCardSize]] and an input u64 '''NormalAreaSize'''. No output. |
| | | |
| == GetGameCardHandle == | | == GetGameCardHandle == |
− | No input, returns an u32 '''GameCardHandle'''. | + | No input. Returns an output [[#GameCardHandle]]. |
| | | |
| == GetGameCardUpdatePartitionInfo == | | == GetGameCardUpdatePartitionInfo == |
− | Returns a [[NCM_services#ProgramId|ProgramId]] and the title-version for it. | + | Takes an input [[#GameCardHandle]]. Returns an output [[#GameCardUpdatePartitionInfo]]. |
| | | |
− | * 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.
| + | == FinalizeGameCardDriver == |
− | * Output u64 with ARMS-gamecard: [[NCM_services#ProgramId|ProgramId]] 0100000000000816.
| + | No input/output. |
| | | |
− | [[NS_Services|NS]] appears to only use this with [[NCM_services|NCM]] for checking whether a sysupdate is required. | + | == GetGameCardAttribute == |
| + | Takes an input [[#GameCardHandle]]. Returns an output [[#GameCardAttribute]]. |
| | | |
| == GetGameCardDeviceCertificate == | | == GetGameCardDeviceCertificate == |
− | Takes a type-0x6 output buffer, an u32 '''GameCardHandle''' and an u64 '''DeviceCertificateBufferSize'''. No output. | + | Takes a type-0x6 output buffer, an input s64 '''BufferSize''' and an input [[#GameCardHandle]]. No output. |
| + | |
| + | == GetGameCardAsicInfo == |
| + | Takes a type-0x5 input buffer '''FwBuffer''', a type-0x6 output buffer containing [[#RmaInformation]] and two input s64s '''FwBufferSize''' and '''RmaInformationSize'''. No output. |
| + | |
| + | == GetGameCardIdSet == |
| + | Takes a type-0x6 output buffer containing a [[#GameCardIdSet]] and an input s64 '''BufferSize'''. No output. |
| + | |
| + | == WriteToGameCardDirectly == |
| + | Takes a type-0x6 output buffer and two input s64s '''Offset''' and '''BufferSize'''. No output. |
| + | |
| + | == SetVerifyWriteEnalbleFlag == |
| + | Takes an input bool. No output. |
| + | |
| + | == GetGameCardImageHash == |
| + | Takes a type-0x6 output buffer, an input s64 '''BufferSize''' and an input [[#GameCardHandle]]. No output. |
| + | |
| + | == GetGameCardDeviceIdForProdCard == |
| + | Takes a type-0x5 input buffer '''CardHeaderForDev''', a type-0x6 output buffer and two input s64s '''CardHeaderForDevSize''' and '''BufferSize'''. No output. |
| + | |
| + | == EraseAndWriteParamDirectly == |
| + | Takes a type-0x5 input buffer and an input s64 '''BufferSize'''. No output. |
| + | |
| + | == ReadParamDirectly == |
| + | Takes a type-0x6 output buffer and an input s64 '''BufferSize'''. No output. |
| + | |
| + | == ForceEraseGameCard == |
| + | No input/output. |
| + | |
| + | == GetGameCardErrorInfo == |
| + | No input. Returns an output [[#GameCardErrorInfo]]. |
| + | |
| + | == GetGameCardErrorReportInfo == |
| + | No input. Returns an output [[#GameCardErrorReportInfo]]. |
| + | |
| + | == GetGameCardDeviceId == |
| + | Takes a type-0x6 output buffer and an input s64 '''BufferSize'''. No output. |
| | | |
| == ChallengeCardExistence == | | == ChallengeCardExistence == |
− | Takes a type-0x6 output buffer, two type-0x5 input buffers and an u32 '''GameCardHandle'''. No output. | + | Takes a type-0x6 output buffer, two type-0x5 input buffers and an input [[#GameCardHandle]]. 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]]. | | [9.0.0+] The [[Account_services|account]] system module uses this as part of a new challenge-response mechanism for [[Network#aauth|application authentication]]. |
| | | |
| == GetGameCardCompatibilityType == | | == GetGameCardCompatibilityType == |
− | Takes an u32 '''GameCardHandle''', returns an u8 '''CompatibilityType''' (0x00 = Global, 0x01 = China) from [[Gamecard_Format#Gamecard_Info|Gamecard Info]]. | + | Takes an input [[#GameCardHandle]]. Returns an output [[#GameCardCompatibilityType]]. |
| + | |
| + | == SetSpeedEmulationMode == |
| + | Takes an input [[#SpeedEmulationMode]]. No output. |
| + | |
| + | == GetSpeedEmulationMode == |
| + | No input. Returns an output [[#SpeedEmulationMode]]. |
| + | |
| + | == SuspendSdmmcControl == |
| + | No input/output. |
| + | |
| + | == ResumeSdmmcControl == |
| + | No input/output. |
| | | |
| == GetSdmmcConnectionStatus == | | == GetSdmmcConnectionStatus == |
− | Takes a total of 4-bytes of input, returns a total of 8-bytes of output. | + | Takes a total of 4-bytes of input. Returns a total of 8-bytes of output. |
| | | |
| == SetDeviceSimulationEvent == | | == SetDeviceSimulationEvent == |
− | Takes a total of 0x14-bytes of input, no output. | + | Takes a total of 0x14-bytes of input. No output. |
| | | |
| == ClearDeviceSimulationEvent == | | == ClearDeviceSimulationEvent == |
− | Takes a total of 4-bytes of input, no output. | + | Takes a total of 4-bytes of input. No output. |
| | | |
| = IEventNotifier = | | = IEventNotifier = |
Line 2,308: |
Line 2,405: |
| |- | | |- |
| | 34 || SignedSystemPartitionOnSafeMode | | | 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 |
| |} | | |} |
| | | |
Line 2,343: |
Line 2,466: |
| | 2 || BootPartition2 | | | 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 = | | = GameCardPartition = |
Line 2,423: |
Line 2,604: |
| | 50 || ClockRate50MHz | | | 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 |
| + | |} |
| + | |
| + | = CardId1 = |
| + | This is "nn::gc::detail::CardId1". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x1 |
| + | | MakerCode |
| + | |- |
| + | | 0x1 |
| + | | 0x1 |
| + | | 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 |
| + | | Reserved |
| + | |} |
| + | |
| + | = CardId3 = |
| + | This is "nn::gc::detail::CardId3". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x4 |
| + | | Reserved |
| + | |} |
| + | |
| + | = 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]] |
| + | |} |
| + | |
| + | = RmaInformation = |
| + | This is "nn::gc::RmaInformation". This is a 0x200-byte struct. |
| | | |
| = SimulatingDeviceType = | | = SimulatingDeviceType = |