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\netBattleNextMusic\CHU_UI_OnlineMatching_InfoNext_00.srd
- play\netBattleVs\CHU_UI_OnlineMatching_VS_00.srd(改了匹配中,转圈
(spine)和3个点(dot)的位置) - 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文件(例如common\transition\CHU_UI_Transition_00_v10.srd)
文字修改
最简单的修改,此处以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(Transform2D的简写)中的坐标,对于x,y和文字下方的数据暂不清楚,以及如何修改文本框长度也不清楚
TRS3(Transform3D的简写)应该也同理
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的都比这方便。