Neople is a Korean game company, Dungeon Fighter is from his hand. When creating characters for the extraction of DNF comics, special a simple analysis of the use of resources under DNF format. The first part of the solution package. DNF is the use of resource bundles NPK format, "NeoplePack" abbreviation.
Code:
struct NPK_Header {
char flag [16]; // document identifier "NeoplePack_Bill"
int count; // number of files within the package
};
struct NPK_Index {
DWORD offset; // file offset package
DWORD size; // file size
char name [256]; // file name
};
NPK file is from a NPK_Header and N NPK_Index and the composition of the actual data.
Note: NPK point encryption (ImagePacks4 folder) and unencrypted (ImagePacks2 folder) of the two versions need to use the encrypted version
Code:
" puchikon @ NEOPLE Dungeon and Fighter DNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFD
NFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNF
DNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNFDNF "
(a total of 256 bytes, the last byte is '\ 0')
Different file name or part.
The second part of the format after unpacking the files to be basically ".Img" format, but according to the different identification documents, can be divided into "Neople Image File" and "Neople Img File".
"Neople Image File "format"
Code:
struct NImageF_Header {
char flag [24]; // identifies the file "Neople Image File" int unknown1; / / unknown data, what is perhaps the version number?
int index_count; // index number of items can also be understood to include the small number of images.
};
struct NImageF_Index {
DWORD dwType; // currently known types 0x0E (1555 format) 0x0F (4444 format) 0x10 (8888 format) 0x11 (does not contain any data, may be referring to the contents of above a)
DWORD dwCompress; / / the current known types are 0x06 (zlib compression) 0x05 (uncompressed)
int width; // width
int height; // height
int size; // compressed size of the compressed size, uncompressed size is converted to 8888 format memory size
int key_x; // X key, the current picture in the X coordinate of the whole graph
int key_y; // Y key, the current picture in the Y coordinate of the whole graph
int max_width; // the width of the entire map
int max_height; // the height of the entire map, with this data to its wizard
BYTE Data [actual length]; // followed behind in the index is the actual data (the data on the structure just to the index to show the relationship between the index and data.)
};
"Neople Image File" and N by a NImageF_Header NImageF_Index structures.
Note: For type 0x11 the index table contains only the first two items, namely
Code:
struct NImageF_Index_0x11 {
DWORD dwType; // type 0x11
DWORD dwCompress; // preferable to a variety of values, the role of the unknown (which zero is the most common)
};
"" Neople Img File "format"
struct NImgF_Header {
char flag [16]; // identifies the file "Neople Img File"
int index_size; // in bytes, the size of the index table
int unknown1; // Unknown 1
int unknown2; // Unknown 2
int index_count; // the number of index entries
};
struct NImgF_Index {
DWORD dwType; // and "NImageF_Index" is the same, see note turned up.
DWORD dwCompress;
int width;
int height;
int size;
int key_x;
int key_y;
int max_width;
int max_height;
};
Used google translator. Original here (Chinese language).