Changes

984 bytes removed ,  15:52, 21 August 2024
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