Project Database (PDB)

From PS3 Developer wiki
Revision as of 01:51, 27 October 2014 by Mysis (talk | contribs) (→‎Entry IDs)
Jump to navigation Jump to search

PDB (Project Database) files are used by the PS3 to specify tasks for the XMB to do. They are stored in /dev_hdd0/vsh/task/ in 4 byte hex directories (e.g. 00000001/, 001ABCD0/)

Each directory represents an task id and each task is defined by a couple of .pdb files. I believe pdb means package database, since the only place where these files appear is in /dev_hdd0/vsh/task and they seem to represent a .pkg download.

There will always be a 00000001/ directory with no .pkg file in it. I suppose it's there to represent another task the PS3 has to do (maybe the 'check for push downloads' for PSN+ users?), and I suggest never to mess with it.

Every other directory seems to represent a .pkg file that is being downloaded or has been downloaded (but not installed) through PSN. In each directory you should find the .pkg, a PNG image to show (filename ICON_FILE), and two or three .pdb files (d0.pdb and d1.pdb and an empty f0.pdb, which may or may not be there).

When there are unfinished/not installed (PS3 files, not for PSP or PSVITA) downloaded task, xmb/users/Turn Off System can appear the option to turn off the system automatically after background download.

Header

The file starts with a 4 byte magic of 0x00000000

Data Entries

Offset Length Type Information
0x0 0x4 unsigned int Entry ID
0x4 0x4 unsigned int Length
0x8 0x4 unsigned int Length (again?)
0xC Length bytes Data

Entry IDs

File Entry ID Filename
0x64
0x65
0x66
0x68
0x69 Package Name
0x6A Icon Path
0x6B Filetype?(patch)
0x6C
0xC8 Authentication UserName
0xC9 Authentication Password
0xCA Server URL
0xCB Package Filename
0xCC Package Creation Date/Last-Modified
0xCD
0xCE Package File Size
0xCF
0xD0 Downloaded Size
0xD1 Referer?
0xD2
0xD3
0xD5 (Video) PlayCount
0xD6 (Video) StopPointInfo
0xD7 (Video) StopPointInfoSuppl
0xD8 File Download In Progress
0xD9 Content ID
0xDA Download Completed / Video:Video.reserved30
0xDB
0xDC
0xDD
0xDE (String)
0xDF
0xE0 (String)
0xE1 (String)
0xE2 (String)
0xE3 (String)
0xE4
0xE5
0xE6
0xE7 Title ID
0xEA Video:Common.reserved24
0xEB Log URL
0xEC
0xED
0xEE
0xEF Video:Video.reserved29
0xF0
0xF1
0xF2
0xF3 preordered
0xF4
0xF5 (drmcontent)

Here are some entries that have been observed (in the order seen on file). I will first document the task 1, then pkg tasks :


ID Length Type Known values Meaning
0x64 4 int 2 ?
0x65 4 int 1(d0.pdb) 2 (d1.pdb) ? (part maybe?)
0x66 1 byte 0 ?
0x6B 4 int -1 ?
0x68 4 int 0x80023e13 ?
0x6C 4 int 3

Note that it doesn't look like the 00000001/ task pdb values change depending on the number of tasks available.

Here are the values seen in a game task :

Type Length Known values Meaning
0x00000064 4 0
0x00000065 4 0
0x00000066 1 0
0x0000006B 4 3
0x00000068 4 0x80023e13 or 0x80023e1A or 0
0x0000006C 4 0

The values are different from the 00000001/ task, but they seem consistent for all .pkg tasks. The value of 0x00000068 is the only one that changes, and it's either 0 in one file or in the other (d0.pdb vs. d1.pdb), never both, and always one.

Also, Here are the values that only appeared in the pkg tasks, they come right after the above KLLVs. Note that all variable lengths mean it's a string and that it includes a trailing 0x00 in the string :


Type Length Known values Meaning
0x000000D0 8 64bit value current file size or total file size of .pkg in Big Endian
0x000000CE 8 64bit value current file size or total file size of .pkg in Big Endian

(same value as D0 for a fully downloaded title, need partial downloads to determine which key represents what)

0x000000CC variable "Thu, 02 Sep 2010 02:05:50 GMT" (qore) Date of when the .pkg was created (apparently since it's almost 1 week before it appeared on PSN)
0x0000006A variable "/dev_hdd0/vsh/task/00000002/ICON_FILE" (qore) Path to PNG image for thumbnail on the XMB
0x00000069 variable "Qore® Episode 28: September 2010" (qore) File title to show on the XMB
0x000000CA variable "http://zeus.dl.playstation.net/...." (qore) Download URL of .pkg
0x000000CB variable "TSk2vwaT....UP7hmNPRk.pkg" (qore) Filename of .pkg
0x000000D9 variable "UP9000-NPUA80191_00-QOREISSUE0282010" (qore) Content id of .pkg
0x000000DA 1 1 Paused ? Completed ? Currently active ? other ?
0x000000CD 1 0 Paused ? Completed ? Currently active ? other ?
0x000000EB variable "http://nsx-e.np.dl.playstation.net/nsx/log?&sid=...&filetype=drmcontent&fileid=UP90..&sizemb=1692.3" (qore) URL for logging game installs?
0x000000EC 1 0 Paused ? Completed ? Currently active ? other ?

This is all the information we have so far.. unfortunately, since Sony decided to block access to PSN, we can't test more downloading, so it's hard to get new .pdb files, and so it's hard to extrapolate more.

Tools

PS3Utils - by KaKaRoTo (link not working)
PS3Utils pdb_gen.c - old fork from KaKaRoTo (Deroad)

Files

Heavy Rain Episode 1: d0 d1 ICON_FILE