《Xanadu 的传说》的粉丝翻译耗时十余年才最终完成,原因是该游戏的引擎构建方式将可执行代码和文本字符串“随意”混合在一起,使其成为 PC Engine 游戏库中最难破解的作品之一。该项目始于2011年,在插入任何一行英文之前,都需要创建全新的工具来对游戏的脚本进行反编译和重新编译。

这张图片展示了在历时15年的翻译项目开始之前的原始游戏状态。
克服非标准引擎
与许多将文本存储在大型独立内存块中的 PC Engine 角色扮演游戏不同,《Xanadu 的传说》采用了复杂的结构,其中脚本与汇编语言函数混合在一起。这意味着仅仅找到一个文本块并替换它就会导致游戏运行崩溃。
HN Digest 根据 readonlymemo.com 报告的数据绘制的图表;数值按原文显示。
为了解决这个问题,退休程序员 Elmer 开发了一个完整的脚本反编译器和相应的重新编译器。这些工具允许团队将脚本数据与可执行代码分离,使他们能够在不导致游戏引擎崩溃的情况下修改文本。

这张图片提供了需要通过自定义反编译器从可执行代码中分离出来的脚本数据的视觉示例。
“看起来整个东西都是用汇编器拼凑出来的。所以它把代码和字符串随意混合在了一起。”
— Finding Xanadu: Inside a JRPG classic translation 15 years in the making
内存管理与压缩
英文翻译通常比原始日语文本需要更多的空间。在这个项目中,某些英文片段的体积比原始脚本高出多达 50%,这在 PC Engine 有限的硬件上造成了严重的内存短缺。
Elmer 通过实施一种比原始开发者使用的更高效的自定义压缩方法(SWD5)解决了这个问题。通过重新压缩游戏的数据块,团队释放出了足够的“珍贵”空间来容纳扩展后的英文对话。
字幕替代方案
游戏包含一些没有配套文本的配音过场动画,这给翻译人员带来了难题。虽然全英文配音是理想的解决方案,但团队发现要协调足够的志愿者演员来完成整个项目在技术上非常困难。
团队最终选择了一个“硬核”的技术解决方案:他们发现游戏的 VRAM 有一些未使用的调色板条目,可以用来显示精灵图。他们利用这些条目来显示字幕,这要求团队手动计算帧数并重新调整过场动画的时间,以确保文本与日语配音同步。