<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.3dbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Javitu</id>
	<title>3dbrew - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.3dbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Javitu"/>
	<link rel="alternate" type="text/html" href="https://www.3dbrew.org/wiki/Special:Contributions/Javitu"/>
	<updated>2026-04-17T11:07:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Gamecards&amp;diff=5922</id>
		<title>Gamecards</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Gamecards&amp;diff=5922"/>
		<updated>2013-05-17T13:47:51Z</updated>

		<summary type="html">&lt;p&gt;Javitu: update PDF datasheet URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Gamecard.jpg|thumb|right|A 3DS gamecard]] &lt;br /&gt;
[[File:GamecardPhy.jpg|thumb|right|Close-up of PCB]] &lt;br /&gt;
&lt;br /&gt;
===Physical interface===&lt;br /&gt;
The 3DS gamecards have the same physical interface as regular DS and DSi gamecards. There is only a minor cosmetic difference in the plastic case, which has a small extruding notch on the top-right side. As such, it prevents insertion of the gamecard into old Nintendo DS or DSi systems. &lt;br /&gt;
&lt;br /&gt;
When modifying the case so that the 3DS gamecard fits in a DS or DSi system, those systems will refuse to detect the gamecard and show no banner icon.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Pin&lt;br /&gt;
!  Name&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|  1&lt;br /&gt;
|  GND&lt;br /&gt;
|  Ground&lt;br /&gt;
|-&lt;br /&gt;
|  2&lt;br /&gt;
|  CLK&lt;br /&gt;
|  Clock. Frequencies 6.7MHz and 4.2MHz for DS/DSi gamecards, up to 16.6MHz for 3DS gamecards (for both SPI and ROM transfers).&lt;br /&gt;
|-&lt;br /&gt;
|  3&lt;br /&gt;
|  NC&lt;br /&gt;
|  Not connected. Possibly used to program cards.&lt;br /&gt;
|-&lt;br /&gt;
|  4&lt;br /&gt;
|  RCS&lt;br /&gt;
|  ROM select, active low. Pulled low to start a ROM transfer.&lt;br /&gt;
|-&lt;br /&gt;
|  5&lt;br /&gt;
|  RST&lt;br /&gt;
|  Reset, active low. &lt;br /&gt;
|-&lt;br /&gt;
|  6&lt;br /&gt;
|  ECS&lt;br /&gt;
|  Savegame chip select, active low. Pulled low to start a savegame SPI transfer.&lt;br /&gt;
|-&lt;br /&gt;
|  7&lt;br /&gt;
|  IRQ&lt;br /&gt;
|  Removal detection.&lt;br /&gt;
|-&lt;br /&gt;
|  8&lt;br /&gt;
|  VCC&lt;br /&gt;
|  Powersupply 3.3V.&lt;br /&gt;
|-&lt;br /&gt;
|  9&lt;br /&gt;
|  DAT0&lt;br /&gt;
|  Bidirectional data bus.&lt;br /&gt;
|-&lt;br /&gt;
|  10&lt;br /&gt;
|  DAT1&lt;br /&gt;
|  Bidirectional data bus.&lt;br /&gt;
|-&lt;br /&gt;
|  11&lt;br /&gt;
|  DAT2&lt;br /&gt;
|  Bidirectional data bus.&lt;br /&gt;
|-&lt;br /&gt;
|  12&lt;br /&gt;
|  DAT3&lt;br /&gt;
|  Bidirectional data bus.&lt;br /&gt;
|-&lt;br /&gt;
|  13&lt;br /&gt;
|  DAT4&lt;br /&gt;
|  Bidirectional data bus / pin NC/SIO3 on savegame chip.&lt;br /&gt;
|-&lt;br /&gt;
|  14&lt;br /&gt;
|  DAT5&lt;br /&gt;
|  Bidirectional data bus / pin WP#/SIO2 on savegame chip.&lt;br /&gt;
|-&lt;br /&gt;
|  15&lt;br /&gt;
|  DAT6&lt;br /&gt;
|  Bidirectional data bus / pin SO/SIO1 on savegame chip.&lt;br /&gt;
|-&lt;br /&gt;
|  16&lt;br /&gt;
|  DAT7&lt;br /&gt;
|  Bidirectional data bus / pin SI/SIO0 on savegame chip.&lt;br /&gt;
|-&lt;br /&gt;
|  17&lt;br /&gt;
|  GND&lt;br /&gt;
|  Ground&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SPI flash===&lt;br /&gt;
So far, only one savegame FLASH chip has been identified. The chip identifies as a 0xC22211. The JEDEC manufacturer ID is Macronix, and despite the chip label saying 25L1001, the JEDEC ID matches the MX25L1021E. Datasheet at:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.macronix.com/QuickPlace/hq/PageLibrary4825740B00298A3B.nsf/$defaultview/3F21BAC2E121E17848257639003A3146/$File/MX25L1021E%2C%203V%2C%201Mb%2C%20v1.1.pdf?OpenElement &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.beilenet.com/download/MX25L1021E,%203V,%201Mb,%20v0.01.pdf (old version mirror) &amp;lt;br&amp;gt;&lt;br /&gt;
However, the MX25L1021E doesn&#039;t support the 4 bit wide transmission that the 3DS uses to talk to the SPI flash. It is thus likely that this is a custom flash chip.&lt;br /&gt;
&lt;br /&gt;
===Format===&lt;br /&gt;
Cartridges can come in several sizes and include system updates in a region reserved for this. In ROMs less than 1GB the update region can be found with:&lt;br /&gt;
CART_SIZE_MAX-( 0x280000*(CART_SIZE_MAX/CART_SIZE_128MB) )-0x2000000. The region is then 0x2000000 bytes.&lt;br /&gt;
&lt;br /&gt;
===Protocol===&lt;br /&gt;
The communication protocol between the 3DS system and the 3DS gamecard has changed almost completely in comparison with the DS and DSi gamecard communication protocol.&lt;br /&gt;
&lt;br /&gt;
After the sixth transfer, commands change size from 8 bytes to 16 bytes. Possibly a new encryption is used, such as AES CTR.&lt;br /&gt;
When 16-byte commands are used, the data bus maintains the value 0x00 until the card signals it is ready by clocking a single byte 0x01, followed by the actual data. After each 0x200-byte block of actual data, a 4-byte standard CRC32 of the block data (before encryption) follows.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a set of sample gamecard commands that a 3DS sends to a 3DS gamecard:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Size&lt;br /&gt;
!  Command&lt;br /&gt;
!  Decrypted command&lt;br /&gt;
!  Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;2000&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;9F00000000000000&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|Reset&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;0000&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;71C93FE9BB0A3B18&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|Unknown&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;0004&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;9000000000000000&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|Get gamecard ID, response=9000FEC2&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;0004&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;9000000000000000&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| Get gamecard ID, response=9000FEC2&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;0004&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;A000000000000000&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| Unknown, response=00000000&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;0000&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;3E00000000000000&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| Enter 16-byte command mode.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;0200&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;82000000000000000000000000000000&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| Get header&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;0000&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;F32C92D85C9D44DED3E0E41DBE7C90D9&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;8300000000000000708DF1A731717D0B&amp;lt;/tt&amp;gt; &lt;br /&gt;
| Seed&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;0004&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;696B9D8582FB55D31B68CAFE70C74A95&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;A200000000000000708DF1A731717D0B&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Get secured gamecard ID, response=9000FEC2&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;0004&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;BAA4812CA0AC9C5D19399530E3ACCCAB&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;A300000000000000708DF1A731717D0B&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;0000&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;178E427C22D87ADB86387249A97D321A&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;C500000000000000708DF1A731717D0B&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;0004&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;E06019B1BD5C9130ED6A4D9F4A9E7193&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;A200000000000000708DF1A731717D0B&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Get secured gamecard ID, response=9000FEC2&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;0004&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;4E0D224862523BBFE2E6255F80E15F37&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;A200000000000000708DF1A731717D0B&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Get secured gamecard ID, response=9000FEC2&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;0004&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;4CDF93D319FB62D0DB632A45E3E8D84C&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;A200000000000000708DF1A731717D0B&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Get secured gamecard ID, response=9000FEC2&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;0004&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;9AA5D80551002F955546D296A57F0FEF&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;A200000000000000708DF1A731717D0B&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Get secured gamecard ID, response=9000FEC2&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;0004&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;C12BA81AEF30DDDBD93FAD5D544C6334&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;A200000000000000708DF1A731717D0B&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Get secured gamecard ID, response=9000FEC2&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;0200&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;62EC5FB7F420AE1DC6253AE18AFA5BB3&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;BF000000000000000000000000000000&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Read address 0&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;0200&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;E3FA23AA016BE0C93430D1F42FF41324&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;BF000000000040000000000000000000&amp;lt;/tt&amp;gt;&lt;br /&gt;
| Read address 0x4000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The header command has some initial dummy bytes, and eventually responds with a 0x200 byte header. Here&#039;s an example for Lego Starwars 3:&lt;br /&gt;
 0000000: 00 8c 03 00 00 00 04 00 00 00 00 00 00 00 00 00  ................&lt;br /&gt;
 0000010: b3 cf fb c6 6a b1 cb 20 32 af ce 35 d4 1c 74 c9  ....j.. 2..5..t.&lt;br /&gt;
 0000020: 8e 6b 27 2f 08 01 28 3b d4 30 de 44 37 f5 b0 46  .k&#039;/..(;.0.D7..F&lt;br /&gt;
 0000030: 91 59 d7 38 33 48 df 83 fd 71 84 2c 00 00 00 00  .Y.83H...q.,....&lt;br /&gt;
 0000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................&lt;br /&gt;
 0000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................&lt;br /&gt;
 0000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................&lt;br /&gt;
 0000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................&lt;br /&gt;
 0000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................&lt;br /&gt;
 0000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................&lt;br /&gt;
 00000a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................&lt;br /&gt;
 00000b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................&lt;br /&gt;
 00000c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................&lt;br /&gt;
 00000d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................&lt;br /&gt;
 00000e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................&lt;br /&gt;
 00000f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................&lt;br /&gt;
 0000100: 4e 43 43 48 7a 7f 0e 00 00 8c 03 00 00 00 04 00  NCCHz...........&lt;br /&gt;
 0000110: 36 34 02 00 00 00 00 00 00 8c 03 00 00 00 04 00  64..............&lt;br /&gt;
 0000120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................&lt;br /&gt;
 0000130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................&lt;br /&gt;
 0000140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................&lt;br /&gt;
 0000150: 43 54 52 2d 50 2d 41 4c 47 50 00 00 00 00 00 00  CTR-P-ALGP......&lt;br /&gt;
 0000160: 0c 27 e3 c1 de 7b 2a e2 d3 11 4f 32 a4 ee bf 46  .&#039;...{*...O2...F&lt;br /&gt;
 0000170: 9a fd 0c f3 52 c1 1d 49 84 c2 a9 f1 d2 14 4c 63  ....R..I......Lc&lt;br /&gt;
 0000180: 00 04 00 00 00 00 00 00 00 00 00 00 01 03 00 00  ................&lt;br /&gt;
 0000190: 05 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00  ................&lt;br /&gt;
 00001a0: 06 00 00 00 1c 0a 00 00 01 00 00 00 00 00 00 00  ................&lt;br /&gt;
 00001b0: 22 0a 00 00 58 75 0e 00 01 00 00 00 00 00 00 00  &amp;quot;...Xu..........&lt;br /&gt;
 00001c0: 13 0c 04 26 15 f6 47 c4 c6 32 25 ea 9e 67 f8 a2  ...&amp;amp;..G..2%..g..&lt;br /&gt;
 00001d0: 7b 15 24 6b 88 fb c7 a9 27 25 7b 84 97 7b 78 7b  {.$k....&#039;%{..{x{&lt;br /&gt;
 00001e0: a6 5b ee 10 60 bb 6a 68 21 bb ce c6 00 03 5b 7e  .[..`.jh!.....[~&lt;br /&gt;
 00001f0: 64 fb 6e ac a7 f0 96 0c fb 1f 5a 37 08 77 28 f7  d.n.......Z7.w(.&lt;/div&gt;</summary>
		<author><name>Javitu</name></author>
	</entry>
</feed>