《热血传奇》wix、wil文件解析Java实现

解析的教程在网络上一抓一大把,我都分不清那个是原创了。不过有一点肯定的是,目前都没有Java版本,恩恩:),处于好奇,我稍稍用Java写了一个以供消遣。

 

写的过程中发现,其实教程有部分是错误的。而且很多地方也描述的不够详细,让我在实现的过程中走了不少弯路。还好有TC256编程的功底HOHO。

 

Wix文件格式说明

传奇的wix文件是索引文件,里面指出了图片素材的起始位置。

byte[44]是固定的头文件,网络上的教程都一律写成40个字节,实际上应该是44个。

byte[4]图片数量,低位在前,我在CommonUtil.bytesToInt的方法中实现了低位高位的转换,并且转成Java的整数输出

byte[?][4]这是一个二维数组,里面存储了每张图片在对应的wil文件中的起始位置。

remeber:起始位置是在wix中定义的,别妄想直接在wil文件中按照顺序弄出来,会吃闭门羹的。

 

Wil文件格式说明

byte[44]固定头文件

byte[12]应该是控制Frame播放的速度、是否重复之类的信息的,和我们无关

byte[1024]BMP中最重要的调色板实际上应该是byte[256][4]

-------以上是Wil文件头的固定格式,从下边开始则是每张位图的数据,位图的开始是在Wix中定义的---------

byte[2]宽度

byte[2]高度

byte[4]位图数据起始标志

byte[?]位图数据,大小为width * height

 

原图是8BIT的位图数据。为了减轻在Android上的开发负担,我擅自决定:解析时将其作为为背景透明的PNG图片文件格式,不喜者可以注释掉相关代码。

 

				// ---------- 增加下面的代码使得背景透明 -----------------
				image = g2d.getDeviceConfiguration().createCompatibleImage(
						width, height, Transparency.TRANSLUCENT);
				g2d.dispose();
				g2d = image.createGraphics();
				// ---------- 背景透明代码结束 -----------------
 

 

主要的格式说明就这些,具体的请看代码。代码在附件中,与此同时,我还提供了《热血传奇》的wix和wil文件。

 

太困了,睡觉....

展开阅读全文

没有更多推荐了,返回首页