maxzhou88吧 关注:6,693贴子:69,018
  • 23回复贴,共1

[原创]关于GBA卡带SRAM的掉档防护

只看楼主收藏回复

采用SRAM+BAT方式来做GBA卡带记忆是目前D卡的主流,其它类型的记忆方式(EEPORM,Flash)都是可以通过软件补丁的方法将游戏ROM统一成SRAM类型,有些前期的decoder能硬补丁将Flash或EEPROM的转成SRAM方式,也有少数单卡decoder能通过跳点选择SRAM和Flash两种方式,而EEPROM的decoder几乎绝迹了,一方面是因为Flash或eeprom的要挑厂家型号,另一方面是因为sram的便宜,货源广,几乎不挑厂家型号,所以SRAM的掉电保护就非常重要,卡带厂家和用户也很在意SRAM掉档的问题。
SRAM掉档我分析有如下几种情况:
[1] 卡带本身的问题,电池不足,SRAM品质不好。
[2] decoder的问题,decoder将CS2做了关机后的上拉处理,如果上拉不好也会掉档,有些decoder(如0520单卡和0530合卡)甚至给SRAM供电(为了省外接隔离二极管),电池本身得不到主机电源的充电,所以时间长了电池就没有电。象0601单卡和0502合卡decoder采用外接隔离二极管和电池能在开机时充电(非充电型电池也有一定的可充电能力),其掉档的机会比0520和0530少多了。
[3] 冷拔插掉档,理论上是不可能,但实际也会发生,估计是插拔时卡带引脚偏移短路造成,因为卡上电池还是有电的。
[4] 热拔插掉档,这是电路瞬间干扰带来的问题,特别是哪些卡带引脚都一样长的D卡,这类掉档机会比较多。
[5] 热拔卡down机掉档,这类是软件造成的,我估计这类掉档甚至比热拔插电路干扰掉档还多,因为电池掉电保护在别的系统中热拔插似乎没有多少掉档现象发生,至少比GBA系统要少。
下面主要分析热拔卡down机掉档。老任的原装SRAM卡带除了VCC和GND脚比其它脚要长点,还有一个特征是GPAK_IREQ脚最短(但D卡大多没有注意到这一细节),这和Flash卡不一样,如图:


IP属地:广东1楼2014-11-27 12:19回复
    当我们带电拔卡时,在卡带ROM中跑的CPU就会down机,由于GBA的ROM和SRAM地址在同一个线性空间,而down掉的CPU还可能按乱码来执行代码,这就有相当的可能误写了0xExxxxxx的SRAM记忆空间,这就是热拔卡down机时由乱码造成的记忆掉档根源。
    老任的原装SRAM+BAT卡带的IRQ脚最短,当带电拔卡时,它是最先脱离主机的卡槽脚,这样在拔卡瞬间CPU还没有死掉前,在ROM 中跑的CPU 被触发而识别了这个拔卡IRQ,该IRQ就将程序引导到内部工作RAM的安全区运行,也就是说通过这个IRQ来将CPU转移到主机内部RAM中执行死循环,当卡带完全拔离后就不会down机了,并以此来保护SRAM记忆。当我们再热插卡时在RAM中跑的CPU也不会乱写SRAM记忆。参见下图:


    IP属地:广东2楼2014-11-27 12:22
    回复


      IP属地:广东3楼2014-11-27 12:24
      回复
        问题是除了原装的SRAM卡外(即本身就是SRAM记忆方式的ROM),通过打补丁改为SRAM存档方式的卡带本身是没有这个IRQ routine的,所以对打补丁的SRAM卡是没有这个掉电保护机制的,除非将这个IRQ routine再补丁上去。问题是D卡一般都没有这样处理,同时IRQ引脚和其它脚一样长,顶多是比VCC和GND短一点。
        PS:8bit的FC和GB/GBC虽然也有和ROM同一总线的SRAM记忆,但它们受decoder保护,平时game不做记忆动作时,decoder将SRAM是禁写的,所以掉档机会要非常少,而这又是Nentindo在8bit机器上采用的标准。但Nentindo在GBA上就没有在decoder中做SRAM写保护,虽然第三方的decoder有这功能,但大多软件不支持。
        周哥(maxzhou88)


        IP属地:广东4楼2014-11-27 12:24
        回复


          IP属地:上海5楼2014-11-27 12:31
          回复
            真是长学问!


            IP属地:上海6楼2014-11-27 12:31
            收起回复
              k1sp就有电池电量低就掉档的问题,周哥你说怎么解决


              7楼2014-11-27 12:49
              回复
                老任很注重细节,电池记忆卡带上的第31脚(IRQ脚)比别的脚短一点,这个细节是D卡学不来的。


                IP属地:广东8楼2014-11-27 12:51
                收起回复
                  经典


                  9楼2014-11-29 16:02
                  回复
                    我这个事芯片存档还是电池存档的?感觉像芯片,但是又有电池


                    IP属地:浙江来自iPhone客户端10楼2021-08-13 11:57
                    收起回复
                      大神,gba合卡,芯片记忆,其中一个游戏掉档,其他都没掉档,这是什么原因,设备高亮gba,设备电池有电,存档关机后在开机游戏掉档,同卡其他游戏存档还在。该游戏尝试再次游玩,并不是一存储就掉档,游玩很多次后,该游戏再次掉档。其他游戏存档仍然还在。


                      IP属地:山东来自Android客户端11楼2023-02-19 11:18
                      回复
                        我遇到过gbc冷插拔调档的,gbc卡带插gba卡槽,是因为引脚接触短路造成么。电池是有电的。


                        IP属地:上海12楼2023-09-13 17:49
                        回复
                          大佬请问下sram格式的存档怎么能变成sav啊?


                          IP属地:江苏13楼2023-10-07 03:32
                          收起回复
                            这么好的帖子居然只有这么点回复


                            IP属地:广东14楼2024-07-11 21:26
                            回复


                              IP属地:广东15楼2024-12-16 13:10
                              回复