Line 2: |
Line 2: |
| [[File:GamecardPhy.jpg|thumb|right|印刷电路板特写]] | | [[File:GamecardPhy.jpg|thumb|right|印刷电路板特写]] |
| | | |
| + | 译自[[Gamecards]] |
| == 物理接口 == | | == 物理接口 == |
− | 3ds游戏卡带拥有与通常DS或DSi一样的物理接口。它们的区别只有塑料卡壳右上角的一个装饰槽,它能阻止卡带插入到旧的Nintendo DS或DSi系统中。
| + | 3ds游戏卡带拥有与DS和DSi有一样的物理接口。他们的区别只有3DS游戏卡带的塑料壳右上角有一个防呆槽,它能阻止3DS卡带插入到旧的Nintendo DS或DSi主机中。 |
| | | |
− | 当去除装饰槽以使卡带适于插入DS或DSi系统中时,它们拒绝检测卡带,并无法显示标题图标。
| + | 即使去除防呆槽并把卡带插入DS或DSi主机中,系统也会拒绝检测卡带,并且不能显示标题图标。 |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 19: |
Line 20: |
| | 2 | | | 2 |
| | CLK | | | CLK |
− | | 时钟信号。DS/DSi游戏卡带频率分别为6.7MHz和4.2MHz,3DS游戏卡带上升到16.6MHz(用于SPI和ROM传输)。 | + | | 时钟信号。DS/DSi游戏卡带频率分别为6.7MHz和4.2MHz,3DS游戏卡带高达16.6MHz(用于SPI和ROM传输)。 |
| |- | | |- |
| | 3 | | | 3 |
Line 85: |
Line 86: |
| == SPI闪存 == | | == SPI闪存 == |
| 目前为止,只有存游戏闪存芯片(savegame FLASH chip)被识别了。这块芯片被识别为0xC22211。JEDEC制造ID为Macronix,此外芯片标签为25L1001,与 MX25L1021E相符。 | | 目前为止,只有存游戏闪存芯片(savegame FLASH chip)被识别了。这块芯片被识别为0xC22211。JEDEC制造ID为Macronix,此外芯片标签为25L1001,与 MX25L1021E相符。 |
− | 数据表位于:http://www.macronix.com/QuickPlace/hq/PageLibrary4825740B00298A3B.nsf/h_Index/3F21BAC2E121E17848257639003A3146/$File/MX25L1021E,%203V,%201Mb,%20v0.01.pdf 。不论如何,MX25L1021E不支持3DS用于与SPI闪存(SPI flash)交换数据的4位宽传输。因此,这可能是一块定制闪存芯片。 | + | 数据表位于:http://www.macronix.com/QuickPlace/hq/PageLibrary4825740B00298A3B.nsf/$defaultview/3F21BAC2E121E17848257639003A3146/$File/MX25L1021E%2C%203V%2C%201Mb%2C%20v1.1.pdf?OpenElement <br> |
| + | http://www.beilenet.com/download/MX25L1021E,%203V,%201Mb,%20v0.01.pdf(old version mirror) <br> 。不论如何,MX25L1021E不支持3DS用于与SPI闪存(SPI flash)交换数据的4位宽传输。因此,这可能是一块定制闪存芯片。 |
| | | |
| == 格式 == | | == 格式 == |
Line 94: |
Line 96: |
| 与DS和DSi游戏卡带相比,3DS系统与3DS游戏卡带的通信协议几乎完全改变了。 | | 与DS和DSi游戏卡带相比,3DS系统与3DS游戏卡带的通信协议几乎完全改变了。 |
| | | |
− | 在第6个传输以后,命令从8字节变为16字节。可能使用了新的加密手段,比如AES CTR。
| + | 在第6个传输以后,命令从8 byte变为16 byte。可能使用了新的加密手段,比如AES CTR。 |
− | 使用16字节命令后,数据总线维护0x00直到卡带返回表示准备好的单字节数据0x01,接着是实际数据。每0x200字节块实际数据后,是4字节的(未加密的)该字节块的标准CRC32码。
| + | 发送16 byte命令之后,卡带准备好并发送一个单字节数据0x01之前,数据总线一直为0x00直到。接下来是实际数据。每0x200-byte 实际数据块之后,是4-byte该字节块的标准CRC32码(未加密)。 |
| | | |
− | (
| + | 下面是一个3DS主机给3DS游戏卡带的发送的命令样本: |
− | After the sixth transfer, commands change size from 8 bytes to 16 bytes. Possibly a new encryption is used, such as AES CTR.
| |
− | 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.
| |
− | )
| |
− | | |
− | 下面是3DS发送给3DS游戏卡带的一组游戏卡带命令样本:
| |
− | | |
− | Here's a set of sample gamecard commands that a 3DS sends to a 3DS gamecard:
| |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |