srd文件汉化
Warning
请使用十六进制编辑器来编辑,VSCode
可以用来看内容,但不能用来编辑,以及编码改成UTF-8
。此处使用wxMEdit
来做示例。
Note
从LMNP
开始,sega将原本与srd配合的头文件整没了,因此直接用国服的srd文件可能会导致一些问题,不过不知道要是有头文件在的话游戏会读吗)
VERSE
后头文件已绝赞回归
我个人汉化的文件如下(以VERSE
为例),一共40个
- advertise\CHU_UI_Advertise_00_v10.srd
- advertiseInfo\CHU_UI_Advertise_common_00_v10.srd(改
还剩X分钟结束今天的报名
,刷卡提示,断网游客坐标) - avatarCutin\CHU_UI_Entry_AvatarCutIn_00.srd
- common\beltMessage\CHU_UI_Common_waiting_00_v10.srd
- common\commonAvatar\CHU_UI_Common_Avatar_Position_00.srd
- common\commonEmoneyDialog\CHU_UI_Common_dialog_Emoney_00.srd
- common\commonGetDialog\CHU_UI_Common_Get_dialog_00.srd
- common\musicConfirmDialog\CHU_UI_OnlineMatching_Dialog_00.srd
- common\netBattleConfirmDialog\CHU_UI_OnlineMatching_RankDialog_00.srd
- common\sysDialog\CHU_UI_Common_dialog_00_v10.srd(改
请投入X币
(有两个),要使用X可用点数购买功能票,
坐标) - common\tips\CHU_UI_Tips_dialog_00_v10.srd(改通关格数和课题曲提示)
- entry\CHU_UI_Entry_00_v10.srd(改刷卡提示,序列码,注册,master教程提示坐标)
- entryload\CHU_UI_Entry_load_00_v10.srd
- error\CHU_UI_Error_00_v10.srd
- initialize\CHU_UI_Initialize_00_v10.srd
- loginbonus\CHU_UI_LoginBonus_00_v15.srd(改
第X天 达成!
(“第”字可以直接写死在dds里,改数字和天数),若无聊可以把每个卡片头上的天数坐标也改了) - nameentry\CHU_UI_NameEntry_00_v10.srd
- play\avatarAccessoryGacha\CHU_UI_OnlineMatching_AvatarGauge_00.srd(直接配合SDHJ的头文件和srd文件替换)
- play\battleReward\CHU_UI_OnlineMatching_PlayReward_00.srd
- play\gameContinue\CHU_UI_Continue_00_v10.srd
- play\mission\CHU_UI_Mission_00.srd
- play\musicInfo\CHU_UI_Playing_00_v10.srd
- play\musicSort\CHU_UI_Sort_00_v12.srd
- play\musicTutorial\CHU_UI_Tutorial_00_v10.srd(直接配合SDHJ的头文件和srd文件替换)
- play\result\CHU_UI_Result_02_v10.srd
- play\resultBattleRank\CHU_UI_OnlineMatching_Result_01.srd
- play\resultCourse\CHU_UI_CourseResult_00_v11.srd(改
CLASS勋章更新!!
坐标) - play\resultDuel\CHU_UI_Duel_00_v13.srd
- play\select\CHU_UI_Select_00_v10.srd(改
使用雕像后,该角色的最高等级会上升X级
) - play\selectCourse\CHU_UI_CourseSelect_00_v11.srd
- play\selectMap\CHU_UI_ListSelect_Map_Detail_00.srd
- play\selectMap\CHU_UI_ListSelect_Map_Dialog_00
- play\selectTicket\CHU_UI_ListSelect_Ticket_Detail_00.srd
- play\selectTicket\CHU_UI_ListSelect_Ticket_Dialog_00.srd
- play\selectTicket\CHU_UI_ListSelect_Ticket_MainLine_00.srd
- play\selectTicket\CHU_UI_ListSelect_Ticket_SubLine_00.srd
- play\totalResult\CHU_UI_TotalResult_00_v10.srd(改
还剩X升级
,共计获得了X个道具
,你一共获得了X个物品哦!
) - play\unlockChallengeInfo\CHU_UI_UnlockChallenge_Data_00.srd
- play\userBox\CHU_UI_Userbox_00_v10.srd
- testMode\CHU_UI_TestMode_00_v10.srd
srd文件存储了动画等数据,其中还有没有文件头的dds
文件
文字修改
最简单的修改,此处以advertise
的CHU_UI_Advertise_00_v10.srd
为例,此srd文件包含了短字符串和长字符串两种情况。
在要显示的文字前会有TEXT
字样标识(绿),如图
红色部分为文字长度,蓝色部分为部分显示坐标,部分字体大小等信息,黄色部分为文字,以6J(紫)为结尾,如果修改后长度与原文相比没有变化,那么就无需修改前两项
修改文字时要改的为红,深蓝和黄色部分
Danger
红色部分没修改正确会导致游戏闪退,蓝色部分未正确修改则会导致显示不正常
1.短字符串
基本上都是短字符串,目前只见过一个长字符串
用16进制编辑器打开文件,找到对应位置
可以看到,一个日文/中文,标点符号,全角数字和英文占3字节,空格,正常数字和半角英文占1字节
可以使用一个excel表格来记录数据,如下展示
文本 | 长度(UTF-8) | vtc(UTF-8) | vtc(Hex) | x | y | z | TEXT |
---|---|---|---|---|---|---|---|
严正警告 | 4*3 | 0? | 30 3F | 09 07 | 05 01 | 02 0C | 00 00 07 |
WARNING | 7 | 0: | 30 3A | 09 07 | 05 01 | 02 07 | 00 00 07 |
可以看到,z后是02加上字符串长度的16进制,vtc后是30和33(十进制为51)加上字符串长度再转为十六进制。
短字符串都是33(HEX),长字符串是34(HEX)
2.长字符串
在此srd文件中可以看到这样一段话
此处字符串太长,vtc和z后面都占了3字节,并且也不是按从左到右的顺序来看的。
其中,每一处换行符在HEX中对应0D,占一字节,因此长度为427,国服翻译后长度为325。
如下展示
文本 | 长度(UTF-8) | vtc(UTF-8) | vtc(Hex) | x | y | z | TEXT |
---|---|---|---|---|---|---|---|
SDHD | 427 | 30 DF 01 | 09 17 | 05 01 | 02 81 AB | 00 00 07 | |
SDHJ | 325 | 30 79 01 | 09 17 | 05 01 | 02 81 45 | 00 00 07 |
那么应该如何计算vtc和z坐标呢?
vtc部分,将最后两位倒过来写(01DF),直接就是长度+52(DEC)
z部分,8忽略(符号位),剩下的连在一起(1AB),直接就是长度427(DEC)
以SDHD为例,在计算器的16进制处输入01 DF(HEX),然后转到十进制,减去472(DEC),可得原始长度为34(HEX),若要计算SDHJ的vtc,则加上325(DEC),可得01 79(HEX),写入时应写为79 01(HEX)
对于Z的值,则是在计算器输入81 AB(HEX)(或1 AB也行,因为没必要加上8,不然太长了),减去427(DEC)可得7D 84(HEX)(若为1 AB,则此处得0),加上325(DEC)可得到81 45(HEX)(或145)
注意
有的字符串为占位符,特征是无意义和重复,这种无需汉化,游戏会将它们替换成别的显示,有的则是占位和显示的字符串拼在一起的,翻译即可(不是很确定直接改srd行不行)。
坐标修改
Warning
此处并未完全研究明白,可能需要进行逆向游戏才能知道方法
目前已知道如何修改TRS2
(transform的简写)中的坐标,对于x,y和文字下方的数据暂不清楚,以及如何修改文本框长度也不清楚
Credit
感谢 chutranslation 项目提供的方法和模板
Tip
当然,如果你会的话求求你教我)
此处以entry
的CHU_UI_Entry_00_v10.srd
为例。
图片和文字的坐标存在对应文字或图片上方的AnimParamData
中(若是开头第一组,会没有AnimParamData
,直接接后面),需要修改的文字的坐标在文字上方的第一个AnimParamData
中,图片则按名字啥的慢慢找)
前期准备
首先先下载010 Editor和模板,对srd
运行模板
以提示刷Aime卡的页面为例,
原画面
修改后
这组AnimParamData
的名字为L_Entry_aime
,按照下图划分,方便查看。
我以4J
划分,但可能是以分号分隔的?反正4J后直接接着坐标数据,方便看)
这里应该有个分4J的图,但是我懒了,反正不分也行)
可见上面的数量与下方的4J数量是一致的。
开头为TXT
的项目和中间含有txt
的似乎都是对应下面的TEXT
,也就是字符串。
要修改的为把 兼容卡或兼容手机
和Aime Logo的位置,通过字符串和TXT
的数量可以定位到为第5,4(从0开始计数)的TXT_aime_txt_020
和T_aime_txt_00_aime_logo0
坐标修改(文字)
可知道要修改的字符串是第5个,找到第5个,可看到后面的几个字节不一样,
原文件
修改后文件
可以看到,4J
后先空一个字节,然后后4个字节为x坐标,再后面4个为y坐标,这四个字节为float
类型数据(IEEE 754 单精度浮点数(32 位,小端序)),其中增加x坐标会向右移,y坐标会向下移动,可以为负数
在大多地方,1对应一个像素,可以用NV游戏内覆盖截图后,在ps打开,看看移动多少像素,记下数据来修改
有的修改完此处后还需要修改下方的字符串的x
后的数据,以common
中sysDialog
的CHU_UI_Common_dialog_00_v10.srd
为例。
原文件
国服文件
将上面的数据用表格记录下,方便以后汉化后,替换即可
组 | 名 | 对应(为猜测) | 原x | 汉化x |
---|---|---|---|---|
L_common_credit | ||||
10 | TXT_credit_txt_010 | 请投入 | 09 17 00 | 09 1B 00 |
11 | TXT_credit_txt_020 | 币 | 09 17 00 | 09 13 00 |
Tip
坐标不一定只有这几个字节,可能前面或后面几个字节也是,这时候全部记录并替换即可
坐标修改(图片)
相比文字少了修改TEXT
的x
后的数据,其余一致
小技巧
可以找到想要修改的图片在哪个dds
文件里,然后复制名字(不带后缀.dds
),然后在srd
里直接搜索,若srd
使用了该dds
,则可以直接搜到名字。
找到后找到在哪组里即可,可以英文和片假名都用一用看看能不能找到。
修改是否显示
以common
中sysDialog
的CHU_UI_Common_dialog_00_v10.srd
为例,将张
这个图像文字隐藏
此处位于C_credit_text0
后面几字节,将原文件和国服文件对比可发现区别在后面的第三字节是06
还是07
,
原文件
国服文件
改为06
后就不显示了。
总结
SDHD一堆私有格式,汉化麻烦的一批,不如去个SDEZ,SDDT和SDED搓汉化,SDFE的都比这方便。