分享到新浪微博 分享到QQ空间 打印

[美工] 配合UNLZ,彻底推倒ROM中的压缩图片(含带调色板教程)

配合UNLZ,彻底推倒ROM中的压缩图片(含带调色板教程)

在上一篇图片教程当中,我介绍了如何修改针对tile查看器能够看到的图片,但这种方法同时还是存在缺陷的。
第一,虽然找到了图片,但由于没有调色板,仅仅只能修改外貌而无法对付颜色;
第二,ROM中有不少图片是经过LZ77进行压缩的,仅仅使用TILE查看器是不可能找到的。

那么今天我们就来挨个解决这两个问题吧。

首先来解决第一个。

如何修改未被压缩的调色板

所需工具:
-VBA-我用的是VBA1.80英文版,大家对应到汉化版即可。(为什么?因为我总觉得汉化版有BUG,以前遇到过,有阴影)
-CT2-这是一款很爽的ROM综合查看器,全名Crystal Tile 2,大家自己百度下载吧。
-WinHex-我很喜欢的一款HEX编辑工具。这是一款专业级工具,在HEX方面提供的功能相当强大,欢迎大家从UE走向WINHEX,呵呵。
*本例将以如何修改火红美版当中对话框颜色为例,讲解如何修改调色板*
首先,用VBA载入你的ROM,并且让画面停留在你所要修改图片的地方。



现在我们打开工具当中的图块查看器:


游戏中一般使用的都是16色图,而整个调色板区域却是256色的,所以我们的图通常只占用一部分而已。为了搞清楚占用的到底是哪一行,我们在这个图块查看器里确认一下,步骤我都写在图上了。

下面打开调色板查看器:


通过在图块查看器里的观察,我们可以知道,我们要找的调色板在最后一行(为什么?因为那个调到最后的时候图片正常)。
首先保存下左边的调色板(这是背景调色板,右边那个是物件调色板,是活物[能动弹的那种,比如大地图人物]用的)
存成图中指定的那种类型:


接下来我们继续回到调色板查看器。我们选中最后一行调色板中的第一个颜色,看到地址那里会有一个地址出现,记住它。

现在再打开内存查看器,转到那个地址:


转到之后点击另存为,从我们获得的地址开始存起,保存大概20个字节即可。

这里是内存中的调色板,因为我们之前说了,是未被压缩的,因而实际上ROM中它们同样是这样存放的。

那么下一步,便是用WinHex打开刚刚保存出来的内存数据,全选,在菜单中选择:编辑-复制-16进制数值。再用WinHex打开我们的ROM,菜单:搜索-搜索16进制数值。
经过搜索,我们很快便会定位在一个地址上,如下:



把得到的地址记下来。

现在打开APE,载入ROM,选择按地址搜索,在地址框键入地址,选择载入,如下:


这样,我们便可以自由的修改调色板了。
(修改时要先点选上面的copy按钮,复制到下面修改,然后再按"replace"覆盖上去。在低下时双击颜色即可编辑)


回到ROM,果然,发生了我们想要的变化:



那么大家可能会问了,CT2究竟起什么作用呢?
实际上,用CT2可以直接在ROM里带着调色板编辑图块,具体怎么用,呵呵,大家自己钻研钻研吧……
附件: 您所在的用户组无法下载或查看附件


想死你们了!

TOP

那么,现在我们来解决第二个问题,
【其后的部分将很依赖于您是否阅读了之前的内容】
如何修改经过LZ77压缩的图片


LZ77是一种GBA游戏ROM中常用的压缩方法,这种方法能够有效的减少图片、调色板等信息在ROM中的储存空间,起到了很好的压缩作用。

但对于改版而言,这种压缩无异于加密。

UNLZ_GBA这款工具其实就是专门解压缩LZ77压缩后的图片的工具。但是由于口袋ROM中调色板比较分散,而UNLZ_GBA本身又有些BUG,使得仅仅通过UNLZ是不能很好的做出我们想要的图的。

所需工具:

-UNLZ_GBA[HackMew Hacked]- EliteMap包里带着一个,但我倾向于使用HackMew修改过的版本,这个版本在工具区置顶工具箱中即可找到。后文简称UNLZ。
-VBA- 不说啥了,模拟器。
-老妖的LZ77加/解压缩工具- 同样在工具区置顶工具箱中可找到。
-WinHex-很专业的HEX工具。
-APE-调色板的傻瓜化工具。

本例将以修改战斗中的文本框为例,讲述如何使用UNLZ+APE完美修改LZ77压缩图片。
首先必须清楚一点,那就是我们要改的图片确实经过了LZ77压缩。

怎么验证呢?其实道理很浅显——用上篇教程(http://poketb.com/bbs/thread-13410-1-1.html)当中的方法找不到的图片,就是LZ77压缩过的图片了……
UNLZ几乎可以找到所有的LZ77压缩图片,所以只要从头开始,挨个看,绝对能看到你要改的那个……
当然,注意了,UNLZ要调到黑白模式。(为什么呢?因为在彩色模式下,UNLZ会尝试使用一些调色板,而这些调色板很可能会让原本有内容的图片变成漆黑一片)

凭借运气,我找到了那个战斗文本框在UNLZ中的位置,如图:

现在要做的很简单,就是把图导出为PNG,然后在上面做一番修整。当然了,不要修的出格了,要保证图片里面的文本框还是差不多那么大。
导出的时候注意了,我们要绝对的黑白图,不要带着任何调色板出来。你用其它图片查看器打开导出的图片,一定要是黑白的。

因为我对那个文本框本身没啥看法,所以就不改形状了,只当是改过了……
现在我们导入。
导入的时候要睁大眼睛了,不要将调色板导入进去,仅仅勾选修复指针、导入图像和那个提示重定向的勾。

这里关键终于到了,该去改调色板了。
这种图片的调色板通常和图片一样,是经过LZ77压缩的,我们如何查找、修改呢?
首先,明确一个概念:ROM里压缩的东西,在GBA内存当中一定会解压成原始数据。
那么我们现在打开内存查看器,来到调色板所在的内存区(如何做的?请看1楼文章):

我们导出调色板。注意了,因为没有专门了解过LZ77压缩,所以我只是导出了需要用到的那一行调色板而已,也就是长度达到FF左右的数据(从0x05000000到0x050000FF)。(但经观察,即便你多压缩一段东西,前面的压缩过的不会变,还是那样,只是后面续了一段而已……)
现在拿出老妖的那个工具,选择内置算法,将我们导出的内存数据进行压缩。
压缩过后,理论上来说,和ROM里压缩过的就差不多了(为什么说差不多?你自己试试,然后再看看就知道了)。
现在再打开WinHex,在ROM里搜索这段压缩后的代码。
但,一般地,要去掉压缩生成的头,并且仅搜索其中的一小段。如图:

搜索到唯一结果时,你拿到的便是压缩后的调色板地址。

这个地址一般也不怎么好处理,所以再度拿出APE来~方法和1楼一样滴
APE这工具有不少毛病,其中有这么三个:
1、你必须精准的将搜索地址输入为某行调色板起始地址,否则可能会搜到假的、错的
2、即便是对于压缩调色板,也不是一定就要勾选压缩那个勾——确认你不会错过任何有用的
3、绝对不要期望“按调色板搜索”能找到什么,我试了,什么都找不到- -

那么如何处理,或者说搜到的可能性更大呢?
1、多试试不同的调色板起始地址,哪怕多偏移一点
2、压缩那个选项勾或不勾都试试
3、替我想到一个更好的工具?
搜到正确的调色板后,恭喜,你可以改了。
附件: 您所在的用户组无法下载或查看附件


想死你们了!

TOP

嗯。。。路过。。。支持下。。
不过咱改战斗文本框的步骤MS没这么复杂....= =

TOP

引用:
原帖由 口袋饭 于 2009-11-14 12:48 发表
嗯。。。路过。。。支持下。。
不过咱改战斗文本框的步骤MS没这么复杂....= =
-。-不妨说说看,反正我改的有点复杂我承认


想死你们了!

TOP

引用:
原帖由 liuyanghejerry 于 2009-11-14 12:53 发表

-。-不妨说说看,反正我改的有点复杂我承认
可能因为你改调色板的方法吧。。
我都不找调色板地址的。。= =

TOP

引用:
原帖由 口袋饭 于 2009-11-14 13:47 发表


可能因为你改调色板的方法吧。。
我都不找调色板地址的。。= =
-。-不会吧,我都是做一步写一步教程,不应该找不到啊……
换做你你会怎么改调色板?


想死你们了!

TOP

引用:
原帖由 liuyanghejerry 于 2009-11-14 13:50 发表


-。-不会吧,我都是做一步写一步教程,不应该找不到啊……
换做你你会怎么改调色板?
这个嘛。。
就按我那教程那样,逐个读取HEX。。= =

TOP

改一個框都要那麼複雜

TOP

引用:
原帖由 calvinchan125 于 2009-11-14 14:45 发表
改一個框都要那麼複雜
只是以框为例,再复杂的图都一样了。


想死你们了!

TOP

脑残的LZ77啊……ape的按调色板搜索我至今没出现过一次搜索成功过
并且
有时候从ape中看到的颜色跟从vba中看到的颜色不一样
修改完后有时候也会发生变化
我怀疑ape计算颜色的时候有问题……

TOP

引用:
原帖由roywillow于 2009-11-17 08:29 发表脑残的LZ77啊……ape的按调色板搜索我至今没出现过一次搜索成功过并且有时候从ape中看到的颜色跟从vba中看到的颜色不一样修改完后有时候也会发生变化我怀疑ape计算颜色的时候有问题……
APE是开源的,你可以改改看么~


想死你们了!

TOP

直接看代码其实很难理解究竟怎么办的

希望能有个rgb和gba色转换的文字说明……

TOP

(⊙o⊙)哦
国外是这样改的
有时UE
我在UE找不到地址

TOP

恐怖~~~~~难得LZ的耐心~~~~~~~

TOP

好乱啊,这个,回复了慢慢看

TOP

改的都只能是英文版吗?不能切底改中文?

TOP