这是给你的。我认为如果你要翻译它会比你想象的更复杂,因为公司编程这个游戏的方式,但无论如何......
我正在使用 PCSX2 来执行游戏和 GameConqueror(Linux 上的作弊引擎的替代品)来检查内存。
首先,我认为游戏是从文件导入文本并将文本文件中的字符映射到图像上以图形方式显示,所以我在游戏中显示ASCII字符,如下所示:
使用 GameConqueror,我搜索包含“R1”的字符串,直到到达该地址,0x202a3c00
然后我检查内存并获得了这一块数据
现在我知道他们确实使用了一些 ASCII 并且他们是从文件中导入它,所以我提取了 iso 映像中的文件,进入该文件夹,然后我开始在文件中搜索这些十六进制值:
grep -rnw '.' -e $(echo -e '\x52\x31\x20\xb9')
我有:
Binary file ./RES/SUBSYS.RES matches
伟大的!然后我用十六进制编辑器打开并搜索值。如果你这样做,你会注意到他们使用某种类型的语法来告诉游戏要显示什么。在这种情况下,它们显示文本类型“TIP”
我认为现在你可以开始翻译了,但我想超越并反汇编代码来修改它,因为如果你翻译那个文件就会出现问题(我稍后会解决这个问题)所以我用 PCSX2 调试器添加了一个断点to0x202a3c00
和我有两个函数可以访问这个地址:
z_un_0014bdf0 write
z_un_00155c70 read
我使用 Binary Ninja 更好地反汇编它(PSCX2 调试器很烂)但是我遇到了一些问题...我想使用 Hopper 但我需要安装一些插件而且太烦人了...如果我使用 IDA pro 我必须购买它因为是 mips .... 所以我想除了翻译那个文件没有其他选择。翻译该文件的问题在于,您必须使用比现有更少字节的翻译。例如。
第一个图像中的文本有 57 个字节。意义。如果翻译超过 57 个 ASCII 字符,那么您将不得不使用稍微不同的翻译。如果它小于那么它很容易,因为您可以用 0x20(空格)填充它。
那么他们使用的是什么编码器?我不是编码格式方面的专家,但我很确定他们没有使用标准格式,他们决定使用自定义格式。我知道这有 3 个原因:
- 它们具有实际代表 ASCII 值但非常有限的 ASCII 值。
- 他们没有使用 Unicode 块韩文音节。该角色
버
在游戏中0xb9f6
,但它应该是0xbc84
,튼
在游戏中0xc6b0
它应该是0xd2bc
,等等。
- 您提取的图像不超过 500 个韩文字符,但 Unicode Hangul 表有 11,172 个。
更新:感谢@IgorSkochinsky 用不同的方法检查编码器。它是EUC-KR