求一种能解压CPK文件的软件

求一种能解压CPK文件的软件,第1张

这个CPK提取器!经测试,它在仙剑3中工作得很好,我估计在外传中使用问题也不大,因为毕竟游戏引擎没有太大的变化。.CPK应该是是软星自己写的文件格式,不过我在网上查找相关资料时意外的发现了一个叫风魂的游戏,我估计软星的程序员一定研究过这个游戏,因为两者的数据存储方式惊人地相同,软星只改变了一些小地方(如文件头部)。两者同样采用MiniLZO快速压缩算法,采用排过序的CRC作为ID以方便使用二分搜索来快速定位文件等等,下面我就来简单介绍一下,其实我对文件的分析很不完全,好多地方我并不清楚,不过这些初步成果已经足够写一个CPK提取器了。CPK文件格式简介文件头0x80字节为CPK的基本信息,其中头4字节为CPK文件标志:0x52 0x53 0x 54 0x1A,从0x80开始是一个类似于硬盘FAT的结构,由若干个 struct构成(我称之为索引,下面会详细讨论)最后才是数据区,CPK中存储的所有的文件都经过MiniLZO压缩。索引结构:Type Index=record CRC :DWORD Attrib :DWORD ParentDir :DWORD Offset :DWORD CompressedSize :DWORD OriginalSize :DWORD InfoRecordSize :DWORD(????)每个Index代表一个文件(目录也是一种文件),占0x1C个字节,从CPK的0x80开始紧密排列。Index结构的总数存储在CPK的0x20处,是一个DWORD下面我来一一做出解释:CRC:据我猜测应该是根据文件名Hash出的一个数值,若干个Index结构在CPK文件中就是按这个数值升序排列的。这样的好处是只要计算出要访问文件的CRC,就可以利用二分查找在对数时间内定位该文件的Index,进而读取数据。Attrib:该文件的属性,我只知道00000003代表目录,其他的都不太清楚,不过这已经足够了。ParentDir:一个CRC值,等于它的父目录的CRC。CPK文件支持子目录,当你定位好一个文件的index后,通过这个指针反复向上层遍历,就可以取得它的完整的存储路径。在根目录下的文件的Index中此值为0。Offset:压缩后的数据在CPK中的偏移量。CompressedSize:压缩后数据的大小。对于目录,这个值为0。OriginalSize:原始文件的大小,方便你解压时开缓冲区。InfoRecordSize:奇怪的参数。对于每一个Index所代表的文件,压缩后的数据在CPK中从index.Offset起开始存储,占用index.CompressedSize的空间,接下来就是一个大小为InfoRecordSize的奇怪记录,我只知道这个记录的一开头就是文件名,以#0结束,其他的都不清楚,有兴趣的可以研究一下。需要注意的是,只要InfoRecordSize为0,或这个Index不是目录,但CompressedSize为0,这个Index就毫无疑义,不需处理。我因为多次运行升级程序(为了调试它来研究CPK格式),文件中已有好多这样的无效Index了。MiniLZO解压:我不想研究这种东西了,让GbEngine.dll自己做去吧。看看他的ExportTable,发现有这么一行:?DeCompress@CPK@@QAEKPAX0K@Z翻译过来就是public: unsigned long __thiscall CPK::DeCompress(void *,void *,unsigned long)实际上是function DeCompress(Dest,Source:pointerSourceSize:integer):integerstdcall这下就大功告成了。2004年8月22日苏州中学 徐汝斌附1:我写的CPK Extracter[b:724257d8c5]( http://xurubin.91i.net/cpk.zip)[/b:724257d8c5]本程序必须放在仙剑3根目录下(即要有ijl15.dll topo.dll gbengine.dll Mss32.dll这些文件)原因如上。[b:724257d8c5]源码 http://xurubin.91i.net/source.zip[/b:724257d8c5]附2:仙剑3音乐标题我是根据音乐选集上的名称再加上网上试听后找出来的,只有24个,那位好心人如有剩下的一定要写出来哦PI01.MP3御剑江湖PI05.MP3凄凉雪PI08.MP3流转虹PI09.MP3月迷纵PI10.MP3紫陌丰田PI11.MP3临江仙PI12.MP3望海潮PI13.mp3降妖谱PI15.MP3洞天福地PI16.MP3紫鸦乌PI17.MP3沧桑叹PI19.MP3铁锁镇妖PI20.MP3魔神诀PI21.MP3步云登仙PI24.MP3仗剑PI25.MP3临危PI26.MP3魔剑斩妖PI27.MP3玉满堂PI28A.MP3还魂草PI30.MP3水柔声PI31.MP3青玉案PI32.MP3玄色风PI33.MP3情牵PI34.MP3轮回

CPK一种动画格式,用土星cpk动画播放器可以打开。

1.CPK游戏动画文件,Cpkplay可以直接播放,但是没注册的版本只能播放一半。

2.如果是土星的cpk文件,确实可以用Winvdt直接播放,但如果是在仙剑奇侠传三或其外传中的cpk文件就要用专门的文件提取器了。

3.可以用Acpk2avi将cpk文件转换成avi文件,不过ACPk2avi是在DOS下运行的软件。

4.http://www.wypal.com/down/win32cpk.rar,下载这个软件就可以打开。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12055115.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存