Xbox DVD Filesystem Details


by Andrew de Quincey , 5 May 2002

XDVDFS v0.2

Andrew de Quincey (adq@tardis.ed.ac.uk)

 

This document describes the filing system present on XBOX game DVD disks.

 

On a CD or DVD disk, sectors are 2048 bytes long.

 

Xbox media also appear to have regular 8MB spaces reserved for “security placeholders”. It is hypothesised that these are where Microsoft will place digital signatures for each data area on the disk, thus guaranteeing security from corruption or tampering.

 

It appears that the TOC of game DVDs has also been modified so that disks appear to contain much less data than they actually do (preventing casual copying of game data). It is assumed modified firmware in the Xbox DVD drive deals with this.

 

The disk image size should be rounded up to the nearest 0x10000 bytes, and padded with 0x00.

 

VOLUME DESCRIPTOR

This is present at sector 32 of an XBOX medium.

 

(Offsets are from start of sector)

Offset

Size

Description

0x000

0x14

“MICROSOFT*XBOX*MEDIA”

0x014

4

Sector that root directory table resides in

0x018

4

Size of root directory table in bytes

0x01c

8

FILETIME structure representing image creation time (as in FAT-style date/ FAT-style time).

0x024

0x7c8

Unused (?) (set to 0)

0x7ec

0x14

“MICROSOFT*XBOX*MEDIA”


DIRECTORY TABLE

This consists of multiple DIRECTORY ENTRIES.

 

Any empty space is filled with 0xff.

 

The table may span multiple contiguous sectors.

 

 

DIRECTORY ENTRY

Directory entries within a singledirectory are stored as a binary tree data structure, to decrease search time. Each entry has a left and a right pointer, pointing to the left and right sub-trees descendant from the current entry. Entries alphabetically less than the current entry should be stored in the left sub-tree, while entries alphabetically greater should be stored in the right sub-tree.

 

The root of this tree for any particular directory is the directory entry situated at offset 0 of the first sector of the directory table.

 

(Offsets from start of directory entry)

Offset

Size

Description

0x0000

2

Offset to left sub-tree entry in DWORDs. If this is set to 0, there are no entries in this sub-tree.

0x0002

2

Offset to right sub-tree entry in DWORDs. If this is set to 0, there are no entries in this sub-tree.

0x0004

4

Starting sector of file. Each file may consist of multiple contiguous sectors.

0x0008

4

Total file size.

0x000C

1

File attributes (mostly standard FAT attributes):

  • 0x01:    File is read only
  • 0x02:    File is hidden
  • 0x04:    File is system file
  • 0x10:    File is a directory (associated sector(s) will have an XDVDFS directory table stored in them)
  • 0x20:    File is an archive.
  • 0x80:    Normal (i.e. lacking any other attributes) (?)

 

0x000D

1

Length of filename

0x000E

<filename length>

Filename. Characters are single-byte, probably using standard FAT character map.

 

0x000E + <filename length>

<0-3>

Padding to next DWORD (filled with 0xFF).