maxzhou88吧 关注:6,694贴子:69,024
  • 12回复贴,共1

【原创】GBA ROM 去片头教程

取消只看楼主收藏回复

今晚QQ群友@强迫症晚期患者,发我一个GBA ROM,文件是Hoshi no Kirby-Yume no Izumi Deluxe.gba,就是汉化版的“-星之卡比-梦之泉蒂拉克丝”,开机有汉化组的LOGO动画。
看看这群友的名字就知道,是强迫症晚期患者啊,他喜欢No intro的ROM,想把它去掉,同时让我写个去片头的教程。


IP属地:广东1楼2015-11-16 03:19回复
    其实嘛汉化组弄个自己的宣传片头是无可厚非的,毕竟是人家心血劳动的东西。不过呢有些带片头的ROM可能让实体GBA游戏卡死机,比如把这个ROM烧录到烧录卡中插GBA主机就会死在那个片头上了,好像是白屏吧我记得,模拟器运行倒是可以。


    IP属地:广东2楼2015-11-16 03:24
    收起回复
      于是强迫症患者一般用GTA工具来修改,该工具非常强大噢,我一般用它来给ROM打SRAM记忆补丁的,但去片头我一般不用它,原因我下面会讲。


      IP属地:广东4楼2015-11-16 03:31
      回复(1)
        据我统计,90%以上的GBA ROM的文件开始4个字节都是一个固定的跳转指令:
        JUMP 080000C0 (当然ARM指令不是这样写的,我这是方便表述)
        它就是一个跳过ROM头数据区的跳转指令,ROM大小为0xC0(16进制数),所以这就是上图GTA工具中的“起始偏移量”,是不是080000C0啊,而8000000就是GBA卡带ROM在系统中的首地址。


        IP属地:广东5楼2015-11-16 03:40
        回复
          一般带片头的ROM其起始偏移就不是80000C0,而是JUMP跳到它自己的片头代码处,这种片头就非常好除,用上面的GTA工具就可以了,该工具的原理就是把跳到片头的起始偏移改回80000C0就可以了。
          JUMP 08000CO 指令的16进制代码是: 2E, 00, 00, EA
          GTA 工具就是简单的把ROM的开始4个字节改成2e,00,00,ea即可。
          然而,大家看看上图吧,起始偏移处就是 80000C0哦,然并卵,片头去不掉。


          IP属地:广东6楼2015-11-16 03:52
          回复(4)

            这就是该ROM的汉化组片头,牛逼的CGP小组啊!


            IP属地:广东7楼2015-11-16 03:55
            回复

              用UE编辑器打开ROM文件查看16进制代码,开始的4个字节就是2e,00,00,ea,就是原始的JUMP 080000C0指令嘛,所以无论是GTA工具还是人工用编辑器修改这4个字节都是然并卵。
              呵呵,人家汉化组也不是傻子,那么容易让小白通过工具去掉他们的牛逼片头Logo,人家肯定要“加密”处理嘛!


              IP属地:广东8楼2015-11-16 04:02
              回复
                既然GBA ROM的头数据在C0处结束,那片头代码最后也得跳回这个地址附近。
                简单的加密就是片头代码执行完后就跳回到C0地址,复杂的就跳到更后面哦。
                我们来看看C0处是什么东东:

                原来是FE,D8,1F,EA。注意C0处的第三个字节EA ,它就是JUMP指令代码哦,这个JUMP其实就是汉化组做的跳他们片头的指令。


                IP属地:广东9楼2015-11-16 04:12
                回复
                  看来这个加密是小儿科,它躲过了GTA去片头工具,却躲不过周哥的法眼,我把它恢复成原版的指令即可。

                  原版指令就是:12,00,a0,e0
                  大多ROM的C0偏移处都是它,把这里改一存盘保存即可


                  IP属地:广东10楼2015-11-16 04:18
                  收起回复

                    哈哈,片头去掉了


                    IP属地:广东11楼2015-11-16 04:21
                    收起回复
                      啰嗦了半天,其实很简单。
                      【1】先用GTA工具去片头,如果GTA工具显示的“其实偏移量”是080000C0,那就无效
                      【2】用16进制编辑工具(如UE,HEXedit)在地址C0处手工恢复原始指令12,00,A0,E0
                      【3】如果然并卵,那就等我再来开讲。
                      基本上60%的片头用GTA即可,30%的的片头手工【2】方法去掉,10%的要用模拟器No$GBA来Debug动态跟踪来去掉。


                      IP属地:广东12楼2015-11-16 04:29
                      收起回复
                        看看这个帖子
                        http://tieba.baidu.com/p/5231424188?share=9105&fr=share


                        IP属地:广东来自Android客户端29楼2018-04-24 02:04
                        回复
                          去片头,哈哈


                          IP属地:广东来自Android客户端30楼2018-05-26 00:11
                          回复