Una tarjeta 3DS
Primer plano del PCB

Interfaz f铆sicaEdit

Las tarjetas 3DS tienen la misma interfaz f铆sica que las tarjetas DS y DSi. S贸lo hay una peque帽a diferencia de dise帽o en la carcasa de pl谩stico, que tiene un peque帽o saliente en la esquina superior derecha. De este modo se impide la inserci贸n de la tarjeta en las antiguas consolas Nintendo DS o Nintendo DSi.

Si se modifica la carcasa para que una tarjeta 3DS encaje en una consola Nintendo DS o Nintendo DSi, 茅sta se negar谩 a leer los datos de la tarjeta y no mostrar谩 icono alguno.

Conector Nombre Descripci贸n
1 GND Tierra
2 CLK Reloj. Frecuencias 6.7MHz y 4.2MHz para tarjetas DS/DSi, hasta 16.6MHz en tarjetas 3DS (para transferencias SPI y ROM).
3 NC No conectado. Posiblemente usado para programar las tarjetas.
4 RCS Selecci贸n de ROM, activo a nivel bajo. Al pasar a nivel bajo se inicia la transferencia del ROM.
5 RST Reinicio, activo a nivel bajo.
6 ECS Selecci贸n del chip de partidas guardadas, activo a nivel bajo. Al pasar a nivel bajo se inicia la transferencia SPI de la partida guardada.
7 IRQ Detecci贸n de extracci贸n de la tarjeta.
8 VCC Alimentaci贸n 3.3V.
9 DAT0 Bus de datos bidireccional.
10 DAT1 Bus de datos bidireccional.
11 DAT2 Bus de datos bidireccional.
12 DAT3 Bus de datos bidireccional.
13 DAT4 Bus de datos bidireccional / Conector NC/SIO3 en el chip de partidas guardadas.
14 DAT5 Bus de datos bidireccional / Conector WP#/SIO2 en el chip de partidas guardadas.
15 DAT6 Bus de datos bidireccional / Conector SO/SIO1 en el chip de partidas guardadas.
16 DAT7 Bus de datos bidireccional / Conector SI/SIO0 en el chip de partidas guardadas.
17 GND Tierra

Flash SPIEdit

De momento, s贸lo se ha identificado un chip flash de partidas guardadas. El chip se identifica como 0xC22211. La ID del fabricante JEDEC es Macronix, y a pesar que la etiqueta del chip dice 25L1001, la ID JEDEC corresponde con el MX25L1021E. Hoja de datos ent: http://www.macronix.com/QuickPlace/hq/PageLibrary4825740B00298A3B.nsf/h_Index/3F21BAC2E121E17848257639003A3146/$File/MX25L1021E,%203V,%201Mb,%20v0.01.pdf. Sin embargo, el MX25L1021E no soporta la transmisi贸n ancha de 4 bit que la Nintendo 3DS usa para comunicarse con la flash SPI. Entonces es posible que sea un chip personalizado.

FormatoEdit

Las tarjetas pueden venir en distintos tama帽os e incluyen actualizaciones del sistema en una regi贸n reservada para ello. En las ROMs de menos de 1GB se puede encontrar esta regi贸n con: CART_SIZE_MAX-( 0x280000*(CART_SIZE_MAX/CART_SIZE_128MB) )-0x2000000. La regi贸n es entonces de 0x2000000 bytes.

ProtocoloEdit

El protocolo de comunicaci贸n entre la consola Nintendo 3DS y las tarjetas 3DS ha cambiado casi completamente en comparaci贸n al protocolo de comunicaci贸n de las tarjetas DS y DSi.

Despu茅s de la sexta transferencia, los comandos cambian de tama帽o, pasando de ser de 8 bytes a 16 bytes. Posiblemente se usa una nueva encriptaci贸n, como AES CTR. Cuando se usan comandos de 16 bytes, el bus de datos mantiene el valor 0x00 hasta que la tarjeta se帽ala que est谩 lista enviando un simple byte 0x01, seguido de los datos. Despu茅s de cada bloque de datos de 0x200 bytes, se env铆an (antes de ser encriptados) 4 bytes CRC32 est谩ndar de los datos de bloque.

Esto es un set de comandos de muestra que una Nintendo 3DS env铆a a una tarjeta 3DS:

Tama帽o Comando Comando desencriptado Descripci贸n
2000 9F00000000000000 Reinicio
0000 71C93FE9BB0A3B18 Desconocido
0004 9000000000000000 Obtener ID de la tarjeta, respuesta=9000FEC2
0004 9000000000000000 Obtener ID de la tarjeta, respuesta=9000FEC2
0004 A000000000000000 Desconocido, respuesta=00000000
0000 3E00000000000000 Entrar modo de comandos de 16 bytes.
0200 82000000000000000000000000000000 Obtener cabecera
0000 F32C92D85C9D44DED3E0E41DBE7C90D9 8300000000000000708DF1A731717D0B Semilla
0004 696B9D8582FB55D31B68CAFE70C74A95 A200000000000000708DF1A731717D0B Obtener ID protegida de la tarjeta, respuesta=9000FEC2
0004 BAA4812CA0AC9C5D19399530E3ACCCAB A300000000000000708DF1A731717D0B Desconocido
0000 178E427C22D87ADB86387249A97D321A C500000000000000708DF1A731717D0B Desconocido
0004 E06019B1BD5C9130ED6A4D9F4A9E7193 A200000000000000708DF1A731717D0B Obtener ID protegida de la tarjeta, respuesta=9000FEC2
0004 4E0D224862523BBFE2E6255F80E15F37 A200000000000000708DF1A731717D0B Obtener ID protegida de la tarjeta, respuesta=9000FEC2
0004 4CDF93D319FB62D0DB632A45E3E8D84C A200000000000000708DF1A731717D0B Obtener ID protegida de la tarjeta, respuesta=9000FEC2
0004 9AA5D80551002F955546D296A57F0FEF A200000000000000708DF1A731717D0B Obtener ID protegida de la tarjeta, respuesta=9000FEC2
0004 C12BA81AEF30DDDBD93FAD5D544C6334 A200000000000000708DF1A731717D0B Obtener ID protegida de la tarjeta, respuesta=9000FEC2
0200 62EC5FB7F420AE1DC6253AE18AFA5BB3 BF000000000000000000000000000000 Leer direcci贸n 0
0200 E3FA23AA016BE0C93430D1F42FF41324 BF000000000040000000000000000000 Leer direcci贸n 0x4000

El comando de la cabecera tiene algunos falsos bytes iniciales, y finalmente responde con una cabecera de 0x200 bytes. Esto es un ejemplo de Lego Starwars 3:

0000000: 00 8c 03 00 00 00 04 00 00 00 00 00 00 00 00 00  ................
0000010: b3 cf fb c6 6a b1 cb 20 32 af ce 35 d4 1c 74 c9  ....j.. 2..5..t.
0000020: 8e 6b 27 2f 08 01 28 3b d4 30 de 44 37 f5 b0 46  .k'/..(;.0.D7..F
0000030: 91 59 d7 38 33 48 df 83 fd 71 84 2c 00 00 00 00  .Y.83H...q.,....
0000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0000100: 4e 43 43 48 7a 7f 0e 00 00 8c 03 00 00 00 04 00  NCCHz...........
0000110: 36 34 02 00 00 00 00 00 00 8c 03 00 00 00 04 00  64..............
0000120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0000130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0000140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0000150: 43 54 52 2d 50 2d 41 4c 47 50 00 00 00 00 00 00  CTR-P-ALGP......
0000160: 0c 27 e3 c1 de 7b 2a e2 d3 11 4f 32 a4 ee bf 46  .'...{*...O2...F
0000170: 9a fd 0c f3 52 c1 1d 49 84 c2 a9 f1 d2 14 4c 63  ....R..I......Lc
0000180: 00 04 00 00 00 00 00 00 00 00 00 00 01 03 00 00  ................
0000190: 05 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00  ................
00001a0: 06 00 00 00 1c 0a 00 00 01 00 00 00 00 00 00 00  ................
00001b0: 22 0a 00 00 58 75 0e 00 01 00 00 00 00 00 00 00  "...Xu..........
00001c0: 13 0c 04 26 15 f6 47 c4 c6 32 25 ea 9e 67 f8 a2  ...&..G..2%..g..
00001d0: 7b 15 24 6b 88 fb c7 a9 27 25 7b 84 97 7b 78 7b  {.$k....'%{..{x{
00001e0: a6 5b ee 10 60 bb 6a 68 21 bb ce c6 00 03 5b 7e  .[..`.jh!.....[~
00001f0: 64 fb 6e ac a7 f0 96 0c fb 1f 5a 37 08 77 28 f7  d.n.......Z7.w(.