gba吧 关注:150,552贴子:1,645,498
  • 38回复贴,共1

教你如何自制适配D商卡带的rom(第二弹)

只看楼主收藏回复

吧务不用给此贴加精,我在另外一个精华帖放了传送链接。
那么在一切开始之前,先说一件重要的事。
导出卡带里的原rom做备份!
导出卡带里的原rom做备份!
导出卡带里的原rom做备份!
这次的研究对象是第二种类型的D商卡带。
楼主原以为依靠一段存档代码,通过简单的操作就能斩杀所有rom,结果深入了解后发现还是要有专业的编程知识。
所以这篇帖子仍旧只能为口袋妖怪(flash128KB)服务,建议各位还是换真正的电池记忆卡带或者高级烧录卡。
废话不多说,简单描述下此类卡带,有如下特点:
1.启动游戏时有较长的白屏时间。
2.存档时出现音乐的完全中断,存档结束后恢复。
3.导出卡带的出厂rom有自带存档。
这是楼主的卡带主板图,某宝20大洋包邮,卡带内原rom为光明之魂II。(为防止引流,本人拒绝给出店铺名字)

无论你的卡带是否满足上述特点,或者是否与图中主板构造类似,都可以刷入此帖2楼用度盘分享的口袋妖怪红宝石进行测试(仅8MB烧录快)。
如果能正确地存档与读档,那么去3楼继续教程。
注意!!!正确读档很重要,务必亲自确认。
如果不能,请划走,这篇教程不适合你的卡带。


IP属地:上海1楼2023-11-23 19:45回复
    测试用魔改红宝石链接。
    链接:https://pan.baidu.com/s/1SQwsFMCUFZ6TIQuzqjiVZg
    提取码:tb7v


    IP属地:上海2楼2023-11-23 19:48
    回复
      本教程涉及到的工具已整合成压缩包放在4楼,仅供PC端使用,请先下载后解压并安装。
      我之前的帖子已经介绍过“地址”的概念,这里不多阐述,我们直接拿“火红2012汉化版”开刀。
      首先做一些“准备工作”:
      寻找官方rom中可用的空位,用来内嵌存档文件。
      注意!上述用于内嵌“存档文件”的空位“地址”,大小为0–1FFFF(即128KB),且这个“地址”只能为0x??0000(比如0xF40000)。因此,这个“地址”不能大于0xFE0000。如果你找不到符合条件的空位“地址”,只能放弃。
      寻找官方rom中可用的空位(大小为0-FFF),用于移植存档代码。提醒一下,用于移植存档代码的“地址”,这个地址的末尾必须为“0”、“4”、“8”、“C”,且不要和用于内嵌“存档文件”的空位相冲突。
      用GBAtoolAdvance打开官方rom,用脑子或者记事本记下“片头偏移地址”,然后打上“Sram补丁”并导出。
      备份下“有Sram补丁的rom”。
      用GBA–logo制作器打开“备份的有Sram补丁的rom”,选择工具包里的bmp图片,填上刚才你找到的空位地址后导出rom。
      用Winhex打开“插入logo的rom”,记下rom开头的三个数据,比如“FE7F3F”。然后再用Winhex打开“有Sram补丁的rom”,把刚才记下的三个数据写入rom的开头。
      保存文件并退出Winhex,将“备份的有Sram补丁的rom”和“插入logo的rom”删除掉(后面用不到)。
      至此“准备工作”完成,前往5楼继续教程。
      Tips:上面这些步骤,主要是对移植存档代码的空位“地址”进行转换。小白借助logo制作器便可,高手直接忽略。


      IP属地:上海3楼2023-11-23 19:49
      收起回复
        工具包链接:
        链接:https://pan.baidu.com/s/158VO2h7CtKbqzujbJXopLg
        提取码:usp4


        IP属地:上海4楼2023-11-23 19:50
        回复
          用Winhex打开“D商存档代码(内置型)”,选中整个数据块并复制。再用Winhex打开“有Sram补丁的rom”,将刚才复制的数据块拷贝到你刚才找到的空位“地址”。

          上图中的红框处,根据你拷贝的“地址”进行修改。假设拷贝的地址为“0xFD0000”,那么红框处的“FE08”则改为“FD08”(之前帖子有介绍,不多废口舌)。
          上图中的黄框处,把“准备工作”时记下的“片头偏移地址”,反过来写进此处。
          上图中的蓝框处,把“准备工作”时寻找到的,用于内嵌“存档文件”的空位“地址”写进此处。假设你找到的,内嵌“存档文件”的空位“地址”为“0x9D0000”,那么图中蓝框处的“FD”字样的数据就改为“9D”。
          修改完毕后保存文件并退出Winhex,接下来前往第6楼继续教程。


          IP属地:上海5楼2023-11-23 19:51
          回复
            用Hexcmp打开第一个文件“移植D商存档代码(内置型)并有Sram补丁的rom”,打开第二个文件“官方rom”。
            回到刚才存放“D商存档代码(内置型)”的位置,找到“F0BC0249”字样的数据块,记下这之中“BC”数据所在的“地址”。然后在第一个文件中搜索“0860281CF0BC02BC”的数据块,搜索到后将之中“F0BC02BC”改为“00490847”,紧随其后把刚下记下的“地址”反写。
            回到刚才存放“D商存档代码(内置型)”的位置,找到“1FB40A49”字样的数据块,记下这之中“B4”数据所在的“地址”。然后在第一个文件中搜索“0006000E054BAA21”的数据块,搜索到后从之中第一个“00”的位置开始写入“C046 C046 C046 C046 C046 C046 C046 C046 0049 0847”,紧随其后把刚下记下的“地址”反写。
            至此,非绿宝石的rom已经魔改完成,刷入卡带测试一下自己的成果。
            若是绿宝石rom,请前往第7楼完成最后一步。


            IP属地:上海6楼2023-11-23 19:52
            回复
              回到刚才存放“D商存档代码(内置型)”的位置,找到“FFB42048”字样的数据块,记下这之中“B4”数据所在的“地址”。然后在第一个文件的地址“0x5E8”,写入“00480047”,紧随其后把刚下记下的“地址”反写。
              (此处默认为绿宝石美版,若为日版请搜索对应的数据块予以修改,同时D商存档代码中的“F3050008”这个被反写的“地址”也要对应修改)
              至此,非绿宝石的rom已经魔改完成,刷入卡带测试一下自己的成果。


              IP属地:上海7楼2023-11-23 19:52
              回复
                PS:关于此类卡带的存档,导入与导出有些特殊。
                首先说下存档导出的操作,因为存档文件是内嵌在rom中,所以在存完档后直接导出rom。
                然后用Winhex打开rom,跳转到存档文件所在的“地址”,选中之后大小为1FFFF的数据块(即128KB),右键“编辑”→“复制选块”→“置入新文件”。接着把新文件的后缀名改成“.sav”就可以用模拟器载入官方rom进行读取。
                存档导入的操作,也就是反其道而行之,用Winhex打开sav文件,选中全部的数据块复制到魔改rom中的存档文件所在“地址”即可。
                题外话:吹一下此类卡带的优点:
                1.便宜啊。
                2.软件层面支持128KB存档,完全不看记忆芯片(即牛屎)。
                再说下缺点:
                1.官方rom有足够的空位才能魔改。
                2.一次存档等同于一次刷写rom芯片,影响寿命。
                日后有研究出非口袋妖怪的魔改rom,我会在之后楼层分享链接。


                IP属地:上海8楼2023-11-23 19:53
                回复
                  通过本教程魔改rom,并成功通过测试的吧友,可以把文件分享给 @daliu的1234
                  网盘集中一下方便统一管理。


                  IP属地:上海9楼2023-11-23 20:03
                  收起回复
                    又来新帖了啊,厉害啊,上个贴我跟着搞了下,可以存档了


                    IP属地:上海来自iPhone客户端10楼2023-11-23 20:57
                    收起回复
                      顶一下


                      IP属地:上海来自Android客户端11楼2023-11-23 23:28
                      回复
                        大佬就是大佬,没啥说的,感谢分享


                        IP属地:广东来自Android客户端12楼2023-11-24 05:31
                        回复
                          奇怪,前段时间吧里推荐的公主同盟卡带,我把魔改红宝石刷进去后也能存档。难道这卡带电池有电的时候是sram,没电就变成内置存档的rom了吗?不过两个板子倒是也就有无电池的区别。真骚


                          IP属地:上海来自Android客户端13楼2023-11-24 09:18
                          收起回复
                            非常感谢您写的精彩文章,受益匪浅。同时补充一下您没说到的问题。D卡工作原理是要将128K存档临时寄存在SRAM,待点击存档时写入ROM。而sram存档类型最大64K,故需要首先给ROM打一个特殊补丁。GBATA不行,那将导致存档为64K,二周目比掉档。然后再制作免电池ROM才可以。因此,不是任何卡都能烧录口袋妖怪的。首先必须是128K的SRAM芯片,其次要支持切bank功能,即把SRAM分成两部分,写两次64K。否则即便是128K的SRAM也只能写入一半,那么二周目必然掉档。但一周目照样可以存。因为口袋妖怪的存档实际是两个64K拼起来的。一个是存档,一个是备份。只写一半会报错,但还能存。等到二周目时,原理是删掉一半,靠另一半识别写出二周目新存档,再把那一半也刷新了。如果卡里就一个存档,删了就没有数据了,就掉档了。另外,您说的寿命问题主要是因为D商采用的都是拆机廉价芯片,如果是全新芯片,理论上能写上万次,完全不必担心。倒是黑豆的寿命更短。


                            IP属地:黑龙江来自iPhone客户端14楼2024-01-21 05:43
                            收起回复
                              所以有人做完了绿宝石的rom么吗...折腾一天想把究极绿宝石刷上去还是死活存不了档 但是有bgm


                              IP属地:浙江15楼2024-06-16 13:04
                              回复