|
如果你要转载我的帖子,请著名( "作者:叶风(windlucid) qq:239302992")
剑侠系列图片相关贴子。
第一篇:关于金山公司的剑侠情缘系列游戏的图片格式 之一
第二篇:关于金山公司的剑侠情缘系列游戏的图片格式 之二
第三篇:关于金山公司的剑侠情缘系列游戏的图片格式 之三
新贴:[em3] [em3] [em3]
第一篇:“目标”软件 之游戏图片格式 xbm 和 资源库文件
第二篇:“目标”软件 之游戏图片格式 xbm 和 资源库文件 之二
全代码:
声明: 本文的程序经过调试,成功运行。
我不会对本程序所带来的一切后果负责。
感谢目标公司的美工(图片太美了)
本文没有任何商业行为,纯属自娱自乐
有人问我,为什么老是研究图片格式。
我说:
1。我没有美工,我只有自己,我不会画画。但是,我要精美的图片。
2。我没有人询问,想知道成功游戏中的图片粘贴方法,地图的建立方法。。。所有游戏中不公开的方法,只有研究游戏运行时的内存。
3。我自己写的引擎,太长,我也没办法抄到这里。只有发一点哗众取宠的贴子,来吸引你们的眼球。
4。我还没想到,想到了,一定说。(好苦啊)
文件一:
文件名: xbmdefine.h
内容简介:头文件,定义结构,声明函数。
文件内容:
/////
#ifndef _xbm_h_
#define _xbm_h_
//破解目标公司的xbm图片格式
//原理:内存破解,使用‘火眼金睛’
//图片头格式: xbmfileheader
// flags
// width
// height
// 0x10100100
// 0xf81f(mask)
//... ...
//接下来是每一行的偏移
// 每个偏移使用一个integer表示
// 偏移的数据就是根据 行偏移地址的首地址开始。
// 也就是相对于xbm头结构之后开始
//接下来是图片的具体内容
// 如果开始的一个短整数是
// 0: 表示之后的一个数是一串 非透明色 点的物理空间尺寸(使用字节计数)
// 非0:表示这个数就是 一串 透明色 点的物理空间尺寸
//
typedef struct tagXBMFILEHEADER
{
char flags[16];
int normal0;
int width;
int height;
int normal1; //0x10100100
int mask; //0xf81f
}XBMFILEHEADER,*LPXBMFILEHEADER;
//将xbm图片转换后保存为通用的*.bmp格式的图片文件
int savexbm(char *fname);
//将xbm图片转换为16位的(bmp)图片
int xbm216bmp(LPXBMFILEHEADER lpxbm,
char *xbmdata,char *bmp16);
//将16位的(bmp)图片转换为24位的(bmp)图片
int bmp16to24(LPXBMFILEHEADER lpxbm,
char *bmp16,char *bmp24);
//将24位的(bmp)图片保存为通用的*.bmp格式的图片文件
int save24bmp(LPXBMFILEHEADER lpxbm,
const char *fname,char *bmp24);
//破解目标 打包文件 *.lib
//总之太简单
//结构如下:
// 标记 Lib 1.01
// 子文件数量 xxx
// 这个东西共256字节(一堆子“0”!!!目标就是这样?!)
// 子文件的数据偏移(相对于文件头) : 子文件的数据长度(相对于自己的头 (; )
// ... ...
// 子文件数据(奇怪的就在这里,竟然没有压缩!太好了?太不可思议了?)
// 我们要得只是xbm图片文件
// 子文件信息
//
typedef struct tagSubFileInfo
{
int address;
int length;
}SubFileInfo,*LPSUbFileInfo;
//解析目标的 lib 文件,将其中的 xbm 文件提取并且存储为bmp图片文件
int JieLib(const char *fname,const char *objectpath,
const char *objectname);
//将xbm图片转换后保存为通用的bmp 格式的图片文件
int savelibxbm(const char *fname,char *xbmdata,
char *bmp16,char *bmp24);
#endif//_xbm_h_
好了,罗嗦到这里了.
有空再续.
作者 : 叶风 (WindLucid)
qq : 239302992
email: windlucid@126.com
|
|