Files.db: Difference between revisions

From Vita Developer wiki
Jump to navigation Jump to search
No edit summary
 
Line 90: Line 90:
! File/Dir !! idx (fname) !! idx (finfo) !! Path
! File/Dir !! idx (fname) !! idx (finfo) !! Path
|-
|-
| lol.png | 2 | 3 | /images/abcd/lol.png
| lol.png || 2 || 3 || /images/abcd/lol.png
|-
|-
| abcd/ | 1 | 2 | /images/abcd/
| abcd/ || 1 || 2 || /images/abcd/
|-
|-
| images/ | 0 | 1 | /images/
| images/ || 0 || 1 || /images/
|-
|-
| eboot.bin | 0 | 4 | /eboot.bin
| eboot.bin || 0 || 4 || /eboot.bin
|}
|}



Latest revision as of 23:30, 26 April 2018


  • Path: /sce_pfs/files.db
  • Size: variable

files.db structure[edit | edit source]

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.

Each block contains 4 sub-blocks :

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

Note : Numbers are stored in little-endian.

Block header[edit | edit source]

0x10 bytes wide, structure is uncertain.

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

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)[edit | edit source]

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)[edit | edit source]

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 :

  • 0x1 = normal file
  • 0x8000 = dir (directory)
  • 0x4006 = nenc (non encrypted file)
  • 0x6 = sys (system file)

unk1 :

???

size :

Size of the current file.

unk2 :

Padding ?

Tools[edit | edit source]

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