【破解手记】普利尼,破解手记[3]

趁上班间隙偷懒再上来更新一下。上回书把文本破解方面基本都介绍过了,本回就来扯一下图片方面。
该游戏用到的图片格式有三种txp,dat,GM3。txp格式上回书已经说过了,本回主要介绍dat和GM3。
txp在该游戏里用的地方并不多,主要是用于简单的静态图片,例如头像,系统文字图标等,而大量使用了dat格式的图片。

dat格式其实准确来说是指用以表现动画用途的图片,他的后缀名是dat所以,我就暂且称作dat格式了。USRDIR下的ANIME.DAT就是这种图片格式的打包文件,在start里还有anime00.dat,该文件是用于游戏开始启动时的所以放在start里。dat文件有一点点类似gif,也是把动画播放的每一帧的图像都存在单独的文件里,dat也是这样。该格式其实是也是一个打包文件结构不过打包文件头只有一个子文件数量信息然后接着的就是各个子文件数据了没有子文件索引信息。
dat打包文件头:
该打包文件头大小为0x10,第一个byte存放文件内包含的子文件数量,其余字节都为0。紧随其后的就是各个子文件的数据了。

dat子文件是一种包含多幅图像的文件,各个图像的大小,颜色数,调色板数量格式都有可能不同。256色的图像数据对应一种256色调色板,而16色图像的话是公用几个16色调色板的。
其调色板和图像数据对应关系比较混乱。还有要一下的就是该格式内还包含大量播放动画所需的数据,由于和图片导入导出无关,所以我就没有分析具体的作用,有兴趣的童鞋可以自己分析看看。
dat子文件:

offsetsizemeaning
0x001dword文件大小
0x042byte未知数据
0x062byte0x18指向的数据域单位大小(单位:2dword)
0x082byte0x1C指向的数据域单位大小(单位:3dword)
0x0A2byte0x20指向的数据域单位大小(单位:3dword)
0x0C2byte0x24指向的数据域单位大小(单位:2dword)
  即调色板种类的数量,详见0x24项说明
0x0E2byte0x28指向的数据域单位大小(单位:3dword)
  即图像信息数据域,详见0x28项
0x102byte0x2C指向的数据域单位大小(单位:4dword)
0x122byte0x30指向的数据域单位大小(单位:4dword)
0x142byte0x34指向的数据域单位大小(单位:4dword)
0x162byte0x38指向的数据域单位大小(单位:1dword)
0x181dword未知数据域指针
0x1C1dword未知数据域指针
0x201dword未知数据域指针
0x241dword调色板信息数据域指针,每单位为一种调色板信息
  前一dword为调色板数据地址
  后一dword为调色板数据大小
0x281dword图像信息数据域指针,每单位为一张图像的信息
  第一个dword为图像数据地址
  第二个dword为图像尺寸:前半dword为长,后半dword为宽
  第三个dword为图像标志:第一个byte为图像bpp,第四个byte为有无tile结构标志(00:没有,01:有),其余byte未知
0x2C1dword未知数据域指针
0x301dword未知数据域指针
0x341dword未知数据域指针
0x381dword未知数据域指针
  注意:若0x16项内的值为0,则该指针在数值上就等于调色板数据地址
0x3C 各种数据域开始处

上面的那些未知数据就是用于播放动画时所用到的,有兴趣的童鞋们可以在此基础上继续分析下去。

现在还剩下一个GM3格式,该格式其实是3D模型贴图文件,里面除了纹理贴图数据外还有大量的3D坐标,UV纹理坐标等,同样因为这些数据不涉及图像导入导出,所以我也没有分析具体的用处。同dat一样GM3也是一个多图像文件格式,同一文件内含有多幅图像数据,其格式如下:
GM3:
文件头结构:

offsetsizemeaning
0x00dword数据块数量(datNum)
0x04dword图像数量(imageNum)
0x08 数据块标识区域的开始地址,以dword为单位,共有datNum个
0x08+datNum*4 数据块域与图像域指针表,以dword为单位,共有datNum+imageNum个
    其中第datNum+1个dword指针即为第一个图像开始地址


单个图像:

offsetsizemeaning
0x00dword图像大小
0x04dword图像宽*高
0x082*BYTE颜色数(clrN)
0x0a2*BYTE图像大小(以2的幂来表示,例如4*4表示2^4 * 2^4)
0x0cdword调色板数量(palNum)
0x10 调色板数据开始地址,以clrN*4为单位,共有palNum个
0x10+clrN*4*palNum 图像数据开始地址


大功告成,终于讲完了。普利尼破解方面就这些内容了,剩下的就是翻译,润色,美工等细致活,这些都交给清文了。
相关的图片导入导出工具和上面提到的相关工具及其源码,我会在汉化补丁发布后一起放上来。用我的图片导入导出工具导出的图片格式为TIM2格式,该格式是PS2上的常用图片格式,需用OPTPiX iMageStudio 3软件转换为常见的图片格式后方可浏览编辑。
这里顺便贴一下TIM2文件的格式作为参考:
文件头大小为0x40的TIM2:


以下为05h为00时,也就是16字节标识,即64字节文件头模式时
00h-04h  54 49 4D 32 04 TIM2? TIM2标识符
05h      00:16Byte Alignment,16字节标识(40h开始数据) 01:128Byte Alignment,128字节标识(100h开始数据)
06h      01  头的结束
08h-0Fh  保留(皆为00)
10h-13h  文件大小-16(10h)
14h-15h  调色板大小(如果为高/真彩时为0)
16h-17h  保留
18h-1Bh  图像数据大小,算法Xpix*Ypix*nBit/8(bit/byte),X像素*Y像素*n位/8(位/字节)
1Ch-1Dh  固定30 00
1Eh-1Fh  颜色的数量,只有00,10[16],00 01(100[256])这三种可能,00为Direct Color(高彩/真彩)
20h-21h  固定00 01
22h      调色板模式下调色板类型,01,16BitCSM1CLUT.02,24BitCSM1CLUT.03,32BitCSM1Clut.81,16BitCSM2Clut.82,24BitCSM2Clut.83,32BitCSM2Clut.高彩/真彩模式下为00
23h      色彩模式,01:16位高彩,02:24位真彩,03:32位真彩+Alpha,04:16色调色板,05:256色调色板
24h-25h  宽度,像素
26h-27h  高度,像素
28h-2Fh  TEX0 GS寄存器设定(存储方式不明)
30h-37h  TEX1 GS寄存器设定(直接存储)
38h-3Bh  TEXA,FBA,PABE GS寄存器设定(存储方式不明,估计类似于加法之类的)
3Ch-3Fh  TEXCLUT GS寄存器设定(直接存储)

TIM2文件结构描述转自http://www.zxp.net.cn/Bo-Blog/post/233/,感谢原作者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值