Line 12: |
Line 12: |
| |} | | |} |
| | | |
− | For the Gamecard partitions that can be [[Filesystem_services|mounted]], see [[Gamecard_Partition|here]]. | + | For the Gamecard image format, see [[XCI|here]]. |
| | | |
− | For the Gamecard image format, see [[Gamecard_Format|here]]. | + | For the Gamecard ASIC, see [[Lotus3|here]]. |
| | | |
− | For the Gamecard ASIC, see [[Gamecard_ASIC|here]].
| + | = Pinout = |
| + | Note: Pins 1 and 2 act as one when receiving data from the ASIC chip. |
| | | |
− | = Pinout =
| |
| [[File:Gamecard-pinout.png|400px]] | | [[File:Gamecard-pinout.png|400px]] |
| | | |
Line 27: |
Line 27: |
| ! Description | | ! Description |
| |- | | |- |
− | | 0 | + | | 1 |
− | | IRQ? | + | | GND |
| + | | Input |
| + | | Ground |
| + | |- |
| + | | 2 |
| + | | CD# |
| | Output | | | Output |
− | | Always wired to GND inside game cartridge; Possibly used for interrupt signaling | + | | Card Detect; Single pin on cartridge side (hardwired to GND). Bridges pin 1 (GND) and 2 (CD#) on slot side as cartridge is inserted |
− | |- | + | |- |
− | | 1 | + | | 3 |
| + | | CLK |
| + | | Input |
| + | | Clock, 25MHz |
| + | |- |
| + | | 4 |
| | RCLK | | | RCLK |
| | Output | | | Output |
| | Return clock; Game cartridge sends back CLK signal delayed by a few ns | | | Return clock; Game cartridge sends back CLK signal delayed by a few ns |
− | |- | + | |- |
− | | 2 | + | | 5 |
− | | CLK | + | | CS# |
| | Input | | | Input |
− | | Clock, 25MHz | + | | Chip Select |
− | |- | + | |- |
− | | 3 | + | | 6 |
− | | CS | + | | DAT1 |
− | | Input | + | | Inout |
− | | Chip select; Switch pulls this LOW during a transfer | + | | Data bus pin 1 |
− | |- | + | |- |
− | | 4 | + | | 7 |
− | | DAT0 | + | | DAT0 |
| | Inout | | | Inout |
| | Data bus pin 0 | | | Data bus pin 0 |
− | |- | + | |- |
− | | 5 | + | | 8 |
− | | DAT1 | + | | VCC 3.1v |
| + | | Input |
| + | | Power (3.1V) for Internal Core |
| + | |- |
| + | | 9 |
| + | | DAT3 |
| | Inout | | | Inout |
− | | Data bus pin 1 | + | | Data bus pin 3 |
− | |-
| + | |- |
− | | 6
| + | | 10 |
− | | VCC 3.3v
| + | | DAT2 |
− | | Input
| |
− | |
| |
− | |- | |
− | | 7 | |
− | | DAT2 | |
| | Inout | | | Inout |
| | Data bus pin 2 | | | Data bus pin 2 |
− | |- | + | |- |
− | | 8 | + | | 11 |
− | | DAT3
| + | | VCC 1.8v |
− | | Inout
| |
− | | Data bus pin 3
| |
− | |-
| |
− | | 9
| |
− | | VCC 1.8v | |
| | Input | | | Input |
− | | | + | | Power (1.8V) for I/O |
− | |- | + | |- |
− | | 10 | + | | 12 |
− | | DAT4
| |
− | | Inout
| |
− | | Data bus pin 4
| |
− | |-
| |
− | | 11
| |
| | DAT5 | | | DAT5 |
| | Inout | | | Inout |
| | Data bus pin 5 | | | Data bus pin 5 |
| + | |- |
| + | | 13 |
| + | | DAT4 |
| + | | Inout |
| + | | Data bus pin 4 |
| |- | | |- |
− | | 12 | + | | 14 |
| | DAT6 | | | DAT6 |
| | Inout | | | Inout |
| | Data bus pin 6 | | | Data bus pin 6 |
− | |- | + | |- |
− | | 13 | + | | 15 |
| | DAT7 | | | DAT7 |
| | Inout | | | Inout |
| | Data bus pin 7 | | | Data bus pin 7 |
− | |- | + | |- |
− | | 14 | + | | 16 |
| | GND | | | GND |
− | |
| |
− | |
| |
− | |-
| |
− | | 15
| |
− | | RST
| |
| | Input | | | Input |
− | | Reset, active LOW. | + | | Ground |
− | |- | + | |- |
| + | | 17 |
| + | | RST# |
| + | | Input |
| + | | Reset |
| + | |- |
| |} | | |} |
| | | |
| All IO use 1.8V for logic HIGH and 0V for logic LOW. | | All IO use 1.8V for logic HIGH and 0V for logic LOW. |
| + | |
| + | Data pins are approximately 0.75mm in width and are in order of length: 9mm (pin 16), 8mm (pins 17, 5), 6mm (pins 1&2) 3mm (pins 3, 4, 6, 7, 9, 10, 12, 13, 14, 15). |
| + | |
| + | = Slot Pinout = |
| + | [[File:Card_slot.jpg|500px|thumb|right|Annotated slot pinout]] |
| + | |
| + | This just maps the [[#Pinout|cartridge pinout]] onto the slot on the console. |
| + | |
| + | {| class="wikitable" |
| + | ! Pin |
| + | ! Name |
| + | |- |
| + | | 1 |
| + | | GND |
| + | |- |
| + | | 2 |
| + | | CD# |
| + | |- |
| + | | 3 |
| + | | CLK |
| + | |- |
| + | | 4 |
| + | | RCLK |
| + | |- |
| + | | 5 |
| + | | CS# |
| + | |- |
| + | | 6 |
| + | | DAT1 |
| + | |- |
| + | | 7 |
| + | | DAT0 |
| + | |- |
| + | | 8 |
| + | | VCC 3.1v |
| + | |- |
| + | | 9 |
| + | | DAT3 |
| + | |- |
| + | | 10 |
| + | | DAT2 |
| + | |- |
| + | | 11 |
| + | | VCC 1.8v |
| + | |- |
| + | | 12 |
| + | | DAT5 |
| + | |- |
| + | | 13 |
| + | | DAT4 |
| + | |- |
| + | | 14 |
| + | | DAT6 |
| + | |- |
| + | | 15 |
| + | | DAT7 |
| + | |- |
| + | | 16 |
| + | | GND |
| + | |- |
| + | | 17 |
| + | | RST# |
| + | |- |
| + | |} |
| | | |
| = Protocol = | | = Protocol = |
Line 123: |
Line 192: |
| | | |
| The actual response bytes are also followed immediately by a 4-byte CRC-32 over the actual data response bytes. | | The actual response bytes are also followed immediately by a 4-byte CRC-32 over the actual data response bytes. |
− |
| |
− | A typical boot up sequence of a game cartridge (in this case, the game "1,2 Switch") looks like this:
| |
− |
| |
− | {| class="wikitable"
| |
− | ! Command
| |
− | ! Size
| |
− | ! Description
| |
− | |-
| |
− | | <code>5B000000000000010000000000000000</code>
| |
− | | 0x200
| |
− | | Read sector 0, contains "HEAD" blob
| |
− | |-
| |
− | | <code>5B000000000000010000000000000000</code>
| |
− | | 0x200
| |
− | | Read sector 0, contains "HEAD" blob
| |
− | |-
| |
− | | <code>56000000000000000000000000000000</code>
| |
− | | 0x4
| |
− | | Read card id "AE F8 01 21"
| |
− | |-
| |
− | | <code>28000000000000000000000000000000</code>
| |
− | | 0x4
| |
− | | Read ??? "02 00 00 00"
| |
− | |-
| |
− | | <code>A5000000000000000000000000000000</code>
| |
− | | 0x4
| |
− | | Read ??? "00 00 00 00"
| |
− | |-
| |
− | | <code>56000000000000000000000000000000</code>
| |
− | | 0x4
| |
− | | Read card id "AE F8 01 21"
| |
− | |-
| |
− | | <code>28000000000000000000000000000000</code>
| |
− | | 0x4
| |
− | | Read ??? "02 00 00 00"
| |
− | |-
| |
− | | <code>5B000000380000010000000000000000</code>
| |
− | | 0x200
| |
− | | Read sector 0x38, contains "CERT" blob
| |
− | |-
| |
− | | <code>E2000000000000000000000000000000</code>
| |
− | | 0x4
| |
− | | Read ??? "01 00 00 00"
| |
− | |-
| |
− | | <code>E0000000000000000000000000000000</code>
| |
− | | 0x200
| |
− | | Read crypto-challenge header
| |
− | |-
| |
− | | <code>200838A25A344F818ABB6456694D4E8D</code>
| |
− | | 0
| |
− | | Enter crypto mode1 with HOST-RANDOM "0838A25A344F818ABB6456694D4E8D"
| |
− | |-
| |
− | | <code>7EE41FDF12C01C157CC899910673A0CF</code>
| |
− | | 0x40
| |
− | | Encrypted crypto mode1 command, reads CART-RANDOM
| |
− | |-
| |
− | | <code>263C8230EC15FAE3CE79365BD850F4BD</code>
| |
− | | 0x0
| |
− | | Encrypted mode1 command, enters crypto mode2 with (HOST-RANDOM, CART-RANDOM)
| |
− | |-
| |
− | | <code>B6FDA6F37FFA29E18831D0B217DFBDBE</code>
| |
− | | 0x4
| |
− | | Encrypted mode2 command, possibly read card id?
| |
− | |-
| |
− | | <code>7B97F7DF07240AA9870E1C974336FA8A</code>
| |
− | | 0x4
| |
− | | Encrypted mode2 command
| |
− | |-
| |
− | |}
| |
| | | |
| = Manufacturers = | | = Manufacturers = |
− | ;Macronix (MX) | + | ;MegaChips (outsourced to Macronix) |
| : Uses package: LGA, TSOP-48 | | : Uses package: LGA, TSOP-48 |
| : Uses card id: 0xC2 | | : Uses card id: 0xC2 |
− | ;Renesas | + | |
| + | ;Lapis |
| : Uses package: LGA, TSOP-48 | | : Uses package: LGA, TSOP-48 |
| : Uses card id: 0xAE | | : Uses card id: 0xAE |
− | ;SanDisk? | + | |
− | : Uses package: ?? | + | ;LSI Logic (?) |
− | : Uses card id: 0x45 ? | + | : Uses package: LGA |
| + | : Uses card id: 0x36 |