Files.db

From Vita Developer wiki
Revision as of 17:09, 18 January 2015 by Tomtomdu80 (talk | contribs) (Created page with "Category:Software<noinclude>Category:Main</noinclude> == files.db structure == '''''Warning : This structure is still uncertain/not complete''''' files.db is organi...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

files.db structure

Warning : This structure is still uncertain/not complete


files.db is organized in blocks of 1024 bytes, the first block is the header of the file, its structure is still unknown and unnecessary for this tool.

Each block contains 4 sub-blocks :

  • Block header
  • Filenames (9 entries)
  • File informations (9 entries)
  • Hashes block?

Block header

0x10 bytes wide, structure is uncertain.

typedef struct {
    u32 id;
    u32 type;
    u32 nfiles;
    u32 unk1;
} bhead;

id :

  • 0xYY : Block identification ? generally 0x02
  • 0xffffffff : ???

type

  • 0x00 : The block will describe files and parent directories.
  • 0x01 : ??? Ignore, changes structure of the current block.

nfiles :

One block describes up to 9 files, although it can be less, nfiles is the number of files described in the current block.

unk1 :

Padding ?

Filenames (9 entries)

9 entries of 72 bytes, describing filename and parent directory.

typedef struct {
    u32 idx;
    char filename[68];
} fname;

idx :

Describes parent directory of current file entry. (Cf. File informations block)

filename :

Filename of current file entry (68 bytes, null terminated).

File informations (9 entries)

9 entries of 0x10 bytes.

typedef struct {
    u32 idx;
    u16 type;
    u16 unk1;
    u32 size;
    u32 unk2;
} finfo;

idx :

Used to retrieve parent directory for filenames block, each file entry has its own index, 0 is for root.

Example :

File/Dir idx (fname) idx (finfo) Path
lol.png 2 3 /images/abcd/lol.png
abcd/ 1 2 /images/abcd/
images/ 0 1 /images/
eboot.bin 0 4 /eboot.bin

type :

  • 0x01 = normal file
  • 0x8000 = directory
  • 0x4006 = unencrypted system file
  • 0x06 = encrypted system file

unk1 :

???

size :

Size of the current file.

unk2 :

Padding ?

Tools

ListDirVita is a simple parser for files.db (Still WIP) [1]