马克思佩恩2完全汉化版【含字幕】
半汉化版【只有漫画和主菜单汉化】**** Hidden Message *****
完全汉化版【包含字幕完全汉化】
**** Hidden Message *****
汉化实现原理
1. 文本写回 RAS
游戏运行期只读 MP2_English.ras(字幕 *.h、菜单 stringdefines.h、HUD stringtable.txt。全部在这里;MP2_Data.ras 仅含少量图片资源,运行期不读)。 中文以"单字节高位编码"写回上述文本:每个汉字占一个 0x80–0xFE 字节,一行(一句)的所有汉字被装箱进同一张字盘。文本本身就是中文,不依赖任何英文匹配,因此不存在"弯引号/撇号导致英文钥匙哈希对不上 → 静默漏译"的问题。
2. 多字盘装箱 + DLL 换盘
单张字盘高位区仅 128 槽(≤127 个汉字)。全量构建约 130 余张盘,盘 0 作为动态串(含 %s / %i / #X# 等占位符)兜底。dinput.dll 在 hk_print 收到含高位字节的串时,按 fnv1a 哈希查表得到盘号,把字体指针切到对应的 font_cn_N.tga;字盘用 MiSans 普通字重、FS=16、黑描边白字,懒加载(首次用到才构造位图字体)。DLL 只换字盘、不替换文本。
3. 字幕宽度硬限
引擎用默认字体(不读注入字盘)线性累加字幕行宽,超过约 380 屏幕单位会直接在 engineInit 抛异常崩溃。实测每个汉字约 13.8px,故一行最多约 27 个汉字(28+ 必崩)。所有超长译文已在翻译阶段掐短;引擎不支持 \n 换行,缩字号/换行都无效。中文图片(关卡图 / 加载图 / 菜单 HUD)由 PNG 转 DDS 后叠入 RAS。
4. 漫画页
漫画格式是DDS,转成PNG后翻译。
5. Previously 回忆片
ffmpeg 只能解 Bink、不能压 Bink(Bink 编码为 RAD 专利,无开源编码器),故用 RAD Video Tools 把中文字幕烧录进视频,再压成 Bink 1(.bik,非 Bink 2)覆盖 movies/previously.bik。游戏(2003)只认 Bink 1,压成 Bink 2 会读不到。
666666666666666
页:
[1]