天天看点

GBA游戏卡带的几种记忆类型

转自maxzhou88:http://tieba.baidu.com/p/1513244819

由于没有全面找到原装的GBA卡带,所以我一直没有真正见过不同记忆类型的GBA游戏卡。非常感谢一位外国朋友给我一些图片,我才有识庐山真面。

一 EEPROM记忆方式:

GBA游戏卡带的几种记忆类型

EEPROM记忆方式的卡带比较多,记忆容量分两种:512Byte 和 8KByte ,每个字节有10万次擦除寿命。EEPROM IC 有8个脚,他们分别连接到GBA卡匣总线(GamePak Bus)的ROMCS, RD, WR, AD0, A23, GND, GND, VDD 上。 

这种EEPROM是串口方式工作,其数据线D0接在卡匣总线的AD0,片选接在A23上,32MB(GBA单个ROM最大的空间)卡带ROM空间的高16MB被EEPROM占用,因此这种记忆类型的卡带最大只有16MB。为了可靠地读写EEPROM中的数据,其地址要映射到0xd000000,这是GamePak的Wait State 2区,这是最低速的卡带ROM读写区,同时读写操作用DMA3来进行,以保证传送时间的连续性。

早期的第三方卡带解码IC(Decoder)可以将这种电路通过硬件补丁映射到SRAM的地址空间0xe000000,这样就可以用SRAM加电池来代替EEPROM记忆,而且GBA ROM不需打软件补丁。后来有了如GBATA之类的软件补丁工具,可以预先将GBA ROM打SRAM记忆补丁,因此D商就可以用统一的SRAM记忆的电路做所有记忆类型的卡带。 

二 Flash记忆方式:

GBA游戏卡带的几种记忆类型

Flash记忆方式的卡带分为64KByte和128KByte,访问地址映射到0xe000000~0xe00ffff(这和SRAM的地址空间一样),这个空间只有64KB,对于128KB的Flash还得切Bank。 

Flash记忆的好处是,比EEPROM的容量大(如口袋之类的RPG游戏),比SRAM安全,一般不会掉档。当然也有麻烦,就是不同厂家的Flash要用不同的驱动代码,一般来说开发人员要将不同厂家的驱动都放在软件中,通过读Flash的ID来判别厂家型号。这些厂家是: 

SST 64KB 16x4KB Sectors 

Macronix 64K 或128K 16x4KB Sectors 

Panasonic 64K 16x4KB Sectors 

Atmel 64K 512x128 Sectors 

Atmel的Flash有点特别,它是小扇区(Sector)Flash,但可以通过软件来模拟4KB的扇区,但老任好象与Atmel有仇似的,从来不用Atmel的东西,只是第三方卡带使用。 

还有一个限制是,由于GBA的GamePak Bus是交换方式的总线(Switch data and address bus),16bit的ROM空间和8bit的Flash/SRAM空间在读数据时会有冲突,所以用来读0xe000000~0xe00ffff空间的程序必须放在RAM中而不能放在游戏ROM中,但写就没有这限制。 

对于大于64KB的Flash记忆,可以用如下切Bank的方式: 

;切Bank命令 

0x00 -> 0xe005555 

0x55 -> 0xe002aaa 

0xb0 -> 0xe005555 

;选择Bank号 

0或1 -> 0xe000000 

和EEPROM记忆方式类似,早期的第三方卡带解码IC(Decoder)可以将这种电路通过硬件补丁来过滤Flash的操作命令,将实际要写入的数据直接写道SRAM中。后来有了SRAM补丁软件工具,D商就直接将游戏ROM打SRAM补丁来做这类卡带了。 

三 SRAM记忆方式:

GBA游戏卡带的几种记忆类型

SRAM记忆方式的卡带一般为32KByte, 虽然其地址空间映射到0xe000000~0xe00ffff这个64KB空间中,但由于没有64KB这种规格的SRAM,所以一般用32KB的62256 SRAM,如果要用64K来做记忆(如GBA上的NES模拟器等),那只好用1Mbit的628128 SRAM来代替。 

和Flash的限制一样,用来读0xe000000~0xe00ffff空间的程序必须放在RAM中而不能放在游戏ROM中,但写就没有这限制。 

用SRAM来做记忆的好处是,读写速度比Flash来得快,寿命取决于电池,没有能写多少次的问题。但坏处也可想而知,比较容易掉档。大家注意没有,老任原装SRAM卡带的倒数第二脚要比其它脚短一点,这个脚在其它的(FeRAM也除外)记忆方式是和别的脚一样长,这就是原装卡带的SRAM记忆保护,是用软件中断来实现的,我的另一篇文章“关于GBA卡带SRAM的掉档防护”有具体介绍其机制。 

可惜,D商们大都不懂这些,他们将SRAM记忆方式的卡带的脚都做成一样长。 

四 FeRAM记忆方式:

GBA游戏卡带的几种记忆类型
GBA游戏卡带的几种记忆类型

2714 - 4 Games on One Game Pak (U)(cart_pcb FeRAM)

FeRAM记忆方式除了不要电池来维持RAM中的内容外,其它各方面都和SRAM记忆的卡带一样,注意倒数第二脚也比其它脚短一点。FeRAM是非易失的RAM,它具有象Flash一样的不需要电池的好处,同时有比Flash更快速的读写速度。老任后期的东西是用这种卡型来做的。

五 NoSave无记忆方式:

GBA游戏卡带的几种记忆类型

无记忆类型的游戏也很多,电路也最简单。大家看到没有 ,上面那个卡带就一颗MASK ROM,连解码IC(Decoder)也没有,奇怪吧?其实Decoder还是有的,GBA的单卡Decoder是一个地址计数器,老任将这电路做在MASK ROM中了,这也只有象老任这样的大公司才做的出来,老任是叫他的铁哥们--台湾旺宏电子(MXIC)帮他开IC,旺宏又是开MASK ROM的大厂,他可不敢得罪老任,老任叫他怎么做他就得怎么做。 

其实上面图片中所有的原装卡带的Decoder都是做在MASK ROM中,不象D商的卡带(无论是单卡还是合卡)都是用外接绑定Decoder来做卡带,所以大家看到D商的卡带都有颗黑胶(有人叫牛屎)。

六 带时钟电路的Flash(Flash with Clock)记忆方式:

GBA游戏卡带的几种记忆类型

现在带时钟功能的卡带真是少见了,我除了在烧录卡上还能看见有时钟功能的合卡外,我手上只有一个有时钟功能的单卡(还是个坏的,时钟不动作,也许是假的吧?)。图上面的那个8脚IC就是时钟IC,内部的时间参数由电池维持。

实时时钟RTC的编程地址:80000Cx

七 D商(Bootleg)的Decoder+Flash-ROM+SRAM+Battery卡带

GBA游戏卡带的几种记忆类型

这就是现在大家还能卖到的D商卡带,包括合卡和单卡,Dcoder大多是黑胶(牛屎),记忆统一用SRAM+电池,游戏ROM用拆机旧片FLASH或Downgrade Flash COB (俗称排骨板),电池是非可充电型电池。游戏都用打过SRAM补丁的ROM,卡带插脚都做成一样长。

继续阅读