主题 : 【求助】DC Time Stalkers汉化问题(更新汉化进展)
级别: 模拟菜鸟
UID: 322019
精华: 0
发帖: 14
威望: 0 星
金钱: 86 浮游币
贡献值: 11 点
好评度: 40 点
人气: 0 点
在线时间: 13(时)
注册时间: 2022-07-10
最后登录: 2022-07-29
楼主  发表于: 2022-07-12 11:50

【求助】DC Time Stalkers汉化问题(更新汉化进展)

首先感谢YZB大佬给我的邀请码,以及提供了一份研究资料以下是这几天分析的数据游戏的主要文本在MAIN.BIN, OPTION.BIN以及SYSTEM目录下的STATICPRESS.BIN(美版为STATICPRESSUSA.BIN)FONTDATA中有17个PVR文件,内容看起来是所有用到的日文文字,SHIFT-JIS码表。
MAIN.BINNPC对话菜单,人物属性界面文字等。其中在0X18023C开始是文字形式的码表,内容与PVR图片索引匹配
OPTINO.BIN:游戏内NPC图鉴的说明文字
STATICPRESS.BIN:加密(压缩?)存放游戏内装备,物品等的说明文字,以及NPC对话等。美版STATICPRESSUSA.BIN在文件尾端有部分未加密文本,内容是装备,物品及技能等的说明
在常规的1ST_READ.BIN中没能找到文本信息,可能是我太菜了。
由于我是初学者,现在遇到的几大问题,还望大佬们帮忙回答:1. CDI能否直接替换里面的文件,还是说只能提取并修改后重新打包?2. 像本游戏这种用PVR存储文字的方式,汉化是不是同时需要修改文本内容,BIN内码表,PVR图片码表3. PVR是可以用PS配合插件的形式修改吗?4. 我尝试过直接用WINHEX修改CDI的文本内容,日文改中文后,不在码表内的会变成绿色方框。美版修改英文为中文后,内容变成空白截断。根据之前的帖子判断,似乎还是用日版汉化容易些?5. 关于STATICPRESS.BIN的解密或解压,如果是WINDOWS程序我还能尝试用OD之类的跟一下解压解密过程,但是DC配合模拟器有相关的反汇编工具吗?
目前有些迷茫和焦虑,不知道下一步先往哪里开始了。。。
更新1:在YZB大佬的指点下,有一些进展,如下图目前完成汉化:进度保存,加载,部分NPC商店菜单,个人属性菜单。怪物的名称和介绍,技能的名称和介绍。物品的名称和属性,以及装备的属性和名称因为在STATICPRESS中加密存放,目前还是束手无策

 






[ 此帖被边缘在2022-07-19 19:55重新编辑 ]
本帖最近评分记录:
  • 金钱:+66(YZB) 辛苦了,送你 1 点人气
  • 级别: 模拟菜鸟
    UID: 322019
    精华: 0
    发帖: 14
    威望: 0 星
    金钱: 86 浮游币
    贡献值: 11 点
    好评度: 40 点
    人气: 0 点
    在线时间: 13(时)
    注册时间: 2022-07-10
    最后登录: 2022-07-29
    沙发  发表于: 2022-07-12 11:55

    我用YZB大佬帖子里提到的菜鸟工具,会提示码表读取错误,第一步就卡住了。。。不会要安装XP系统才能用吧?

    我甚至还用CE去调试模拟器,结果发现STATICPRESS.BIN里的NPC对话数据是动态解密和加载的?

    副成果
    [flycast.exe+1A349E8]+c7918ac   饥饿度的地址。。。
    级别: 模拟菜鸟
    UID: 322019
    精华: 0
    发帖: 14
    威望: 0 星
    金钱: 86 浮游币
    贡献值: 11 点
    好评度: 40 点
    人气: 0 点
    在线时间: 13(时)
    注册时间: 2022-07-10
    最后登录: 2022-07-29
    板凳  发表于: 2022-07-19 15:28

    图片:
    抱歉到今天才回复,大佬你给的索引表和指点非常有用,省了我很多时间,果然是前辈,随便一眼就能看出来问题。
    无奈作为一个中年汉化爱好者,每天只能挤1小时左右时间在这次汉化上,部分汉化进度已发在顶楼。

    目前在MAIN.BIN, VMSLOAD, VMSSAVE已经基本汉化完成,有一些汉化错位之类的在慢慢修。还有Option中的NPC图鉴,以及就是STAICPRESS.BIN中,由于替换了PVR字库,导致NPC对话已经基本混乱了。

    不知道我能否发个测试版出来给大伙试试还有就是要麻烦大佬你帮忙看看STATICPRESS.BIN的解密了,这个有点超出我的能力了。谢谢
    [ 此帖被边缘在2022-07-19 19:54重新编辑 ]
    级别: 模拟菜鸟
    UID: 322019
    精华: 0
    发帖: 14
    威望: 0 星
    金钱: 86 浮游币
    贡献值: 11 点
    好评度: 40 点
    人气: 0 点
    在线时间: 13(时)
    注册时间: 2022-07-10
    最后登录: 2022-07-29
    地板  发表于: 2022-07-20 11:30

    昨天晚上想了一下,测试版没法发,因为改了字库以后,装备物品的说明以及人物对话完全是错乱的。我还是自己多测试测试吧

    目前用掉了1200个字,用了4-15这几个库。1-3是一些片假名以及常规字符,暂时没动它。
    至于NPC图鉴里的文字,因为对游戏体验几乎没有影响,暂时不打算去动,我先把其他部分的BUG多测试测试。

    STATICPRESS的BIN解密,就拜托大佬您了。你有空帮忙看看就好。

    目前猜测索引如下:
    0x0  4字节索引区长度        
    0x4  索引1加密            
    0x8  索引1解密后字符串索引
    后面依次类推。
    级别: 模拟菜鸟
    UID: 322019
    精华: 0
    发帖: 14
    威望: 0 星
    金钱: 86 浮游币
    贡献值: 11 点
    好评度: 40 点
    人气: 0 点
    在线时间: 13(时)
    注册时间: 2022-07-10
    最后登录: 2022-07-29
    草席  发表于: 2022-07-20 21:16

    字库字数感觉是有点悬,按英文版来说,剧情有将近600K…

    字库原来的文本需要导出来吗?我是直接替换的,写了一小段代码,从文本直接生成字库。索引用了原来的索引

    如果按你之前给我的英文版的部分解析,解密区应该是包含剧情对话的,总共好像有19段密文。每段第一段看大小应该是剧情,后面应该还有物品的名字和描述之类的
    级别: 模拟菜鸟
    UID: 322019
    精华: 0
    发帖: 14
    威望: 0 星
    金钱: 86 浮游币
    贡献值: 11 点
    好评度: 40 点
    人气: 0 点
    在线时间: 13(时)
    注册时间: 2022-07-10
    最后登录: 2022-07-29
    5楼  发表于: 2022-07-20 21:43

    原字库索引表在这里
    解压后是CSV,字段依次是SJIS编码,横坐标,纵坐标,字库文件名索引,SJIS字符
    补充一下,文件名,坐标都是从1开始
    原字库索引表.zip (12 K) 下载次数:1
    [ 此帖被边缘在2022-07-20 22:06重新编辑 ]
    级别: 模拟菜鸟
    UID: 322019
    精华: 0
    发帖: 14
    威望: 0 星
    金钱: 86 浮游币
    贡献值: 11 点
    好评度: 40 点
    人气: 0 点
    在线时间: 13(时)
    注册时间: 2022-07-10
    最后登录: 2022-07-29
    6楼  发表于: 2022-07-20 21:57

    我核对了前4句,跟图上一样
    其中0X2D开始的049103970696,正好对应的是時計塔
    级别: 模拟菜鸟
    UID: 322019
    精华: 0
    发帖: 14
    威望: 0 星
    金钱: 86 浮游币
    贡献值: 11 点
    好评度: 40 点
    人气: 0 点
    在线时间: 13(时)
    注册时间: 2022-07-10
    最后登录: 2022-07-29
    7楼  发表于: 2022-07-20 22:39

    你附件的00.bin格式,我可以编写个文本导入导出工具

    解密的部分,就得麻烦大佬你抽空帮忙写个解密加密的工具,或者你指点我一下解密算法,我来试着写写看

    再次感谢!
    级别: 模拟菜鸟
    UID: 322019
    精华: 0
    发帖: 14
    威望: 0 星
    金钱: 86 浮游币
    贡献值: 11 点
    好评度: 40 点
    人气: 0 点
    在线时间: 13(时)
    注册时间: 2022-07-10
    最后登录: 2022-07-29
    8楼  发表于: 2022-07-21 16:22

    第5步的判断,是在r0的8次跑完再判断,还是8次以内就判断?
    现在得不出正确的结果,不知道是我代码写错了,还是理解错了
    下面是我的代码,写得稀烂,将就着看看

                br.BaseStream.Seek(offsetCodeStart,0);
                byte[] byteWrite = new byte[1024];
                for (int i=0;i<0x39;i++)
                {
                    byte toDecode = br.ReadByte();
                    byte lastByte=new byte();
                    byte curByte =new byte();
                    r0 = 7;
                    r14 = 0x17D;
                    while (r0 != 0xffffffff)
                    {
                        if (GetBit(toDecode, (short)r0) == 0)
                        {
                            r14 = BitConverter.ToInt32(byteEncodeTable, r14 * 0xC + 4);
                        }
                        else
                        {
                            r14 = BitConverter.ToInt32(byteEncodeTable, r14 * 0xC + 8);
                        }

                        //r14 = BitConverter.ToInt32(byteTemp, 0);
                        r0--;
                        if (r14 <= 0xff)
                        {
                            lastByte = curByte;
                            curByte = Convert.ToByte(r14);
                            byteWrite[byteOut] = curByte;
                            byteOut += 1;
                            r14 = 0x17D;
                            //if (lastByte == 0xff && curByte == 0xf0) break;
                        }
                    }

                }
    级别: 模拟菜鸟
    UID: 322019
    精华: 0
    发帖: 14
    威望: 0 星
    金钱: 86 浮游币
    贡献值: 11 点
    好评度: 40 点
    人气: 0 点
    在线时间: 13(时)
    注册时间: 2022-07-10
    最后登录: 2022-07-29
    9楼  发表于: 2022-07-21 20:30

    我就是按这个逻辑来的,出来的结果一直就是不对
    按你昨天发的00.bin,第一段解密出来应该是
    0000000800080121009901120003FF00FF02014201150111009504060318008800920125008800080008FF03000491039706960100012000000656015301220084054805260123FF0008570111011501180099012000910003FFF0
    但是我解密出来明显不对。
    以下是我对解密算法的理解,你看看对不对

    首先读取0x130处密文,也就是6D。
    对6D从高到低按Bit判断后读密码表,每个字节都是判断8次
    如果结果大于0xFF就判断下一个Bit.
    如果结果小于等于0xFF,就把r14的值转成byte写进解密后字节数组,r14的值重新初始化为0x17D,继续判断直到满8次。

    8位都判断结束后,读取下一个字节也就是F1,继续重复8个Bit的判断

    你方便的话,帮忙把汇编代码也贴出来我看能不能看懂。。。
    级别: 模拟菜鸟
    UID: 322019
    精华: 0
    发帖: 14
    威望: 0 星
    金钱: 86 浮游币
    贡献值: 11 点
    好评度: 40 点
    人气: 0 点
    在线时间: 13(时)
    注册时间: 2022-07-10
    最后登录: 2022-07-29
    10楼  发表于: 2022-07-21 20:35

    我好像搞定了。。。

    r0 = 0xffffffff;
                r14 = 0x17D;
                for (int i=0;i<0x39;i++)
                {
                    
                    if (r0 == 0xffffffff)
                    {
                        r0 = 7;
                        toDecode = br.ReadByte();
                    }
                        ;//第一字节密文从0x130开始
                    for (r0 = 7; r0 != 0xffffffff; r0--)
                    {
                        if (GetBit(toDecode, (short)r0) == 0)
                        {
                            r14 = BitConverter.ToInt32(byteEncodeTable, r14 * 0xC + 4);
                        }
                        else
                        {
                            r14 = BitConverter.ToInt32(byteEncodeTable, r14 * 0xC + 8);
                        }

                        if (r14 <= 0xff)
                        {
                            byteWrite[byteOut] = Convert.ToByte(r14);
                            byteOut += 1;
                            r14 = 0x17D;
                                
                            if (byteOut >= 2 && byteWrite[byteOut - 2] == 0xff && byteWrite[byteOut - 1] == 0xf0) break;
                        }
                    }
    }
    我还没批量处理,先用前面的0x39个字节测试
    [ 此帖被边缘在2022-07-21 21:02重新编辑 ]
    级别: 模拟菜鸟
    UID: 322019
    精华: 0
    发帖: 14
    威望: 0 星
    金钱: 86 浮游币
    贡献值: 11 点
    好评度: 40 点
    人气: 0 点
    在线时间: 13(时)
    注册时间: 2022-07-10
    最后登录: 2022-07-29
    11楼  发表于: 2022-07-21 21:45

    也就是说,解密的头2个字节我需要去判断一下是不是里面各个角色的人名?以免误翻译了

    另外有什么工具能以汇编形式查看MAIN.BIN?

    感觉这事没个几十天搞不下来。。。