从头开始:为啥要折腾一个老游戏?
最近这阵子,我被家里的破事搞得头都大了。儿子刚上幼儿园,天天哭闹,老婆又不肯让他多看电视,搞得我晚上回家连个安静玩游戏的时间都没有。越是烦躁,我就越想找点事情折腾,转移注意力。
我突然就想起了很多年前,偷偷摸摸在网玩过的那个日版《哥特少女勇闯恶魔城》。当年就觉得画面带感,但是日文啃不动,剧情完全靠猜。心想,现在闲着也是闲着,不如自己动手,把这个系列1代和2代都给彻底汉化了,也算圆我一个陈年旧梦。
入手,发现这玩意儿是团麻绳
说干就干。第一步是找资源,这老游戏虽然小众,但资源还算好找。1代是某个老主机上的ROM,轻松扒拉到了。2代是PC移植版,文件结构稍微复杂点,但好在也找到了一个看起来比较干净的原版。
接下来就是最恶心人的步骤:文本提取。
我直接用惯用的提取工具去扫游戏文件,发现根本扫不出任何可识别的字符串,返回的全是乱码。我心里咯噔一下,知道这帮日本作者肯定做了手脚。我以为他们用了什么顶级的加密技术,立马开始翻找汇编代码,准备硬逆向。
结果折腾了一整夜,把代码段来回看了四五遍,差点把我这老掉牙的显卡给烧了,才发现——根本没有加密!
这游戏就是用了个极度简陋的自定义编码表。就是把日文字符的ASCII值全部打乱重排了。我当时真是气得想骂人,搞得这么复杂,就为了防我这种人?费了我好几个小时才把那个自定义编码表给摸清楚,然后写了个小程序,把所有日文文本都扒拉了出来。
字库,才是真正的鬼门关
文本提取出来后,翻译反而是最简单的部分。我找了几个朋友,大家一人一句,很快就把文本给翻译完了,还顺便润色了一下,让“哥特少女”的说话语气更中二,更符合人设。
但老游戏的第二个大坑,也是最致命的:字库和显示限制。
- 原版游戏只支持半角字符,一共就几百个日文片假名和五十音。
- 我要塞进去的简体中文字符,常用字就有好几千。
这玩意儿就跟螺蛳壳里做道场一样。我必须在有限的内存和狭小的显示区域里,重新绘制一个支持中文的字库。这个过程简直是煎熬,我得一个个像素去抠图,调整每个汉字的宽度和高度,确保它们在游戏里不会挤成一团,也不会和背景贴图冲突。尤其是那种带有很多笔画的汉字,调整得我眼珠子都要掉出来了。
更麻烦的是,原版游戏对话框是按字符数来算的。一句日文可能只占五个字符宽度,换成中文,十个字都打不住。如果文本长度溢出,游戏就会崩溃或者显示乱码。
我不得不反复修改翻译好的句子,把那些又长又啰嗦的中文缩短,用更精简的表达方式塞进去。光是这个“文本瘦身”的工作,来来回回就花了我三天时间。
圆梦:发布完整补丁包
等到所有文本都调整到位,字库也塞了进去,我就开始打包制作汉化补丁。我把1代和2代两个游戏的补丁都做然后自己从头到尾玩了一遍,确保所有的剧情对话、道具描述和菜单界面都显示正常,没有出现任何闪退或者显示错误。
当我看到那个灰暗的像素世界里,主角说着一口流利的简体中文时,心里那种踏实感,真是笔墨难以形容。这比我最近帮邻居修好了他那台老旧的空调还让我有成就感。
折腾了这么久,这套完整的《哥特少女勇闯恶魔城》1代和2代的汉化补丁包终于可以放出来了。大家有兴趣的可以搞来玩玩,也算是给我这段时间的折腾一个交代。等下次有空,我再给大家分享我是怎么把那个老式DOS游戏,硬塞进Win10系统里跑起来的。