我做过的这个引擎的游戏:なないろ航路
这个引擎按年代分可以分老版,中版和新版。但这么分对这篇文章来讲没什么用,所以我采用另一种分法:
1.CSXTool/CSXToolPlus能解封的EntisGLS
这应该是最简单的一种了,因为EntisGLS是免封的,把script.csx提出来放到与noa一个目录下就行了。然后用CSXTool/CSXToolPlus解出双行文本翻完再rebuild回去就行了。有一些游戏能解但是rebuild不回去,有一些游戏能封但是封回去会有问题。比如我遇见过一个游戏Alea -アレア- 紅き月を遙かに望み,这玩意还得两个工具混用,用Plus提取,用CSXTool回封,然后找到每句话前后多出来的句子,在提出来的文本中删掉再回封才能好。
2.CSXTool/Plus不能用,但Luna能内嵌
这种情况下也还比较可以,找到luna能内嵌的那个函数自己写一个hook,如果script.csx没有加密那么我建议的做法是先爆提截断csx,然后将截断后的文本作为orgi,与trans做成一个map,并且在翻译的过程中删掉所有的换行。这样做的好处一是对某些游戏而言,只hook luna的那个函数改不了log中的文本,这样做好歹让log能显示汉化文本(虽然是截断的)。二是可以避免由换行引起的麻烦,比如なないろ航路中如果出现换行,那么你第一行必须得是和原文的第一行等长才行,不然游戏会直接跳过换行后面的句子。这个游戏我后来采用了一种比较麻烦的方法来修复这个问题,又是进行半句判断又是拼接句子的。但是在做絶対女子寮域!时发现还是这种方法比较简单。
3.Luna也内嵌不了,下硬件断点是个无限循环
比如みらろま这个游戏。这种我一般都懒得看,直接爆提截断csx。要是像这作csx还加密的,直接dump内存再爆提截断后再爆搜替换。
csx每个句子其实是有长度的,但是只改这个并不顶什么用,否则CSXTool也不会写得那么复杂。所以我也就直接放弃了分析脚本。
dbg分析也看不出什么名堂,hook更是无从下手,只能留待大佬解决。
4.字体
在PRIMAL×HEARTS 倉賀野聖良らぶらぶアフター这个游戏中,妈妈累用的是自己的字体。我学汉化组的解决办法是放一个空的字体文件,这样引擎就会走一般的渲染方法了。