Line 12:
Line 12:
|-
|-
| 60
| 60
−
| [[#WriteOperation]]
+
| [[#WriteOperation|WriteOperation]]
|-
|-
| 61
| 61
−
| [[#FinishOperation]]
+
| [[#FinishOperation|FinishOperation]]
|-
|-
| 62
| 62
−
| [[#Sleep]]
+
| [[#Sleep|Sleep]]
|-
|-
| 63
| 63
−
| [[#UpdateKey]]
+
| [[#UpdateKey|UpdateKey]]
|}
|}
Line 57:
Line 57:
== OperationId ==
== OperationId ==
−
The Gamecard ASIC supports a total of 20 operation commands. These commands are passed to the ASIC using the [[#WriteOperation]] MMC command.
+
The Gamecard ASIC supports a total of 20 operation commands. These commands are passed to the ASIC using the [[#WriteOperation|WriteOperation]] MMC command.
Additional data buffers are then read/written as pages of 0x200 bytes each, using standard MMC read/write commands.
Additional data buffers are then read/written as pages of 0x200 bytes each, using standard MMC read/write commands.
Line 67:
Line 67:
|-
|-
| 0x01
| 0x01
−
| [[#SendFirmware]]
+
| [[#SendFirmware|SendFirmware]]
|-
|-
| 0x02
| 0x02
−
| [[#ReceiveCertificate]]
+
| [[#ReceiveCertificate|ReceiveCertificate]]
|-
|-
| 0x03
| 0x03
−
| [[#SendSocCertificate]]
+
| [[#SendSocCertificate|SendSocCertificate]]
|-
|-
| 0x04
| 0x04
−
| [[#ReceiveRandomValue]]
+
| [[#ReceiveRandomValue|ReceiveRandomValue]]
|-
|-
| 0x05
| 0x05
−
| [[#SendRandomValue]]
+
| [[#SendRandomValue|SendRandomValue]]
|-
|-
| 0x06
| 0x06
−
| [[#ReceiveDeviceChallenge]]
+
| [[#ReceiveDeviceChallenge|ReceiveDeviceChallenge]]
|-
|-
| 0x07
| 0x07
−
| [[#RespondDeviceChallenge]]
+
| [[#RespondDeviceChallenge|RespondDeviceChallenge]]
|-
|-
| 0x08
| 0x08
−
| [[#SendHostChallenge]]
+
| [[#SendHostChallenge|SendHostChallenge]]
|-
|-
| 0x09
| 0x09
−
| [[#ReceiveChallengeResponse]]
+
| [[#ReceiveChallengeResponse|ReceiveChallengeResponse]]
|-
|-
| 0x0A
| 0x0A
−
| [[#ChangeModeToSecure]]
+
| [[#ChangeModeToSecure|ChangeModeToSecure]]
|-
|-
| 0x0B
| 0x0B
−
| [[#WriteRegister]]
+
| [[#WriteRegister|WriteRegister]]
|-
|-
| 0x0C
| 0x0C
−
| [[#ReadRegister]]
+
| [[#ReadRegister|ReadRegister]]
|-
|-
| 0x0D
| 0x0D
−
| [[#ChangeGcModeToDebug]]
+
| [[#ChangeGcModeToDebug|ChangeGcModeToDebug]]
|-
|-
| 0x0E
| 0x0E
−
| [[#GetCardHeader]]
+
| [[#GetCardHeader|GetCardHeader]]
|-
|-
| 0x0F
| 0x0F
−
| [[#ChangeGcModeToSecure]]
+
| [[#ChangeGcModeToSecure|ChangeGcModeToSecure]]
|-
|-
| 0x10
| 0x10
−
| [[#SendCardCommand]]
+
| [[#SendCardCommand|SendCardCommand]]
|-
|-
| 0x11
| 0x11
−
| [[#EnableCardBus]]
+
| [[#EnableCardBus|EnableCardBus]]
|-
|-
| 0x12
| 0x12
−
| [[#ExchangeRandomValuesInSecureMode]]
+
| [[#ExchangeRandomValuesInSecureMode|ExchangeRandomValuesInSecureMode]]
|-
|-
| 0x13
| 0x13
−
| [[#ReadRmaInformation]]
+
| [[#ReadRmaInformation|ReadRmaInformation]]
|-
|-
| 0x14
| 0x14
−
| [9.0.0+] [[#ChallengeCardExistence]]
+
| [9.0.0+] [[#ChallengeCardExistence|ChallengeCardExistence]]
|}
|}
Line 462:
Line 462:
== CommandId ==
== CommandId ==
−
These commands are issued by the Gamecard ASIC to the actual Gamecard using the [[#AsicOperation|OperationData]] passed to [[#SendCardCommand]].
+
These commands are issued by the Gamecard ASIC to the actual Gamecard using the [[#AsicOperation|OperationData]] passed to [[#SendCardCommand|SendCardCommand]].
Additional data buffers are then read/written as pages of 0x200 bytes each, using standard MMC read/write commands.
Additional data buffers are then read/written as pages of 0x200 bytes each, using standard MMC read/write commands.
Line 602:
Line 602:
= AsicFirmware =
= AsicFirmware =
−
This is the Gamecard ASIC's user firmware (Lotus ASIC Firmware or LAFW) uploaded through the [[#SendFirmware]] operation.
+
This is the Gamecard ASIC's user firmware (Lotus ASIC Firmware or LAFW) uploaded through the [[#SendFirmware|SendFirmware]] operation.
{| class="wikitable" border="1"
{| class="wikitable" border="1"