希望能修复第2次机器人大战G

  • 希望能修复第2次机器人大战G


    看到论坛高手修复了牧场物语3烧录卡运行的问题,十分高兴。


    希望有高手也能修复下第2次机器人大战G用Smartboy烧录卡死机的问题,原日版和中文版在进入每话标题序目时都会死机,但其它地方都正常运行,如用电脑存档也可跳过进入战场画面,后面一切正常。


    我分析了下死机的原因:
    可能是“第**話”中“第”和“話”这两个字库显示引起的,我用CrystalTile查看了下,这两个字是压缩加密的,无法找到(其它中文和日文字库都能找到),而且中日两版每话开始都会调用这两个字体。导致烧录卡运行到此时白屏无法显示。


    解决办法:
    1、屏蔽掉每话开始时显示这两个字库(因为这两字可有可无,每话的数字还是可以正常显示的)
    2、找到这两个字库的显示指针,重新修正下地址。


    当然也许死机是其它原因造成的,以上只是我的猜测,希望有高手能修复下可以在烧录卡上玩到,这部机战可是当年的经典啊!万分感谢!


    附上中文汉化版和日文原版ROM(希望高手能找出问题所在)


    中文汉化版:
    http://pan.baidu.com/s/1ntr4CZ3


    日文原版:
    http://pan.baidu.com/s/1kT61O4R

  • 手头暂时没有烧录卡无法测试。刚才看了下,显存里的文字都是先复制到0xCxxx这样的内存地址后再复制到显存里的,比如可以在0x0D97设置中断观察。
    DE寄存器存放的是0xCxxx这样的内存地址,HL寄存器存放的是显存地址。


    回到正题,粗看一下没有什么异常。所以怀疑是否是楼主在烧录卡带时没有注意RAM选项,导致卡带不能识别内存地址??


    建议楼主在烧录时注意烧录选项。注意,这款游戏日文版和中文版的烧录配置是不一样


    MBC 设置可以选择MBC Auto 或者MBC1



    日文版MBC: MBC Auto/MBC1Flash: 512 KBRAM: 8KB


    中文版MBC: MBC Auto/MBC1Flash:1024 KBRAM: 8KB
    如有问题,请及时回复。

  • 这个问题我开头已说道,我用日文版和中文版都进行了烧录测式(烧录软件设置正确),但同样在进入战场序目时白屏,而且这个问题以前就有人在GBC吧和掌机论坛提到过,估计是烧录硬件问题,据说只有最新的Everdrive GB不会死机,我的希望是通过修改ROM使它在老的烧录卡上正常运行(那怕是不显示每话标题都行)。毕竟Smartboy也是经典的烧录卡。

  • 做了些前期跟踪工作,当然还没有解决问题,但是聊胜于无,给其他有兴趣跟踪分析该程序的玩家提供些参考信息。


    我在即将进入第一章的时候,配置断点进行分析。



    配置访问断点如下,


    因为“第一章”的“第”字在显存的位置是从0x8D90开始的。



    并留意到,‘第’的第一个画片的核心数据是10 1F 24 42 00 1F 00 00
    先分析0x8D90的访问断点,结果发现0DXX周围的程序只是把0xC400开始的数据复制到显存而已。在0xC400处,汉字第已经成型。现在追踪,0xC400上的内容是如何产生的。
    结果发现是从D220拷贝的,


    设置D220的访问断点,追踪D220. 需要注意,第字从8D90开始的。找到关键程序


    可以看到,这里的代码是把ROM11:68D9 的数据逐步复制到D220开始的内存区域。那么ROM11:68D9 是什么呢?


    4000*11+(68D9-4000)=468D9



    这里有四个字节和“第”字第一个画片的前四个关键字节一样10 1F 24 42


    继续跟踪,发现了关联的内存地址0xD100



    通过设置D100的访问断点,可以发现关联程序是0x05F0。


    回溯反复上述步骤,可以猜测得出以下结论。

    • 汉字“第”使用了日版已有的画片数据,是以压缩的形式存放在ROM11中的。
    • 解压后的数据存放在D220内存处,之后将数据从D220复制到C400,之后再复制到显存区。
    • 解压时,无需特殊处理的数据直接放在D220处,如需解压代码特殊处理,则在0xD040~0xD09F直接根据压缩代码生成字典,之后根据解压代码和字典将数据解压到D100开始的内存空间中,之后再复制回D220处。这样,D220开始的内存就保存了解压后的所有画片数据。
    • 游戏的解压代码显然也会用来解压图片数据,因此场景汉字不是产生白屏的原因
    • 白屏是因为剧情跳转产生的,需要进一步分析。
  • 非常感谢坛主的测式和分析,虽然不是很懂,但已看到了希望,我曾烧录了进入战场的存档,可以正常运行。问题应该是出在跳转上,真希望坛主能修复这个经典游戏。

  • 看来修正的希望不大了,坛主可能帮找到“第”和“話”这两日文字库的CrystalTile地址,我想把“話”字简体汉化下,不知道这个可有难度?


    有难度。它不是图像数据,是压缩过的数据。所以如果你要强改的话,把数据改成10 试试,但是具体改多少个字节。。。望天吧


    “第”字开始的地址是0x468D9,"第"字有四个画片,第一个画片是468d9~468dF,接下来是第二三四个画片的数据,但是复杂一些,有一个大的压缩。这些画片数据是压缩过的,所以不是一个画片就占8个字节或者16个字节这样,你就看着改吧


    现在调试工具有些问题,查看不了ROM,“话”字暂时帮你看不了。

Join us

Have your own thoughts on this discussion? Wanna help others, avoid the mistakes you met before? Wanna contribute more to this or other topic? Just join us! Registration is free. Join us!