

今绝大部分模拟器都是由外国人编写的,所以所用的语言也是外语——这就辛苦了外语水平不好的国内模拟器玩家。但凡事总有它解决的办法,针对这种情况,模拟器的汉化就应运而生。
模拟器汉化其实是软件汉化的一种,根据一些汉化的教程叙述:“汉化就是一个外文版的软件(绝大部分是英文版)经过一系列本地化的技术处理后,操作界面(如:菜单、对话框、提示、帮助等)变成了中文,而程序内核和功能保持不变。”我们针对模拟器汉化,大致分为修改语言包和修改程序资源这两种方法,以下就围绕着这两种方法,由我来对大家进行简单的讲解。
第一部分:修改语言包
如果模拟器支持语言包功能,那么汉化者就可以直接修改其原版的语言包,以达到汉化的目的。模拟器的语言包也有多种形式,最常见的就是文本式和程序式。顾名思义,文本式的意思就是该模拟器的语言包是以文本文件的形式储存的(扩展名通为txt、dat、lng、ini)只要用文本编辑器(如记事本)打开就能对其直接修改;举一反三,程序式就是该模拟器的语言包是以电脑程序的形式来储存的(扩展名为dll),因为文本编辑器不能编辑电脑程序,那么就必须利用资源修具(有ExeScope、ResHacker、ResScope等等,笔者比较喜欢用ResHacker)对其进行修改。下面就拿两个王者级的模拟器来做例子,向大家讲述修改语言包的汉化方法。
一、文本式——Nebula
著名街机模拟器Nebula采用文本式语言包,语言包的路径就存放在模拟器的skin文件夹下。(图1)
此主题相关图片如下:
用记事本方式打开english.lng,可以看见以下内容:(图2)
此主题相关图片如下:
等号后面的字符就是可以修改的字符,我们只要把它们一一翻译成中文就行了,当然这是需要一定的耐性的。最后翻译好以后另存为xxx.lng(xxx为自定义),同样放在skin文件夹里面,运行nebula,选misc菜单→language就可以看见你的劳动成果了。(图3)
此主题相关图片如下:
二、程序式——VisualBoyAdvance
掌机模拟王者VisualBoyAdvance(以下简称VBA)的语言包是一种dll格式的动态链接库,普通的文本编辑器是不能对它进行修改的,因此需要利用上面提及到的资源修改工具ResHacker。
运行ResHacker,载入VBA的英文原版语言包vba_enu.dll,可以看见:(图4)
此主题相关图片如下:
里面的“菜单、对话框、字串表”三大文件夹里头就是供我们修改的资源,打开其中一个看看:(图5)
此主题相关图片如下:
但这三个文件夹里又有不少的子文件夹,视那个语言包的具体情况而定,所以说汉化一次语言包需要一定的耐性。
在左边的编辑窗口里,把双引号里的英文字符翻译成中文就可以了,每翻译完一个文件夹里面的字符的字符以后,点击ResHacker程序窗体上方的“编译脚本”按钮;当每个文件夹里字符都全部翻译了,就意味着这次汉化工作接近尾声,这时候再选“文件→另存为”,文件名注意要和原版的相对应,例如原版的是vba_enu.dll,那么你就应该把文件名改成vba_xxx.dll,否则模拟器会调用不了你修改的这个语言包。名字改好以后,运行VBA,选option→language→other,(图6)
此主题相关图片如下:
然后在空格中填入你语言包的名字xxx就大功告成了。(图7)
此主题相关图片如下:
第二部分:修改程序资源
有的模拟器不支持语言包功能,那么想汉化它就必须直接修改其程序的内部资源了。我们再次用VBA来做例子,虽然它支持语言包,但同时也可以直接修改程序资源。同样是利用上述的资源修改工具ResHacker,载入要汉化的模拟器程序VBA,这时候会看见比上次载入语言包的时候多了很多个文件夹。(图8)
此主题相关图片如下:
但是别给它们吓怕,能供我们修改汉化的依然是“菜单、对话框、字串表”这三大文件夹,具体操作方法就好像上述汉化语言包的一样,在这里就不多说了。但是修改程序资源的时候要注意一点就是,程序资源被修改后可能会无法正常运行,所以在修改程序资源之前要先做好备份工作,以防万一。
模拟器脱壳
为了减少体积,模拟器的开发者们通常会为自己的作品进行加密,我们把这种加密称之为“加壳”。面对加了壳而又不支持语言包的模拟器,如果想直接修改其程序资源是不可能的,下图就是用AsPack加了壳的VBA:(图9)
此主题相关图片如下:
如果想继续对其进行汉化,就必须为它脱壳。
一、自动脱壳篇
自动脱壳的步骤比较简单,用查壳工具查看模拟器加了什么壳,再用相应的脱壳工具对其进行脱壳就可以了。目前最常见的两种壳就是Aspack和UPX。当然还有其他很多的加壳类型,在这里不一一详举了。
So,必备工具:Peid(查壳),Aspack Die(脱Aspack壳),UPX Graphical(脱UPX壳)。下面就拿加了AsPack壳的VBA来作示范。
运行查壳工具Peid,装入加了壳的VBA,可见图中被红色矩形框中的字符就是该程序所加的壳,(图10)
如果是显示micrsoft visual c++或者win32 GUI的话就代表该程序没加壳。那么确定了程序加了哪种壳,就要用相应的脱壳工具进行脱壳。我们运行aspack die,直接指向要脱壳的程序,然后会出现下图(图11)
此主题相关图片如下:
脱壳成功了,Unpacked.exe就是脱壳后的程序,这时候可以用ResHacker对它进行汉化了。
(注意:用AspackDie脱掉加了Aspack的程序,目前只发现 只有用Passolo编辑不会导致文件损坏。)
二、手动脱壳篇
必备工具:冲击波(查找程序入口点),TRW2000(脱壳用)。由于TRW2000的程序特性,笔者在操作过程中不能截取图片,故配图欠奉。
步骤:
1、先运行冲击波;
2、然后运行要脱壳的程序(以下简称A程序),点击冲击波窗体上的“Track”按钮,然后等;
3、等到冲击波窗体上出现一串16进制的数字时,把这串数字记下来,这串数字就是要A程序的入口点;
4、退出冲击波和A程序,运行TRW2000;
5、用TRW2000载入A程序,点击TRW2000的调试按钮,这时候会弹出一个DOS窗口;
6、在DOS窗口的命令行里键入“G 入口点”回车,注意两者中间有一个空格的位置;
7、还是在DOS窗口命令行里,键入“makepe”回车,这时候在A程序所在的目录底下会生成一个newpe.exe的文件,这个就是脱了壳之后的A程序了。
脱壳的基本方法就介绍到这儿,有一点必须注意的是:不是每个壳都可以成功脱掉的。对于不了的壳和脱壳后出现的程序错误,我们只能够说两个字:认命。

