热血系列吧 关注:3,507贴子:29,182

【研究】热血物语EX2007个人汉化尝试(多图预警)

取消只看楼主收藏回复


假期在尝试汉化GBA上的热血物语EX2007


IP属地:广东1楼2017-02-05 14:30回复
    楼主先自我介绍一下,楼主是计算机专业的大三学生,有一定编程基础,也了解一点gba的基础知识。高中那会有段时间常玩GBA,热血物语EX和热血物语EX2007是最喜欢的GBA游戏之一,毕竟热血系列也是童年的回忆。当时找了许久都未发现EX2007的汉化版,不免有点遗憾。


    IP属地:广东2楼2017-02-05 14:31
    收起回复
      现在也差不多10年了,可能研究的人也少了。自己有了点基础,所以想假期尝试自己汉化一下。而且有热血物语EX汉化rom做参考,想着会减少了些难度。下面是一些经过和一点小成果。


      IP属地:广东3楼2017-02-05 14:32
      收起回复
        学校放假比较晚,上学期末复习之余便开始着手准备,准备了EX的汉化版、EX的日版、EX2007的ROM。花了三天时间,用no$gba的调试功能,找到了3个rom的字模、编写对应的码表,同时记录一些asm追踪结果,测试发掘一些控制码表。在找到它们的文本指针表后,用Python写了一些工具脚本来导出了3个rom的文本。
        因为EX和EX2007大多数文本是相同的,楼主也没有日文基础,于是想通过EX的日版ROM,批量替换相同的文本。同时直接用EX中的中文字模。但后面发现EX汉化版和日版文本指针表内文本数量和顺序似乎不大一样。
        这两张是EX汉化版的字模


        EX2007内的文本除字母数字和一些符号外,都是平假名和片假名,所有字符都能用一个字节的字码表示,而EX汉化版中除人名外的中文用两字节表示,第一个字节是C1~C7。所以还得先用arm asm修改EX2007内读取字码相关的程序。
        这个EX2007的字模


        IP属地:广东4楼2017-02-05 14:37
        回复
          EX2007导出的文本

          EX导出的文本

          萌萌的长谷部


          IP属地:广东5楼2017-02-05 14:43
          回复
            用no$gba调试发现,EX汉化版在00375000~0037F1A8部分(字模的前面)是拓展的程序,一开始我想参考其中部分代码,在no$gba中手写asm来修改,但发现关联较大,要修改的地方很多且容易出错(超过20处)。而且EX汉化版、EX日版容量都是4M,原来程序和拓展的程序直接跳转可以直接用bl指令,只用4字节。而EX2007因为增加了不少东西,在rom之后追加的程序,和原来程序已经超过了bl+-4M的跳转距离。


            IP属地:广东6楼2017-02-05 14:44
            回复
              幸运的是得到了羽_名前辈的帮助,他告诉了我一些hack技巧,先把跳转地址ldr到寄存器,再mov到r15实现任意长度跳转,但最少要占用8字节。同时他引导我用ida pro去分析gba程序,教我如何把gba生成elf文件,用ida pro打开。ida pro是真的方便,很大地提高了效率。
              (ps,之前还用ida pro去调试no$gba,找到了no$gba的gba内存区基址,VisualBoyAdvance同理。然后用C++写模块,能直接读写no$gba和VisualBoyAdvance的rom内存,供Python调用。这样热修改,不用修改rom文件再运行,提高了生产效率)
              同时我用的编辑器Sublime Text也起到了很大的作用,它有Python插件机制,我之前写了一套自己用的插件,可以在其中编写Python代码,选中部分内容后按快捷键直接运行,还能使结果常驻内存,结合上面提到的Python模块,能减少许多工作量。


              IP属地:广东7楼2017-02-05 14:45
              回复
                放假回家后,结合no$gba和ida pro,我参考EX汉化版的拓展代码,着手编写适合EX2007的asm hack代码,这个花了一个多星期,过年时也间断了几天。上面提到过的mov到r15实现任意长度跳转,如果地址没有对齐4,要占用10个字节,而有几处原asm代码能改动的太小,还要考虑寄存器冲突,费了不少功夫。之后用devkitpro的devkitARM编译成arm机器码,弄到rom上。加之EX汉化版有些参数是在原程序上直接改的,没有在扩展的那部分提现出来,调试了几天,经历了数次失败,比如花屏,GB0加载不正确等。





                IP属地:广东8楼2017-02-05 14:47
                回复
                  最后终于功夫不负有心人,patch后看起来还能正常运行。但由于字模是从EX汉化版移植过来的,而单字节的那部分,字码和EX2007的不一样,这样未汉化的部分就会显示成乱码。


                  IP属地:广东9楼2017-02-05 14:48
                  回复
                    并且EX汉化版两套字模都是带有阴影效果的,还改了背景色调色板,不然文字会看不清楚,我改了调色板后文字清楚了,但发现有些地方颜色不太对。于是我花了一个晚上,单字节部分的字模采用EX2007原来的,汉字部分再用EX汉化版的,同时把EX汉化版单字节的人名插入到其他中文中,重新排序字模,同时去掉字模阴影。但原来EX2007双字节中文字模分了C1~C7,7个区,每个区低字节字码从0x02~0xBF,把单字节字码插入后,就变成0x02~0xC9,比如“店”字的新字码C1C1,这样不知后面会不会造成不良影响。改造字模之后,未汉化的文本仍能正确显示,而且要是之后我没时间把汉化做完,也能发出来,让有兴趣的人接着完成。


                    IP属地:广东10楼2017-02-05 14:49
                    回复
                      现在似乎后面只是替换文本,或修改指针表的工作,没难度很大的坑,但经验告诉我肯定没这么顺利,肯定会有幺蛾子,而且如果图片要汉化又是一个坑,要完成汉化还任重而道远。在汉化着EX2007的同好者肯定不只我一个,因为各种各样的原因没能做完或没能发布。汉化是很幸苦的工作,感谢无偿为大家汉化游戏的汉化组,感谢汉化热血物语EX的Air Team。


                      IP属地:广东11楼2017-02-05 14:50
                      回复
                        此贴完,呼,写这些文字就花了一早上了...最后



                        IP属地:广东12楼2017-02-05 14:51
                        收起回复
                          发个贴证明楼主还活着,因为原来字模想直接用ex的,但新的内容多了一些原来没有的字,导入8*16新字模遇到了些瓶颈,有些只出现一两次的字在纠结要不要用相似的意思替换。还有校对测试要多花一些时间(有些文本忘记在剧情哪个位置出现了),之前承诺的时间,要延后不少了...


                          IP属地:广东82楼2017-10-16 12:56
                          收起回复
                            朋友们,我回来填坑了。之前的确鸽了好几年了,对不住大家。
                            一是当时遇到一些技术上的问题(后面重新接着弄之后发现其实当初只差临门一脚),二是后面因为同学创业拉上我,那边投入了不少精力。毕业之后工作也比较忙,就一直搁置着。大概两个月之前吧,决心要把这个坑填了,就拿着之前的资料和半成品接着做了。文本依旧是大多数沿用了原来air team汉化的热血物语EX,部分文本是 nekketsu920帮我翻译和润色的。人名我还找了一些日语姓氏表,写程序来对比和翻译。
                            PS:EX汉化的内容的确是不少地方不太准确,一些道具食物名称都是错的,当然我也没有仔细对照原版的英文版。
                            最近终于弄的差不多了,但是其实没有时间自己测试了,所以先发一个demo版本给大家玩一下看看,暂定版本0.2吧。还有因为字码和原来不一样了,模拟器的即时存档不能直接用。因为工作下班比较晚,后面更新的时间不定。打算拉个群大家能反馈问题。
                            另外我看到有另一个大佬(FC忠实爱好者)也在汉化。之前因为看到我的贴子让他中途放弃了,实在对不住,我觉得没有必要竞争,甚至可以互相帮助。最近他也在继续汉化,他还改了加载文字的代码,文字尺寸更大了,看起来比较美观。也期待他的成品。我的一些资料后面也会整理一下发出来。


                            IP属地:广东195楼2022-10-12 15:25
                            收起回复


                              IP属地:广东196楼2022-10-12 15:26
                              回复