因此,我尝试将游戏的PS4版本转换为Vita版本。脚本文件可以方便地进行解压缩,我可以将它们放下并使其正常运行-太好了!

但是,其他各种消息文件和任务摘要等却不太方便。

下面是十六进制编辑器中两个文件的比较:


起初我以为这是一个简单的字节对压缩,但是显然还有更多比那要多,因为如果您查看与“走吧!”相对应的地方和“让我们这样做吧!”它们根本不是以相同的字符串开头。

我上传了文件的PS4 / Vita版本,其文本更具可读性:
https://www.dropbox。 com / s / bw0nvexyi9ww2be / hm%20vita?dl = 0
https://www.dropbox.com/s/sk74zadvndc8v9t/hm%20ps4?dl=0

经历它并在寻找常见和重复出现的单词时,我发现了这一点:

Goblin Thief
´0Ö0ê0ó0·0ü0Õ0
B430 D630 EA30 F330 B730 FC30 D530

Goblin Thief Archer
´0Ö0ê0ó0·0ü0Õ0¢0ü0Á0ã0ü0
B430 D630 EA30 F330 B730 FC30 D530 A230 FC30 C130 E330 FC30

Ancient Grief
¨0ó0·0§0ó0È0°0ê0ü0Õ0
A830 F330 B730 A730 F330 C830 B030 EA30 FC30 D530

Grief Screamer
°0ê0ü0Õ0¹0¯0ê0ü0Þ0ü0
B030 EA30 FC30 D530 B930 AF30 EA30 FC30 DE30 FC30

Grief
EA30 FC30 D530

Thief
B730 FC30 D530


所以您可以看到FC30 D530是“ ief”。
然后我寻找更多“ gr”的出现

Deep Grudge
Ç0£0ü0×0°0é0Ã0¸0
C730 A330 FC30 D730 B030 E930 C330 B830


而您没有看到以“ Grief”开头的EA30。

我有FC30的感觉可能是某种切换字节,要么是大写指示,要么可能是标记了某种查找表的使用?有趣的是,所有仅是目标/老板名称的行都具有--30结构,但是某些描述性段落似乎没有。

当然,另一个问题是PS4版本的未压缩英文文本与Vita版本的文本不是100%完美匹配-毕竟,这就是重点!因此,即使我看着“ Deep Grudge”(深仇)这个名字,并且注意到我没有看到任何看起来与“ Grief”中的“ Gr”相对应的东西,我也无法确定他们没有改变PS4版本中的名称。

有人对我应该如何处理这个有任何建议吗?如果我是对的并且实际上正在进行某种压缩的查找表业务,那么实际上可能无法撤消,对吧?

评论

我忍不住注意到Grief尖叫声在开始时有一个额外的B030,而Griefline中没有它

#1 楼

您可以学习这种编码的方法是学习日语。 :)从文本文件diff的第一行中,我们可以看到在左侧:

1131 3210 3130 3330 1021 0000 0000 0000  .12.1030.!......


在右侧翻译为:

1100 3100 3200 1000 3100 3000 3300 3000  ..1.2....1.0.3.0.
1000 01ff 0000 0000 0000 0000 0000 0000  .................


这是一个很强的暗示,即左侧的文件使用8位编码,而右侧的文件使用16位编码。数字的转换非常简单,但是感叹号(“!”)是ASCII或UTF-8格式的0x21,但是0x01ff是编码为UCS-2(即UTF-16编码)的Unicode“全角感叹号”

  • 所以有了关于编码的提示,我们可以看到您识别为“哥布林小偷”的十六进制

    b430 d630 ea30 f330 b730 fc30 d530
    


    呈现为ゴブリンシーフ,这是英语单词“ Goblin Thief”的片假名表示。对于日语使用者来说,用片假名将外来词翻译成语音等同物是很常见的。因此,每个音节都有一个音节:

    ゴ  go
    ブ  bu
    リ  ri
    ン  n
    シ  shi
    ー  (extended vowel)
    フ  fu
    


    所以,如果我们大声说,“ go bu ri n shi-i fu”听起来像“ Goblin Thief”由日语为母语的人发音。您可以尝试使用Google翻译进行更多的实验,并观察和听到这种声音。

    评论


    您能否将十六进制单词切换为正确的字节序30b4 30d6 ..?这样,它们为日语形成正确的Unicode值。

    –杂件
    18/12/10在14:21

    如答案中所述,这些是Unicode值,刚好被编码为UCS-2,也称为UTF-16LE

    –爱德华
    18/12/10在14:27

    等等,这是流血的日语文件吗?真奇怪我需要仔细研究一下软件包,然后查看是否可以找到实际的英文……我知道一个事实,就是我提取的某些文件是英文的,因为它们中包含实际的纯文本,这就是为什么要替换的原因他们工作了。另外,我有99%的把握是我拥有的包装来自游戏的SCEA版本。嗯非常感谢,这解释了很多使我发疯的东西!

    –白屈菜起重机
    18/12/10在14:30



    对于任何好奇的人,请注意以下事项:英文文本实际上存储在完全独立的文件中,该文件对于游戏的PS4版本是唯一的,并且可能从原始文件中提取来替代基本文件中存在的日语字符串。上帝只知道是否有任何方法可以说服Vita版本从那里读取。

    –白屈菜起重机
    18/12/10在20:07

    换句话说,没有“特殊编码”可以反向工程。

    –user202729
    18/12/13在8:01