首页 > 编程知识 正文

npbk文件,npk文件怎么解压

时间:2023-05-04 03:02:03 阅读:259708 作者:1024

用驴子拖了个<<Drakensang>>, 想把资源弄出来利用一下

这游戏是用N2+N3做的, 文件格式什么的, 还是N2的

到N2的代码里找了下, 果然有读取NPK文件的代码

想想自己全部解压出来太麻烦, 不如做个查看器

但是从头自己做一个性价比不是很高, 再加上我是TC的死忠

那么, 就做个像MPQ那样的插件好了

 

NPK的文件包格式, 看完N2的注释就明白了, 无非就是把文件一个个都拼了起来

数据段就是FourCC+Size+Data的这种Chunk结构, 没有版本号的概念

这样无压缩也无加密, 属于最原始的文件包格式

npk file format: @verbatim # header block HEADER { uint32 'NPK0' // magic number uint32 blockLen // number of following bytes in block uint32 dataOffset // byte offset of data block from beginning of file } # table of contents, sequence of blocks of 3 types: block DIR { uint32 'DIR_' // magic number of directory block uint32 blockLen // number of following bytes in block uint16 dirNameLength // length of the following name char[] dirName // name of directory } block FILE { uint32 'FILE' // magic number of file block uint32 blockLen // number of following bytes in block uint32 fileOffset // start of file data inside data block uint32 fileLength // length of file data in bytes uint16 fileNameLength // length of the following name char[] fileName // name of file } block ENDOFDIR { uint32 'DEND' // magic number of end of dir block uint32 blockLen // number of following bytes in block (0) } # the data block block DATA { uint32 'DATA' // magic number of data block uint32 blockLen // number of following bytes in block char[] data // the data } @endverbatim

整个文件的结构, 是这样组织的:

NPK0DIR_ DIR_ FILEFILE... DENDDIR_ FILEFILE... DEND... DENDDATA

简单得不能再简单了, 要写一个文件读取的话, 连N2的库都不用依赖

又下了一个TC的ISO源码看了下, 原来就是个DLL, 把相应的函数实现一下, 然后扔给TC就可以用

 

=========================================================

更新一个TC插件:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。