I people,
I'd like to know if someone could help me to find a solution to extract graphic files from Tales of Eternia Online.
Here's an attachment containing 3 different types of files.
bnd, pkd, mpd.
Thx in advance
Important information: this site is currently scheduled to go offline indefinitely by end of the year.
Namco Tales of Eternia Online files...
Namco Tales of Eternia Online files...
You do not have the required permissions to view the files attached to this post.
Here there are the basic file details about PKD files.
They're used to store files (probably, it means PacKeD)...
File header:
(all field are little endian)
(char[4]) magic "PKDF"
(int) reserved?
(int) version?
(int) number of entries
(int) size of the file table - 4 (not sure what it's used for)
(int) size of the header
(int) size of the file table
(int) number of files (number of entries - 1)
Entries:
All entries have 32 bytes
1st entry
(int) Offset (always 60?)
(20 bytes) SHA1 hash of the block
(int) Filesize
(int) Pointer to the unknown zone
All other entries (files)
(int) Offset
(int) Filesize
(20 bytes) SHA1 hash of the file
(int) Pointer to the unknown zone
I'm not sure about what the unknown zone between the file offsets and the content is used for. Maybe encrypted filenames?
They're used to store files (probably, it means PacKeD)...
File header:
(all field are little endian)
(char[4]) magic "PKDF"
(int) reserved?
(int) version?
(int) number of entries
(int) size of the file table - 4 (not sure what it's used for)
(int) size of the header
(int) size of the file table
(int) number of files (number of entries - 1)
Entries:
All entries have 32 bytes
1st entry
(int) Offset (always 60?)
(20 bytes) SHA1 hash of the block
(int) Filesize
(int) Pointer to the unknown zone
All other entries (files)
(int) Offset
(int) Filesize
(20 bytes) SHA1 hash of the file
(int) Pointer to the unknown zone
I'm not sure about what the unknown zone between the file offsets and the content is used for. Maybe encrypted filenames?
Here's an small unpacker (in C). The file names are just obtained from the 4 first characters of every file.
I think that the section after the file names is encrypted, too. If you go to the the part after it, there's something like:
(8 byte) ???
(int) Size of something (probably the filename)
(Filename?)
(int) Size of something
...
In both files, the file name table entries start with the same 4 bytes. This could mean that the filename (if it is the filename) is inverted. I've tried the possible extensions (".clt", ".a??", etc...) but I can't see any relation. Any help?
I think that the section after the file names is encrypted, too. If you go to the the part after it, there's something like:
(8 byte) ???
(int) Size of something (probably the filename)
(Filename?)
(int) Size of something
...
In both files, the file name table entries start with the same 4 bytes. This could mean that the filename (if it is the filename) is inverted. I've tried the possible extensions (".clt", ".a??", etc...) but I can't see any relation. Any help?
You do not have the required permissions to view the files attached to this post.
-
- Moderator
- Posts: 652
- Joined: Wed Oct 18, 2006 9:48 pm
- Location: Germany
- Has thanked: 19 times
- Been thanked: 46 times
- Contact:
I doubt that data is filenames. Just look at those 12 bytes that are always the same.
As well I think it must be like that:
Oddly enough the last entry in that file area is only 16 bytes long (cause file data starts after it) though those entries should be 20 bytes in size regarding the structure and the pointer values.
As well I think it must be like that:
Code: Select all
struct FirstEntry {
uint offset;
byte SHA1[20];
uint filesize;
} firstEntry;
struct Entry {
uint pointerUnknownZone;
uint offset;
uint filesize;
byte SHA1[20];
}entries[numFiles];
You do not have the required permissions to view the files attached to this post.
Last edited by Rheini on Thu Jan 10, 2008 1:48 am, edited 1 time in total.
No problem, here's an attachment with the content of the game exec files folder.
http://www.yvchina.com/files/toeo/toeonline.rar
Do not hesitate to ask for any other files. Some bnd's and other files come in a variety of sizes.
http://www.yvchina.com/files/toeo/toeonline.rar
Do not hesitate to ask for any other files. Some bnd's and other files come in a variety of sizes.
I have no idea about how to convert the BND entries to TGA (they're images, right? I will seem completely retarded if they aren't ).
Here's what I have now
After this, there's some data that seems a palette of 1024 bytes (256 entries * 4 bytes/pixel).
And after this, there should be the image data. But I always get a lot of junk
Also, a thing to extract the contents of the BND file... but it isn't too much useful since we don't know what to do with the files
Here's what I have now
Code: Select all
struct bnd_image_header
{
int unknown1;
int unknown2;
int unknown3;
int size_image_data;
int unknown4;
int entries_palette;
} __attribute__((packed));
And after this, there should be the image data. But I always get a lot of junk
Also, a thing to extract the contents of the BND file... but it isn't too much useful since we don't know what to do with the files
You do not have the required permissions to view the files attached to this post.