光明之魂2吧 关注:10,683贴子:320,414

光明之魂2ROM文件扩容和字库扩容教程

只看楼主收藏回复

首先应该了解的是,游戏中使用的文字、符号、标志等其实是一张张图片,而字库的作用就是将这些图片依次编号并存储在ROM的指定区域中,当需要使用时直接按照对应编号调用即可。因此一旦需要使用字库中不存在的文字、符号或标志时,便需要对字库进行扩容。
光明之魂2的字库图片数据是紧密排列的(没有足够的空位),为了避免字库扩容时覆盖ROM中的一些重要数据而导致不必要的BUG,一般会对ROM文件进行扩容以获取更多的可用空间。
工具准备:CrystalTile2(简称CT2)、VisualBoyAdvance模拟器(简称VBA)、Photoshop


IP属地:浙江1楼2020-06-27 16:52回复
    一、使用CT2进行ROM文件扩容:
    1、打开CT2,新建一个8Mbits(8Mb=1MB)的空白文件并另存到桌面上

    2、打开“光明之魂2”ROM文件(记得备份^_^),使用“追加文件”命令追加步骤1的空白文件

    3、ROM文件末尾出现新的可用空间则扩容成功了,保存当前文件即可


    IP属地:浙江2楼2020-06-27 16:55
    回复
      二、字库图片地址的计算分析:


      IP属地:浙江3楼2020-06-27 16:56
      回复
        三、在CT2中显示字库图片:
        1、在打开VBA中打开光明之魂2,找到有对话框出现的游戏画面,按下图的方式保存调色板信息

        2、在CT2中,切换到Tile视图,并勾选“自适应Tile行列数”

        3、切换到“调色板”,导入第一步保存的调色板信息文件,鼠标单击选中最后一行

        4、切换到“属性”,在偏移地址中输入首个字库图片的地址(8D94E8),设置适当的缩放比例,调整ROM文件的窗口大小


        IP属地:浙江4楼2020-06-27 16:58
        回复
          四、绘制并导入新的字库图片:
          1、在CT2中用鼠标选中“李”字四个图块,单击“导出”按钮,保存为图片文件,用作修改样例

          2、用Photoshop打开“李”,打开颜色表,并使用对应的调色板颜色绘制,完成后保存即可
          注:若要添加文字,可以使用文本工具(宋体,10pt)作为参考,然后再加工调整

          3、使用CT2将新的字库图片导入到ROM中可用的空白位置,此处以扩容后的1000000为例
          注:此处添加了一个剑的标志和一个“坠”字


          IP属地:浙江5楼2020-06-27 17:01
          收起回复
            五、给新添加的字库图片分配页码和编号
            1、计算地址偏移量,01000000-008D94C8=00726B38(高低位倒置:38 6B 72 00)
            2、修改总页数,并添加07页01图片的地址偏移量

            注:因为8D94E8开始是00页01图片的数据,因此会出现下图所示的问题

            3、为了消除上面的问题,我们需要将字库的控制数据往前移


            IP属地:浙江6楼2020-06-27 17:03
            回复
              六、扩容后字库的测试
              1、按照字库编号规则,“剑标志”编号为0701,“坠”字编号为0702,给“短剑”命名测试

              2、在VBA中打开光明之魂2,进入游戏查看效果


              IP属地:浙江7楼2020-06-27 17:05
              回复
                七、字库扩容的问题处理
                1、关于“步骤五”中字库控制数据前移的问题,显而易见的是字库图片的前面是一张背景图及其16块调色板数据,而8D94A8~8D94C8之间的数据并没有被读取,鉴于只有32个字节且数据大多是00,因此推断可作为空白区域使用,产生BUG的概率很小。

                2、另外,地址偏移量使用的是有符号数,其范围为-8000000~7FFFFFFF,因此完全可以把控制字库的数据(8D94C8~8D94E8)直接复制到扩容后的某一块空白区域,再通过负值的地址偏移量计算出每一页字库01图片的首地址,规避“步骤五”出现的问题,如果了解这方面的计算可以自行尝试~


                IP属地:浙江8楼2020-06-27 17:06
                回复
                  八、给改版者们的提醒(非常重要★ᴗ★)
                  1、由于字库处理程序只在刚打开游戏的界面时才会运行,如果玩家直接用以前的即时存档打开的话会导致字库新增页码中的文字无法正常显示。此时必须记录存档,重新开始游戏(即让游戏运行字库处理程序)读档后才能正常显示,希望做了字库扩容的改版在发布的时候不要忘记提醒玩家!
                  2、最后字库扩容教程的核心部分在步骤二和步骤五,请耐心查看后进行字库扩容,以免出现不必要的BUG,就这样啦~


                  IP属地:浙江9楼2020-06-27 17:09
                  回复
                    非常感谢 研究辛苦了 有空我再慢慢看话说字库扩容会造成ROM的容量增加吗 会不会老的修改器就打不开了 如果我添加一个新的字 原版码表没有的 那老的修改器能够识别新的字吗 很多东西还是要老的修改器改比较方便啊


                    IP属地:广西10楼2020-06-27 18:02
                    收起回复
                      厉害了dalao


                      IP属地:广东来自Android客户端11楼2020-06-28 08:04
                      回复


                        IP属地:广东来自Android客户端12楼2020-06-30 10:52
                        回复
                          大佬 我成功扩容了字库 但是好像存在一些问题




                          我在扩容的字库里新增加了一些字 并且这个修改器还能打得开扩容的ROM 但是对新字库的支持非常差 我用UE32测试修改了几个新的字 都没什么问题 但是用修改器改基本都出错说没有这个字 并且用UE32修改后会乱码 可能是修改器本身的问题吧


                          IP属地:广西13楼2020-07-04 13:00
                          收起回复
                            首先感谢技术党的无私奉献,之前看到战士COUNTER的详细解释特别感动,这么多年了还有人在钻研这个小游戏。
                            然后想请教下COUNTER这个技能,对不使用蓄力,普攻的目标有伤害加成。那如果怪本身只会普攻,对砍时是否生效?比如北欧海盗,骑士之类的纯物理怪。
                            最后私心想请楼主有空余时能整理下各职业的技能效果,很多效果都是口口相传没有数据支持的,我在外网找了些资料,但是有些也没法证实。
                            例如,格斗家小刀每击中一刀,下一刀伤害就会叠加45%伤害。龙战士的破防,每级降低60防御力。
                            烦请楼主有空的时候开贴给我们解惑一下,谢谢!


                            IP属地:上海14楼2020-07-20 16:46
                            收起回复
                              @浩俊杰🌀
                              因为字库里所有贴图是共用一个调色板的,所以原则上我们也只用调色板里已有的15种颜色(第一种颜色为背景色),简单说一下使用技巧吧~
                              ① 利用VBA导出字库使用的调色板,保存类型选择(.ACT)

                              ② 用PS打开“李”贴图,在“色板”窗口面板中,选择“载入色板”,文件类型为“颜色表(.ACT)”,载入第一步中VBA保存的调色板文件



                              ③ 接下来就可以用吸管工具快速选取调色板中的颜色作为绘图工具的前景色了~


                              IP属地:浙江15楼2020-08-21 18:46
                              回复