Skip to content

PlayStation · File Formats

Miniguide on Virtual File Systems

By Klarth

About this project

A mini-guide to playstation (and playstation 2) virtual file systems. A generalized overview of VFS: what they look like and how to extract the files within.

Original game requirements

See the release instructions.

Creator credits

Klarth
Listed creator

RELEASE 1.0

Readme & instructions

[410]Miniguide on Virtual File Systems.txt

Miniguide on Virtual Filesystems By Klarth From a post on RHDN's forums December 12, 2006 http://www.romhacking.net/forum/index.php/topic,2494.0.html Before going onto the explanation of it, any data hacker can identify the data and pointers associated with a VFS. But to dump and rebuild it, you -WILL- need a beginner's knowledge of programming to make custom utilities. If you know to do file i/o with binary files, then that alone is enough to write a VFS extractor/rebuilder in most cases.

Read moreRead less
/============================================================\
|Miniguide on Virtual Filesystems                             |
|By Klarth                                                    |
|From a post on RHDN's forums                                 |
|December 12, 2006                                            |
| http://www.romhacking.net/forum/index.php/topic,2494.0.html |
\=============================================================/

Before going onto the explanation of it, any data hacker can
identify the data and pointers associated with a VFS.  But to
dump and rebuild it, you -WILL- need a beginner's knowledge of
programming to make custom utilities.  If you know to do file
i/o with binary files, then that alone is enough to write a VFS
extractor/rebuilder in most cases.

Here is some general information on the Virtual Filesystem and
why it is so important to extract and rebuild it as one of the
-VERY FIRST STEPS- in the project.

A Virtual Filesystem is basically a lot of data files in one
file on a CD/DVD that contains all of the data that you want to
hack.  They can be as small as ~50MB up to ToD2's 1.41GB and
even larger. When extracted, you can have hundreds to thousands
of subfiles (or worse, archives with subfiles) to work with.
This is key in keeping hacked files organized, teamwork running
smoothly, and the subfiles are much more manageable in size.
Furthermore, it's absolutely necessary to dissect for projects
with compression, encryption, or where you just need to expand
one file that last elusive byte.

So now you know what it is, how can you identify, crack this
thing, ooze its goodies out, and then rebuild it?

- Identifying the VFS -
   This is the easy part.  Just search the game disk for a
   large file.  The filename is usually suggestive of whether
   it's the main game data VFS or (another possibility) a game
   movie VFS.  If there are more than two VFS's in a game, then
   usually they can be cracked by the same method if you can
   finish the next, more difficult step.

- Finding the VFS Pointers -
   Just as a dialogue string has its pointer for the game to
   locate it, a VFS file has its pointer.

      Prime Locations:
       - In a separate file of pointers on the CD, usually in
         the same directory as the VFS file is in.  It should
         be a small file (< 100kb even for a massive file
         count) and usually have no other data with it.
       - In the VFS file itself.  Usually at the top.
       - In the EXE file.  These ones stump me more often than
         not. Maybe a good debugger would have prevented it or
         a pointer table finder.  They're either in a
         structured table or the compiler oddly put them into
         hardcoded ASM pointers.

- VFS Pointer Data Structure -
   There are the primary things you'll be looking for when you
   do notice a VFS pointer table.
   
     - File start pointer: This is usually a linear pointer
       from the start of the VFS.  I've always seen them as
       being 4 bytes.  May be different on PS2 because the
       processor is 64bit.
     - File size: This doesn't always appear, but it makes your
       work easier.  This usually gives the exact filesize,
       rather than the filesize after it's padded to fill the
       last sector.  (More info below in VFS Pointer Types)
     - File name: This is a godsend if the game actually has
       these.  But unfortunately, a lot don't.
     - There may be more fields, but the above are the most
       common by far.

- VFS Pointer Types -

  - Byte positioned -
     This type is easy.  It directly points to the offset where
     the file starts at.  It will be a multiple of 2048 bytes.
  - Sector positioned -
     Still easy.  Each CD data sector is 2048 (0x800) bytes and
     the files are padded to that length for more efficient
     reading.  So you multiply the sector position by 2048 to
     get the file position.  These are usually 4 or 2 bytes
     each.
  - Byte positioned with file size data -
     This type is a tricky find.  Some VFS Pointer Structures
     will put the size value (either how many bytes into the
     last sector the data is, or how many padding bytes are)
     into the byte positioned pointer itself, the last 11 bits
     that are usually 0's to sector-align the file.  It will
     read the pointer, use & 0xFFFFF800 to chop the bottom bits
     off, then use & 0x7FF to get the size of the last sector
     the file takes up.  This type effectively saves almost
     half the size (just one entry less than half in ToP PSX)
     than a structure with a 32 bit pointer and a 32 bit size.

I hope this answers a lot of questions about the VFS's in general.

Download [410]Miniguide on Virtual File Systems.txt ↓

FROM THE COMMUNITY

Player reviews

0 reviews
No ratings yet

Played this project? Tell other players how it holds up.

Your take on Miniguide on Virtual File Systems

Spam has been overwhelming. To help us approve your review, sign up and introduce yourself in the Introductions forum so we know you’re not a bot.

Sign in with your Retro Replay account to rate this project and share your experience.

Sign in to review