为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

汉化基础教程

2011-10-27 46页 doc 1MB 32阅读

用户头像

is_767870

暂无简介

举报
汉化基础教程汉化基础教程——心态篇   游戏汉化是一个费力又费时的工程,没有游戏厂商的开发源程序,没有固定的某个软件,也没有固定的方式,一切都得靠自己手工劳作。汉化游戏对个人的态度与心理素质要求都比较高,所以在开始学习汉化前有必要先上一堂心态课,用意在于让大家对汉化游戏有个思想上的认识,有个心理准备。   汉化不是三言两语就能说清楚道明白的,也不是喝口水、眨下眼就能精通的!!!。各位初次接触的新人想必都怀着不同的理由才投身汉化的,但无论是什么最终目的都是想...
汉化基础教程
汉化基础教程——心态篇   游戏汉化是一个费力又费时的工程,没有游戏厂商的开发源程序,没有固定的某个软件,也没有固定的方式,一切都得靠自己手工劳作。汉化游戏对个人的态度与心理素质要求都比较高,所以在开始学习汉化前有必要先上一堂心态课,用意在于让大家对汉化游戏有个思想上的认识,有个心理准备。   汉化不是三言两语就能说清楚道明白的,也不是喝口水、眨下眼就能精通的!!!。各位初次接触的新人想必都怀着不同的理由才投身汉化的,但无论是什么最终目的都是想把一个个日文游戏变成通俗易懂的中文游戏。在这个共同点上是十分值得赞扬的,不过我也想提醒大家,希望大家对汉化有个正确的认识。汉化者必须具备的3个条件:1、坚持不懈、持之以恒的耐力。2、熟练的计算机操作能力。3、广泛的计算机知识。其中最为关键的就是耐心毅力,在汉化中必定会遇到现实与潜在的双重困难,任何一个困难都有可能使你放弃汉化,面对种种错综复杂的困难,良好的心态显得十分重要。困难不是不能克服,而是看你愿不愿意去克服。汉化不仅是游戏的汉化过程,同时也是自身能力提高的过程。而在这之中伴随的来自于自身(生活、学习等)和外界(Lamer)的压力同样可能使你屈服,这同样也得靠耐心来趋势自己继续前进。“勤能补拙”,良好的耐心毅力能弥补自己在其他方面的不足,而重点是“勤”。它可以使自己的能力得到飞速提高。从事汉化研究的人群多为青年,青年具有先天的求知欲与积极向上的精神,但是另一方面,中国青年浮躁、不踏实、意气用事的心理却往往会制约自身的能力提高。要想在汉化方面真有所建树首先就必须端正自己的思想,净化自己的心态。   汉化对于计算机知识要求是广而不精,所以这给当代年轻人创造了极为便利的条件。即便是现在才开始学习,学起来也不费劲。说到学这个问还得说一说。由于汉化的特殊性质在目前的社会看来并不能算作一个正规的行业,因此即便是电脑技术书籍泛滥的今天想要找到一本专门讲解游戏汉化理论原理的书实在是极为不容易,所以所有关于这方面的学习都利用网络来进行学习与交流。网络上有不少爱好游戏汉化的热心人,他们不但自己汉化游戏,也常常把自己学习的经验技术带给大家,传授给大家。“狼组”、“天使汉化小组”的网站上都有很详细的汉化知识讲解。目前大部分汉化人都是从那里起步的。如果你还是新人一定要去看,把那里旮旯里的东西都学到,都消化为自己东西。学习阶段不能只顾看,实践才是目的。大部分教程都是伴随一个例题游戏进行的汉化讲解与演示的,所以建议在学习的时候旁边最好是准备好这些个游戏素材,边学边做。当然,教程所教授的内容是十分简单的,又是十分片面的。而在亲自操刀的汉化过程中将会遇到很多无法预料的问题,需要大家克服浮躁的心理善于思考勤于思考。在真正掌握一些基础知识并具备一定能力后不能轻易自满。学到的这些还只是个开头,接下来还有更多更严峻的问题。这仍然需要持之以恒的学习态度。此外经验交流也是必不可少的,志同道合的几个人可以经常在一起讨论切磋,以达到共同进步的目的。自己不懂的要向别人请教,请教不是叫你去问这步该如何如何,下一步又该如何如何等等这样的操作性问题。应该问的是原理,即为什么需要这样?请教也不能产生依赖,绝不能一遇到问题就去问,问个没完没了。合理的是得知某一问题的原因以后首先要自行,认清问题的真正原因后去立刻解决问题,解决完后再进行横向纵向的拓展,即找到此问题的一般性与特殊性,哪些情况会出现这样的问题,对于出现的问题各自采取什么办法等等。再有,网上的汉化资料讲解的技巧都是最典型最普遍的流程,汉化没有固定的路径。游戏结构的多种多样,导致实现汉化的方式方法也可以多种多样,不要生硬地照搬硬套,要多思考,灵活运用;具体问题具体分析,不同的情况用不同的方法处理。在实践的过程中要善于积累适合自己的经验技术。同时,当遇到实际情况与教程不大相同或者相抵触的时候要能够举一反三。   另外,在自身汉化经验上升到一定程度后熟练掌握一门计算机编程语言是十分必要的事情,汇编基础必不可少,很多时候都必须通过分析游戏指令来汉化游戏,而且这十分普遍,不懂的此技能的汉化者几乎不可能独立完成一个游戏的破解工作。高级程序语言,例如BasicC/C++,要学会利用这些高级语言来编写小程序以达到事半功倍的效果,同时也是自身能力又一次提高的过程。关于语言的学习就大家自己去摸索吧。还要强调的是:汉化需要堆积大量的时间与精力,极不赞成高中学生来做这方面的研究,学生当以自身学业为重。   汉化需要热情与激情,但更需要耐心与毅力,当你心中真正装有汉化的时候它就不再那么神秘得高不可攀了。   小结:如果你能耐心地看完这篇枯燥得只有白底黑字的不涉及任何技术性的文章后仍然对汉化充满充满无限热情,那你就具备了汉化所必须的也是最基本的条件。以后的学习研究过程中一定要深思考、勤探索。汉化没有捷径可图,靠得是脚踏实地坚持不懈地再攀登。搞任何研究都不能有依赖性,汉化也不例外,绝不能像玩网络游戏那样寄希望于高手来带你,或者期待某个高手编写一套“外挂”来助你成功。汉化主要是靠自己的研究,我们学习的不仅仅是操作,而主要的应该是原理。因为汉化不像使用WORD编辑文书那样,学会了操作在哪台电脑上都是一样的进行。游戏是千变万化的,没有任何两款游戏的汉化操作是完全一样的。我们要掌握游戏运行的原理,汉化的原理,从而才能举一反三灵活运用。汉化新手一定要注意自己的心态问题,只有建立正确的汉化观才有可能真正学会汉化。从下次开始我们将逐步展开汉化的学习,希望对汉化有热情的玩家学有所获。汉化基础教程——基础篇(上)    上期我们谈了关于汉化的心态问题,别看他并没有什么技术含量,但他却决定了学习实践的成功与否。从这期开始,逐渐讲解汉化的理论知识。汉化不外乎就是把游戏里面的异国文字修改成咱们中国人所使用的中文汉字,请记住是中文汉字,而不是日文中的汉字。所以我们的研究对象就是游戏中的文字。下面我们就从文字开始研究:   首先,我们先别慌着开始汉化研究,因为汉化涉及许多电脑方面的基础知识,我们必须先来学习一下这戏基础。如果你对自己的电脑知识掌握程度有相当的把握那就跳过这一部分继续往下看,如果没有就一定要认真地看。   二进制(01):不管是电子计算机还是游戏机在存储数据的时候都是以二进制的方式进行储存的。因为电子电路能表示的就只有两种状态,要么通电要么断电(电子电路是与非门电路,准确来讲应该是高电位和低电位两种状态,这里为了简单化就认为成通电与断电)。而我们人类只习惯于十进制,所以要读懂二进制就先转化为十进制。又由于二进制的一位表示的数值太小,如果要表示一个比较大的数字的话这个二进制数字就相当的长,这样不便于人们辨识。所以从二进制里面派生出了八进制(01234567)和十六进制(0123456789ABCDEF),每三位二进制数可以转换为一位八进制,每四位二进制可以转换为一位十六进制。怎样互换这些不同的进制数值是个数学问题,高中文化都知道的方法,如果实在不懂的话可以使用任何一款科学计算器,Windows系统里面就带有。123D表示十进制,123H表示十六进制,末尾的DH这些字母标明数值的类型。   位bit与字节byte:我们常说的电脑是32位;PS是32位;GBA是32位,这里的32位指的是核心CPU寄存器的宽度,1位就是1个二进制位的宽度,32位就是32个二进制位的宽度,也是8位十六进制宽度,数值表示范围从00000000H-FFFFFFFFH。两位十六进制数为一个字节byte,数值范围00H-FFH;两个字节为一个字;两个字为一个双字。由此可得几个单位的转换关系:1GB(byte)=1024MB1MB=1024B1B(byte)=8b(bit)。MB和Mb是两个单位,任天堂的卡带容量都是以Mb为单位的。   文件与存储:电子设备在保存记录信息的时候也是二进制的方式来保存的,文件也是一样,无论是rmmp3还是txt甚至游戏ROM也是这样的。但有一点需要注意:在保存数值信息得时候,数值是以字节为单位,高地址存放高位字节,低地址存放低位字节。什么意思呢?举个例子:1234H这个数有两个字节的宽度,在保存的时候就应该是3412,因为12是高位字节,34是低位字节,越往后靠地址越高。我们再来认识一下文字在电脑中的存储显示问题。我们知道在电脑中储存的信息只有两种状态——0和1(二进制),所以我们就得把具体问题抽象为0和1的问题。一般来讲,文字在电脑中保存有两种形式:文本形式和图片形式。先来研究文本形式的文字。最基本的就是把字符点阵化然后把每个点的状态转化成二进制代码。以字母“A”为例:○○○○○○○○○○○●●○○○○○●○○●○○○●○○○○●○○●○○○○●○○●●●●●●○○●○○○○●○○○○○○○○○   这是8*8像素字母A的点阵构成我们把每个点的状态转换成二进制数值,用0表示○;1表示●,按照这个规则从左到右从上到下排列就可以得到:0000000000011000001001000100001001000010011111100100001000000000。  转换为十六进制:00182442427E4200,这就是最简单的表示方法,但这并不是字母“A”在文件中的保存形式。我们可以使用“记事本”(一定要使用记事本)创建一个纯文本文件,里面输入唯一的一个大写字母A,然后我们再用任何一个十六进制编辑器打开这个保存的文件就会发现问题(推荐UltraEdit):文件中只有唯一的一个十六进制值——41H。为什么不是我们得到的00182442427E4200?道理很简单,如果文字都按照这样的方式储存并表示的话那文件就太大了。计算机在保存文本的时候并不是直接把文字的点阵信息记录到文件中,而是把点阵记录到系统字库里,而文件中就记录下这个字符的代码值。在读取的时候先把代码值41H读取出来,再通过字符映射找到41所对应字符在系统字库里面的实际位置,接着再把这个位置的信息00182442427E4200读取出来通过显示程序显示在屏幕上的。字符映射表就是详细记录代码与字符点阵的对应关系,为一一映射,没有一对多也没有多对一。调用系统字库可以大大节省文件的容量,提高显示效率。映射表在汉化的时候也可称为码表。在电脑中最典型的内码就是ASCII,“41”(十六进制)就是英文字母“A”的ASCII码值。ASCII里面包含了所有英文字符和标点符号的映射关系,ASCII编码的时候为单字节,所以A只占用一个字节。汉字的内码比较多,主要有GB2312(简体)和GBK(繁体),汉字编码一般为2个字节,所以表示一个汉字所占用的空间就是英文字母的两倍。这一原理相当的重要,日后汉化中都是围绕这个过程展开的。其实从这个原理就可看出为什么汉化英文游戏比日文游戏难度大的原因。   再来说说图片形式的文字。顾名思义,图片文字就是把文字保存为图片。图片形式的文字字样像这样的文字就是图片文字,文字本身就是一种图形,计算机在存储的时候要比文本型文字的原理要简单,仅仅是把每个象素转换为二进制以后按照图片规定的格式保存下来。转换后的数据本身就是图片信息,不像文本那样有对照表。使用这种图片文字的好处就是可以使文字显得更加美观更加个性化、艺术化,还可以和其他图片相结合在一起。计算机或者游戏机在读取信息后就可以直接显示,不用再依照内码表进行数模(字模)转换。所不足的就是这种文字占用的空加要比文本文字暂用的空大许多,所以就不能反复使用这种形式的文字。一般来说,在游戏中图片文字用来作为游戏进入界面,游戏标题,控制界面等等少量的或需要美化的地方,比如“黄金太阳”、“ShiningSoul”、“SEGA”、“KONAMI”、“HP”、“MP”这些字符大都使用图片格式。游戏里面的对话,剧情介绍,道具名称,道具介绍,状态描述等等,则大都采用文本文字,因为这些文字量比较大而且会重复出现,因而就必须从容量上考虑,再说这些地方对文字要求是正规、统一、协调,以便于阅读。总的来说,图片文字原理比较简单,但占用空间大;文本文字原理比较复杂,好处是占用空间小。小结:游戏机在本质上和电脑没有太大区别,所不同的就是用途。汉化的前提是对电脑基础知识的掌握,考验的是汉化者的综合素质。对游戏的汉化就是对文字的修改,所有的游戏文字都离不开以上两种方式进行存储和显示的,我们必须深刻理解其中的原理。汉化基础教程——基础篇(下)   上一节我们主要研究了一下文本文字的原理,今天我们在来看看图片文字。图片文字实质上就是图形,这种文字在存储规则上与普通图片是完全一致的。我们先来了解一下图片的构成要素:   像素:构成图片点阵的点单元数目。因为图片都是矩形的,所以我们可以用“宽”和“高”两个参数来描述,即分辨率。比如上一期中谈到的那个字母“A”的点阵图就是一个宽8像素高8像素的一个图片,分辨率就是8*8。像素是以点单元也就是像素点为基本单位的,并非厘米毫米。至于点的大小则是由硬件本身的性质决定的。GBA屏幕的分辨率为240*160。   色深:构成图片调色板的颜色数量。色深一般有单色、4色、16色、256色、16位色、32位色等等,色深越大图片颜色越丰富效果也就越好。图片的调色板固定了,图片所用到的颜色范围也就固定了,图片所用到的颜色都是从调色板里取出来的,调色板没有的颜色就无法取到,图片里也就不可能出现这种颜色。图片的色深决定了图片存储时每个像素所占用的空间长度。   色素:像素点的颜色。表示颜色有很多方法,用得最多的就是RGB(Red,Green,Blue)三元色,所有的颜色都可以通过红绿蓝这三色的深度表示出来。(255,255,255)就是一组RGB值,它表示黑色,(0,0,0)表示的是白色,随着这三个值在0-255的范围内变化,颜色也会随之变化。   图片要素还有很多,这里不作专业讨论,我们只谈了与修改有关的要素。图片要得到保存,最起码也得记录下图片的这两个属性——调色板、色素。就我们上次的字母“A”点阵图来说,可以把它看成一个只有白色和黑色两种颜色的图片。我们先来做个实验,看看图片究竟是怎么保存的。首先,我们打开Windows的画图工具,在里面把画布的大小调整为8*8,然后随便用一种颜色填充整个画布并保存为16色位图bmp格式(图1),保存的时候不用担心颜色发生的变化。因为画板的默认调色板为24位色,我们保存为16色调色板  必然会丢掉大量的颜色,如果碰巧我们使用的这种颜色恰好被丢掉的话系统会自动采用16色调色板里面最近似的颜色加以保存。不过我们研究的不是颜色的丢失。接下来用十六进制编辑器打开这个图片,我们将会看到图2的内容。如果大家填充的颜色与我得不一样的话立刻就能找到不同的地方。不错,文件最后的三排的内容完全不同,你的可能是0-F的任何一种,反正我的就是一串6。聪明人立刻就会明白这其中的奥秘了吧,猜得没错就是那样,文件最后的这些信息就是画布每个点的颜色。我们可以来修改修改,看看是不是这样,从76H到95H(这里指的是地址,窗口状态栏有标明光标所在点的地址值)所有的内容都改为0,然后再用画图程序打开看看(图3),我们的画布全都变黑了。确实如此,bmp格式的文件就是把每个点的颜色索引值逐个逐个地记录下来的。既然文件末尾的那些值才是点的颜色,那前面的数值又有什么意义呢?读者可以按照这个方法继续进行对比分析,意义都很简单,为了节省篇幅,这里就略去了。在bmp格式中文件结构可以分为三部分,最开始的两三排内容为文件头,记录着文件的像素、色深等基本信息,紧接着的是调色板每个颜色的RGB值,每一组占用3个字节,地址从低到高依次为BlueGreenRed(符合上一讲数值存储的基本规则),一共有16组(因为我们保存的是16色格式)接着调色板的就是每个点的色素索引值,也就是我们看到的那一串6。需要说明一点,我们所做的图形研究必须是bmp格式,之所以要研究这种格式,一是因为他简单,便于研究,是一种非压缩图形格式(其他的诸如jpggifpng这些都或多或少有压缩的,存储规则都比较复杂),因而bmp格式的文件随着图片的扩大,色深的增加文件容量也会随之剧增。二是由于游戏ROM里面的图片保存原理也基本上和这种格式相同——调色板+索引值。   图片存储还有一些规则必须了解。色深不同保存后每个像素占用的空间就有区别,刚才我们所讲到的16色图片每个像素仅占用半个字节(因为只有16种颜色,所以就只有16个索引值用0-F表示出来),所以两个像素合起来才占用的是一个字节,合起来的数值在记录的时候是按位进行操作的,换句话说就是要满足数值存储的基本规则——高地址存放高位值,低地址存放低位值。如果图片是256色那么每个像素就得占用完整的一个字节,65535色(16位色)就得占用两个字节,以此类推。这里我们引入一个单位——bpp(bitperpixel)位每像素,这个单位和色深基本上是同一个意思只是描述的方式不一样,色深是直接指的颜色数量,bpp通过描述每个像素所占用的空间间接说明颜色数量,不过bpp这个在汉化的时候更为常用。通过以上的说明,我们就可以知道bpp和色深有如下关系:   1bpp—单色(黑白)   2bpp—4色   4bpp—16色(4bit就是半个字节)   ……   bpp这个单位在以后经常会用到,其中的含义一定要深刻体会。另外,游戏中的图片格式虽说和bmp比较接近,但很多时候还是有它的特殊性的,对于图片格式的认识我们以后接触到游戏的时候再作补充,图片的现实和存储还和硬件设备由一定的关系,现在只需要大家有个感性上的认识,在作图片修改的时候还有可能涉及到程序反汇编跟踪等等复杂问题,可以说图片修改既简单又困难。    小结:本节主要介绍了图片的保存规则,游戏机图形也是像bmp这样的把调色板与色素分离开建立索引映射的。毕竟一个是电脑一个是游戏机;一个是的格式,是要供人们编辑使用的,一个是“隐藏”的,是只让人看得见却摸不着的,两者之间还是会有一点点差异的,比如ROM里面的图片就不会有文件头,而调色板和索引值也不是一定连在一起的。不过修改图片步骤少,容易实现,对于标准格式的图片来说新手是很容易修改出来的。所以各个初次接触汉化的玩家应该先接触一下图片的修改,而且目前修改游戏ROM图片的工具《TLP》功能还算可以,能够很轻易地享受到成功带来的刺激。另一个需要说的是“高地址存放高位值,低地址存放低位值”这个规则在两节的基础内容介绍中都反复提到过,为的就是让大家记死,几乎所有的地方都用得着,在以后的内容学习中不到万不得已将不再有类似的提示了,靠大家自己理解。至此,汉化游戏前需要了解的基本内容也就告一段落,这两节的内容讲得非常的细致是希望大家不仅能了解到这些原理,更重要的是通过这种方式的学习使大家掌握分析问题的方法。网上有很多新手都在咨询汉化需要哪些工具哪儿有下载,这是十分不好的现象,学汉化学到的不应该只是怎么使用工具来操作,原因道理才是应该掌握的内容。这两节的学习虽然没有涉及到任何游戏的内容,但讲的都是一些非常基础的东西,是容易被大家所忽视的问题,网上的教材也对这些内容讲解不够,造成很多新手知识脱节,灰心丧气的不少。在下一次,我们就将展开对游戏的分析了,游戏机样本就是任天堂的GameBoyAdvance。 汉化基础教程——初探篇   通过前面三节学习,我们已经掌握的一些基本原理,接下来可以正式进入汉化的研究了,仍旧采用深入浅出的方式和大家一起来探讨。   前面已经说过我们要汉化游戏不外乎就是修改文字(对于游戏配音的汉化不是业余人士能够完成的),游戏里面的文字分为两类,这两类存储显示的方式不同就决定了汉化游戏将沿两条路来进行。图片文字数量较少,修改起来相对简单直观,但需要比较好的电脑美术造诣(图1);主要方法就是使用Tile修改工具进行修改。文本文字数量巨大,特别是RPGSLG,修改相对复杂且工序多,大多数情况下都需要自己编写工具来完成(图2)。文本文字汉化的主要流程为:字库寻找→字库破解→制作原始码表→文本导出→文本翻译→文本校验→制作新码表→字库导入→文本导入。字库破解和制作原始码表是最为关键的环节,如果这两个关卡能够顺利通过,那以后的各个环节都迎刃而解了。    介绍一下汉化最常用的工具:   《TileLayerPro》——游戏图片浏览修改工具,是修改游戏中非压缩图片的利器,支持从1bpp到4bpp所有格式的文件(包括GBA)。在进行图片文字修改,字库查找的时候都会使用到它。不过遗憾的是这个工具只支持16色模式,也就是最高只能到4bpp,对于GBA256色的图片无法进行正确浏览。程序界面由菜单栏、工具栏、Tile浏览窗口、内部剪贴板、Tile编辑器、调色板编辑器组成。菜单栏放置了这个工具所有的功能项,全部的功能都可以在这儿调用。工具栏放置的打开保存还有必要的放大缩小按钮,以及Windows计算器的快捷图标。Tile浏览窗口就是最大的显示出来密密麻麻星星点点的那个窗口,这些内容就是文件里的内容,之所以没有显示出图片而是现实的“乱码”是因为游戏ROM里面的内容除了包含必要的图片以外还包含有重要的程序数据,TLP是把所有的文件内容都当成图片来显示,即便是这样我们仍然可以不用理会这些乱码”(但也不要去修改他)。默认情况下还会显示网格线的,网格线把这些内容分为8*8的小块,每个小块就叫Tile。要注意这里的剪贴板并不是Windows的剪贴板,只能对内部使用,无法对外。Tile编辑区就是对Tile进行编辑的。在内容窗口里点一个Tile,Tile的内容就会出现在编辑区里,然后可以通过点击调色板使用对应的颜色进行填涂。TLP在显示图片的时候不是使用游戏里面的调色板(游戏里面的调色板是有程序控制的),而是使用的自身默认的16组16色调色板,所以在这里看到的图片有可能和游戏里面的颜色大相径庭。配色的时候可以在调色板编辑器里面翻页调整。当然RGB值也可以自己定义,并且可以保存下以便在以后修改的时候继续使用。虽然TLP目前不支持256色的图片,但毕竟256色的图片并不算是主导,GBA游戏一半以上都是16色图片。TLP是汉化的最为常用的工具。   《GBAmap》——TGB汉化小组自己开发的一个图片工具,针对256色图片的工具,可以浏览,替换等操作,遗憾的是不能够进行像TLP那样的直接局部修改。   《字模精灵组合器》——PGCG制作的汉化工具,针对制作码表的辅助工具,利用它可以轻易对照制作出码表文件,不过就是支持的字库类型只有比较典型的几个。   《UltraEdit》——最好用的16进制编辑器,对于汉化也是必不可少的东西。与此类似的还有《Translhextion》,里面包含有重要的功能——相对搜索。   《Paint》——其实就是windows里面的画板,当然是用来做图片修改的,简单的缝缝补补还是没有问题地,不过比起《PhotoShop》老大来说就相形见绌了。   《RelativefulSearch》——差值搜索器,查找文本的时候必备,如果使用的TranslHextion,这样的工具就没必要了。与此类似的还有《增强差值搜索器》,阿一编写的,中文好用。   《ScriptExtractor》和《ScriptInsertor》——文本导出导入工具,做好码表后就得把文本导出来进行翻译,翻译完后就得再导入回游戏,如果自己不会编写程序的话就得靠这个。类似的有《菜鸟》,菜鸟小生(一只会飞的菜鸟-_-b)编写的,选择的理由是中文。   《Counter》——文本字数统计工具。翻译好的文本就得统计处字数,然后再根据实际情况判断是否要扩容(大都需要)。另外一个用途就是列出文本中所有用到的标点、符号、字符,做新码表的时候需要。   《FontTile》——做字模的工具,对于文字量小,字体要求特殊的地方适用。如果要创建大量的字模还是自动动手吧DIY。   《No$GBA》——GBA的模拟器+调试器,做ASM必须得用,类似的有《BATGBA》,当然这些工具在兼容性上还是和VBA有差距的。具有讽刺意味的是《No$GBA》这个软件在创作当初是免费提供的,从名字就可以看出来Nodollar,不过发展到后来却大张旗鼓地收钱了,价格不菲哟。   《VisualBoyAdvance》——赫赫有名的GBA模拟器,汉化的时候也不能离开他,虽然本身的调色器并不强,但兼容性一流。以上这些工具是最为常用的,其他得还有很多很多,具体问题还得具体分析,那款工具更适用还得结合具体的情况来看。这些软件都是汉化高人自己编写的小程序,在性能上当然无法和大的软件工程相比,遇到一些运行错误在所难免,所以就没有必要再使用的时候刁难这些工具了。在各大汉化小组的网站上都能找到这些工具。汉化绝对不是使用工具的过程,很多东西都是无法通过工具去完成的,得依靠自己的大脑依靠自己的双手。小结:汉化需要工具来辅助,但绝不能依赖于工具,汉化的主体仍然是个人。虽然目前的小工具小软件数目众多,但面对浩瀚的游戏来说也只能算沧海一粟,在学习汉化的过程中最好也同时学习一门计算机高级程序语言比较好,在很多时候都没有现成的工具可以使用,得自己编写一定的程序来辅助完成汉化。不用学得太深,会点三大结构、基本语句、输入输出就够了,这里推荐使用Basic语言,开发平台可以用微软的VisualBaisc系列,VB开发的程序运行效率虽说不算太高,但编写的效率快,对于汉化这样的小工程绝对足够了。 汉化基础教程——图形篇   上节课我们做好了汉化前的准备工作,也介绍了不少的汉化工具,接下来就可以真正面对汉化了,再强调一次,汉化不仅仅是靠使用工具就能完成的。   我们先从最简单的图形修改开始。图形修改相对来说直观,修改后很快就能看见效果,我们所用到的主要工具就是上次谈到的《TileLayerPro》(以下简称TLP),界面我们基本上熟悉了,再对几个细节说一下,状态栏里面最左边的数字表示文件的大小。Offset是偏移地址,这个地址指的是左上角第一个像素的地址,修改的时候离不开这个地址值。右边的表示显示的模式,这里表示GBA模式。操作主要靠键盘和鼠标,鼠标就不用说了,反正就是点击。键盘翻页键可以上翻下翻整个窗口的内容,实现快速定位;键盘方向键可以控制图形以Tile(碎块,就是被网格线分开的一个个小块)为单位上下左右移动,实现粗调;按住键盘Ctrl再按上下左右以像素为单位移动图形,实现微调。每个Tile在显示的时候像素的地址从左到右从上到下依次增高,在GBA4bpp模式下一个像素占用4个位,每两个像素占用1个字节,所以一个Tile就占用0.5*8*8=32个字节;图形框里面的Tile从左到右从上到下地址也是依次增高的(图)。   理论结合实践,我们这就来尝试一下,从最简单的入手,以《SonicA2》为实验对象,以开始界面中间的那排白色的日文字符为目标,翻译成中文应该是“请按START键”(之所以不以顶上的“ソニック”为修改对象一是因为这个图形是256色的用TLP无法修改,二是因为这个图案修改起来需要有电脑美术创作能力)。找图片有两个方法,最直接的莫过于直接用《TLP》打开游戏ROM,用肉眼从上到下地直接观察整个ROM,在ROM的中部某处就能找到这个图形。这个方法非常的快,但毕竟要靠肉眼盯着看,一是容易漏掉,二是万一ROM中多次出现相差不多的内容就不知道该是哪个了,还得一个一个地改着看,麻烦。我们学习另外一种更加有效的方法——搜索法。   我们所使用的模拟器别光认为他就只能模拟GBA游戏,VBA这个模拟器不光能模拟游戏,还有一些基本的调试工具,这对汉化来说提供了极大的方便。模拟器执行游戏也是模拟的游戏机机能,GBA卡带里面的游戏内容本身就是固化在内存里的(GBA卡带其实也是内存,只读内存),模拟器在执行ROM前首先会把ROM文件里面的信息读取到内存0x08开头的一块区域里面(相当于插入GBA卡带),然后再执行代码的。要让图形出现在屏幕上就必须先把数据传送到显存(0x06xxxxxx)当中,了解了这个原理我们就从显存中找到图片的二进制数据,从而就可以在ROM中搜索出准确的位置了。首先,用VBA打开这个游戏并运行,一直到出现这个游戏画面,再依次选择“工具”、“贴图查看器”出现一个窗口。窗口默认情况下以16色来显示显存中的图片,位置在0x06000000,色深我们不用去改他,本来就是16色的图片,依次改变基本字符下面的选项,直到出现我们想要的图形。每次运行时显存内容都可能不一样,我是在0x06010000找到了图形的残像,虽然文字很乱但基本上就是这些了,图片被分割成了几十个Tile,Tile在这里是不会被重组的,从左到右从上到下依次排列。拖动一下调色板滑竿让我们看得更加清晰,仔细看一下就会发现中部的那些Tile就是我们要改的内容(红框部分),我们随便选取一个Tile(黄框部分)。对话框会返回两个值:贴图、地址,贴图我们暂时不用去管它,记下地址这个值,关闭这个对话框。再进入工具里面的“内存查看器”,输入刚才的那个地址然后回车,马上就会跳到这个地址了0x06013AA0(输入的时候不用敲入“0x”),这些值就是刚才我们选的Tile的二进制值。接下来用16进制编辑器打开这个ROM,使用16进制查找(UE的快捷键为ctrl+f)“2231D33322”这一串数值,查找的数值越多,找到的雷同可能性就越小。搜索出来一共会有3个结果,位置在5D9A70H、5DAFB0H、6C6250H。正常!因为这个图形在ROM中本来就保存有3次,到底该是哪一个逐个修改看看就知道了,这里该怎么操作,请大家自己想一想、做一做,很简单的。运气比较好,第一个地址5D9A70H就是我们想要找的,记下这个地址。回到TLP下,按Ctrl+G,输入这个值跳转到这个地址下马上就可以看到内容了。在这里显示出来的仍然是不会重组的Tile,游戏里面是通过程序指令来重组这些Tile的,假如这种Tile很多的时候这样看起来确实非常的累,最好编写程序来实现Tile重组,以便于我们察看,所以一开始我就建议大家要学会编程,道理就在这个地方。这种小程序熟练后顶多10分钟就可以搞定的。从这些Tile上看来并不完整,我们进行一下左右调整,当所有需要的图形Tile都出现后就可以数一下有多少Tile,计算得到整个图形是23*2Tile的,所以像素就是184*16。接下来我们可以导出一小块Tile,以这个Tile作为母板描绘汉字。导出图片的方法是先用鼠标右键框选一个矩形反色框,然后选择菜单里面的“编辑”-〉“导出位图”保存为bmp格式文件,之后就可以使用画板,Photoshop之类的图形编辑软件修改了。修改的时候注意几点:我们之所以要导出一些Tile是为了从这些Tile上取RGB值,因为我们不能另外创建新的颜色,否则在导入后颜色会发生偏移。修改生成文字的颜色要和原文字相对应,原文字的主体色是什么修改后的也必须是什么,阴影色背景色这些都要一一对应。由于TLP是按顺序显示Tile的,不可能对图片进行重组,所以导入得时候还得按照原来的顺序导入。在画板里面描绘中文字BMP图片的时候还是可以不必考虑顺序问题,导入的时候先把图片导入到一个废的文件里,然后再从这个废的文件往游戏ROM中导(借助剪贴板粘贴复制),这一步注意一下顺序就可以了(TLP支持多文档)。一般来讲我们在把日文变为中文后字符长度都有一定的缩短,为了使修改后的中文仍然会出现在屏幕中央的位置我们就得注意一下文字在图片中的位置,为了方便居中对齐,我们在修改文字的时候要把画布的大小调为原来图片的大小,针对这个例子就是计算得到的184*16,然后再在这个区域里居中,完成后再把整个图片完整地导入,包括所有的空白部分。导入完毕保存后我们就可以在模拟器里面运行看看效果了,千万不要激动,要使用VBA重新打开一次ROM,而不是Ctrl+R复位。   这是我做的导入ROM后的样子和游戏中的效果:  小结:这一节主要是操作方面的知识,没有什么原理基础,估计大家看完后一片茫然,的确,光看是不顶用的,经验是要靠实践来积累的。初次修改游戏大家一定会遇到问题(如果没有我拜你为师)具体该怎么解决仍然是留给大家继续思考的问题,自己研究出来的比别人教给你要深刻得多,不仅完善了自己的知识,更锻炼了自己的能力。另外游戏画面中能看到的内容一定能在显示内存中找得到,但在显存中能找到的图形并不一定能在游戏ROM里面找得到(这里的显存指的是游戏机的显存,也就是VBA中0x06xxxxxx这块内存区域而不是电脑显卡上的内存),很多情况下由于图片过大,游戏编写者会采取一些特殊的方法来缩减图片所占用的空间,或者为了其它某些目的而采用其它的存储方式,往往这些图片是靠程序处理生成的,就无法直接地在ROM中找到了,需要学习ASM破解后才能跟踪并修改。《索尼克A2》这个游戏里面能够使用TLP直接修改的地方相当的多,是一个很好的修炼对象,大家珍惜。汉化基础教程——文字篇(一)  随着对汉化理论的逐步理解与掌握以及对经验技巧的掌握,本教程所涉及的内容也会渐渐加深、渐渐拓宽。前面几节相信大家已经懂得了如何修改游戏中的图片内容,这主要是借助现成的工具加上一点点耐心傻瓜化地修改来完成的。有很多对汉化抱有热情玩家都只能停留在修改图片上,其原因大家也能想得到。仅仅掌握了修改图片的方法也还远远不够,游戏发展到今天基本上没有哪个游戏的文字就纯粹是采用图片来存储的了,了解文字显示的核心至关重要。从现在开始接触的东西对大多数人来说才真正感觉到难度。希望大家既不要骄傲自大,也不用妄自菲薄,万里长城也不是一天建成的,既然大家对汉化有如此的热情就一定要对自己充满信心。  在教程的最开始就谈到了文字在游戏中是如何存储显示出来的:游戏文字信息通过将文字编码、文字点阵信息分离并保存到游戏文件中,显示文字的时候程序先读取表示句子组成文字的一序列编码,然后根据游戏自身独有的字模转换程序通过编码计算出字符点阵的物理地址,然后再通过一系列的显示程序把该字符点阵显示到屏幕上。我们知道了基本过程后就不难猜想到,既然要修改文字我们还是可以通过修改点阵来实现。例如句子“I love China!”,可以把字符点阵“I”改为“我”;点阵“l”改为“爱”;点阵“o”改为“你”……以此类推。句子就被改为了“我 爱你,中 国!”,多余的字符就全部清除。理论上分析了,我们先来找个游戏进行一下实践——《光明之魂II》我们就来修改一下图片上顶部出现的那句话,按照字面意思可以修改为“请选择一名角色”。通过我们前面所掌握的修改图片的方法很快就能找到这些文字的位置,用TLP定位到0x8DC068,这里就是第一个字符“キ”的位置,我们可以看到该字符由4个TILE构成,排列顺序为[左上][右上][左下][右下]。在前面就已经说过图片之所以会出现错位这并不是由于TLP软件的错误造成的(TLP永远都是顺序显示的),这个和游戏显示程序的有密切的联系,但具体为什么需要这样排列的这并不在我们讨论之列,我们需要做的仅仅是按照原先的顺序排列好修改后的字符就可以了(字符的描绘可以使用任何一款图像处理软件中的文字工具来制作)。经过导出导入修改等一系列过程,这个字符被修改为了“请”字。其他的字符按照这样的方法依次修改,修改完后用VBA模拟器预览效果,可以看到这样的画面:看来这样子做是相当成功的!见到了这样的成果你心情将会如何呢?  高兴之余静下心来还是会发现一些问题,如果把“キ”改为“请”的话,游戏中所有出现了“キ”字符的地方都变为了“请”,但“キ”并不是“请”的意思。如果全都都照这样子修改的话,一两句还是可能实现,要是句子多了绝大部分句子就要混乱了。所以仅靠这样子的修改还不行,我们还得调整每个字符的排列顺序甚至出现的位置。我们再来看看字符显示的全过程,程序是先从文件中读取了句子文字的编码串然后再经过一系列程序才显示出来的,换句话说编码串就决定了字符的排列顺序,要改变文字的顺序就是要改变编码串中各个编码的顺序。例如:先假设01表示“A”、02表示“B”、03表示“C”,句子“ABC”对应的编码是010203,如果要改为“CBA”的话我们就可以把“010203”改为“030201”。明确了这个道理,我们就必须找到句子对应的编码串在游戏文件中的具体位置,但我们事先并不知道每个字符对应编码,而且每个游戏的编码都不尽相同,所以也不可能根据经验来判断,缺少了这些关键的信息我们就无法搜索出编码串位置。于是我们的首要任务就是先找到一些字符的编码,然后就可以顺藤摸瓜测试出其他字符的编码。但问题是如何知道字符编码?这是一个巨大的难题。在开始找到“キ”字符后,留意一下就可以发现一些线索:基本上所有的文字点阵都保存在“キ”字符点阵附近的一大块区域内,而且字符和字符之间并没有其他杂乱信息,看来设计人员是把整个游戏出现的字符都放在了一起。那么这些点阵字符的首地址就很有规律了——公差为128Byte,因为1个4bpp的Tile占用的是32Byte的空间,一个字符需要4个Tile。前面也说过,编码是用来计算字符点阵的物理地址的。至于使用的什么具体公式我们并不用去在意他,我们可以导出一个抽象公式来理解:点阵地址=字库首地址+偏移地址偏移地址=比例常数*字符编码+偏移量比例常数=点阵大小*K所以:点阵地址=字库首地址+点阵大小*K*字符编码+偏移量对于同一游戏来说公式中的字库首地址和偏移量都是一个常量,唯一的变量就是中间的一段,由此看来点阵地址和字符编码是成线性对应关系。而我们恰好可以查看得到等号左边的点阵地址。把上面的公式通过一些数学上的变形可以得到:△点阵地址可以写成△字符编号*点阵大小,所以又可以得到:(△字符编号就是两个字符点阵的序号位置差,单位为“1”)△字符编号可以轻易知道,而系数K在同一个游戏中是一定的,并且公式里的其他参数全都为整数。△字符编码一定大于或等于△字符编号,因而K小于等于1。点阵大小就是每个字符点阵所占用的空间,这个例子就是128。(还不至于哪个游戏设计者喜欢自我拔高到利用二次函数来计算吧-_-b)。只要能知道K的具体数值我们就能知道△字符编码了,再接下来就可以通过相对搜索来得到句子的物理地址咯。  准备好一个相对搜索工具,比较好用的是汉化高人“阿一”制作的《增强差值搜索器》和一个《字模精灵组合器》,最后再理解一下上面的推导过程。这一节先到此为止。小结:本节开始正式涉及到文本文字的修改,内容逐步变得难以理解,光看不实践是绝对不行的。文本文字的修改要比图片修改更加的困难,很多时候都得靠灵活的方法才能对付。大家有了一定实践基础以后很容易犯迷糊,误以为每个游戏的文字都能按照这样的方法修改,我一直都在强调,游戏不可能一层不变。这一节中虽然提到了几个数学公式,如果你对数学不太了解,也不用去在意几个公式怎么得到的,只要你能知道地址和编码成线性比例,有这个意识就可以了。我在这儿之所以要这样提也是为了告诉大家要调动自己所掌握的其他相关知识来思考问题,一个人的知识结构应该是网状的。这不仅包括电脑相关知识,凡是能用上得都可以用上来,万一此路不通还可以通过其他知识换个角度来思考。细心的人也许会注意到“キ”字符修改为“请”字符后颜色数变少了,没有了蓝色。我来解释一下:对于大字符(一般来讲8*8的字符叫小字符,除此之外就算大字符)外观看上去比较粗大,如果只用一种主色再加上一种阴影色的话会使字符看起来有明显的锯齿,特别是对于笔划比较简单的字符(GBA可没有全屏抗锯齿功能哟)。所以游戏设计者会采用一些辅助色来对字符的拐角进行前景和背景的过渡。不过这对于笔划相对比较多的中文汉字来说用不用过渡效果并不是十分明显,如果再增加字符光滑的处理的话汉化的成本(主要是时间,时间就是金钱嘛)就太高了吧。除非你有特殊要求,否则就没有必要这么做了,一般都是采用一种主体色加阴影色在加背景透明色来做汉字字模了。汉化基础教程——文字篇(二)  字符的点阵地址和编码的关系你都理解了吗?如果已经比较透彻了就可以继续研究了。上次我们提到了这个公式:从实际出发,我们可以从TLP中观察字库来计算出编号的差值,而K从表面上来看我们只能确定的是一定小于等于1,所以就需要对K进行一些猜测。接下来介绍一下什么叫相对搜索:相对搜索就是指不知道具体的搜索值,而只知道几个值之间的差(例如:abc三个数,我们事先并不知道这三个数的具体数值,只知道a-b=5b-c=6),因此我们就利用这其中的差值作为条件来进行搜索,这样的搜索方式就叫“相对搜索”(或“差值搜索”)。比如搜索条件是“0,5,6”,可能搜索出来的结果有很多个,像“0,5,6”、“2,7,8”“10,15,16”等等。这种相对搜索方式正好适合我们所知道的条件。先来看看搜索工具《增强差值搜索器》:全都是中文化的,傻瓜式的操作没啥需要特别说明的地方。  下面我们来找找上一节中《光明之魂2》里的那句话“キャラクター……”的位置。首先我们打开TLP定位到字库的范围内,使窗口左上角第一个Tile位于字库的最开头,经过观察得知那个圆圈A就是字库的开头。将这个字符的第一个Tile出现在左上角位置(记得微调的时候使用[Ctrl]+左右),并记下这个位置的地址0x8D94E8。接下来打开《字模精灵组合器》工具,并打开GBA文件和一个调色板文件(用VBA随便导出一个吧,只要能看清楚就行)。然后再在起始地址框中输入开始记录的地址,不过需要注意的是这里需要输入的是10进制地址,把开始记下的地址先转换一下(使用科学计算器吧)得到9278696。因为字符是16*16的结构,所以在窗口右边选择“16*161”模式,点击“显示”后出现这样的画面:我们需要利用这个工具来计算字符序号的差值,虽然我们不知道每个字符的准确序号,但公式中只需要差值就可以了。窗口左边的位置可以帮我们计算出差值,只要把鼠标指针悬停在字符上就可以出现这个字符的相对值(相对于左上角第一个字符的值)。首先把鼠标放到字符“キ”的位置上得到“位置57”记下来,接着是第二个“ャ”得到“位置98”,依次类推。最后得到的记录是“5798775860”。接下来切换到《增强差值搜索器》的窗口。其中“搜索模式”我们先来试试“双字节”,我们记录下的是16进制值,所以“值类型”选择16进制,其他地方先暂时不用去改变它。最后剩下“值”这一栏就是填写差值的。在上面的公式中我们缺少的K值只能靠猜测得到,最简单的猜法就是设想“字符编码”的改变量恰好为“字符序号”改变量的整数倍(再怎么说程序员也不会清高到使用浮点吧),最简单的整数倍就是1。既然如此我们就先假设“△字符编号”等于“△字符编码”,于是在“值”这一栏中依次输入“5798775860”,输入一个数按一次添加,最后点击最下面的“开始搜索”。稍微等一会儿,“搜索结果”里面就会出现一些搜索出来的结果。最左边的表示结果的地址,箭头右边的表示从该地址开始的文件的真实内容值(16进制),我们可以清楚地看到搜索出来的结果每两个数之间的差值刚好和“5798775860”一致,现在你应该更深刻地体会到什么叫相对搜索了吧。不过还是不要欢喜,因为我们一开始就是假设的K=1的,倘若K不是1,那么我们找到的并不是正确的地址,况且现在
/
本文档为【汉化基础教程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索