Gamecard: Difference between revisions

No edit summary
 
(15 intermediate revisions by 4 users not shown)
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
| CD# (Card Detect)
| GND
| Input
| Ground
|-
| 2
| CD#
| Output
| Output
| Single pin on cartridge side (hardwired to gnd), which bridges pin 1 (gnd) and 2 (Card Detect) on the slot side as cartridge is inserted.
| 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
| Input
| Clock, 25MHz
|-
| 3
| CS#
| CS#
| Input
| Input
| Chip Select
| Chip Select
|-  
|-
| 4
| 6
| DAT0  
| DAT1
| Inout
| Data bus pin 1
|-
| 7
| 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
|  
| Input
|  
| Ground
|-  
|-
| 15
| 17
| RST#
| RST#
| Input
| Input
| Reset
| 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 =
= Slot Pinout =
[[File:Card_slot.jpg|500px|thumb|right|Annotated slot pinout]]
[[File:Card_slot.jpg|500px|thumb|right|Annotated slot pinout]]


The just maps the [[#Pinout|cartridge pinout]] onto the slot on the console.
This just maps the [[#Pinout|cartridge pinout]] onto the slot on the console.


{| class="wikitable"
{| class="wikitable"
Line 142: Line 149:
|-
|-
| 8
| 8
| VCC 3.3v
| VCC 3.1v
|-
|-
| 9
| 9
Line 185: 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: 0x23
: Uses card id: 0xAE
;SanDisk?
 
: Uses package: ??
;LSI Logic (?)
: Uses card id: 0x45 ?
: Uses package: LGA
: Uses card id: 0x36