诚毅小家|集美大学生活【集美大学,诚毅学院,水产学院,师范学院,美术学院,财经学院,体育学院,航海学院,集美学村,石鼓路,龙舟池】

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 462|回复: 0

【GBA、NDS、PSP】汉化基础教程——图形篇 by PGCG

[复制链接]
发表于 2010-8-24 16:34:51 | 显示全部楼层 |阅读模式
本帖最后由 守护¥云 于 2010-8-24 17:13 编辑

汉化基础教程——图形篇by PGCG
    上节课我们做好了汉化前的准备工作,也介绍了不少的汉化工具,接下来就可以真正面对汉化了,再强调一次,汉化不仅仅是靠使用工具就能完成的。
     我们先从最简单的图形修改开始。图形修改相对来说直观,修改后很快就能看见效果,我们所用到的主要工具就是上次谈到的《TileLayerPro》(以下简称TLP),界面我们基本上熟悉了,再对几个细节说一下,状态栏里面最左边的数字表示文件的大小。

Offset是偏移地址,这个地址指的是左上角第一个像素的地址,修改的时候离不开这个地址值。右边的表示显示的模式,这里表示GBA模式。操作主要靠键盘和鼠标,鼠标就不用说了,反正就是点击。键盘翻页键可以上翻下翻整个窗口的内容,实现快速定位;键盘方向键可以控制图形以Tile(碎块,就是被网格线分开的一个个小块)为单位上下左右移动,实现粗调;按住键盘Ctrl再按上下左右以像素为单位移动图形,实现微调。每个Tile在显示的时候像素的地址从左到右从上到下依次增高,在GBA 4bpp模式下一个像素占用4个位,每两个像素占用1个字节,所以一个Tile就占用0.5*8*8=32个字节;图形框里面的Tile从左到右从上到下地址也是依次增高的(图)。 


     理论结合实践,我们这就来尝试一下,从最简单的入手,以《Sonic A2》为实验对象,以开始界面中间的那排白色的日文字符为目标,翻译成中文应该是“请按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直接修改的地方相当的多,是一个很好的修炼对象,大家珍惜。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|诚毅小家 ( 小家社区工作室 闽ICP备05007965号 )

GMT+8, 2024-12-22 16:09 , Processed in 0.051205 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表